Name: series-workflow4vwjt Phase: Succeeded StartedAt: 2026-08-07 17:53:55 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[0] Phase: Succeeded StartedAt: 2026-08-07 17:53:55 +0000 UTC FinishedAt: 2026-08-07 18:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 17:53:55 +0000 UTC FinishedAt: 2026-08-07 18:22:18 +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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "66e7718c-af73-4ded-9ca1-b2e40551a974" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "e100_probe", "e100_diag_test", "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfZGlhZ190ZXN0JiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBlMTAwIG5ldHdvcmsgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIChgYWRkcl9sZW5gKSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIGlmIGBhZGRyX2xlbmAgaXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gIHJlc3VsdHMgaW4gYSB2YWx1ZSBvZiA2NTUzNiBvciBtb3JlIChvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuIFx1MDAzZT0gMzJgKS4gVGhpcyB2YWx1ZSBpcyB0aGVuIHVzZWQgYXMgdGhlIGxvb3AgYm91bmQgdG8gcmVhZCBmcm9tIHRoZSBFRVBST00gYW5kIHdyaXRlIGludG8gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxuXG5PdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3JzIChsaWtlIG92ZXJzaXplZCBzaGlmdHMpIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgVUJTQU4gKFVuZGVmaW5lZCBCZWhhdmlvciBTYW5pdGl6ZXIpLCB3aGljaCBhcmUgYWxyZWFkeSBlbmFibGVkIGluIHN0YW5kYXJkIGZ1enppbmcgYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGZpeCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMWRlNWNkNDFlYTBjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4mIzQzO1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4mIzQzO1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDcgJiM0Mzs3NzAsMTUgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuLVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZT0gMTYpIHtcbiYjNDM7XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0YWRkcl9sZW4pO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMVUgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbiBcdFx0bmljLVx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfZGlhZ190ZXN0JiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw3ICYjNDM7NzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKLQluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiYjNDM7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkmIzM0O0ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywKJiM0MzsJCQlhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwluaWMtJmd0O2VlcHJvbV93YyA9IDFVICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewogCQluaWMtJmd0O2VlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCBhZGRyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGUxMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGUxMDBgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYC4gSXQgc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBib3VuZHMgY2hlY2tpbmcsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4gVGhlIHByaW1hcnkgY29uY2VybiBpcyBwcm90ZWN0aW5nIGFnYWluc3QgaW52YWxpZCBgYWRkcl9sZW5gIHZhbHVlcyB3aXRoaW4gdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGZ1bmN0aW9ucy4KCkkgY2FuIHNlZSB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLiBUaGUgZmlyc3Qgc25pcHBldCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIGBlMTAwX2VlcHJvbV9yZWFkYCB3aGVyZSBpdCBjYWxjdWxhdGVzIGEgbGVuZ3RoIChgbGVuYCkgYW5kIGNsYW1wcyB0aGUgYCphZGRyX2xlbmAgdG8gemVybyBpZiBgbGVuYCBleGNlZWRzIGl0cyB2YWx1ZSwgb3RoZXJ3aXNlIHN1YnRyYWN0aW5nIGBsZW5gLiBUaGlzIGlzIGEgY2xhc3NpYyBib3VuZHMgcHJvdGVjdGlvbiwgZW5zdXJpbmcgYSB3cml0ZSBkb2VzbiYjMzk7dCBleGNlZWQgYWxsb2NhdGVkIHNwYWNlLiBUaGUgc2Vjb25kIHNuaXBwZXQgd2l0aGluIGBlMTAwX2VlcHJvbV9sb2FkYCBpbmNsdWRlcyBhIG1vcmUgcmlnaWQgY2hlY2suIElmIGBhZGRyX2xlbmAgaXMgemVybyBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTYsIGl0IGZsYWdzIGFuIGVycm9yIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbm90aGVyIHNhZmVndWFyZCBhZ2FpbnN0IG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWxldmFudCogaW4gbW9kZXJuIGVudmlyb25tZW50cz8gVGhlIGBlMTAwYCBkcml2ZXIgaXMgZm9yIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBHaXZlbiB0aGF0IHRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIEludGVsIFBSTy8xMDAgc2VyaWVzLCBJIHdvbmRlciBpZiB0aGlzIGRyaXZlciBpcyBzdGlsbCByZWFjaGFibGUgaW4gbW9kZXJuIHN5c3RlbXMuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgbGVnYWN5IGRyaXZlci4KCkEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGk4MjU1eCAoUFJPLzEwMCkgZmFtaWx5LCBzcGVjaWZpY2FsbHkgdGhlIGBpODI1NTllcmAgYW5kIGBpODI1NTdiYCAoYW5kIGk4MjU1OWMpLCB2aWEgYGh3L25ldC9lZXBybzEwMC5jYC4gVGhlcmVmb3JlLCB0aGUgYGUxMDBgIGRyaXZlciAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBtYWtlcyB0aGUgcGF0Y2gmIzM5O3MgZXhpc3RlbmNlIG1ha2Ugc2Vuc2U7IGlmIGl0JiMzOTtzIGJlaW5nIGVtdWxhdGVkLCBhbnkgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFyZSBzdGlsbCByZWxldmFudC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgZTEwMGA6IEkmIzM5O2xsIGZpbmQgaXQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBZZXMsIGBjb25maWcgRTEwMGAgZXhpc3RzIGFuZCBkZXBlbmRzIG9uIGBQQ0lgLCBhcyBleHBlY3RlZC4gU28gaXQmIzM5O3MgY29uZmlndXJhYmxlLgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gY2FsbHMuIFRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYC4gYGUxMDBfZWVwcm9tX2xvYWRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBpdCBmaW5kcyB0aGUgRUVQUk9NLiBgZTEwMF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGJ5IGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgcG9zc2libHkgYnkgZXRodG9vbCBvcGVyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCB1c2FnZSB3aXRoaW4gYGUxMDAuY2AgdG8gY29uZmlybSB0aGUgY29kZSBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlMTAwX2VlcHJvbV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03MjE9c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2Ni0vKiBMb2FkIGVudGlyZSBFRVBST00gaW1hZ2UgaW50byBkcml2ZXIgY2FjaGUgYW5kIHZhbGlkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzY3OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjYyMD1zdGF0aWMgdm9pZCBlMTAwX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjI4LVx0ZGF0YVswXSA9ICFtaWlfbGlua19vayhcdTAwMjZuaWMtXHUwMDNlbWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNjI5Olx0ZGF0YVsxXSA9IGUxMDBfZWVwcm9tX2xvYWQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjMwLVx0aWYgKHRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IEVUSF9URVNUX0ZMX09GRkxJTkUpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjg0Mz1zdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI5MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjkzNDpcdGlmICgoZXJyID0gZTEwMF9lZXByb21fbG9hZChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yOTM1LVx0XHRnb3RvIGVycl9vdXRfZnJlZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZTEwMCBEcml2ZXImIzM5O3MgRUVQUk9NIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGUxMDBgIGRyaXZlciBjb2RlLiBJIHNlZSB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGNhbGxlZCBkdXJpbmcgYm90aCB0aGUgaW5pdGlhbCBQQ0kgcHJvYmluZyBwaGFzZSDigJMgdGhyb3VnaCBgZTEwMF9wcm9iZWAg4oCTIGFuZCBhbHNvIGR1cmluZyBkaWFnbm9zdGljIHRlc3RpbmcgdXNpbmcgYGUxMDBfZGlhZ190ZXN0YC4gYGUxMDBfcHJvYmVgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXRlY3RpbmcgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIE5hdHVyYWxseSwgbG9hZGluZyB0aGUgRUVQUk9NIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcCB0aGVyZS4KCk5vdywgYGUxMDBfZWVwcm9tX2xvYWRgIGl0c2VsZiByZWxpZXMgb24gYGUxMDBfZWVwcm9tX3JlYWRgLiBBbmQgaXQgbG9va3MgbGlrZSBgZTEwMF9nZXRfZWVwcm9tYCBhbHNvIHVzZXMgYGUxMDBfZWVwcm9tX3JlYWRgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNhbGwgc2l0ZXMgb2YgYGUxMDBfZWVwcm9tX3JlYWRgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIEVFUFJPTSByZWFkIG9wZXJhdGlvbnMgaW4gdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hvJiMzOTtzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uLi4uIHRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzcyOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0Olx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXHRcdGlmIChhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9ODAxPXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFMTAwIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFyZSBzdGF0aWMgZnVuY3Rpb25zIOKAkyBpbnRlcm5hbCB0byB0aGUgZHJpdmVyLCBsaWtlbHkgZm9yIGhhbmRsaW5nIEVFUFJPTSBkYXRhLiBgZTEwMF9wcm9iZWAsIHRoYXQmIzM5O3Mgb3VyIFBDSSBwcm9iZSBmdW5jdGlvbiwgdGhlIGVudHJ5IHBvaW50IHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCwgc28gdGhhdCYjMzk7cyBjcnVjaWFsLiBgZTEwMF9kaWFnX3Rlc3RgIGlzIHRoZSBldGh0b29sIHNlbGYtdGVzdCBmdW5jdGlvbjsgdXNlZnVsIGZvciBkaWFnbm9zdGljcywgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBpcyB0aWVkIHRvIGBlMTAwX3NldF9lZXByb21gLgoKR2l2ZW4gdGhhdCBgZTEwMF9wcm9iZWAgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIgYW5kIHdoZXJlIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYmVnaW5zLiBTbywgYGUxMDBfcHJvYmVgIGFuZCBgZTEwMF9kaWFnX3Rlc3RgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiByaWdodCBub3cuIFdhaXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBldGh0b29sIG9wZXJhdGlvbnMsIHNvIGxldCBtZSBxdWlja2x5IGdvIG92ZXIgYGUxMDBfZ2V0X2VlcHJvbWAgYW5kIGBlMTAwX3NldF9lZXByb21gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfZ2V0X2VlcHJvbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjUzMj1zdGF0aWMgdTMyIGUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTM4OnN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ0LSNkZWZpbmUgRTEwMF9FRVBST01fTUFHSUNcdDB4MTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDU6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ2LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NTgtXHQuZ2V0X2xpbmtcdFx0PSBlMTAwX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NTk6XHQuZ2V0X2VlcHJvbV9sZW5cdFx0PSBlMTAwX2dldF9lZXByb21fbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NjA6XHQuZ2V0X2VlcHJvbVx0XHQ9IGUxMDBfZ2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYxLVx0LnNldF9lZXByb21cdFx0PSBlMTAwX3NldF9lZXByb20sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgS2V5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9uczogYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBgZTEwMF9nZXRfZWVwcm9tYCwgYW5kIGBlMTAwX3NldF9lZXByb21gLiBGaXJzdCwgYGUxMDBfcHJvYmVgIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgdXN1YWxseSBzeXprYWxsZXIgd291bGQgaGl0IHRoZXNlIHdpdGggc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfcHJvYmVgLCBidXQgdGhlcmUgaXNuJiMzOTt0IGEgZGVkaWNhdGVkIG9uZSBmb3IgZTEwMC4gSG1tLCBidXQgc2luY2UgUUVNVSBlbXVsYXRlcyBlMTAwLCBgZTEwMF9wcm9iZWAgKnNob3VsZCogYmUgcmVhY2hhYmxlIG9uIGJvb3QgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50LCBvciB2aWEgUENJIGhvdHBsdWcuIFllcCwgZGVmaW5pdGVseSByZWFjaGFibGUuCgpOb3csIHdoYXQgYWJvdXQgYGUxMDBfZGlhZ190ZXN0YD8gQ2FuIEkgcmVhY2ggdGhhdD8gRXRodG9vbCEgVGhhdCYjMzk7cyBob3cuIFNhbWUgZ29lcyBmb3IgYGUxMDBfZ2V0X2VlcHJvbWAsIGV0aHRvb2wgd2lsbCBkbyB0aGUgdHJpY2suIEFuZCBgZTEwMF9zZXRfZWVwcm9tYD8gWWVwLCBldGh0b29sIGlzIHRoZSBrZXkgdGhlcmUgdG9vLgoKT2theSwgbmV4dCBJJiMzOTtsbCBjaGVjayBpZiBgZTEwMF9zZXRfZWVwcm9tYCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0NT1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTY6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTU3LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjAtXHQuZ2V0X2VlcHJvbVx0XHQ9IGUxMDBfZ2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzYxOlx0LnNldF9lZXByb21cdFx0PSBlMTAwX3NldF9lZXByb20sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc2Mi1cdC5nZXRfcmluZ3BhcmFtXHRcdD0gZTEwMF9nZXRfcmluZ3BhcmFtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDM3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgZTEwMF9zZXRfZWVwcm9tYCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBwdWxsIHVwIHRoZSBjb2RlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSB3cml0ZSBjeWNsZXMgYW5kIGVycm9yIGNoZWNraW5nLiBJIHZhZ3VlbHkgcmVtZW1iZXIgcG90ZW50aWFsIGlzc3VlcyB3aXRoIEVFUFJPTSB3cml0ZXMgYmVpbmcgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgdm9sdGFnZSBmbHVjdHVhdGlvbnMsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNhZmVndWFyZHMgYWdhaW5zdCB0aG9zZSBwcm9ibGVtcy4KCkxldCYjMzk7cyBzZWXigKYgcmlnaHQsIHRoZSB0eXBpY2FsIHNlcXVlbmNlIHByb2JhYmx5IGludm9sdmVzIGVuYWJsaW5nIHRoZSBFRVBST00gaW50ZXJmYWNlLCBhZGRyZXNzaW5nIHRoZSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24sIHNlbmRpbmcgdGhlIGRhdGEsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoZSB3cml0ZSB0byBjb21wbGV0ZSwgcG9zc2libHkgd2l0aCBzb21lIGZvcm0gb2YgYnVzeS13YWl0IG9yIGludGVycnVwdC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhleSYjMzk7cmUgZm9sbG93aW5nIGJlc3QgcHJhY3RpY2VzIGhlcmUuIFRoaW5ncyBsaWtlIGF0b21pY2l0eSwgd3JpdGUgcHJvdGVjdGlvbiBkdXJpbmcgdGhlIHByb2Nlc3MsIGFuZCBtYWtpbmcgc3VyZSB0aGUgd3JpdGUgZG9lc24mIzM5O3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBhcmUgdG9wIG9mIG1pbmQuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBiaXQgdHdpZGRsaW5nIG9yIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbiBpbnZvbHZlZC4gVGhvc2UgYXJlIHVzdWFsbHkgd2hlcmUgdGhlIHN1YnRsZSBidWdzIGhpZGUuIEFsc28sIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGNvbnRleHRzLiBJZiBpdCYjMzk7cyBub3QgcHJvcGVybHkgcHJvdGVjdGVkIHdpdGggbXV0ZXhlcyBvciBzcGlubG9ja3MsIGl0IGNvdWxkIGJlIGEgdGlja2luZyB0aW1lIGJvbWIuCgpGaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcuIElzIHRoZXJlIHByb3BlciB2ZXJpZmljYXRpb24gYWZ0ZXIgdGhlIHdyaXRlIHRvIGNvbmZpcm0gdGhlIGRhdGEgaW50ZWdyaXR5PyBBcmUgdGhlcmUgcmV0cmllcyB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgaWYgdGhlIHdyaXRlIGZhaWxzIGluaXRpYWxseT8gQW5kIGFyZSBhbnkgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMsIGxpa2UgYSByZWFkLW9ubHkgbWVtb3J5LCBhY2NvdW50ZWQgZm9yPyBUaW1lIHRvIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgcm9idXN0LCBhbmQgaWYgaXQmIzM5O3Mgbm90LCB3aGVyZSBhbmQgaG93IEkgY2FuIGhlbHAgaW1wcm92ZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1NTY6XHRzdGF0aWMgaW50IGUxMDBfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuMjU1NzpcdFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbjI1NTg6XHR7XG4yNTU5Olx0XHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMjU2MDpcdFxuMjU2MTpcdFx0aWYgKGVlcHJvbS1cdTAwM2VtYWdpYyAhPSBFMTAwX0VFUFJPTV9NQUdJQylcbjI1NjI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNTYzOlx0XG4yNTY0Olx0XHRtZW1jcHkoXHUwMDI2KCh1OCAqKW5pYy1cdTAwM2VlZXByb20pW2VlcHJvbS1cdTAwM2VvZmZzZXRdLCBieXRlcywgZWVwcm9tLVx1MDAzZWxlbik7XG4yNTY1Olx0XG4yNTY2Olx0XHRyZXR1cm4gZTEwMF9lZXByb21fc2F2ZShuaWMsIGVlcHJvbS1cdTAwM2VvZmZzZXQgXHUwMDNlXHUwMDNlIDEsXG4yNTY3Olx0XHRcdChlZXByb20tXHUwMDNlbGVuIFx1MDAzZVx1MDAzZSAxKSAmIzQzOyAxKTtcbjI1Njg6XHR9XG4yNTY5Olx0XG4yNTcwOlx0c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4yNTcxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcbjI1NzI6XHRcdFx0XHQgICAgICAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3JpbmdwYXJhbSAqa2VybmVsX3JpbmcsXG4yNTczOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbjI1NzQ6XHR7XG4yNTc1Olx0XHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgZTEwMCBFRVBST00gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBlMTAwX3NldF9lZXByb21gIGlzIGRlZmluaXRlbHkgY2FsbGluZyBgZTEwMF9lZXByb21fc2F2ZWAuIFRoYXQgbWFrZXMgc2Vuc2UuIEFuZCwgb2YgY291cnNlLCBgZTEwMF9lZXByb21fc2F2ZWAgc3Vic2VxdWVudGx5IHVzZXMgdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBmdW5jdGlvbi4gUmlnaHQsIHNvIGZhciwgc28gZ29vZCwgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGF0YSBmbG93LgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb24uIExldCYjMzk7cyBkaWcgaW50byBpdHMgaW1wbGVtZW50YXRpb24uIEl0IHdpbGwgYmUgdXNlZnVsIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVyZmFjaW5nIHdpdGggdGhlIHJlYWQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDE6XHRzdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcbiA4MDI6XHR7XG4gODAzOlx0XHR1MTYgYWRkciwgYWRkcl9sZW4gPSA4LCBjaGVja3N1bSA9IDA7XG4gODA0Olx0XG4gODA1Olx0XHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIDgwNjpcdFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbiA4MDc6XHRcdG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiA4MDg6XHRcbiA4MDk6XHRcdGlmIChzdGFydCAmIzQzOyBjb3VudCBcdTAwM2U9IG5pYy1cdTAwM2VlZXByb21fd2MpXG4gODEwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDgxMTpcdFxuIDgxMjpcdFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjIHN0YXJ0ICYjNDM7IGNvdW50OyBhZGRyJiM0MzsmIzQzOylcbiA4MTM6XHRcdFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgYWRkciwgbmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG4gODE0Olx0XG4gODE1Olx0XHQvKiBUaGUgY2hlY2tzdW0sIHN0b3JlZCBpbiB0aGUgbGFzdCB3b3JkLCBpcyBjYWxjdWxhdGVkIHN1Y2ggdGhhdFxuIDgxNjpcdFx0ICogdGhlIHN1bSBvZiB3b3JkcyBzaG91bGQgYmUgMHhCQUJBICovXG4gODE3Olx0XHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMTsgYWRkciYjNDM7JiM0MzspXG4gODE4Olx0XHRcdGNoZWNrc3VtICYjNDM7PSBsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbiA4MTk6XHRcdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuIDgyMDpcdFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgbmljLVx1MDAzZWVlcHJvbV93YyAtIDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCBFMTAwIEVFUFJPTSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgRTEwMCBFRVBST00gY29kZSwgYW5kIEkmIzM5O3ZlIGhpdCBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbiwgdW5saWtlIGBlMTAwX2VlcHJvbV9sb2FkYCwgc2VlbXMgdG8gYmUgbWlzc2luZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIG9uIGBhZGRyX2xlbmAuIEl0IGRvZXMgdGhpczogYG5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjtgLiBOb3csIGBhZGRyX2xlbmAgaXMgYSBgdTE2YCwgcmlnaHQ/IFNvLCBpZiBgYWRkcl9sZW5gIGlzIDE2LCB3aGljaCBpcyBwb3NzaWJsZSBnaXZlbiB0aGUgZGF0YSB0eXBlLCBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAgaXMgZ29pbmcgdG8gYmUgYDEgJmx0OyZsdDsgMTZgLCB3aGljaCBlcXVhbHMgNjU1MzYuICBUaGUgcHJvYmxlbSBpcyBgbmljLSZndDtlZXByb21fd2NgIGlzIGFsc28gYSBgdTE2YCwgc28gdGhlIHJlc3VsdCB3aWxsIGdldCB0cnVuY2F0ZWQgdG8gMCwgd2hpY2ggaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgKmNyYXNoKiwgYnV0IGl0JiMzOTtzIGNsZWFybHkgdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCBjb3VsZCBsZWFkIHRvIGNvcnJ1cHRpb24uCgpXYWl0IGEgc2Vjb25k4oCmIExvb2tpbmcgYmFjayBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2VzIHdlcmUgb25seSBhcHBsaWVkIHRvIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3JlYWRgLgoKTGV0JiMzOTtzIGZvY3VzIG9uIHRoYXQgcGF0Y2ggc25pcHBldCBmcm9tIGBlMTAwX2VlcHJvbV9yZWFkYDoKYGBgYwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CmBgYApUaGF0JiMzOTtzIGluIGBlMTAwX2VlcHJvbV9yZWFkYC4gR29vZC4gU2luY2UgYGUxMDBfZWVwcm9tX3NhdmVgIGNhbGxzIGBlMTAwX2VlcHJvbV9yZWFkYCwgdGhhdCBmaXggKndpbGwqIGJlbmVmaXQgYGUxMDBfZWVwcm9tX3NhdmVgLiBUaGF0JiMzOTtzIGEgcmVsaWVmLCBpdCYjMzk7cyBhIGJpdCBtb3JlIGVsZWdhbnQgdGhhbiB0aGUgY2hlY2sgSSB0aG91Z2h0IHdhcyBtaXNzaW5nLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBwcm9wZXJseSBoYW5kbGVkIGluIG90aGVyIGNhbGxlcnMuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmU6IGBlMTAwX3Byb2JlYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX2xvYWRgKSwgYGUxMDBfZGlhZ190ZXN0YCAoYWxzbyBjYWxscyBgZTEwMF9lZXByb21fbG9hZGApLCBgZTEwMF9nZXRfZWVwcm9tYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX3JlYWRgKSwgYW5kIGBlMTAwX3NldF9lZXByb21gICh3aGljaCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAgLSZndDsgYGUxMDBfZWVwcm9tX3JlYWRgKS4KCk5vdywgYGUxMDBfcHJvYmVgIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCBydW5zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFN5emthbGxlciBjYW4gcHJvYmFibHkgdHJpZ2dlciBpdCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLiAgVGhlIG90aGVycywgYGUxMDBfZGlhZ190ZXN0YCwgYGUxMDBfZ2V0X2VlcHJvbWAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCwgYXJlIGFsbCBldGh0b29sIG9wZXJhdGlvbnMsIHNvIHRoZXkmIzM5O3JlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRoZSBuZXR3b3JrIGRldmljZS4KCkkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGBlMTAwX2dldF9lZXByb21gIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBpbiBgZTEwMC5jYCBub3cgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gd2F0Y2ggZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1NDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU0NTpcdHN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4yNTQ2Olx0XHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuMjU0NzpcdHtcbjI1NDg6XHRcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XG4yNTQ5Olx0XG4yNTUwOlx0XHRlZXByb20tXHUwMDNlbWFnaWMgPSBFMTAwX0VFUFJPTV9NQUdJQztcbjI1NTE6XHRcdG1lbWNweShieXRlcywgXHUwMDI2KCh1OCAqKW5pYy1cdTAwM2VlZXByb20pW2VlcHJvbS1cdTAwM2VvZmZzZXRdLCBlZXByb20tXHUwMDNlbGVuKTtcbjI1NTI6XHRcbjI1NTM6XHRcdHJldHVybiAwO1xuMjU1NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFRVBST00gSW50ZXJhY3Rpb24gaW4gdGhlIGUxMDAgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMF9nZXRfZWVwcm9tYCB3YXMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gcmVhZGluZyBmcm9tIHRoZSBFRVBST00uIEJ1dCwgd2FpdCwgdGhhdCYjMzk7cyBub3QgcmlnaHQuIEl0IGp1c3QgY29waWVzIGRhdGEgZnJvbSBgbmljLSZndDtlZXByb21gLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZTEwMF9lZXByb21fbG9hZGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuICpUaGF0JiMzOTtzKiB0aGUgb25lIHRoYXQgYWN0dWFsbHkgcmVhZHMgdGhlIEVFUFJPTSBkYXRhIGludG8gYG5pYy0mZ3Q7ZWVwcm9tYC4gU28sIHRoYXQgbWVhbnMgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGRpYWdub3N0aWMgdGVzdCBwaGFzZXMuCgpBbmQsIGxvb2tpbmcgYXQgYGUxMDBfc2V0X2VlcHJvbWAsIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRvIHNhdmUgdGhlIEVFUFJPTSBjb250ZW50cy4gVGhpcyBvbmUgY2FsbHMgYGUxMDBfZWVwcm9tX3NhdmVgLCB3aGljaCB0aGVuIGNhbGxzIHRoZSByZWFkL3dyaXRlIGZ1bmN0aW9ucyBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV93cml0ZWAuCgpUaGVyZWZvcmUsIGlmIEkgd2VyZSB0byBmb2N1cyBvbiB0aGUga2V5IGVudHJ5cG9pbnRzLCBpdCB3b3VsZCBiZSB0aGVzZSBmdW5jdGlvbnM6IGBlMTAwX3Byb2JlYCwgYGUxMDBfZGlhZ190ZXN0YCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuCgpOb3csIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgYSBzdGFuZGFyZCBQQ0kgcHJvYmUgZnVuY3Rpb24uIFVzdWFsbHksIEkgd291bGRuJiMzOTt0IGJvdGhlciBsaXN0aW5nIHRoZXNlLCBiZWNhdXNlIHRoZXkmIzM5O3JlIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgYnkgdGhlIHN5c3RlbSB3aGVuIHRoZSBkZXZpY2UgaXMgYWRkZWQsIGFuZCBTeXprYWxsZXImIzM5O3MgUENJIGluamVjdGlvbiB3aWxsIHRyaWdnZXIgdGhlbS4gSG93ZXZlciwgaXQmIzM5O3Mgbm90IHN0cmljdGx5IGluY29ycmVjdCB0byBsaXN0IGl0LCBzbyBJJiMzOTtsbCBsZWF2ZSBpdCBpbiBmb3Igbm93LgoKSG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQ3JhcCwgYGUxMDBfcHJvYmVgIGlzIHN0YXRpYy4gQW5kIG5vdyBJIHJlYWxpemUsIGFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyEKCmBgYGMKc3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQpzdGF0aWMgdm9pZCBlMTAwX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICp0ZXN0LCB1NjQgKmRhdGEpCnN0YXRpYyBpbnQgZTEwMF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpCmBgYAoKVGhlIGFkZHJlc3NlcyBvZiB0aGVzZSBmdW5jdGlvbnMgbWF5IG5vdCBiZSBleHBvcnRlZCBiZWNhdXNlIG9mIHRoZSBgc3RhdGljYCBrZXl3b3JkLCBidXQgdGhleSBhcmUgc3RpbGwgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGBwY2lfZHJpdmVyYCBhbmQgYGV0aHRvb2xfb3BzYCBzdHJ1Y3R1cmVzLiBTbyBTeXprYWxsZXIgY2FuIHN0aWxsIHN5bWJvbGl6ZSB0aGVtLiBJIGtub3cgZm9yIHN1cmUgdGhleSYjMzk7cmUgbm90IGlubGluZWQgYmVjYXVzZSB0aGV5JiMzOTtyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NTIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFwmIzM0O0ZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZTEwMF9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDg6c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MTU6c3RhdGljIHZvaWQgZTEwMF9lbmFibGVfaXJxKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjAtXHRpb3dyaXRlOChpcnFfbWFza19ub25lLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYyMTpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjItXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjI1OnN0YXRpYyB2b2lkIGUxMDBfZGlzYWJsZV9pcnEoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYzMC1cdGlvd3JpdGU4KGlycV9tYXNrX2FsbCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VzY2IuY21kX2hpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MzE6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMyLVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYzNTpzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzktXHRpb3dyaXRlMzIoc2VsZWN0aXZlX3Jlc2V0LCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY0MDpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0My1cdGlvd3JpdGUzMihzb2Z0d2FyZV9yZXNldCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2Vwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NDQ6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSgyMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0Ni1cdC8qIE1hc2sgb2ZmIG91ciBpbnRlcnJ1cHQgbGluZSAtIGl0JiMzOTtzIHVubWFza2VkIGFmdGVyIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQ3Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY1MDpzdGF0aWMgaW50IGUxMDBfc2VsZl90ZXN0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjAtXHRpb3dyaXRlMzIoc2VsZnRlc3QgfCBkbWFfYWRkciwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2Vwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjE6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjYyLVx0LyogV2FpdCAxMCBtc2VjIGZvciBzZWxmLXRlc3QgdG8gY29tcGxldGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY1LVx0LyogSW50ZXJydXB0cyBhcmUgZW5hYmxlZCBhZnRlciBzZWxmLXRlc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjY6XHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjgzOnN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjk5LVx0XHRpb3dyaXRlOChlZWNzIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzAwOlx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwNS1cdFx0XHRpb3dyaXRlOChjdHJsLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MDY6XHRcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwOC1cdFx0XHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzA5Olx0XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcxMC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTUtXHRcdGlvd3JpdGU4KDAsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjcxNjpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzE3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjAtLyogR2VuZXJhbCB0ZWNobmlxdWUgc3RvbGVuIGZyb20gdGhlIGVlcHJvMTAwIGRyaXZlciAtIHZlcnkgY2xldmVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczMS1cdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MzI6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczNy1cdFx0aW93cml0ZTgoY3RybCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzM4Olx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzQwLVx0XHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzQxOlx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2MC1cdGlvd3JpdGU4KDAsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc2MTpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY2LS8qIExvYWQgZW50aXJlIEVFUFJPTSBpbWFnZSBpbnRvIGRyaXZlciBjYWNoZSBhbmQgdmFsaWRhdGUgY2hlY2tzdW0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03Njgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzEtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NDpcdFx0bmljLVx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg1LVx0XHRpZiAoYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMC0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODAxOnN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwNS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODA2Olx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDctXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxMi1cdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYyBzdGFydCAmIzQzOyBjb3VudDsgYWRkciYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODEzOlx0XHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBhZGRyLCBuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxOS1cdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMDpcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMS1cdFx0bmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MjctI2RlZmluZSBFMTAwX1dBSVRfU0NCX0ZBU1QgMjAgICAgICAgLyogZGVsYXkgbGlrZSB0aGUgb2xkIGNvZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4Mjg6c3RhdGljIGludCBlMTAwX2V4ZWNfY21kKHN0cnVjdCBuaWMgKm5pYywgdTggY21kLCBkbWFfYWRkcl90IGRtYV9hZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTg1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NTk6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTg2MC1cdGludCAoKmNiX3ByZXBhcmUpKHN0cnVjdCBuaWMgKiwgc3RydWN0IGNiICosIHN0cnVjdCBza19idWZmICopKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTItXHR3aGlsZSAobmljLVx1MDAzZWNiX3RvX3NlbmQgIT0gbmljLVx1MDAzZWNiX3RvX3VzZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjg5MzpcdFx0aWYgKHVubGlrZWx5KGUxMDBfZXhlY19jbWQobmljLCBuaWMtXHUwMDNlY3VjX2NtZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTQtXHRcdFx0bmljLVx1MDAzZWNiX3RvX3NlbmQtXHUwMDNlZG1hX2FkZHIpKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xMDAxPXN0YXRpYyB1MTYgbWRpb19jdHJsX3BoeV9taWlfZW11bGF0ZWQoc3RydWN0IG5pYyAqbmljLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMDQzOnN0YXRpYyBpbmxpbmUgaW50IGUxMDBfcGh5X3N1cHBvcnRzX21paShzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEwNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA1MTpzdGF0aWMgdm9pZCBlMTAwX2dldF9kZWZhdWx0cyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA1Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEwODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NDpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMC1cdGNvbmZpZy1cdTAwM2V0eF91bmRlcnJ1bl9yZXRyeSA9IDB4MztcdC8qICMgb2YgdW5kZXJydW4gcmV0cmllcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjExMDE6XHRpZiAoZTEwMF9waHlfc3VwcG9ydHNfbWlpKG5pYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMi1cdFx0Y29uZmlnLVx1MDAzZW1paV9tb2RlID0gMTsgICAgICAgICAgIC8qIDE9TUlJIG1vZGUsIDA9aTgyNTAzIG1vZGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTIzMy0vKiBJbml0aWFsaXplIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTIzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEyMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjI6c3RhdGljIGludCBlMTAwX3NldHVwX3Vjb2RlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIzLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzI4Olx0LyogSXQmIzM5O3Mgbm90IGEgcmVhbCBza2I7IHdlIGp1c3QgYWJ1c2VkIHRoZSBmYWN0IHRoYXQgZTEwMF9leGVjX2NiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyOS1cdCAgIHdpbGwgcGFzcyBpdCB0aHJvdWdoIHRvIGhlcmUuLi4gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzUyOnN0YXRpYyBpbmxpbmUgaW50IGUxMDBfbG9hZF91Y29kZV93YWl0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzU4Olx0ZncgPSBlMTAwX3JlcXVlc3RfZmlybXdhcmUobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzU5LVx0LyogSWYgaXQmIzM5O3MgTlVMTCwgdGhlbiBubyB1Y29kZSBpcyByZXF1aXJlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzNjM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsICh2b2lkICopZncsIGUxMDBfc2V0dXBfdWNvZGUpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzY0LVx0XHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVx1MDAzZW5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM3MC1cdC8qIHdhaXQgZm9yIGNvbXBsZXRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzcxOlx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNzItXHR1ZGVsYXkoMTApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzOTI6c3RhdGljIGludCBlMTAwX3NldHVwX2lhYWRkcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5My1cdHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMDpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwODpzdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0Ny0jZGVmaW5lIE5TQ19DT05HX1RYUkVBRFlcdDB4MDQwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NDg6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ2Ny1cdFx0ICogbG9va3VwIG9mIEVFUFJPTSB2YWx1ZXMgd2hpY2ggbWF5IGVhc2lseSBiZSB1bnJlbGlhYmxlLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0Njg6XHRcdGlmIChlMTAwX3BoeV9jaGVja193aXRob3V0X21paShuaWMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NjktXHRcdFx0cmV0dXJuIDA7IC8qIHNpbXBseSByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0MTpzdGF0aWMgaW50IGUxMDBfaHdfaW5pdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0NTpcdGUxMDBfaHdfcmVzZXQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDc6XHRuZXRpZl9lcnIobmljLCBodywgbmljLVx1MDAzZW5ldGRldiwgXCYjMzQ7ZTEwMF9od19pbml0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQ4Olx0aWYgKChlcnIgPSBlMTAwX3NlbGZfdGVzdChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ5LVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1MTpcdGlmICgoZXJyID0gZTEwMF9waHlfaW5pdChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTUyLVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NTM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfbG9hZF9iYXNlLCAwKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1NC1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU1Olx0aWYgKChlcnIgPSBlMTAwX2V4ZWNfY21kKG5pYywgcnVjX2xvYWRfYmFzZSwgMCkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTYtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1NzpcdGlmICgoZXJyID0gZTEwMF9sb2FkX3Vjb2RlX3dhaXQobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1OC1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU5Olx0aWYgKChlcnIgPSBlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjAtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MTpcdGlmICgoZXJyID0gZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTYyLVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NjM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjQtXHRcdG5pYy1cdTAwM2VkbWFfYWRkciAmIzQzOyBvZmZzZXRvZihzdHJ1Y3QgbWVtLCBzdGF0cykpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTY1LVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NjY6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9yZXNldCwgMCkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjctXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTY5Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU3NDpzdGF0aWMgaW50IGUxMDBfbXVsdGkoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1OTI6c3RhdGljIHZvaWQgZTEwMF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTYxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjExOlx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9jb25maWd1cmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTI6XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX211bHRpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjEzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTU6c3RhdGljIHZvaWQgZTEwMF91cGRhdGVfc3RhdHMoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2NzI6XHRpZiAoZTEwMF9leGVjX2NtZChuaWMsIGN1Y19kdW1wX3Jlc2V0LCAwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjczLVx0XHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY3NzpzdGF0aWMgdm9pZCBlMTAwX2FkanVzdF9hZGFwdGl2ZV9pZnMoc3RydWN0IG5pYyAqbmljLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTQtXHRcdGlmIChuaWMtXHUwMDNlYWRhcHRpdmVfaWZzICE9IHByZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY5NTpcdFx0XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjk5OnN0YXRpYyB2b2lkIGUxMDBfd2F0Y2hkb2coc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MjktXHRpb3dyaXRlOChpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlc2NiLmNtZF9oaSkgfCBpcnFfc3dfZ2VuLFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlc2NiLmNtZF9oaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczMDpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzMxLVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzMzOlx0ZTEwMF91cGRhdGVfc3RhdHMobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzM0Olx0ZTEwMF9hZGp1c3RfYWRhcHRpdmVfaWZzKG5pYywgc3BlZWQsIGNtZC5kdXBsZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzctXHRcdC8qIElzc3VlIGEgbXVsdGljYXN0IGNvbW1hbmQgdG8gd29ya2Fyb3VuZCBhIDU1NyBsb2NrIHVwICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczODpcdFx0ZTEwMF9zZXRfbXVsdGljYXN0X2xpc3QobmljLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUwOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3NTEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3ODQ6c3RhdGljIG5ldGRldl90eF90IGUxMDBfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3ODUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzkzLVx0XHQgICBpc3N1aW5nIHRoZSBUeCBjb21tYW5kLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3OTQ6XHRcdGlmIChlMTAwX2V4ZWNfY21kKG5pYywgY3VjX25vcCwgMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc5NS1cdFx0XHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgwMDpcdGVyciA9IGUxMDBfZXhlY19jYihuaWMsIHNrYiwgZTEwMF94bWl0X3ByZXBhcmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMDpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4NjM6c3RhdGljIHZvaWQgZTEwMF9jbGVhbl9jYnMoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4NjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4ODc6c3RhdGljIGludCBlMTAwX2FsbG9jX2NicyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkxNjpzdGF0aWMgaW5saW5lIHZvaWQgZTEwMF9zdGFydF9yZWNlaXZlcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjUtXHRpZiAocngtXHUwMDNlc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkyNjpcdFx0ZTEwMF9leGVjX2NtZChuaWMsIHJ1Y19zdGFydCwgcngtXHUwMDNlZG1hX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjctXHRcdG5pYy1cdTAwM2VydV9ydW5uaW5nID0gUlVfUlVOTklORztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMS0jZGVmaW5lIFJGRF9CVUZfTEVOIChzaXplb2Yoc3RydWN0IHJmZCkgJiM0MzsgVkxBTl9FVEhfRlJBTUVfTEVOICYjNDM7IEVUSF9GQ1NfTEVOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE5MzI6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX3NrYihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTk2NDpzdGF0aWMgaW50IGUxMDBfcnhfaW5kaWNhdGUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjUtXHR1bnNpZ25lZCBpbnQgKndvcmtfZG9uZSwgdW5zaWduZWQgaW50IHdvcmtfdG9fZG8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIwNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjA2MzpzdGF0aWMgdm9pZCBlMTAwX3J4X2NsZWFuKHN0cnVjdCBuaWMgKm5pYywgdW5zaWduZWQgaW50ICp3b3JrX2RvbmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA2NC1cdHVuc2lnbmVkIGludCB3b3JrX3RvX2RvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDcyLVx0Zm9yIChyeCA9IG5pYy1cdTAwM2VyeF90b19jbGVhbjsgcngtXHUwMDNlc2tiOyByeCA9IG5pYy1cdTAwM2VyeF90b19jbGVhbiA9IHJ4LVx1MDAzZW5leHQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDczOlx0XHRlcnIgPSBlMTAwX3J4X2luZGljYXRlKG5pYywgcngsIHdvcmtfZG9uZSwgd29ya190b19kbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA3NC1cdFx0LyogSGl0IHF1b3RhIG9yIG5vIG1vcmUgdG8gY2xlYW4gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA5My1cdGZvciAocnggPSBuaWMtXHUwMDNlcnhfdG9fdXNlOyAhcngtXHUwMDNlc2tiOyByeCA9IG5pYy1cdTAwM2VyeF90b191c2UgPSByeC1cdTAwM2VuZXh0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjA5NDpcdFx0aWYgKHVubGlrZWx5KGUxMDBfcnhfYWxsb2Nfc2tiKG5pYywgcngpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDk1LVx0XHRcdGJyZWFrOyAvKiBCZXR0ZXIgbHVjayBuZXh0IHRpbWUgKHNlZSB3YXRjaGRvZykgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzNi1cdFx0aW93cml0ZTgoc3RhdF9hY2tfcm5yLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5zdGF0X2Fjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjEzNzpcdFx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIG5pYy1cdTAwM2VyeF90b19jbGVhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzOC1cdFx0aWYgKHdvcmtfZG9uZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTQzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW5fbGlzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE2NjpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2NfbGlzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxODAtXHRcdHJ4LVx1MDAzZXByZXYgPSAoaSA9PSAwKSA/IG5pYy1cdTAwM2VyeHMgJiM0MzsgY291bnQgLSAxIDogcnggLSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxODE6XHRcdGlmIChlMTAwX3J4X2FsbG9jX3NrYihuaWMsIHJ4KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxODI6XHRcdFx0ZTEwMF9yeF9jbGVhbl9saXN0KG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE4My1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjA2OnN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI2LVx0aWYgKGxpa2VseShuYXBpX3NjaGVkdWxlX3ByZXAoXHUwMDI2bmljLVx1MDAzZW5hcGkpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMjc6XHRcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI4LVx0XHRfX25hcGlfc2NoZWR1bGUoXHUwMDI2bmljLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzQ6c3RhdGljIGludCBlMTAwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzk6XHRlMTAwX3J4X2NsZWFuKG5pYywgXHUwMDI2d29ya19kb25lLCBidWRnZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDA6XHRlMTAwX3R4X2NsZWFuKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI0Ny1cdGlmIChsaWtlbHkobmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHdvcmtfZG9uZSkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDg6XHRcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNTMtI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1NDpzdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjU1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjU4Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNTk6XHRlMTAwX2ludHIobmljLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjA6XHRlMTAwX3R4X2NsZWFuKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2MTpcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjU6c3RhdGljIGludCBlMTAwX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjczLVx0ZXRoX2h3X2FkZHJfc2V0KG5ldGRldiwgYWRkci1cdTAwM2VzYV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjc0Olx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI3OTpzdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg4OnN0YXRpYyBpbnQgZTEwMF91cChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MjpcdGlmICgoZXJyID0gZTEwMF9yeF9hbGxvY19saXN0KG5pYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTMtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5NDpcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5NS1cdFx0Z290byBlcnJfcnhfY2xlYW5fbGlzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk2Olx0aWYgKChlcnIgPSBlMTAwX2h3X2luaXQobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5Ny1cdFx0Z290byBlcnJfY2xlYW5fY2JzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyOTg6XHRlMTAwX3NldF9tdWx0aWNhc3RfbGlzdChuaWMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk5Olx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDAtXHRtb2RfdGltZXIoXHUwMDI2bmljLVx1MDAzZXdhdGNoZG9nLCBqaWZmaWVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzAxOlx0aWYgKChlcnIgPSByZXF1ZXN0X2lycShuaWMtXHUwMDNlcGRldi1cdTAwM2VpcnEsIGUxMDBfaW50ciwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwMi1cdFx0bmljLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lLCBuaWMtXHUwMDNlbmV0ZGV2KSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDctXHQgKiBkaXNhYmxlIGludHMmIzQzO3NjaGVkdWxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMwODpcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxMy1lcnJfY2xlYW5fY2JzOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMTQ6XHRlMTAwX2NsZWFuX2NicyhuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTUtZXJyX3J4X2NsZWFuX2xpc3Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMxNjpcdGUxMDBfcnhfY2xlYW5fbGlzdChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTctXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjA6c3RhdGljIHZvaWQgZTEwMF9kb3duKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyNC1cdG5ldGlmX3N0b3BfcXVldWUobmljLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyNTpcdGUxMDBfaHdfcmVzZXQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzI2LVx0ZnJlZV9pcnEobmljLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBuaWMtXHUwMDNlbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyOC1cdG5ldGlmX2NhcnJpZXJfb2ZmKG5pYy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjk6XHRlMTAwX2NsZWFuX2NicyhuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMzA6XHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMzM6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNDI6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzUxLVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNTI6XHRcdGUxMDBfZG93bihuZXRkZXZfcHJpdihuZXRkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzUzOlx0XHRlMTAwX3VwKG5ldGRldl9wcml2KG5ldGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1ODpzdGF0aWMgaW50IGUxMDBfbG9vcGJhY2tfdGVzdChzdHJ1Y3QgbmljICpuaWMsIGVudW0gbG9vcGJhY2sgbG9vcGJhY2tfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzY4Olx0aWYgKChlcnIgPSBlMTAwX3J4X2FsbG9jX2xpc3QobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2OS1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzcwOlx0aWYgKChlcnIgPSBlMTAwX2FsbG9jX2NicyhuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzcxLVx0XHRnb3RvIGVycl9jbGVhbl9yeDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3Ny1cdG5pYy1cdTAwM2Vsb29wYmFjayA9IGxvb3BiYWNrX21vZGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM3ODpcdGlmICgoZXJyID0gZTEwMF9od19pbml0KG5pYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNzktXHRcdGdvdG8gZXJyX2xvb3BiYWNrX25vbmU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM4NTpcdGUxMDBfc3RhcnRfcmVjZWl2ZXIobmljLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzkyLVx0bWVtc2V0KHNrYi1cdTAwM2VkYXRhLCAweEZGLCBFVEhfREFUQV9MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzOTM6XHRlMTAwX3htaXRfZnJhbWUoc2tiLCBuaWMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDA2LVx0bmljLVx1MDAzZWxvb3BiYWNrID0gbGJfbm9uZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA3Olx0ZTEwMF9jbGVhbl9jYnMobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA4Olx0ZTEwMF9od19yZXNldChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MDktZXJyX2NsZWFuX3J4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MTA6XHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDExLVx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDE5OnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDI5OnN0YXRpYyBpbnQgZTEwMF9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzNi1cdGVyciA9IG1paV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncyhcdTAwMjZuaWMtXHUwMDNlbWlpLCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0Mzc6XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDQyOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDQzLVx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1MS0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NTI6c3RhdGljIGludCBlMTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NjI6c3RhdGljIHZvaWQgZTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NjMtXHRzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpwKVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBlMTAwYCBEcml2ZXImIzM5O3MgRW50cnlwb2ludCBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHJldmlzaXRpbmcgdGhlIGBlMTAwX3Byb2JlYCBmdW5jdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgbWlnaHQgYmUgbm9uLXN0YXRpYywgYnV0IGl0JiMzOTtzIGNsZWFybHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW4gdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKYGBgCgpOb3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIGlubGluZXMgc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIElmIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBJIHNob3VsZCBiZSB1c2luZyB0aGUgc3RhdGljIGZ1bmN0aW9ucyB0aGF0ICphcmVuJiMzOTt0KiBpbmxpbmVkLiBGdW5jdGlvbnMgbGlrZSBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBjb21lIHRvIG1pbmQgc2luY2UgdGhleSBhcmUgYWxsIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycy4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2suIEkgc2VlIHRoYXQgYGUxMDBfcHJvYmVgIGlzLCBpbiBmYWN0LCBwYXNzZWQgdG8gYHN0cnVjdCBwY2lfZHJpdmVyIGUxMDBfZHJpdmVyYC4gVGhhdCBtYWtlcyBzZW5zZS4KCk9rYXksIHRoaXMgbG9naWMgbWFrZXMgc2Vuc2UuIFRvIGVuc3VyZSBJJiMzOTttIGNvbXBsaWFudCwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZTEwMC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBmbG9hdGluZyBhcm91bmQgaW4gdGhlcmUuIEdvdHRhIGNvdmVyIG15IGJhc2VzIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMDAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkUxMDAgRHJpdmVyIFNwZWN1bGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgaGVyZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBgXnZvaWQgZTEwMF9gLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LiBUaGlzIGxpa2VseSByZWZlcmVuY2VzIGEgZnVuY3Rpb24gb3Igc3RydWN0dXJlIHJlbGF0ZWQgdG8gdGhlIEludGVsIGUxMDAgbmV0d29yayBkcml2ZXIuIFRoZSBgdm9pZGAgcmV0dXJuIHR5cGUgc3VnZ2VzdHMgYSBiYXNpYyBmdW5jdGlvbiwgcG9zc2libHkgYW4gaW50ZXJydXB0IGhhbmRsZXIsIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIG9yIHBlcmhhcHMgYSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lc24mIzM5O3QgbmVlZCB0byByZXR1cm4gYW55IHNwZWNpZmljIGRhdGEuIFRoZSBjYXJldCAoYF5gKSBwcmVjZWRpbmcgYHZvaWRgIGNvdWxkIGJlIGEgcG9pbnRlci10by1mdW5jdGlvbi4gSXQgbmVlZHMgdG8gYmUgZXhhbWluZWQgZnJvbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLCBsb29raW5nIGF0IGNhbGxzaXRlcyBhbmQgdXNlcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIHN5bWJvbCB0YWJsZSBvciBsb29rIGZvciBhIGhlYWRlciBmaWxlIHRoYXQgZGVmaW5lcyBpdCB0byBjb25maXJtIHRoZSBhY3R1YWwgZGVjbGFyYXRpb24gYW5kIHVzYWdlIG9mIHRoZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBzb3VyY2UgY29kZS4gSXMgaXQgYW4gZW50cnkgcG9pbnQ/IEFuIGludGVybmFsIHdvcmtlciBmdW5jdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkmIzM5O2QgdGhlbiBjaGVjayBmb3IgYW55IGtub3duIGlzc3VlcyBvciB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdHMgb3IgbWVtb3J5IGFjY2VzcywgZ2l2ZW4gaXQmIzM5O3MgYW4gb2xkZXIgY2hpcHNldC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUgZm9yIHRoZSBkcml2ZXIgb3IgYSBwbGFjZSB3aGVyZSBleHBsb2l0cyBtaWdodCBiZSBpbnRyb2R1Y2VkLiBJdCBuZWVkcyBhIGRlZXBlciBpbnZlc3RpZ2F0aW9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgZXZlcnl0aGluZyYjMzk7cyBidWlsdCBhcm91bmQgc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBub3QgdW5leHBlY3RlZCwgYW5kIGZyYW5rbHksIG1hbmFnZWFibGUuIEkgc2VlIHdlIGhhdmUgc29tZSBrZXkgcGxheWVycyBoZXJlOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgcHJvYmluZywgZGlhZ25vc3RpYyB0ZXN0aW5nLCBhbmQgRUVQUk9NIGNvbmZpZ3VyYXRpb24sIHJlc3BlY3RpdmVseS4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uYWwgZmxvdy4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdC4gVGhlIGBFMTAwYCBjb25maWcgb3B0aW9uIGl0c2VsZiBpcyBvYnZpb3VzbHkgY2VudHJhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgb3B0aW9ucywgaWYgYW55LCBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBFMTAwYCB0byBiZSBjb3JyZWN0bHkgYnVpbHQgYW5kIGZ1bmN0aW9uYWwuIFNvLCBsZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2suIEkmIzM5O2xsIG5lZWQgdG8gcGFyc2UgdGhhdCBmaWxlIHRvIGRldGVybWluZSB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBFMTAwYCBhbmQgb3RoZXIgY29tcG9uZW50cywgZW5zdXJpbmcgSSYjMzk7bSBhd2FyZSBvZiBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFMTAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJpZS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjpjb25maWcgRTEwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAmIzQzOyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6NDU6Y29uZmlnIEUxMDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgUFJPLzEwMDAgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6NjE6Y29uZmlnIEUxMDAwRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAwIFBDSS1FeHByZXNzIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcgYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWdpbi4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBmaWxlIHN0cnVjdHVyZSwgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHBhdHRlcm46IGEgYGNvbmZpZ2Agc3RhdGVtZW50LCBhIHByb21wdCwgYSB0eXBlIChib29sLCB0cmlzdGF0ZSwgZXRjLiksIGFuZCBwb3RlbnRpYWxseSBzb21lIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHZhbHVlcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gcXVpY2tseSBncmFzcCB3aGljaCBmZWF0dXJlIG9yIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIHRoZXJlLiBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIG9wdGlvbnMgcHJvdmlkZWQuIElzIGl0IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHksIGEgcGFydGljdWxhciBmZWF0dXJlLCBvciBhIGdlbmVyYWwgZHJpdmVyIHNldHRpbmc/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgbGluZSAyMiB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZ2V0IHRoZSBnZW5lcmFsIGlkZWEgb2Ygd2hhdCYjMzk7cyBiZWluZyBjb25maWd1cmVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZSwgYW5kIHdoeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMjpcdGNvbmZpZyBFMTAwXG4gIDIzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwJiM0Mzsgc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjU6XHRcdHNlbGVjdCBNSUlcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgUFJPLzEwMCBmYW1pbHkgb2YgYWRhcHRlcnMuXG4gIDI4Olx0XHQgIFRvIHZlcmlmeSB0aGF0IHlvdXIgYWRhcHRlciBpcyBzdXBwb3J0ZWQsIGZpbmQgdGhlIGJvYXJkIElEIG51bWJlclxuICAyOTpcdFx0ICBvbiB0aGUgYWRhcHRlci4gTG9vayBmb3IgYSBsYWJlbCB0aGF0IGhhcyBhIGJhcmNvZGUgYW5kIGEgbnVtYmVyXG4gIDMwOlx0XHQgIGluIHRoZSBmb3JtYXQgMTIzNDU2LTAwMSAoc2l4IGRpZ2l0cyBoeXBoZW4gdGhyZWUgZGlnaXRzKS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgVXNlIHRoZSBhYm92ZSBpbmZvcm1hdGlvbiBhbmQgdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0XG4gIDMzOlx0XHQgIGNhbiBiZSBsb2NhdGVkIGF0OlxuICAzNDpcdFxuICAzNTpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAgMzY6XHRcbiAgMzc6XHRcdCAgdG8gaWRlbnRpZnkgdGhlIGFkYXB0ZXIuXG4gIDM4Olx0XG4gIDM5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA0MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9lMTAwLnJzdFx1MDAzZS5cbiAgNDE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NTAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIG9yIGJ1ZmZlciBvdmVyZmxvd3MuICBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0JiMzOTtzIG5vdCBqdXN0IGEgY29tbWVudCBvciBhIGxvZ2dpbmcgdXBkYXRlLiBJdCYjMzk7cyB0aWdodGVuaW5nIHVwIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgRUVQUk9NIHJlYWRzLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHkuICBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MuICBDcnVjaWFsbHksIFFFTVUgZnVsbHkgZW11bGF0ZXMgdGhpcyBoYXJkd2FyZS4gIFRoYXQgbWVhbnMgdGhlIGRyaXZlciYjMzk7cyBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIGtleSByZXF1aXJlbWVudCB0byBkZXRlcm1pbmUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBhcyBwZXIgZ3VpZGVsaW5lcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGVyZSB0aGlzIGNvZGUgaXMgY2FsbGVkLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYC4gIEkgc2F3IHRoYXQgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBgZTEwMF9lZXByb21fbG9hZGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgZnJvbSBhIGNvdXBsZSBvZiBpbXBvcnRhbnQgcGxhY2VzOiBgZTEwMF9wcm9iZWAgKGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24pIGFuZCBhbHNvIGZyb20gYGUxMDBfZGlhZ190ZXN0YC4KCkxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBpbnRlcmVzdGluZyBjYWxsIHNpdGVzIGZvciBgZTEwMF9lZXByb21fcmVhZGAuCgpFeGNlbGxlbnQsIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgaXMgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9zZXRfZWVwcm9tYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlIGBlMTAwX2V0aHRvb2xfb3BzYCwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIHZpYSBldGh0b29sLiBQZXJmZWN0LgoKU28gbXkgJiMzNDtmb2N1cyBzeW1ib2xzJiMzNDsgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgbm93IGNsZWFybHkgZGVmaW5lZDogYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuIEkgY2FuIHVzZSB0aGVzZSBhcyBteSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuCgpSZWdhcmRpbmcgY29uZmlndXJhdGlvbiwgYEUxMDBgIG5lZWRzIHRvIGJlIGVuYWJsZWQsIGFuZCBgUENJYCBpcyB1c3VhbGx5IGVuYWJsZWQgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gVGhlc2UgYXJlIG15IHJlcXVpcmVkICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7LgoKTGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhIHRvIGJlIGFic29sdXRlbHkgc3VyZTogSSYjMzk7bSBub3QgZGVhbGluZyB3aXRoIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIGlzIGNvcmUgZHJpdmVyIGxvZ2ljIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyBFRVBST00gYWNjZXNzIGFuZCB0aGVyZWZvcmUgaXMgbGlrZWx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcywgc2luY2UgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLiAgU28gYmFzZWQgb24gYWxsIG9mIHRoaXMsICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgaXMgYHRydWVgLgoKRmluYWwgdGhvdWdodHM6IEkgc2hvdWxkIGFkZCBhIGNoZWNrIHRvIG1ha2Ugc3VyZSBgZTEwMF9lZXByb21fcmVhZGAgaXNuJiMzOTt0IGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlIGltcG9ydGFudCwgYnV0IHRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgZ2l2ZW4gdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB0aGVyZSBhcmUgYSBmZXcgaW50ZXJlc3RpbmcgY2FsbCBzaXRlcyB0byBmb2N1cyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzcyOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0Olx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXHRcdGlmIChhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9ODAxPXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE3MQoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBzeW1ib2xzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEVFUFJPTSBGdW5jdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCB3ZSYjMzk7cmUgb25seSBkZWFsaW5nIHdpdGggYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaGVyZS4gR29vZCwgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIE5vdywgSSByZWNhbGwgdGhvc2UgY2FsbHMuIGBlMTAwX2VlcHJvbV9sb2FkYCBnZXRzIGludm9rZWQgYnkgYGUxMDBfcHJvYmVgIGFuZCBhbHNvIGR1cmluZyB0aGUgZGlhZ25vc3RpYyB0ZXN0cywgYGUxMDBfZGlhZ190ZXN0YC4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3RpbmcuIEFuZCBgZTEwMF9lZXByb21fc2F2ZWAsIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBlMTAwX3NldF9lZXByb21gLCB3aGljaCBoYW5kbGVzIHRoZSBhY3R1YWwgd3JpdGUgb3BlcmF0aW9ucy4gRXhjZWxsZW50LCBzbyB0aGUgcHJpbWFyeSBzeW1ib2xzIHdlJiMzOTtyZSB0cmFja2luZyBhcmUgaW5kZWVkIHRoZSBvbmVzIEkgYW50aWNpcGF0ZWQuIEV2ZXJ5dGhpbmcgYWxpZ25zIGFzIEkgdGhvdWdodCBpdCB3b3VsZC4gVGltZSB0byBtb3ZlIG9uIHRvIHRoZSBuZXh0IHRhc2sgLSBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9kaWFnX3Rlc3QmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3IgKGUuZy4gaW52YWxpZCBzaGlmdHMpIGFuZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4gVGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgaTgyNTV4IGZhbWlseSBvZiBOSUNzLCB3aGljaCBpcyBmdWxseSBlbXVsYXRlZCBieSBRRU1VIChlLmcuLCBpODI1NTllciksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCksIGV0aHRvb2wgZGlhZ25vc3RpY3MgKGBlMTAwX2RpYWdfdGVzdGApLCBhbmQgZXRodG9vbCBFRVBST00gd3JpdGUgb3BlcmF0aW9ucyAoYGUxMDBfc2V0X2VlcHJvbWApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMF9wcm9iZSYjMzQ7LAogICAgJiMzNDtlMTAwX2RpYWdfdGVzdCYjMzQ7LAogICAgJiMzNDtlMTAwX3NldF9lZXByb20mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXG5cbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw3ICYjNDM7NzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKLQluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiYjNDM7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkmIzM0O0ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywKJiM0MzsJCQlhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwluaWMtJmd0O2VlcHJvbV93YyA9IDFVICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewogCQluaWMtJmd0O2VlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCBhZGRyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIGUxMDAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGUxMDBgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYC4gSXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIGhhbmRsaW5nIG9mIEVFUFJPTSBhY2Nlc3MsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byBgYWRkcl9sZW5gLiAgTG9va2luZyBhdCBgZTEwMF9lZXByb21fcmVhZGAsIHRoZSBjb2RlIG5vdyBjYXJlZnVsbHkgYWRqdXN0cyBgYWRkcl9sZW5gIGlmIGEgc3BlY2lmaWMgY29uZGl0aW9uIGlzbiYjMzk7dCBtZXQgKCBgIShjdHJsICZhbXA7IGVlZG8pICZhbXA7JmFtcDsgaSAmZ3Q7IDE2YCApLCBidXQgaXQgbWFrZXMgc3VyZSB0aGF0IHRoZSB2YWx1ZSBkb2VzbiYjMzk7dCBnbyBuZWdhdGl2ZSBvciBvdmVyZmxvdy4KCkluIGBlMTAwX2VlcHJvbV9sb2FkYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7PSAxNilgLiAgVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhbiBpc3N1ZSB3aGVyZSB0aGUgY2FsY3VsYXRlZCBgYWRkcl9sZW5gIGNvdWxkIGJlIGludmFsaWQg4oCTIGVpdGhlciB6ZXJvIG9yIHRvbyBsYXJnZS4gVGhlIGNvZGUgdGhlbiB1c2VzIGBuZXRpZl9lcnJgIHRvIHJlcG9ydCB0aGUgaXNzdWUuICBUaGUgcHJpbWFyeSBwdXJwb3NlIGlzIHByZXZlbnRpbmcgYSBzaGlmdC1vdXQtb2YtYm91bmRzIGVycm9yIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gIFRoZSB2YXJpYWJsZSBgbmljLSZndDtlZXByb21fd2NgIGlzIGRlcml2ZWQgZnJvbSBgMVUgJmx0OyZsdDsgYWRkcl9sZW5gLiBUaGUgb3JpZ2luYWwgbG9naWMgd2FzIGZsYXdlZCwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW5gIHdhcyB0b28gbGFyZ2UgKGkuZS4sIGBhZGRyX2xlbmAgJmd0Oz0gMTYpLiBUaGUgY29kZSBwcm90ZWN0cyBgbmljLSZndDtlZXByb21bYWRkcl1gIGFjY2Vzc2VzLgoKVGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvciBvdmVyZmxvdywgYW5kIHRoZSByZXN1bHRpbmcgYGFkZHJfbGVuYCBsZWFkcyB0byBlaXRoZXIgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdGluZyBhIHZlcnkgbGFyZ2UgYW1vdW50KSBvciBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAoYG5pYy0mZ3Q7ZWVwcm9tW2FkZHJdYCkuICBJJiMzOTttIHRoaW5raW5nIEtBU0FOIGFuZCBVQlNBTiB3b3VsZCBiZSB0aGUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gY2F0Y2ggdGhpcyBraW5kIG9mIHByb2JsZW0uIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBpbnZvbHZlZCBoZXJlOyBpdCYjMzk7cyBwdXJlbHkgYWJvdXQgcHJldmVudGluZyBPT0IgYWNjZXNzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IuIFNvLCBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaW4gdGhpcyBzY2VuYXJpby4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgc2l6ZSBvZiBgbmljLSZndDtlZXByb21gLiBJJiMzOTtsbCBydW4gYSBxdWljayBncmVwIGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGFjdHVhbCBzaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3UxNiBlZXByb21cXFsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBlMTAwLmNgIHdpdGggYSBGb2N1c2VkIEdyZXAqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBlMTAwLmNgIGFnYWluLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gcGlucG9pbnQgYWxsIGluc3RhbmNlcyBvZiBgZWVwcm9tYCB3aXRoaW4gdGhpcyBjb2RlLCBidXQgSSB3YW50IHRvIGJlICpwcmVjaXNlKi4gSSBkb24mIzM5O3Qgd2FudCB0byBnZXQgYm9nZ2VkIGRvd24gd2l0aCBpcnJlbGV2YW50IG1hdGNoZXMgb3Igbm9pc2UgZnJvbSwgc2F5LCBoZWFkZXIgZmlsZSBkZWNsYXJhdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGhvdyB0aGUgRUVQUk9NIGludGVyYWN0aW9uIGlzIGltcGxlbWVudGVkIGhlcmUsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBpbnN0YW5jZXMgb2YgYGVlcHJvbWAgcmVsYXRlZCB0byB0aGUgY29kZSYjMzk7cyBhY3RpdmUgdXNlLCBub3QgaXRzIG1lcmUgZGVmaW5pdGlvbi4KClRoZXJlZm9yZSwgaW5zdGVhZCBvZiBhIGJyb2FkIHNlYXJjaCwgbGV0JiMzOTtzIHJlZmluZSB0aGlzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGVlcHJvbWAgd2l0aGluIGBlMTAwLmNgLiBCdXQgSSYjMzk7bSBnb2luZyB0byBleGNsdWRlIGB1MTZgIGZyb20gdGhlIHNlYXJjaCBjcml0ZXJpYS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgKnVzYWdlKiBub3QgdGhlICpkZWNsYXJhdGlvbiouIFRoYXQgc2hvdWxkIG5hcnJvdyB0aGUgcmVzdWx0cyBzaWduaWZpY2FudGx5LCBnaXZpbmcgbWUgYSBtb3JlIHRhcmdldGVkIHZpZXcgb2YgdGhlIEVFUFJPTSBhY2Nlc3MgcGF0aHMsIHBvdGVudGlhbGx5IGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggaGFyZHdhcmUgYWNjZXNzLCBvciBjYWxscyB0byBFRVBST00gc3BlY2lmaWMgcm91dGluZXMuIEl0JiMzOTtzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBnZXQgYSBnb29kIGJlYXJpbmcgb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHdhZGUgdGhyb3VnaCBkZWZpbml0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWVwcm9tXFxbJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwMi1cdHUxNiBlZXByb21fd2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjAzOlx0X19sZTE2IGVlcHJvbVsyNTZdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwNC1cdHNwaW5sb2NrX3QgbWRpb19sb2NrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03Njc9c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgzLVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODQ6XHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NjpcdFx0XHRjaGVja3N1bSAmIzQzOz0gbGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03OTAtXHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTE6XHRpZiAoY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pICE9IG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzkyLVx0XHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVx1MDAzZW5ldGRldiwgXCYjMzQ7RUVQUk9NIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTgwMT1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODEyLVx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjIHN0YXJ0ICYjNDM7IGNvdW50OyBhZGRyJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MTM6XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE3LVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHImIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgxODpcdFx0Y2hlY2tzdW0gJiM0Mzs9IGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgxOTpcdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMC1cdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMTpcdFx0bmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTQwOD1zdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDEzOlx0cGh5X3R5cGUgPSAobGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVtlZXByb21fcGh5X2lmYWNlXSkgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweDBmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0NDg9c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMS1cdCAgIChtZGlvX3JlYWQobmV0ZGV2LCBuaWMtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1RQSVNUQVRVUykgXHUwMDI2IDB4ODAwMCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTUzMjpcdCAgIChsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2VlcHJvbV9jbmZnX21kaXhdKSBcdTAwMjYgZWVwcm9tX21kaXhfZW5hYmxlZCkpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMy1cdFx0LyogZW5hYmxlL2Rpc2FibGUgTURJL01ESS1YIGF1dG8tc3dpdGNoaW5nLiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjc5PXN0YXRpYyBpbnQgZTEwMF9hc2Yoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgyLVx0cmV0dXJuIChuaWMtXHUwMDNlcGRldi1cdTAwM2VkZXZpY2UgXHUwMDNlPSAweDEwNTApIFx1MDAyNlx1MDAyNiAobmljLVx1MDAzZXBkZXYtXHUwMDNlZGV2aWNlIFx1MDAzYz0gMHgxMDU3KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjgzOlx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bZWVwcm9tX2NvbmZpZ19hc2ZdKSBcdTAwMjYgZWVwcm9tX2FzZikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4NDpcdCAgICEobGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVtlZXByb21fY29uZmlnX2FzZl0pIFx1MDAyNiBlZXByb21fZ2NsKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg1Olx0ICAgKChsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2VlcHJvbV9zbWJ1c19hZGRyXSkgXHUwMDI2IDB4RkYpICE9IDB4RkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODQzPXN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1MS1cdGlmICgobmljLVx1MDAzZW1hYyBcdTAwM2U9IG1hY184MjU1OF9EMTAxX0E0KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyOTUyOlx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bZWVwcm9tX2lkXSkgXHUwMDI2IGVlcHJvbV9pZF93b2wpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1My1cdFx0bmljLVx1MDAzZWZsYWdzIHw9IHdvbF9tYWdpYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiAyNjcKCQkJCQkJCXRob3VnaHRzOiA2ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBFRVBST00gVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgX19sZTE2IGVlcHJvbVsyNTZdO2AgYXJyYXkgaW4gdGhlIGBuaWNgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgYGFkZHJfbGVuYCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBsb29wIGJvdW5kIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRvIHRoaXMgRUVQUk9NLiBJZiBgYWRkcl9sZW5gIGJlY29tZXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW5gIGlzIGdvaW5nIHRvIHJlc3VsdCBpbiBhIHZhbHVlIG9mIGF0IGxlYXN0IDY1NTM2LCBhbmQgaXQgY2FuIGdyb3cgbXVjaCwgbXVjaCBsYXJnZXIgdGhhbiB0aGF0LiAgVGhhdCYjMzk7cyBhIG1hc3NpdmUgc2hpZnQsIGFuZCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuYCBpcyBsYXJnZSBlbm91Z2gsIHNheSBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLgoKVGhlIHN1YnNlcXVlbnQgbG9vcCB0aGVuIGdvZXMgYW5kIHdyaXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhhdCBmaXhlZC1zaXplIGBuaWMtJmd0O2VlcHJvbVsyNTZdYCBidWZmZXIsIGNyZWF0aW5nIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHdyaXRlLiAgS0FTQU4gaXMgZ29pbmcgdG8gdHJpcCBhbGwgb3ZlciB0aGlzOyBpdCYjMzk7cyBwcmFjdGljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB0aGlzIGtpbmQgb2YgdGhpbmcsIGFuZCBVQlNBTiBzaG91bGQgbmFpbCB0aGUgb3ZlcnNpemVkIHNoaWZ0LiBUaGlzIGlzIHJlYWxseSBhbiBPT0Igd3JpdGUgaXNzdWUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQ/IElmIGBhZGRyX2xlbmAgaXMgMCwgdGhlIHByb2dyYW0gY2FuIHJlYWQgYG5pYy0mZ3Q7ZWVwcm9tWzBdYC4gVGhhdCYjMzk7cyBub3QgcmVhbGx5IGFuIGlzc3VlLiAgTm8sIGBlMTAwX2VlcHJvbV9sb2FkYCBqdXN0IHB1bGxzIGRhdGEgZnJvbSB0aGUgRUVQUk9NIGhhcmR3YXJlLCBzbyB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIG1lbW9yeSB0aHJvdWdoIHRoaXMuICBJZiBgYWRkcl9sZW5gIGlzIGxhcmdlLCBpdCB3cml0ZXMgT09COyBpZiBpdCYjMzk7cyBzbWFsbCwgaXQgd3JpdGVzIGZld2VyIGVsZW1lbnRzLiAgSXQmIzM5O3MganVzdCB0aGUgYm91bmRzIGNoZWNrIHdlJiMzOTtyZSB3b3JyaWVkIGFib3V0LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBzaW1wbGU7IGl0IGFkZHMgYSBjaGVjazogYGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHJldHVybiAtRUlOVkFMO2AuIFRoaXMgbmVhdGx5IHByZXZlbnRzIHRoZSBPT0Igd3JpdGUsIGFuZCBhbHNvIG5lYXRseSBwcmV2ZW50cyB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yIG9mIGAxICZsdDsmbHQ7IGFkZHJfbGVuYCB3aGVuIGBhZGRyX2xlbiAmZ3Q7PSAzMmAuCgpTbywgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiB0aGlzIGlzICpzdHJpY3RseSogYW4gT09CIHdyaXRlIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgcHJvYmxlbS4gS0FTQU4gYW5kIFVCU0FOIGFyZSBnb2luZyB0byBoYW5kbGUgdGhpcyBiZWF1dGlmdWxseS4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkIG9yIGNvcGllZCB0byB1c2Vyc3BhY2UuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZS91bmRlZmluZWQgYmVoYXZpb3IgaW4gdGhlIGUxMDAgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoLCBgYWRkcl9sZW5gLCBhbGxvd3MgYW4gYXR0YWNrZXIgdG8gY2F1c2UgYW4gT09CIHdyaXRlIGJ5IGV4cGxvaXRpbmcgYDEgJmx0OyZsdDsgYWRkcl9sZW5gIHdoaWNoIGdyb3dzIHRvbyBsYXJnZSBmb3IgdGhlIGZpeGVkLXNpemUgYnVmZmVyLiBJdCYjMzk7cyBhIGhlYXAgT09CLiBLQVNBTiBhbmQgVUJTQU4gd2lsbCByZWxpYWJseSBkZXRlY3QgdGhpcy4gVGhpcyBpcyAqbm90KiBhbiBpbmZvcm1hdGlvbiBsZWFrLCBzbyBLTVNBTiBpcyB1bm5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXG5cbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcdTAwM2U9IDMyYCkuIFRoaXMgdmFsdWUgaXMgdGhlbiB1c2VkIGFzIHRoZSBsb29wIGJvdW5kIHRvIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGFuZCB3cml0ZSBpbnRvIHRoZSBmaXhlZC1zaXplIGBuaWMtXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5LCBjYXVzaW5nIGEgbWFzc2l2ZSBvdXQtb2YtYm91bmRzIHdyaXRlIG9uIHRoZSBoZWFwIChzaW5jZSBgc3RydWN0IG5pY2AgaXMgYWxsb2NhdGVkIHZpYSBgbmV0ZGV2X3ByaXZgKS5cblxuT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9ycyAobGlrZSBvdmVyc2l6ZWQgc2hpZnRzKSBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIFVCU0FOIChVbmRlZmluZWQgQmVoYXZpb3IgU2FuaXRpemVyKSwgd2hpY2ggYXJlIGFscmVhZHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBmaXggYW55IGlzc3VlcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6MjQuODUzMTMwNzg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMjA4OTkwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwX3Byb2JlXCIsXG4gICAgXCJlMTAwX2RpYWdfdGVzdFwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxcblxcbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI0Ljg1MzEzNjI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MTE0NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzE3MTJiNTYzMzM2NDM3NWRkMjRjNTRmMmE4NGE5OTAxNTk4YWYyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xcbmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuIFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIFxcdFxcdGN0cmwgPSBpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiBcXHRcXHRpZiAoIShjdHJsIFxcdTAwMjYgZWVkbykgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNlIDE2KSB7XFxuLVxcdFxcdFxcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcXG4rXFx0XFx0XFx0dTE2IGxlbiA9IGkgLSAxNjtcXG4rXFxuK1xcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuK1xcdFxcdFxcdFxcdCphZGRyX2xlbiA9IDA7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gXFx0XFx0XFx0aSA9IDE3O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC03NjUsNyArNzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuIFxcbiBcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiBcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4tXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbitcXG4rXFx0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcXHUwMDNlPSAxNikge1xcbitcXHRcXHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVxcdTAwM2VuZXRkZXYsXFxuK1xcdFxcdFxcdFxcXCJJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0YWRkcl9sZW4pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxVSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG4gXFxuIFxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuIFxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI1LjM4NTI5MjI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMzNjI3MzU5NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwX3Byb2JlXCIsXG4gICAgXCJlMTAwX2RpYWdfdGVzdFwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5pbmRleCAyOTk2MDc2MmU2NGE4Li4xZGU1Y2Q0MWVhMGNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbkBAIC03NDQsNyArNzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuIFx0XHQgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqL1xuIFx0XHRjdHJsID0gaW9yZWFkOChcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiBcdFx0aWYgKCEoY3RybCBcdTAwMjYgZWVkbykgXHUwMDI2XHUwMDI2IGkgXHUwMDNlIDE2KSB7XG4tXHRcdFx0KmFkZHJfbGVuIC09IChpIC0gMTYpO1xuK1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4rXG4rXHRcdFx0aWYgKGxlbiBcdTAwM2UgKmFkZHJfbGVuKVxuK1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHQqYWRkcl9sZW4gLT0gbGVuO1xuIFx0XHRcdGkgPSAxNztcbiBcdFx0fVxuIFxuQEAgLTc2NSw3ICs3NzAsMTUgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuLVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuK1xuK1x0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2U9IDE2KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdFwiSW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cIixcbitcdFx0XHRhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bmljLVx1MDAzZWVlcHJvbV93YyA9IDFVIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiBcbiBcdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xuIFx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI1LjM4NTI5NjIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjkyMTc5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZTEwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNgLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGJvdW5kcyBjaGVja2luZywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIHByb3RlY3RpbmcgYWdhaW5zdCBpbnZhbGlkIGBhZGRyX2xlbmAgdmFsdWVzIHdpdGhpbiB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgZnVuY3Rpb25zLlxuXG5JIGNhbiBzZWUgdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcy4gVGhlIGZpcnN0IHNuaXBwZXQgaW50cm9kdWNlcyBhIGNoZWNrIHdpdGhpbiBgZTEwMF9lZXByb21fcmVhZGAgd2hlcmUgaXQgY2FsY3VsYXRlcyBhIGxlbmd0aCAoYGxlbmApIGFuZCBjbGFtcHMgdGhlIGAqYWRkcl9sZW5gIHRvIHplcm8gaWYgYGxlbmAgZXhjZWVkcyBpdHMgdmFsdWUsIG90aGVyd2lzZSBzdWJ0cmFjdGluZyBgbGVuYC4gVGhpcyBpcyBhIGNsYXNzaWMgYm91bmRzIHByb3RlY3Rpb24sIGVuc3VyaW5nIGEgd3JpdGUgZG9lc24ndCBleGNlZWQgYWxsb2NhdGVkIHNwYWNlLiBUaGUgc2Vjb25kIHNuaXBwZXQgd2l0aGluIGBlMTAwX2VlcHJvbV9sb2FkYCBpbmNsdWRlcyBhIG1vcmUgcmlnaWQgY2hlY2suIElmIGBhZGRyX2xlbmAgaXMgemVybyBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTYsIGl0IGZsYWdzIGFuIGVycm9yIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbm90aGVyIHNhZmVndWFyZCBhZ2FpbnN0IG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlbGV2YW50KiBpbiBtb2Rlcm4gZW52aXJvbm1lbnRzPyBUaGUgYGUxMDBgIGRyaXZlciBpcyBmb3IgdGhlIEludGVsIFBSTy8xMDAgRXRoZXJuZXQgY29udHJvbGxlcnMuIEdpdmVuIHRoYXQgdGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgSW50ZWwgUFJPLzEwMCBzZXJpZXMsIEkgd29uZGVyIGlmIHRoaXMgZHJpdmVyIGlzIHN0aWxsIHJlYWNoYWJsZSBpbiBtb2Rlcm4gc3lzdGVtcy4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCBpdCdzIGxpa2VseSBhIGxlZ2FjeSBkcml2ZXIuXG5cbkEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGk4MjU1eCAoUFJPLzEwMCkgZmFtaWx5LCBzcGVjaWZpY2FsbHkgdGhlIGBpODI1NTllcmAgYW5kIGBpODI1NTdiYCAoYW5kIGk4MjU1OWMpLCB2aWEgYGh3L25ldC9lZXBybzEwMC5jYC4gVGhlcmVmb3JlLCB0aGUgYGUxMDBgIGRyaXZlciAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBtYWtlcyB0aGUgcGF0Y2gncyBleGlzdGVuY2UgbWFrZSBzZW5zZTsgaWYgaXQncyBiZWluZyBlbXVsYXRlZCwgYW55IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBhcmUgc3RpbGwgcmVsZXZhbnQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIGBlMTAwYDogSSdsbCBmaW5kIGl0IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYC4gWWVzLCBgY29uZmlnIEUxMDBgIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBgUENJYCwgYXMgZXhwZWN0ZWQuIFNvIGl0J3MgY29uZmlndXJhYmxlLlxuXG5Ob3csIEkgd2FudCB0byBjb25maXJtIHRoZSBmdW5jdGlvbiBjYWxscy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgLiBgZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgd2hpY2ggYWxpZ25zIHdpdGggaG93IGl0IGZpbmRzIHRoZSBFRVBST00uIGBlMTAwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgYnkgYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBwb3NzaWJseSBieSBldGh0b29sIG9wZXJhdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgdXNhZ2Ugd2l0aGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGNvZGUgcGF0aHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoxOTozNi42MTQ1MTc5MDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk0NzU3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fbG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTcyMT1zdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIwPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjYyOC1cXHRkYXRhWzBdID0gIW1paV9saW5rX29rKFxcdTAwMjZuaWMtXFx1MDAzZW1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI2Mjk6XFx0ZGF0YVsxXSA9IGUxMDBfZWVwcm9tX2xvYWQobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjYzMC1cXHRpZiAodGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhfVEVTVF9GTF9PRkZMSU5FKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjg0Mz1zdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjkzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjkzNDpcXHRpZiAoKGVyciA9IGUxMDBfZWVwcm9tX2xvYWQobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI5MzUtXFx0XFx0Z290byBlcnJfb3V0X2ZyZWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjM2LjcwMzk5ODUzN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjIyNzE1MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZTEwMCBEcml2ZXIncyBFRVBST00gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGUxMDBgIGRyaXZlciBjb2RlLiBJIHNlZSB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGNhbGxlZCBkdXJpbmcgYm90aCB0aGUgaW5pdGlhbCBQQ0kgcHJvYmluZyBwaGFzZSDigJMgdGhyb3VnaCBgZTEwMF9wcm9iZWAg4oCTIGFuZCBhbHNvIGR1cmluZyBkaWFnbm9zdGljIHRlc3RpbmcgdXNpbmcgYGUxMDBfZGlhZ190ZXN0YC4gYGUxMDBfcHJvYmVgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXRlY3RpbmcgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIE5hdHVyYWxseSwgbG9hZGluZyB0aGUgRUVQUk9NIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcCB0aGVyZS5cblxuTm93LCBgZTEwMF9lZXByb21fbG9hZGAgaXRzZWxmIHJlbGllcyBvbiBgZTEwMF9lZXByb21fcmVhZGAuIEFuZCBpdCBsb29rcyBsaWtlIGBlMTAwX2dldF9lZXByb21gIGFsc28gdXNlcyBgZTEwMF9lZXByb21fcmVhZGAuIFRoZXJlZm9yZSwgaXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBlMTAwX2VlcHJvbV9yZWFkYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBFRVBST00gcmVhZCBvcGVyYXRpb25zIGluIHRoaXMgZHJpdmVyLiBMZXQncyBzZWUgd2hvJ3MgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24uLi4gdGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoxOTo0OS4zMjY3MTY4OTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyODM3NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTY4Mz1zdGF0aWMgdm9pZCBlMTAwX2VlcHJvbV93cml0ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBhZGRyX2xlbiwgdTE2IGFkZHIsIF9fbGUxNiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTc2Nz1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cXHRcXHRpZiAoYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA1LVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6NDkuNDE2MDA3NzkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2NzM4NDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEUxMDAgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFyZSBzdGF0aWMgZnVuY3Rpb25zIOKAkyBpbnRlcm5hbCB0byB0aGUgZHJpdmVyLCBsaWtlbHkgZm9yIGhhbmRsaW5nIEVFUFJPTSBkYXRhLiBgZTEwMF9wcm9iZWAsIHRoYXQncyBvdXIgUENJIHByb2JlIGZ1bmN0aW9uLCB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgZGV2aWNlIGlzIGRldGVjdGVkLCBzbyB0aGF0J3MgY3J1Y2lhbC4gYGUxMDBfZGlhZ190ZXN0YCBpcyB0aGUgZXRodG9vbCBzZWxmLXRlc3QgZnVuY3Rpb247IHVzZWZ1bCBmb3IgZGlhZ25vc3RpY3MsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaXMgdGllZCB0byBgZTEwMF9zZXRfZWVwcm9tYC5cblxuR2l2ZW4gdGhhdCBgZTEwMF9wcm9iZWAgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciBhbmQgd2hlcmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBiZWdpbnMuIFNvLCBgZTEwMF9wcm9iZWAgYW5kIGBlMTAwX2RpYWdfdGVzdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdy4gV2FpdCwgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIGV0aHRvb2wgb3BlcmF0aW9ucywgc28gbGV0IG1lIHF1aWNrbHkgZ28gb3ZlciBgZTEwMF9nZXRfZWVwcm9tYCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6NTUuNTgzMzk1MjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzI1MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDBfZ2V0X2VlcHJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MzI9c3RhdGljIHUzMiBlMTAwX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjUzODpzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0NC0jZGVmaW5lIEUxMDBfRUVQUk9NX01BR0lDXFx0MHgxMjM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDU6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0Ni1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NTgtXFx0LmdldF9saW5rXFx0XFx0PSBlMTAwX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzU5OlxcdC5nZXRfZWVwcm9tX2xlblxcdFxcdD0gZTEwMF9nZXRfZWVwcm9tX2xlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MDpcXHQuZ2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9nZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYxLVxcdC5zZXRfZWVwcm9tXFx0XFx0PSBlMTAwX3NldF9lZXByb20sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjU1LjY1MDEyNDQyOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzU5MTc4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGBlMTAwX2dldF9lZXByb21gLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuIEZpcnN0LCBgZTEwMF9wcm9iZWAgaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB1c3VhbGx5IHN5emthbGxlciB3b3VsZCBoaXQgdGhlc2Ugd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9wcm9iZWAsIGJ1dCB0aGVyZSBpc24ndCBhIGRlZGljYXRlZCBvbmUgZm9yIGUxMDAuIEhtbSwgYnV0IHNpbmNlIFFFTVUgZW11bGF0ZXMgZTEwMCwgYGUxMDBfcHJvYmVgICpzaG91bGQqIGJlIHJlYWNoYWJsZSBvbiBib290IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCwgb3IgdmlhIFBDSSBob3RwbHVnLiBZZXAsIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5Ob3csIHdoYXQgYWJvdXQgYGUxMDBfZGlhZ190ZXN0YD8gQ2FuIEkgcmVhY2ggdGhhdD8gRXRodG9vbCEgVGhhdCdzIGhvdy4gU2FtZSBnb2VzIGZvciBgZTEwMF9nZXRfZWVwcm9tYCwgZXRodG9vbCB3aWxsIGRvIHRoZSB0cmljay4gQW5kIGBlMTAwX3NldF9lZXByb21gPyBZZXAsIGV0aHRvb2wgaXMgdGhlIGtleSB0aGVyZSB0b28uXG5cbk9rYXksIG5leHQgSSdsbCBjaGVjayBpZiBgZTEwMF9zZXRfZWVwcm9tYCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6MDEuMzI2MDQ0OTAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM3OTQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9zZXRfZWVwcm9tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0NT1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTY6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1Ny1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjAtXFx0LmdldF9lZXByb21cXHRcXHQ9IGUxMDBfZ2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MTpcXHQuc2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9zZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYyLVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjAxLjQzOTg0NTIwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDk3MzUyMzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBlMTAwX3NldF9lZXByb21gIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHB1bGwgdXAgdGhlIGNvZGUgYW5kIHRha2UgYSBsb29rLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoZSB3cml0ZSBjeWNsZXMgYW5kIGVycm9yIGNoZWNraW5nLiBJIHZhZ3VlbHkgcmVtZW1iZXIgcG90ZW50aWFsIGlzc3VlcyB3aXRoIEVFUFJPTSB3cml0ZXMgYmVpbmcgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgdm9sdGFnZSBmbHVjdHVhdGlvbnMsIHNvIEknbGwgYmUgbG9va2luZyBmb3Igc2FmZWd1YXJkcyBhZ2FpbnN0IHRob3NlIHByb2JsZW1zLlxuXG5MZXQncyBzZWXigKYgcmlnaHQsIHRoZSB0eXBpY2FsIHNlcXVlbmNlIHByb2JhYmx5IGludm9sdmVzIGVuYWJsaW5nIHRoZSBFRVBST00gaW50ZXJmYWNlLCBhZGRyZXNzaW5nIHRoZSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24sIHNlbmRpbmcgdGhlIGRhdGEsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoZSB3cml0ZSB0byBjb21wbGV0ZSwgcG9zc2libHkgd2l0aCBzb21lIGZvcm0gb2YgYnVzeS13YWl0IG9yIGludGVycnVwdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGV5J3JlIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcyBoZXJlLiBUaGluZ3MgbGlrZSBhdG9taWNpdHksIHdyaXRlIHByb3RlY3Rpb24gZHVyaW5nIHRoZSBwcm9jZXNzLCBhbmQgbWFraW5nIHN1cmUgdGhlIHdyaXRlIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBhcmUgdG9wIG9mIG1pbmQuXG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgYml0IHR3aWRkbGluZyBvciByZWdpc3RlciBtYW5pcHVsYXRpb24gaW52b2x2ZWQuIFRob3NlIGFyZSB1c3VhbGx5IHdoZXJlIHRoZSBzdWJ0bGUgYnVncyBoaWRlLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGNvbnRleHRzLiBJZiBpdCdzIG5vdCBwcm9wZXJseSBwcm90ZWN0ZWQgd2l0aCBtdXRleGVzIG9yIHNwaW5sb2NrcywgaXQgY291bGQgYmUgYSB0aWNraW5nIHRpbWUgYm9tYi5cblxuRmluYWxseSwgdGhlIGVycm9yIGhhbmRsaW5nLiBJcyB0aGVyZSBwcm9wZXIgdmVyaWZpY2F0aW9uIGFmdGVyIHRoZSB3cml0ZSB0byBjb25maXJtIHRoZSBkYXRhIGludGVncml0eT8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGlmIHRoZSB3cml0ZSBmYWlscyBpbml0aWFsbHk/IEFuZCBhcmUgYW55IHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLCBsaWtlIGEgcmVhZC1vbmx5IG1lbW9yeSwgYWNjb3VudGVkIGZvcj8gVGltZSB0byBzZWUgaWYgdGhlIGltcGxlbWVudGF0aW9uIGlzIHJvYnVzdCwgYW5kIGlmIGl0J3Mgbm90LCB3aGVyZSBhbmQgaG93IEkgY2FuIGhlbHAgaW1wcm92ZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjE2LjQxMzM3MzI5N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NTYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1NTY6XFx0c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4yNTU3OlxcdFxcdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuMjU1ODpcXHR7XFxuMjU1OTpcXHRcXHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjI1NjA6XFx0XFxuMjU2MTpcXHRcXHRpZiAoZWVwcm9tLVxcdTAwM2VtYWdpYyAhPSBFMTAwX0VFUFJPTV9NQUdJQylcXG4yNTYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRtZW1jcHkoXFx1MDAyNigodTggKiluaWMtXFx1MDAzZWVlcHJvbSlbZWVwcm9tLVxcdTAwM2VvZmZzZXRdLCBieXRlcywgZWVwcm9tLVxcdTAwM2VsZW4pO1xcbjI1NjU6XFx0XFxuMjU2NjpcXHRcXHRyZXR1cm4gZTEwMF9lZXByb21fc2F2ZShuaWMsIGVlcHJvbS1cXHUwMDNlb2Zmc2V0IFxcdTAwM2VcXHUwMDNlIDEsXFxuMjU2NzpcXHRcXHRcXHQoZWVwcm9tLVxcdTAwM2VsZW4gXFx1MDAzZVxcdTAwM2UgMSkgKyAxKTtcXG4yNTY4OlxcdH1cXG4yNTY5OlxcdFxcbjI1NzA6XFx0c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuMjU3MTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxcbjI1NzI6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrZXJuZWxfZXRodG9vbF9yaW5ncGFyYW0gKmtlcm5lbF9yaW5nLFxcbjI1NzM6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4yNTc0OlxcdHtcXG4yNTc1OlxcdFxcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjE2LjQxMzU3NTgyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA2NDY0NjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgZTEwMCBFRVBST00gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGUxMDBfc2V0X2VlcHJvbWAgaXMgZGVmaW5pdGVseSBjYWxsaW5nIGBlMTAwX2VlcHJvbV9zYXZlYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kLCBvZiBjb3Vyc2UsIGBlMTAwX2VlcHJvbV9zYXZlYCBzdWJzZXF1ZW50bHkgdXNlcyB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGZ1bmN0aW9uLiBSaWdodCwgc28gZmFyLCBzbyBnb29kLCB0aGlzIGlzIHRoZSBleHBlY3RlZCBkYXRhIGZsb3cuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb24uIExldCdzIGRpZyBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbi4gSXQgd2lsbCBiZSB1c2VmdWwgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSByZWFkIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMDoyOC40NzgyMjY4NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MDE6XFx0c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuIDgwMjpcXHR7XFxuIDgwMzpcXHRcXHR1MTYgYWRkciwgYWRkcl9sZW4gPSA4LCBjaGVja3N1bSA9IDA7XFxuIDgwNDpcXHRcXG4gODA1OlxcdFxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuIDgwNjpcXHRcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4gODA3OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG4gODA4OlxcdFxcbiA4MDk6XFx0XFx0aWYgKHN0YXJ0ICsgY291bnQgXFx1MDAzZT0gbmljLVxcdTAwM2VlZXByb21fd2MpXFxuIDgxMDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODExOlxcdFxcbiA4MTI6XFx0XFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXFx1MDAzYyBzdGFydCArIGNvdW50OyBhZGRyKyspXFxuIDgxMzpcXHRcXHRcXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBhZGRyLCBuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSk7XFxuIDgxNDpcXHRcXG4gODE1OlxcdFxcdC8qIFRoZSBjaGVja3N1bSwgc3RvcmVkIGluIHRoZSBsYXN0IHdvcmQsIGlzIGNhbGN1bGF0ZWQgc3VjaCB0aGF0XFxuIDgxNjpcXHRcXHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cXG4gODE3OlxcdFxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHIrKylcXG4gODE4OlxcdFxcdFxcdGNoZWNrc3VtICs9IGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG4gODE5OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0gPSBjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSk7XFxuIDgyMDpcXHRcXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjI4LjQ3ODQzNzc5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjY4NTk0NTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIEUxMDAgRUVQUk9NIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgRTEwMCBFRVBST00gY29kZSwgYW5kIEkndmUgaGl0IGEgcG90ZW50aWFsIGlzc3VlLiBUaGUgYGUxMDBfZWVwcm9tX3NhdmVgIGZ1bmN0aW9uLCB1bmxpa2UgYGUxMDBfZWVwcm9tX2xvYWRgLCBzZWVtcyB0byBiZSBtaXNzaW5nIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgb24gYGFkZHJfbGVuYC4gSXQgZG9lcyB0aGlzOiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO2AuIE5vdywgYGFkZHJfbGVuYCBpcyBhIGB1MTZgLCByaWdodD8gU28sIGlmIGBhZGRyX2xlbmAgaXMgMTYsIHdoaWNoIGlzIHBvc3NpYmxlIGdpdmVuIHRoZSBkYXRhIHR5cGUsIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgaXMgZ29pbmcgdG8gYmUgYDEgXHUwMDNjXHUwMDNjIDE2YCwgd2hpY2ggZXF1YWxzIDY1NTM2LiAgVGhlIHByb2JsZW0gaXMgYG5pYy1cdTAwM2VlZXByb21fd2NgIGlzIGFsc28gYSBgdTE2YCwgc28gdGhlIHJlc3VsdCB3aWxsIGdldCB0cnVuY2F0ZWQgdG8gMCwgd2hpY2ggaXNuJ3QgbmVjZXNzYXJpbHkgYSAqY3Jhc2gqLCBidXQgaXQncyBjbGVhcmx5IHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgY291bGQgbGVhZCB0byBjb3JydXB0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIExvb2tpbmcgYmFjayBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2VzIHdlcmUgb25seSBhcHBsaWVkIHRvIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3JlYWRgLlxuXG5MZXQncyBmb2N1cyBvbiB0aGF0IHBhdGNoIHNuaXBwZXQgZnJvbSBgZTEwMF9lZXByb21fcmVhZGA6XG5gYGBjXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4rXHRcdFx0dTE2IGxlbiA9IGkgLSAxNjtcbitcbitcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4rXHRcdFx0XHQqYWRkcl9sZW4gPSAwO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG5gYGBcblRoYXQncyBpbiBgZTEwMF9lZXByb21fcmVhZGAuIEdvb2QuIFNpbmNlIGBlMTAwX2VlcHJvbV9zYXZlYCBjYWxscyBgZTEwMF9lZXByb21fcmVhZGAsIHRoYXQgZml4ICp3aWxsKiBiZW5lZml0IGBlMTAwX2VlcHJvbV9zYXZlYC4gVGhhdCdzIGEgcmVsaWVmLCBpdCdzIGEgYml0IG1vcmUgZWxlZ2FudCB0aGFuIHRoZSBjaGVjayBJIHRob3VnaHQgd2FzIG1pc3NpbmcsIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgcHJvcGVybHkgaGFuZGxlZCBpbiBvdGhlciBjYWxsZXJzLlxuXG5TbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmU6IGBlMTAwX3Byb2JlYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX2xvYWRgKSwgYGUxMDBfZGlhZ190ZXN0YCAoYWxzbyBjYWxscyBgZTEwMF9lZXByb21fbG9hZGApLCBgZTEwMF9nZXRfZWVwcm9tYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX3JlYWRgKSwgYW5kIGBlMTAwX3NldF9lZXByb21gICh3aGljaCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAgLVx1MDAzZSBgZTEwMF9lZXByb21fcmVhZGApLlxuXG5Ob3csIGBlMTAwX3Byb2JlYCBpcyBpbnRlcmVzdGluZy4gSXQncyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCBydW5zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFN5emthbGxlciBjYW4gcHJvYmFibHkgdHJpZ2dlciBpdCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLiAgVGhlIG90aGVycywgYGUxMDBfZGlhZ190ZXN0YCwgYGUxMDBfZ2V0X2VlcHJvbWAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCwgYXJlIGFsbCBldGh0b29sIG9wZXJhdGlvbnMsIHNvIHRoZXkncmUgdHJpZ2dlcmVkIHZpYSBpb2N0bHMgb24gdGhlIG5ldHdvcmsgZGV2aWNlLlxuXG5JJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGBlMTAwX2dldF9lZXByb21gIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBpbiBgZTEwMC5jYCBub3cgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gd2F0Y2ggZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTEwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6NDUuMTY0Mzg1ODYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjU0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjU0NTpcXHRzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbjI1NDY6XFx0XFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcXG4yNTQ3OlxcdHtcXG4yNTQ4OlxcdFxcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMjU0OTpcXHRcXG4yNTUwOlxcdFxcdGVlcHJvbS1cXHUwMDNlbWFnaWMgPSBFMTAwX0VFUFJPTV9NQUdJQztcXG4yNTUxOlxcdFxcdG1lbWNweShieXRlcywgXFx1MDAyNigodTggKiluaWMtXFx1MDAzZWVlcHJvbSlbZWVwcm9tLVxcdTAwM2VvZmZzZXRdLCBlZXByb20tXFx1MDAzZWxlbik7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHJldHVybiAwO1xcbjI1NTQ6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMDo0NS4xNjQ1NDYwNjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM0MDQ4NDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVFUFJPTSBJbnRlcmFjdGlvbiBpbiB0aGUgZTEwMCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMF9nZXRfZWVwcm9tYCB3YXMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gcmVhZGluZyBmcm9tIHRoZSBFRVBST00uIEJ1dCwgd2FpdCwgdGhhdCdzIG5vdCByaWdodC4gSXQganVzdCBjb3BpZXMgZGF0YSBmcm9tIGBuaWMtXHUwMDNlZWVwcm9tYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYGUxMDBfZWVwcm9tX2xvYWRgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLiAqVGhhdCdzKiB0aGUgb25lIHRoYXQgYWN0dWFsbHkgcmVhZHMgdGhlIEVFUFJPTSBkYXRhIGludG8gYG5pYy1cdTAwM2VlZXByb21gLiBTbywgdGhhdCBtZWFucyBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIGFuZCBkaWFnbm9zdGljIHRlc3QgcGhhc2VzLlxuXG5BbmQsIGxvb2tpbmcgYXQgYGUxMDBfc2V0X2VlcHJvbWAsIHRoYXQncyB0aGUgZnVuY3Rpb24gdG8gc2F2ZSB0aGUgRUVQUk9NIGNvbnRlbnRzLiBUaGlzIG9uZSBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAsIHdoaWNoIHRoZW4gY2FsbHMgdGhlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX3dyaXRlYC5cblxuVGhlcmVmb3JlLCBpZiBJIHdlcmUgdG8gZm9jdXMgb24gdGhlIGtleSBlbnRyeXBvaW50cywgaXQgd291bGQgYmUgdGhlc2UgZnVuY3Rpb25zOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAgYW5kIGBlMTAwX3NldF9lZXByb21gLlxuXG5Ob3csIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgYSBzdGFuZGFyZCBQQ0kgcHJvYmUgZnVuY3Rpb24uIFVzdWFsbHksIEkgd291bGRuJ3QgYm90aGVyIGxpc3RpbmcgdGhlc2UsIGJlY2F1c2UgdGhleSdyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIGJ5IHRoZSBzeXN0ZW0gd2hlbiB0aGUgZGV2aWNlIGlzIGFkZGVkLCBhbmQgU3l6a2FsbGVyJ3MgUENJIGluamVjdGlvbiB3aWxsIHRyaWdnZXIgdGhlbS4gSG93ZXZlciwgaXQncyBub3Qgc3RyaWN0bHkgaW5jb3JyZWN0IHRvIGxpc3QgaXQsIHNvIEknbGwgbGVhdmUgaXQgaW4gZm9yIG5vdy5cblxuSG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQ3JhcCwgYGUxMDBfcHJvYmVgIGlzIHN0YXRpYy4gQW5kIG5vdyBJIHJlYWxpemUsIGFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyFcblxuYGBgY1xuc3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuc3RhdGljIHZvaWQgZTEwMF9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfdGVzdCAqdGVzdCwgdTY0ICpkYXRhKVxuc3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbmBgYFxuXG5UaGUgYWRkcmVzc2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBtYXkgbm90IGJlIGV4cG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGBzdGF0aWNgIGtleXdvcmQsIGJ1dCB0aGV5IGFyZSBzdGlsbCB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aGUgYHBjaV9kcml2ZXJgIGFuZCBgZXRodG9vbF9vcHNgIHN0cnVjdHVyZXMuIFNvIFN5emthbGxlciBjYW4gc3RpbGwgc3ltYm9saXplIHRoZW0uIEkga25vdyBmb3Igc3VyZSB0aGV5J3JlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSdyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE0MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjU0LjUwNTAzMzQ3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNTE4ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3Nz1NT0RVTEVfUEFSTV9ERVNDKHVzZV9pbywgXFxcIkZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZTEwMF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYtXFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZTEwMF9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDg6c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjE1OnN0YXRpYyB2b2lkIGUxMDBfZW5hYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjIwLVxcdGlvd3JpdGU4KGlycV9tYXNrX25vbmUsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYyMTpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyMi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZuaWMtXFx1MDAzZWNtZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MjU6c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMwLVxcdGlvd3JpdGU4KGlycV9tYXNrX2FsbCwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VzY2IuY21kX2hpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjMxOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMyLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm5pYy1cXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYzNTpzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzktXFx0aW93cml0ZTMyKHNlbGVjdGl2ZV9yZXNldCwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2Vwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQwOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDIwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0My1cXHRpb3dyaXRlMzIoc29mdHdhcmVfcmVzZXQsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY0NDpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ2LVxcdC8qIE1hc2sgb2ZmIG91ciBpbnRlcnJ1cHQgbGluZSAtIGl0J3MgdW5tYXNrZWQgYWZ0ZXIgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQ3OlxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NTA6c3RhdGljIGludCBlMTAwX3NlbGZfdGVzdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjYwLVxcdGlvd3JpdGUzMihzZWxmdGVzdCB8IGRtYV9hZGRyLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZXBvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjE6XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjItXFx0LyogV2FpdCAxMCBtc2VjIGZvciBzZWxmLXRlc3QgdG8gY29tcGxldGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjUtXFx0LyogSW50ZXJydXB0cyBhcmUgZW5hYmxlZCBhZnRlciBzZWxmLXRlc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjY2OlxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjgzOnN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjk5LVxcdFxcdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzAwOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA1LVxcdFxcdFxcdGlvd3JpdGU4KGN0cmwsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MDY6XFx0XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA4LVxcdFxcdFxcdGlvd3JpdGU4KGN0cmwgfCBlZXNrLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzA5OlxcdFxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcxNS1cXHRcXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzE2OlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczMS1cXHRpb3dyaXRlOChlZWNzIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjczMjpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczNy1cXHRcXHRpb3dyaXRlOChjdHJsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzM4OlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc0MC1cXHRcXHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc0MTpcXHRcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2MC1cXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzYxOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY2LS8qIExvYWQgZW50aXJlIEVFUFJPTSBpbWFnZSBpbnRvIGRyaXZlciBjYWNoZSBhbmQgdmFsaWRhdGUgY2hlY2tzdW0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzY3OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODQ6XFx0XFx0bmljLVxcdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg1LVxcdFxcdGlmIChhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMC0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwMTpzdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODA2OlxcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDctXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxMi1cXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjIHN0YXJ0ICsgY291bnQ7IGFkZHIrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODEzOlxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxOS1cXHRuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MjA6XFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MjEtXFx0XFx0bmljLVxcdTAwM2VlZXByb21bbmljLVxcdTAwM2VlZXByb21fd2MgLSAxXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODI3LSNkZWZpbmUgRTEwMF9XQUlUX1NDQl9GQVNUIDIwICAgICAgIC8qIGRlbGF5IGxpa2UgdGhlIG9sZCBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyODpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NTk6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04NjAtXFx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODkyLVxcdHdoaWxlIChuaWMtXFx1MDAzZWNiX3RvX3NlbmQgIT0gbmljLVxcdTAwM2VjYl90b191c2UpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODkzOlxcdFxcdGlmICh1bmxpa2VseShlMTAwX2V4ZWNfY21kKG5pYywgbmljLVxcdTAwM2VjdWNfY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTQtXFx0XFx0XFx0bmljLVxcdTAwM2VjYl90b19zZW5kLVxcdTAwM2VkbWFfYWRkcikpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTAwMT1zdGF0aWMgdTE2IG1kaW9fY3RybF9waHlfbWlpX2VtdWxhdGVkKHN0cnVjdCBuaWMgKm5pYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA0MzpzdGF0aWMgaW5saW5lIGludCBlMTAwX3BoeV9zdXBwb3J0c19taWkoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMDUxOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RlZmF1bHRzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NDpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMC1cXHRjb25maWctXFx1MDAzZXR4X3VuZGVycnVuX3JldHJ5ID0gMHgzO1xcdC8qICMgb2YgdW5kZXJydW4gcmV0cmllcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMTAxOlxcdGlmIChlMTAwX3BoeV9zdXBwb3J0c19taWkobmljKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMi1cXHRcXHRjb25maWctXFx1MDAzZW1paV9tb2RlID0gMTsgICAgICAgICAgIC8qIDE9TUlJIG1vZGUsIDA9aTgyNTAzIG1vZGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMjMzLS8qIEluaXRpYWxpemUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTIzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzIyOnN0YXRpYyBpbnQgZTEwMF9zZXR1cF91Y29kZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjg6XFx0LyogSXQncyBub3QgYSByZWFsIHNrYjsgd2UganVzdCBhYnVzZWQgdGhlIGZhY3QgdGhhdCBlMTAwX2V4ZWNfY2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyOS1cXHQgICB3aWxsIHBhc3MgaXQgdGhyb3VnaCB0byBoZXJlLi4uICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM1MjpzdGF0aWMgaW5saW5lIGludCBlMTAwX2xvYWRfdWNvZGVfd2FpdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzNTg6XFx0ZncgPSBlMTAwX3JlcXVlc3RfZmlybXdhcmUobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1OS1cXHQvKiBJZiBpdCdzIE5VTEwsIHRoZW4gbm8gdWNvZGUgaXMgcmVxdWlyZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzYzOlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NiKG5pYywgKHZvaWQgKilmdywgZTEwMF9zZXR1cF91Y29kZSkpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzY0LVxcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzcwLVxcdC8qIHdhaXQgZm9yIGNvbXBsZXRpb24gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM3MTpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNzItXFx0dWRlbGF5KDEwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzkyOnN0YXRpYyBpbnQgZTEwMF9zZXR1cF9pYWFkZHIoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkzLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMDpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0MDg6c3RhdGljIGludCBlMTAwX3BoeV9jaGVja193aXRob3V0X21paShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NDctI2RlZmluZSBOU0NfQ09OR19UWFJFQURZXFx0MHgwNDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NDg6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ2Ny1cXHRcXHQgKiBsb29rdXAgb2YgRUVQUk9NIHZhbHVlcyB3aGljaCBtYXkgZWFzaWx5IGJlIHVucmVsaWFibGUuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0Njg6XFx0XFx0aWYgKGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKG5pYykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NjktXFx0XFx0XFx0cmV0dXJuIDA7IC8qIHNpbXBseSByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0MTpzdGF0aWMgaW50IGUxMDBfaHdfaW5pdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDU6XFx0ZTEwMF9od19yZXNldChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQ3OlxcdG5ldGlmX2VycihuaWMsIGh3LCBuaWMtXFx1MDAzZW5ldGRldiwgXFxcImUxMDBfaHdfaW5pdFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDg6XFx0aWYgKChlcnIgPSBlMTAwX3NlbGZfdGVzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0OS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTUxOlxcdGlmICgoZXJyID0gZTEwMF9waHlfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1Mi1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTUzOlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIGN1Y19sb2FkX2Jhc2UsIDApKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1NC1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU1OlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIHJ1Y19sb2FkX2Jhc2UsIDApKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1Ni1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU3OlxcdGlmICgoZXJyID0gZTEwMF9sb2FkX3Vjb2RlX3dhaXQobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTgtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1OTpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfY29uZmlndXJlKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjAtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MTpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfc2V0dXBfaWFhZGRyKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjItXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MzpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTY0LVxcdFxcdG5pYy1cXHUwMDNlZG1hX2FkZHIgKyBvZmZzZXRvZihzdHJ1Y3QgbWVtLCBzdGF0cykpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2NS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTY2OlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIGN1Y19kdW1wX3Jlc2V0LCAwKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjctXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2OTpcXHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU3NDpzdGF0aWMgaW50IGUxMDBfbXVsdGkoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTkyOnN0YXRpYyB2b2lkIGUxMDBfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1OTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTE6XFx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9jb25maWd1cmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjEyOlxcdGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfbXVsdGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTYxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTYxNTpzdGF0aWMgdm9pZCBlMTAwX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2NzI6XFx0aWYgKGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9yZXNldCwgMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzMtXFx0XFx0bmV0aWZfcHJpbnRrKG5pYywgdHhfZXJyLCBLRVJOX0RFQlVHLCBuaWMtXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjc3OnN0YXRpYyB2b2lkIGUxMDBfYWRqdXN0X2FkYXB0aXZlX2lmcyhzdHJ1Y3QgbmljICpuaWMsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5NC1cXHRcXHRpZiAobmljLVxcdTAwM2VhZGFwdGl2ZV9pZnMgIT0gcHJldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY5NTpcXHRcXHRcXHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2OTk6c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcyOS1cXHRpb3dyaXRlOChpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSkgfCBpcnFfc3dfZ2VuLFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3MzA6XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzMxLVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3MzM6XFx0ZTEwMF91cGRhdGVfc3RhdHMobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczNDpcXHRlMTAwX2FkanVzdF9hZGFwdGl2ZV9pZnMobmljLCBzcGVlZCwgY21kLmR1cGxleCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczNy1cXHRcXHQvKiBJc3N1ZSBhIG11bHRpY2FzdCBjb21tYW5kIHRvIHdvcmthcm91bmQgYSA1NTcgbG9jayB1cCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzM4OlxcdFxcdGUxMDBfc2V0X211bHRpY2FzdF9saXN0KG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUwOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUxLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTc4NDpzdGF0aWMgbmV0ZGV2X3R4X3QgZTEwMF94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3ODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzkzLVxcdFxcdCAgIGlzc3VpbmcgdGhlIFR4IGNvbW1hbmQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3OTQ6XFx0XFx0aWYgKGUxMDBfZXhlY19jbWQobmljLCBjdWNfbm9wLCAwKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc5NS1cXHRcXHRcXHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4MDA6XFx0ZXJyID0gZTEwMF9leGVjX2NiKG5pYywgc2tiLCBlMTAwX3htaXRfcHJlcGFyZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMDpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODYzOnN0YXRpYyB2b2lkIGUxMDBfY2xlYW5fY2JzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg4NzpzdGF0aWMgaW50IGUxMDBfYWxsb2NfY2JzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkxNjpzdGF0aWMgaW5saW5lIHZvaWQgZTEwMF9zdGFydF9yZWNlaXZlcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjUtXFx0aWYgKHJ4LVxcdTAwM2Vza2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkyNjpcXHRcXHRlMTAwX2V4ZWNfY21kKG5pYywgcnVjX3N0YXJ0LCByeC1cXHUwMDNlZG1hX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTI3LVxcdFxcdG5pYy1cXHUwMDNlcnVfcnVubmluZyA9IFJVX1JVTk5JTkc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMS0jZGVmaW5lIFJGRF9CVUZfTEVOIChzaXplb2Yoc3RydWN0IHJmZCkgKyBWTEFOX0VUSF9GUkFNRV9MRU4gKyBFVEhfRkNTX0xFTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkzMjpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2Nfc2tiKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTk2NDpzdGF0aWMgaW50IGUxMDBfcnhfaW5kaWNhdGUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTY1LVxcdHVuc2lnbmVkIGludCAqd29ya19kb25lLCB1bnNpZ25lZCBpbnQgd29ya190b19kbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDYzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW4oc3RydWN0IG5pYyAqbmljLCB1bnNpZ25lZCBpbnQgKndvcmtfZG9uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA2NC1cXHR1bnNpZ25lZCBpbnQgd29ya190b19kbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDcyLVxcdGZvciAocnggPSBuaWMtXFx1MDAzZXJ4X3RvX2NsZWFuOyByeC1cXHUwMDNlc2tiOyByeCA9IG5pYy1cXHUwMDNlcnhfdG9fY2xlYW4gPSByeC1cXHUwMDNlbmV4dCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDczOlxcdFxcdGVyciA9IGUxMDBfcnhfaW5kaWNhdGUobmljLCByeCwgd29ya19kb25lLCB3b3JrX3RvX2RvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA3NC1cXHRcXHQvKiBIaXQgcXVvdGEgb3Igbm8gbW9yZSB0byBjbGVhbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIwOTMtXFx0Zm9yIChyeCA9IG5pYy1cXHUwMDNlcnhfdG9fdXNlOyAhcngtXFx1MDAzZXNrYjsgcnggPSBuaWMtXFx1MDAzZXJ4X3RvX3VzZSA9IHJ4LVxcdTAwM2VuZXh0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIwOTQ6XFx0XFx0aWYgKHVubGlrZWx5KGUxMDBfcnhfYWxsb2Nfc2tiKG5pYywgcngpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA5NS1cXHRcXHRcXHRicmVhazsgLyogQmV0dGVyIGx1Y2sgbmV4dCB0aW1lIChzZWUgd2F0Y2hkb2cpICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzNi1cXHRcXHRpb3dyaXRlOChzdGF0X2Fja19ybnIsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLnN0YXRfYWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjEzNzpcXHRcXHRlMTAwX3N0YXJ0X3JlY2VpdmVyKG5pYywgbmljLVxcdTAwM2VyeF90b19jbGVhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxMzgtXFx0XFx0aWYgKHdvcmtfZG9uZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTQzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW5fbGlzdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxNjY6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTgwLVxcdFxcdHJ4LVxcdTAwM2VwcmV2ID0gKGkgPT0gMCkgPyBuaWMtXFx1MDAzZXJ4cyArIGNvdW50IC0gMSA6IHJ4IC0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE4MTpcXHRcXHRpZiAoZTEwMF9yeF9hbGxvY19za2IobmljLCByeCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE4MjpcXHRcXHRcXHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE4My1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjA2OnN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI2LVxcdGlmIChsaWtlbHkobmFwaV9zY2hlZHVsZV9wcmVwKFxcdTAwMjZuaWMtXFx1MDAzZW5hcGkpKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjI3OlxcdFxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIyOC1cXHRcXHRfX25hcGlfc2NoZWR1bGUoXFx1MDAyNm5pYy1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjIzNDpzdGF0aWMgaW50IGUxMDBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzk6XFx0ZTEwMF9yeF9jbGVhbihuaWMsIFxcdTAwMjZ3b3JrX2RvbmUsIGJ1ZGdldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDA6XFx0ZTEwMF90eF9jbGVhbihuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDctXFx0aWYgKGxpa2VseShuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgd29ya19kb25lKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDg6XFx0XFx0ZTEwMF9lbmFibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1My0jaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1NDpzdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1ODpcXHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNTk6XFx0ZTEwMF9pbnRyKG5pYy1cXHUwMDNlcGRldi1cXHUwMDNlaXJxLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjYwOlxcdGUxMDBfdHhfY2xlYW4obmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2MTpcXHRlMTAwX2VuYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2NTpzdGF0aWMgaW50IGUxMDBfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzMtXFx0ZXRoX2h3X2FkZHJfc2V0KG5ldGRldiwgYWRkci1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNzQ6XFx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjc1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNzk6c3RhdGljIGludCBlMTAwX2FzZihzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyODg6c3RhdGljIGludCBlMTAwX3VwKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MjpcXHRpZiAoKGVyciA9IGUxMDBfcnhfYWxsb2NfbGlzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5My1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk0OlxcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTUtXFx0XFx0Z290byBlcnJfcnhfY2xlYW5fbGlzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5NjpcXHRpZiAoKGVyciA9IGUxMDBfaHdfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5Ny1cXHRcXHRnb3RvIGVycl9jbGVhbl9jYnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyOTg6XFx0ZTEwMF9zZXRfbXVsdGljYXN0X2xpc3QobmljLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk5OlxcdGUxMDBfc3RhcnRfcmVjZWl2ZXIobmljLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwMC1cXHRtb2RfdGltZXIoXFx1MDAyNm5pYy1cXHUwMDNld2F0Y2hkb2csIGppZmZpZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzAxOlxcdGlmICgoZXJyID0gcmVxdWVzdF9pcnEobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VpcnEsIGUxMDBfaW50ciwgSVJRRl9TSEFSRUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDItXFx0XFx0bmljLVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUsIG5pYy1cXHUwMDNlbmV0ZGV2KSkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwNy1cXHQgKiBkaXNhYmxlIGludHMrc2NoZWR1bGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMwODpcXHRlMTAwX2VuYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwOS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzEzLWVycl9jbGVhbl9jYnM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMTQ6XFx0ZTEwMF9jbGVhbl9jYnMobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxNS1lcnJfcnhfY2xlYW5fbGlzdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMxNjpcXHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxNy1cXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjA6c3RhdGljIHZvaWQgZTEwMF9kb3duKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyNC1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyNTpcXHRlMTAwX2h3X3Jlc2V0KG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMjYtXFx0ZnJlZV9pcnEobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VpcnEsIG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzI4LVxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyOTpcXHRlMTAwX2NsZWFuX2NicyhuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzMwOlxcdGUxMDBfcnhfY2xlYW5fbGlzdChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMzMzpzdGF0aWMgdm9pZCBlMTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNDI6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzUxLVxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1MjpcXHRcXHRlMTAwX2Rvd24obmV0ZGV2X3ByaXYobmV0ZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNTM6XFx0XFx0ZTEwMF91cChuZXRkZXZfcHJpdihuZXRkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1ODpzdGF0aWMgaW50IGUxMDBfbG9vcGJhY2tfdGVzdChzdHJ1Y3QgbmljICpuaWMsIGVudW0gbG9vcGJhY2sgbG9vcGJhY2tfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM2ODpcXHRpZiAoKGVyciA9IGUxMDBfcnhfYWxsb2NfbGlzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2OS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzcwOlxcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNzEtXFx0XFx0Z290byBlcnJfY2xlYW5fcng7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3Ny1cXHRuaWMtXFx1MDAzZWxvb3BiYWNrID0gbG9vcGJhY2tfbW9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM3ODpcXHRpZiAoKGVyciA9IGUxMDBfaHdfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3OS1cXHRcXHRnb3RvIGVycl9sb29wYmFja19ub25lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzODU6XFx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzOTItXFx0bWVtc2V0KHNrYi1cXHUwMDNlZGF0YSwgMHhGRiwgRVRIX0RBVEFfTEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM5MzpcXHRlMTAwX3htaXRfZnJhbWUoc2tiLCBuaWMtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQwNi1cXHRuaWMtXFx1MDAzZWxvb3BiYWNrID0gbGJfbm9uZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQwNzpcXHRlMTAwX2NsZWFuX2NicyhuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA4OlxcdGUxMDBfaHdfcmVzZXQobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQwOS1lcnJfY2xlYW5fcng6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MTA6XFx0ZTEwMF9yeF9jbGVhbl9saXN0KG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MTEtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDE5OnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0Mjk6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzNi1cXHRlcnIgPSBtaWlfZXRodG9vbF9zZXRfbGlua19rc2V0dGluZ3MoXFx1MDAyNm5pYy1cXHUwMDNlbWlpLCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDM3OlxcdGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfY29uZmlndXJlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDQyOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ0My1cXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTEtI2RlZmluZSBFMTAwX1BIWV9SRUdTIDB4MURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQ1MjpzdGF0aWMgaW50IGUxMDBfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NjI6c3RhdGljIHZvaWQgZTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDYzLVxcdHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6NTUuMDM4NTU3MzUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTM5ODM5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZTEwMGAgRHJpdmVyJ3MgRW50cnlwb2ludCBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSByZXZpc2l0aW5nIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gYW5kIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcuIEluaXRpYWxseSwgSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIG5vbi1zdGF0aWMsIGJ1dCBpdCdzIGNsZWFybHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW4gdGhlIGNvZGU6XG5cbmBgYGNcbnN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmBgYFxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIGlubGluZXMgc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gSWYgZXZlcnl0aGluZyBpcyBzdGF0aWMsIEkgc2hvdWxkIGJlIHVzaW5nIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHRoYXQgKmFyZW4ndCogaW5saW5lZC4gRnVuY3Rpb25zIGxpa2UgYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAgY29tZSB0byBtaW5kIHNpbmNlIHRoZXkgYXJlIGFsbCBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuXG5cbkxldCdzIGRvdWJsZS1jaGVjay4gSSBzZWUgdGhhdCBgZTEwMF9wcm9iZWAgaXMsIGluIGZhY3QsIHBhc3NlZCB0byBgc3RydWN0IHBjaV9kcml2ZXIgZTEwMF9kcml2ZXJgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5Pa2F5LCB0aGlzIGxvZ2ljIG1ha2VzIHNlbnNlLiBUbyBlbnN1cmUgSSdtIGNvbXBsaWFudCwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlMTAwLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCBpbiB0aGVyZS4gR290dGEgY292ZXIgbXkgYmFzZXMgaGVyZSBhbmQgbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0MTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MDAuODUyNTQ0NzkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE1MDA2NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZTEwMF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTowMC45NTQwNTY1OThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMTY0MTI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFMTAwIERyaXZlciBTcGVjdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc25pcHBldCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIGBedm9pZCBlMTAwX2AuIEkgaW1tZWRpYXRlbHkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGNvbnRleHQuIFRoaXMgbGlrZWx5IHJlZmVyZW5jZXMgYSBmdW5jdGlvbiBvciBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgSW50ZWwgZTEwMCBuZXR3b3JrIGRyaXZlci4gVGhlIGB2b2lkYCByZXR1cm4gdHlwZSBzdWdnZXN0cyBhIGJhc2ljIGZ1bmN0aW9uLCBwb3NzaWJseSBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IG5lZWQgdG8gcmV0dXJuIGFueSBzcGVjaWZpYyBkYXRhLiBUaGUgY2FyZXQgKGBeYCkgcHJlY2VkaW5nIGB2b2lkYCBjb3VsZCBiZSBhIHBvaW50ZXItdG8tZnVuY3Rpb24uIEl0IG5lZWRzIHRvIGJlIGV4YW1pbmVkIGZyb20gd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgZHJpdmVyIGZyYW1ld29yaywgbG9va2luZyBhdCBjYWxsc2l0ZXMgYW5kIHVzZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzeW1ib2wgdGFibGUgb3IgbG9vayBmb3IgYSBoZWFkZXIgZmlsZSB0aGF0IGRlZmluZXMgaXQgdG8gY29uZmlybSB0aGUgYWN0dWFsIGRlY2xhcmF0aW9uIGFuZCB1c2FnZSBvZiB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIncyBzb3VyY2UgY29kZS4gSXMgaXQgYW4gZW50cnkgcG9pbnQ/IEFuIGludGVybmFsIHdvcmtlciBmdW5jdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEknZCB0aGVuIGNoZWNrIGZvciBhbnkga25vd24gaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW50ZXJydXB0cyBvciBtZW1vcnkgYWNjZXNzLCBnaXZlbiBpdCdzIGFuIG9sZGVyIGNoaXBzZXQuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlIGZvciB0aGUgZHJpdmVyIG9yIGEgcGxhY2Ugd2hlcmUgZXhwbG9pdHMgbWlnaHQgYmUgaW50cm9kdWNlZC4gSXQgbmVlZHMgYSBkZWVwZXIgaW52ZXN0aWdhdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTowNi4wNzU3MDEwNjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NjI4Mjc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJedm9pZCBlMTAwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjA2LjE1MjMzODA3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIwOTQ0NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBldmVyeXRoaW5nJ3MgYnVpbHQgYXJvdW5kIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyBub3QgdW5leHBlY3RlZCwgYW5kIGZyYW5rbHksIG1hbmFnZWFibGUuIEkgc2VlIHdlIGhhdmUgc29tZSBrZXkgcGxheWVycyBoZXJlOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgcHJvYmluZywgZGlhZ25vc3RpYyB0ZXN0aW5nLCBhbmQgRUVQUk9NIGNvbmZpZ3VyYXRpb24sIHJlc3BlY3RpdmVseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlcidzIG9wZXJhdGlvbmFsIGZsb3cuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBUaGUgYEUxMDBgIGNvbmZpZyBvcHRpb24gaXRzZWxmIGlzIG9idmlvdXNseSBjZW50cmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jaWVzLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMsIGlmIGFueSwgbmVlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgRTEwMGAgdG8gYmUgY29ycmVjdGx5IGJ1aWx0IGFuZCBmdW5jdGlvbmFsLiBTbywgbGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2suIEknbGwgbmVlZCB0byBwYXJzZSB0aGF0IGZpbGUgdG8gZGV0ZXJtaW5lIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYEUxMDBgIGFuZCBvdGhlciBjb21wb25lbnRzLCBlbnN1cmluZyBJJ20gYXdhcmUgb2YgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBpdGZhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM0NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjExLjU3MzI4NTIwNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzNzMwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBQUk8vMTAwKyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjExLjY1MzY2NjU0M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDczMzA4NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcgYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgY29yZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUsIGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBwYXR0ZXJuOiBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBwcm9tcHQsIGEgdHlwZSAoYm9vbCwgdHJpc3RhdGUsIGV0Yy4pLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIEknbSBleHBlY3RpbmcgdG8gcXVpY2tseSBncmFzcCB3aGljaCBmZWF0dXJlIG9yIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIHRoZXJlLiBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiB0aGUgb3B0aW9ucyBwcm92aWRlZC4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGZhbWlseSwgYSBwYXJ0aWN1bGFyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBkcml2ZXIgc2V0dGluZz8gS25vd2luZyB0aGUgY29udGV4dCBvZiBsaW5lIDIyIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCB0aGUgZ2VuZXJhbCBpZGVhIG9mIHdoYXQncyBiZWluZyBjb25maWd1cmVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQncyBiZWluZyBkb25lLCBhbmQgd2h5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA3MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjE2LjEyNjk3ODY3MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMjpcXHRjb25maWcgRTEwMFxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDArIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMjU6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cXG4gIDI4OlxcdFxcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXFxuICAyOTpcXHRcXHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcXG4gIDMwOlxcdFxcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFVzZSB0aGUgYWJvdmUgaW5mb3JtYXRpb24gYW5kIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcXG4gIDMzOlxcdFxcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XFx1MDAzZS5cXG4gIDQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMToxNi4xMjcwOTQ5OTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3ODcxOTY1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIG9yIGJ1ZmZlciBvdmVyZmxvd3MuICBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0J3Mgbm90IGp1c3QgYSBjb21tZW50IG9yIGEgbG9nZ2luZyB1cGRhdGUuIEl0J3MgdGlnaHRlbmluZyB1cCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIEVFUFJPTSByZWFkcy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHkuICBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MuICBDcnVjaWFsbHksIFFFTVUgZnVsbHkgZW11bGF0ZXMgdGhpcyBoYXJkd2FyZS4gIFRoYXQgbWVhbnMgdGhlIGRyaXZlcidzIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGEga2V5IHJlcXVpcmVtZW50IHRvIGRldGVybWluZSBcIldvcnRoRnV6emluZ1wiIGFzIHBlciBndWlkZWxpbmVzLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGVyZSB0aGlzIGNvZGUgaXMgY2FsbGVkLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYC4gIEkgc2F3IHRoYXQgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBgZTEwMF9lZXByb21fbG9hZGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgZnJvbSBhIGNvdXBsZSBvZiBpbXBvcnRhbnQgcGxhY2VzOiBgZTEwMF9wcm9iZWAgKGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24pIGFuZCBhbHNvIGZyb20gYGUxMDBfZGlhZ190ZXN0YC5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgY2FsbCBzaXRlcyBmb3IgYGUxMDBfZWVwcm9tX3JlYWRgLlxuXG5FeGNlbGxlbnQsIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgaXMgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9zZXRfZWVwcm9tYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlIGBlMTAwX2V0aHRvb2xfb3BzYCwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIHZpYSBldGh0b29sLiBQZXJmZWN0LlxuXG5TbyBteSBcImZvY3VzIHN5bWJvbHNcIiBmb3IgZnV6emluZyB0aGlzIHBhdGNoIGFyZSBub3cgY2xlYXJseSBkZWZpbmVkOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gSSBjYW4gdXNlIHRoZXNlIGFzIG15IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy5cblxuUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb24sIGBFMTAwYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgYFBDSWAgaXMgdXN1YWxseSBlbmFibGVkIGluIG1vc3QgY29uZmlndXJhdGlvbnMuIFRoZXNlIGFyZSBteSByZXF1aXJlZCBcIkVuYWJsZUNvbmZpZ3NcIi5cblxuTGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEgdG8gYmUgYWJzb2x1dGVseSBzdXJlOiBJJ20gbm90IGRlYWxpbmcgd2l0aCBkb2N1bWVudGF0aW9uIGNoYW5nZXMsIGNvbW1lbnRzLCBsb2dnaW5nLCBjb25zdGFudHMgdGhhdCBkb24ndCBjaGFuZ2UgZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIGlzIGNvcmUgZHJpdmVyIGxvZ2ljIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyBFRVBST00gYWNjZXNzIGFuZCB0aGVyZWZvcmUgaXMgbGlrZWx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcywgc2luY2UgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLiAgU28gYmFzZWQgb24gYWxsIG9mIHRoaXMsIFwiV29ydGhGdXp6aW5nXCIgaXMgYHRydWVgLlxuXG5GaW5hbCB0aG91Z2h0czogSSBzaG91bGQgYWRkIGEgY2hlY2sgdG8gbWFrZSBzdXJlIGBlMTAwX2VlcHJvbV9yZWFkYCBpc24ndCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZSBpbXBvcnRhbnQsIGJ1dCB0aGlzIGlzIGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nIGdpdmVuIHRoYXQgdGhlIHBhdGNoIHByZXZlbnRzIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdGhlcmUgYXJlIGEgZmV3IGludGVyZXN0aW5nIGNhbGwgc2l0ZXMgdG8gZm9jdXMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjUwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjMxLjkxNDI5NDcwOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0Mjg3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTY4Mz1zdGF0aWMgdm9pZCBlMTAwX2VlcHJvbV93cml0ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBhZGRyX2xlbiwgdTE2IGFkZHIsIF9fbGUxNiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTc2Nz1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cXHRcXHRpZiAoYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA1LVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzEuOTc3NzI5OTg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4Nzk0NTIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHN5bWJvbHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBFRVBST00gRnVuY3Rpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCB3ZSdyZSBvbmx5IGRlYWxpbmcgd2l0aCBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBoZXJlLiBHb29kLCBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIEkgcmVjYWxsIHRob3NlIGNhbGxzLiBgZTEwMF9lZXByb21fbG9hZGAgZ2V0cyBpbnZva2VkIGJ5IGBlMTAwX3Byb2JlYCBhbmQgYWxzbyBkdXJpbmcgdGhlIGRpYWdub3N0aWMgdGVzdHMsIGBlMTAwX2RpYWdfdGVzdGAuIFRoYXQgbWFrZXMgc2Vuc2UgZm9yIGluaXRpYWxpemF0aW9uIGFuZCB0ZXN0aW5nLiBBbmQgYGUxMDBfZWVwcm9tX3NhdmVgLCB0aGF0J3MgY2FsbGVkIGJ5IGBlMTAwX3NldF9lZXByb21gLCB3aGljaCBoYW5kbGVzIHRoZSBhY3R1YWwgd3JpdGUgb3BlcmF0aW9ucy4gRXhjZWxsZW50LCBzbyB0aGUgcHJpbWFyeSBzeW1ib2xzIHdlJ3JlIHRyYWNraW5nIGFyZSBpbmRlZWQgdGhlIG9uZXMgSSBhbnRpY2lwYXRlZC4gRXZlcnl0aGluZyBhbGlnbnMgYXMgSSB0aG91Z2h0IGl0IHdvdWxkLiBUaW1lIHRvIG1vdmUgb24gdG8gdGhlIG5leHQgdGFzayAtIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxNzEsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjM4Ljg1NzE4NDM4NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ2MjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDBfcHJvYmVcIixcbiAgICBcImUxMDBfZGlhZ190ZXN0XCIsXG4gICAgXCJlMTAwX3NldF9lZXByb21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9kaWFnX3Rlc3RcIixcbiAgICBcImUxMDBfc2V0X2VlcHJvbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3IgKGUuZy4gaW52YWxpZCBzaGlmdHMpIGFuZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4gVGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgaTgyNTV4IGZhbWlseSBvZiBOSUNzLCB3aGljaCBpcyBmdWxseSBlbXVsYXRlZCBieSBRRU1VIChlLmcuLCBpODI1NTllciksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCksIGV0aHRvb2wgZGlhZ25vc3RpY3MgKGBlMTAwX2RpYWdfdGVzdGApLCBhbmQgZXRodG9vbCBFRVBST00gd3JpdGUgb3BlcmF0aW9ucyAoYGUxMDBfc2V0X2VlcHJvbWApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTozOS4wMTI2NTc5MTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDQ5NDU0MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzkuMDEzNTg0MDI5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI4MDQ4NTIzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxcblxcbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzE3MTJiNTYzMzM2NDM3NWRkMjRjNTRmMmE4NGE5OTAxNTk4YWYyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTg6MTk6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4rXHRcdFx0dTE2IGxlbiA9IGkgLSAxNjtcbitcbitcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4rXHRcdFx0XHQqYWRkcl9sZW4gPSAwO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDcgKzc3MCwxNSBAQCBzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4tXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4rXG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZT0gMTYpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0XCJJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMVUgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XG4gXHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzkuMDEzNTg2NjY5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTYzNDE4NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSBlMTAwIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZTEwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNgLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgaGFuZGxpbmcgb2YgRUVQUk9NIGFjY2Vzcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgZnVuY3Rpb25zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gYGFkZHJfbGVuYC4gIExvb2tpbmcgYXQgYGUxMDBfZWVwcm9tX3JlYWRgLCB0aGUgY29kZSBub3cgY2FyZWZ1bGx5IGFkanVzdHMgYGFkZHJfbGVuYCBpZiBhIHNwZWNpZmljIGNvbmRpdGlvbiBpc24ndCBtZXQgKCBgIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTZgICksIGJ1dCBpdCBtYWtlcyBzdXJlIHRoYXQgdGhlIHZhbHVlIGRvZXNuJ3QgZ28gbmVnYXRpdmUgb3Igb3ZlcmZsb3cuXG5cbkluIGBlMTAwX2VlcHJvbV9sb2FkYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2U9IDE2KWAuICBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGFuIGlzc3VlIHdoZXJlIHRoZSBjYWxjdWxhdGVkIGBhZGRyX2xlbmAgY291bGQgYmUgaW52YWxpZCDigJMgZWl0aGVyIHplcm8gb3IgdG9vIGxhcmdlLiBUaGUgY29kZSB0aGVuIHVzZXMgYG5ldGlmX2VycmAgdG8gcmVwb3J0IHRoZSBpc3N1ZS4gIFRoZSBwcmltYXJ5IHB1cnBvc2UgaXMgcHJldmVudGluZyBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgZXJyb3IgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzLiAgVGhlIHZhcmlhYmxlIGBuaWMtXHUwMDNlZWVwcm9tX3djYCBpcyBkZXJpdmVkIGZyb20gYDFVIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAuIFRoZSBvcmlnaW5hbCBsb2dpYyB3YXMgZmxhd2VkLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbmAgd2FzIHRvbyBsYXJnZSAoaS5lLiwgYGFkZHJfbGVuYCBcdTAwM2U9IDE2KS4gVGhlIGNvZGUgcHJvdGVjdHMgYG5pYy1cdTAwM2VlZXByb21bYWRkcl1gIGFjY2Vzc2VzLlxuXG5UaGUgcm9vdCBjYXVzZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFuIGludGVnZXIgdW5kZXJmbG93IG9yIG92ZXJmbG93LCBhbmQgdGhlIHJlc3VsdGluZyBgYWRkcl9sZW5gIGxlYWRzIHRvIGVpdGhlciB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0aW5nIGEgdmVyeSBsYXJnZSBhbW91bnQpIG9yIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIChgbmljLVx1MDAzZWVlcHJvbVthZGRyXWApLiAgSSdtIHRoaW5raW5nIEtBU0FOIGFuZCBVQlNBTiB3b3VsZCBiZSB0aGUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gY2F0Y2ggdGhpcyBraW5kIG9mIHByb2JsZW0uIEkgZG9uJ3Qgc2VlIGFueSBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGludm9sdmVkIGhlcmU7IGl0J3MgcHVyZWx5IGFib3V0IHByZXZlbnRpbmcgT09CIGFjY2VzcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9yLiBTbywgS01TQU4gaXNuJ3QgcmVsZXZhbnQgaW4gdGhpcyBzY2VuYXJpby5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBzaXplIG9mIGBuaWMtXHUwMDNlZWVwcm9tYC4gSSdsbCBydW4gYSBxdWljayBncmVwIGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGFjdHVhbCBzaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzEzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTIuNTc3MDA4NDMxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjA2OTUyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidTE2IGVlcHJvbVxcXFxbXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTIuNjUzMDg2NjM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODY0ODg4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZTEwMC5jYCB3aXRoIGEgRm9jdXNlZCBHcmVwKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGUxMDAuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBwaW5wb2ludCBhbGwgaW5zdGFuY2VzIG9mIGBlZXByb21gIHdpdGhpbiB0aGlzIGNvZGUsIGJ1dCBJIHdhbnQgdG8gYmUgKnByZWNpc2UqLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGJvZ2dlZCBkb3duIHdpdGggaXJyZWxldmFudCBtYXRjaGVzIG9yIG5vaXNlIGZyb20sIHNheSwgaGVhZGVyIGZpbGUgZGVjbGFyYXRpb25zLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhlIEVFUFJPTSBpbnRlcmFjdGlvbiBpcyBpbXBsZW1lbnRlZCBoZXJlLCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW5zdGFuY2VzIG9mIGBlZXByb21gIHJlbGF0ZWQgdG8gdGhlIGNvZGUncyBhY3RpdmUgdXNlLCBub3QgaXRzIG1lcmUgZGVmaW5pdGlvbi5cblxuVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIGEgYnJvYWQgc2VhcmNoLCBsZXQncyByZWZpbmUgdGhpcy4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGVlcHJvbWAgd2l0aGluIGBlMTAwLmNgLiBCdXQgSSdtIGdvaW5nIHRvIGV4Y2x1ZGUgYHUxNmAgZnJvbSB0aGUgc2VhcmNoIGNyaXRlcmlhLiBJJ20gZm9jdXNpbmcgb24gdGhlICp1c2FnZSogbm90IHRoZSAqZGVjbGFyYXRpb24qLiBUaGF0IHNob3VsZCBuYXJyb3cgdGhlIHJlc3VsdHMgc2lnbmlmaWNhbnRseSwgZ2l2aW5nIG1lIGEgbW9yZSB0YXJnZXRlZCB2aWV3IG9mIHRoZSBFRVBST00gYWNjZXNzIHBhdGhzLCBwb3RlbnRpYWxseSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGFjY2Vzcywgb3IgY2FsbHMgdG8gRUVQUk9NIHNwZWNpZmljIHJvdXRpbmVzLiBJdCdzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBnZXQgYSBnb29kIGJlYXJpbmcgb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHdhZGUgdGhyb3VnaCBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjU2LjUzOTU3ODAyNVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExODU4NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVlcHJvbVxcXFxbXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NTM5PXN0cnVjdCBuaWMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwMi1cXHR1MTYgZWVwcm9tX3djO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDM6XFx0X19sZTE2IGVlcHJvbVsyNTZdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MDQtXFx0c3BpbmxvY2tfdCBtZGlvX2xvY2s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgzLVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NDpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NjpcXHRcXHRcXHRjaGVja3N1bSArPSBsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzkwLVxcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTE6XFx0aWYgKGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKSAhPSBuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5Mi1cXHRcXHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVxcdTAwM2VuZXRkZXYsIFxcXCJFRVBST00gY29ycnVwdGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODEyLVxcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFxcdTAwM2Mgc3RhcnQgKyBjb3VudDsgYWRkcisrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MTM6XFx0XFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgYWRkciwgbmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE3LVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHIrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODE4OlxcdFxcdGNoZWNrc3VtICs9IGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODE5OlxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0gPSBjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMC1cXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMTpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0MDg9c3RhdGljIGludCBlMTAwX3BoeV9jaGVja193aXRob3V0X21paShzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQxMzpcXHRwaHlfdHlwZSA9IChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fcGh5X2lmYWNlXSkgXFx1MDAzZVxcdTAwM2UgOCkgXFx1MDAyNiAweDBmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0NDg9c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTMxLVxcdCAgIChtZGlvX3JlYWQobmV0ZGV2LCBuaWMtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9UUElTVEFUVVMpIFxcdTAwMjYgMHg4MDAwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTMyOlxcdCAgIChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fY25mZ19tZGl4XSkgXFx1MDAyNiBlZXByb21fbWRpeF9lbmFibGVkKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMy1cXHRcXHQvKiBlbmFibGUvZGlzYWJsZSBNREkvTURJLVggYXV0by1zd2l0Y2hpbmcuICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjI3OT1zdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgyLVxcdHJldHVybiAobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXZpY2UgXFx1MDAzZT0gMHgxMDUwKSBcXHUwMDI2XFx1MDAyNiAobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXZpY2UgXFx1MDAzYz0gMHgxMDU3KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjgzOlxcdCAgIChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fY29uZmlnX2FzZl0pIFxcdTAwMjYgZWVwcm9tX2FzZikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4NDpcXHQgICAhKGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2VlcHJvbV9jb25maWdfYXNmXSkgXFx1MDAyNiBlZXByb21fZ2NsKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg1OlxcdCAgICgobGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bZWVwcm9tX3NtYnVzX2FkZHJdKSBcXHUwMDI2IDB4RkYpICE9IDB4RkUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjg2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODQzPXN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yOTUxLVxcdGlmICgobmljLVxcdTAwM2VtYWMgXFx1MDAzZT0gbWFjXzgyNTU4X0QxMDFfQTQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI5NTI6XFx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2VlcHJvbV9pZF0pIFxcdTAwMjYgZWVwcm9tX2lkX3dvbCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1My1cXHRcXHRuaWMtXFx1MDAzZWZsYWdzIHw9IHdvbF9tYWdpYztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTcuMDUxNDQxNDhaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTA2NDIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBFRVBST00gVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgYF9fbGUxNiBlZXByb21bMjU2XTtgIGFycmF5IGluIHRoZSBgbmljYCBzdHJ1Y3R1cmUuIFRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGBhZGRyX2xlbmAgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgbG9vcCBib3VuZCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0byB0aGlzIEVFUFJPTS4gSWYgYGFkZHJfbGVuYCBiZWNvbWVzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCBpcyBnb2luZyB0byByZXN1bHQgaW4gYSB2YWx1ZSBvZiBhdCBsZWFzdCA2NTUzNiwgYW5kIGl0IGNhbiBncm93IG11Y2gsIG11Y2ggbGFyZ2VyIHRoYW4gdGhhdC4gIFRoYXQncyBhIG1hc3NpdmUgc2hpZnQsIGFuZCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuYCBpcyBsYXJnZSBlbm91Z2gsIHNheSBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLlxuXG5UaGUgc3Vic2VxdWVudCBsb29wIHRoZW4gZ29lcyBhbmQgd3JpdGVzIHBhc3QgdGhlIGVuZCBvZiB0aGF0IGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYnVmZmVyLCBjcmVhdGluZyBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyB3cml0ZS4gIEtBU0FOIGlzIGdvaW5nIHRvIHRyaXAgYWxsIG92ZXIgdGhpczsgaXQncyBwcmFjdGljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB0aGlzIGtpbmQgb2YgdGhpbmcsIGFuZCBVQlNBTiBzaG91bGQgbmFpbCB0aGUgb3ZlcnNpemVkIHNoaWZ0LiBUaGlzIGlzIHJlYWxseSBhbiBPT0Igd3JpdGUgaXNzdWUuXG5cbkxldCdzIGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IGNoYW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkPyBJZiBgYWRkcl9sZW5gIGlzIDAsIHRoZSBwcm9ncmFtIGNhbiByZWFkIGBuaWMtXHUwMDNlZWVwcm9tWzBdYC4gVGhhdCdzIG5vdCByZWFsbHkgYW4gaXNzdWUuICBObywgYGUxMDBfZWVwcm9tX2xvYWRgIGp1c3QgcHVsbHMgZGF0YSBmcm9tIHRoZSBFRVBST00gaGFyZHdhcmUsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIGxlYWsgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhyb3VnaCB0aGlzLiAgSWYgYGFkZHJfbGVuYCBpcyBsYXJnZSwgaXQgd3JpdGVzIE9PQjsgaWYgaXQncyBzbWFsbCwgaXQgd3JpdGVzIGZld2VyIGVsZW1lbnRzLiAgSXQncyBqdXN0IHRoZSBib3VuZHMgY2hlY2sgd2UncmUgd29ycmllZCBhYm91dC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBzaW1wbGU7IGl0IGFkZHMgYSBjaGVjazogYGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlPSAxNikgcmV0dXJuIC1FSU5WQUw7YC4gVGhpcyBuZWF0bHkgcHJldmVudHMgdGhlIE9PQiB3cml0ZSwgYW5kIGFsc28gbmVhdGx5IHByZXZlbnRzIHRoZSB1bmRlZmluZWQgYmVoYXZpb3Igb2YgYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCB3aGVuIGBhZGRyX2xlbiBcdTAwM2U9IDMyYC5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyOiB0aGlzIGlzICpzdHJpY3RseSogYW4gT09CIHdyaXRlIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgcHJvYmxlbS4gS0FTQU4gYW5kIFVCU0FOIGFyZSBnb2luZyB0byBoYW5kbGUgdGhpcyBiZWF1dGlmdWxseS4gS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgY29waWVkIHRvIHVzZXJzcGFjZS5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUvdW5kZWZpbmVkIGJlaGF2aW9yIGluIHRoZSBlMTAwIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCwgYGFkZHJfbGVuYCwgYWxsb3dzIGFuIGF0dGFja2VyIHRvIGNhdXNlIGFuIE9PQiB3cml0ZSBieSBleHBsb2l0aW5nIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgd2hpY2ggZ3Jvd3MgdG9vIGxhcmdlIGZvciB0aGUgZml4ZWQtc2l6ZSBidWZmZXIuIEl0J3MgYSBoZWFwIE9PQi4gS0FTQU4gYW5kIFVCU0FOIHdpbGwgcmVsaWFibHkgZGV0ZWN0IHRoaXMuIFRoaXMgaXMgKm5vdCogYW4gaW5mb3JtYXRpb24gbGVhaywgc28gS01TQU4gaXMgdW5uZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6MjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIyOjA3LjA2MjA4NjgwNloiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXFx1MDAzZT0gMzJgKS4gVGhpcyB2YWx1ZSBpcyB0aGVuIHVzZWQgYXMgdGhlIGxvb3AgYm91bmQgdG8gcmVhZCBmcm9tIHRoZSBFRVBST00gYW5kIHdyaXRlIGludG8gdGhlIGZpeGVkLXNpemUgYG5pYy1cXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5LCBjYXVzaW5nIGEgbWFzc2l2ZSBvdXQtb2YtYm91bmRzIHdyaXRlIG9uIHRoZSBoZWFwIChzaW5jZSBgc3RydWN0IG5pY2AgaXMgYWxsb2NhdGVkIHZpYSBgbmV0ZGV2X3ByaXZgKS5cXG5cXG5PdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3JzIChsaWtlIG92ZXJzaXplZCBzaGlmdHMpIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgVUJTQU4gKFVuZGVmaW5lZCBCZWhhdmlvciBTYW5pdGl6ZXIpLCB3aGljaCBhcmUgYWxyZWFkeSBlbmFibGVkIGluIHN0YW5kYXJkIGZ1enppbmcgYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGZpeCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBlMTAwIG5ldHdvcmsgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIChgYWRkcl9sZW5gKSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIGlmIGBhZGRyX2xlbmAgaXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtXFx1MDAzZWVlcHJvbV93YyA9IDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW5gIHJlc3VsdHMgaW4gYSB2YWx1ZSBvZiA2NTUzNiBvciBtb3JlIChvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuIFxcdTAwM2U9IDMyYCkuIFRoaXMgdmFsdWUgaXMgdGhlbiB1c2VkIGFzIHRoZSBsb29wIGJvdW5kIHRvIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGFuZCB3cml0ZSBpbnRvIHRoZSBmaXhlZC1zaXplIGBuaWMtXFx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXFxuXFxuT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9ycyAobGlrZSBvdmVyc2l6ZWQgc2hpZnRzKSBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIFVCU0FOIChVbmRlZmluZWQgQmVoYXZpb3IgU2FuaXRpemVyKSwgd2hpY2ggYXJlIGFscmVhZHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBmaXggYW55IGlzc3VlcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4vwjt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 17:53:55 +0000 UTC FinishedAt: 2026-08-07 18:22:08 +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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "E100" ], "series_id": "66e7718c-af73-4ded-9ca1-b2e40551a974" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "e100_probe", "e100_diag_test", "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfZGlhZ190ZXN0JiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBlMTAwIG5ldHdvcmsgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIChgYWRkcl9sZW5gKSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIGlmIGBhZGRyX2xlbmAgaXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW5gIHJlc3VsdHMgaW4gYSB2YWx1ZSBvZiA2NTUzNiBvciBtb3JlIChvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuIFx1MDAzZT0gMzJgKS4gVGhpcyB2YWx1ZSBpcyB0aGVuIHVzZWQgYXMgdGhlIGxvb3AgYm91bmQgdG8gcmVhZCBmcm9tIHRoZSBFRVBST00gYW5kIHdyaXRlIGludG8gdGhlIGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxuXG5PdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3JzIChsaWtlIG92ZXJzaXplZCBzaGlmdHMpIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgVUJTQU4gKFVuZGVmaW5lZCBCZWhhdmlvciBTYW5pdGl6ZXIpLCB3aGljaCBhcmUgYWxyZWFkeSBlbmFibGVkIGluIHN0YW5kYXJkIGZ1enppbmcgYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGZpeCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuaW5kZXggMjk5NjA3NjJlNjRhOC4uMWRlNWNkNDFlYTBjZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5AQCAtNzQ0LDcgJiM0Mzs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4mIzQzO1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4mIzQzO1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbiYjNDM7XHRcdFx0ZWxzZVxuJiM0MztcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDcgJiM0Mzs3NzAsMTUgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuLVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiM0MztcbiYjNDM7XHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZT0gMTYpIHtcbiYjNDM7XHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHRcJiMzNDtJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0YWRkcl9sZW4pO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMVUgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbiBcdFx0bmljLVx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0UxMDAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlMTAwX3Byb2JlJiMzNDssCiAgICAmIzM0O2UxMDBfZGlhZ190ZXN0JiMzNDssCiAgICAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw3ICYjNDM7NzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKLQluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiYjNDM7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkmIzM0O0ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywKJiM0MzsJCQlhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwluaWMtJmd0O2VlcHJvbV93YyA9IDFVICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewogCQluaWMtJmd0O2VlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCBhZGRyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGUxMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGUxMDBgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYC4gSXQgc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBib3VuZHMgY2hlY2tpbmcsIHdoaWNoIGlzIGFsd2F5cyBnb29kIHRvIHNlZS4gVGhlIHByaW1hcnkgY29uY2VybiBpcyBwcm90ZWN0aW5nIGFnYWluc3QgaW52YWxpZCBgYWRkcl9sZW5gIHZhbHVlcyB3aXRoaW4gdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGZ1bmN0aW9ucy4KCkkgY2FuIHNlZSB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLiBUaGUgZmlyc3Qgc25pcHBldCBpbnRyb2R1Y2VzIGEgY2hlY2sgd2l0aGluIGBlMTAwX2VlcHJvbV9yZWFkYCB3aGVyZSBpdCBjYWxjdWxhdGVzIGEgbGVuZ3RoIChgbGVuYCkgYW5kIGNsYW1wcyB0aGUgYCphZGRyX2xlbmAgdG8gemVybyBpZiBgbGVuYCBleGNlZWRzIGl0cyB2YWx1ZSwgb3RoZXJ3aXNlIHN1YnRyYWN0aW5nIGBsZW5gLiBUaGlzIGlzIGEgY2xhc3NpYyBib3VuZHMgcHJvdGVjdGlvbiwgZW5zdXJpbmcgYSB3cml0ZSBkb2VzbiYjMzk7dCBleGNlZWQgYWxsb2NhdGVkIHNwYWNlLiBUaGUgc2Vjb25kIHNuaXBwZXQgd2l0aGluIGBlMTAwX2VlcHJvbV9sb2FkYCBpbmNsdWRlcyBhIG1vcmUgcmlnaWQgY2hlY2suIElmIGBhZGRyX2xlbmAgaXMgemVybyBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTYsIGl0IGZsYWdzIGFuIGVycm9yIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbm90aGVyIHNhZmVndWFyZCBhZ2FpbnN0IG91dC1vZi1ib3VuZHMgYWNjZXNzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGRyaXZlciBldmVuICpyZWxldmFudCogaW4gbW9kZXJuIGVudmlyb25tZW50cz8gVGhlIGBlMTAwYCBkcml2ZXIgaXMgZm9yIHRoZSBJbnRlbCBQUk8vMTAwIEV0aGVybmV0IGNvbnRyb2xsZXJzLiBHaXZlbiB0aGF0IHRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIEludGVsIFBSTy8xMDAgc2VyaWVzLCBJIHdvbmRlciBpZiB0aGlzIGRyaXZlciBpcyBzdGlsbCByZWFjaGFibGUgaW4gbW9kZXJuIHN5c3RlbXMuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIHRoYXQgaXQmIzM5O3MgbGlrZWx5IGEgbGVnYWN5IGRyaXZlci4KCkEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGk4MjU1eCAoUFJPLzEwMCkgZmFtaWx5LCBzcGVjaWZpY2FsbHkgdGhlIGBpODI1NTllcmAgYW5kIGBpODI1NTdiYCAoYW5kIGk4MjU1OWMpLCB2aWEgYGh3L25ldC9lZXBybzEwMC5jYC4gVGhlcmVmb3JlLCB0aGUgYGUxMDBgIGRyaXZlciAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBtYWtlcyB0aGUgcGF0Y2gmIzM5O3MgZXhpc3RlbmNlIG1ha2Ugc2Vuc2U7IGlmIGl0JiMzOTtzIGJlaW5nIGVtdWxhdGVkLCBhbnkgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFyZSBzdGlsbCByZWxldmFudC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGVudHJ5IGZvciBgZTEwMGA6IEkmIzM5O2xsIGZpbmQgaXQgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgLiBZZXMsIGBjb25maWcgRTEwMGAgZXhpc3RzIGFuZCBkZXBlbmRzIG9uIGBQQ0lgLCBhcyBleHBlY3RlZC4gU28gaXQmIzM5O3MgY29uZmlndXJhYmxlLgoKTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gY2FsbHMuIFRoZSBwYXRjaCBtb2RpZmllcyBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV9sb2FkYC4gYGUxMDBfZWVwcm9tX2xvYWRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIHdoaWNoIGFsaWducyB3aXRoIGhvdyBpdCBmaW5kcyB0aGUgRUVQUk9NLiBgZTEwMF9lZXByb21fcmVhZGAgaXMgY2FsbGVkIGJ5IGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgcG9zc2libHkgYnkgZXRodG9vbCBvcGVyYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCB1c2FnZSB3aXRoaW4gYGUxMDAuY2AgdG8gY29uZmlybSB0aGUgY29kZSBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlMTAwX2VlcHJvbV9sb2FkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03MjE9c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2Ni0vKiBMb2FkIGVudGlyZSBFRVBST00gaW1hZ2UgaW50byBkcml2ZXIgY2FjaGUgYW5kIHZhbGlkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzY3OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjYyMD1zdGF0aWMgdm9pZCBlMTAwX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjI4LVx0ZGF0YVswXSA9ICFtaWlfbGlua19vayhcdTAwMjZuaWMtXHUwMDNlbWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNjI5Olx0ZGF0YVsxXSA9IGUxMDBfZWVwcm9tX2xvYWQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNjMwLVx0aWYgKHRlc3QtXHUwMDNlZmxhZ3MgXHUwMDI2IEVUSF9URVNUX0ZMX09GRkxJTkUpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjg0Mz1zdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI5MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjkzNDpcdGlmICgoZXJyID0gZTEwMF9lZXByb21fbG9hZChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yOTM1LVx0XHRnb3RvIGVycl9vdXRfZnJlZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZTEwMCBEcml2ZXImIzM5O3MgRUVQUk9NIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGUxMDBgIGRyaXZlciBjb2RlLiBJIHNlZSB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGNhbGxlZCBkdXJpbmcgYm90aCB0aGUgaW5pdGlhbCBQQ0kgcHJvYmluZyBwaGFzZSDigJMgdGhyb3VnaCBgZTEwMF9wcm9iZWAg4oCTIGFuZCBhbHNvIGR1cmluZyBkaWFnbm9zdGljIHRlc3RpbmcgdXNpbmcgYGUxMDBfZGlhZ190ZXN0YC4gYGUxMDBfcHJvYmVgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXRlY3RpbmcgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIE5hdHVyYWxseSwgbG9hZGluZyB0aGUgRUVQUk9NIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcCB0aGVyZS4KCk5vdywgYGUxMDBfZWVwcm9tX2xvYWRgIGl0c2VsZiByZWxpZXMgb24gYGUxMDBfZWVwcm9tX3JlYWRgLiBBbmQgaXQgbG9va3MgbGlrZSBgZTEwMF9nZXRfZWVwcm9tYCBhbHNvIHVzZXMgYGUxMDBfZWVwcm9tX3JlYWRgLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHRpbWUgdG8gZGlnIGludG8gdGhlIGNhbGwgc2l0ZXMgb2YgYGUxMDBfZWVwcm9tX3JlYWRgIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIEVFUFJPTSByZWFkIG9wZXJhdGlvbnMgaW4gdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hvJiMzOTtzIGNhbGxpbmcgKnRoYXQqIGZ1bmN0aW9uLi4uIHRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzcyOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0Olx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXHRcdGlmIChhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9ODAxPXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTQKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFMTAwIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFyZSBzdGF0aWMgZnVuY3Rpb25zIOKAkyBpbnRlcm5hbCB0byB0aGUgZHJpdmVyLCBsaWtlbHkgZm9yIGhhbmRsaW5nIEVFUFJPTSBkYXRhLiBgZTEwMF9wcm9iZWAsIHRoYXQmIzM5O3Mgb3VyIFBDSSBwcm9iZSBmdW5jdGlvbiwgdGhlIGVudHJ5IHBvaW50IHdoZW4gdGhlIGRldmljZSBpcyBkZXRlY3RlZCwgc28gdGhhdCYjMzk7cyBjcnVjaWFsLiBgZTEwMF9kaWFnX3Rlc3RgIGlzIHRoZSBldGh0b29sIHNlbGYtdGVzdCBmdW5jdGlvbjsgdXNlZnVsIGZvciBkaWFnbm9zdGljcywgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBpcyB0aWVkIHRvIGBlMTAwX3NldF9lZXByb21gLgoKR2l2ZW4gdGhhdCBgZTEwMF9wcm9iZWAgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIGZ1cnRoZXIgYW5kIHdoZXJlIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYmVnaW5zLiBTbywgYGUxMDBfcHJvYmVgIGFuZCBgZTEwMF9kaWFnX3Rlc3RgIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiByaWdodCBub3cuIFdhaXQsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBldGh0b29sIG9wZXJhdGlvbnMsIHNvIGxldCBtZSBxdWlja2x5IGdvIG92ZXIgYGUxMDBfZ2V0X2VlcHJvbWAgYW5kIGBlMTAwX3NldF9lZXByb21gLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfZ2V0X2VlcHJvbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjUzMj1zdGF0aWMgdTMyIGUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNTM4OnN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ0LSNkZWZpbmUgRTEwMF9FRVBST01fTUFHSUNcdDB4MTIzNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDU6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTQ2LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NTgtXHQuZ2V0X2xpbmtcdFx0PSBlMTAwX2dldF9saW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NTk6XHQuZ2V0X2VlcHJvbV9sZW5cdFx0PSBlMTAwX2dldF9lZXByb21fbGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI3NjA6XHQuZ2V0X2VlcHJvbVx0XHQ9IGUxMDBfZ2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYxLVx0LnNldF9lZXByb21cdFx0PSBlMTAwX3NldF9lZXByb20sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDI1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgS2V5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9uczogYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBgZTEwMF9nZXRfZWVwcm9tYCwgYW5kIGBlMTAwX3NldF9lZXByb21gLiBGaXJzdCwgYGUxMDBfcHJvYmVgIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgdXN1YWxseSBzeXprYWxsZXIgd291bGQgaGl0IHRoZXNlIHdpdGggc29tZXRoaW5nIGxpa2UgYHN5el9wY2lfcHJvYmVgLCBidXQgdGhlcmUgaXNuJiMzOTt0IGEgZGVkaWNhdGVkIG9uZSBmb3IgZTEwMC4gSG1tLCBidXQgc2luY2UgUUVNVSBlbXVsYXRlcyBlMTAwLCBgZTEwMF9wcm9iZWAgKnNob3VsZCogYmUgcmVhY2hhYmxlIG9uIGJvb3QgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50LCBvciB2aWEgUENJIGhvdHBsdWcuIFllcCwgZGVmaW5pdGVseSByZWFjaGFibGUuCgpOb3csIHdoYXQgYWJvdXQgYGUxMDBfZGlhZ190ZXN0YD8gQ2FuIEkgcmVhY2ggdGhhdD8gRXRodG9vbCEgVGhhdCYjMzk7cyBob3cuIFNhbWUgZ29lcyBmb3IgYGUxMDBfZ2V0X2VlcHJvbWAsIGV0aHRvb2wgd2lsbCBkbyB0aGUgdHJpY2suIEFuZCBgZTEwMF9zZXRfZWVwcm9tYD8gWWVwLCBldGh0b29sIGlzIHRoZSBrZXkgdGhlcmUgdG9vLgoKT2theSwgbmV4dCBJJiMzOTtsbCBjaGVjayBpZiBgZTEwMF9zZXRfZWVwcm9tYCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfc2V0X2VlcHJvbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0NT1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTY6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNTU3LVx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjc0OT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGUxMDBfZXRodG9vbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjAtXHQuZ2V0X2VlcHJvbVx0XHQ9IGUxMDBfZ2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzYxOlx0LnNldF9lZXByb21cdFx0PSBlMTAwX3NldF9lZXByb20sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjc2Mi1cdC5nZXRfcmluZ3BhcmFtXHRcdD0gZTEwMF9nZXRfcmluZ3BhcmFtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDM3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgZTEwMF9zZXRfZWVwcm9tYCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBwdWxsIHVwIHRoZSBjb2RlIGFuZCB0YWtlIGEgbG9vay4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3JlIGhhbmRsaW5nIHRoZSB3cml0ZSBjeWNsZXMgYW5kIGVycm9yIGNoZWNraW5nLiBJIHZhZ3VlbHkgcmVtZW1iZXIgcG90ZW50aWFsIGlzc3VlcyB3aXRoIEVFUFJPTSB3cml0ZXMgYmVpbmcgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgdm9sdGFnZSBmbHVjdHVhdGlvbnMsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHNhZmVndWFyZHMgYWdhaW5zdCB0aG9zZSBwcm9ibGVtcy4KCkxldCYjMzk7cyBzZWXigKYgcmlnaHQsIHRoZSB0eXBpY2FsIHNlcXVlbmNlIHByb2JhYmx5IGludm9sdmVzIGVuYWJsaW5nIHRoZSBFRVBST00gaW50ZXJmYWNlLCBhZGRyZXNzaW5nIHRoZSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24sIHNlbmRpbmcgdGhlIGRhdGEsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoZSB3cml0ZSB0byBjb21wbGV0ZSwgcG9zc2libHkgd2l0aCBzb21lIGZvcm0gb2YgYnVzeS13YWl0IG9yIGludGVycnVwdC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhleSYjMzk7cmUgZm9sbG93aW5nIGJlc3QgcHJhY3RpY2VzIGhlcmUuIFRoaW5ncyBsaWtlIGF0b21pY2l0eSwgd3JpdGUgcHJvdGVjdGlvbiBkdXJpbmcgdGhlIHByb2Nlc3MsIGFuZCBtYWtpbmcgc3VyZSB0aGUgd3JpdGUgZG9lc24mIzM5O3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBhcmUgdG9wIG9mIG1pbmQuCgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBiaXQgdHdpZGRsaW5nIG9yIHJlZ2lzdGVyIG1hbmlwdWxhdGlvbiBpbnZvbHZlZC4gVGhvc2UgYXJlIHVzdWFsbHkgd2hlcmUgdGhlIHN1YnRsZSBidWdzIGhpZGUuIEFsc28sIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGNvbnRleHRzLiBJZiBpdCYjMzk7cyBub3QgcHJvcGVybHkgcHJvdGVjdGVkIHdpdGggbXV0ZXhlcyBvciBzcGlubG9ja3MsIGl0IGNvdWxkIGJlIGEgdGlja2luZyB0aW1lIGJvbWIuCgpGaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcuIElzIHRoZXJlIHByb3BlciB2ZXJpZmljYXRpb24gYWZ0ZXIgdGhlIHdyaXRlIHRvIGNvbmZpcm0gdGhlIGRhdGEgaW50ZWdyaXR5PyBBcmUgdGhlcmUgcmV0cmllcyB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgaWYgdGhlIHdyaXRlIGZhaWxzIGluaXRpYWxseT8gQW5kIGFyZSBhbnkgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMsIGxpa2UgYSByZWFkLW9ubHkgbWVtb3J5LCBhY2NvdW50ZWQgZm9yPyBUaW1lIHRvIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgcm9idXN0LCBhbmQgaWYgaXQmIzM5O3Mgbm90LCB3aGVyZSBhbmQgaG93IEkgY2FuIGhlbHAgaW1wcm92ZSBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI1NTY6XHRzdGF0aWMgaW50IGUxMDBfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuMjU1NzpcdFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbjI1NTg6XHR7XG4yNTU5Olx0XHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMjU2MDpcdFxuMjU2MTpcdFx0aWYgKGVlcHJvbS1cdTAwM2VtYWdpYyAhPSBFMTAwX0VFUFJPTV9NQUdJQylcbjI1NjI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4yNTYzOlx0XG4yNTY0Olx0XHRtZW1jcHkoXHUwMDI2KCh1OCAqKW5pYy1cdTAwM2VlZXByb20pW2VlcHJvbS1cdTAwM2VvZmZzZXRdLCBieXRlcywgZWVwcm9tLVx1MDAzZWxlbik7XG4yNTY1Olx0XG4yNTY2Olx0XHRyZXR1cm4gZTEwMF9lZXByb21fc2F2ZShuaWMsIGVlcHJvbS1cdTAwM2VvZmZzZXQgXHUwMDNlXHUwMDNlIDEsXG4yNTY3Olx0XHRcdChlZXByb20tXHUwMDNlbGVuIFx1MDAzZVx1MDAzZSAxKSAmIzQzOyAxKTtcbjI1Njg6XHR9XG4yNTY5Olx0XG4yNTcwOlx0c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4yNTcxOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBldGh0b29sX3JpbmdwYXJhbSAqcmluZyxcbjI1NzI6XHRcdFx0XHQgICAgICAgc3RydWN0IGtlcm5lbF9ldGh0b29sX3JpbmdwYXJhbSAqa2VybmVsX3JpbmcsXG4yNTczOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbjI1NzQ6XHR7XG4yNTc1Olx0XHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODE1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgZTEwMCBFRVBST00gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBlMTAwX3NldF9lZXByb21gIGlzIGRlZmluaXRlbHkgY2FsbGluZyBgZTEwMF9lZXByb21fc2F2ZWAuIFRoYXQgbWFrZXMgc2Vuc2UuIEFuZCwgb2YgY291cnNlLCBgZTEwMF9lZXByb21fc2F2ZWAgc3Vic2VxdWVudGx5IHVzZXMgdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBmdW5jdGlvbi4gUmlnaHQsIHNvIGZhciwgc28gZ29vZCwgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgZGF0YSBmbG93LgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb24uIExldCYjMzk7cyBkaWcgaW50byBpdHMgaW1wbGVtZW50YXRpb24uIEl0IHdpbGwgYmUgdXNlZnVsIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVyZmFjaW5nIHdpdGggdGhlIHJlYWQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDE6XHRzdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcbiA4MDI6XHR7XG4gODAzOlx0XHR1MTYgYWRkciwgYWRkcl9sZW4gPSA4LCBjaGVja3N1bSA9IDA7XG4gODA0Olx0XG4gODA1Olx0XHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuIDgwNjpcdFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbiA4MDc6XHRcdG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiA4MDg6XHRcbiA4MDk6XHRcdGlmIChzdGFydCAmIzQzOyBjb3VudCBcdTAwM2U9IG5pYy1cdTAwM2VlZXByb21fd2MpXG4gODEwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDgxMTpcdFxuIDgxMjpcdFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjIHN0YXJ0ICYjNDM7IGNvdW50OyBhZGRyJiM0MzsmIzQzOylcbiA4MTM6XHRcdFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgYWRkciwgbmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG4gODE0Olx0XG4gODE1Olx0XHQvKiBUaGUgY2hlY2tzdW0sIHN0b3JlZCBpbiB0aGUgbGFzdCB3b3JkLCBpcyBjYWxjdWxhdGVkIHN1Y2ggdGhhdFxuIDgxNjpcdFx0ICogdGhlIHN1bSBvZiB3b3JkcyBzaG91bGQgYmUgMHhCQUJBICovXG4gODE3Olx0XHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMTsgYWRkciYjNDM7JiM0MzspXG4gODE4Olx0XHRcdGNoZWNrc3VtICYjNDM7PSBsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbiA4MTk6XHRcdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuIDgyMDpcdFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgbmljLVx1MDAzZWVlcHJvbV93YyAtIDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA2MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlbCBFMTAwIEVFUFJPTSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgRTEwMCBFRVBST00gY29kZSwgYW5kIEkmIzM5O3ZlIGhpdCBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBlMTAwX2VlcHJvbV9zYXZlYCBmdW5jdGlvbiwgdW5saWtlIGBlMTAwX2VlcHJvbV9sb2FkYCwgc2VlbXMgdG8gYmUgbWlzc2luZyBhIGNydWNpYWwgYm91bmRzIGNoZWNrIG9uIGBhZGRyX2xlbmAuIEl0IGRvZXMgdGhpczogYG5pYy0mZ3Q7ZWVwcm9tX3djID0gMSAmbHQ7Jmx0OyBhZGRyX2xlbjtgLiBOb3csIGBhZGRyX2xlbmAgaXMgYSBgdTE2YCwgcmlnaHQ/IFNvLCBpZiBgYWRkcl9sZW5gIGlzIDE2LCB3aGljaCBpcyBwb3NzaWJsZSBnaXZlbiB0aGUgZGF0YSB0eXBlLCBgMSAmbHQ7Jmx0OyBhZGRyX2xlbmAgaXMgZ29pbmcgdG8gYmUgYDEgJmx0OyZsdDsgMTZgLCB3aGljaCBlcXVhbHMgNjU1MzYuICBUaGUgcHJvYmxlbSBpcyBgbmljLSZndDtlZXByb21fd2NgIGlzIGFsc28gYSBgdTE2YCwgc28gdGhlIHJlc3VsdCB3aWxsIGdldCB0cnVuY2F0ZWQgdG8gMCwgd2hpY2ggaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IGEgKmNyYXNoKiwgYnV0IGl0JiMzOTtzIGNsZWFybHkgdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCBjb3VsZCBsZWFkIHRvIGNvcnJ1cHRpb24uCgpXYWl0IGEgc2Vjb25k4oCmIExvb2tpbmcgYmFjayBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2VzIHdlcmUgb25seSBhcHBsaWVkIHRvIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3JlYWRgLgoKTGV0JiMzOTtzIGZvY3VzIG9uIHRoYXQgcGF0Y2ggc25pcHBldCBmcm9tIGBlMTAwX2VlcHJvbV9yZWFkYDoKYGBgYwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CmBgYApUaGF0JiMzOTtzIGluIGBlMTAwX2VlcHJvbV9yZWFkYC4gR29vZC4gU2luY2UgYGUxMDBfZWVwcm9tX3NhdmVgIGNhbGxzIGBlMTAwX2VlcHJvbV9yZWFkYCwgdGhhdCBmaXggKndpbGwqIGJlbmVmaXQgYGUxMDBfZWVwcm9tX3NhdmVgLiBUaGF0JiMzOTtzIGEgcmVsaWVmLCBpdCYjMzk7cyBhIGJpdCBtb3JlIGVsZWdhbnQgdGhhbiB0aGUgY2hlY2sgSSB0aG91Z2h0IHdhcyBtaXNzaW5nLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBwcm9wZXJseSBoYW5kbGVkIGluIG90aGVyIGNhbGxlcnMuCgpTbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmU6IGBlMTAwX3Byb2JlYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX2xvYWRgKSwgYGUxMDBfZGlhZ190ZXN0YCAoYWxzbyBjYWxscyBgZTEwMF9lZXByb21fbG9hZGApLCBgZTEwMF9nZXRfZWVwcm9tYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX3JlYWRgKSwgYW5kIGBlMTAwX3NldF9lZXByb21gICh3aGljaCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAgLSZndDsgYGUxMDBfZWVwcm9tX3JlYWRgKS4KCk5vdywgYGUxMDBfcHJvYmVgIGlzIGludGVyZXN0aW5nLiBJdCYjMzk7cyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCBydW5zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFN5emthbGxlciBjYW4gcHJvYmFibHkgdHJpZ2dlciBpdCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLiAgVGhlIG90aGVycywgYGUxMDBfZGlhZ190ZXN0YCwgYGUxMDBfZ2V0X2VlcHJvbWAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCwgYXJlIGFsbCBldGh0b29sIG9wZXJhdGlvbnMsIHNvIHRoZXkmIzM5O3JlIHRyaWdnZXJlZCB2aWEgaW9jdGxzIG9uIHRoZSBuZXR3b3JrIGRldmljZS4KCkkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGBlMTAwX2dldF9lZXByb21gIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBpbiBgZTEwMC5jYCBub3cgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gd2F0Y2ggZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1NDUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjU0NTpcdHN0YXRpYyBpbnQgZTEwMF9nZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4yNTQ2Olx0XHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxuMjU0NzpcdHtcbjI1NDg6XHRcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XG4yNTQ5Olx0XG4yNTUwOlx0XHRlZXByb20tXHUwMDNlbWFnaWMgPSBFMTAwX0VFUFJPTV9NQUdJQztcbjI1NTE6XHRcdG1lbWNweShieXRlcywgXHUwMDI2KCh1OCAqKW5pYy1cdTAwM2VlZXByb20pW2VlcHJvbS1cdTAwM2VvZmZzZXRdLCBlZXByb20tXHUwMDNlbGVuKTtcbjI1NTI6XHRcbjI1NTM6XHRcdHJldHVybiAwO1xuMjU1NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBFRVBST00gSW50ZXJhY3Rpb24gaW4gdGhlIGUxMDAgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMF9nZXRfZWVwcm9tYCB3YXMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gcmVhZGluZyBmcm9tIHRoZSBFRVBST00uIEJ1dCwgd2FpdCwgdGhhdCYjMzk7cyBub3QgcmlnaHQuIEl0IGp1c3QgY29waWVzIGRhdGEgZnJvbSBgbmljLSZndDtlZXByb21gLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZTEwMF9lZXByb21fbG9hZGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUuICpUaGF0JiMzOTtzKiB0aGUgb25lIHRoYXQgYWN0dWFsbHkgcmVhZHMgdGhlIEVFUFJPTSBkYXRhIGludG8gYG5pYy0mZ3Q7ZWVwcm9tYC4gU28sIHRoYXQgbWVhbnMgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgYW5kIGRpYWdub3N0aWMgdGVzdCBwaGFzZXMuCgpBbmQsIGxvb2tpbmcgYXQgYGUxMDBfc2V0X2VlcHJvbWAsIHRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIHRvIHNhdmUgdGhlIEVFUFJPTSBjb250ZW50cy4gVGhpcyBvbmUgY2FsbHMgYGUxMDBfZWVwcm9tX3NhdmVgLCB3aGljaCB0aGVuIGNhbGxzIHRoZSByZWFkL3dyaXRlIGZ1bmN0aW9ucyBgZTEwMF9lZXByb21fcmVhZGAgYW5kIGBlMTAwX2VlcHJvbV93cml0ZWAuCgpUaGVyZWZvcmUsIGlmIEkgd2VyZSB0byBmb2N1cyBvbiB0aGUga2V5IGVudHJ5cG9pbnRzLCBpdCB3b3VsZCBiZSB0aGVzZSBmdW5jdGlvbnM6IGBlMTAwX3Byb2JlYCwgYGUxMDBfZGlhZ190ZXN0YCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuCgpOb3csIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgYSBzdGFuZGFyZCBQQ0kgcHJvYmUgZnVuY3Rpb24uIFVzdWFsbHksIEkgd291bGRuJiMzOTt0IGJvdGhlciBsaXN0aW5nIHRoZXNlLCBiZWNhdXNlIHRoZXkmIzM5O3JlIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgYnkgdGhlIHN5c3RlbSB3aGVuIHRoZSBkZXZpY2UgaXMgYWRkZWQsIGFuZCBTeXprYWxsZXImIzM5O3MgUENJIGluamVjdGlvbiB3aWxsIHRyaWdnZXIgdGhlbS4gSG93ZXZlciwgaXQmIzM5O3Mgbm90IHN0cmljdGx5IGluY29ycmVjdCB0byBsaXN0IGl0LCBzbyBJJiMzOTtsbCBsZWF2ZSBpdCBpbiBmb3Igbm93LgoKSG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQ3JhcCwgYGUxMDBfcHJvYmVgIGlzIHN0YXRpYy4gQW5kIG5vdyBJIHJlYWxpemUsIGFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyEKCmBgYGMKc3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQpzdGF0aWMgdm9pZCBlMTAwX2RpYWdfdGVzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZXRodG9vbF90ZXN0ICp0ZXN0LCB1NjQgKmRhdGEpCnN0YXRpYyBpbnQgZTEwMF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpCmBgYAoKVGhlIGFkZHJlc3NlcyBvZiB0aGVzZSBmdW5jdGlvbnMgbWF5IG5vdCBiZSBleHBvcnRlZCBiZWNhdXNlIG9mIHRoZSBgc3RhdGljYCBrZXl3b3JkLCBidXQgdGhleSBhcmUgc3RpbGwgdXNlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB3aXRoaW4gdGhlIGBwY2lfZHJpdmVyYCBhbmQgYGV0aHRvb2xfb3BzYCBzdHJ1Y3R1cmVzLiBTbyBTeXprYWxsZXIgY2FuIHN0aWxsIHN5bWJvbGl6ZSB0aGVtLiBJIGtub3cgZm9yIHN1cmUgdGhleSYjMzk7cmUgbm90IGlubGluZWQgYmVjYXVzZSB0aGV5JiMzOTtyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2UxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NTIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xNzc9TU9EVUxFX1BBUk1fREVTQyh1c2VfaW8sIFwmIzM0O0ZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBlMTAwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2LVx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZTEwMF9pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDg6c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MTU6c3RhdGljIHZvaWQgZTEwMF9lbmFibGVfaXJxKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjAtXHRpb3dyaXRlOChpcnFfbWFza19ub25lLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5jbWRfaGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYyMTpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjItXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jaywgZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjI1OnN0YXRpYyB2b2lkIGUxMDBfZGlzYWJsZV9pcnEoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYzMC1cdGlvd3JpdGU4KGlycV9tYXNrX2FsbCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VzY2IuY21kX2hpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MzE6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMyLVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZuaWMtXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYzNTpzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzktXHRpb3dyaXRlMzIoc2VsZWN0aXZlX3Jlc2V0LCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY0MDpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDIwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0My1cdGlvd3JpdGUzMihzb2Z0d2FyZV9yZXNldCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2Vwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NDQ6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSgyMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0Ni1cdC8qIE1hc2sgb2ZmIG91ciBpbnRlcnJ1cHQgbGluZSAtIGl0JiMzOTtzIHVubWFza2VkIGFmdGVyIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQ3Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY1MDpzdGF0aWMgaW50IGUxMDBfc2VsZl90ZXN0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjAtXHRpb3dyaXRlMzIoc2VsZnRlc3QgfCBkbWFfYWRkciwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2Vwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjE6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjYyLVx0LyogV2FpdCAxMCBtc2VjIGZvciBzZWxmLXRlc3QgdG8gY29tcGxldGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY1LVx0LyogSW50ZXJydXB0cyBhcmUgZW5hYmxlZCBhZnRlciBzZWxmLXRlc3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjY6XHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjgzOnN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjk5LVx0XHRpb3dyaXRlOChlZWNzIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzAwOlx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwNS1cdFx0XHRpb3dyaXRlOChjdHJsLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MDY6XHRcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwOC1cdFx0XHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzA5Olx0XHRcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcxMC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTUtXHRcdGlvd3JpdGU4KDAsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjcxNjpcdFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzE3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjAtLyogR2VuZXJhbCB0ZWNobmlxdWUgc3RvbGVuIGZyb20gdGhlIGVlcHJvMTAwIGRyaXZlciAtIHZlcnkgY2xldmVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczMS1cdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MzI6XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczNy1cdFx0aW93cml0ZTgoY3RybCwgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzM4Olx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzQwLVx0XHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXHUwMDI2bmljLVx1MDAzZWNzci1cdTAwM2VlZXByb21fY3RybF9sbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzQxOlx0XHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2MC1cdGlvd3JpdGU4KDAsIFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc2MTpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY2LS8qIExvYWQgZW50aXJlIEVFUFJPTSBpbWFnZSBpbnRvIGRyaXZlciBjYWNoZSBhbmQgdmFsaWRhdGUgY2hlY2tzdW0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03Njgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzEtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NDpcdFx0bmljLVx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgYWRkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg1LVx0XHRpZiAoYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMC0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODAxOnN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwNS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODA2Olx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDctXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxMi1cdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYyBzdGFydCAmIzQzOyBjb3VudDsgYWRkciYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODEzOlx0XHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBhZGRyLCBuaWMtXHUwMDNlZWVwcm9tW2FkZHJdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxOS1cdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMDpcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMS1cdFx0bmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MjctI2RlZmluZSBFMTAwX1dBSVRfU0NCX0ZBU1QgMjAgICAgICAgLyogZGVsYXkgbGlrZSB0aGUgb2xkIGNvZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4Mjg6c3RhdGljIGludCBlMTAwX2V4ZWNfY21kKHN0cnVjdCBuaWMgKm5pYywgdTggY21kLCBkbWFfYWRkcl90IGRtYV9hZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTg1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NTk6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTg2MC1cdGludCAoKmNiX3ByZXBhcmUpKHN0cnVjdCBuaWMgKiwgc3RydWN0IGNiICosIHN0cnVjdCBza19idWZmICopKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTItXHR3aGlsZSAobmljLVx1MDAzZWNiX3RvX3NlbmQgIT0gbmljLVx1MDAzZWNiX3RvX3VzZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjg5MzpcdFx0aWYgKHVubGlrZWx5KGUxMDBfZXhlY19jbWQobmljLCBuaWMtXHUwMDNlY3VjX2NtZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTQtXHRcdFx0bmljLVx1MDAzZWNiX3RvX3NlbmQtXHUwMDNlZG1hX2FkZHIpKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0xMDAxPXN0YXRpYyB1MTYgbWRpb19jdHJsX3BoeV9taWlfZW11bGF0ZWQoc3RydWN0IG5pYyAqbmljLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMDQzOnN0YXRpYyBpbmxpbmUgaW50IGUxMDBfcGh5X3N1cHBvcnRzX21paShzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEwNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA1MTpzdGF0aWMgdm9pZCBlMTAwX2dldF9kZWZhdWx0cyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA1Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEwODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NDpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDg1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMC1cdGNvbmZpZy1cdTAwM2V0eF91bmRlcnJ1bl9yZXRyeSA9IDB4MztcdC8qICMgb2YgdW5kZXJydW4gcmV0cmllcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjExMDE6XHRpZiAoZTEwMF9waHlfc3VwcG9ydHNfbWlpKG5pYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMi1cdFx0Y29uZmlnLVx1MDAzZW1paV9tb2RlID0gMTsgICAgICAgICAgIC8qIDE9TUlJIG1vZGUsIDA9aTgyNTAzIG1vZGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTIzMy0vKiBJbml0aWFsaXplIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTIzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEyMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjI6c3RhdGljIGludCBlMTAwX3NldHVwX3Vjb2RlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIzLVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzI4Olx0LyogSXQmIzM5O3Mgbm90IGEgcmVhbCBza2I7IHdlIGp1c3QgYWJ1c2VkIHRoZSBmYWN0IHRoYXQgZTEwMF9leGVjX2NiXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyOS1cdCAgIHdpbGwgcGFzcyBpdCB0aHJvdWdoIHRvIGhlcmUuLi4gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzUyOnN0YXRpYyBpbmxpbmUgaW50IGUxMDBfbG9hZF91Y29kZV93YWl0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzUzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzU4Olx0ZncgPSBlMTAwX3JlcXVlc3RfZmlybXdhcmUobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzU5LVx0LyogSWYgaXQmIzM5O3MgTlVMTCwgdGhlbiBubyB1Y29kZSBpcyByZXF1aXJlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzNjM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsICh2b2lkICopZncsIGUxMDBfc2V0dXBfdWNvZGUpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzY0LVx0XHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVx1MDAzZW5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM3MC1cdC8qIHdhaXQgZm9yIGNvbXBsZXRpb24gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzcxOlx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNzItXHR1ZGVsYXkoMTApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzOTI6c3RhdGljIGludCBlMTAwX3NldHVwX2lhYWRkcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5My1cdHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMDpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwODpzdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0Ny0jZGVmaW5lIE5TQ19DT05HX1RYUkVBRFlcdDB4MDQwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NDg6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDQ5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ2Ny1cdFx0ICogbG9va3VwIG9mIEVFUFJPTSB2YWx1ZXMgd2hpY2ggbWF5IGVhc2lseSBiZSB1bnJlbGlhYmxlLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0Njg6XHRcdGlmIChlMTAwX3BoeV9jaGVja193aXRob3V0X21paShuaWMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NjktXHRcdFx0cmV0dXJuIDA7IC8qIHNpbXBseSByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0MTpzdGF0aWMgaW50IGUxMDBfaHdfaW5pdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0NTpcdGUxMDBfaHdfcmVzZXQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDc6XHRuZXRpZl9lcnIobmljLCBodywgbmljLVx1MDAzZW5ldGRldiwgXCYjMzQ7ZTEwMF9od19pbml0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQ4Olx0aWYgKChlcnIgPSBlMTAwX3NlbGZfdGVzdChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ5LVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1MTpcdGlmICgoZXJyID0gZTEwMF9waHlfaW5pdChuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTUyLVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NTM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfbG9hZF9iYXNlLCAwKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1NC1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU1Olx0aWYgKChlcnIgPSBlMTAwX2V4ZWNfY21kKG5pYywgcnVjX2xvYWRfYmFzZSwgMCkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTYtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1NzpcdGlmICgoZXJyID0gZTEwMF9sb2FkX3Vjb2RlX3dhaXQobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1OC1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU5Olx0aWYgKChlcnIgPSBlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjAtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MTpcdGlmICgoZXJyID0gZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTYyLVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NjM6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9hZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjQtXHRcdG5pYy1cdTAwM2VkbWFfYWRkciAmIzQzOyBvZmZzZXRvZihzdHJ1Y3QgbWVtLCBzdGF0cykpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTY1LVx0XHRyZXR1cm4gZXJyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NjY6XHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9yZXNldCwgMCkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjctXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTY5Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU3NDpzdGF0aWMgaW50IGUxMDBfbXVsdGkoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1OTI6c3RhdGljIHZvaWQgZTEwMF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTYxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjExOlx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9jb25maWd1cmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTI6XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX211bHRpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjEzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTU6c3RhdGljIHZvaWQgZTEwMF91cGRhdGVfc3RhdHMoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2NzI6XHRpZiAoZTEwMF9leGVjX2NtZChuaWMsIGN1Y19kdW1wX3Jlc2V0LCAwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjczLVx0XHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY3NzpzdGF0aWMgdm9pZCBlMTAwX2FkanVzdF9hZGFwdGl2ZV9pZnMoc3RydWN0IG5pYyAqbmljLCBpbnQgc3BlZWQsIGludCBkdXBsZXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTQtXHRcdGlmIChuaWMtXHUwMDNlYWRhcHRpdmVfaWZzICE9IHByZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY5NTpcdFx0XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjk5OnN0YXRpYyB2b2lkIGUxMDBfd2F0Y2hkb2coc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MjktXHRpb3dyaXRlOChpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlc2NiLmNtZF9oaSkgfCBpcnFfc3dfZ2VuLFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlc2NiLmNtZF9oaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczMDpcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzMxLVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNm5pYy1cdTAwM2VjbWRfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzMzOlx0ZTEwMF91cGRhdGVfc3RhdHMobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzM0Olx0ZTEwMF9hZGp1c3RfYWRhcHRpdmVfaWZzKG5pYywgc3BlZWQsIGNtZC5kdXBsZXgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzctXHRcdC8qIElzc3VlIGEgbXVsdGljYXN0IGNvbW1hbmQgdG8gd29ya2Fyb3VuZCBhIDU1NyBsb2NrIHVwICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczODpcdFx0ZTEwMF9zZXRfbXVsdGljYXN0X2xpc3QobmljLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUwOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3NTEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3ODQ6c3RhdGljIG5ldGRldl90eF90IGUxMDBfeG1pdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3ODUtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzkzLVx0XHQgICBpc3N1aW5nIHRoZSBUeCBjb21tYW5kLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3OTQ6XHRcdGlmIChlMTAwX2V4ZWNfY21kKG5pYywgY3VjX25vcCwgMCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc5NS1cdFx0XHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgwMDpcdGVyciA9IGUxMDBfZXhlY19jYihuaWMsIHNrYiwgZTEwMF94bWl0X3ByZXBhcmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMDpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4NjM6c3RhdGljIHZvaWQgZTEwMF9jbGVhbl9jYnMoc3RydWN0IG5pYyAqbmljKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4NjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4ODc6c3RhdGljIGludCBlMTAwX2FsbG9jX2NicyhzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkxNjpzdGF0aWMgaW5saW5lIHZvaWQgZTEwMF9zdGFydF9yZWNlaXZlcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjUtXHRpZiAocngtXHUwMDNlc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkyNjpcdFx0ZTEwMF9leGVjX2NtZChuaWMsIHJ1Y19zdGFydCwgcngtXHUwMDNlZG1hX2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjctXHRcdG5pYy1cdTAwM2VydV9ydW5uaW5nID0gUlVfUlVOTklORztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMS0jZGVmaW5lIFJGRF9CVUZfTEVOIChzaXplb2Yoc3RydWN0IHJmZCkgJiM0MzsgVkxBTl9FVEhfRlJBTUVfTEVOICYjNDM7IEVUSF9GQ1NfTEVOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE5MzI6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX3NrYihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTk2NDpzdGF0aWMgaW50IGUxMDBfcnhfaW5kaWNhdGUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5NjUtXHR1bnNpZ25lZCBpbnQgKndvcmtfZG9uZSwgdW5zaWduZWQgaW50IHdvcmtfdG9fZG8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIwNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjA2MzpzdGF0aWMgdm9pZCBlMTAwX3J4X2NsZWFuKHN0cnVjdCBuaWMgKm5pYywgdW5zaWduZWQgaW50ICp3b3JrX2RvbmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA2NC1cdHVuc2lnbmVkIGludCB3b3JrX3RvX2RvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDcyLVx0Zm9yIChyeCA9IG5pYy1cdTAwM2VyeF90b19jbGVhbjsgcngtXHUwMDNlc2tiOyByeCA9IG5pYy1cdTAwM2VyeF90b19jbGVhbiA9IHJ4LVx1MDAzZW5leHQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDczOlx0XHRlcnIgPSBlMTAwX3J4X2luZGljYXRlKG5pYywgcngsIHdvcmtfZG9uZSwgd29ya190b19kbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA3NC1cdFx0LyogSGl0IHF1b3RhIG9yIG5vIG1vcmUgdG8gY2xlYW4gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA5My1cdGZvciAocnggPSBuaWMtXHUwMDNlcnhfdG9fdXNlOyAhcngtXHUwMDNlc2tiOyByeCA9IG5pYy1cdTAwM2VyeF90b191c2UgPSByeC1cdTAwM2VuZXh0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjA5NDpcdFx0aWYgKHVubGlrZWx5KGUxMDBfcnhfYWxsb2Nfc2tiKG5pYywgcngpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDk1LVx0XHRcdGJyZWFrOyAvKiBCZXR0ZXIgbHVjayBuZXh0IHRpbWUgKHNlZSB3YXRjaGRvZykgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzNi1cdFx0aW93cml0ZTgoc3RhdF9hY2tfcm5yLCBcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZXNjYi5zdGF0X2Fjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjEzNzpcdFx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIG5pYy1cdTAwM2VyeF90b19jbGVhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzOC1cdFx0aWYgKHdvcmtfZG9uZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTQzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW5fbGlzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE0NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE2NjpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2NfbGlzdChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxODAtXHRcdHJ4LVx1MDAzZXByZXYgPSAoaSA9PSAwKSA/IG5pYy1cdTAwM2VyeHMgJiM0MzsgY291bnQgLSAxIDogcnggLSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxODE6XHRcdGlmIChlMTAwX3J4X2FsbG9jX3NrYihuaWMsIHJ4KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxODI6XHRcdFx0ZTEwMF9yeF9jbGVhbl9saXN0KG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE4My1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjA2OnN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI2LVx0aWYgKGxpa2VseShuYXBpX3NjaGVkdWxlX3ByZXAoXHUwMDI2bmljLVx1MDAzZW5hcGkpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMjc6XHRcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI4LVx0XHRfX25hcGlfc2NoZWR1bGUoXHUwMDI2bmljLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzQ6c3RhdGljIGludCBlMTAwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzk6XHRlMTAwX3J4X2NsZWFuKG5pYywgXHUwMDI2d29ya19kb25lLCBidWRnZXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDA6XHRlMTAwX3R4X2NsZWFuKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI0MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI0Ny1cdGlmIChsaWtlbHkobmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHdvcmtfZG9uZSkpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDg6XHRcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNTMtI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1NDpzdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjU1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjU4Olx0ZTEwMF9kaXNhYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNTk6XHRlMTAwX2ludHIobmljLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjA6XHRlMTAwX3R4X2NsZWFuKG5pYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2MTpcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNjU6c3RhdGljIGludCBlMTAwX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB2b2lkICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjczLVx0ZXRoX2h3X2FkZHJfc2V0KG5ldGRldiwgYWRkci1cdTAwM2VzYV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjc0Olx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI3OTpzdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg4OnN0YXRpYyBpbnQgZTEwMF91cChzdHJ1Y3QgbmljICpuaWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MjpcdGlmICgoZXJyID0gZTEwMF9yeF9hbGxvY19saXN0KG5pYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTMtXHRcdHJldHVybiBlcnI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5NDpcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5NS1cdFx0Z290byBlcnJfcnhfY2xlYW5fbGlzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk2Olx0aWYgKChlcnIgPSBlMTAwX2h3X2luaXQobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5Ny1cdFx0Z290byBlcnJfY2xlYW5fY2JzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyOTg6XHRlMTAwX3NldF9tdWx0aWNhc3RfbGlzdChuaWMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk5Olx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDAtXHRtb2RfdGltZXIoXHUwMDI2bmljLVx1MDAzZXdhdGNoZG9nLCBqaWZmaWVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzAxOlx0aWYgKChlcnIgPSByZXF1ZXN0X2lycShuaWMtXHUwMDNlcGRldi1cdTAwM2VpcnEsIGUxMDBfaW50ciwgSVJRRl9TSEFSRUQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwMi1cdFx0bmljLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lLCBuaWMtXHUwMDNlbmV0ZGV2KSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDctXHQgKiBkaXNhYmxlIGludHMmIzQzO3NjaGVkdWxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMwODpcdGUxMDBfZW5hYmxlX2lycShuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxMy1lcnJfY2xlYW5fY2JzOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMTQ6XHRlMTAwX2NsZWFuX2NicyhuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTUtZXJyX3J4X2NsZWFuX2xpc3Q6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMxNjpcdGUxMDBfcnhfY2xlYW5fbGlzdChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTctXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjA6c3RhdGljIHZvaWQgZTEwMF9kb3duKHN0cnVjdCBuaWMgKm5pYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyNC1cdG5ldGlmX3N0b3BfcXVldWUobmljLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyNTpcdGUxMDBfaHdfcmVzZXQobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzI2LVx0ZnJlZV9pcnEobmljLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBuaWMtXHUwMDNlbmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyOC1cdG5ldGlmX2NhcnJpZXJfb2ZmKG5pYy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjk6XHRlMTAwX2NsZWFuX2NicyhuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMzA6XHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMxLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMzM6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNDI6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzUxLVx0aWYgKG5ldGlmX3J1bm5pbmcobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNTI6XHRcdGUxMDBfZG93bihuZXRkZXZfcHJpdihuZXRkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzUzOlx0XHRlMTAwX3VwKG5ldGRldl9wcml2KG5ldGRldikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1ODpzdGF0aWMgaW50IGUxMDBfbG9vcGJhY2tfdGVzdChzdHJ1Y3QgbmljICpuaWMsIGVudW0gbG9vcGJhY2sgbG9vcGJhY2tfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzY4Olx0aWYgKChlcnIgPSBlMTAwX3J4X2FsbG9jX2xpc3QobmljKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2OS1cdFx0cmV0dXJuIGVycjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzcwOlx0aWYgKChlcnIgPSBlMTAwX2FsbG9jX2NicyhuaWMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzcxLVx0XHRnb3RvIGVycl9jbGVhbl9yeDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3Ny1cdG5pYy1cdTAwM2Vsb29wYmFjayA9IGxvb3BiYWNrX21vZGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM3ODpcdGlmICgoZXJyID0gZTEwMF9od19pbml0KG5pYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNzktXHRcdGdvdG8gZXJyX2xvb3BiYWNrX25vbmU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM4NTpcdGUxMDBfc3RhcnRfcmVjZWl2ZXIobmljLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzg2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzkyLVx0bWVtc2V0KHNrYi1cdTAwM2VkYXRhLCAweEZGLCBFVEhfREFUQV9MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzOTM6XHRlMTAwX3htaXRfZnJhbWUoc2tiLCBuaWMtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDA2LVx0bmljLVx1MDAzZWxvb3BiYWNrID0gbGJfbm9uZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA3Olx0ZTEwMF9jbGVhbl9jYnMobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA4Olx0ZTEwMF9od19yZXNldChuaWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MDktZXJyX2NsZWFuX3J4OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MTA6XHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDExLVx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDE5OnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDIwLVx0XHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDI5OnN0YXRpYyBpbnQgZTEwMF9zZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzNi1cdGVyciA9IG1paV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncyhcdTAwMjZuaWMtXHUwMDNlbWlpLCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0Mzc6XHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDQyOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDQzLVx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ1MS0jZGVmaW5lIEUxMDBfUEhZX1JFR1MgMHgxRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NTI6c3RhdGljIGludCBlMTAwX2dldF9yZWdzX2xlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NjI6c3RhdGljIHZvaWQgZTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NjMtXHRzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpwKVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDQxNQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBlMTAwYCBEcml2ZXImIzM5O3MgRW50cnlwb2ludCBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHJldmlzaXRpbmcgdGhlIGBlMTAwX3Byb2JlYCBmdW5jdGlvbiBhbmQgbmVlZCB0byBjbGFyaWZ5IHNvbWV0aGluZy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgaXQgbWlnaHQgYmUgbm9uLXN0YXRpYywgYnV0IGl0JiMzOTtzIGNsZWFybHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW4gdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKYGBgCgpOb3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIGlubGluZXMgc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIElmIGV2ZXJ5dGhpbmcgaXMgc3RhdGljLCBJIHNob3VsZCBiZSB1c2luZyB0aGUgc3RhdGljIGZ1bmN0aW9ucyB0aGF0ICphcmVuJiMzOTt0KiBpbmxpbmVkLiBGdW5jdGlvbnMgbGlrZSBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBjb21lIHRvIG1pbmQgc2luY2UgdGhleSBhcmUgYWxsIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycy4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2suIEkgc2VlIHRoYXQgYGUxMDBfcHJvYmVgIGlzLCBpbiBmYWN0LCBwYXNzZWQgdG8gYHN0cnVjdCBwY2lfZHJpdmVyIGUxMDBfZHJpdmVyYC4gVGhhdCBtYWtlcyBzZW5zZS4KCk9rYXksIHRoaXMgbG9naWMgbWFrZXMgc2Vuc2UuIFRvIGVuc3VyZSBJJiMzOTttIGNvbXBsaWFudCwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZTEwMC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBmbG9hdGluZyBhcm91bmQgaW4gdGhlcmUuIEdvdHRhIGNvdmVyIG15IGJhc2VzIGhlcmUgYW5kIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMDAKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkUxMDAgRHJpdmVyIFNwZWN1bGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgaGVyZSwgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyBgXnZvaWQgZTEwMF9gLiBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IHRoZSBjb250ZXh0LiBUaGlzIGxpa2VseSByZWZlcmVuY2VzIGEgZnVuY3Rpb24gb3Igc3RydWN0dXJlIHJlbGF0ZWQgdG8gdGhlIEludGVsIGUxMDAgbmV0d29yayBkcml2ZXIuIFRoZSBgdm9pZGAgcmV0dXJuIHR5cGUgc3VnZ2VzdHMgYSBiYXNpYyBmdW5jdGlvbiwgcG9zc2libHkgYW4gaW50ZXJydXB0IGhhbmRsZXIsIGluaXRpYWxpemF0aW9uIHJvdXRpbmUsIG9yIHBlcmhhcHMgYSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgZG9lc24mIzM5O3QgbmVlZCB0byByZXR1cm4gYW55IHNwZWNpZmljIGRhdGEuIFRoZSBjYXJldCAoYF5gKSBwcmVjZWRpbmcgYHZvaWRgIGNvdWxkIGJlIGEgcG9pbnRlci10by1mdW5jdGlvbi4gSXQgbmVlZHMgdG8gYmUgZXhhbWluZWQgZnJvbSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBkcml2ZXIgZnJhbWV3b3JrLCBsb29raW5nIGF0IGNhbGxzaXRlcyBhbmQgdXNlcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gdGhlIHN5bWJvbCB0YWJsZSBvciBsb29rIGZvciBhIGhlYWRlciBmaWxlIHRoYXQgZGVmaW5lcyBpdCB0byBjb25maXJtIHRoZSBhY3R1YWwgZGVjbGFyYXRpb24gYW5kIHVzYWdlIG9mIHRoZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBzb3VyY2UgY29kZS4gSXMgaXQgYW4gZW50cnkgcG9pbnQ/IEFuIGludGVybmFsIHdvcmtlciBmdW5jdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkmIzM5O2QgdGhlbiBjaGVjayBmb3IgYW55IGtub3duIGlzc3VlcyBvciB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdHMgb3IgbWVtb3J5IGFjY2VzcywgZ2l2ZW4gaXQmIzM5O3MgYW4gb2xkZXIgY2hpcHNldC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUgZm9yIHRoZSBkcml2ZXIgb3IgYSBwbGFjZSB3aGVyZSBleHBsb2l0cyBtaWdodCBiZSBpbnRyb2R1Y2VkLiBJdCBuZWVkcyBhIGRlZXBlciBpbnZlc3RpZ2F0aW9uIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O152b2lkIGUxMDBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzNDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgZXZlcnl0aGluZyYjMzk7cyBidWlsdCBhcm91bmQgc3RhdGljIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBub3QgdW5leHBlY3RlZCwgYW5kIGZyYW5rbHksIG1hbmFnZWFibGUuIEkgc2VlIHdlIGhhdmUgc29tZSBrZXkgcGxheWVycyBoZXJlOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgcHJvYmluZywgZGlhZ25vc3RpYyB0ZXN0aW5nLCBhbmQgRUVQUk9NIGNvbmZpZ3VyYXRpb24sIHJlc3BlY3RpdmVseS4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkcml2ZXImIzM5O3Mgb3BlcmF0aW9uYWwgZmxvdy4KCk5vdywgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdC4gVGhlIGBFMTAwYCBjb25maWcgb3B0aW9uIGl0c2VsZiBpcyBvYnZpb3VzbHkgY2VudHJhbC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaXRzIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgb3B0aW9ucywgaWYgYW55LCBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGBFMTAwYCB0byBiZSBjb3JyZWN0bHkgYnVpbHQgYW5kIGZ1bmN0aW9uYWwuIFNvLCBsZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2suIEkmIzM5O2xsIG5lZWQgdG8gcGFyc2UgdGhhdCBmaWxlIHRvIGRldGVybWluZSB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGBFMTAwYCBhbmQgb3RoZXIgY29tcG9uZW50cywgZW5zdXJpbmcgSSYjMzk7bSBhd2FyZSBvZiBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFMTAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJpZS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjpjb25maWcgRTEwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAmIzQzOyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6NDU6Y29uZmlnIEUxMDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgUFJPLzEwMDAgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6NjE6Y29uZmlnIEUxMDAwRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cdHRyaXN0YXRlIFwmIzM0O0ludGVsKFIpIFBSTy8xMDAwIFBDSS1FeHByZXNzIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04Mi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwNzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyB0aGUgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcgYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQmIzM5O3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBiZWdpbi4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBmaWxlIHN0cnVjdHVyZSwgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIHBhdHRlcm46IGEgYGNvbmZpZ2Agc3RhdGVtZW50LCBhIHByb21wdCwgYSB0eXBlIChib29sLCB0cmlzdGF0ZSwgZXRjLiksIGFuZCBwb3RlbnRpYWxseSBzb21lIGRlcGVuZGVuY2llcyBvciBkZWZhdWx0IHZhbHVlcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gcXVpY2tseSBncmFzcCB3aGljaCBmZWF0dXJlIG9yIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIHRoZXJlLiBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIG9wdGlvbnMgcHJvdmlkZWQuIElzIGl0IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBmYW1pbHksIGEgcGFydGljdWxhciBmZWF0dXJlLCBvciBhIGdlbmVyYWwgZHJpdmVyIHNldHRpbmc/IEtub3dpbmcgdGhlIGNvbnRleHQgb2YgbGluZSAyMiB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZ2V0IHRoZSBnZW5lcmFsIGlkZWEgb2Ygd2hhdCYjMzk7cyBiZWluZyBjb25maWd1cmVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZSwgYW5kIHdoeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMjpcdGNvbmZpZyBFMTAwXG4gIDIzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBQUk8vMTAwJiM0Mzsgc3VwcG9ydFwmIzM0O1xuICAyNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjU6XHRcdHNlbGVjdCBNSUlcbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgUFJPLzEwMCBmYW1pbHkgb2YgYWRhcHRlcnMuXG4gIDI4Olx0XHQgIFRvIHZlcmlmeSB0aGF0IHlvdXIgYWRhcHRlciBpcyBzdXBwb3J0ZWQsIGZpbmQgdGhlIGJvYXJkIElEIG51bWJlclxuICAyOTpcdFx0ICBvbiB0aGUgYWRhcHRlci4gTG9vayBmb3IgYSBsYWJlbCB0aGF0IGhhcyBhIGJhcmNvZGUgYW5kIGEgbnVtYmVyXG4gIDMwOlx0XHQgIGluIHRoZSBmb3JtYXQgMTIzNDU2LTAwMSAoc2l4IGRpZ2l0cyBoeXBoZW4gdGhyZWUgZGlnaXRzKS5cbiAgMzE6XHRcbiAgMzI6XHRcdCAgVXNlIHRoZSBhYm92ZSBpbmZvcm1hdGlvbiBhbmQgdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0XG4gIDMzOlx0XHQgIGNhbiBiZSBsb2NhdGVkIGF0OlxuICAzNDpcdFxuICAzNTpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAgMzY6XHRcbiAgMzc6XHRcdCAgdG8gaWRlbnRpZnkgdGhlIGFkYXB0ZXIuXG4gIDM4Olx0XG4gIDM5Olx0XHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxuICA0MDpcdFx0ICBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9lMTAwLnJzdFx1MDAzZS5cbiAgNDE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NTAKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIG9yIGJ1ZmZlciBvdmVyZmxvd3MuICBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0JiMzOTtzIG5vdCBqdXN0IGEgY29tbWVudCBvciBhIGxvZ2dpbmcgdXBkYXRlLiBJdCYjMzk7cyB0aWdodGVuaW5nIHVwIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgRUVQUk9NIHJlYWRzLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHkuICBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MuICBDcnVjaWFsbHksIFFFTVUgZnVsbHkgZW11bGF0ZXMgdGhpcyBoYXJkd2FyZS4gIFRoYXQgbWVhbnMgdGhlIGRyaXZlciYjMzk7cyBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBhIGtleSByZXF1aXJlbWVudCB0byBkZXRlcm1pbmUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBhcyBwZXIgZ3VpZGVsaW5lcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGVyZSB0aGlzIGNvZGUgaXMgY2FsbGVkLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYC4gIEkgc2F3IHRoYXQgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBgZTEwMF9lZXByb21fbG9hZGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgZnJvbSBhIGNvdXBsZSBvZiBpbXBvcnRhbnQgcGxhY2VzOiBgZTEwMF9wcm9iZWAgKGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24pIGFuZCBhbHNvIGZyb20gYGUxMDBfZGlhZ190ZXN0YC4KCkxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBpbnRlcmVzdGluZyBjYWxsIHNpdGVzIGZvciBgZTEwMF9lZXByb21fcmVhZGAuCgpFeGNlbGxlbnQsIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgaXMgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9zZXRfZWVwcm9tYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlIGBlMTAwX2V0aHRvb2xfb3BzYCwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIHZpYSBldGh0b29sLiBQZXJmZWN0LgoKU28gbXkgJiMzNDtmb2N1cyBzeW1ib2xzJiMzNDsgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgbm93IGNsZWFybHkgZGVmaW5lZDogYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuIEkgY2FuIHVzZSB0aGVzZSBhcyBteSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuCgpSZWdhcmRpbmcgY29uZmlndXJhdGlvbiwgYEUxMDBgIG5lZWRzIHRvIGJlIGVuYWJsZWQsIGFuZCBgUENJYCBpcyB1c3VhbGx5IGVuYWJsZWQgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gVGhlc2UgYXJlIG15IHJlcXVpcmVkICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7LgoKTGV0JiMzOTtzIHF1aWNrbHkgcmV2aWV3IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhIHRvIGJlIGFic29sdXRlbHkgc3VyZTogSSYjMzk7bSBub3QgZGVhbGluZyB3aXRoIGRvY3VtZW50YXRpb24gY2hhbmdlcywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIGlzIGNvcmUgZHJpdmVyIGxvZ2ljIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyBFRVBST00gYWNjZXNzIGFuZCB0aGVyZWZvcmUgaXMgbGlrZWx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcywgc2luY2UgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLiAgU28gYmFzZWQgb24gYWxsIG9mIHRoaXMsICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgaXMgYHRydWVgLgoKRmluYWwgdGhvdWdodHM6IEkgc2hvdWxkIGFkZCBhIGNoZWNrIHRvIG1ha2Ugc3VyZSBgZTEwMF9lZXByb21fcmVhZGAgaXNuJiMzOTt0IGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlIGltcG9ydGFudCwgYnV0IHRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgZ2l2ZW4gdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgdW5kZWZpbmVkIGJlaGF2aW9yIGFuZCB0aGVyZSBhcmUgYSBmZXcgaW50ZXJlc3RpbmcgY2FsbCBzaXRlcyB0byBmb2N1cyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZTEwMF9lZXByb21fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NjgzPXN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MjE6c3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzcyOlx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0Olx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXHRcdGlmIChhZGRyIFx1MDAzYyBuaWMtXHUwMDNlZWVwcm9tX3djIC0gMSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9ODAxPXN0YXRpYyBpbnQgZTEwMF9lZXByb21fc2F2ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBzdGFydCwgdTE2IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE3MQoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBzeW1ib2xzLCBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIGltbWVkaWF0ZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIEVFUFJPTSBGdW5jdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCB3ZSYjMzk7cmUgb25seSBkZWFsaW5nIHdpdGggYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaGVyZS4gR29vZCwgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIE5vdywgSSByZWNhbGwgdGhvc2UgY2FsbHMuIGBlMTAwX2VlcHJvbV9sb2FkYCBnZXRzIGludm9rZWQgYnkgYGUxMDBfcHJvYmVgIGFuZCBhbHNvIGR1cmluZyB0aGUgZGlhZ25vc3RpYyB0ZXN0cywgYGUxMDBfZGlhZ190ZXN0YC4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3RpbmcuIEFuZCBgZTEwMF9lZXByb21fc2F2ZWAsIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGBlMTAwX3NldF9lZXByb21gLCB3aGljaCBoYW5kbGVzIHRoZSBhY3R1YWwgd3JpdGUgb3BlcmF0aW9ucy4gRXhjZWxsZW50LCBzbyB0aGUgcHJpbWFyeSBzeW1ib2xzIHdlJiMzOTtyZSB0cmFja2luZyBhcmUgaW5kZWVkIHRoZSBvbmVzIEkgYW50aWNpcGF0ZWQuIEV2ZXJ5dGhpbmcgYWxpZ25zIGFzIEkgdGhvdWdodCBpdCB3b3VsZC4gVGltZSB0byBtb3ZlIG9uIHRvIHRoZSBuZXh0IHRhc2sgLSBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RTEwMCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2UxMDBfcHJvYmUmIzM0OywKICAgICYjMzQ7ZTEwMF9kaWFnX3Rlc3QmIzM0OywKICAgICYjMzQ7ZTEwMF9zZXRfZWVwcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3IgKGUuZy4gaW52YWxpZCBzaGlmdHMpIGFuZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4gVGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgaTgyNTV4IGZhbWlseSBvZiBOSUNzLCB3aGljaCBpcyBmdWxseSBlbXVsYXRlZCBieSBRRU1VIChlLmcuLCBpODI1NTllciksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCksIGV0aHRvb2wgZGlhZ25vc3RpY3MgKGBlMTAwX2RpYWdfdGVzdGApLCBhbmQgZXRodG9vbCBFRVBST00gd3JpdGUgb3BlcmF0aW9ucyAoYGUxMDBfc2V0X2VlcHJvbWApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFMTAwJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZTEwMF9wcm9iZSYjMzQ7LAogICAgJiMzNDtlMTAwX2RpYWdfdGVzdCYjMzQ7LAogICAgJiMzNDtlMTAwX3NldF9lZXByb20mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXG5cbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jCmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMKQEAgLTc0NCw3ICYjNDM7NzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKQogCQkgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqLwogCQljdHJsID0gaW9yZWFkOCgmYW1wO25pYy0mZ3Q7Y3NyLSZndDtlZXByb21fY3RybF9sbyk7CiAJCWlmICghKGN0cmwgJmFtcDsgZWVkbykgJmFtcDsmYW1wOyBpICZndDsgMTYpIHsKLQkJCSphZGRyX2xlbiAtPSAoaSAtIDE2KTsKJiM0MzsJCQl1MTYgbGVuID0gaSAtIDE2OwomIzQzOwomIzQzOwkJCWlmIChsZW4gJmd0OyAqYWRkcl9sZW4pCiYjNDM7CQkJCSphZGRyX2xlbiA9IDA7CiYjNDM7CQkJZWxzZQomIzQzOwkJCQkqYWRkcl9sZW4gLT0gbGVuOwogCQkJaSA9IDE3OwogCQl9CiAKQEAgLTc2NSw3ICYjNDM7NzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpCiAKIAkvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqLwogCWUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCAwKTsKLQluaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW47CiYjNDM7CiYjNDM7CWlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHsKJiM0MzsJCW5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtJmd0O25ldGRldiwKJiM0MzsJCQkmIzM0O0ludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoICV1XG4mIzM0OywKJiM0MzsJCQlhZGRyX2xlbik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwluaWMtJmd0O2VlcHJvbV93YyA9IDFVICZsdDsmbHQ7IGFkZHJfbGVuOwogCiAJZm9yIChhZGRyID0gMDsgYWRkciAmbHQ7IG5pYy0mZ3Q7ZWVwcm9tX3djOyBhZGRyJiM0MzsmIzQzOykgewogCQluaWMtJmd0O2VlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCAmYW1wO2FkZHJfbGVuLCBhZGRyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIGUxMDAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGUxMDBgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jYC4gSXQgc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBpbXByb3ZpbmcgdGhlIGhhbmRsaW5nIG9mIEVFUFJPTSBhY2Nlc3MsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBmaXggYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgcmVsYXRlZCB0byBgYWRkcl9sZW5gLiAgTG9va2luZyBhdCBgZTEwMF9lZXByb21fcmVhZGAsIHRoZSBjb2RlIG5vdyBjYXJlZnVsbHkgYWRqdXN0cyBgYWRkcl9sZW5gIGlmIGEgc3BlY2lmaWMgY29uZGl0aW9uIGlzbiYjMzk7dCBtZXQgKCBgIShjdHJsICZhbXA7IGVlZG8pICZhbXA7JmFtcDsgaSAmZ3Q7IDE2YCApLCBidXQgaXQgbWFrZXMgc3VyZSB0aGF0IHRoZSB2YWx1ZSBkb2VzbiYjMzk7dCBnbyBuZWdhdGl2ZSBvciBvdmVyZmxvdy4KCkluIGBlMTAwX2VlcHJvbV9sb2FkYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiAmZ3Q7PSAxNilgLiAgVGhpcyBpbW1lZGlhdGVseSBmbGFncyBhbiBpc3N1ZSB3aGVyZSB0aGUgY2FsY3VsYXRlZCBgYWRkcl9sZW5gIGNvdWxkIGJlIGludmFsaWQg4oCTIGVpdGhlciB6ZXJvIG9yIHRvbyBsYXJnZS4gVGhlIGNvZGUgdGhlbiB1c2VzIGBuZXRpZl9lcnJgIHRvIHJlcG9ydCB0aGUgaXNzdWUuICBUaGUgcHJpbWFyeSBwdXJwb3NlIGlzIHByZXZlbnRpbmcgYSBzaGlmdC1vdXQtb2YtYm91bmRzIGVycm9yIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gIFRoZSB2YXJpYWJsZSBgbmljLSZndDtlZXByb21fd2NgIGlzIGRlcml2ZWQgZnJvbSBgMVUgJmx0OyZsdDsgYWRkcl9sZW5gLiBUaGUgb3JpZ2luYWwgbG9naWMgd2FzIGZsYXdlZCwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW5gIHdhcyB0b28gbGFyZ2UgKGkuZS4sIGBhZGRyX2xlbmAgJmd0Oz0gMTYpLiBUaGUgY29kZSBwcm90ZWN0cyBgbmljLSZndDtlZXByb21bYWRkcl1gIGFjY2Vzc2VzLgoKVGhlIHJvb3QgY2F1c2Ugb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhbiBpbnRlZ2VyIHVuZGVyZmxvdyBvciBvdmVyZmxvdywgYW5kIHRoZSByZXN1bHRpbmcgYGFkZHJfbGVuYCBsZWFkcyB0byBlaXRoZXIgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdGluZyBhIHZlcnkgbGFyZ2UgYW1vdW50KSBvciBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyAoYG5pYy0mZ3Q7ZWVwcm9tW2FkZHJdYCkuICBJJiMzOTttIHRoaW5raW5nIEtBU0FOIGFuZCBVQlNBTiB3b3VsZCBiZSB0aGUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gY2F0Y2ggdGhpcyBraW5kIG9mIHByb2JsZW0uIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBpbnZvbHZlZCBoZXJlOyBpdCYjMzk7cyBwdXJlbHkgYWJvdXQgcHJldmVudGluZyBPT0IgYWNjZXNzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IuIFNvLCBLTVNBTiBpc24mIzM5O3QgcmVsZXZhbnQgaW4gdGhpcyBzY2VuYXJpby4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgc2l6ZSBvZiBgbmljLSZndDtlZXByb21gLiBJJiMzOTtsbCBydW4gYSBxdWljayBncmVwIGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGFjdHVhbCBzaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3UxNiBlZXByb21cXFsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBlMTAwLmNgIHdpdGggYSBGb2N1c2VkIEdyZXAqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBlMTAwLmNgIGFnYWluLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gcGlucG9pbnQgYWxsIGluc3RhbmNlcyBvZiBgZWVwcm9tYCB3aXRoaW4gdGhpcyBjb2RlLCBidXQgSSB3YW50IHRvIGJlICpwcmVjaXNlKi4gSSBkb24mIzM5O3Qgd2FudCB0byBnZXQgYm9nZ2VkIGRvd24gd2l0aCBpcnJlbGV2YW50IG1hdGNoZXMgb3Igbm9pc2UgZnJvbSwgc2F5LCBoZWFkZXIgZmlsZSBkZWNsYXJhdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIGhvdyB0aGUgRUVQUk9NIGludGVyYWN0aW9uIGlzIGltcGxlbWVudGVkIGhlcmUsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBpbnN0YW5jZXMgb2YgYGVlcHJvbWAgcmVsYXRlZCB0byB0aGUgY29kZSYjMzk7cyBhY3RpdmUgdXNlLCBub3QgaXRzIG1lcmUgZGVmaW5pdGlvbi4KClRoZXJlZm9yZSwgaW5zdGVhZCBvZiBhIGJyb2FkIHNlYXJjaCwgbGV0JiMzOTtzIHJlZmluZSB0aGlzLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGVlcHJvbWAgd2l0aGluIGBlMTAwLmNgLiBCdXQgSSYjMzk7bSBnb2luZyB0byBleGNsdWRlIGB1MTZgIGZyb20gdGhlIHNlYXJjaCBjcml0ZXJpYS4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgKnVzYWdlKiBub3QgdGhlICpkZWNsYXJhdGlvbiouIFRoYXQgc2hvdWxkIG5hcnJvdyB0aGUgcmVzdWx0cyBzaWduaWZpY2FudGx5LCBnaXZpbmcgbWUgYSBtb3JlIHRhcmdldGVkIHZpZXcgb2YgdGhlIEVFUFJPTSBhY2Nlc3MgcGF0aHMsIHBvdGVudGlhbGx5IGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggaGFyZHdhcmUgYWNjZXNzLCBvciBjYWxscyB0byBFRVBST00gc3BlY2lmaWMgcm91dGluZXMuIEl0JiMzOTtzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBnZXQgYSBnb29kIGJlYXJpbmcgb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHdhZGUgdGhyb3VnaCBkZWZpbml0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZWVwcm9tXFxbJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwMi1cdHUxNiBlZXByb21fd2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjAzOlx0X19sZTE2IGVlcHJvbVsyNTZdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwNC1cdHNwaW5sb2NrX3QgbWRpb19sb2NrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz03Njc9c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgzLVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkciYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODQ6XHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cdFx0aWYgKGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NjpcdFx0XHRjaGVja3N1bSAmIzQzOz0gbGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVthZGRyXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03OTAtXHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTE6XHRpZiAoY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pICE9IG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzkyLVx0XHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVx1MDAzZW5ldGRldiwgXCYjMzQ7RUVQUk9NIGNvcnJ1cHRlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTgwMT1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODEyLVx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjIHN0YXJ0ICYjNDM7IGNvdW50OyBhZGRyJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MTM6XHRcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE3LVx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHImIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgxODpcdFx0Y2hlY2tzdW0gJiM0Mzs9IGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bYWRkcl0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgxOTpcdG5pYy1cdTAwM2VlZXByb21bbmljLVx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMC1cdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIG5pYy1cdTAwM2VlZXByb21fd2MgLSAxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMTpcdFx0bmljLVx1MDAzZWVlcHJvbVtuaWMtXHUwMDNlZWVwcm9tX3djIC0gMV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTQwOD1zdGF0aWMgaW50IGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNDEzOlx0cGh5X3R5cGUgPSAobGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVtlZXByb21fcGh5X2lmYWNlXSkgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweDBmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0NDg9c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMS1cdCAgIChtZGlvX3JlYWQobmV0ZGV2LCBuaWMtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1RQSVNUQVRVUykgXHUwMDI2IDB4ODAwMCkgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTUzMjpcdCAgIChsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2VlcHJvbV9jbmZnX21kaXhdKSBcdTAwMjYgZWVwcm9tX21kaXhfZW5hYmxlZCkpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMy1cdFx0LyogZW5hYmxlL2Rpc2FibGUgTURJL01ESS1YIGF1dG8tc3dpdGNoaW5nLiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yMjc5PXN0YXRpYyBpbnQgZTEwMF9hc2Yoc3RydWN0IG5pYyAqbmljKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgyLVx0cmV0dXJuIChuaWMtXHUwMDNlcGRldi1cdTAwM2VkZXZpY2UgXHUwMDNlPSAweDEwNTApIFx1MDAyNlx1MDAyNiAobmljLVx1MDAzZXBkZXYtXHUwMDNlZGV2aWNlIFx1MDAzYz0gMHgxMDU3KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjgzOlx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bZWVwcm9tX2NvbmZpZ19hc2ZdKSBcdTAwMjYgZWVwcm9tX2FzZikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4NDpcdCAgICEobGUxNl90b19jcHUobmljLVx1MDAzZWVlcHJvbVtlZXByb21fY29uZmlnX2FzZl0pIFx1MDAyNiBlZXByb21fZ2NsKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg1Olx0ICAgKChsZTE2X3RvX2NwdShuaWMtXHUwMDNlZWVwcm9tW2VlcHJvbV9zbWJ1c19hZGRyXSkgXHUwMDI2IDB4RkYpICE9IDB4RkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODQzPXN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1MS1cdGlmICgobmljLVx1MDAzZW1hYyBcdTAwM2U9IG1hY184MjU1OF9EMTAxX0E0KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyOTUyOlx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cdTAwM2VlZXByb21bZWVwcm9tX2lkXSkgXHUwMDI2IGVlcHJvbV9pZF93b2wpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1My1cdFx0bmljLVx1MDAzZWZsYWdzIHw9IHdvbF9tYWdpYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3MwoJCQkJCQkJb3V0cHV0OiAyNjcKCQkJCQkJCXRob3VnaHRzOiA2ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBFRVBST00gVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgX19sZTE2IGVlcHJvbVsyNTZdO2AgYXJyYXkgaW4gdGhlIGBuaWNgIHN0cnVjdHVyZS4gVGhlIHBvdGVudGlhbCBwcm9ibGVtIGlzIHRoYXQgYGFkZHJfbGVuYCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBsb29wIGJvdW5kIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRvIHRoaXMgRUVQUk9NLiBJZiBgYWRkcl9sZW5gIGJlY29tZXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtJmd0O2VlcHJvbV93YyA9IDEgJmx0OyZsdDsgYWRkcl9sZW5gIGlzIGdvaW5nIHRvIHJlc3VsdCBpbiBhIHZhbHVlIG9mIGF0IGxlYXN0IDY1NTM2LCBhbmQgaXQgY2FuIGdyb3cgbXVjaCwgbXVjaCBsYXJnZXIgdGhhbiB0aGF0LiAgVGhhdCYjMzk7cyBhIG1hc3NpdmUgc2hpZnQsIGFuZCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuYCBpcyBsYXJnZSBlbm91Z2gsIHNheSBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLgoKVGhlIHN1YnNlcXVlbnQgbG9vcCB0aGVuIGdvZXMgYW5kIHdyaXRlcyBwYXN0IHRoZSBlbmQgb2YgdGhhdCBmaXhlZC1zaXplIGBuaWMtJmd0O2VlcHJvbVsyNTZdYCBidWZmZXIsIGNyZWF0aW5nIGEgY2xhc3NpYyBvdXQtb2YtYm91bmRzIHdyaXRlLiAgS0FTQU4gaXMgZ29pbmcgdG8gdHJpcCBhbGwgb3ZlciB0aGlzOyBpdCYjMzk7cyBwcmFjdGljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB0aGlzIGtpbmQgb2YgdGhpbmcsIGFuZCBVQlNBTiBzaG91bGQgbmFpbCB0aGUgb3ZlcnNpemVkIHNoaWZ0LiBUaGlzIGlzIHJlYWxseSBhbiBPT0Igd3JpdGUgaXNzdWUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgY2hhbmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGV4cG9zZWQ/IElmIGBhZGRyX2xlbmAgaXMgMCwgdGhlIHByb2dyYW0gY2FuIHJlYWQgYG5pYy0mZ3Q7ZWVwcm9tWzBdYC4gVGhhdCYjMzk7cyBub3QgcmVhbGx5IGFuIGlzc3VlLiAgTm8sIGBlMTAwX2VlcHJvbV9sb2FkYCBqdXN0IHB1bGxzIGRhdGEgZnJvbSB0aGUgRUVQUk9NIGhhcmR3YXJlLCBzbyB0aGVyZSYjMzk7cyBubyB3YXkgdG8gbGVhayB1bmluaXRpYWxpemVkIG1lbW9yeSB0aHJvdWdoIHRoaXMuICBJZiBgYWRkcl9sZW5gIGlzIGxhcmdlLCBpdCB3cml0ZXMgT09COyBpZiBpdCYjMzk7cyBzbWFsbCwgaXQgd3JpdGVzIGZld2VyIGVsZW1lbnRzLiAgSXQmIzM5O3MganVzdCB0aGUgYm91bmRzIGNoZWNrIHdlJiMzOTtyZSB3b3JyaWVkIGFib3V0LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBzaW1wbGU7IGl0IGFkZHMgYSBjaGVjazogYGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gJmd0Oz0gMTYpIHJldHVybiAtRUlOVkFMO2AuIFRoaXMgbmVhdGx5IHByZXZlbnRzIHRoZSBPT0Igd3JpdGUsIGFuZCBhbHNvIG5lYXRseSBwcmV2ZW50cyB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yIG9mIGAxICZsdDsmbHQ7IGFkZHJfbGVuYCB3aGVuIGBhZGRyX2xlbiAmZ3Q7PSAzMmAuCgpTbywgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiB0aGlzIGlzICpzdHJpY3RseSogYW4gT09CIHdyaXRlIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgcHJvYmxlbS4gS0FTQU4gYW5kIFVCU0FOIGFyZSBnb2luZyB0byBoYW5kbGUgdGhpcyBiZWF1dGlmdWxseS4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkIG9yIGNvcGllZCB0byB1c2Vyc3BhY2UuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyB3cml0ZS91bmRlZmluZWQgYmVoYXZpb3IgaW4gdGhlIGUxMDAgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoLCBgYWRkcl9sZW5gLCBhbGxvd3MgYW4gYXR0YWNrZXIgdG8gY2F1c2UgYW4gT09CIHdyaXRlIGJ5IGV4cGxvaXRpbmcgYDEgJmx0OyZsdDsgYWRkcl9sZW5gIHdoaWNoIGdyb3dzIHRvbyBsYXJnZSBmb3IgdGhlIGZpeGVkLXNpemUgYnVmZmVyLiBJdCYjMzk7cyBhIGhlYXAgT09CLiBLQVNBTiBhbmQgVUJTQU4gd2lsbCByZWxpYWJseSBkZXRlY3QgdGhpcy4gVGhpcyBpcyAqbm90KiBhbiBpbmZvcm1hdGlvbiBsZWFrLCBzbyBLTVNBTiBpcyB1bm5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cdTAwM2VlZXByb21fd2MgPSAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXG5cbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcdTAwM2U9IDMyYCkuIFRoaXMgdmFsdWUgaXMgdGhlbiB1c2VkIGFzIHRoZSBsb29wIGJvdW5kIHRvIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGFuZCB3cml0ZSBpbnRvIHRoZSBmaXhlZC1zaXplIGBuaWMtXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5LCBjYXVzaW5nIGEgbWFzc2l2ZSBvdXQtb2YtYm91bmRzIHdyaXRlIG9uIHRoZSBoZWFwIChzaW5jZSBgc3RydWN0IG5pY2AgaXMgYWxsb2NhdGVkIHZpYSBgbmV0ZGV2X3ByaXZgKS5cblxuT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9ycyAobGlrZSBvdmVyc2l6ZWQgc2hpZnRzKSBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIFVCU0FOIChVbmRlZmluZWQgQmVoYXZpb3IgU2FuaXRpemVyKSwgd2hpY2ggYXJlIGFscmVhZHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBmaXggYW55IGlzc3VlcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6MjQuODUzMTMwNzg2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMjA4OTkwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwX3Byb2JlXCIsXG4gICAgXCJlMTAwX2RpYWdfdGVzdFwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxcblxcbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI0Ljg1MzEzNjI2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MTE0NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzE3MTJiNTYzMzM2NDM3NWRkMjRjNTRmMmE4NGE5OTAxNTk4YWYyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xcbmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXFxuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXFxuIFxcdFxcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXFxuIFxcdFxcdGN0cmwgPSBpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbiBcXHRcXHRpZiAoIShjdHJsIFxcdTAwMjYgZWVkbykgXFx1MDAyNlxcdTAwMjYgaSBcXHUwMDNlIDE2KSB7XFxuLVxcdFxcdFxcdCphZGRyX2xlbiAtPSAoaSAtIDE2KTtcXG4rXFx0XFx0XFx0dTE2IGxlbiA9IGkgLSAxNjtcXG4rXFxuK1xcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSAqYWRkcl9sZW4pXFxuK1xcdFxcdFxcdFxcdCphZGRyX2xlbiA9IDA7XFxuK1xcdFxcdFxcdGVsc2VcXG4rXFx0XFx0XFx0XFx0KmFkZHJfbGVuIC09IGxlbjtcXG4gXFx0XFx0XFx0aSA9IDE3O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC03NjUsNyArNzcwLDE1IEBAIHN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuIFxcbiBcXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbiBcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4tXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbitcXG4rXFx0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcXHUwMDNlPSAxNikge1xcbitcXHRcXHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVxcdTAwM2VuZXRkZXYsXFxuK1xcdFxcdFxcdFxcXCJJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0YWRkcl9sZW4pO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxVSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG4gXFxuIFxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuIFxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI1LjM4NTI5MjI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMzNjI3MzU5NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkUxMDBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlMTAwX3Byb2JlXCIsXG4gICAgXCJlMTAwX2RpYWdfdGVzdFwiLFxuICAgIFwiZTEwMF9zZXRfZWVwcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCBkaXNjb3ZlcnkgbG9naWMgaW4gdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciB0byBwcmV2ZW50IHVuZGVmaW5lZCBiZWhhdmlvciAoZS5nLiBpbnZhbGlkIHNoaWZ0cykgYW5kIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLiBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MsIHdoaWNoIGlzIGZ1bGx5IGVtdWxhdGVkIGJ5IFFFTVUgKGUuZy4sIGk4MjU1OWVyKSwgbWFraW5nIGl0IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgUENJIGRldmljZSBwcm9iZSAoYGUxMDBfcHJvYmVgKSwgZXRodG9vbCBkaWFnbm9zdGljcyAoYGUxMDBfZGlhZ190ZXN0YCksIGFuZCBldGh0b29sIEVFUFJPTSB3cml0ZSBvcGVyYXRpb25zIChgZTEwMF9zZXRfZWVwcm9tYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGMxNzEyYjU2MzMzNjQzNzVkZDI0YzU0ZjJhODRhOTkwMTU5OGFmMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE4OjE5OjIzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG5pbmRleCAyOTk2MDc2MmU2NGE4Li4xZGU1Y2Q0MWVhMGNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbkBAIC03NDQsNyArNzQ0LDEyIEBAIHN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxuIFx0XHQgKiBjb21wbGV0ZSBhZGRyZXNzLiAgVXNlIHRoaXMgdG8gYWRqdXN0IGFkZHJfbGVuLiAqL1xuIFx0XHRjdHJsID0gaW9yZWFkOChcdTAwMjZuaWMtXHUwMDNlY3NyLVx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcbiBcdFx0aWYgKCEoY3RybCBcdTAwMjYgZWVkbykgXHUwMDI2XHUwMDI2IGkgXHUwMDNlIDE2KSB7XG4tXHRcdFx0KmFkZHJfbGVuIC09IChpIC0gMTYpO1xuK1x0XHRcdHUxNiBsZW4gPSBpIC0gMTY7XG4rXG4rXHRcdFx0aWYgKGxlbiBcdTAwM2UgKmFkZHJfbGVuKVxuK1x0XHRcdFx0KmFkZHJfbGVuID0gMDtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHQqYWRkcl9sZW4gLT0gbGVuO1xuIFx0XHRcdGkgPSAxNztcbiBcdFx0fVxuIFxuQEAgLTc2NSw3ICs3NzAsMTUgQEAgc3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcbiBcbiBcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXG4gXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIDApO1xuLVx0bmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuK1xuK1x0aWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2U9IDE2KSB7XG4rXHRcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXHUwMDNlbmV0ZGV2LFxuK1x0XHRcdFwiSW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggJXVcXG5cIixcbitcdFx0XHRhZGRyX2xlbik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuK1x0bmljLVx1MDAzZWVlcHJvbV93YyA9IDFVIFx1MDAzY1x1MDAzYyBhZGRyX2xlbjtcbiBcbiBcdGZvciAoYWRkciA9IDA7IGFkZHIgXHUwMDNjIG5pYy1cdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xuIFx0XHRuaWMtXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjI1LjM4NTI5NjIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEyMjkyMTc5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZTEwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNgLiBJdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGJvdW5kcyBjaGVja2luZywgd2hpY2ggaXMgYWx3YXlzIGdvb2QgdG8gc2VlLiBUaGUgcHJpbWFyeSBjb25jZXJuIGlzIHByb3RlY3RpbmcgYWdhaW5zdCBpbnZhbGlkIGBhZGRyX2xlbmAgdmFsdWVzIHdpdGhpbiB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgZnVuY3Rpb25zLlxuXG5JIGNhbiBzZWUgdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcy4gVGhlIGZpcnN0IHNuaXBwZXQgaW50cm9kdWNlcyBhIGNoZWNrIHdpdGhpbiBgZTEwMF9lZXByb21fcmVhZGAgd2hlcmUgaXQgY2FsY3VsYXRlcyBhIGxlbmd0aCAoYGxlbmApIGFuZCBjbGFtcHMgdGhlIGAqYWRkcl9sZW5gIHRvIHplcm8gaWYgYGxlbmAgZXhjZWVkcyBpdHMgdmFsdWUsIG90aGVyd2lzZSBzdWJ0cmFjdGluZyBgbGVuYC4gVGhpcyBpcyBhIGNsYXNzaWMgYm91bmRzIHByb3RlY3Rpb24sIGVuc3VyaW5nIGEgd3JpdGUgZG9lc24ndCBleGNlZWQgYWxsb2NhdGVkIHNwYWNlLiBUaGUgc2Vjb25kIHNuaXBwZXQgd2l0aGluIGBlMTAwX2VlcHJvbV9sb2FkYCBpbmNsdWRlcyBhIG1vcmUgcmlnaWQgY2hlY2suIElmIGBhZGRyX2xlbmAgaXMgemVybyBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTYsIGl0IGZsYWdzIGFuIGVycm9yIGFuZCByZXR1cm5zIGAtRUlOVkFMYC4gVGhpcyBpcyBhbm90aGVyIHNhZmVndWFyZCBhZ2FpbnN0IG91dC1vZi1ib3VuZHMgYWNjZXNzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlbGV2YW50KiBpbiBtb2Rlcm4gZW52aXJvbm1lbnRzPyBUaGUgYGUxMDBgIGRyaXZlciBpcyBmb3IgdGhlIEludGVsIFBSTy8xMDAgRXRoZXJuZXQgY29udHJvbGxlcnMuIEdpdmVuIHRoYXQgdGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgSW50ZWwgUFJPLzEwMCBzZXJpZXMsIEkgd29uZGVyIGlmIHRoaXMgZHJpdmVyIGlzIHN0aWxsIHJlYWNoYWJsZSBpbiBtb2Rlcm4gc3lzdGVtcy4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgdGhhdCBpdCdzIGxpa2VseSBhIGxlZ2FjeSBkcml2ZXIuXG5cbkEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgUUVNVSBkb2VzIGVtdWxhdGUgdGhlIGk4MjU1eCAoUFJPLzEwMCkgZmFtaWx5LCBzcGVjaWZpY2FsbHkgdGhlIGBpODI1NTllcmAgYW5kIGBpODI1NTdiYCAoYW5kIGk4MjU1OWMpLCB2aWEgYGh3L25ldC9lZXBybzEwMC5jYC4gVGhlcmVmb3JlLCB0aGUgYGUxMDBgIGRyaXZlciAqaXMqIHJlYWNoYWJsZSwgYXQgbGVhc3QgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBtYWtlcyB0aGUgcGF0Y2gncyBleGlzdGVuY2UgbWFrZSBzZW5zZTsgaWYgaXQncyBiZWluZyBlbXVsYXRlZCwgYW55IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBhcmUgc3RpbGwgcmVsZXZhbnQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZW50cnkgZm9yIGBlMTAwYDogSSdsbCBmaW5kIGl0IGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYC4gWWVzLCBgY29uZmlnIEUxMDBgIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBgUENJYCwgYXMgZXhwZWN0ZWQuIFNvIGl0J3MgY29uZmlndXJhYmxlLlxuXG5Ob3csIEkgd2FudCB0byBjb25maXJtIHRoZSBmdW5jdGlvbiBjYWxscy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgLiBgZTEwMF9lZXByb21fbG9hZGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgd2hpY2ggYWxpZ25zIHdpdGggaG93IGl0IGZpbmRzIHRoZSBFRVBST00uIGBlMTAwX2VlcHJvbV9yZWFkYCBpcyBjYWxsZWQgYnkgYGUxMDBfZWVwcm9tX2xvYWRgIGFuZCBwb3NzaWJseSBieSBldGh0b29sIG9wZXJhdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgdXNhZ2Ugd2l0aGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGNvZGUgcGF0aHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoxOTozNi42MTQ1MTc5MDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk0NzU3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fbG9hZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTcyMT1zdGF0aWMgX19sZTE2IGUxMDBfZWVwcm9tX3JlYWQoc3RydWN0IG5pYyAqbmljLCB1MTYgKmFkZHJfbGVuLCB1MTYgYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjYtLyogTG9hZCBlbnRpcmUgRUVQUk9NIGltYWdlIGludG8gZHJpdmVyIGNhY2hlIGFuZCB2YWxpZGF0ZSBjaGVja3N1bSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3Njc6c3RhdGljIGludCBlMTAwX2VlcHJvbV9sb2FkKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yNjIwPXN0YXRpYyB2b2lkIGUxMDBfZGlhZ190ZXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjYyOC1cXHRkYXRhWzBdID0gIW1paV9saW5rX29rKFxcdTAwMjZuaWMtXFx1MDAzZW1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI2Mjk6XFx0ZGF0YVsxXSA9IGUxMDBfZWVwcm9tX2xvYWQobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjYzMC1cXHRpZiAodGVzdC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhfVEVTVF9GTF9PRkZMSU5FKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9Mjg0Mz1zdGF0aWMgaW50IGUxMDBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjkzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjkzNDpcXHRpZiAoKGVyciA9IGUxMDBfZWVwcm9tX2xvYWQobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI5MzUtXFx0XFx0Z290byBlcnJfb3V0X2ZyZWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjM2LjcwMzk5ODUzN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjIyNzE1MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZTEwMCBEcml2ZXIncyBFRVBST00gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGUxMDBgIGRyaXZlciBjb2RlLiBJIHNlZSB0aGF0IGBlMTAwX2VlcHJvbV9sb2FkYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGNhbGxlZCBkdXJpbmcgYm90aCB0aGUgaW5pdGlhbCBQQ0kgcHJvYmluZyBwaGFzZSDigJMgdGhyb3VnaCBgZTEwMF9wcm9iZWAg4oCTIGFuZCBhbHNvIGR1cmluZyBkaWFnbm9zdGljIHRlc3RpbmcgdXNpbmcgYGUxMDBfZGlhZ190ZXN0YC4gYGUxMDBfcHJvYmVgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBkZXRlY3RpbmcgYW5kIGluaXRpYWxpemluZyB0aGUgaGFyZHdhcmUuIE5hdHVyYWxseSwgbG9hZGluZyB0aGUgRUVQUk9NIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcCB0aGVyZS5cblxuTm93LCBgZTEwMF9lZXByb21fbG9hZGAgaXRzZWxmIHJlbGllcyBvbiBgZTEwMF9lZXByb21fcmVhZGAuIEFuZCBpdCBsb29rcyBsaWtlIGBlMTAwX2dldF9lZXByb21gIGFsc28gdXNlcyBgZTEwMF9lZXByb21fcmVhZGAuIFRoZXJlZm9yZSwgaXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBlMTAwX2VlcHJvbV9yZWFkYCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBFRVBST00gcmVhZCBvcGVyYXRpb25zIGluIHRoaXMgZHJpdmVyLiBMZXQncyBzZWUgd2hvJ3MgY2FsbGluZyAqdGhhdCogZnVuY3Rpb24uLi4gdGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0NiwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoxOTo0OS4zMjY3MTY4OTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyODM3NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTY4Mz1zdGF0aWMgdm9pZCBlMTAwX2VlcHJvbV93cml0ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBhZGRyX2xlbiwgdTE2IGFkZHIsIF9fbGUxNiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTc2Nz1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cXHRcXHRpZiAoYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA1LVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6NDkuNDE2MDA3NzkzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE2NzM4NDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEUxMDAgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX2xvYWRgIGFyZSBzdGF0aWMgZnVuY3Rpb25zIOKAkyBpbnRlcm5hbCB0byB0aGUgZHJpdmVyLCBsaWtlbHkgZm9yIGhhbmRsaW5nIEVFUFJPTSBkYXRhLiBgZTEwMF9wcm9iZWAsIHRoYXQncyBvdXIgUENJIHByb2JlIGZ1bmN0aW9uLCB0aGUgZW50cnkgcG9pbnQgd2hlbiB0aGUgZGV2aWNlIGlzIGRldGVjdGVkLCBzbyB0aGF0J3MgY3J1Y2lhbC4gYGUxMDBfZGlhZ190ZXN0YCBpcyB0aGUgZXRodG9vbCBzZWxmLXRlc3QgZnVuY3Rpb247IHVzZWZ1bCBmb3IgZGlhZ25vc3RpY3MsIGFuZCBgZTEwMF9lZXByb21fc2F2ZWAgaXMgdGllZCB0byBgZTEwMF9zZXRfZWVwcm9tYC5cblxuR2l2ZW4gdGhhdCBgZTEwMF9wcm9iZWAgaXMgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciBhbmQgd2hlcmUgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBiZWdpbnMuIFNvLCBgZTEwMF9wcm9iZWAgYW5kIGBlMTAwX2RpYWdfdGVzdGAgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIHJpZ2h0IG5vdy4gV2FpdCwgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIGV0aHRvb2wgb3BlcmF0aW9ucywgc28gbGV0IG1lIHF1aWNrbHkgZ28gb3ZlciBgZTEwMF9nZXRfZWVwcm9tYCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MTk6NTUuNTgzMzk1MjkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzI1MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDBfZ2V0X2VlcHJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI1MzI9c3RhdGljIHUzMiBlMTAwX2dldF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjUzODpzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0NC0jZGVmaW5lIEUxMDBfRUVQUk9NX01BR0lDXFx0MHgxMjM0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NDU6c3RhdGljIGludCBlMTAwX2dldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU0Ni1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NTgtXFx0LmdldF9saW5rXFx0XFx0PSBlMTAwX2dldF9saW5rLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNzU5OlxcdC5nZXRfZWVwcm9tX2xlblxcdFxcdD0gZTEwMF9nZXRfZWVwcm9tX2xlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MDpcXHQuZ2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9nZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYxLVxcdC5zZXRfZWVwcm9tXFx0XFx0PSBlMTAwX3NldF9lZXByb20sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjE5OjU1LjY1MDEyNDQyOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzU5MTc4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlc2UgZnVuY3Rpb25zOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGBlMTAwX2dldF9lZXByb21gLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAuIEZpcnN0LCBgZTEwMF9wcm9iZWAgaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24sIGFuZCB1c3VhbGx5IHN5emthbGxlciB3b3VsZCBoaXQgdGhlc2Ugd2l0aCBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9wcm9iZWAsIGJ1dCB0aGVyZSBpc24ndCBhIGRlZGljYXRlZCBvbmUgZm9yIGUxMDAuIEhtbSwgYnV0IHNpbmNlIFFFTVUgZW11bGF0ZXMgZTEwMCwgYGUxMDBfcHJvYmVgICpzaG91bGQqIGJlIHJlYWNoYWJsZSBvbiBib290IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCwgb3IgdmlhIFBDSSBob3RwbHVnLiBZZXAsIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5Ob3csIHdoYXQgYWJvdXQgYGUxMDBfZGlhZ190ZXN0YD8gQ2FuIEkgcmVhY2ggdGhhdD8gRXRodG9vbCEgVGhhdCdzIGhvdy4gU2FtZSBnb2VzIGZvciBgZTEwMF9nZXRfZWVwcm9tYCwgZXRodG9vbCB3aWxsIGRvIHRoZSB0cmljay4gQW5kIGBlMTAwX3NldF9lZXByb21gPyBZZXAsIGV0aHRvb2wgaXMgdGhlIGtleSB0aGVyZSB0b28uXG5cbk9rYXksIG5leHQgSSdsbCBjaGVjayBpZiBgZTEwMF9zZXRfZWVwcm9tYCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6MDEuMzI2MDQ0OTAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM3OTQ3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9zZXRfZWVwcm9tXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjU0NT1zdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI1NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI1NTY6c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjU1Ny1cXHRzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlcHJvbSwgdTggKmJ5dGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTI3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBlMTAwX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI3NjAtXFx0LmdldF9lZXByb21cXHRcXHQ9IGUxMDBfZ2V0X2VlcHJvbSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Mjc2MTpcXHQuc2V0X2VlcHJvbVxcdFxcdD0gZTEwMF9zZXRfZWVwcm9tLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNzYyLVxcdC5nZXRfcmluZ3BhcmFtXFx0XFx0PSBlMTAwX2dldF9yaW5ncGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjAxLjQzOTg0NTIwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDk3MzUyMzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGUxMDBfc2V0X2VlcHJvbWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGBlMTAwX3NldF9lZXByb21gIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIHB1bGwgdXAgdGhlIGNvZGUgYW5kIHRha2UgYSBsb29rLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoZSB3cml0ZSBjeWNsZXMgYW5kIGVycm9yIGNoZWNraW5nLiBJIHZhZ3VlbHkgcmVtZW1iZXIgcG90ZW50aWFsIGlzc3VlcyB3aXRoIEVFUFJPTSB3cml0ZXMgYmVpbmcgc2Vuc2l0aXZlIHRvIHRpbWluZyBhbmQgdm9sdGFnZSBmbHVjdHVhdGlvbnMsIHNvIEknbGwgYmUgbG9va2luZyBmb3Igc2FmZWd1YXJkcyBhZ2FpbnN0IHRob3NlIHByb2JsZW1zLlxuXG5MZXQncyBzZWXigKYgcmlnaHQsIHRoZSB0eXBpY2FsIHNlcXVlbmNlIHByb2JhYmx5IGludm9sdmVzIGVuYWJsaW5nIHRoZSBFRVBST00gaW50ZXJmYWNlLCBhZGRyZXNzaW5nIHRoZSBzcGVjaWZpYyBtZW1vcnkgbG9jYXRpb24sIHNlbmRpbmcgdGhlIGRhdGEsIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoZSB3cml0ZSB0byBjb21wbGV0ZSwgcG9zc2libHkgd2l0aCBzb21lIGZvcm0gb2YgYnVzeS13YWl0IG9yIGludGVycnVwdC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGV5J3JlIGZvbGxvd2luZyBiZXN0IHByYWN0aWNlcyBoZXJlLiBUaGluZ3MgbGlrZSBhdG9taWNpdHksIHdyaXRlIHByb3RlY3Rpb24gZHVyaW5nIHRoZSBwcm9jZXNzLCBhbmQgbWFraW5nIHN1cmUgdGhlIHdyaXRlIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBhcmUgdG9wIG9mIG1pbmQuXG5cbkknbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgYml0IHR3aWRkbGluZyBvciByZWdpc3RlciBtYW5pcHVsYXRpb24gaW52b2x2ZWQuIFRob3NlIGFyZSB1c3VhbGx5IHdoZXJlIHRoZSBzdWJ0bGUgYnVncyBoaWRlLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIG9yIGNvbnRleHRzLiBJZiBpdCdzIG5vdCBwcm9wZXJseSBwcm90ZWN0ZWQgd2l0aCBtdXRleGVzIG9yIHNwaW5sb2NrcywgaXQgY291bGQgYmUgYSB0aWNraW5nIHRpbWUgYm9tYi5cblxuRmluYWxseSwgdGhlIGVycm9yIGhhbmRsaW5nLiBJcyB0aGVyZSBwcm9wZXIgdmVyaWZpY2F0aW9uIGFmdGVyIHRoZSB3cml0ZSB0byBjb25maXJtIHRoZSBkYXRhIGludGVncml0eT8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGlmIHRoZSB3cml0ZSBmYWlscyBpbml0aWFsbHk/IEFuZCBhcmUgYW55IHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLCBsaWtlIGEgcmVhZC1vbmx5IG1lbW9yeSwgYWNjb3VudGVkIGZvcj8gVGltZSB0byBzZWUgaWYgdGhlIGltcGxlbWVudGF0aW9uIGlzIHJvYnVzdCwgYW5kIGlmIGl0J3Mgbm90LCB3aGVyZSBhbmQgaG93IEkgY2FuIGhlbHAgaW1wcm92ZSBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAzNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjE2LjQxMzM3MzI5N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NTYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI1NTY6XFx0c3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4yNTU3OlxcdFxcdHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWVwcm9tLCB1OCAqYnl0ZXMpXFxuMjU1ODpcXHR7XFxuMjU1OTpcXHRcXHRzdHJ1Y3QgbmljICpuaWMgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjI1NjA6XFx0XFxuMjU2MTpcXHRcXHRpZiAoZWVwcm9tLVxcdTAwM2VtYWdpYyAhPSBFMTAwX0VFUFJPTV9NQUdJQylcXG4yNTYyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjI1NjM6XFx0XFxuMjU2NDpcXHRcXHRtZW1jcHkoXFx1MDAyNigodTggKiluaWMtXFx1MDAzZWVlcHJvbSlbZWVwcm9tLVxcdTAwM2VvZmZzZXRdLCBieXRlcywgZWVwcm9tLVxcdTAwM2VsZW4pO1xcbjI1NjU6XFx0XFxuMjU2NjpcXHRcXHRyZXR1cm4gZTEwMF9lZXByb21fc2F2ZShuaWMsIGVlcHJvbS1cXHUwMDNlb2Zmc2V0IFxcdTAwM2VcXHUwMDNlIDEsXFxuMjU2NzpcXHRcXHRcXHQoZWVwcm9tLVxcdTAwM2VsZW4gXFx1MDAzZVxcdTAwM2UgMSkgKyAxKTtcXG4yNTY4OlxcdH1cXG4yNTY5OlxcdFxcbjI1NzA6XFx0c3RhdGljIHZvaWQgZTEwMF9nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuMjU3MTpcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfcmluZ3BhcmFtICpyaW5nLFxcbjI1NzI6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBrZXJuZWxfZXRodG9vbF9yaW5ncGFyYW0gKmtlcm5lbF9yaW5nLFxcbjI1NzM6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4yNTc0OlxcdHtcXG4yNTc1OlxcdFxcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjE2LjQxMzU3NTgyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA2NDY0NjUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgZTEwMCBFRVBST00gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGUxMDBfc2V0X2VlcHJvbWAgaXMgZGVmaW5pdGVseSBjYWxsaW5nIGBlMTAwX2VlcHJvbV9zYXZlYC4gVGhhdCBtYWtlcyBzZW5zZS4gQW5kLCBvZiBjb3Vyc2UsIGBlMTAwX2VlcHJvbV9zYXZlYCBzdWJzZXF1ZW50bHkgdXNlcyB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGZ1bmN0aW9uLiBSaWdodCwgc28gZmFyLCBzbyBnb29kLCB0aGlzIGlzIHRoZSBleHBlY3RlZCBkYXRhIGZsb3cuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBgZTEwMF9lZXByb21fc2F2ZWAgZnVuY3Rpb24uIExldCdzIGRpZyBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbi4gSXQgd2lsbCBiZSB1c2VmdWwgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSByZWFkIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMDoyOC40NzgyMjY4NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4MDE6XFx0c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuIDgwMjpcXHR7XFxuIDgwMzpcXHRcXHR1MTYgYWRkciwgYWRkcl9sZW4gPSA4LCBjaGVja3N1bSA9IDA7XFxuIDgwNDpcXHRcXG4gODA1OlxcdFxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuIDgwNjpcXHRcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG4gODA3OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG4gODA4OlxcdFxcbiA4MDk6XFx0XFx0aWYgKHN0YXJ0ICsgY291bnQgXFx1MDAzZT0gbmljLVxcdTAwM2VlZXByb21fd2MpXFxuIDgxMDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODExOlxcdFxcbiA4MTI6XFx0XFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXFx1MDAzYyBzdGFydCArIGNvdW50OyBhZGRyKyspXFxuIDgxMzpcXHRcXHRcXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBhZGRyLCBuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSk7XFxuIDgxNDpcXHRcXG4gODE1OlxcdFxcdC8qIFRoZSBjaGVja3N1bSwgc3RvcmVkIGluIHRoZSBsYXN0IHdvcmQsIGlzIGNhbGN1bGF0ZWQgc3VjaCB0aGF0XFxuIDgxNjpcXHRcXHQgKiB0aGUgc3VtIG9mIHdvcmRzIHNob3VsZCBiZSAweEJBQkEgKi9cXG4gODE3OlxcdFxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHIrKylcXG4gODE4OlxcdFxcdFxcdGNoZWNrc3VtICs9IGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG4gODE5OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0gPSBjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSk7XFxuIDgyMDpcXHRcXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjI4LjQ3ODQzNzc5M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjY4NTk0NTkzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEludGVsIEUxMDAgRUVQUk9NIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgRTEwMCBFRVBST00gY29kZSwgYW5kIEkndmUgaGl0IGEgcG90ZW50aWFsIGlzc3VlLiBUaGUgYGUxMDBfZWVwcm9tX3NhdmVgIGZ1bmN0aW9uLCB1bmxpa2UgYGUxMDBfZWVwcm9tX2xvYWRgLCBzZWVtcyB0byBiZSBtaXNzaW5nIGEgY3J1Y2lhbCBib3VuZHMgY2hlY2sgb24gYGFkZHJfbGVuYC4gSXQgZG9lcyB0aGlzOiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO2AuIE5vdywgYGFkZHJfbGVuYCBpcyBhIGB1MTZgLCByaWdodD8gU28sIGlmIGBhZGRyX2xlbmAgaXMgMTYsIHdoaWNoIGlzIHBvc3NpYmxlIGdpdmVuIHRoZSBkYXRhIHR5cGUsIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgaXMgZ29pbmcgdG8gYmUgYDEgXHUwMDNjXHUwMDNjIDE2YCwgd2hpY2ggZXF1YWxzIDY1NTM2LiAgVGhlIHByb2JsZW0gaXMgYG5pYy1cdTAwM2VlZXByb21fd2NgIGlzIGFsc28gYSBgdTE2YCwgc28gdGhlIHJlc3VsdCB3aWxsIGdldCB0cnVuY2F0ZWQgdG8gMCwgd2hpY2ggaXNuJ3QgbmVjZXNzYXJpbHkgYSAqY3Jhc2gqLCBidXQgaXQncyBjbGVhcmx5IHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgY291bGQgbGVhZCB0byBjb3JydXB0aW9uLlxuXG5XYWl0IGEgc2Vjb25k4oCmIExvb2tpbmcgYmFjayBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIHRoZSBjaGFuZ2VzIHdlcmUgb25seSBhcHBsaWVkIHRvIGBlMTAwX2VlcHJvbV9sb2FkYCBhbmQgYGUxMDBfZWVwcm9tX3JlYWRgLlxuXG5MZXQncyBmb2N1cyBvbiB0aGF0IHBhdGNoIHNuaXBwZXQgZnJvbSBgZTEwMF9lZXByb21fcmVhZGA6XG5gYGBjXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4rXHRcdFx0dTE2IGxlbiA9IGkgLSAxNjtcbitcbitcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4rXHRcdFx0XHQqYWRkcl9sZW4gPSAwO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG5gYGBcblRoYXQncyBpbiBgZTEwMF9lZXByb21fcmVhZGAuIEdvb2QuIFNpbmNlIGBlMTAwX2VlcHJvbV9zYXZlYCBjYWxscyBgZTEwMF9lZXByb21fcmVhZGAsIHRoYXQgZml4ICp3aWxsKiBiZW5lZml0IGBlMTAwX2VlcHJvbV9zYXZlYC4gVGhhdCdzIGEgcmVsaWVmLCBpdCdzIGEgYml0IG1vcmUgZWxlZ2FudCB0aGFuIHRoZSBjaGVjayBJIHRob3VnaHQgd2FzIG1pc3NpbmcsIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIGl0J3MgcHJvcGVybHkgaGFuZGxlZCBpbiBvdGhlciBjYWxsZXJzLlxuXG5TbywgdGhlIGtleSBmdW5jdGlvbnMgdG8gZXhhbWluZSBhcmU6IGBlMTAwX3Byb2JlYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX2xvYWRgKSwgYGUxMDBfZGlhZ190ZXN0YCAoYWxzbyBjYWxscyBgZTEwMF9lZXByb21fbG9hZGApLCBgZTEwMF9nZXRfZWVwcm9tYCAod2hpY2ggY2FsbHMgYGUxMDBfZWVwcm9tX3JlYWRgKSwgYW5kIGBlMTAwX3NldF9lZXByb21gICh3aGljaCBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAgLVx1MDAzZSBgZTEwMF9lZXByb21fcmVhZGApLlxuXG5Ob3csIGBlMTAwX3Byb2JlYCBpcyBpbnRlcmVzdGluZy4gSXQncyB0aGUgUENJIHByb2JlIGZ1bmN0aW9uLCBzbyBpdCBydW5zIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIFN5emthbGxlciBjYW4gcHJvYmFibHkgdHJpZ2dlciBpdCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlLiAgVGhlIG90aGVycywgYGUxMDBfZGlhZ190ZXN0YCwgYGUxMDBfZ2V0X2VlcHJvbWAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCwgYXJlIGFsbCBldGh0b29sIG9wZXJhdGlvbnMsIHNvIHRoZXkncmUgdHJpZ2dlcmVkIHZpYSBpb2N0bHMgb24gdGhlIG5ldHdvcmsgZGV2aWNlLlxuXG5JJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGBlMTAwX2dldF9lZXByb21gIGFuZCBgZTEwMF9zZXRfZWVwcm9tYCBpbiBgZTEwMC5jYCBub3cgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gd2F0Y2ggZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTEwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6NDUuMTY0Mzg1ODYzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjU0NSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjU0NTpcXHRzdGF0aWMgaW50IGUxMDBfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbjI1NDY6XFx0XFx0c3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcXG4yNTQ3OlxcdHtcXG4yNTQ4OlxcdFxcdHN0cnVjdCBuaWMgKm5pYyA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMjU0OTpcXHRcXG4yNTUwOlxcdFxcdGVlcHJvbS1cXHUwMDNlbWFnaWMgPSBFMTAwX0VFUFJPTV9NQUdJQztcXG4yNTUxOlxcdFxcdG1lbWNweShieXRlcywgXFx1MDAyNigodTggKiluaWMtXFx1MDAzZWVlcHJvbSlbZWVwcm9tLVxcdTAwM2VvZmZzZXRdLCBlZXByb20tXFx1MDAzZWxlbik7XFxuMjU1MjpcXHRcXG4yNTUzOlxcdFxcdHJldHVybiAwO1xcbjI1NTQ6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMDo0NS4xNjQ1NDYwNjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM0MDQ4NDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVFUFJPTSBJbnRlcmFjdGlvbiBpbiB0aGUgZTEwMCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgZTEwMF9nZXRfZWVwcm9tYCB3YXMgZGlyZWN0bHkgaW52b2x2ZWQgaW4gcmVhZGluZyBmcm9tIHRoZSBFRVBST00uIEJ1dCwgd2FpdCwgdGhhdCdzIG5vdCByaWdodC4gSXQganVzdCBjb3BpZXMgZGF0YSBmcm9tIGBuaWMtXHUwMDNlZWVwcm9tYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYGUxMDBfZWVwcm9tX2xvYWRgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlLiAqVGhhdCdzKiB0aGUgb25lIHRoYXQgYWN0dWFsbHkgcmVhZHMgdGhlIEVFUFJPTSBkYXRhIGludG8gYG5pYy1cdTAwM2VlZXByb21gLiBTbywgdGhhdCBtZWFucyBpdCdzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIGFuZCBkaWFnbm9zdGljIHRlc3QgcGhhc2VzLlxuXG5BbmQsIGxvb2tpbmcgYXQgYGUxMDBfc2V0X2VlcHJvbWAsIHRoYXQncyB0aGUgZnVuY3Rpb24gdG8gc2F2ZSB0aGUgRUVQUk9NIGNvbnRlbnRzLiBUaGlzIG9uZSBjYWxscyBgZTEwMF9lZXByb21fc2F2ZWAsIHdoaWNoIHRoZW4gY2FsbHMgdGhlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIGBlMTAwX2VlcHJvbV9yZWFkYCBhbmQgYGUxMDBfZWVwcm9tX3dyaXRlYC5cblxuVGhlcmVmb3JlLCBpZiBJIHdlcmUgdG8gZm9jdXMgb24gdGhlIGtleSBlbnRyeXBvaW50cywgaXQgd291bGQgYmUgdGhlc2UgZnVuY3Rpb25zOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAgYW5kIGBlMTAwX3NldF9lZXByb21gLlxuXG5Ob3csIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgYSBzdGFuZGFyZCBQQ0kgcHJvYmUgZnVuY3Rpb24uIFVzdWFsbHksIEkgd291bGRuJ3QgYm90aGVyIGxpc3RpbmcgdGhlc2UsIGJlY2F1c2UgdGhleSdyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIGJ5IHRoZSBzeXN0ZW0gd2hlbiB0aGUgZGV2aWNlIGlzIGFkZGVkLCBhbmQgU3l6a2FsbGVyJ3MgUENJIGluamVjdGlvbiB3aWxsIHRyaWdnZXIgdGhlbS4gSG93ZXZlciwgaXQncyBub3Qgc3RyaWN0bHkgaW5jb3JyZWN0IHRvIGxpc3QgaXQsIHNvIEknbGwgbGVhdmUgaXQgaW4gZm9yIG5vdy5cblxuSG9sZCBvbiwgdGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gQ3JhcCwgYGUxMDBfcHJvYmVgIGlzIHN0YXRpYy4gQW5kIG5vdyBJIHJlYWxpemUsIGFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyFcblxuYGBgY1xuc3RhdGljIGludCBlMTAwX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuc3RhdGljIHZvaWQgZTEwMF9kaWFnX3Rlc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfdGVzdCAqdGVzdCwgdTY0ICpkYXRhKVxuc3RhdGljIGludCBlMTAwX3NldF9lZXByb20oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZXByb20sIHU4ICpieXRlcylcbmBgYFxuXG5UaGUgYWRkcmVzc2VzIG9mIHRoZXNlIGZ1bmN0aW9ucyBtYXkgbm90IGJlIGV4cG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGBzdGF0aWNgIGtleXdvcmQsIGJ1dCB0aGV5IGFyZSBzdGlsbCB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHdpdGhpbiB0aGUgYHBjaV9kcml2ZXJgIGFuZCBgZXRodG9vbF9vcHNgIHN0cnVjdHVyZXMuIFNvIFN5emthbGxlciBjYW4gc3RpbGwgc3ltYm9saXplIHRoZW0uIEkga25vdyBmb3Igc3VyZSB0aGV5J3JlIG5vdCBpbmxpbmVkIGJlY2F1c2UgdGhleSdyZSBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXZhaWxhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE0MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIwOjU0LjUwNTAzMzQ3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNTE4ODg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImUxMDBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg1MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE3Nz1NT0RVTEVfUEFSTV9ERVNDKHVzZV9pbywgXFxcIkZvcmNlIHVzZSBvZiBpL28gYWNjZXNzIG1vZGVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZTEwMF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYtXFx0SU5URUxfODI1NVhfRVRIRVJORVRfREVWSUNFKDB4MTAyOSwgMCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgZTEwMF9pZF90YWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz01Mzk9c3RydWN0IG5pYyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDg6c3RhdGljIGlubGluZSB2b2lkIGUxMDBfd3JpdGVfZmx1c2goc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjE1OnN0YXRpYyB2b2lkIGUxMDBfZW5hYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYxNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjIwLVxcdGlvd3JpdGU4KGlycV9tYXNrX25vbmUsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYyMTpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyMi1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZuaWMtXFx1MDAzZWNtZF9sb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MjU6c3RhdGljIHZvaWQgZTEwMF9kaXNhYmxlX2lycShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMwLVxcdGlvd3JpdGU4KGlycV9tYXNrX2FsbCwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VzY2IuY21kX2hpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjMxOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjMyLVxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNm5pYy1cXHUwMDNlY21kX2xvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjYzNTpzdGF0aWMgdm9pZCBlMTAwX2h3X3Jlc2V0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MzktXFx0aW93cml0ZTMyKHNlbGVjdGl2ZV9yZXNldCwgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2Vwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQwOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDIwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0My1cXHRpb3dyaXRlMzIoc29mdHdhcmVfcmVzZXQsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjY0NDpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSgyMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ2LVxcdC8qIE1hc2sgb2ZmIG91ciBpbnRlcnJ1cHQgbGluZSAtIGl0J3MgdW5tYXNrZWQgYWZ0ZXIgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjQ3OlxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ4LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NTA6c3RhdGljIGludCBlMTAwX3NlbGZfdGVzdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjYwLVxcdGlvd3JpdGUzMihzZWxmdGVzdCB8IGRtYV9hZGRyLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZXBvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2NjE6XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjItXFx0LyogV2FpdCAxMCBtc2VjIGZvciBzZWxmLXRlc3QgdG8gY29tcGxldGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02NjUtXFx0LyogSW50ZXJydXB0cyBhcmUgZW5hYmxlZCBhZnRlciBzZWxmLXRlc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjY2OlxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NjgzOnN0YXRpYyB2b2lkIGUxMDBfZWVwcm9tX3dyaXRlKHN0cnVjdCBuaWMgKm5pYywgdTE2IGFkZHJfbGVuLCB1MTYgYWRkciwgX19sZTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTY4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNjk5LVxcdFxcdGlvd3JpdGU4KGVlY3MgfCBlZXNrLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzAwOlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA1LVxcdFxcdFxcdGlvd3JpdGU4KGN0cmwsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3MDY6XFx0XFx0XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpOyB1ZGVsYXkoNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzA4LVxcdFxcdFxcdGlvd3JpdGU4KGN0cmwgfCBlZXNrLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzA5OlxcdFxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTAtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcxNS1cXHRcXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzE2OlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczMS1cXHRpb3dyaXRlOChlZWNzIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjczMjpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTczNy1cXHRcXHRpb3dyaXRlOChjdHJsLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzM4OlxcdFxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc0MC1cXHRcXHRpb3dyaXRlOChjdHJsIHwgZWVzaywgXFx1MDAyNm5pYy1cXHUwMDNlY3NyLVxcdTAwM2VlZXByb21fY3RybF9sbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc0MTpcXHRcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7IHVkZWxheSg0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2MC1cXHRpb3dyaXRlOCgwLCBcXHUwMDI2bmljLVxcdTAwM2Vjc3ItXFx1MDAzZWVlcHJvbV9jdHJsX2xvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzYxOlxcdGUxMDBfd3JpdGVfZmx1c2gobmljKTsgdWRlbGF5KDQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03NjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzY2LS8qIExvYWQgZW50aXJlIEVFUFJPTSBpbWFnZSBpbnRvIGRyaXZlciBjYWNoZSBhbmQgdmFsaWRhdGUgY2hlY2tzdW0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzY3OnN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc2OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzcxLVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc3MjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4My1cXHRmb3IgKGFkZHIgPSAwOyBhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2M7IGFkZHIrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3ODQ6XFx0XFx0bmljLVxcdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzg1LVxcdFxcdGlmIChhZGRyIFxcdTAwM2MgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgwMC0vKiBTYXZlIChwb3J0aW9uIG9mKSBkcml2ZXIgRUVQUk9NIGNhY2hlIHRvIGRldmljZSBhbmQgdXBkYXRlIGNoZWNrc3VtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwMTpzdGF0aWMgaW50IGUxMDBfZWVwcm9tX3NhdmUoc3RydWN0IG5pYyAqbmljLCB1MTYgc3RhcnQsIHUxNiBjb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDUtXFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODA2OlxcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MDctXFx0bmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxMi1cXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjIHN0YXJ0ICsgY291bnQ7IGFkZHIrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODEzOlxcdFxcdGUxMDBfZWVwcm9tX3dyaXRlKG5pYywgYWRkcl9sZW4sIGFkZHIsIG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgxOS1cXHRuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdID0gY3B1X3RvX2xlMTYoMHhCQUJBIC0gY2hlY2tzdW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MjA6XFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgbmljLVxcdTAwM2VlZXByb21fd2MgLSAxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MjEtXFx0XFx0bmljLVxcdTAwM2VlZXByb21bbmljLVxcdTAwM2VlZXByb21fd2MgLSAxXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODI3LSNkZWZpbmUgRTEwMF9XQUlUX1NDQl9GQVNUIDIwICAgICAgIC8qIGRlbGF5IGxpa2UgdGhlIG9sZCBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyODpzdGF0aWMgaW50IGUxMDBfZXhlY19jbWQoc3RydWN0IG5pYyAqbmljLCB1OCBjbWQsIGRtYV9hZGRyX3QgZG1hX2FkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4NTk6c3RhdGljIGludCBlMTAwX2V4ZWNfY2Ioc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04NjAtXFx0aW50ICgqY2JfcHJlcGFyZSkoc3RydWN0IG5pYyAqLCBzdHJ1Y3QgY2IgKiwgc3RydWN0IHNrX2J1ZmYgKikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODkyLVxcdHdoaWxlIChuaWMtXFx1MDAzZWNiX3RvX3NlbmQgIT0gbmljLVxcdTAwM2VjYl90b191c2UpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODkzOlxcdFxcdGlmICh1bmxpa2VseShlMTAwX2V4ZWNfY21kKG5pYywgbmljLVxcdTAwM2VjdWNfY21kLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04OTQtXFx0XFx0XFx0bmljLVxcdTAwM2VjYl90b19zZW5kLVxcdTAwM2VkbWFfYWRkcikpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MTAwMT1zdGF0aWMgdTE2IG1kaW9fY3RybF9waHlfbWlpX2VtdWxhdGVkKHN0cnVjdCBuaWMgKm5pYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA0MzpzdGF0aWMgaW5saW5lIGludCBlMTAwX3BoeV9zdXBwb3J0c19taWkoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMDUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMDUxOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RlZmF1bHRzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA1Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTA4NDpzdGF0aWMgaW50IGUxMDBfY29uZmlndXJlKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IGNiICpjYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTA4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMC1cXHRjb25maWctXFx1MDAzZXR4X3VuZGVycnVuX3JldHJ5ID0gMHgzO1xcdC8qICMgb2YgdW5kZXJydW4gcmV0cmllcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMTAxOlxcdGlmIChlMTAwX3BoeV9zdXBwb3J0c19taWkobmljKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTEwMi1cXHRcXHRjb25maWctXFx1MDAzZW1paV9tb2RlID0gMTsgICAgICAgICAgIC8qIDE9TUlJIG1vZGUsIDA9aTgyNTAzIG1vZGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMjMzLS8qIEluaXRpYWxpemUgZmlybXdhcmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTIzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGZpcm13YXJlICplMTAwX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMjM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzIyOnN0YXRpYyBpbnQgZTEwMF9zZXR1cF91Y29kZShzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzMjg6XFx0LyogSXQncyBub3QgYSByZWFsIHNrYjsgd2UganVzdCBhYnVzZWQgdGhlIGZhY3QgdGhhdCBlMTAwX2V4ZWNfY2JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTMyOS1cXHQgICB3aWxsIHBhc3MgaXQgdGhyb3VnaCB0byBoZXJlLi4uICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM1MjpzdGF0aWMgaW5saW5lIGludCBlMTAwX2xvYWRfdWNvZGVfd2FpdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjEzNTg6XFx0ZncgPSBlMTAwX3JlcXVlc3RfZmlybXdhcmUobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM1OS1cXHQvKiBJZiBpdCdzIE5VTEwsIHRoZW4gbm8gdWNvZGUgaXMgcmVxdWlyZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzYzOlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NiKG5pYywgKHZvaWQgKilmdywgZTEwMF9zZXR1cF91Y29kZSkpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzY0LVxcdFxcdG5ldGlmX2VycihuaWMsIHByb2JlLCBuaWMtXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzcwLVxcdC8qIHdhaXQgZm9yIGNvbXBsZXRpb24gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTM3MTpcXHRlMTAwX3dyaXRlX2ZsdXNoKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTEzNzItXFx0dWRlbGF5KDEwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxMzkyOnN0YXRpYyBpbnQgZTEwMF9zZXR1cF9pYWFkZHIoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xMzkzLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTM5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQwMDpzdGF0aWMgaW50IGUxMDBfZHVtcChzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCBjYiAqY2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0MDg6c3RhdGljIGludCBlMTAwX3BoeV9jaGVja193aXRob3V0X21paShzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0MDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NDctI2RlZmluZSBOU0NfQ09OR19UWFJFQURZXFx0MHgwNDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0NDg6c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQ2Ny1cXHRcXHQgKiBsb29rdXAgb2YgRUVQUk9NIHZhbHVlcyB3aGljaCBtYXkgZWFzaWx5IGJlIHVucmVsaWFibGUuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE0Njg6XFx0XFx0aWYgKGUxMDBfcGh5X2NoZWNrX3dpdGhvdXRfbWlpKG5pYykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE0NjktXFx0XFx0XFx0cmV0dXJuIDA7IC8qIHNpbXBseSByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU0MTpzdGF0aWMgaW50IGUxMDBfaHdfaW5pdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDU6XFx0ZTEwMF9od19yZXNldChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTQ3OlxcdG5ldGlmX2VycihuaWMsIGh3LCBuaWMtXFx1MDAzZW5ldGRldiwgXFxcImUxMDBfaHdfaW5pdFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE1NDg6XFx0aWYgKChlcnIgPSBlMTAwX3NlbGZfdGVzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU0OS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTUxOlxcdGlmICgoZXJyID0gZTEwMF9waHlfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1Mi1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTUzOlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIGN1Y19sb2FkX2Jhc2UsIDApKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1NC1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU1OlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIHJ1Y19sb2FkX2Jhc2UsIDApKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU1Ni1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTU3OlxcdGlmICgoZXJyID0gZTEwMF9sb2FkX3Vjb2RlX3dhaXQobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NTgtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU1OTpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfY29uZmlndXJlKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjAtXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MTpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfc2V0dXBfaWFhZGRyKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjItXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2MzpcXHRpZiAoKGVyciA9IGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9hZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTY0LVxcdFxcdG5pYy1cXHUwMDNlZG1hX2FkZHIgKyBvZmZzZXRvZihzdHJ1Y3QgbWVtLCBzdGF0cykpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2NS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTY2OlxcdGlmICgoZXJyID0gZTEwMF9leGVjX2NtZChuaWMsIGN1Y19kdW1wX3Jlc2V0LCAwKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NjctXFx0XFx0cmV0dXJuIGVycjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU2OTpcXHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1NzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTU3NDpzdGF0aWMgaW50IGUxMDBfbXVsdGkoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTkyOnN0YXRpYyB2b2lkIGUxMDBfc2V0X211bHRpY2FzdF9saXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE1OTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2MTE6XFx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9jb25maWd1cmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjEyOlxcdGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfbXVsdGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjEzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTYxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTYxNTpzdGF0aWMgdm9pZCBlMTAwX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2MTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2NzI6XFx0aWYgKGUxMDBfZXhlY19jbWQobmljLCBjdWNfZHVtcF9yZXNldCwgMCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2NzMtXFx0XFx0bmV0aWZfcHJpbnRrKG5pYywgdHhfZXJyLCBLRVJOX0RFQlVHLCBuaWMtXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNjc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNjc3OnN0YXRpYyB2b2lkIGUxMDBfYWRqdXN0X2FkYXB0aXZlX2lmcyhzdHJ1Y3QgbmljICpuaWMsIGludCBzcGVlZCwgaW50IGR1cGxleClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTY5NC1cXHRcXHRpZiAobmljLVxcdTAwM2VhZGFwdGl2ZV9pZnMgIT0gcHJldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTY5NTpcXHRcXHRcXHRlMTAwX2V4ZWNfY2IobmljLCBOVUxMLCBlMTAwX2NvbmZpZ3VyZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE2OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE2OTk6c3RhdGljIHZvaWQgZTEwMF93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTcyOS1cXHRpb3dyaXRlOChpb3JlYWQ4KFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSkgfCBpcnFfc3dfZ2VuLFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLmNtZF9oaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3MzA6XFx0ZTEwMF93cml0ZV9mbHVzaChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzMxLVxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2bmljLVxcdTAwM2VjbWRfbG9jayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3MzM6XFx0ZTEwMF91cGRhdGVfc3RhdHMobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTczNDpcXHRlMTAwX2FkanVzdF9hZGFwdGl2ZV9pZnMobmljLCBzcGVlZCwgY21kLmR1cGxleCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3MzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczNy1cXHRcXHQvKiBJc3N1ZSBhIG11bHRpY2FzdCBjb21tYW5kIHRvIHdvcmthcm91bmQgYSA1NTcgbG9jayB1cCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzM4OlxcdFxcdGUxMDBfc2V0X211bHRpY2FzdF9saXN0KG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTczOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNzUwOnN0YXRpYyBpbnQgZTEwMF94bWl0X3ByZXBhcmUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgY2IgKmNiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzUxLVxcdHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTc4NDpzdGF0aWMgbmV0ZGV2X3R4X3QgZTEwMF94bWl0X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3ODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNzkzLVxcdFxcdCAgIGlzc3VpbmcgdGhlIFR4IGNvbW1hbmQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE3OTQ6XFx0XFx0aWYgKGUxMDBfZXhlY19jbWQobmljLCBjdWNfbm9wLCAwKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTc5NS1cXHRcXHRcXHRuZXRpZl9wcmludGsobmljLCB0eF9lcnIsIEtFUk5fREVCVUcsIG5pYy1cXHUwMDNlbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE3OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjE4MDA6XFx0ZXJyID0gZTEwMF9leGVjX2NiKG5pYywgc2tiLCBlMTAwX3htaXRfcHJlcGFyZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE4MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTgxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTgyMDpzdGF0aWMgaW50IGUxMDBfdHhfY2xlYW4oc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xODYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxODYzOnN0YXRpYyB2b2lkIGUxMDBfY2xlYW5fY2JzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTg4NzpzdGF0aWMgaW50IGUxMDBfYWxsb2NfY2JzKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTg4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkxNjpzdGF0aWMgaW5saW5lIHZvaWQgZTEwMF9zdGFydF9yZWNlaXZlcihzdHJ1Y3QgbmljICpuaWMsIHN0cnVjdCByeCAqcngpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTE5MjUtXFx0aWYgKHJ4LVxcdTAwM2Vza2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkyNjpcXHRcXHRlMTAwX2V4ZWNfY21kKG5pYywgcnVjX3N0YXJ0LCByeC1cXHUwMDNlZG1hX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTI3LVxcdFxcdG5pYy1cXHUwMDNlcnVfcnVubmluZyA9IFJVX1JVTk5JTkc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMS0jZGVmaW5lIFJGRF9CVUZfTEVOIChzaXplb2Yoc3RydWN0IHJmZCkgKyBWTEFOX0VUSF9GUkFNRV9MRU4gKyBFVEhfRkNTX0xFTilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTkzMjpzdGF0aWMgaW50IGUxMDBfcnhfYWxsb2Nfc2tiKHN0cnVjdCBuaWMgKm5pYywgc3RydWN0IHJ4ICpyeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTkzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTk2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTk2NDpzdGF0aWMgaW50IGUxMDBfcnhfaW5kaWNhdGUoc3RydWN0IG5pYyAqbmljLCBzdHJ1Y3QgcnggKnJ4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xOTY1LVxcdHVuc2lnbmVkIGludCAqd29ya19kb25lLCB1bnNpZ25lZCBpbnQgd29ya190b19kbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDYzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW4oc3RydWN0IG5pYyAqbmljLCB1bnNpZ25lZCBpbnQgKndvcmtfZG9uZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA2NC1cXHR1bnNpZ25lZCBpbnQgd29ya190b19kbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMDcyLVxcdGZvciAocnggPSBuaWMtXFx1MDAzZXJ4X3RvX2NsZWFuOyByeC1cXHUwMDNlc2tiOyByeCA9IG5pYy1cXHUwMDNlcnhfdG9fY2xlYW4gPSByeC1cXHUwMDNlbmV4dCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMDczOlxcdFxcdGVyciA9IGUxMDBfcnhfaW5kaWNhdGUobmljLCByeCwgd29ya19kb25lLCB3b3JrX3RvX2RvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA3NC1cXHRcXHQvKiBIaXQgcXVvdGEgb3Igbm8gbW9yZSB0byBjbGVhbiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIwOTMtXFx0Zm9yIChyeCA9IG5pYy1cXHUwMDNlcnhfdG9fdXNlOyAhcngtXFx1MDAzZXNrYjsgcnggPSBuaWMtXFx1MDAzZXJ4X3RvX3VzZSA9IHJ4LVxcdTAwM2VuZXh0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIwOTQ6XFx0XFx0aWYgKHVubGlrZWx5KGUxMDBfcnhfYWxsb2Nfc2tiKG5pYywgcngpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjA5NS1cXHRcXHRcXHRicmVhazsgLyogQmV0dGVyIGx1Y2sgbmV4dCB0aW1lIChzZWUgd2F0Y2hkb2cpICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjEzNi1cXHRcXHRpb3dyaXRlOChzdGF0X2Fja19ybnIsIFxcdTAwMjZuaWMtXFx1MDAzZWNzci1cXHUwMDNlc2NiLnN0YXRfYWNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjEzNzpcXHRcXHRlMTAwX3N0YXJ0X3JlY2VpdmVyKG5pYywgbmljLVxcdTAwM2VyeF90b19jbGVhbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxMzgtXFx0XFx0aWYgKHdvcmtfZG9uZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMTQzOnN0YXRpYyB2b2lkIGUxMDBfcnhfY2xlYW5fbGlzdChzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIxNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIxNjY6c3RhdGljIGludCBlMTAwX3J4X2FsbG9jX2xpc3Qoc3RydWN0IG5pYyAqbmljKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMTgwLVxcdFxcdHJ4LVxcdTAwM2VwcmV2ID0gKGkgPT0gMCkgPyBuaWMtXFx1MDAzZXJ4cyArIGNvdW50IC0gMSA6IHJ4IC0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE4MTpcXHRcXHRpZiAoZTEwMF9yeF9hbGxvY19za2IobmljLCByeCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjE4MjpcXHRcXHRcXHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjE4My1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjA2OnN0YXRpYyBpcnFyZXR1cm5fdCBlMTAwX2ludHIoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjA3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjI2LVxcdGlmIChsaWtlbHkobmFwaV9zY2hlZHVsZV9wcmVwKFxcdTAwMjZuaWMtXFx1MDAzZW5hcGkpKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjI3OlxcdFxcdGUxMDBfZGlzYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIyOC1cXHRcXHRfX25hcGlfc2NoZWR1bGUoXFx1MDAyNm5pYy1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjIzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjIzNDpzdGF0aWMgaW50IGUxMDBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyMzk6XFx0ZTEwMF9yeF9jbGVhbihuaWMsIFxcdTAwMjZ3b3JrX2RvbmUsIGJ1ZGdldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDA6XFx0ZTEwMF90eF9jbGVhbihuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDctXFx0aWYgKGxpa2VseShuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgd29ya19kb25lKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNDg6XFx0XFx0ZTEwMF9lbmFibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1My0jaWZkZWYgQ09ORklHX05FVF9QT0xMX0NPTlRST0xMRVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1NDpzdGF0aWMgdm9pZCBlMTAwX25ldHBvbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI1ODpcXHRlMTAwX2Rpc2FibGVfaXJxKG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNTk6XFx0ZTEwMF9pbnRyKG5pYy1cXHUwMDNlcGRldi1cXHUwMDNlaXJxLCBuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjYwOlxcdGUxMDBfdHhfY2xlYW4obmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2MTpcXHRlMTAwX2VuYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI2NTpzdGF0aWMgaW50IGUxMDBfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHZvaWQgKnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzMtXFx0ZXRoX2h3X2FkZHJfc2V0KG5ldGRldiwgYWRkci1cXHUwMDNlc2FfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNzQ6XFx0ZTEwMF9leGVjX2NiKG5pYywgTlVMTCwgZTEwMF9zZXR1cF9pYWFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjc1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyNzk6c3RhdGljIGludCBlMTAwX2FzZihzdHJ1Y3QgbmljICpuaWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyODg6c3RhdGljIGludCBlMTAwX3VwKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI4OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5MjpcXHRpZiAoKGVyciA9IGUxMDBfcnhfYWxsb2NfbGlzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5My1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk0OlxcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIyOTUtXFx0XFx0Z290byBlcnJfcnhfY2xlYW5fbGlzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI5NjpcXHRpZiAoKGVyciA9IGUxMDBfaHdfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjI5Ny1cXHRcXHRnb3RvIGVycl9jbGVhbl9jYnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIyOTg6XFx0ZTEwMF9zZXRfbXVsdGljYXN0X2xpc3QobmljLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjk5OlxcdGUxMDBfc3RhcnRfcmVjZWl2ZXIobmljLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwMC1cXHRtb2RfdGltZXIoXFx1MDAyNm5pYy1cXHUwMDNld2F0Y2hkb2csIGppZmZpZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzAxOlxcdGlmICgoZXJyID0gcmVxdWVzdF9pcnEobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VpcnEsIGUxMDBfaW50ciwgSVJRRl9TSEFSRUQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMDItXFx0XFx0bmljLVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUsIG5pYy1cXHUwMDNlbmV0ZGV2KSkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwNy1cXHQgKiBkaXNhYmxlIGludHMrc2NoZWR1bGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMwODpcXHRlMTAwX2VuYWJsZV9pcnEobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMwOS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzEzLWVycl9jbGVhbl9jYnM6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMTQ6XFx0ZTEwMF9jbGVhbl9jYnMobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxNS1lcnJfcnhfY2xlYW5fbGlzdDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMxNjpcXHRlMTAwX3J4X2NsZWFuX2xpc3QobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMxNy1cXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzMjA6c3RhdGljIHZvaWQgZTEwMF9kb3duKHN0cnVjdCBuaWMgKm5pYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyMS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMyNC1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyNTpcXHRlMTAwX2h3X3Jlc2V0KG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMjYtXFx0ZnJlZV9pcnEobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VpcnEsIG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzI4LVxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5pYy1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMyOTpcXHRlMTAwX2NsZWFuX2NicyhuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzMwOlxcdGUxMDBfcnhfY2xlYW5fbGlzdChuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzMxLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjMzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjMzMzpzdGF0aWMgdm9pZCBlMTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHR4cXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNDI6c3RhdGljIHZvaWQgZTEwMF90eF90aW1lb3V0X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzUxLVxcdGlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1MjpcXHRcXHRlMTAwX2Rvd24obmV0ZGV2X3ByaXYobmV0ZGV2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzNTM6XFx0XFx0ZTEwMF91cChuZXRkZXZfcHJpdihuZXRkZXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM1ODpzdGF0aWMgaW50IGUxMDBfbG9vcGJhY2tfdGVzdChzdHJ1Y3QgbmljICpuaWMsIGVudW0gbG9vcGJhY2sgbG9vcGJhY2tfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM1OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM2ODpcXHRpZiAoKGVyciA9IGUxMDBfcnhfYWxsb2NfbGlzdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM2OS1cXHRcXHRyZXR1cm4gZXJyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMzcwOlxcdGlmICgoZXJyID0gZTEwMF9hbGxvY19jYnMobmljKSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzNzEtXFx0XFx0Z290byBlcnJfY2xlYW5fcng7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3Ny1cXHRuaWMtXFx1MDAzZWxvb3BiYWNrID0gbG9vcGJhY2tfbW9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM3ODpcXHRpZiAoKGVyciA9IGUxMDBfaHdfaW5pdChuaWMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjM3OS1cXHRcXHRnb3RvIGVycl9sb29wYmFja19ub25lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjIzODU6XFx0ZTEwMF9zdGFydF9yZWNlaXZlcihuaWMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMzg2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzOTItXFx0bWVtc2V0KHNrYi1cXHUwMDNlZGF0YSwgMHhGRiwgRVRIX0RBVEFfTEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjM5MzpcXHRlMTAwX3htaXRfZnJhbWUoc2tiLCBuaWMtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTIzOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQwNi1cXHRuaWMtXFx1MDAzZWxvb3BiYWNrID0gbGJfbm9uZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQwNzpcXHRlMTAwX2NsZWFuX2NicyhuaWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDA4OlxcdGUxMDBfaHdfcmVzZXQobmljKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQwOS1lcnJfY2xlYW5fcng6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0MTA6XFx0ZTEwMF9yeF9jbGVhbl9saXN0KG5pYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MTEtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDE5OnN0YXRpYyBpbnQgZTEwMF9nZXRfbGlua19rc2V0dGluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQyMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0Mjk6c3RhdGljIGludCBlMTAwX3NldF9saW5rX2tzZXR0aW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDMwLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzNi1cXHRlcnIgPSBtaWlfZXRodG9vbF9zZXRfbGlua19rc2V0dGluZ3MoXFx1MDAyNm5pYy1cXHUwMDNlbWlpLCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDM3OlxcdGUxMDBfZXhlY19jYihuaWMsIE5VTEwsIGUxMDBfY29uZmlndXJlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyNDQyOnN0YXRpYyB2b2lkIGUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjQ0My1cXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTEtI2RlZmluZSBFMTAwX1BIWV9SRUdTIDB4MURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjQ1MjpzdGF0aWMgaW50IGUxMDBfZ2V0X3JlZ3NfbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTI0NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI0NjI6c3RhdGljIHZvaWQgZTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yNDYzLVxcdHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKnApXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjA6NTUuMDM4NTU3MzUxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTM5ODM5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgZTEwMGAgRHJpdmVyJ3MgRW50cnlwb2ludCBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSByZXZpc2l0aW5nIHRoZSBgZTEwMF9wcm9iZWAgZnVuY3Rpb24gYW5kIG5lZWQgdG8gY2xhcmlmeSBzb21ldGhpbmcuIEluaXRpYWxseSwgSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIG5vbi1zdGF0aWMsIGJ1dCBpdCdzIGNsZWFybHkgZGVjbGFyZWQgYXMgYHN0YXRpY2AgaW4gdGhlIGNvZGU6XG5cbmBgYGNcbnN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmBgYFxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIGd1aWRpbmcgbWUgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIHJhdGhlciB0aGFuIGludGVybmFsLCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIGlubGluZXMgc3RhdGljIGZ1bmN0aW9ucy4gVGhpcyBtZWFucyB0aGV5IGRvbid0IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gSWYgZXZlcnl0aGluZyBpcyBzdGF0aWMsIEkgc2hvdWxkIGJlIHVzaW5nIHRoZSBzdGF0aWMgZnVuY3Rpb25zIHRoYXQgKmFyZW4ndCogaW5saW5lZC4gRnVuY3Rpb25zIGxpa2UgYGUxMDBfcHJvYmVgLCBgZTEwMF9kaWFnX3Rlc3RgLCBhbmQgYGUxMDBfc2V0X2VlcHJvbWAgY29tZSB0byBtaW5kIHNpbmNlIHRoZXkgYXJlIGFsbCBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMuXG5cbkxldCdzIGRvdWJsZS1jaGVjay4gSSBzZWUgdGhhdCBgZTEwMF9wcm9iZWAgaXMsIGluIGZhY3QsIHBhc3NlZCB0byBgc3RydWN0IHBjaV9kcml2ZXIgZTEwMF9kcml2ZXJgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5Pa2F5LCB0aGlzIGxvZ2ljIG1ha2VzIHNlbnNlLiBUbyBlbnN1cmUgSSdtIGNvbXBsaWFudCwgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBlMTAwLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCBpbiB0aGVyZS4gR290dGEgY292ZXIgbXkgYmFzZXMgaGVyZSBhbmQgbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0MTUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MDAuODUyNTQ0NzkxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE1MDA2NzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5pbnQgZTEwMF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTowMC45NTQwNTY1OThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEyMTY0MTI3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFMTAwIERyaXZlciBTcGVjdWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc25pcHBldCBoZXJlLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIGBedm9pZCBlMTAwX2AuIEkgaW1tZWRpYXRlbHkgc3RhcnQgdGhpbmtpbmcgYWJvdXQgdGhlIGNvbnRleHQuIFRoaXMgbGlrZWx5IHJlZmVyZW5jZXMgYSBmdW5jdGlvbiBvciBzdHJ1Y3R1cmUgcmVsYXRlZCB0byB0aGUgSW50ZWwgZTEwMCBuZXR3b3JrIGRyaXZlci4gVGhlIGB2b2lkYCByZXR1cm4gdHlwZSBzdWdnZXN0cyBhIGJhc2ljIGZ1bmN0aW9uLCBwb3NzaWJseSBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgb3IgcGVyaGFwcyBhIHV0aWxpdHkgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IG5lZWQgdG8gcmV0dXJuIGFueSBzcGVjaWZpYyBkYXRhLiBUaGUgY2FyZXQgKGBeYCkgcHJlY2VkaW5nIGB2b2lkYCBjb3VsZCBiZSBhIHBvaW50ZXItdG8tZnVuY3Rpb24uIEl0IG5lZWRzIHRvIGJlIGV4YW1pbmVkIGZyb20gd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgZHJpdmVyIGZyYW1ld29yaywgbG9va2luZyBhdCBjYWxsc2l0ZXMgYW5kIHVzZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzeW1ib2wgdGFibGUgb3IgbG9vayBmb3IgYSBoZWFkZXIgZmlsZSB0aGF0IGRlZmluZXMgaXQgdG8gY29uZmlybSB0aGUgYWN0dWFsIGRlY2xhcmF0aW9uIGFuZCB1c2FnZSBvZiB0aGUgZnVuY3Rpb24gd2l0aGluIHRoZSBkcml2ZXIncyBzb3VyY2UgY29kZS4gSXMgaXQgYW4gZW50cnkgcG9pbnQ/IEFuIGludGVybmFsIHdvcmtlciBmdW5jdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEknZCB0aGVuIGNoZWNrIGZvciBhbnkga25vd24gaXNzdWVzIG9yIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW50ZXJydXB0cyBvciBtZW1vcnkgYWNjZXNzLCBnaXZlbiBpdCdzIGFuIG9sZGVyIGNoaXBzZXQuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhIHBvdGVudGlhbCBwb2ludCBvZiBmYWlsdXJlIGZvciB0aGUgZHJpdmVyIG9yIGEgcGxhY2Ugd2hlcmUgZXhwbG9pdHMgbWlnaHQgYmUgaW50cm9kdWNlZC4gSXQgbmVlZHMgYSBkZWVwZXIgaW52ZXN0aWdhdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMDAsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTowNi4wNzU3MDEwNjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NjI4Mjc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJedm9pZCBlMTAwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjA2LjE1MjMzODA3NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDIwOTQ0NTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgaXQgbG9va3MgbGlrZSBldmVyeXRoaW5nJ3MgYnVpbHQgYXJvdW5kIHN0YXRpYyBmdW5jdGlvbnMuIFRoYXQncyBub3QgdW5leHBlY3RlZCwgYW5kIGZyYW5rbHksIG1hbmFnZWFibGUuIEkgc2VlIHdlIGhhdmUgc29tZSBrZXkgcGxheWVycyBoZXJlOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGVudHJ5IHBvaW50cyBmb3IgcHJvYmluZywgZGlhZ25vc3RpYyB0ZXN0aW5nLCBhbmQgRUVQUk9NIGNvbmZpZ3VyYXRpb24sIHJlc3BlY3RpdmVseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlcidzIG9wZXJhdGlvbmFsIGZsb3cuXG5cbk5vdywgbGV0J3MgZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0LiBUaGUgYEUxMDBgIGNvbmZpZyBvcHRpb24gaXRzZWxmIGlzIG9idmlvdXNseSBjZW50cmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpdHMgZGVwZW5kZW5jaWVzLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMsIGlmIGFueSwgbmVlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgRTEwMGAgdG8gYmUgY29ycmVjdGx5IGJ1aWx0IGFuZCBmdW5jdGlvbmFsLiBTbywgbGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2suIEknbGwgbmVlZCB0byBwYXJzZSB0aGF0IGZpbGUgdG8gZGV0ZXJtaW5lIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYEUxMDBgIGFuZCBvdGhlciBjb21wb25lbnRzLCBlbnN1cmluZyBJJ20gYXdhcmUgb2YgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBpdGZhbGxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTM0NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjExLjU3MzI4NTIwNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzNzMwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEUxMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MjI6Y29uZmlnIEUxMDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSBQUk8vMTAwKyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjQ1OmNvbmZpZyBFMTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzo2MTpjb25maWcgRTEwMDBFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy02Mi1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgUFJPLzEwMDAgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjgxOmNvbmZpZyBFMTAwMEVfSFdUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODItXFx0Ym9vbCBcXFwiU3VwcG9ydCBIVyBjcm9zcy10aW1lc3RhbXAgb24gUENIIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjExLjY1MzY2NjU0M1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDczMzA4NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSW50ZWwgRXRoZXJuZXQgS2NvbmZpZyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcgYXJvdW5kIGxpbmUgMjIg4oCTIHRoYXQncyBvZnRlbiB3aGVyZSB0aGUgY29yZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2luLiBJJ20gbWVudGFsbHkgcGFyc2luZyB0aGUgZmlsZSBzdHJ1Y3R1cmUsIGFudGljaXBhdGluZyB0aGUgdHlwaWNhbCBwYXR0ZXJuOiBhIGBjb25maWdgIHN0YXRlbWVudCwgYSBwcm9tcHQsIGEgdHlwZSAoYm9vbCwgdHJpc3RhdGUsIGV0Yy4pLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdCB2YWx1ZXMuIEknbSBleHBlY3RpbmcgdG8gcXVpY2tseSBncmFzcCB3aGljaCBmZWF0dXJlIG9yIGRyaXZlciBpcyBiZWluZyBjb25maWd1cmVkIHRoZXJlLiBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiB0aGUgb3B0aW9ucyBwcm92aWRlZC4gSXMgaXQgcmVsYXRlZCB0byBhIHNwZWNpZmljIGhhcmR3YXJlIGZhbWlseSwgYSBwYXJ0aWN1bGFyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBkcml2ZXIgc2V0dGluZz8gS25vd2luZyB0aGUgY29udGV4dCBvZiBsaW5lIDIyIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBvZiB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGdldCB0aGUgZ2VuZXJhbCBpZGVhIG9mIHdoYXQncyBiZWluZyBjb25maWd1cmVkLiBGcm9tIHRoZXJlIEkgY2FuIGRldGVybWluZSBob3cgaXQncyBiZWluZyBkb25lLCBhbmQgd2h5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjA3MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjE2LjEyNjk3ODY3MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyMjpcXHRjb25maWcgRTEwMFxcbiAgMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIFBSTy8xMDArIHN1cHBvcnRcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMjU6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMjY6XFx0XFx0aGVscFxcbiAgMjc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBQUk8vMTAwIGZhbWlseSBvZiBhZGFwdGVycy5cXG4gIDI4OlxcdFxcdCAgVG8gdmVyaWZ5IHRoYXQgeW91ciBhZGFwdGVyIGlzIHN1cHBvcnRlZCwgZmluZCB0aGUgYm9hcmQgSUQgbnVtYmVyXFxuICAyOTpcXHRcXHQgIG9uIHRoZSBhZGFwdGVyLiBMb29rIGZvciBhIGxhYmVsIHRoYXQgaGFzIGEgYmFyY29kZSBhbmQgYSBudW1iZXJcXG4gIDMwOlxcdFxcdCAgaW4gdGhlIGZvcm1hdCAxMjM0NTYtMDAxIChzaXggZGlnaXRzIGh5cGhlbiB0aHJlZSBkaWdpdHMpLlxcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHQgIFVzZSB0aGUgYWJvdmUgaW5mb3JtYXRpb24gYW5kIHRoZSBBZGFwdGVyIFxcdTAwMjYgRHJpdmVyIElEIEd1aWRlIHRoYXRcXG4gIDMzOlxcdFxcdCAgY2FuIGJlIGxvY2F0ZWQgYXQ6XFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly9zdXBwb3J0LmludGVsLmNvbVxcdTAwM2VcXG4gIDM2OlxcdFxcbiAgMzc6XFx0XFx0ICB0byBpZGVudGlmeSB0aGUgYWRhcHRlci5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cXG4gIDQwOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2UxMDAucnN0XFx1MDAzZS5cXG4gIDQxOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMToxNi4xMjcwOTQ5OTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3ODcxOTY1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEludGVsIFBSTy8xMDAgKGUxMDApIEV0aGVybmV0IGRyaXZlciwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGJvdW5kcyBjaGVja3MgdG8gcHJldmVudCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIG9yIGJ1ZmZlciBvdmVyZmxvd3MuICBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0J3Mgbm90IGp1c3QgYSBjb21tZW50IG9yIGEgbG9nZ2luZyB1cGRhdGUuIEl0J3MgdGlnaHRlbmluZyB1cCBob3cgdGhlIGRyaXZlciBoYW5kbGVzIEVFUFJPTSByZWFkcy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSByZWFjaGFiaWxpdHkuICBUaGUgZTEwMCBkcml2ZXIgaXMgZm9yIHRoZSBpODI1NXggZmFtaWx5IG9mIE5JQ3MuICBDcnVjaWFsbHksIFFFTVUgZnVsbHkgZW11bGF0ZXMgdGhpcyBoYXJkd2FyZS4gIFRoYXQgbWVhbnMgdGhlIGRyaXZlcidzIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIGlzIGEga2V5IHJlcXVpcmVtZW50IHRvIGRldGVybWluZSBcIldvcnRoRnV6emluZ1wiIGFzIHBlciBndWlkZWxpbmVzLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB3aGVyZSB0aGlzIGNvZGUgaXMgY2FsbGVkLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGBlMTAwX2VlcHJvbV9yZWFkYC4gIEkgc2F3IHRoYXQgYGUxMDBfZWVwcm9tX3JlYWRgIGlzIGNhbGxlZCBieSBgZTEwMF9lZXByb21fbG9hZGAuIFRoaXMgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgZnJvbSBhIGNvdXBsZSBvZiBpbXBvcnRhbnQgcGxhY2VzOiBgZTEwMF9wcm9iZWAgKGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24pIGFuZCBhbHNvIGZyb20gYGUxMDBfZGlhZ190ZXN0YC5cblxuTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgY2FsbCBzaXRlcyBmb3IgYGUxMDBfZWVwcm9tX3JlYWRgLlxuXG5FeGNlbGxlbnQsIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgaXMgYWxzbyBjYWxsZWQgZnJvbSBgZTEwMF9zZXRfZWVwcm9tYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcyBpcyByZWFjaGFibGUuIEkgc2VlIHRoYXQgaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlIGBlMTAwX2V0aHRvb2xfb3BzYCwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkIHZpYSBldGh0b29sLiBQZXJmZWN0LlxuXG5TbyBteSBcImZvY3VzIHN5bWJvbHNcIiBmb3IgZnV6emluZyB0aGlzIHBhdGNoIGFyZSBub3cgY2xlYXJseSBkZWZpbmVkOiBgZTEwMF9wcm9iZWAsIGBlMTAwX2RpYWdfdGVzdGAsIGFuZCBgZTEwMF9zZXRfZWVwcm9tYC4gSSBjYW4gdXNlIHRoZXNlIGFzIG15IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy5cblxuUmVnYXJkaW5nIGNvbmZpZ3VyYXRpb24sIGBFMTAwYCBuZWVkcyB0byBiZSBlbmFibGVkLCBhbmQgYFBDSWAgaXMgdXN1YWxseSBlbmFibGVkIGluIG1vc3QgY29uZmlndXJhdGlvbnMuIFRoZXNlIGFyZSBteSByZXF1aXJlZCBcIkVuYWJsZUNvbmZpZ3NcIi5cblxuTGV0J3MgcXVpY2tseSByZXZpZXcgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEgdG8gYmUgYWJzb2x1dGVseSBzdXJlOiBJJ20gbm90IGRlYWxpbmcgd2l0aCBkb2N1bWVudGF0aW9uIGNoYW5nZXMsIGNvbW1lbnRzLCBsb2dnaW5nLCBjb25zdGFudHMgdGhhdCBkb24ndCBjaGFuZ2UgZmxvdywgdW5yZWFjaGFibGUgY29kZSwgb3IgdGVhcmRvd24gY2FsbGJhY2tzLiBUaGlzIGlzIGNvcmUgZHJpdmVyIGxvZ2ljIHRoYXQgZGlyZWN0bHkgYWZmZWN0cyBFRVBST00gYWNjZXNzIGFuZCB0aGVyZWZvcmUgaXMgbGlrZWx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcywgc2luY2UgaXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgdGhlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLiAgU28gYmFzZWQgb24gYWxsIG9mIHRoaXMsIFwiV29ydGhGdXp6aW5nXCIgaXMgYHRydWVgLlxuXG5GaW5hbCB0aG91Z2h0czogSSBzaG91bGQgYWRkIGEgY2hlY2sgdG8gbWFrZSBzdXJlIGBlMTAwX2VlcHJvbV9yZWFkYCBpc24ndCBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZSBpbXBvcnRhbnQsIGJ1dCB0aGlzIGlzIGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nIGdpdmVuIHRoYXQgdGhlIHBhdGNoIHByZXZlbnRzIHVuZGVmaW5lZCBiZWhhdmlvciBhbmQgdGhlcmUgYXJlIGEgZmV3IGludGVyZXN0aW5nIGNhbGwgc2l0ZXMgdG8gZm9jdXMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjUwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIxMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjMxLjkxNDI5NDcwOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM0Mjg3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZTEwMF9lZXByb21fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTY4Mz1zdGF0aWMgdm9pZCBlMTAwX2VlcHJvbV93cml0ZShzdHJ1Y3QgbmljICpuaWMsIHUxNiBhZGRyX2xlbiwgdTE2IGFkZHIsIF9fbGUxNiBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTcyMC0vKiBHZW5lcmFsIHRlY2huaXF1ZSBzdG9sZW4gZnJvbSB0aGUgZWVwcm8xMDAgZHJpdmVyIC0gdmVyeSBjbGV2ZXIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6NzIxOnN0YXRpYyBfX2xlMTYgZTEwMF9lZXByb21fcmVhZChzdHJ1Y3QgbmljICpuaWMsIHUxNiAqYWRkcl9sZW4sIHUxNiBhZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03MjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTc2Nz1zdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3MS1cXHQvKiBUcnkgcmVhZGluZyB3aXRoIGFuIDgtYml0IGFkZHIgbGVuIHRvIGRpc2NvdmVyIGFjdHVhbCBhZGRyIGxlbiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3NzI6XFx0ZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODMtXFx0Zm9yIChhZGRyID0gMDsgYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djOyBhZGRyKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6Nzg0OlxcdFxcdG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdID0gZTEwMF9lZXByb21fcmVhZChuaWMsIFxcdTAwMjZhZGRyX2xlbiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4NS1cXHRcXHRpZiAoYWRkciBcXHUwMDNjIG5pYy1cXHUwMDNlZWVwcm9tX3djIC0gMSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA1LVxcdC8qIFRyeSByZWFkaW5nIHdpdGggYW4gOC1iaXQgYWRkciBsZW4gdG8gZGlzY292ZXIgYWN0dWFsIGFkZHIgbGVuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgwNjpcXHRlMTAwX2VlcHJvbV9yZWFkKG5pYywgXFx1MDAyNmFkZHJfbGVuLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODA3LVxcdG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzEuOTc3NzI5OTg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4Nzk0NTIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHN5bWJvbHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gaW1tZWRpYXRlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBFRVBST00gRnVuY3Rpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgc2VlLi4uIGNvbmZpcm1pbmcgdGhhdCB3ZSdyZSBvbmx5IGRlYWxpbmcgd2l0aCBgZTEwMF9lZXByb21fbG9hZGAgYW5kIGBlMTAwX2VlcHJvbV9zYXZlYCBoZXJlLiBHb29kLCBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIEkgcmVjYWxsIHRob3NlIGNhbGxzLiBgZTEwMF9lZXByb21fbG9hZGAgZ2V0cyBpbnZva2VkIGJ5IGBlMTAwX3Byb2JlYCBhbmQgYWxzbyBkdXJpbmcgdGhlIGRpYWdub3N0aWMgdGVzdHMsIGBlMTAwX2RpYWdfdGVzdGAuIFRoYXQgbWFrZXMgc2Vuc2UgZm9yIGluaXRpYWxpemF0aW9uIGFuZCB0ZXN0aW5nLiBBbmQgYGUxMDBfZWVwcm9tX3NhdmVgLCB0aGF0J3MgY2FsbGVkIGJ5IGBlMTAwX3NldF9lZXByb21gLCB3aGljaCBoYW5kbGVzIHRoZSBhY3R1YWwgd3JpdGUgb3BlcmF0aW9ucy4gRXhjZWxsZW50LCBzbyB0aGUgcHJpbWFyeSBzeW1ib2xzIHdlJ3JlIHRyYWNraW5nIGFyZSBpbmRlZWQgdGhlIG9uZXMgSSBhbnRpY2lwYXRlZC4gRXZlcnl0aGluZyBhbGlnbnMgYXMgSSB0aG91Z2h0IGl0IHdvdWxkLiBUaW1lIHRvIG1vdmUgb24gdG8gdGhlIG5leHQgdGFzayAtIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxNzEsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjM4Ljg1NzE4NDM4NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ2MjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRTEwMFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImUxMDBfcHJvYmVcIixcbiAgICBcImUxMDBfZGlhZ190ZXN0XCIsXG4gICAgXCJlMTAwX3NldF9lZXByb21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byB0aGUgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIGRpc2NvdmVyeSBsb2dpYyBpbiB0aGUgSW50ZWwgUFJPLzEwMCAoZTEwMCkgRXRoZXJuZXQgZHJpdmVyIHRvIHByZXZlbnQgdW5kZWZpbmVkIGJlaGF2aW9yIChlLmcuIGludmFsaWQgc2hpZnRzKSBhbmQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3MuIFRoZSBlMTAwIGRyaXZlciBpcyBmb3IgdGhlIGk4MjU1eCBmYW1pbHkgb2YgTklDcywgd2hpY2ggaXMgZnVsbHkgZW11bGF0ZWQgYnkgUUVNVSAoZS5nLiwgaTgyNTU5ZXIpLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JlIChgZTEwMF9wcm9iZWApLCBldGh0b29sIGRpYWdub3N0aWNzIChgZTEwMF9kaWFnX3Rlc3RgKSwgYW5kIGV0aHRvb2wgRUVQUk9NIHdyaXRlIG9wZXJhdGlvbnMgKGBlMTAwX3NldF9lZXByb21gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFMTAwXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZTEwMF9wcm9iZVwiLFxuICAgIFwiZTEwMF9kaWFnX3Rlc3RcIixcbiAgICBcImUxMDBfc2V0X2VlcHJvbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBFRVBST00gYWRkcmVzcyBsZW5ndGggZGlzY292ZXJ5IGxvZ2ljIGluIHRoZSBJbnRlbCBQUk8vMTAwIChlMTAwKSBFdGhlcm5ldCBkcml2ZXIgdG8gcHJldmVudCB1bmRlZmluZWQgYmVoYXZpb3IgKGUuZy4gaW52YWxpZCBzaGlmdHMpIGFuZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cy4gVGhlIGUxMDAgZHJpdmVyIGlzIGZvciB0aGUgaTgyNTV4IGZhbWlseSBvZiBOSUNzLCB3aGljaCBpcyBmdWxseSBlbXVsYXRlZCBieSBRRU1VIChlLmcuLCBpODI1NTllciksIG1ha2luZyBpdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmUgKGBlMTAwX3Byb2JlYCksIGV0aHRvb2wgZGlhZ25vc3RpY3MgKGBlMTAwX2RpYWdfdGVzdGApLCBhbmQgZXRodG9vbCBFRVBST00gd3JpdGUgb3BlcmF0aW9ucyAoYGUxMDBfc2V0X2VlcHJvbWApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxODoyMTozOS4wMTI2NTc5MTlaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MDQ5NDU0MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzkuMDEzNTg0MDI5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI4MDQ4NTIzMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgZTEwMCBuZXR3b3JrIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAoYGFkZHJfbGVuYCkgY291bGQgbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHdyaXRlIG9yIHVuZGVmaW5lZCBiZWhhdmlvci4gU3BlY2lmaWNhbGx5LCBpZiBgYWRkcl9sZW5gIGlzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVxcdTAwM2VlZXByb21fd2MgPSAxIFxcdTAwM2NcXHUwMDNjIGFkZHJfbGVuYCByZXN1bHRzIGluIGEgdmFsdWUgb2YgNjU1MzYgb3IgbW9yZSAob3IgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbiBcXHUwMDNlPSAzMmApLiBUaGlzIHZhbHVlIGlzIHRoZW4gdXNlZCBhcyB0aGUgbG9vcCBib3VuZCB0byByZWFkIGZyb20gdGhlIEVFUFJPTSBhbmQgd3JpdGUgaW50byB0aGUgZml4ZWQtc2l6ZSBgbmljLVxcdTAwM2VlZXByb21bMjU2XWAgYXJyYXksIGNhdXNpbmcgYSBtYXNzaXZlIG91dC1vZi1ib3VuZHMgd3JpdGUgb24gdGhlIGhlYXAgKHNpbmNlIGBzdHJ1Y3QgbmljYCBpcyBhbGxvY2F0ZWQgdmlhIGBuZXRkZXZfcHJpdmApLlxcblxcbk91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIHVuZGVmaW5lZCBiZWhhdmlvcnMgKGxpa2Ugb3ZlcnNpemVkIHNoaWZ0cykgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGFuZCBVQlNBTiAoVW5kZWZpbmVkIEJlaGF2aW9yIFNhbml0aXplciksIHdoaWNoIGFyZSBhbHJlYWR5IGVuYWJsZWQgaW4gc3RhbmRhcmQgZnV6emluZyBidWlsZHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZml4IGFueSBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzE3MTJiNTYzMzM2NDM3NWRkMjRjNTRmMmE4NGE5OTAxNTk4YWYyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTg6MTk6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbmluZGV4IDI5OTYwNzYyZTY0YTguLjFkZTVjZDQxZWEwY2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1xuQEAgLTc0NCw3ICs3NDQsMTIgQEAgc3RhdGljIF9fbGUxNiBlMTAwX2VlcHJvbV9yZWFkKHN0cnVjdCBuaWMgKm5pYywgdTE2ICphZGRyX2xlbiwgdTE2IGFkZHIpXG4gXHRcdCAqIGNvbXBsZXRlIGFkZHJlc3MuICBVc2UgdGhpcyB0byBhZGp1c3QgYWRkcl9sZW4uICovXG4gXHRcdGN0cmwgPSBpb3JlYWQ4KFx1MDAyNm5pYy1cdTAwM2Vjc3ItXHUwMDNlZWVwcm9tX2N0cmxfbG8pO1xuIFx0XHRpZiAoIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTYpIHtcbi1cdFx0XHQqYWRkcl9sZW4gLT0gKGkgLSAxNik7XG4rXHRcdFx0dTE2IGxlbiA9IGkgLSAxNjtcbitcbitcdFx0XHRpZiAobGVuIFx1MDAzZSAqYWRkcl9sZW4pXG4rXHRcdFx0XHQqYWRkcl9sZW4gPSAwO1xuK1x0XHRcdGVsc2VcbitcdFx0XHRcdCphZGRyX2xlbiAtPSBsZW47XG4gXHRcdFx0aSA9IDE3O1xuIFx0XHR9XG4gXG5AQCAtNzY1LDcgKzc3MCwxNSBAQCBzdGF0aWMgaW50IGUxMDBfZWVwcm9tX2xvYWQoc3RydWN0IG5pYyAqbmljKVxuIFxuIFx0LyogVHJ5IHJlYWRpbmcgd2l0aCBhbiA4LWJpdCBhZGRyIGxlbiB0byBkaXNjb3ZlciBhY3R1YWwgYWRkciBsZW4gKi9cbiBcdGUxMDBfZWVwcm9tX3JlYWQobmljLCBcdTAwMjZhZGRyX2xlbiwgMCk7XG4tXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMSBcdTAwM2NcdTAwM2MgYWRkcl9sZW47XG4rXG4rXHRpZiAoIWFkZHJfbGVuIHx8IGFkZHJfbGVuIFx1MDAzZT0gMTYpIHtcbitcdFx0bmV0aWZfZXJyKG5pYywgcHJvYmUsIG5pYy1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0XCJJbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdGFkZHJfbGVuKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRuaWMtXHUwMDNlZWVwcm9tX3djID0gMVUgXHUwMDNjXHUwMDNjIGFkZHJfbGVuO1xuIFxuIFx0Zm9yIChhZGRyID0gMDsgYWRkciBcdTAwM2MgbmljLVx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XG4gXHRcdG5pYy1cdTAwM2VlZXByb21bYWRkcl0gPSBlMTAwX2VlcHJvbV9yZWFkKG5pYywgXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6MzkuMDEzNTg2NjY5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTYzNDE4NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoIGluIHRoZSBlMTAwIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZTEwMGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmNgLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgaGFuZGxpbmcgb2YgRUVQUk9NIGFjY2Vzcywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGUxMDBfZWVwcm9tX3JlYWRgIGFuZCBgZTEwMF9lZXByb21fbG9hZGAgZnVuY3Rpb25zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgZml4IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gYGFkZHJfbGVuYC4gIExvb2tpbmcgYXQgYGUxMDBfZWVwcm9tX3JlYWRgLCB0aGUgY29kZSBub3cgY2FyZWZ1bGx5IGFkanVzdHMgYGFkZHJfbGVuYCBpZiBhIHNwZWNpZmljIGNvbmRpdGlvbiBpc24ndCBtZXQgKCBgIShjdHJsIFx1MDAyNiBlZWRvKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2UgMTZgICksIGJ1dCBpdCBtYWtlcyBzdXJlIHRoYXQgdGhlIHZhbHVlIGRvZXNuJ3QgZ28gbmVnYXRpdmUgb3Igb3ZlcmZsb3cuXG5cbkluIGBlMTAwX2VlcHJvbV9sb2FkYCwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBjcnVjaWFsIGNoZWNrOiBgaWYgKCFhZGRyX2xlbiB8fCBhZGRyX2xlbiBcdTAwM2U9IDE2KWAuICBUaGlzIGltbWVkaWF0ZWx5IGZsYWdzIGFuIGlzc3VlIHdoZXJlIHRoZSBjYWxjdWxhdGVkIGBhZGRyX2xlbmAgY291bGQgYmUgaW52YWxpZCDigJMgZWl0aGVyIHplcm8gb3IgdG9vIGxhcmdlLiBUaGUgY29kZSB0aGVuIHVzZXMgYG5ldGlmX2VycmAgdG8gcmVwb3J0IHRoZSBpc3N1ZS4gIFRoZSBwcmltYXJ5IHB1cnBvc2UgaXMgcHJldmVudGluZyBhIHNoaWZ0LW91dC1vZi1ib3VuZHMgZXJyb3IgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzLiAgVGhlIHZhcmlhYmxlIGBuaWMtXHUwMDNlZWVwcm9tX3djYCBpcyBkZXJpdmVkIGZyb20gYDFVIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAuIFRoZSBvcmlnaW5hbCBsb2dpYyB3YXMgZmxhd2VkLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGBhZGRyX2xlbmAgd2FzIHRvbyBsYXJnZSAoaS5lLiwgYGFkZHJfbGVuYCBcdTAwM2U9IDE2KS4gVGhlIGNvZGUgcHJvdGVjdHMgYG5pYy1cdTAwM2VlZXByb21bYWRkcl1gIGFjY2Vzc2VzLlxuXG5UaGUgcm9vdCBjYXVzZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFuIGludGVnZXIgdW5kZXJmbG93IG9yIG92ZXJmbG93LCBhbmQgdGhlIHJlc3VsdGluZyBgYWRkcl9sZW5gIGxlYWRzIHRvIGVpdGhlciB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0aW5nIGEgdmVyeSBsYXJnZSBhbW91bnQpIG9yIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIChgbmljLVx1MDAzZWVlcHJvbVthZGRyXWApLiAgSSdtIHRoaW5raW5nIEtBU0FOIGFuZCBVQlNBTiB3b3VsZCBiZSB0aGUgYXBwcm9wcmlhdGUgdG9vbHMgdG8gY2F0Y2ggdGhpcyBraW5kIG9mIHByb2JsZW0uIEkgZG9uJ3Qgc2VlIGFueSBpbmRpY2F0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGludm9sdmVkIGhlcmU7IGl0J3MgcHVyZWx5IGFib3V0IHByZXZlbnRpbmcgT09CIGFjY2VzcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9yLiBTbywgS01TQU4gaXNuJ3QgcmVsZXZhbnQgaW4gdGhpcyBzY2VuYXJpby5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBzaXplIG9mIGBuaWMtXHUwMDNlZWVwcm9tYC4gSSdsbCBydW4gYSBxdWljayBncmVwIGluIGBlMTAwLmNgIHRvIGNvbmZpcm0gdGhlIGFjdHVhbCBzaXplLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzEzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTIuNTc3MDA4NDMxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjA2OTUyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidTE2IGVlcHJvbVxcXFxbXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTIuNjUzMDg2NjM5WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODY0ODg4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZTEwMC5jYCB3aXRoIGEgRm9jdXNlZCBHcmVwKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgYGUxMDAuY2AgYWdhaW4uIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byBwaW5wb2ludCBhbGwgaW5zdGFuY2VzIG9mIGBlZXByb21gIHdpdGhpbiB0aGlzIGNvZGUsIGJ1dCBJIHdhbnQgdG8gYmUgKnByZWNpc2UqLiBJIGRvbid0IHdhbnQgdG8gZ2V0IGJvZ2dlZCBkb3duIHdpdGggaXJyZWxldmFudCBtYXRjaGVzIG9yIG5vaXNlIGZyb20sIHNheSwgaGVhZGVyIGZpbGUgZGVjbGFyYXRpb25zLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhlIEVFUFJPTSBpbnRlcmFjdGlvbiBpcyBpbXBsZW1lbnRlZCBoZXJlLCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW5zdGFuY2VzIG9mIGBlZXByb21gIHJlbGF0ZWQgdG8gdGhlIGNvZGUncyBhY3RpdmUgdXNlLCBub3QgaXRzIG1lcmUgZGVmaW5pdGlvbi5cblxuVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIGEgYnJvYWQgc2VhcmNoLCBsZXQncyByZWZpbmUgdGhpcy4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGVlcHJvbWAgd2l0aGluIGBlMTAwLmNgLiBCdXQgSSdtIGdvaW5nIHRvIGV4Y2x1ZGUgYHUxNmAgZnJvbSB0aGUgc2VhcmNoIGNyaXRlcmlhLiBJJ20gZm9jdXNpbmcgb24gdGhlICp1c2FnZSogbm90IHRoZSAqZGVjbGFyYXRpb24qLiBUaGF0IHNob3VsZCBuYXJyb3cgdGhlIHJlc3VsdHMgc2lnbmlmaWNhbnRseSwgZ2l2aW5nIG1lIGEgbW9yZSB0YXJnZXRlZCB2aWV3IG9mIHRoZSBFRVBST00gYWNjZXNzIHBhdGhzLCBwb3RlbnRpYWxseSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGFjY2Vzcywgb3IgY2FsbHMgdG8gRUVQUk9NIHNwZWNpZmljIHJvdXRpbmVzLiBJdCdzIGEgcXVpY2sgYW5kIGRpcnR5IHdheSB0byBnZXQgYSBnb29kIGJlYXJpbmcgb24gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdpdGhvdXQgaGF2aW5nIHRvIHdhZGUgdGhyb3VnaCBkZWZpbml0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIxOjU2LjUzOTU3ODAyNVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExODU4NDA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVlcHJvbVxcXFxbXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NTM5PXN0cnVjdCBuaWMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTYwMi1cXHR1MTYgZWVwcm9tX3djO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo2MDM6XFx0X19sZTE2IGVlcHJvbVsyNTZdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy02MDQtXFx0c3BpbmxvY2tfdCBtZGlvX2xvY2s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9NzY3PXN0YXRpYyBpbnQgZTEwMF9lZXByb21fbG9hZChzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzgzLVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YzsgYWRkcisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NDpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSA9IGUxMDBfZWVwcm9tX3JlYWQobmljLCBcXHUwMDI2YWRkcl9sZW4sIGFkZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy03ODUtXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjc4NjpcXHRcXHRcXHRjaGVja3N1bSArPSBsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVthZGRyXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc4Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtNzkwLVxcdCAqIHRoZSBzdW0gb2Ygd29yZHMgc2hvdWxkIGJlIDB4QkFCQSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo3OTE6XFx0aWYgKGNwdV90b19sZTE2KDB4QkFCQSAtIGNoZWNrc3VtKSAhPSBuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTc5Mi1cXHRcXHRuZXRpZl9lcnIobmljLCBwcm9iZSwgbmljLVxcdTAwM2VuZXRkZXYsIFxcXCJFRVBST00gY29ycnVwdGVkXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz04MDE9c3RhdGljIGludCBlMTAwX2VlcHJvbV9zYXZlKHN0cnVjdCBuaWMgKm5pYywgdTE2IHN0YXJ0LCB1MTYgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODEyLVxcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFxcdTAwM2Mgc3RhcnQgKyBjb3VudDsgYWRkcisrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzo4MTM6XFx0XFx0ZTEwMF9lZXByb21fd3JpdGUobmljLCBhZGRyX2xlbiwgYWRkciwgbmljLVxcdTAwM2VlZXByb21bYWRkcl0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy04MTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODE3LVxcdGZvciAoYWRkciA9IDA7IGFkZHIgXFx1MDAzYyBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDE7IGFkZHIrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODE4OlxcdFxcdGNoZWNrc3VtICs9IGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2FkZHJdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6ODE5OlxcdG5pYy1cXHUwMDNlZWVwcm9tW25pYy1cXHUwMDNlZWVwcm9tX3djIC0gMV0gPSBjcHVfdG9fbGUxNigweEJBQkEgLSBjaGVja3N1bSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jLTgyMC1cXHRlMTAwX2VlcHJvbV93cml0ZShuaWMsIGFkZHJfbGVuLCBuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjgyMTpcXHRcXHRuaWMtXFx1MDAzZWVlcHJvbVtuaWMtXFx1MDAzZWVlcHJvbV93YyAtIDFdKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtODIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0MDg9c3RhdGljIGludCBlMTAwX3BoeV9jaGVja193aXRob3V0X21paShzdHJ1Y3QgbmljICpuaWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MTQxMzpcXHRwaHlfdHlwZSA9IChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fcGh5X2lmYWNlXSkgXFx1MDAzZVxcdTAwM2UgOCkgXFx1MDAyNiAweDBmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNDE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jPTE0NDg9c3RhdGljIGludCBlMTAwX3BoeV9pbml0KHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0xNTMxLVxcdCAgIChtZGlvX3JlYWQobmV0ZGV2LCBuaWMtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9UUElTVEFUVVMpIFxcdTAwMjYgMHg4MDAwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoxNTMyOlxcdCAgIChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fY25mZ19tZGl4XSkgXFx1MDAyNiBlZXByb21fbWRpeF9lbmFibGVkKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMTUzMy1cXHRcXHQvKiBlbmFibGUvZGlzYWJsZSBNREkvTURJLVggYXV0by1zd2l0Y2hpbmcuICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM9MjI3OT1zdGF0aWMgaW50IGUxMDBfYXNmKHN0cnVjdCBuaWMgKm5pYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjgyLVxcdHJldHVybiAobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXZpY2UgXFx1MDAzZT0gMHgxMDUwKSBcXHUwMDI2XFx1MDAyNiAobmljLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXZpY2UgXFx1MDAzYz0gMHgxMDU3KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjgzOlxcdCAgIChsZTE2X3RvX2NwdShuaWMtXFx1MDAzZWVlcHJvbVtlZXByb21fY29uZmlnX2FzZl0pIFxcdTAwMjYgZWVwcm9tX2FzZikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmM6MjI4NDpcXHQgICAhKGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2VlcHJvbV9jb25maWdfYXNmXSkgXFx1MDAyNiBlZXByb21fZ2NsKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYzoyMjg1OlxcdCAgICgobGUxNl90b19jcHUobmljLVxcdTAwM2VlZXByb21bZWVwcm9tX3NtYnVzX2FkZHJdKSBcXHUwMDI2IDB4RkYpICE9IDB4RkUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yMjg2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYz0yODQzPXN0YXRpYyBpbnQgZTEwMF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAuYy0yOTUxLVxcdGlmICgobmljLVxcdTAwM2VtYWMgXFx1MDAzZT0gbWFjXzgyNTU4X0QxMDFfQTQpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMC5jOjI5NTI6XFx0ICAgKGxlMTZfdG9fY3B1KG5pYy1cXHUwMDNlZWVwcm9tW2VlcHJvbV9pZF0pIFxcdTAwMjYgZWVwcm9tX2lkX3dvbCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwLmMtMjk1My1cXHRcXHRuaWMtXFx1MDAzZWZsYWdzIHw9IHdvbF9tYWdpYztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTg6MjE6NTcuMDUxNDQxNDhaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTA2NDIwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBlMTAwIERyaXZlciBFRVBST00gVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgYF9fbGUxNiBlZXByb21bMjU2XTtgIGFycmF5IGluIHRoZSBgbmljYCBzdHJ1Y3R1cmUuIFRoZSBwb3RlbnRpYWwgcHJvYmxlbSBpcyB0aGF0IGBhZGRyX2xlbmAgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgbG9vcCBib3VuZCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0byB0aGlzIEVFUFJPTS4gSWYgYGFkZHJfbGVuYCBiZWNvbWVzIDE2IG9yIGdyZWF0ZXIsIHRoZSBjYWxjdWxhdGlvbiBgbmljLVx1MDAzZWVlcHJvbV93YyA9IDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCBpcyBnb2luZyB0byByZXN1bHQgaW4gYSB2YWx1ZSBvZiBhdCBsZWFzdCA2NTUzNiwgYW5kIGl0IGNhbiBncm93IG11Y2gsIG11Y2ggbGFyZ2VyIHRoYW4gdGhhdC4gIFRoYXQncyBhIG1hc3NpdmUgc2hpZnQsIGFuZCBwb3RlbnRpYWxseSB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuYCBpcyBsYXJnZSBlbm91Z2gsIHNheSBncmVhdGVyIG9yIGVxdWFsIHRvIDMyLlxuXG5UaGUgc3Vic2VxdWVudCBsb29wIHRoZW4gZ29lcyBhbmQgd3JpdGVzIHBhc3QgdGhlIGVuZCBvZiB0aGF0IGZpeGVkLXNpemUgYG5pYy1cdTAwM2VlZXByb21bMjU2XWAgYnVmZmVyLCBjcmVhdGluZyBhIGNsYXNzaWMgb3V0LW9mLWJvdW5kcyB3cml0ZS4gIEtBU0FOIGlzIGdvaW5nIHRvIHRyaXAgYWxsIG92ZXIgdGhpczsgaXQncyBwcmFjdGljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB0aGlzIGtpbmQgb2YgdGhpbmcsIGFuZCBVQlNBTiBzaG91bGQgbmFpbCB0aGUgb3ZlcnNpemVkIHNoaWZ0LiBUaGlzIGlzIHJlYWxseSBhbiBPT0Igd3JpdGUgaXNzdWUuXG5cbkxldCdzIGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IGNoYW5jZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBleHBvc2VkPyBJZiBgYWRkcl9sZW5gIGlzIDAsIHRoZSBwcm9ncmFtIGNhbiByZWFkIGBuaWMtXHUwMDNlZWVwcm9tWzBdYC4gVGhhdCdzIG5vdCByZWFsbHkgYW4gaXNzdWUuICBObywgYGUxMDBfZWVwcm9tX2xvYWRgIGp1c3QgcHVsbHMgZGF0YSBmcm9tIHRoZSBFRVBST00gaGFyZHdhcmUsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRvIGxlYWsgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhyb3VnaCB0aGlzLiAgSWYgYGFkZHJfbGVuYCBpcyBsYXJnZSwgaXQgd3JpdGVzIE9PQjsgaWYgaXQncyBzbWFsbCwgaXQgd3JpdGVzIGZld2VyIGVsZW1lbnRzLiAgSXQncyBqdXN0IHRoZSBib3VuZHMgY2hlY2sgd2UncmUgd29ycmllZCBhYm91dC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBzaW1wbGU7IGl0IGFkZHMgYSBjaGVjazogYGlmICghYWRkcl9sZW4gfHwgYWRkcl9sZW4gXHUwMDNlPSAxNikgcmV0dXJuIC1FSU5WQUw7YC4gVGhpcyBuZWF0bHkgcHJldmVudHMgdGhlIE9PQiB3cml0ZSwgYW5kIGFsc28gbmVhdGx5IHByZXZlbnRzIHRoZSB1bmRlZmluZWQgYmVoYXZpb3Igb2YgYDEgXHUwMDNjXHUwMDNjIGFkZHJfbGVuYCB3aGVuIGBhZGRyX2xlbiBcdTAwM2U9IDMyYC5cblxuU28sIGl0J3MgcHJldHR5IGNsZWFyOiB0aGlzIGlzICpzdHJpY3RseSogYW4gT09CIHdyaXRlIGFuZCB1bmRlZmluZWQgYmVoYXZpb3IgcHJvYmxlbS4gS0FTQU4gYW5kIFVCU0FOIGFyZSBnb2luZyB0byBoYW5kbGUgdGhpcyBiZWF1dGlmdWxseS4gS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgY29waWVkIHRvIHVzZXJzcGFjZS5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUvdW5kZWZpbmVkIGJlaGF2aW9yIGluIHRoZSBlMTAwIGRyaXZlciB3aGVyZSBhbiBpbnZhbGlkIEVFUFJPTSBhZGRyZXNzIGxlbmd0aCwgYGFkZHJfbGVuYCwgYWxsb3dzIGFuIGF0dGFja2VyIHRvIGNhdXNlIGFuIE9PQiB3cml0ZSBieSBleHBsb2l0aW5nIGAxIFx1MDAzY1x1MDAzYyBhZGRyX2xlbmAgd2hpY2ggZ3Jvd3MgdG9vIGxhcmdlIGZvciB0aGUgZml4ZWQtc2l6ZSBidWZmZXIuIEl0J3MgYSBoZWFwIE9PQi4gS0FTQU4gYW5kIFVCU0FOIHdpbGwgcmVsaWFibHkgZGV0ZWN0IHRoaXMuIFRoaXMgaXMgKm5vdCogYW4gaW5mb3JtYXRpb24gbGVhaywgc28gS01TQU4gaXMgdW5uZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzMsIk91dHB1dFRva2VucyI6MjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE4OjIyOjA3LjA2MjA4NjgwNloiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIGUxMDAgbmV0d29yayBkcml2ZXIgd2hlcmUgYW4gaW52YWxpZCBFRVBST00gYWRkcmVzcyBsZW5ndGggKGBhZGRyX2xlbmApIGNvdWxkIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyB3cml0ZSBvciB1bmRlZmluZWQgYmVoYXZpb3IuIFNwZWNpZmljYWxseSwgaWYgYGFkZHJfbGVuYCBpcyAxNiBvciBncmVhdGVyLCB0aGUgY2FsY3VsYXRpb24gYG5pYy1cXHUwMDNlZWVwcm9tX3djID0gMSBcXHUwMDNjXFx1MDAzYyBhZGRyX2xlbmAgcmVzdWx0cyBpbiBhIHZhbHVlIG9mIDY1NTM2IG9yIG1vcmUgKG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpZiBgYWRkcl9sZW4gXFx1MDAzZT0gMzJgKS4gVGhpcyB2YWx1ZSBpcyB0aGVuIHVzZWQgYXMgdGhlIGxvb3AgYm91bmQgdG8gcmVhZCBmcm9tIHRoZSBFRVBST00gYW5kIHdyaXRlIGludG8gdGhlIGZpeGVkLXNpemUgYG5pYy1cXHUwMDNlZWVwcm9tWzI1Nl1gIGFycmF5LCBjYXVzaW5nIGEgbWFzc2l2ZSBvdXQtb2YtYm91bmRzIHdyaXRlIG9uIHRoZSBoZWFwIChzaW5jZSBgc3RydWN0IG5pY2AgaXMgYWxsb2NhdGVkIHZpYSBgbmV0ZGV2X3ByaXZgKS5cXG5cXG5PdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCB1bmRlZmluZWQgYmVoYXZpb3JzIChsaWtlIG92ZXJzaXplZCBzaGlmdHMpIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBhbmQgVUJTQU4gKFVuZGVmaW5lZCBCZWhhdmlvciBTYW5pdGl6ZXIpLCB3aGljaCBhcmUgYWxyZWFkeSBlbmFibGVkIGluIHN0YW5kYXJkIGZ1enppbmcgYnVpbGRzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGZpeCBhbnkgaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBlMTAwIG5ldHdvcmsgZHJpdmVyIHdoZXJlIGFuIGludmFsaWQgRUVQUk9NIGFkZHJlc3MgbGVuZ3RoIChgYWRkcl9sZW5gKSBjb3VsZCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgd3JpdGUgb3IgdW5kZWZpbmVkIGJlaGF2aW9yLiBTcGVjaWZpY2FsbHksIGlmIGBhZGRyX2xlbmAgaXMgMTYgb3IgZ3JlYXRlciwgdGhlIGNhbGN1bGF0aW9uIGBuaWMtXFx1MDAzZWVlcHJvbV93YyA9IDEgXFx1MDAzY1xcdTAwM2MgYWRkcl9sZW5gIHJlc3VsdHMgaW4gYSB2YWx1ZSBvZiA2NTUzNiBvciBtb3JlIChvciB1bmRlZmluZWQgYmVoYXZpb3IgaWYgYGFkZHJfbGVuIFxcdTAwM2U9IDMyYCkuIFRoaXMgdmFsdWUgaXMgdGhlbiB1c2VkIGFzIHRoZSBsb29wIGJvdW5kIHRvIHJlYWQgZnJvbSB0aGUgRUVQUk9NIGFuZCB3cml0ZSBpbnRvIHRoZSBmaXhlZC1zaXplIGBuaWMtXFx1MDAzZWVlcHJvbVsyNTZdYCBhcnJheSwgY2F1c2luZyBhIG1hc3NpdmUgb3V0LW9mLWJvdW5kcyB3cml0ZSBvbiB0aGUgaGVhcCAoc2luY2UgYHN0cnVjdCBuaWNgIGlzIGFsbG9jYXRlZCB2aWEgYG5ldGRldl9wcml2YCkuXFxuXFxuT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgdW5kZWZpbmVkIGJlaGF2aW9ycyAobGlrZSBvdmVyc2l6ZWQgc2hpZnRzKSBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgYW5kIFVCU0FOIChVbmRlZmluZWQgQmVoYXZpb3IgU2FuaXRpemVyKSwgd2hpY2ggYXJlIGFscmVhZHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGJ1aWxkcy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBmaXggYW55IGlzc3VlcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow4vwjt[1] Phase: Succeeded StartedAt: 2026-08-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 18:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 18:22:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2] Phase: Succeeded StartedAt: 2026-08-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 18:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:18 +0000 UTC FinishedAt: 2026-08-07 18:22:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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-workflow4vwjt/series-workflow4vwjt-convert-artifact-2635364394/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:28 +0000 UTC FinishedAt: 2026-08-07 18:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:28 +0000 UTC FinishedAt: 2026-08-07 18:39:05 +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:*a9e6a26b-ebff-4ffd-aae2-370da20b1f53,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-workflow4vwjt/series-workflow4vwjt-convert-artifact-2635364394/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": "1fccd7e9-71d2-4fa7-bc61-ff17cf1a03bb", "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-workflow4vwjt/series-workflow4vwjt-build-action-22671768/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:22:28 +0000 UTC FinishedAt: 2026-08-07 18:38:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a9e6a26b-ebff-4ffd-aae2-370da20b1f53,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-workflow4vwjt/series-workflow4vwjt-convert-artifact-2635364394/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": "1fccd7e9-71d2-4fa7-bc61-ff17cf1a03bb", "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-workflow4vwjt/series-workflow4vwjt-build-action-22671768/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:05 +0000 UTC FinishedAt: 2026-08-07 18:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:05 +0000 UTC FinishedAt: 2026-08-07 18:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:05 +0000 UTC FinishedAt: 2026-08-07 18:39:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:05 +0000 UTC FinishedAt: 2026-08-07 18:39:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-workflow4vwjt/series-workflow4vwjt-convert-artifact-868912709/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:16 +0000 UTC FinishedAt: 2026-08-07 18:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:39:16 +0000 UTC FinishedAt: 2026-08-07 18:40:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1fccd7e9-71d2-4fa7-bc61-ff17cf1a03bb,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-workflow4vwjt/series-workflow4vwjt-build-action-22671768/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-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:41:09 +0000 UTC FinishedAt: 2026-08-07 18:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:41:09 +0000 UTC FinishedAt: 2026-08-07 18:41:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:41:09 +0000 UTC FinishedAt: 2026-08-07 18:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:41:09 +0000 UTC FinishedAt: 2026-08-07 18:57:19 +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:*a9e6a26b-ebff-4ffd-aae2-370da20b1f53,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-workflow4vwjt/series-workflow4vwjt-convert-artifact-868912709/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": "81d351e4-4881-4431-ae1a-832992d4a83e", "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-workflow4vwjt/series-workflow4vwjt-build-action-2710958737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:41:09 +0000 UTC FinishedAt: 2026-08-07 18:57:09 +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:*a9e6a26b-ebff-4ffd-aae2-370da20b1f53,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-workflow4vwjt/series-workflow4vwjt-convert-artifact-868912709/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": "81d351e4-4881-4431-ae1a-832992d4a83e", "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-workflow4vwjt/series-workflow4vwjt-build-action-2710958737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:57:19 +0000 UTC FinishedAt: 2026-08-07 18:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:57:19 +0000 UTC FinishedAt: 2026-08-07 18:57:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:57:19 +0000 UTC FinishedAt: 2026-08-07 18:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:57:19 +0000 UTC FinishedAt: 2026-08-07 18:59:19 +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:*81d351e4-4881-4431-ae1a-832992d4a83e,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-workflow4vwjt/series-workflow4vwjt-build-action-2710958737/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-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +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_diag_test","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:*1fccd7e9-71d2-4fa7-bc61-ff17cf1a03bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81d351e4-4881-4431-ae1a-832992d4a83e,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-workflow4vwjt/series-workflow4vwjt-build-action-22671768/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-workflow4vwjt/series-workflow4vwjt-build-action-2710958737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 18:59:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 18:59:34 +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_diag_test","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-workflow4vwjt/series-workflow4vwjt-convert-artifact-2498299082/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 18:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 18:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:29 +0000 UTC FinishedAt: 2026-08-07 18:59:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:39 +0000 UTC FinishedAt: 2026-08-07 20:04:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4vwjt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","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_diag_test","e100_set_eeprom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["E100"],"series_id":"66e7718c-af73-4ded-9ca1-b2e40551a974","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-07 18:59:39 +0000 UTC FinishedAt: 2026-08-07 20:04:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1fccd7e9-71d2-4fa7-bc61-ff17cf1a03bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81d351e4-4881-4431-ae1a-832992d4a83e,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-workflow4vwjt/series-workflow4vwjt-build-action-22671768/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-workflow4vwjt/series-workflow4vwjt-build-action-2710958737/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-workflow4vwjt/series-workflow4vwjt-convert-artifact-2498299082/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,}