Name: series-workflowszr7f Phase: Failed StartedAt: 2026-08-31 08:57:15 +0000 UTC FinishedAt: 2026-08-31 09:15:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszr7f[0] Phase: Succeeded StartedAt: 2026-08-31 08:57:15 +0000 UTC FinishedAt: 2026-08-31 09:15:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszr7f[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 08:57:15 +0000 UTC FinishedAt: 2026-08-31 09:15:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NTRhYWQzNjA1NGEzNGEwMzY4MmM4NTg3NjcwOWFiZmVhZTU5MmU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDk6MTE6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuaW5kZXggMDg4MDMxMGM5Y2UzZi4uYjU3YzBiZGFjYjI3ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuQEAgLTg5OCwxMCAmIzQzOzg5OCw1MiBAQCBzdGF0aWMgYm9vbCBiNTNfdmxhbl9wb3J0X21heV9qb2luX3VudGFnZ2VkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4gXHRyZXR1cm4gZHAtXHUwMDNlYnJpZGdlID09IE5VTEw7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBiNTNfdmxhbl9od19lbnRyeShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGNvbnN0IHN0cnVjdCBiNTNfdmxhbiAqdmwsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcbiYjNDM7XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuJiM0MztcdHVuc2lnbmVkIGludCBwb3J0O1xuJiM0MztcbiYjNDM7XHQqaHcgPSAqdmw7XG4mIzQzO1xuJiM0MztcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aHctXHUwMDNlbWVtYmVycyA9IDA7XG4mIzQzO1x0aHctXHUwMDNldW50YWcgPSAwO1xuJiM0MztcbiYjNDM7XHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcbiYjNDM7XHRcdGlmICghKHZsLVx1MDAzZW1lbWJlcnMgXHUwMDI2IEJJVChwb3J0KSkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZHNhX3BvcnRfaXNfY3B1KGRwKSkge1xuJiM0MztcdFx0XHRpZiAoZHAtXHUwMDNlYnJpZGdlKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0c3RhbmRhbG9uZSA9IHRydWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aHctXHUwMDNlbWVtYmVycyB8PSBCSVQocG9ydCk7XG4mIzQzO1x0XHRody1cdTAwM2V1bnRhZyB8PSB2bC1cdTAwM2V1bnRhZyBcdTAwMjYgQklUKHBvcnQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFzdGFuZGFsb25lKSB7XG4mIzQzO1x0XHRody1cdTAwM2VtZW1iZXJzID0gMDtcbiYjNDM7XHRcdGh3LVx1MDAzZXVudGFnID0gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdGFuZGFsb25lO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGI1M192bGFuIHZsID0geyAwIH07XG4mIzQzO1x0c3RydWN0IGI1M192bGFuIGh3O1xuIFx0c3RydWN0IGI1M192bGFuICp2O1xuIFx0aW50IGksIGRlZl92aWQ7XG4gXHR1MTYgdmlkO1xuQEAgLTkzNywyMCAmIzQzOzk3OSwyMyBAQCBpbnQgYjUzX2NvbmZpZ3VyZV92bGFuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdH1cbiBcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIGRlZl92aWQsIFx1MDAyNnZsKTtcbiBcbi1cdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpIHtcbi1cdFx0LyogVXBvbiBpbml0aWFsIGNhbGwgd2UgaGF2ZSBub3Qgc2V0LXVwIGFueSBWTEFOcywgYnV0IHVwb25cbi1cdFx0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXG4tXHRcdCAqL1xuLVx0XHRmb3IgKHZpZCA9IGRlZl92aWQgJiM0MzsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7XG4tXHRcdFx0diA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuJiM0MztcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4mIzQzO1x0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0Zm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCBcdTAwM2MgZGV2LVx1MDAzZW51bV92bGFuczsgdmlkJiM0MzsmIzQzOykge1xuJiM0MztcdFx0diA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuIFxuLVx0XHRcdGlmICghdi1cdTAwM2VtZW1iZXJzKVxuLVx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRpZiAoIXYtXHUwMDNlbWVtYmVycylcbiYjNDM7XHRcdFx0Y29udGludWU7XG4gXG4tXHRcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcbi1cdFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4tXHRcdH1cbiYjNDM7XHRcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHYsIFx1MDAyNmh3KSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4mIzQzO1x0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4mIzQzO1x0fVxuIFxuJiM0MztcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0YjUzX2Zvcl9lYWNoX3BvcnQoZGV2LCBpKSB7XG4gXHRcdFx0aWYgKCFkc2FfaXNfY3B1X3BvcnQoZHMsIGkpKVxuIFx0XHRcdFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLFxuQEAgLTE3MjAsNiAmIzQzOzE3NjUsNyBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbiBcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xuIFx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuJiM0MztcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4gXHR1MTYgb2xkX3B2aWQsIG5ld19wdmlkO1xuIFx0aW50IGVycjtcbkBAIC0xNzUxLDEzICYjNDM7MTc5NywxNCBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRlbHNlXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfkJJVChwb3J0KTtcbiBcbi1cdGlmICghZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKVxuJiM0MztcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHZsLCBcdTAwMjZodykpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi1cdTAwM2V2aWQsIHZsKTtcbiYjNDM7XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgXHUwMDI2aHcpO1xuIFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVx1MDAzZXZpZCk7XG4gXG4tXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4gXHRcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxuIFx0XHRcdCAgICBuZXdfcHZpZCk7XG4gXHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgb2xkX3B2aWQpO1xuQEAgLTE3NzIsNyAmIzQzOzE4MTksOSBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4ge1xuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbiYjNDM7XHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4gXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xuJiM0MztcdGJvb2wgbmVlZHNfaHc7XG4gXHR1MTYgcHZpZDtcbiBcbiBcdGlmICh2bGFuLVx1MDAzZXZpZCA9PSAwKVxuQEAgLTE3ODIsNiAmIzQzOzE4MzEsOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2bGFuLVx1MDAzZXZpZF07XG4gXG4mIzQzO1x0bmVlZHNfaHcgPSBiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbiYjNDM7XG4gXHR2bC1cdTAwM2VtZW1iZXJzIFx1MDAyNj0gfkJJVChwb3J0KTtcbiBcbiBcdGlmIChwdmlkID09IHZsYW4tXHUwMDNldmlkKVxuQEAgLTE3OTEsMTQgJiM0MzsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGlmICh1bnRhZ2dlZCBcdTAwMjZcdTAwMjYgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfihCSVQocG9ydCkpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4mIzQzO1x0aWYgKCFuZWVkc19odylcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgdmwpO1xuJiM0MztcdGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuJiM0MztcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCBcdTAwMjZodyk7XG4gXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXHUwMDNldmlkKTtcbiBcbi1cdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTtcbi1cdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZykge1xuJiM0MztcdFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksXG4mIzQzO1x0XHRcdCAgICBwdmlkKTtcbiYjNDM7XHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTIyNjEsNiAmIzQzOzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX21kYl9kZWwpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGI1M192bGFuIGh3O1xuJiM0MztcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4mIzQzO1x0dTE2IHZpZDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yICh2aWQgPSBiNTNfZGVmYXVsdF9wdmlkKGRldikgJiM0MzsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuJiM0MztcbiYjNDM7XHRcdGlmICghKHZsLVx1MDAzZW1lbWJlcnMgXHUwMDI2IEJJVChwb3J0KSkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuJiM0MztcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4mIzQzO1x0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXG4gXHRcdGJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuQEAgLTIzMjQsNiAmIzQzOzI0MDEsOCBAQCBpbnQgYjUzX2JyX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuIFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfUFZMQU5fUEFHRSwgQjUzX1BWTEFOX1BPUlRfTUFTSyhwb3J0KSwgcHZsYW4pO1xuIFx0ZGV2LVx1MDAzZXBvcnRzW3BvcnRdLnZsYW5fY3RsX21hc2sgPSBwdmxhbjtcbiBcbiYjNDM7XHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX2JyX2pvaW4pO1xuQEAgLTIzNzYsNiAmIzQzOzI0NTUsOCBAQCB2b2lkIGI1M19icl9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4gXHRcdHZsLVx1MDAzZW1lbWJlcnMgfD0gQklUKHBvcnQpO1xuIFx0XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBwdmlkLCB2bCk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTtcbiB9XG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfbGVhdmUpO1xuIFxuQEAgLTMxNzIsNiAmIzQzOzMyNTMsOCBAQCBzdGF0aWMgaW50IGI1M19zd2l0Y2hfaW5pdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYtXHUwMDNldmxhbnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuJiM0MztcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuJiM0MztcbiBcdGRldi1cdTAwM2VyZXNldF9ncGlvID0gYjUzX3N3aXRjaF9nZXRfcmVzZXRfZ3BpbyhkZXYpO1xuIFxuIFx0aWYgKFBUUl9FUlIoZGV2LVx1MDAzZXJlc2V0X2dwaW8pID09IC1FUFJPQkVfREVGRVIpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxuaW5kZXggNzUwN2Q2MzJlN2M2ZC4uNjdhMDFmYzVmODFlYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTQwNSw2ICYjNDM7NDA1LDkgQEAgc3RydWN0IGRzYV9zd2l0Y2gge1xuIFx0LyogS2VlcCBWTEFOIGZpbHRlcmluZyBlbmFibGVkIG9uIHBvcnRzIG5vdCBvZmZsb2FkaW5nIGFueSB1cHBlciAqL1xuIFx0dTMyXHRcdFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZzoxO1xuIFxuJiM0MztcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbiYjNDM7XHR1MzJcdFx0XHRuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDoxO1xuJiM0MztcbiBcdC8qIFBhc3MgLnBvcnRfdmxhbl9hZGQgYW5kIC5wb3J0X3ZsYW5fZGVsIHRvIGRyaXZlcnMgZXZlbiBmb3IgYnJpZGdlc1xuIFx0ICogdGhhdCBoYXZlIHZsYW5fZmlsdGVyaW5nPTAuIEFsbCBkcml2ZXJzIHNob3VsZCBpZGVhbGx5IHNldCB0aGlzIChhbmRcbiBcdCAqIHRoZW4gdGhlIG9wdGlvbiB3b3VsZCBnZXQgcmVtb3ZlZCksIGJ1dCBpdCBpcyB1bmtub3duIHdoZXRoZXIgdGhpc1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvcG9ydC5jIGIvbmV0L2RzYS9wb3J0LmNcbmluZGV4IDFmNTUzNmMwZGZmYzIuLmU2MWFiYzdjNzRmNzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS9wb3J0LmNcbkBAIC04MzEsNiAmIzQzOzgzMSw5IEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuIFx0XHRcdGlmICghdXNlcilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuIFx0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxuIFx0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4gXHRcdFx0aWYgKGVycilcbkBAIC04MzksMTAgJiM0Mzs4NDIsMTIgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4gXHR9IGVsc2Uge1xuIFx0XHRkcC1cdTAwM2V2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nO1xuIFxuLVx0XHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXHUwMDNldXNlcixcbi1cdFx0XHRcdFx0XHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIHJlc3RvcmU7XG4mIzQzO1x0XHRpZiAoIWRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKSB7XG4mIzQzO1x0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xuJiM0MztcdFx0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRcdGdvdG8gcmVzdG9yZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTE0NDUsMTAgJiM0MzsxNDUwLDEzIEBAIGludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcbiBcbiBcdC8qIFRoZSBwb3J0IG1pZ2h0IHN0aWxsIGJlIFZMQU4gZmlsdGVyaW5nIGV2ZW4gaWYgaXQmIzM5O3Mgbm8gbG9uZ2VyXG4gXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgb3Jcbi1cdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOc1xuLVx0ICogb24gdGhlIENQVSBwb3J0LlxuJiM0MztcdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcsIGFuZCBldmVyeSBwb3J0IG9mIGFcbiYjNDM7XHQgKiBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyXG4mIzQzO1x0ICogVkxBTnMgd2hldGhlciBicmlkZ2VkIG9yIG5vdC4gSW4gdHVybiB0aGlzIG1lYW5zIFZMQU5zIG9uIHRoZVxuJiM0MztcdCAqIENQVSBwb3J0LlxuIFx0ICovXG4tXHR2bGFuX2ZpbHRlcmluZyA9IGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRwKTtcbiYjNDM7XHR2bGFuX2ZpbHRlcmluZyA9IGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRwKSB8fFxuJiM0MztcdFx0XHQgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XG4gXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggMDQxZjkwNjBjOGVmMC4uZmRhNmJhNGZkZDEzZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTE5NDYsNiAmIzQzOzE5NDYsNyBAQCBzdGF0aWMgaW50IGRzYV91c2VyX2NsZWFyX3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYsIGludCB2aWQsIHZvaWQgKmFyZylcbiAgKlxuICAqIC0gSWYgc3RhbmRhbG9uZSAodGhpcyBpbmNsdWRlcyBzb2Z0d2FyZSBicmlkZ2UsIHNvZnR3YXJlIExBRyk6XG4gICogICAgIC0gaWYgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXG4mIzQzOyAqICAgICAgIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gdHJ1ZSwgT1IgaWZcbiAgKiAgICAgICAoZHMtXHUwMDNldmxhbl9maWx0ZXJpbmdfaXNfZ2xvYmFsID0gdHJ1ZSBBTkQgdGhlcmUgYXJlIGJyaWRnZXMgc3Bhbm5pbmdcbiAgKiAgICAgICB0aGlzIHN3aXRjaCBjaGlwIHdoaWNoIGhhdmUgdmxhbl9maWx0ZXJpbmc9MSlcbiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zXG5AQCAtMjcxNyw3ICYjNDM7MjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxuIFx0dXNlci1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuIFx0aWYgKHVzZXItXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxuIFx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIFx1MDAyNj0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7XG4tXHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZylcbiYjNDM7XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyB8fFxuJiM0MztcdCAgICBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcbiBcdFx0dXNlci1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XG4gXG4gXHR1c2VyLVx1MDAzZWxsdHggPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3RhbmRhbG9uZSBWTEFOIG9mZmxvYWRpbmcgZm9yIEJyb2FkY29tIEI1MyAvIEJDTV9TRjIgc3dpdGNoZXMuIFRoZSBjb3JlIERTQSBjaGFuZ2VzIGludHJvZHVjZSBhIG5ldyBmbGFnIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2hpY2ggaXMgb25seSBlbmFibGVkIGJ5IHRoZSBgYjUzYCBkcml2ZXIgZm9yIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZS4gQmVjYXVzZSBCcm9hZGNvbSBCNTMgc3dpdGNoZXMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIG5vIG90aGVyIGRyaXZlciBzZXRzIHRoaXMgZmxhZyAobGVhdmluZyBnZW5lcmFsIERTQSBiZWhhdmlvciB1bmNoYW5nZWQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDU0YWFkMzYwNTRhMzRhMDM2ODJjODU4NzY3MDlhYmZlYWU1OTJlOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwppbmRleCAwODgwMzEwYzljZTNmLi5iNTdjMGJkYWNiMjdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwpAQCAtODk4LDEwICYjNDM7ODk4LDUyIEBAIHN0YXRpYyBib29sIGI1M192bGFuX3BvcnRfbWF5X2pvaW5fdW50YWdnZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIAlyZXR1cm4gZHAtJmd0O2JyaWRnZSA9PSBOVUxMOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYjUzX3ZsYW5faHdfZW50cnkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBzdHJ1Y3QgYjUzX3ZsYW4gKnZsLAomIzQzOwkJCSAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtJmd0O3ByaXY7CiYjNDM7CWJvb2wgc3RhbmRhbG9uZSA9IGZhbHNlOwomIzQzOwlzdHJ1Y3QgZHNhX3BvcnQgKmRwOwomIzQzOwl1bnNpZ25lZCBpbnQgcG9ydDsKJiM0MzsKJiM0MzsJKmh3ID0gKnZsOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZykKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlody0mZ3Q7bWVtYmVycyA9IDA7CiYjNDM7CWh3LSZndDt1bnRhZyA9IDA7CiYjNDM7CiYjNDM7CWI1M19mb3JfZWFjaF9wb3J0KGRldiwgcG9ydCkgewomIzQzOwkJaWYgKCEodmwtJmd0O21lbWJlcnMgJmFtcDsgQklUKHBvcnQpKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpOwomIzQzOwomIzQzOwkJaWYgKCFkc2FfcG9ydF9pc19jcHUoZHApKSB7CiYjNDM7CQkJaWYgKGRwLSZndDticmlkZ2UpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCXN0YW5kYWxvbmUgPSB0cnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaHctJmd0O21lbWJlcnMgfD0gQklUKHBvcnQpOwomIzQzOwkJaHctJmd0O3VudGFnIHw9IHZsLSZndDt1bnRhZyAmYW1wOyBCSVQocG9ydCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFzdGFuZGFsb25lKSB7CiYjNDM7CQlody0mZ3Q7bWVtYmVycyA9IDA7CiYjNDM7CQlody0mZ3Q7dW50YWcgPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBzdGFuZGFsb25lOwomIzQzO30KJiM0MzsKIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogewogCXN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgYjUzX3ZsYW4gdmwgPSB7IDAgfTsKJiM0MzsJc3RydWN0IGI1M192bGFuIGh3OwogCXN0cnVjdCBiNTNfdmxhbiAqdjsKIAlpbnQgaSwgZGVmX3ZpZDsKIAl1MTYgdmlkOwpAQCAtOTM3LDIwICYjNDM7OTc5LDIzIEBAIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogCX0KIAliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBkZWZfdmlkLCAmYW1wO3ZsKTsKIAotCWlmIChkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKSB7Ci0JCS8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uCi0JCSAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLgotCQkgKi8KLQkJZm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCAmbHQ7IGRldi0mZ3Q7bnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7Ci0JCQl2ID0gJmFtcDtkZXYtJmd0O3ZsYW5zW3ZpZF07CiYjNDM7CS8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uCiYjNDM7CSAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLgomIzQzOwkgKi8KJiM0MzsJZm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCAmbHQ7IGRldi0mZ3Q7bnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7CiYjNDM7CQl2ID0gJmFtcDtkZXYtJmd0O3ZsYW5zW3ZpZF07CiAKLQkJCWlmICghdi0mZ3Q7bWVtYmVycykKLQkJCQljb250aW51ZTsKJiM0MzsJCWlmICghdi0mZ3Q7bWVtYmVycykKJiM0MzsJCQljb250aW51ZTsKIAotCQkJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTsKLQkJCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTsKLQkJfQomIzQzOwkJaWYgKCFiNTNfdmxhbl9od19lbnRyeShkcywgdiwgJmFtcDtodykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2aWQsICZhbXA7aHcpOwomIzQzOwkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpOwomIzQzOwl9CiAKJiM0MzsJaWYgKGRldi0mZ3Q7dmxhbl9maWx0ZXJpbmcpIHsKIAkJYjUzX2Zvcl9lYWNoX3BvcnQoZGV2LCBpKSB7CiAJCQlpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpCiAJCQkJYjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLApAQCAtMTcyMCw2ICYjNDM7MTc2NSw3IEBAIGludCBiNTNfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAlzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtJmd0O3ByaXY7CiAJYm9vbCB1bnRhZ2dlZCA9IHZsYW4tJmd0O2ZsYWdzICZhbXA7IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7CiAJYm9vbCBwdmlkID0gdmxhbi0mZ3Q7ZmxhZ3MgJmFtcDsgQlJJREdFX1ZMQU5fSU5GT19QVklEOwomIzQzOwlzdHJ1Y3QgYjUzX3ZsYW4gaHc7CiAJc3RydWN0IGI1M192bGFuICp2bDsKIAl1MTYgb2xkX3B2aWQsIG5ld19wdmlkOwogCWludCBlcnI7CkBAIC0xNzUxLDEzICYjNDM7MTc5NywxNCBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJZWxzZQogCQl2bC0mZ3Q7dW50YWcgJmFtcDs9IH5CSVQocG9ydCk7CiAKLQlpZiAoIWRldi0mZ3Q7dmxhbl9maWx0ZXJpbmcpCiYjNDM7CWlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHZsLCAmYW1wO2h3KSkKIAkJcmV0dXJuIDA7CiAKLQliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLSZndDt2aWQsIHZsKTsKJiM0MzsJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi0mZ3Q7dmlkLCAmYW1wO2h3KTsKIAliNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tJmd0O3ZpZCk7CiAKLQlpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgJmFtcDsmYW1wOyBuZXdfcHZpZCAhPSBvbGRfcHZpZCkgewomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZyAmYW1wOyZhbXA7CiYjNDM7CSAgICAhZHNhX2lzX2NwdV9wb3J0KGRzLCBwb3J0KSAmYW1wOyZhbXA7IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7CiAJCWI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLAogCQkJICAgIG5ld19wdmlkKTsKIAkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBvbGRfcHZpZCk7CkBAIC0xNzcyLDcgJiM0MzsxODE5LDkgQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogewogCXN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy0mZ3Q7cHJpdjsKIAlib29sIHVudGFnZ2VkID0gdmxhbi0mZ3Q7ZmxhZ3MgJmFtcDsgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDsKJiM0MzsJc3RydWN0IGI1M192bGFuIGh3OwogCXN0cnVjdCBiNTNfdmxhbiAqdmw7CiYjNDM7CWJvb2wgbmVlZHNfaHc7CiAJdTE2IHB2aWQ7CiAKIAlpZiAodmxhbi0mZ3Q7dmlkID09IDApCkBAIC0xNzgyLDYgJiM0MzsxODMxLDggQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJdmwgPSAmYW1wO2Rldi0mZ3Q7dmxhbnNbdmxhbi0mZ3Q7dmlkXTsKIAomIzQzOwluZWVkc19odyA9IGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgJmFtcDtodyk7CiYjNDM7CiAJdmwtJmd0O21lbWJlcnMgJmFtcDs9IH5CSVQocG9ydCk7CiAKIAlpZiAocHZpZCA9PSB2bGFuLSZndDt2aWQpCkBAIC0xNzkxLDE0ICYjNDM7MTg0MiwxOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJaWYgKHVudGFnZ2VkICZhbXA7JmFtcDsgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpCiAJCXZsLSZndDt1bnRhZyAmYW1wOz0gfihCSVQocG9ydCkpOwogCi0JaWYgKCFkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKQomIzQzOwlpZiAoIW5lZWRzX2h3KQogCQlyZXR1cm4gMDsKIAotCWI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tJmd0O3ZpZCwgdmwpOwomIzQzOwliNTNfdmxhbl9od19lbnRyeShkcywgdmwsICZhbXA7aHcpOwomIzQzOwliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLSZndDt2aWQsICZhbXA7aHcpOwogCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmxhbi0mZ3Q7dmlkKTsKIAotCWI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTsKLQliNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpOwomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZykgewomIzQzOwkJYjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksCiYjNDM7CQkJICAgIHB2aWQpOwomIzQzOwkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBwdmlkKTsKJiM0MzsJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMjYxLDYgJiM0MzsyMzE2LDI4IEBAIGludCBiNTNfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogfQogRVhQT1JUX1NZTUJPTChiNTNfbWRiX2RlbCk7CiAKJiM0MztzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQomIzQzO3sKJiM0MzsJc3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLSZndDtwcml2OwomIzQzOwlzdHJ1Y3QgYjUzX3ZsYW4gaHc7CiYjNDM7CXN0cnVjdCBiNTNfdmxhbiAqdmw7CiYjNDM7CXUxNiB2aWQ7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3IgKHZpZCA9IGI1M19kZWZhdWx0X3B2aWQoZGV2KSAmIzQzOyAxOyB2aWQgJmx0OyBkZXYtJmd0O251bV92bGFuczsgdmlkJiM0MzsmIzQzOykgewomIzQzOwkJdmwgPSAmYW1wO2Rldi0mZ3Q7dmxhbnNbdmlkXTsKJiM0MzsKJiM0MzsJCWlmICghKHZsLSZndDttZW1iZXJzICZhbXA7IEJJVChwb3J0KSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQliNTNfdmxhbl9od19lbnRyeShkcywgdmwsICZhbXA7aHcpOwomIzQzOwkJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCAmYW1wO2h3KTsKJiM0MzsJCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsCiAJCWJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CkBAIC0yMzI0LDYgJiM0MzsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSwKIAliNTNfd3JpdGUxNihkZXYsIEI1M19QVkxBTl9QQUdFLCBCNTNfUFZMQU5fUE9SVF9NQVNLKHBvcnQpLCBwdmxhbik7CiAJZGV2LSZndDtwb3J0c1twb3J0XS52bGFuX2N0bF9tYXNrID0gcHZsYW47CiAKJiM0MzsJYjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmMoZHMsIHBvcnQpOwomIzQzOwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChiNTNfYnJfam9pbik7CkBAIC0yMzc2LDYgJiM0MzsyNDU1LDggQEAgdm9pZCBiNTNfYnJfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKQogCQl2bC0mZ3Q7bWVtYmVycyB8PSBCSVQocG9ydCk7CiAJCWI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHB2aWQsIHZsKTsKIAl9CiYjNDM7CiYjNDM7CWI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTsKIH0KIEVYUE9SVF9TWU1CT0woYjUzX2JyX2xlYXZlKTsKIApAQCAtMzE3Miw2ICYjNDM7MzI1Myw4IEBAIHN0YXRpYyBpbnQgYjUzX3N3aXRjaF9pbml0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpCiAJaWYgKCFkZXYtJmd0O3ZsYW5zKQogCQlyZXR1cm4gLUVOT01FTTsKIAomIzQzOwlkZXYtJmd0O2RzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSAmYW1wOyZhbXA7ICFpczUzNjUoZGV2KTsKJiM0MzsKIAlkZXYtJmd0O3Jlc2V0X2dwaW8gPSBiNTNfc3dpdGNoX2dldF9yZXNldF9ncGlvKGRldik7CiAKIAlpZiAoUFRSX0VSUihkZXYtJmd0O3Jlc2V0X2dwaW8pID09IC1FUFJPQkVfREVGRVIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oCmluZGV4IDc1MDdkNjMyZTdjNmQuLjY3YTAxZmM1ZjgxZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2RzYS5oCkBAIC00MDUsNiAmIzQzOzQwNSw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoIHsKIAkvKiBLZWVwIFZMQU4gZmlsdGVyaW5nIGVuYWJsZWQgb24gcG9ydHMgbm90IG9mZmxvYWRpbmcgYW55IHVwcGVyICovCiAJdTMyCQkJbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZzoxOwogCiYjNDM7CS8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi8KJiM0MzsJdTMyCQkJbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTsKJiM0MzsKIAkvKiBQYXNzIC5wb3J0X3ZsYW5fYWRkIGFuZCAucG9ydF92bGFuX2RlbCB0byBkcml2ZXJzIGV2ZW4gZm9yIGJyaWRnZXMKIAkgKiB0aGF0IGhhdmUgdmxhbl9maWx0ZXJpbmc9MC4gQWxsIGRyaXZlcnMgc2hvdWxkIGlkZWFsbHkgc2V0IHRoaXMgKGFuZAogCSAqIHRoZW4gdGhlIG9wdGlvbiB3b3VsZCBnZXQgcmVtb3ZlZCksIGJ1dCBpdCBpcyB1bmtub3duIHdoZXRoZXIgdGhpcwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS9wb3J0LmMgYi9uZXQvZHNhL3BvcnQuYwppbmRleCAxZjU1MzZjMGRmZmMyLi5lNjFhYmM3Yzc0ZjczIDEwMDY0NAotLS0gYS9uZXQvZHNhL3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3BvcnQuYwpAQCAtODMxLDYgJiM0Mzs4MzEsOSBAQCBpbnQgZHNhX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9wb3J0ICpkcCwgYm9vbCB2bGFuX2ZpbHRlcmluZywKIAkJCWlmICghdXNlcikKIAkJCQljb250aW51ZTsKIAomIzQzOwkJCWlmIChkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwogCQkJZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKHVzZXIsCiAJCQkJCQkJICAgICB2bGFuX2ZpbHRlcmluZyk7CiAJCQlpZiAoZXJyKQpAQCAtODM5LDEwICYjNDM7ODQyLDEyIEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLAogCX0gZWxzZSB7CiAJCWRwLSZndDt2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nOwogCi0JCWVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC0mZ3Q7dXNlciwKLQkJCQkJCSAgICAgdmxhbl9maWx0ZXJpbmcpOwotCQlpZiAoZXJyKQotCQkJZ290byByZXN0b3JlOwomIzQzOwkJaWYgKCFkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpIHsKJiM0MzsJCQllcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtJmd0O3VzZXIsCiYjNDM7CQkJCQkJCSAgICAgdmxhbl9maWx0ZXJpbmcpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCWdvdG8gcmVzdG9yZTsKJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE0NDUsMTAgJiM0MzsxNDUwLDEzIEBAIGludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCwKIAogCS8qIFRoZSBwb3J0IG1pZ2h0IHN0aWxsIGJlIFZMQU4gZmlsdGVyaW5nIGV2ZW4gaWYgaXQmIzM5O3Mgbm8gbG9uZ2VyCiAJICogdW5kZXIgYSBicmlkZ2UsIGVpdGhlciBkdWUgdG8gZHMtJmd0O3ZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCBvcgotCSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMKLQkgKiBvbiB0aGUgQ1BVIHBvcnQuCiYjNDM7CSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLCBhbmQgZXZlcnkgcG9ydCBvZiBhCiYjNDM7CSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyCiYjNDM7CSAqIFZMQU5zIHdoZXRoZXIgYnJpZGdlZCBvciBub3QuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOcyBvbiB0aGUKJiM0MzsJICogQ1BVIHBvcnQuCiAJICovCi0Jdmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCk7CiYjNDM7CXZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8CiYjNDM7CQkJIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDsKIAlpZiAodmxhbl9maWx0ZXJpbmcpIHsKIAkJZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpOwogCQlpZiAoZXJyKSB7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDA0MWY5MDYwYzhlZjAuLmZkYTZiYTRmZGQxM2QgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdXNlci5jCkBAIC0xOTQ2LDYgJiM0MzsxOTQ2LDcgQEAgc3RhdGljIGludCBkc2FfdXNlcl9jbGVhcl92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICp2ZGV2LCBpbnQgdmlkLCB2b2lkICphcmcpCiAgKgogICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKToKICAqICAgICAtIGlmIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nID0gdHJ1ZSwgT1IgaWYKJiM0MzsgKiAgICAgICBkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZgogICogICAgICAgKGRzLSZndDt2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgPSB0cnVlIEFORCB0aGVyZSBhcmUgYnJpZGdlcyBzcGFubmluZwogICogICAgICAgdGhpcyBzd2l0Y2ggY2hpcCB3aGljaCBoYXZlIHZsYW5fZmlsdGVyaW5nPTEpCiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zCkBAIC0yNzE3LDcgJiM0MzsyNzE4LDggQEAgdm9pZCBkc2FfdXNlcl9zZXR1cF90YWdnZXIoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXIpCiAJdXNlci0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQzsKIAlpZiAodXNlci0mZ3Q7bmVlZGVkX3RhaWxyb29tKQogCQl1c2VyLSZndDtmZWF0dXJlcyAmYW1wOz0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7Ci0JaWYgKGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nKQomIzQzOwlpZiAoZHMtJmd0O25lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHwKJiM0MzsJICAgIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkKIAkJdXNlci0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSOwogCiAJdXNlci0mZ3Q7bGx0eCA9IHRydWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogRFNBIFN1YnN5c3RlbSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyB0d2Vha2VkLiBJIHNlZSBjaGFuZ2VzIGFjcm9zcyBhIGZldyBjcml0aWNhbCBmaWxlczogYGRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jYCwgYGluY2x1ZGUvbmV0L2RzYS5oYCwgYG5ldC9kc2EvcG9ydC5jYCwgYW5kIGBuZXQvZHNhL3VzZXIuY2AuIFRoaXMgaXMgZm9jdXNlZCBvbiB0aGUgRFNBIHN1YnN5c3RlbSwgc28gbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhdHRhY2sgc3VyZmFjZS4KCk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgZXhwbG9pdCB2ZWN0b3JzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgYXJlIERTQSBkcml2ZXJzIGFuZCB0aGUgRFNBIGNvcmUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBDYW4gd2UgZnV6eiB0aGVzZSBjb21wb25lbnRzIGVmZmVjdGl2ZWx5PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IERTQSBsb29wIG1vY2sgZHJpdmVycywgbW9jayBzd2l0Y2hlcywgYW5kIGlmIHRoZSBEU0EgY29yZSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBicmlkZ2UsIFZMQU4sIG9yIGV2ZW4gbW9jayBkZXZpY2VzLgoKTm93LCBhIGtleSBxdWVzdGlvbiBjb21lcyB0byBtaW5kOiBDYW4gd2UgZW11bGF0ZSBvciBjcmVhdGUgYSBtb2NrIG9mIERTQSBzd2l0Y2hlcz8gT3IgZXZlbiBqdXN0IHRoZSBjb3JlIERTQSBsb2dpYyBpdHNlbGY/IElmIHdlIGNhbiwgdGhhdCYjMzk7cyBhIG1hc3NpdmUgd2luIGZvciB0ZXN0aW5nIGFuZCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBmb3IgZXhpc3RpbmcgRFNBIGRyaXZlcnMuIElmIHRoZXJlIGFyZSBhbnksIGxldCYjMzk7cyBleHBsb3JlIHRoZW0gb3IgaHVudCBmb3IgYW55IG1vY2sgZHJpdmVycy4KCkZpbmFsbHksIEkmIzM5O20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdXN1YWwgYXBwcm9hY2gg4oCTIGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIG9yIHJ1bm5pbmcgYSBjb2Rlc2VhcmNoIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHNhX2xvb3AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjAtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6MTYxOkl0IGlzIGRlc2lyYWJsZSB0aGF0IGFsbCB0YWdnaW5nIHByb3RvY29scyBhcmUgdGVzdGFibGUgd2l0aCB0aGUgYGBkc2FfbG9vcGBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIG9uIGI1MyBDb25uZWN0aXZpdHkqKgoKUmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzICYjMzQ7YjUzJiMzNDsgdGhpbmcgYmV0dGVyLiBXaGF0IGV4YWN0bHkgKmlzKiBiNTMgaW4gdGhpcyBjb250ZXh0PyBMZXQmIzM5O3MgYXNzdW1lIGl0JiMzOTtzIHNvbWUga2luZCBvZiBoYXJkd2FyZSBvciBzb2Z0d2FyZSBjb21wb25lbnQg4oCTIHBlcmhhcHMgYSBzd2l0Y2gsIGEgc3BlY2lmaWMgaW50ZXJmYWNlLCBvciBhIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIElzIGl0IGEgbW9kdWxlPyBJcyBpdCBidWlsdC1pbj8gSG93IGlzIGl0ICYjMzQ7YXR0YWNoZWQmIzM0OyBvciAmIzM0O3JlZ2lzdGVyZWQmIzM0OyB3aXRoIHRoZSBzeXN0ZW0/CgpNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgLSBpdCYjMzk7cyB0aGUgcXVpY2sgYW5kIGRpcnR5IHRvb2wgZm9yIGxvY2F0aW5nIHN0cmluZ3Mgd2l0aGluIHRleHQgZmlsZXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgcG90ZW50aWFsIGNsdWVzIGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzb3VyY2UgZm9yICYjMzQ7YjUzIGRyaXZlcnMuJiMzNDsgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93LWhhbmdpbmcgZnJ1aXQ6IHRoZSBvYnZpb3VzIGRyaXZlciBmaWxlcywgYW55IGluaXRpYWxpemF0aW9uIGNvZGUsIG9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEFmdGVyIHRoYXQgSSYjMzk7bGwgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byAmIzM0O0tjb25maWcuJiMzNDsgS2NvbmZpZyBmaWxlcyBhcmUgZXNzZW50aWFsOyB0aGV5IHRlbGwgbWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgYW5kIGhvdyB0aGlzIGI1MyBjb21wb25lbnQgbWlnaHQgYmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgYXQgYnVpbGQgdGltZS4gSSBiZXQgaXQmIzM5O3MgY29uZmlndXJlZCBpbiB0aGVyZSwgb3IgaXRzIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBpdC4gV2l0aCB0aG9zZSB0d28gYXBwcm9hY2hlcyBJIHNob3VsZCBiZSBhYmxlIHRvIGF0IGxlYXN0IHVuZGVyc3RhbmQgaXQgYSBiaXQgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CNTMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjQ5PUNPTkZJR19WSVJUSU9fTkVUPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjI1MDpDT05GSUdfQjUzX1NQSV9EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUxOkNPTkZJR19CNTNfTURJT19EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUyOkNPTkZJR19CNTNfTU1BUF9EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMjUzLUNPTkZJR19ORVRfRFNBX0JDTV9TRjI9bVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvYjUzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0I1MylcdFx0JiM0Mzs9IGI1M19jb21tb24ub1xuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZS0zLVxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19CNTNfU1BJX0RSSVZFUilcdCYjNDM7PSBiNTNfc3BpLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQjUzX01ESU9fRFJJVkVSKVx0JiM0Mzs9IGI1M19tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQjUzX01NQVBfRFJJVkVSKVx0JiM0Mzs9IGI1M19tbWFwLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQjUzX1NSQUJfRFJJVkVSKVx0JiM0Mzs9IGI1M19zcmFiLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQjUzX1NFUkRFUylcdCYjNDM7PSBiNTNfc2VyZGVzLm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTU9dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTYtXHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE3OiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE4LWludCBiNTNfc2VyZGVzX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz0zODI9c3RhdGljIGlycXJldHVybl90IGI1M19zcmFiX3BvcnRfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtMzkzLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjM5NDojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy0zOTUtc3RhdGljIHU4IGI1M19zcmFiX3NlcmRlc19tYXBfbGFuZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NDQ2PXN0YXRpYyB2b2lkIGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTUtXHRcdC8qIElmIHAtXHUwMDNlbW9kZSBpbmRpY2F0ZXMgU0dNSUkgbW9kZSwgdGhhdCBlc3NlbnRpYWxseSBtZWFucyB3ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz00Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBiNTNfaW9fb3BzIGI1M19zcmFiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkyLVx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTQtXHQucGh5bGlua19tYWNfc2VsZWN0X3BjcyA9IGI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3Bjcyxcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNzM0PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XG4tLVxubmV0L2RzYS9wb3J0LmMtMTc0MC0jZW5kaWZcbm5ldC9kc2EvcG9ydC5jOjE3NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0I1Mylcbm5ldC9kc2EvcG9ydC5jLTE3NDItXHRcJiMzNDticmNtLGJjbTUzMjVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgQjUzIGFuZCBEU0EgQ29yZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGI1MyBhbmQgdGhlIERTQSBjb3JlIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSB0aGUgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnYCB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgYjUzIGRyaXZlciBvcHRpb25zLiBBZnRlciB0aGF0LCBJJiMzOTtsbCBtb3ZlIHVwc3RyZWFtIHRvIGBuZXQvZHNhL0tjb25maWdgIHRvIHNlZSBob3cgdGhlIERTQSBjb3JlIGl0c2VsZiBpcyBzZXQgdXAgYW5kIGludGVydHdpbmVkIHdpdGggdGhlIGI1MyBjb25maWcuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgYWxsIGNvbmZpZ3VyYXRpb24gYXNwZWN0cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgYmV0d2VlbiB0aGUgQjUzIGFuZCB0aGUgY29yZSBEU0EgZHJpdmVycy4gVGltZSB0byBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCNTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzoyOm1lbnVjb25maWcgQjUzXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEJDTTUzeHggbWFuYWdlZCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzoxNTpjb25maWcgQjUzX1NQSV9EUklWRVJcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O0I1MyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjE6Y29uZmlnIEI1M19NRElPX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7QjUzIE1ESU8gY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6Mjc6Y29uZmlnIEI1M19NTUFQX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7QjUzIE1NQVAgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MzU6Y29uZmlnIEI1M19TUkFCX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM2LVx0dHJpc3RhdGUgXCYjMzQ7QjUzIFNSQUIgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6NDQ6Y29uZmlnIEI1M19TRVJERVNcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O0I1MyBTZXJEZXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnYDoKCioqQW5hbHl6aW5nIHRoZSBiNTMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBCcm9hZGNvbSBCNTMgc3dpdGNoIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgaGFyZHdhcmUgdmFyaWF0aW9ucyBvZiB0aGVzZSBzd2l0Y2hlcy4gSW1tZWRpYXRlbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0JiMzOTtzIHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheSwgYW5kIGhvdyBhcmUgdGhlIHZhcmlvdXMgc3ViLWZlYXR1cmVzIG9yZ2FuaXplZD8gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyBmb3IgdGhpbmdzIGxpa2UgZGlmZmVyZW50IEI1MyBjaGlwIHJldmlzaW9ucywgUEhZIHN1cHBvcnQsIHZhcmlvdXMgbWFuYWdlbWVudCBpbnRlcmZhY2VzIChsaWtlIE1ESU8pLCBhbmQgbWF5YmUgZXZlbiBvcHRpb25zIGZvciB0aGluZ3MgbGlrZSBWTEFOIGNvbmZpZ3VyYXRpb24gb3IgUW9TLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElmIGEgZmVhdHVyZSBpcyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbiwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgd2hhdCBjYXVzZXMgdGhhdCBzZWxlY3Rpb24uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciB0aGlzIGRyaXZlciBzbyBJIGNhbiBhbnRpY2lwYXRlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIHdoZXJlIGN1c3RvbSBjb25maWd1cmF0aW9uIG1pZ2h0IGJlIG5lY2Vzc2FyeSBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0gaW50ZWdyYXRpb24gb3IgbmV3IGJvYXJkIHN1cHBvcnQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBtaWdodCBuZWVkIG92ZXJyaWRpbmcgZm9yIG15IHNwZWNpZmljIHVzZSBjYXNlLCBhbmQgc3RhcnQgdG8gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYWxsIHRoZSBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgQjUzXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBCQ001M3h4IG1hbmFnZWQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXG4gICA3Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcbiAgIDg6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcbiAgIDk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBCcm9hZGNvbSBtYW5hZ2VkIHN3aXRjaCBjaGlwcy4gSXQgc3VwcG9ydHNcbiAgMTI6XHRcdCAgQkNNNTMyNUUsIEJDTTUzNjUsIEJDTTUzOXgsIEJDTTUzMTE1IGFuZCBCQ001MzEyNSBhcyB3ZWxsIGFzIEJDTTYzWFhcbiAgMTM6XHRcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgQjUzX1NQSV9EUklWRVJcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQjUzIFx1MDAyNlx1MDAyNiBTUElcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBCNTNfTURJT19EUklWRVJcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBNRElPIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIEI1M1xuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBNRElPLlxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCNTNfTU1BUF9EUklWRVJcbiAgMjg6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBNTUFQIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI5Olx0XHRkZXBlbmRzIG9uIEI1MyBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNXG4gIDMwOlx0XHRkZWZhdWx0IEJDTTYzWFggfHwgQk1JUFNfR0VORVJJQ1xuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIG1lbW9yeS1tYXBwZWQgc3dpdGNoZXMgbGlrZSB0aGUgQkNNNjNYWFxuICAzMzpcdFx0ICBpbnRlZ3JhdGVkIHN3aXRjaGVzLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBCNTNfU1JBQl9EUklWRVJcbiAgMzY6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBTUkFCIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEI1MyBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNXG4gIDM4Olx0XHRkZXBlbmRzIG9uIEI1M19TRVJERVMgfHwgIUI1M19TRVJERVNcbiAgMzk6XHRcdGRlZmF1bHQgQVJDSF9CQ01fSVBST0NcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIFN3aXRjaCBSZWdpc3RlciBBY2Nlc3NcbiAgNDI6XHRcdCAgQnJpZGdlIFJlZ2lzdGVycyAoU1JBQikgbGlrZSBpdCBpcyBmb3VuZCBvbiB0aGUgQkNNNTMwMTBcbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQjUzX1NFUkRFU1xuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7QjUzIFNlckRlcyBzdXBwb3J0XCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIEI1M1xuICA0NzpcdFx0ZGVmYXVsdCBBUkNIX0JDTV9OU1BcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBTZXJEZXMgb24gZS5nOiBOb3J0aHN0YXIgUGx1cyBTb0NzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgRFNBIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiBEU0EgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgZmlsZXMuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBvdmVybGFwIGFuZCBwb3RlbnRpYWxseSBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgY29yZSBEU0EgZnVuY3Rpb25hbGl0eSBhbmQgYW55IHNwZWNpZmljIGRyaXZlciBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSBJJiMzOTtsbCBjaGVjazoKCiogICBXaGF0IGFyZSB0aGUgY29yZSBEU0Egb3B0aW9ucyBleHBvc2VkLCBhbmQgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQ/IEFyZSB0aGVyZSBhbnkgdG9wLWxldmVsIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CiogICBIb3cgYXJlIHZhcmlvdXMgRFNBIGZlYXR1cmVzIChlLmcuLCBWTEFOIGZpbHRlcmluZywgcG9ydCBjb25maWd1cmF0aW9uKSBlbmFibGVkIGFuZCBkaXNhYmxlZD8gQXJlIHRoZXkgZ3JhbnVsYXIsIG9yIG1vcmUgbW9ub2xpdGhpYyBvcHRpb25zPwoqICAgV2hhdCBkcml2ZXJzIGFyZSBleHBsaWNpdGx5IHN1cHBvcnRlZCB3aXRoaW4gZWFjaCBLY29uZmlnIGZpbGUsIGFuZCBob3cgaXMgdGhhdCBzdXBwb3J0IGRlZmluZWQ/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSBvciB0aGUgdGFyZ2V0IGhhcmR3YXJlPwoqICAgQXJlIHRoZXJlIGFueSAmIzM0O0VYUEVSSU1FTlRBTCYjMzQ7IG9yICYjMzQ7REVQUkVDQVRFRCYjMzQ7IG9wdGlvbnM/IFRoZXNlIGNhbiBmbGFnIGFyZWFzIGZvciBlaXRoZXIgZGVlcGVyIGludmVzdGlnYXRpb24gb3IgcG90ZW50aWFsbHkgc3VnZ2VzdCB0aGV5IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIGNvbnNpZGVyYXRpb24uCiogICBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIGxpa2UgbWFjc2VjIG9yIGJvbmRpbmcsIHRoYXQgSSBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQ/CgpGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMgYW5kIHdoaWNoIGZpbGVzIGhvbGQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBtYXR0ZXJzIG1vc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2RzYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0bWVudWNvbmZpZyBORVRfRFNBXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXCYjMzQ7XG4gICA1Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgNjpcdFx0ZGVwZW5kcyBvbiBIU1IgfHwgSFNSPW5cbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU1xuICAgODpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAgOTpcdFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBoYXJkd2FyZSBzd2l0Y2hlcyBzdXBwb3J0ZWRcbiAgMTU6XHRcdCAgYnkgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX0RTQVxuICAxODpcdFxuICAxOTpcdCMgRHJpdmVycyBtdXN0IHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdGFnZ2luZyBmb3JtYXQocylcbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkVUX0RTQV9UQUdfTk9ORVxuICAyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7Tm8tb3AgdGFnIGRyaXZlclwmIzM0O1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBzd2l0Y2hlcyB3aGljaCBkb24mIzM5O3QgdGFnXG4gIDI1Olx0XHQgIGZyYW1lcyBvdmVyIHRoZSBDUFUgcG9ydC5cbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXG4gIDI4Olx0XHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2hcJiMzNDtcbiAgMjk6XHRcdGhlbHBcbiAgMzA6XHRcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yXG4gIDMxOlx0XHQgIHRoZSBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2guXG4gIDMyOlx0XG4gIDMzOlx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXG4gIDM0Olx0XHR0cmlzdGF0ZVxuICAzNTpcdFx0ZGVmYXVsdCBuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbiAgMzk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxuICA0MjpcdFx0ICBCcm9hZGNvbSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlIGFkZHJlc3MuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXG4gIDQ1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4gIDQ2Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRhZ2dpbmcgZnJhbWVzIGZvciB0aGVcbiAgNDk6XHRcdCAgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgd2hpY2ggcGxhY2UgdGhlIHRhZyBhZnRlciB0aGUgTUFDIHNvdXJjZVxuICA1MDpcdFx0ICBhZGRyZXNzLlxuICA1MTpcdFx0ICBUaGlzIHRhZyBpcyB1c2VkIGluIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHdoaWNoIHdvcmsgd2l0aG91dCB0aGVcbiAgNTI6XHRcdCAgb3JpZ2luYWwgRkNTIGFuZCBsZW5ndGggYmVmb3JlIHRoZSB0YWcgaW5zZXJ0aW9uLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcbiAgNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbiAgNTY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxuICA1NzpcdFx0aGVscFxuICA1ODpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxuICA1OTpcdFx0ICBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlXG4gIDYwOlx0XHQgIGFkZHJlc3MuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODYxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEU0EgU3dpdGNoIFZMQU4gT2ZmbG9hZCBDYXBhYmlsaXRpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzIGZvciBEU0Egc3dpdGNoZXMgYW5kIGRldGVybWluZSBpZiBgbmV0L2RzYWAgb3IgYGI1M2AgY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gUUVNVS9zeXprYWxsZXIuIEZpcnN0LCBsZXQgbWUgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHBhdGNoJiMzOTtzIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHdlIGhhdmUgY2hhbmdlcyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzOgoKMS4gIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2Ag4oCTIGEgYnVuY2ggb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gVkxBTiBjb25maWd1cmF0aW9uIGFuZCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgYGI1M2AgZHJpdmVyOiBgYjUzX3ZsYW5faHdfZW50cnlgLCBgYjUzX2NvbmZpZ3VyZV92bGFuYCwgYGI1M192bGFuX2FkZGAsIGBiNTNfdmxhbl9kZWxgLCBgYjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmNgLCBgYjUzX2JyX2pvaW5gLCBgYjUzX2JyX2xlYXZlYCwgYW5kIGBiNTNfc3dpdGNoX2luaXRgLgoyLiAgYGluY2x1ZGUvbmV0L2RzYS5oYCDigJMgYSBuZXcgZmllbGQsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDoxYCwgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGBzdHJ1Y3QgZHNhX3N3aXRjaGAuIFRoaXMgaXMgYSBrZXkgZmxhZy4KMy4gIGBuZXQvZHNhL3BvcnQuY2Ag4oCTIFRoaXMgaW50cm9kdWNlcyBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gYGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKClgIGFuZCBgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoKWAuIElmIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgc2V0LCBWTEFOIGZpbHRlcmluZyBpcyBieXBhc3NlZCBmb3Igc3RhbmRhbG9uZSB1c2VyIHBvcnRzLCBhbmQgdGhlcmUmIzM5O3MgYSBjb3JyZXNwb25kaW5nIGNoZWNrIGluIHRoZSBjb25kdWl0IGNoYW5nZSBmdW5jdGlvbi4KNC4gIGBuZXQvZHNhL3VzZXIuY2Ag4oCTIGBkc2FfdXNlcl9zZXR1cF90YWdnZXIoKWAgbm93IHNldHMgYHVzZXItJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUmAgaWYgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpcyB0cnVlLiBUaGlzIHN1Z2dlc3RzIGhhcmR3YXJlIFZMQU4gZmlsdGVyaW5nIGNhcGFiaWxpdGllcy4KCk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlcy4gQXJlIGFueSBvZiB0aGUgdmlydHVhbCBvciBlbXVsYXRlZCBzd2l0Y2hlcyBhY3R1YWxseSAqdXNpbmcqIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGA/IFRoZSByZWFsIHZhbHVlIG9mIHRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoYXQuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjb2RlIHNlYXJjaC4gVGltZSB0byBncmVwIHRoZSBlbnRpcmUgY29kZWJhc2UgZm9yIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgYW5kIHNlZSB3aGVyZSB0aGlzIGZsYWcgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxNzM9c3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjU1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzI1NjpcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzI1Ny1cbi0tXG5pbmNsdWRlL25ldC9kc2EuaD0zODU9c3RydWN0IGRzYV9zd2l0Y2gge1xuLS1cbmluY2x1ZGUvbmV0L2RzYS5oLTQwOC1cdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbmluY2x1ZGUvbmV0L2RzYS5oOjQwOTpcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjE7XG5pbmNsdWRlL25ldC9kc2EuaC00MTAtXG4tLVxubmV0L2RzYS9wb3J0LmM9NzkxPWludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuLS1cbm5ldC9kc2EvcG9ydC5jLTgzMy1cbm5ldC9kc2EvcG9ydC5jOjgzNDpcdFx0XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG5uZXQvZHNhL3BvcnQuYy04MzUtXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvZHNhL3BvcnQuYy04NDQtXG5uZXQvZHNhL3BvcnQuYzo4NDU6XHRcdGlmICghZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpIHtcbm5ldC9kc2EvcG9ydC5jLTg0Ni1cdFx0XHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXHUwMDNldXNlcixcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNDMyPWludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNDUzLVx0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxubmV0L2RzYS9wb3J0LmM6MTQ1NDpcdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkIHN3aXRjaCBrZWVwcyBpdHMgODAyMXEgdXBwZXJcbm5ldC9kc2EvcG9ydC5jLTE0NTUtXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXG4tLVxubmV0L2RzYS9wb3J0LmMtMTQ1OC1cdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XG5uZXQvZHNhL3BvcnQuYzoxNDU5Olx0XHRcdCBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDtcbm5ldC9kc2EvcG9ydC5jLTE0NjAtXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbi0tXG5uZXQvZHNhL3VzZXIuYz0xOTI5PXN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxuLS1cbm5ldC9kc2EvdXNlci5jLTE5NDgtICogICAgIC0gaWYgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXG5uZXQvZHNhL3VzZXIuYzoxOTQ5OiAqICAgICAgIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gdHJ1ZSwgT1IgaWZcbm5ldC9kc2EvdXNlci5jLTE5NTAtICogICAgICAgKGRzLVx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXG4tLVxubmV0L2RzYS91c2VyLmM9MjY5OD12b2lkIGRzYV91c2VyX3NldHVwX3RhZ2dlcihzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcilcbi0tXG5uZXQvZHNhL3VzZXIuYy0yNzIxLVx0aWYgKGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHxcbm5ldC9kc2EvdXNlci5jOjI3MjI6XHQgICAgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG5uZXQvZHNhL3VzZXIuYy0yNzIzLVx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIEI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGZsYWcgaXMgKm9ubHkqIHNldCB3aXRoaW4gYGI1M19zd2l0Y2hfaW5pdGAsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgQjUzIGhhcmR3YXJlIGlzIGZ1bmRhbWVudGFsbHksIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCBpdCwgaG93IGl0JiMzOTtzIGRpc2NvdmVyZWQuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwcm9iaW5nIHByb2Nlc3MgZm9yIHRoZXNlIEI1MyBzd2l0Y2ggZHJpdmVycy4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IHRoZSByZWdpc3RyYXRpb24gYW5kIHByb2JlIHNlcXVlbmNlcyB0byBzZWUgaG93IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhbmQgc2V0cyB1cCB0aGVzZSBzd2l0Y2hlcy4KClRoZW4sIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9ucyB0aGVtc2VsdmVzOiBgYjUzX3NwaS5jYCwgYGI1M19tZGlvLmNgLCBgYjUzX21tYXAuY2AsIGFuZCBgYjUzX3NyYWIuY2AuIFRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgYW5kIEkgbmVlZCB0byBsb29rIGZvciBob3cgdGhleSBkZWFsIHdpdGggdGhlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZXMsIGFuZCBpZGVudGlmeSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGF0IFZMQU4gb2ZmbG9hZCBmbGFnIG1pZ2h0IGJlY29tZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0zOTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBiNTNfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM5OS19O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjQwMDptZGlvX21vZHVsZV9kcml2ZXIoYjUzX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQ5Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfbW1hcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwNi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo1MDc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfbW1hcF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwOC1NT0RVTEVfQVVUSE9SKFwmIzM0O0pvbmFzIEdvcnNraSBcdTAwM2Nqb2dvQG9wZW53cnQub3JnXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYz0zNjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGI1M19zcGlfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTM3MS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjM3Mjptb2R1bGVfc3BpX2RyaXZlcihiNTNfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTY4Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfc3JhYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY5Mi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2OTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfc3JhYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY5NC1NT0RVTEVfQVVUSE9SKFwmIzM0O0hhdWtlIE1laHJ0ZW5zIFx1MDAzY2hhdWtlQGhhdWtlLW0uZGVcdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc0MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGI1MyBhbmQgRFNBIENvcmUgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGBiNTNgIGRpcmVjdG9yeSBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyczogYGI1M19tZGlvX2RyaXZlcmAsIGBiNTNfbW1hcF9kcml2ZXJgLCBgYjUzX3NwaV9kcml2ZXJgLCBhbmQgYGI1M19zcmFiX2RyaXZlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSBCcm9hZGNvbSBCNTMgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB1c2VkIGluIHRoZWlyIFNvQ3MgYW5kIHJvdXRlcnMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFllcywgY29uZmlybWVkLiBCQ001MzI1RSwgNTM2NSwgNTM5eCwgNTMxMTUsIDUzMTI1LCBhbmQgNjNYWCBhcmUgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIEJyb2FkY29tLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgY2FuIHRoZXNlIGJlIHByb2JlZC9pbnN0YW50aWF0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IEkgY2FuJiMzOTt0IHRoaW5rIG9mIGFueSB3YXkgdGhlIE1ESU8vU1BJL3BsYXRmb3JtIGRldmljZXMgZm9yIGBiNTNgIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aG9zZSBtb2NrcyB1bmxlc3MgdGhlIGRyaXZlcnMgYXJlIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgY2hpcHMhCgpTbywgSSYjMzk7bSBub3cgZm9jdXNpbmcgb24gd2hldGhlciBjaGFuZ2VzIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AgcmVsYXRlZCB0byBgYjUzYCYjMzk7cyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGhhdmUgYW55IHdpZGVyIGltcGxpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLgoKSSYjMzk7dmUgZm91bmQgdGhlIG9jY3VycmVuY2VzIG9mIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaW4gdGhlIGNvZGUsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byB0cnVlIGZvciBgYjUzYCBjaGlwcyB3aGljaCBhcmUgQkNNNTMyNUUgYW5kIEJDTTUzNjUsIGFuZCBmYWxzZSBmb3Igb3RoZXIgRFNBIHN3aXRjaGVzIChsaWtlIGBkc2FfbG9vcGApLiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCwgSSYjMzk7bSB0cmFjaW5nIGhvdyB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB2YXJpYWJsZSBhZmZlY3RzIHRoZSBEU0EgY29kZToKCi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBJZiB0aGUgdmFsdWUgaXMgMCAoZmFsc2UpLCB0aGUgY29kZSBiZWhhdmVzIGFzIGJlZm9yZS4KLSAgIEluIGBuZXQvZHNhL3BvcnQuY2A6IFNpbWlsYXIgZm9yIHRoZSB2bGFuIGZpbHRlcmluZyBjb25kaXRpb24sIG5vIGNoYW5nZSBmb3IgZmFsc2UuCi0gICBJbiBgbmV0L2RzYS91c2VyLmNgOiBBZ2Fpbiwgd2hlbiBpdCBpcyBmYWxzZSwgdGhlcmUgaXMgbm8gY2hhbmdlLgoKU28sIGluIGVzc2VuY2UsIHRoZSBEU0EgY29yZSBsb2dpYyBiZWhhdmVzIGlkZW50aWNhbGx5IGZvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgb3RoZXIgdGhhbiBgYjUzYCBpdHNlbGYuIFRoaXMgbWVhbnMgdGhhdCwgZm9yIG90aGVyIERTQSBzd2l0Y2hlcywgdGhlIGNoYW5nZXMgaW4gdGhlIERTQSBjb2RlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBidWdzIG9yIG5ldyBleGVjdXRpb24gcGF0aHMuCgpOb3csIGZvciBgYjUzYCwgY2FuIGl0IGJlIHByb2JlZCBvciBub3Q/IENhbiBJIGV2ZW4gcnVuIHRoZSBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zIGFnYWluOiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZSBwYXRjaCBjb25jZXJucyB1bnJlYWNoYWJsZSBjb2RlLCBvciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBndWlkZSwgYW5kIHRoaXMgd291bGQgbWVhbiB0aGF0IEkgd291bGQgbmVlZCByZWFsIGhhcmR3YXJlIHRvIHRlc3QgdGhlc2UgZHJpdmVycy4KClNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBiNTNgIGlzIHJlZ2lzdGVyZWQsIGlmIGFueSBtb2NrIGJ1cyBjYW4gYmUgdXNlZC4gSSB3aWxsIGNoZWNrIGBiNTNfbWRpby5jYCwgYGI1M19tbWFwLmNgLCBgYjUzX3NwaS5jYCwgYGI1M19zcmFiLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRoaXMgY291bGQgYmUgaW5zdGFudGlhdGVkLCBvciBpZiBpdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qXG4gICAyOlx0ICogQjUzIHJlZ2lzdGVyIGFjY2VzcyB0aHJvdWdoIE1JSSByZWdpc3RlcnNcbiAgIDM6XHQgKlxuICAgNDpcdCAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIEpvbmFzIEdvcnNraSBcdTAwM2Nqb2dvQG9wZW53cnQub3JnXHUwMDNlXG4gICA1Olx0ICpcbiAgIDY6XHQgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAgIDc6XHQgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gICA4Olx0ICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAgIDk6XHQgKlxuICAxMDpcdCAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcJiMzNDtBUyBJU1wmIzM0OyBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAgMTE6XHQgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gIDEyOlx0ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAgMTM6XHQgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gIDE0Olx0ICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gIDE1Olx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAgMTY6XHQgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICAxNzpcdCAqL1xuICAxODpcdFxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAgMjE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAyMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDI0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYnJjbXBoeS5oXHUwMDNlXG4gIDI1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiAgMjY6XHQjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAgMjc6XHRcbiAgMjg6XHQjaW5jbHVkZSBcJiMzNDtiNTNfcHJpdi5oXCYjMzQ7XG4gIDI5Olx0XG4gIDMwOlx0LyogTUlJIHJlZ2lzdGVycyAqL1xuICAzMTpcdCNkZWZpbmUgUkVHX01JSV9QQUdFICAgIDB4MTAgICAgLyogTUlJIFBhZ2UgcmVnaXN0ZXIgKi9cbiAgMzI6XHQjZGVmaW5lIFJFR19NSUlfQUREUiAgICAweDExICAgIC8qIE1JSSBBZGRyZXNzIHJlZ2lzdGVyICovXG4gIDMzOlx0I2RlZmluZSBSRUdfTUlJX0RBVEEwICAgMHgxOCAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAwICovXG4gIDM0Olx0I2RlZmluZSBSRUdfTUlJX0RBVEExICAgMHgxOSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAxICovXG4gIDM1Olx0I2RlZmluZSBSRUdfTUlJX0RBVEEyICAgMHgxYSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAyICovXG4gIDM2Olx0I2RlZmluZSBSRUdfTUlJX0RBVEEzICAgMHgxYiAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAzICovXG4gIDM3Olx0XG4gIDM4Olx0I2RlZmluZSBSRUdfTUlJX1BBR0VfRU5BQkxFICAgICBCSVQoMClcbiAgMzk6XHQjZGVmaW5lIFJFR19NSUlfQUREUl9XUklURSAgICAgIEJJVCgwKVxuICA0MDpcdCNkZWZpbmUgUkVHX01JSV9BRERSX1JFQUQgICAgICAgQklUKDEpXG4gIDQxOlx0XG4gIDQyOlx0c3RhdGljIGludCBiNTNfbWRpb19vcChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiBvcClcbiAgNDM6XHR7XG4gIDQ0Olx0XHRpbnQgaTtcbiAgNDU6XHRcdHUxNiB2O1xuICA0NjpcdFx0aW50IHJldDtcbiAgNDc6XHRcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNDg6XHRcbiAgNDk6XHRcdGlmIChkZXYtXHUwMDNlY3VycmVudF9wYWdlICE9IHBhZ2UpIHtcbiAgNTA6XHRcdFx0Lyogc2V0IHBhZ2UgbnVtYmVyICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzE2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBiNTMgU3dpdGNoIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBiNTMgc3dpdGNoIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIHBhdGggZm9yIGJyaW5naW5nIGEgc3dpdGNoIG1hbmFnZWQgYnkgdGhpcyBkcml2ZXIgb25saW5lLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYGI1M19tZGlvX3Byb2JlYCwgYGI1M19zd2l0Y2hfaW5pdGAsIGFuZCB0aGVuIHRoZSBwYWlyIGBiNTNfc3dpdGNoX2FsbG9jYCBhbmQgYGI1M19zd2l0Y2hfcmVnaXN0ZXJgLgoKYGI1M19tZGlvX3Byb2JlYCBpcyBsaWtlbHkgd2hlcmUgdGhlIE1ESU8gYnVzIGludGVyYWN0aW9uIGhhcHBlbnMsIGRpc2NvdmVyaW5nIHRoZSBzd2l0Y2gmIzM5O3MgcHJlc2VuY2UgYW5kIHBvdGVudGlhbGx5IHJldHJpZXZpbmcgaXRzIGluaXRpYWwgY29uZmlndXJhdGlvbiBvciBjYXBhYmlsaXRpZXMgdmlhIHRoZSBNSUkgKE1hbmFnZW1lbnQgSW50ZXJmYWNlKS4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gZGlzY292ZXIgYW5kIHNldCB1cCBjb21tdW5pY2F0aW9uLgoKTmV4dCwgYGI1M19zd2l0Y2hfaW5pdGAgZmVlbHMgbGlrZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBJIGV4cGVjdCB0byBzZWUgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dXAgaGVyZSwgbWF5YmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24sIFBIWSBjb25maWd1cmF0aW9uLCBhbmQgc2V0dGluZyB1cCBpbnRlcnJ1cHRzLiBUaGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggdGhlIHN3aXRjaCBoYXJkd2FyZS4KCkZvbGxvd2luZyB0aGF0LCBgYjUzX3N3aXRjaF9hbGxvY2Agc2hvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIHRoZSBuZWNlc3Nhcnkga2VybmVsIGRhdGEgc3RydWN0dXJlcyB0byByZXByZXNlbnQgdGhlIHN3aXRjaC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB3aGF0JiMzOTtzIGFsbG9jYXRlZDsgaXMgaXQgbWVtb3J5IHRvIGNvbnRhaW4gcmVnaXN0ZXIgbWFwcz8gSW5mb3JtYXRpb24gYWJvdXQgcG9ydHM/IFRoaXMgaXMgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gQW5kIHRoZW4sIGBiNTNfc3dpdGNoX3JlZ2lzdGVyYCBtdXN0IGJlIHJlZ2lzdGVyaW5nIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlcyB3aXRoIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgc3dpdGNoIGF2YWlsYWJsZSB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gU28sIHRoZSByZWdpc3RyYXRpb24gbXVzdCBiZSBzZXR0aW5nIHVwIGFsbCBvZiB0aGUgZGF0YSB0aGF0IHRoZSBuZXR3b3JraW5nIHN0YWNrIG5lZWRzIHRvIGZpbmQgdGhlIHN3aXRjaC4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHRoaW5raW5nIG9mIGBtZGlvX3Byb2JlYCBhcyBkaXNjb3ZlcnksIGBpbml0YCBhcyBjb25maWd1cmF0aW9uL2hhcmR3YXJlIHNldHVwLCBhbmQgYGFsbG9jYC9gcmVnaXN0ZXJgIGFzIGRhdGEgc3RydWN0dXJlIGNyZWF0aW9uIGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBtYW5hZ2VtZW50LiBCeSB0cmFjaW5nIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgY2FsbCBkZXBlbmRlbmNpZXMsIGFuZCBpbnNwZWN0aW5nIGhvdyByZWdpc3RlcnMgYW5kIG90aGVyIGRhdGEgc3RydWN0dXJlcyBhcmUgcG9wdWxhdGVkIGR1cmluZyB0aGlzIHByb2Nlc3MsIEkgc2hvdWxkIGdldCBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaG93IGEgYjUzIHN3aXRjaCBpcyBicm91Z2h0IGludG8gdGhlIHN5c3RlbS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV0d29yayBkcml2ZXIgd29ya3MgYW5kIGNhbiBiZSBsZXZlcmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2I1M19zd2l0Y2hfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMzg5PUVYUE9SVF9TWU1CT0woYjUzX3N3aXRjaF9kZXRlY3QpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5MC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMzOTE6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzOTIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTEtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzQxMjpFWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzQxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjkyPXN0YXRpYyBpbnQgYjUzX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQ1Olx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQwNT1zdGF0aWMgaW50IGI1M19tbWFwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ0OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo0NTA6XHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ1MS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTI4ND1pbnQgYjUzX3N3aXRjaF9kZXRlY3Qoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjI4NjppbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0yODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmM9Mjk2PXN0YXRpYyBpbnQgYjUzX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwNy1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjMwODpcdHJldCA9IGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTYxOD1zdGF0aWMgaW50IGI1M19zcmFiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY1Ni1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2NTc6XHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY1OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTYzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIE1vZHVsZSBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgZGlnZ2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBhcm91bmQgdGhpcyBgYjUzX3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUgYGI1M19jb21tb24uY2AgZmlsZSBtb3JlIGJyb2FkbHkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdobyBlbHNlIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgd2hvIG1pZ2h0IGJlIHJlbHlpbmcgb24gdGhhdCBzaGFyZWQgY29tbW9uIGNvZGUuIE15IGZpcnN0IGluc3RpbmN0IGlzIGEgY29tcHJlaGVuc2l2ZSBzZWFyY2gg4oCTIGEgZ29vZCBvbGQgYGdyZXBgIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHR1cm5zIHVwIHdoZW4gSSBsb29rIGZvciBhbnl0aGluZyBzdGFydGluZyB3aXRoIGBiNTNfYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgcmVsYXRlZCBkcml2ZXJzIG9yIG1vZHVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2I1M19zd2l0Y2hfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzM4OT1FWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfZGV0ZWN0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzOTAtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzkxOmludCBiNTNfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDExLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjM0MTI6RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTI5Mj1zdGF0aWMgaW50IGI1M19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQ0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjM0NTpcdHJldCA9IGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYz00MDU9c3RhdGljIGludCBiNTNfbW1hcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy00NDktXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM6NDUwOlx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy00NTEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0yODQ9aW50IGI1M19zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTI4NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoyODY6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jPTI5Nj1zdGF0aWMgaW50IGI1M19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zMDctXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYzozMDg6XHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zMDktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz02MTg9c3RhdGljIGludCBiNTNfc3JhYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NjU3Olx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTM2NT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE1NDgtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE1NDk6XHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE1NTAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQxOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBCQ01fU0YyIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmNgLiBIbW0sIHdoYXQmIzM5O3MgdGhpcyBgYmNtX3NmMmAgYWxsIGFib3V0PyBBaCwgcmlnaHQsIGl0JiMzOTtzIHRoZSBTdGFyZmlnaHRlciAyIHN3aXRjaCwgdXNlZCBvbiB0aG9zZSBCcm9hZGNvbSBTZXQgVG9wIEJveCBhbmQgaVByb2MgcGxhdGZvcm1zIOKAkyB0aG9zZSBBUk0gYW5kIE1JUFMtYmFzZWQgU3lzdGVtLW9uLUNoaXBzLiBPa2F5LCBnb3QgaXQuIE5vdywgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBpdHMgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGJjbV9zZjJgIEtjb25maWcgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGZlYXR1cmUgc2V0IGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX0JDTV9TRjImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc6Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFN0YXJmaWdodGVyIDIgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NzIKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBEU0EgQ29yZSBDaGFuZ2VzIGFuZCBBcHBsaWNhYmlsaXR5IHRvIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGxlYW5pbmcgdG93YXJkcyAmIzM0O25vLiYjMzQ7IEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSBjb2RlIGNoYW5nZXMgYXJlIGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGV4YW1pbmUgaWYgYW55IG9mIHRoZSBgYjUzYCBmYW1pbHkgZHJpdmVycyBvciBgYmNtX3NmMmAgY291bGQgYmUgcHJvYmVkIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuIFF1aWNrbHksIGl0IGJlY2FtZSBjbGVhciB0aGF0IG5vbmUgb2YgdGhlbSBjb3VsZCBiZTogYGI1M19zcGlgLCBgYjUzX21kaW9gLCBgYjUzX21tYXBgLCBhbmQgYGI1M19zcmFiYCBhbGwgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyDigJMgU1BJIGNvbnRyb2xsZXJzLCBNRElPIGJ1c2VzLCBvciBCcm9hZGNvbSBTb0NzIHdpdGggbWVtb3J5LW1hcHBlZCBzd2l0Y2hlcywgcmVzcGVjdGl2ZWx5LiBMaWtld2lzZSwgYGJjbV9zZjJgIGlzIGFsc28gcGxhdGZvcm0tc3BlY2lmaWMuIFN0YW5kYXJkIFFFTVUgeDg2XzY0IG9yIGFybTY0IHZpcnQgbWFjaGluZXMgZG9uJiMzOTt0IGVtdWxhdGUgdGhlc2UuIEkgbmVlZCB0byBub3RlIHRoYXQgdGhleSBkb24mIzM5O3QgZXZlbiAqZXhpc3QqIGluIHRoZXNlIGVudmlyb25tZW50cywgc28gYW55IHByb2Jpbmcgd291bGQgZmFpbC4KClRoZW4gSSBjb25zaWRlcmVkIHRoZSBEU0EgY29yZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHNwZWNpZmljYWxseSB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB2YXJpYWJsZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgbG9naWMgY2hhbmdlcyBiYXNlZCBvbiB0aGlzIHZhcmlhYmxlIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AuICBJIHNlZSB0aGF0IHRoZSBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGZsYWcgaXMgb25seSBldmVyIHNldCB0byB0cnVlIHdpdGhpbiBgYjUzX3N3aXRjaF9pbml0YC4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudC4KCk15IGFzc3VtcHRpb24gaXMgdGhhdCBmb3IgYW55ICYjMzQ7cmVhY2hhYmxlJiMzNDsgc3dpdGNoLCBsaWtlIGBkc2FfbG9vcGAgb3IgYSBmdXR1cmUgbW9jayBzd2l0Y2gsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2lsbCBiZSBmYWxzZSwgYmVjYXVzZSBgYjUzX3N3aXRjaF9pbml0YCBpcyBuZXZlciBjYWxsZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIGZhbHNlLCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBwYXRjaCYjMzk7cyBlZmZlY3RzICpvbmx5KiBhcHBseSB3aGVuIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgdHJ1ZSwgd2hpY2ggaXMgKmV4Y2x1c2l2ZWx5KiBvbiBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUgKGI1MyBvciBiY21fc2YyKS4KClRoaXMgbG9va3MgbGlrZSBpdCBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgJiMzNDtjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzJiMzNDsgcnVsZSBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjazoKCjEuICBJcyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHNldCAqYW55d2hlcmUqIGVsc2U/IEEgcXVpY2sgYGdyZXBwZXJgIGNvbmZpcm1zIHRoYXQgdGhlIG9ubHkgcGxhY2UgaXMgaW5kZWVkIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AuCjIuICBDYW4gKmFueSogb2YgdGhlIGBiNTNgIGRyaXZlcnMsIGluY2x1ZGluZyBgYjUzX2NvbW1vbi5jYCBvciBpdHMgc3ViLWRyaXZlcnMsIGJlIGluc3RhbnRpYXRlZC9wcm9iZWQgaW4gUUVNVSBvciBHQ0U/IE5vLiBUaGV5JiMzOTtyZSBhbGwgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIHJlcXVpcmluZyBlaXRoZXIgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKEJDTTUzeHggb3IgU3RhcmZpZ2h0ZXIgMikgb3IgY3VzdG9tIEJyb2FkY29tIE1JUFMvQVJNIFNvQ3MsIHdoaWNoIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZS4KMy4gIERvIHRoZSBEU0EgY29yZSBjaGFuZ2VzIGFmZmVjdCBvdGhlciBEU0Egc3dpdGNoZXM/IE5vLCBhbGwgb3RoZXIgc3dpdGNoZXMgaGF2ZSB0aGUgdmFyaWFibGUgc2V0IHRvIDAgKGZhbHNlKSwgc28gdGhlaXIgYmVoYXZpb3IgcmVtYWlucyBpZGVudGljYWwgdG8gdGhlIGNvZGUgKmJlZm9yZSogdGhlIHBhdGNoLgoKVGhlIGNvbmNsdXNpb24gaXMgY3J5c3RhbCBjbGVhci4gVGhlc2UgY2hhbmdlcyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdGhlcmVmb3JlIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaW1lIHRvIG1vdmUgb24gYW5kIGxldCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGRvIGl0cyB0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTo1Ni4xMzQ3Njk1MTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5MTQ5OTc0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6NTYuMTM0Nzc1NTIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY5OTMzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NTRhYWQzNjA1NGEzNGEwMzY4MmM4NTg3NjcwOWFiZmVhZTU5MmU4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNcXG5pbmRleCAwODgwMzEwYzljZTNmLi5iNTdjMGJkYWNiMjdkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNcXG5AQCAtODk4LDEwICs4OTgsNTIgQEAgc3RhdGljIGJvb2wgYjUzX3ZsYW5fcG9ydF9tYXlfam9pbl91bnRhZ2dlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbiBcXHRyZXR1cm4gZHAtXFx1MDAzZWJyaWRnZSA9PSBOVUxMO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBiNTNfdmxhbl9od19lbnRyeShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGNvbnN0IHN0cnVjdCBiNTNfdmxhbiAqdmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXFxuK3tcXG4rXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVxcdTAwM2Vwcml2O1xcbitcXHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcXG4rXFx0c3RydWN0IGRzYV9wb3J0ICpkcDtcXG4rXFx0dW5zaWduZWQgaW50IHBvcnQ7XFxuK1xcbitcXHQqaHcgPSAqdmw7XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZylcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRody1cXHUwMDNlbWVtYmVycyA9IDA7XFxuK1xcdGh3LVxcdTAwM2V1bnRhZyA9IDA7XFxuK1xcbitcXHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcXG4rXFx0XFx0aWYgKCEodmwtXFx1MDAzZW1lbWJlcnMgXFx1MDAyNiBCSVQocG9ydCkpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xcbitcXG4rXFx0XFx0aWYgKCFkc2FfcG9ydF9pc19jcHUoZHApKSB7XFxuK1xcdFxcdFxcdGlmIChkcC1cXHUwMDNlYnJpZGdlKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdHN0YW5kYWxvbmUgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRody1cXHUwMDNlbWVtYmVycyB8PSBCSVQocG9ydCk7XFxuK1xcdFxcdGh3LVxcdTAwM2V1bnRhZyB8PSB2bC1cXHUwMDNldW50YWcgXFx1MDAyNiBCSVQocG9ydCk7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghc3RhbmRhbG9uZSkge1xcbitcXHRcXHRody1cXHUwMDNlbWVtYmVycyA9IDA7XFxuK1xcdFxcdGh3LVxcdTAwM2V1bnRhZyA9IDA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBzdGFuZGFsb25lO1xcbit9XFxuK1xcbiBpbnQgYjUzX2NvbmZpZ3VyZV92bGFuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4ge1xcbiBcXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiB2bCA9IHsgMCB9O1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiAqdjtcXG4gXFx0aW50IGksIGRlZl92aWQ7XFxuIFxcdHUxNiB2aWQ7XFxuQEAgLTkzNywyMCArOTc5LDIzIEBAIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbiBcXHR9XFxuIFxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIGRlZl92aWQsIFxcdTAwMjZ2bCk7XFxuIFxcbi1cXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZykge1xcbi1cXHRcXHQvKiBVcG9uIGluaXRpYWwgY2FsbCB3ZSBoYXZlIG5vdCBzZXQtdXAgYW55IFZMQU5zLCBidXQgdXBvblxcbi1cXHRcXHQgKiBzeXN0ZW0gcmVzdW1lLCB3ZSBuZWVkIHRvIHJlc3RvcmUgYWxsIFZMQU4gZW50cmllcy5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGZvciAodmlkID0gZGVmX3ZpZCArIDE7IHZpZCBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xcbi1cXHRcXHRcXHR2ID0gXFx1MDAyNmRldi1cXHUwMDNldmxhbnNbdmlkXTtcXG4rXFx0LyogVXBvbiBpbml0aWFsIGNhbGwgd2UgaGF2ZSBub3Qgc2V0LXVwIGFueSBWTEFOcywgYnV0IHVwb25cXG4rXFx0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXFxuK1xcdCAqL1xcbitcXHRmb3IgKHZpZCA9IGRlZl92aWQgKyAxOyB2aWQgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV92bGFuczsgdmlkKyspIHtcXG4rXFx0XFx0diA9IFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5zW3ZpZF07XFxuIFxcbi1cXHRcXHRcXHRpZiAoIXYtXFx1MDAzZW1lbWJlcnMpXFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAoIXYtXFx1MDAzZW1lbWJlcnMpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4tXFx0XFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcXG4tXFx0XFx0XFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHYsIFxcdTAwMjZodykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcXHUwMDI2aHcpO1xcbitcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XFxuK1xcdH1cXG4gXFxuK1xcdGlmIChkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XFxuIFxcdFxcdGI1M19mb3JfZWFjaF9wb3J0KGRldiwgaSkge1xcbiBcXHRcXHRcXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpXFxuIFxcdFxcdFxcdFxcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSxcXG5AQCAtMTcyMCw2ICsxNzY1LDcgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuIFxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuIFxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XFxuIFxcdHUxNiBvbGRfcHZpZCwgbmV3X3B2aWQ7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE3NTEsMTMgKzE3OTcsMTQgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRlbHNlXFxuIFxcdFxcdHZsLVxcdTAwM2V1bnRhZyBcXHUwMDI2PSB+QklUKHBvcnQpO1xcbiBcXG4tXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoIWI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXFx1MDAyNmh3KSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVxcdTAwM2V2aWQsIHZsKTtcXG4rXFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi1cXHUwMDNldmlkLCBcXHUwMDI2aHcpO1xcbiBcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXFx1MDAzZXZpZCk7XFxuIFxcbi1cXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXFx1MDAyNlxcdTAwMjYgbmV3X3B2aWQgIT0gb2xkX3B2aWQpIHtcXG4rXFx0aWYgKGRldi1cXHUwMDNldmxhbl9maWx0ZXJpbmcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFkc2FfaXNfY3B1X3BvcnQoZHMsIHBvcnQpIFxcdTAwMjZcXHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XFxuIFxcdFxcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxcbiBcXHRcXHRcXHQgICAgbmV3X3B2aWQpO1xcbiBcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIG9sZF9wdmlkKTtcXG5AQCAtMTc3Miw3ICsxODE5LDkgQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiB7XFxuIFxcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG4rXFx0c3RydWN0IGI1M192bGFuIGh3O1xcbiBcXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xcbitcXHRib29sIG5lZWRzX2h3O1xcbiBcXHR1MTYgcHZpZDtcXG4gXFxuIFxcdGlmICh2bGFuLVxcdTAwM2V2aWQgPT0gMClcXG5AQCAtMTc4Miw2ICsxODMxLDggQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0dmwgPSBcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuc1t2bGFuLVxcdTAwM2V2aWRdO1xcbiBcXG4rXFx0bmVlZHNfaHcgPSBiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcbiBcXHR2bC1cXHUwMDNlbWVtYmVycyBcXHUwMDI2PSB+QklUKHBvcnQpO1xcbiBcXG4gXFx0aWYgKHB2aWQgPT0gdmxhbi1cXHUwMDNldmlkKVxcbkBAIC0xNzkxLDE0ICsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0aWYgKHVudGFnZ2VkIFxcdTAwMjZcXHUwMDI2ICFiNTNfdmxhbl9wb3J0X25lZWRzX2ZvcmNlZF90YWdnZWQoZHMsIHBvcnQpKVxcbiBcXHRcXHR2bC1cXHUwMDNldW50YWcgXFx1MDAyNj0gfihCSVQocG9ydCkpO1xcbiBcXG4tXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoIW5lZWRzX2h3KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXFx1MDAzZXZpZCwgdmwpO1xcbitcXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXFx1MDAzZXZpZCwgXFx1MDAyNmh3KTtcXG4gXFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVxcdTAwM2V2aWQpO1xcbiBcXG4tXFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksIHB2aWQpO1xcbi1cXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpO1xcbitcXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZykge1xcbitcXHRcXHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsIEI1M19WTEFOX1BPUlRfREVGX1RBRyhwb3J0KSxcXG4rXFx0XFx0XFx0ICAgIHB2aWQpO1xcbitcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0yMjYxLDYgKzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChiNTNfbWRiX2RlbCk7XFxuIFxcbitzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbit7XFxuK1xcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGI1M192bGFuIGh3O1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xcbitcXHR1MTYgdmlkO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNldmxhbl9maWx0ZXJpbmcpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGZvciAodmlkID0gYjUzX2RlZmF1bHRfcHZpZChkZXYpICsgMTsgdmlkIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fdmxhbnM7IHZpZCsrKSB7XFxuK1xcdFxcdHZsID0gXFx1MDAyNmRldi1cXHUwMDNldmxhbnNbdmlkXTtcXG4rXFxuK1xcdFxcdGlmICghKHZsLVxcdTAwM2VtZW1iZXJzIFxcdTAwMjYgQklUKHBvcnQpKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcdFxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZpZCwgXFx1MDAyNmh3KTtcXG4rXFx0XFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xcbitcXHR9XFxuK31cXG4rXFxuIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuIFxcdFxcdGJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG5AQCAtMjMyNCw2ICsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4gXFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfUFZMQU5fUEFHRSwgQjUzX1BWTEFOX1BPUlRfTUFTSyhwb3J0KSwgcHZsYW4pO1xcbiBcXHRkZXYtXFx1MDAzZXBvcnRzW3BvcnRdLnZsYW5fY3RsX21hc2sgPSBwdmxhbjtcXG4gXFxuK1xcdGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0woYjUzX2JyX2pvaW4pO1xcbkBAIC0yMzc2LDYgKzI0NTUsOCBAQCB2b2lkIGI1M19icl9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuIFxcdFxcdHZsLVxcdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcXG4gXFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgcHZpZCwgdmwpO1xcbiBcXHR9XFxuK1xcbitcXHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfbGVhdmUpO1xcbiBcXG5AQCAtMzE3Miw2ICszMjUzLDggQEAgc3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcXG4gXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5zKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuK1xcdGRldi1cXHUwMDNlZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gIWlzNTMyNShkZXYpIFxcdTAwMjZcXHUwMDI2ICFpczUzNjUoZGV2KTtcXG4rXFxuIFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGI1M19zd2l0Y2hfZ2V0X3Jlc2V0X2dwaW8oZGV2KTtcXG4gXFxuIFxcdGlmIChQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykgPT0gLUVQUk9CRV9ERUZFUilcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxcbmluZGV4IDc1MDdkNjMyZTdjNmQuLjY3YTAxZmM1ZjgxZWEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxcbkBAIC00MDUsNiArNDA1LDkgQEAgc3RydWN0IGRzYV9zd2l0Y2gge1xcbiBcXHQvKiBLZWVwIFZMQU4gZmlsdGVyaW5nIGVuYWJsZWQgb24gcG9ydHMgbm90IG9mZmxvYWRpbmcgYW55IHVwcGVyICovXFxuIFxcdHUzMlxcdFxcdFxcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmc6MTtcXG4gXFxuK1xcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cXG4rXFx0dTMyXFx0XFx0XFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTtcXG4rXFxuIFxcdC8qIFBhc3MgLnBvcnRfdmxhbl9hZGQgYW5kIC5wb3J0X3ZsYW5fZGVsIHRvIGRyaXZlcnMgZXZlbiBmb3IgYnJpZGdlc1xcbiBcXHQgKiB0aGF0IGhhdmUgdmxhbl9maWx0ZXJpbmc9MC4gQWxsIGRyaXZlcnMgc2hvdWxkIGlkZWFsbHkgc2V0IHRoaXMgKGFuZFxcbiBcXHQgKiB0aGVuIHRoZSBvcHRpb24gd291bGQgZ2V0IHJlbW92ZWQpLCBidXQgaXQgaXMgdW5rbm93biB3aGV0aGVyIHRoaXNcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS9wb3J0LmMgYi9uZXQvZHNhL3BvcnQuY1xcbmluZGV4IDFmNTUzNmMwZGZmYzIuLmU2MWFiYzdjNzRmNzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS9wb3J0LmNcXG4rKysgYi9uZXQvZHNhL3BvcnQuY1xcbkBAIC04MzEsNiArODMxLDkgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuIFxcdFxcdFxcdGlmICghdXNlcilcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRcXHRpZiAoZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdFxcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcXG4gXFx0XFx0XFx0aWYgKGVycilcXG5AQCAtODM5LDEwICs4NDIsMTIgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGRwLVxcdTAwM2V2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nO1xcbiBcXG4tXFx0XFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRwLVxcdTAwM2V1c2VyLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byByZXN0b3JlO1xcbitcXHRcXHRpZiAoIWRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xcbitcXHRcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXFx1MDAzZXVzZXIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRnb3RvIHJlc3RvcmU7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE0NDUsMTAgKzE0NTAsMTMgQEAgaW50IGRzYV9wb3J0X2NoYW5nZV9jb25kdWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0LFxcbiBcXG4gXFx0LyogVGhlIHBvcnQgbWlnaHQgc3RpbGwgYmUgVkxBTiBmaWx0ZXJpbmcgZXZlbiBpZiBpdCdzIG5vIGxvbmdlclxcbiBcXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cXHUwMDNldmxhbl9maWx0ZXJpbmdfaXNfZ2xvYmFsIG9yXFxuLVxcdCAqIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnNcXG4tXFx0ICogb24gdGhlIENQVSBwb3J0LlxcbitcXHQgKiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxcbitcXHQgKiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgc3dpdGNoIGtlZXBzIGl0cyA4MDIxcSB1cHBlclxcbitcXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXFxuK1xcdCAqIENQVSBwb3J0LlxcbiBcXHQgKi9cXG4tXFx0dmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCk7XFxuK1xcdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XFxuK1xcdFxcdFxcdCBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XFxuIFxcdGlmICh2bGFuX2ZpbHRlcmluZykge1xcbiBcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZGV2LCBmYWxzZSk7XFxuIFxcdFxcdGlmIChlcnIpIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xcbmluZGV4IDA0MWY5MDYwYzhlZjAuLmZkYTZiYTRmZGQxM2QgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS91c2VyLmNcXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xcbkBAIC0xOTQ2LDYgKzE5NDYsNyBAQCBzdGF0aWMgaW50IGRzYV91c2VyX2NsZWFyX3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYsIGludCB2aWQsIHZvaWQgKmFyZylcXG4gICpcXG4gICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKTpcXG4gICogICAgIC0gaWYgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgPSB0cnVlLCBPUiBpZlxcbisgKiAgICAgICBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZlxcbiAgKiAgICAgICAoZHMtXFx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXFxuICAqICAgICAgIHRoaXMgc3dpdGNoIGNoaXAgd2hpY2ggaGF2ZSB2bGFuX2ZpbHRlcmluZz0xKVxcbiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zXFxuQEAgLTI3MTcsNyArMjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxcbiBcXHR1c2VyLVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xcbiBcXHRpZiAodXNlci1cXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxcbiBcXHRcXHR1c2VyLVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2PSB+KE5FVElGX0ZfU0cgfCBORVRJRl9GX0ZSQUdMSVNUKTtcXG4tXFx0aWYgKGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHxcXG4rXFx0ICAgIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcXG4gXFx0XFx0dXNlci1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xcbiBcXG4gXFx0dXNlci1cXHUwMDNlbGx0eCA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjU2LjU2MjY3MDQwOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg3NDg3MDc3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDU0YWFkMzYwNTRhMzRhMDM2ODJjODU4NzY3MDlhYmZlYWU1OTJlOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuaW5kZXggMDg4MDMxMGM5Y2UzZi4uYjU3YzBiZGFjYjI3ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuQEAgLTg5OCwxMCArODk4LDUyIEBAIHN0YXRpYyBib29sIGI1M192bGFuX3BvcnRfbWF5X2pvaW5fdW50YWdnZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdHJldHVybiBkcC1cdTAwM2VicmlkZ2UgPT0gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYjUzX3ZsYW5faHdfZW50cnkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBzdHJ1Y3QgYjUzX3ZsYW4gKnZsLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXG4re1xuK1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4rXHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcbitcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XG4rXHR1bnNpZ25lZCBpbnQgcG9ydDtcbitcbitcdCpodyA9ICp2bDtcbitcbitcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0aHctXHUwMDNlbWVtYmVycyA9IDA7XG4rXHRody1cdTAwM2V1bnRhZyA9IDA7XG4rXG4rXHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcbitcdFx0aWYgKCEodmwtXHUwMDNlbWVtYmVycyBcdTAwMjYgQklUKHBvcnQpKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0ZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XG4rXG4rXHRcdGlmICghZHNhX3BvcnRfaXNfY3B1KGRwKSkge1xuK1x0XHRcdGlmIChkcC1cdTAwM2VicmlkZ2UpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRzdGFuZGFsb25lID0gdHJ1ZTtcbitcdFx0fVxuK1xuK1x0XHRody1cdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcbitcdFx0aHctXHUwMDNldW50YWcgfD0gdmwtXHUwMDNldW50YWcgXHUwMDI2IEJJVChwb3J0KTtcbitcdH1cbitcbitcdGlmICghc3RhbmRhbG9uZSkge1xuK1x0XHRody1cdTAwM2VtZW1iZXJzID0gMDtcbitcdFx0aHctXHUwMDNldW50YWcgPSAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHN0YW5kYWxvbmU7XG4rfVxuK1xuIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGI1M192bGFuIHZsID0geyAwIH07XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4gXHRzdHJ1Y3QgYjUzX3ZsYW4gKnY7XG4gXHRpbnQgaSwgZGVmX3ZpZDtcbiBcdHUxNiB2aWQ7XG5AQCAtOTM3LDIwICs5NzksMjMgQEAgaW50IGI1M19jb25maWd1cmVfdmxhbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHR9XG4gXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBkZWZfdmlkLCBcdTAwMjZ2bCk7XG4gXG4tXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XG4tXHRcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4tXHRcdCAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLlxuLVx0XHQgKi9cbi1cdFx0Zm9yICh2aWQgPSBkZWZfdmlkICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuLVx0XHRcdHYgPSBcdTAwMjZkZXYtXHUwMDNldmxhbnNbdmlkXTtcbitcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4rXHQgKiBzeXN0ZW0gcmVzdW1lLCB3ZSBuZWVkIHRvIHJlc3RvcmUgYWxsIFZMQU4gZW50cmllcy5cbitcdCAqL1xuK1x0Zm9yICh2aWQgPSBkZWZfdmlkICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuK1x0XHR2ID0gXHUwMDI2ZGV2LVx1MDAzZXZsYW5zW3ZpZF07XG4gXG4tXHRcdFx0aWYgKCF2LVx1MDAzZW1lbWJlcnMpXG4tXHRcdFx0XHRjb250aW51ZTtcbitcdFx0aWYgKCF2LVx1MDAzZW1lbWJlcnMpXG4rXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcbi1cdFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4tXHRcdH1cbitcdFx0aWYgKCFiNTNfdmxhbl9od19lbnRyeShkcywgdiwgXHUwMDI2aHcpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2aWQsIFx1MDAyNmh3KTtcbitcdFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xuK1x0fVxuIFxuK1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZykge1xuIFx0XHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIGkpIHtcbiBcdFx0XHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpXG4gXHRcdFx0XHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsXG5AQCAtMTcyMCw2ICsxNzY1LDcgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbiBcdGJvb2wgcHZpZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcbitcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4gXHR1MTYgb2xkX3B2aWQsIG5ld19wdmlkO1xuIFx0aW50IGVycjtcbkBAIC0xNzUxLDEzICsxNzk3LDE0IEBAIGludCBiNTNfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGVsc2VcbiBcdFx0dmwtXHUwMDNldW50YWcgXHUwMDI2PSB+QklUKHBvcnQpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRpZiAoIWI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCB2bCk7XG4rXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgXHUwMDI2aHcpO1xuIFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVx1MDAzZXZpZCk7XG4gXG4tXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4rXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFkc2FfaXNfY3B1X3BvcnQoZHMsIHBvcnQpIFx1MDAyNlx1MDAyNiBuZXdfcHZpZCAhPSBvbGRfcHZpZCkge1xuIFx0XHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsIEI1M19WTEFOX1BPUlRfREVGX1RBRyhwb3J0KSxcbiBcdFx0XHQgICAgbmV3X3B2aWQpO1xuIFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIG9sZF9wdmlkKTtcbkBAIC0xNzcyLDcgKzE4MTksOSBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4ge1xuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbitcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4rXHRib29sIG5lZWRzX2h3O1xuIFx0dTE2IHB2aWQ7XG4gXG4gXHRpZiAodmxhbi1cdTAwM2V2aWQgPT0gMClcbkBAIC0xNzgyLDYgKzE4MzEsOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2bGFuLVx1MDAzZXZpZF07XG4gXG4rXHRuZWVkc19odyA9IGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuK1xuIFx0dmwtXHUwMDNlbWVtYmVycyBcdTAwMjY9IH5CSVQocG9ydCk7XG4gXG4gXHRpZiAocHZpZCA9PSB2bGFuLVx1MDAzZXZpZClcbkBAIC0xNzkxLDE0ICsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGlmICh1bnRhZ2dlZCBcdTAwMjZcdTAwMjYgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfihCSVQocG9ydCkpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRpZiAoIW5lZWRzX2h3KVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCB2bCk7XG4rXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbitcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCBcdTAwMjZodyk7XG4gXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXHUwMDNldmlkKTtcbiBcbi1cdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTtcbi1cdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4rXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XG4rXHRcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxuK1x0XHRcdCAgICBwdmlkKTtcbitcdFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBwdmlkKTtcbitcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0yMjYxLDYgKzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX21kYl9kZWwpO1xuIFxuK3N0YXRpYyB2b2lkIGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4re1xuK1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xuK1x0dTE2IHZpZDtcbitcbitcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRcdHJldHVybjtcbitcbitcdGZvciAodmlkID0gYjUzX2RlZmF1bHRfcHZpZChkZXYpICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuK1x0XHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuK1xuK1x0XHRpZiAoISh2bC1cdTAwM2VtZW1iZXJzIFx1MDAyNiBCSVQocG9ydCkpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbitcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4rXHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTtcbitcdH1cbit9XG4rXG4gaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbiBcdFx0Ym9vbCAqdHhfZndkX29mZmxvYWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG5AQCAtMjMyNCw2ICsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbiBcdGI1M193cml0ZTE2KGRldiwgQjUzX1BWTEFOX1BBR0UsIEI1M19QVkxBTl9QT1JUX01BU0socG9ydCksIHB2bGFuKTtcbiBcdGRldi1cdTAwM2Vwb3J0c1twb3J0XS52bGFuX2N0bF9tYXNrID0gcHZsYW47XG4gXG4rXHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfam9pbik7XG5AQCAtMjM3Niw2ICsyNDU1LDggQEAgdm9pZCBiNTNfYnJfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxuIFx0XHR2bC1cdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcbiBcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgcHZpZCwgdmwpO1xuIFx0fVxuK1xuK1x0YjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmMoZHMsIHBvcnQpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKGI1M19icl9sZWF2ZSk7XG4gXG5AQCAtMzE3Miw2ICszMjUzLDggQEAgc3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbiBcdGlmICghZGV2LVx1MDAzZXZsYW5zKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbitcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuK1xuIFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBiNTNfc3dpdGNoX2dldF9yZXNldF9ncGlvKGRldik7XG4gXG4gXHRpZiAoUFRSX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykgPT0gLUVQUk9CRV9ERUZFUilcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXG5pbmRleCA3NTA3ZDYzMmU3YzZkLi42N2EwMWZjNWY4MWVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcbisrKyBiL2luY2x1ZGUvbmV0L2RzYS5oXG5AQCAtNDA1LDYgKzQwNSw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoIHtcbiBcdC8qIEtlZXAgVkxBTiBmaWx0ZXJpbmcgZW5hYmxlZCBvbiBwb3J0cyBub3Qgb2ZmbG9hZGluZyBhbnkgdXBwZXIgKi9cbiBcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmc6MTtcbiBcbitcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbitcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjE7XG4rXG4gXHQvKiBQYXNzIC5wb3J0X3ZsYW5fYWRkIGFuZCAucG9ydF92bGFuX2RlbCB0byBkcml2ZXJzIGV2ZW4gZm9yIGJyaWRnZXNcbiBcdCAqIHRoYXQgaGF2ZSB2bGFuX2ZpbHRlcmluZz0wLiBBbGwgZHJpdmVycyBzaG91bGQgaWRlYWxseSBzZXQgdGhpcyAoYW5kXG4gXHQgKiB0aGVuIHRoZSBvcHRpb24gd291bGQgZ2V0IHJlbW92ZWQpLCBidXQgaXQgaXMgdW5rbm93biB3aGV0aGVyIHRoaXNcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3BvcnQuYyBiL25ldC9kc2EvcG9ydC5jXG5pbmRleCAxZjU1MzZjMGRmZmMyLi5lNjFhYmM3Yzc0ZjczIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS9wb3J0LmNcbisrKyBiL25ldC9kc2EvcG9ydC5jXG5AQCAtODMxLDYgKzgzMSw5IEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuIFx0XHRcdGlmICghdXNlcilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRcdGlmIChkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxuIFx0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4gXHRcdFx0aWYgKGVycilcbkBAIC04MzksMTAgKzg0MiwxMiBAQCBpbnQgZHNhX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9wb3J0ICpkcCwgYm9vbCB2bGFuX2ZpbHRlcmluZyxcbiBcdH0gZWxzZSB7XG4gXHRcdGRwLVx1MDAzZXZsYW5fZmlsdGVyaW5nID0gdmxhbl9maWx0ZXJpbmc7XG4gXG4tXHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuLVx0XHRcdFx0XHRcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gcmVzdG9yZTtcbitcdFx0aWYgKCFkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xuK1x0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuK1x0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdGdvdG8gcmVzdG9yZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTQ0NSwxMCArMTQ1MCwxMyBAQCBpbnQgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXG4gXG4gXHQvKiBUaGUgcG9ydCBtaWdodCBzdGlsbCBiZSBWTEFOIGZpbHRlcmluZyBldmVuIGlmIGl0J3Mgbm8gbG9uZ2VyXG4gXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgb3Jcbi1cdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOc1xuLVx0ICogb24gdGhlIENQVSBwb3J0LlxuK1x0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxuK1x0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgc3dpdGNoIGtlZXBzIGl0cyA4MDIxcSB1cHBlclxuK1x0ICogVkxBTnMgd2hldGhlciBicmlkZ2VkIG9yIG5vdC4gSW4gdHVybiB0aGlzIG1lYW5zIFZMQU5zIG9uIHRoZVxuK1x0ICogQ1BVIHBvcnQuXG4gXHQgKi9cbi1cdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApO1xuK1x0dmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCkgfHxcbitcdFx0XHQgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XG4gXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggMDQxZjkwNjBjOGVmMC4uZmRhNmJhNGZkZDEzZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTE5NDYsNiArMTk0Niw3IEBAIHN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxuICAqXG4gICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKTpcbiAgKiAgICAgLSBpZiBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nID0gdHJ1ZSwgT1IgaWZcbisgKiAgICAgICBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9IHRydWUsIE9SIGlmXG4gICogICAgICAgKGRzLVx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXG4gICogICAgICAgdGhpcyBzd2l0Y2ggY2hpcCB3aGljaCBoYXZlIHZsYW5fZmlsdGVyaW5nPTEpXG4gICogICAgICAgICAtIHRoZSA4MDIxcSB1cHBlciBWTEFOc1xuQEAgLTI3MTcsNyArMjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxuIFx0dXNlci1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuIFx0aWYgKHVzZXItXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxuIFx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIFx1MDAyNj0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7XG4tXHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZylcbitcdGlmIChkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nIHx8XG4rXHQgICAgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG4gXHRcdHVzZXItXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xuIFxuIFx0dXNlci1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjU2LjU2MjY3MjU3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODgyNDEyNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IERTQSBTdWJzeXN0ZW0gRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSB3aGF0J3MgYmVpbmcgdHdlYWtlZC4gSSBzZWUgY2hhbmdlcyBhY3Jvc3MgYSBmZXcgY3JpdGljYWwgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AsIGBpbmNsdWRlL25ldC9kc2EuaGAsIGBuZXQvZHNhL3BvcnQuY2AsIGFuZCBgbmV0L2RzYS91c2VyLmNgLiBUaGlzIGlzIGZvY3VzZWQgb24gdGhlIERTQSBzdWJzeXN0ZW0sIHNvIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgZXhwbG9pdCB2ZWN0b3JzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgYXJlIERTQSBkcml2ZXJzIGFuZCB0aGUgRFNBIGNvcmUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBDYW4gd2UgZnV6eiB0aGVzZSBjb21wb25lbnRzIGVmZmVjdGl2ZWx5PyBJJ20gdGhpbmtpbmcgYWJvdXQgRFNBIGxvb3AgbW9jayBkcml2ZXJzLCBtb2NrIHN3aXRjaGVzLCBhbmQgaWYgdGhlIERTQSBjb3JlIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGJyaWRnZSwgVkxBTiwgb3IgZXZlbiBtb2NrIGRldmljZXMuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gY29tZXMgdG8gbWluZDogQ2FuIHdlIGVtdWxhdGUgb3IgY3JlYXRlIGEgbW9jayBvZiBEU0Egc3dpdGNoZXM/IE9yIGV2ZW4ganVzdCB0aGUgY29yZSBEU0EgbG9naWMgaXRzZWxmPyBJZiB3ZSBjYW4sIHRoYXQncyBhIG1hc3NpdmUgd2luIGZvciB0ZXN0aW5nIGFuZCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBmb3IgZXhpc3RpbmcgRFNBIGRyaXZlcnMuIElmIHRoZXJlIGFyZSBhbnksIGxldCdzIGV4cGxvcmUgdGhlbSBvciBodW50IGZvciBhbnkgbW9jayBkcml2ZXJzLlxuXG5GaW5hbGx5LCBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdXN1YWwgYXBwcm9hY2gg4oCTIGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIG9yIHJ1bm5pbmcgYSBjb2Rlc2VhcmNoIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjowNy40NDUwODczNzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MDM3ODU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2FfbG9vcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0OjE2MTpJdCBpcyBkZXNpcmFibGUgdGhhdCBhbGwgdGFnZ2luZyBwcm90b2NvbHMgYXJlIHRlc3RhYmxlIHdpdGggdGhlIGBgZHNhX2xvb3BgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXFx0XFx0XFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVxcdCs9IGRzYV9sb29wLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXFx0dTE2IG1lbWJlcnM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVxcdHUxNiBwdmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVxcdHN0cnVjdCBtaWlfYnVzXFx0KmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cXHR1bnNpZ25lZCBpbnRcXHRwb3J0X2Jhc2U7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXFx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXFx0PSB7IFxcXCJwaHlfcmVhZF9va1xcXCIsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVxcdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlxcdFxcdG1lbWNweShwcy1cXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcXHRcXHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1OlxcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVxcdFxcdFxcdFxcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXFx0XFx0XFx0XFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXFx0XFx0XFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXFx0XFx0XFx0XFx0XFx0dTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cXHRcXHRcXHRcXHRcXHRib29sIHZsYW5fZmlsdGVyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXFx0Ym9vbCBwdmlkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cXHR1MTYgcHZpZCA9IHBzLVxcdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXFx0XFx0XFx0XFx0ICAgIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XFx0LnNldHVwXFx0XFx0XFx0PSBkc2FfbG9vcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XFx0LnRlYXJkb3duXFx0XFx0PSBkc2FfbG9vcF90ZWFyZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlxcdC5waHlfcmVhZFxcdFxcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlxcdC5waHlfd3JpdGVcXHRcXHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1OlxcdC5wb3J0X2JyaWRnZV9sZWF2ZVxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2OlxcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcXHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4OlxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcXHQucG9ydF92bGFuX2RlbFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3OlxcdC5wcm9iZVxcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcXHQucmVtb3ZlXFx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcXHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cXHRcXHQuY2QgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XFx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjA5LjAwNTQ3NDM2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3OTIzMzQ2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgb24gYjUzIENvbm5lY3Rpdml0eSoqXG5cblJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBcImI1M1wiIHRoaW5nIGJldHRlci4gV2hhdCBleGFjdGx5ICppcyogYjUzIGluIHRoaXMgY29udGV4dD8gTGV0J3MgYXNzdW1lIGl0J3Mgc29tZSBraW5kIG9mIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGNvbXBvbmVudCDigJMgcGVyaGFwcyBhIHN3aXRjaCwgYSBzcGVjaWZpYyBpbnRlcmZhY2UsIG9yIGEgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBpbnRlZ3JhdGVkLiBJcyBpdCBhIG1vZHVsZT8gSXMgaXQgYnVpbHQtaW4/IEhvdyBpcyBpdCBcImF0dGFjaGVkXCIgb3IgXCJyZWdpc3RlcmVkXCIgd2l0aCB0aGUgc3lzdGVtP1xuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwYCAtIGl0J3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB0b29sIGZvciBsb2NhdGluZyBzdHJpbmdzIHdpdGhpbiB0ZXh0IGZpbGVzLiBJJ2xsIHNlYXJjaCBmb3IgcG90ZW50aWFsIGNsdWVzIGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIHNvdXJjZSBmb3IgXCJiNTMgZHJpdmVycy5cIiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBsb3ctaGFuZ2luZyBmcnVpdDogdGhlIG9idmlvdXMgZHJpdmVyIGZpbGVzLCBhbnkgaW5pdGlhbGl6YXRpb24gY29kZSwgb3IgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gQWZ0ZXIgdGhhdCBJJ2xsIGxvb2sgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gXCJLY29uZmlnLlwiIEtjb25maWcgZmlsZXMgYXJlIGVzc2VudGlhbDsgdGhleSB0ZWxsIG1lIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIGFuZCBob3cgdGhpcyBiNTMgY29tcG9uZW50IG1pZ2h0IGJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25maWd1cmVkIGF0IGJ1aWxkIHRpbWUuIEkgYmV0IGl0J3MgY29uZmlndXJlZCBpbiB0aGVyZSwgb3IgaXRzIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBpdC4gV2l0aCB0aG9zZSB0d28gYXBwcm9hY2hlcyBJIHNob3VsZCBiZSBhYmxlIHRvIGF0IGxlYXN0IHVuZGVyc3RhbmQgaXQgYSBiaXQgYmV0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIxNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjExLjc5NzgxMDkxNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM5NjEyODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CNTNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjQ5PUNPTkZJR19WSVJUSU9fTkVUPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNTA6Q09ORklHX0I1M19TUElfRFJJVkVSPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNTE6Q09ORklHX0I1M19NRElPX0RSSVZFUj1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUyOkNPTkZJR19CNTNfTU1BUF9EUklWRVI9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI1My1DT05GSUdfTkVUX0RTQV9CQ01fU0YyPW1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZToyOm9iai0kKENPTkZJR19CNTMpXFx0XFx0Kz0gYjUzX2NvbW1vbi5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQjUzX1NQSV9EUklWRVIpXFx0Kz0gYjUzX3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CNTNfTURJT19EUklWRVIpXFx0Kz0gYjUzX21kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQjUzX01NQVBfRFJJVkVSKVxcdCs9IGI1M19tbWFwLm9cXG5kcml2ZXJzL25ldC9kc2EvYjUzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0I1M19TUkFCX0RSSVZFUilcXHQrPSBiNTNfc3JhYi5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CNTNfU0VSREVTKVxcdCs9IGI1M19zZXJkZXMub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg9MTE1PXZvaWQgYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNi1cXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTgtaW50IGI1M19zZXJkZXNfaW5pdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9MzgyPXN0YXRpYyBpcnFyZXR1cm5fdCBiNTNfc3JhYl9wb3J0X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtMzkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzozOTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTM5NS1zdGF0aWMgdTggYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ0Nj1zdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1My1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTUtXFx0XFx0LyogSWYgcC1cXHUwMDNlbW9kZSBpbmRpY2F0ZXMgU0dNSUkgbW9kZSwgdGhhdCBlc3NlbnRpYWxseSBtZWFucyB3ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5Mi1cXHQucGh5bGlua19nZXRfY2FwcyA9IGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDk0LVxcdC5waHlsaW5rX21hY19zZWxlY3RfcGNzID0gYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTczND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTc0MC0jZW5kaWZcXG5uZXQvZHNhL3BvcnQuYzoxNzQxOiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTMpXFxubmV0L2RzYS9wb3J0LmMtMTc0Mi1cXHRcXFwiYnJjbSxiY201MzI1XFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTI6MTMuNDM3NDMwMjIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MjQ5NTgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEtjb25maWcgZm9yIEI1MyBhbmQgRFNBIENvcmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGI1MyBhbmQgdGhlIERTQSBjb3JlIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSB0aGUgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWdgIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBiNTMgZHJpdmVyIG9wdGlvbnMuIEFmdGVyIHRoYXQsIEknbGwgbW92ZSB1cHN0cmVhbSB0byBgbmV0L2RzYS9LY29uZmlnYCB0byBzZWUgaG93IHRoZSBEU0EgY29yZSBpdHNlbGYgaXMgc2V0IHVwIGFuZCBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiNTMgY29uZmlnLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byB1bmRlcnN0YW5kIGFsbCBjb25maWd1cmF0aW9uIGFzcGVjdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGJldHdlZW4gdGhlIEI1MyBhbmQgdGhlIGNvcmUgRFNBIGRyaXZlcnMuIFRpbWUgdG8gc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxNS42Nzk5Mjg2ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMDY4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEI1M1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjptZW51Y29uZmlnIEI1M1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBCQ001M3h4IG1hbmFnZWQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnOjE1OmNvbmZpZyBCNTNfU1BJX0RSSVZFUlxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiQjUzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjE6Y29uZmlnIEI1M19NRElPX0RSSVZFUlxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQjUzIE1ESU8gY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnOjI3OmNvbmZpZyBCNTNfTU1BUF9EUklWRVJcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjgtXFx0dHJpc3RhdGUgXFxcIkI1MyBNTUFQIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzozNTpjb25maWcgQjUzX1NSQUJfRFJJVkVSXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM2LVxcdHRyaXN0YXRlIFxcXCJCNTMgU1JBQiBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6NDQ6Y29uZmlnIEI1M19TRVJERVNcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIkI1MyBTZXJEZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTI6MTUuNzIzMjM5NTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIwNzQwMjEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHJlYWRpbmcgYGRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ2A6XG5cbioqQW5hbHl6aW5nIHRoZSBiNTMgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgQnJvYWRjb20gQjUzIHN3aXRjaCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgb2YgdGhlc2Ugc3dpdGNoZXMuIEltbWVkaWF0ZWx5LCBJJ20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0J3MgdGhlIHRvcC1sZXZlbCBzeW1ib2wsIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LCBhbmQgaG93IGFyZSB0aGUgdmFyaW91cyBzdWItZmVhdHVyZXMgb3JnYW5pemVkPyBJJ2xsIGJlIGV4cGVjdGluZyB0byBzZWUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIGRpZmZlcmVudCBCNTMgY2hpcCByZXZpc2lvbnMsIFBIWSBzdXBwb3J0LCB2YXJpb3VzIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyAobGlrZSBNRElPKSwgYW5kIG1heWJlIGV2ZW4gb3B0aW9ucyBmb3IgdGhpbmdzIGxpa2UgVkxBTiBjb25maWd1cmF0aW9uIG9yIFFvUy4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElmIGEgZmVhdHVyZSBpcyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbiwgSSdtIHRyeWluZyB0byBpZGVudGlmeSB3aGF0IGNhdXNlcyB0aGF0IHNlbGVjdGlvbi4gVGhlIGdvYWwgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gc3BhY2UgZm9yIHRoaXMgZHJpdmVyIHNvIEkgY2FuIGFudGljaXBhdGUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgd2hlcmUgY3VzdG9tIGNvbmZpZ3VyYXRpb24gbWlnaHQgYmUgbmVjZXNzYXJ5IGZvciBhIHNwZWNpZmljIHN5c3RlbSBpbnRlZ3JhdGlvbiBvciBuZXcgYm9hcmQgc3VwcG9ydC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgbmVlZCBvdmVycmlkaW5nIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZSwgYW5kIHN0YXJ0IHRvIGJ1aWxkIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFsbCB0aGUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxOS45MzA2NDQwMDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIEI1M1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJDTTUzeHggbWFuYWdlZCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcXG4gICA4OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBCcm9hZGNvbSBtYW5hZ2VkIHN3aXRjaCBjaGlwcy4gSXQgc3VwcG9ydHNcXG4gIDEyOlxcdFxcdCAgQkNNNTMyNUUsIEJDTTUzNjUsIEJDTTUzOXgsIEJDTTUzMTE1IGFuZCBCQ001MzEyNSBhcyB3ZWxsIGFzIEJDTTYzWFhcXG4gIDEzOlxcdFxcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEI1M19TUElfRFJJVkVSXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiQjUzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQjUzIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBTUEkuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBCNTNfTURJT19EUklWRVJcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgTURJTyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gQjUzXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIE1ESU8uXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCNTNfTU1BUF9EUklWRVJcXG4gIDI4OlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgTU1BUCBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gQjUzIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTVxcbiAgMzA6XFx0XFx0ZGVmYXVsdCBCQ002M1hYIHx8IEJNSVBTX0dFTkVSSUNcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIHN3aXRjaGVzIGxpa2UgdGhlIEJDTTYzWFhcXG4gIDMzOlxcdFxcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEI1M19TUkFCX0RSSVZFUlxcbiAgMzY6XFx0XFx0dHJpc3RhdGUgXFxcIkI1MyBTUkFCIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBCNTMgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNXFxuICAzODpcXHRcXHRkZXBlbmRzIG9uIEI1M19TRVJERVMgfHwgIUI1M19TRVJERVNcXG4gIDM5OlxcdFxcdGRlZmF1bHQgQVJDSF9CQ01fSVBST0NcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIFN3aXRjaCBSZWdpc3RlciBBY2Nlc3NcXG4gIDQyOlxcdFxcdCAgQnJpZGdlIFJlZ2lzdGVycyAoU1JBQikgbGlrZSBpdCBpcyBmb3VuZCBvbiB0aGUgQkNNNTMwMTBcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEI1M19TRVJERVNcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgU2VyRGVzIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEI1M1xcbiAgNDc6XFx0XFx0ZGVmYXVsdCBBUkNIX0JDTV9OU1BcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBTZXJEZXMgb24gZS5nOiBOb3J0aHN0YXIgUGx1cyBTb0NzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxOS45MzA3MDYzMThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY2ODMzMTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBEU0EgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgRFNBIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvZHNhL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGVzLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIG92ZXJsYXAgYW5kIHBvdGVudGlhbGx5IHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGNvcmUgRFNBIGZ1bmN0aW9uYWxpdHkgYW5kIGFueSBzcGVjaWZpYyBkcml2ZXIgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHkgSSdsbCBjaGVjazpcblxuKiAgIFdoYXQgYXJlIHRoZSBjb3JlIERTQSBvcHRpb25zIGV4cG9zZWQsIGFuZCBob3cgYXJlIHRoZXkgc3RydWN0dXJlZD8gQXJlIHRoZXJlIGFueSB0b3AtbGV2ZWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICBIb3cgYXJlIHZhcmlvdXMgRFNBIGZlYXR1cmVzIChlLmcuLCBWTEFOIGZpbHRlcmluZywgcG9ydCBjb25maWd1cmF0aW9uKSBlbmFibGVkIGFuZCBkaXNhYmxlZD8gQXJlIHRoZXkgZ3JhbnVsYXIsIG9yIG1vcmUgbW9ub2xpdGhpYyBvcHRpb25zP1xuKiAgIFdoYXQgZHJpdmVycyBhcmUgZXhwbGljaXRseSBzdXBwb3J0ZWQgd2l0aGluIGVhY2ggS2NvbmZpZyBmaWxlLCBhbmQgaG93IGlzIHRoYXQgc3VwcG9ydCBkZWZpbmVkPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0gb3IgdGhlIHRhcmdldCBoYXJkd2FyZT9cbiogICBBcmUgdGhlcmUgYW55IFwiRVhQRVJJTUVOVEFMXCIgb3IgXCJERVBSRUNBVEVEXCIgb3B0aW9ucz8gVGhlc2UgY2FuIGZsYWcgYXJlYXMgZm9yIGVpdGhlciBkZWVwZXIgaW52ZXN0aWdhdGlvbiBvciBwb3RlbnRpYWxseSBzdWdnZXN0IHRoZXkgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gY29uc2lkZXJhdGlvbi5cbiogICBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIGxpa2UgbWFjc2VjIG9yIGJvbmRpbmcsIHRoYXQgSSBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQ/XG5cbkZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBhbmQgd2hpY2ggZmlsZXMgaG9sZCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IG1hdHRlcnMgbW9zdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjIyLjU5OTAzOTc0OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBORVRfRFNBXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEhTUiB8fCBIU1I9blxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IE5FVERFVklDRVNcXG4gICA4OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfU1dJVENIREVWXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMjpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuICAxMzpcXHRcXHRoZWxwXFxuICAxNDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgc3dpdGNoZXMgc3VwcG9ydGVkXFxuICAxNTpcXHRcXHQgIGJ5IHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBORVRfRFNBXFxuICAxODpcXHRcXG4gIDE5OlxcdCMgRHJpdmVycyBtdXN0IHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdGFnZ2luZyBmb3JtYXQocylcXG4gIDIwOlxcdFxcbiAgMjE6XFx0Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJOby1vcCB0YWcgZHJpdmVyXFxcIlxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBzd2l0Y2hlcyB3aGljaCBkb24ndCB0YWdcXG4gIDI1OlxcdFxcdCAgZnJhbWVzIG92ZXIgdGhlIENQVSBwb3J0LlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXFxuICAyODpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXFxcIlxcbiAgMjk6XFx0XFx0aGVscFxcbiAgMzA6XFx0XFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0YWdnaW5nIGZyYW1lcyBmb3JcXG4gIDMxOlxcdFxcdCAgdGhlIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaC5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXFxuICAzNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzU6XFx0XFx0ZGVmYXVsdCBuXFxuICAzNjpcXHRcXG4gIDM3OlxcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4gIDM5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbiAgNDA6XFx0XFx0aGVscFxcbiAgNDE6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxcbiAgNDI6XFx0XFx0ICBCcm9hZGNvbSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlIGFkZHJlc3MuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRhZ2dpbmcgZnJhbWVzIGZvciB0aGVcXG4gIDQ5OlxcdFxcdCAgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgd2hpY2ggcGxhY2UgdGhlIHRhZyBhZnRlciB0aGUgTUFDIHNvdXJjZVxcbiAgNTA6XFx0XFx0ICBhZGRyZXNzLlxcbiAgNTE6XFx0XFx0ICBUaGlzIHRhZyBpcyB1c2VkIGluIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHdoaWNoIHdvcmsgd2l0aG91dCB0aGVcXG4gIDUyOlxcdFxcdCAgb3JpZ2luYWwgRkNTIGFuZCBsZW5ndGggYmVmb3JlIHRoZSB0YWcgaW5zZXJ0aW9uLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNTN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4gIDU2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbiAgNTc6XFx0XFx0aGVscFxcbiAgNTg6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxcbiAgNTk6XFx0XFx0ICBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlXFxuICA2MDpcXHRcXHQgIGFkZHJlc3MuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjIyLjU5OTExMTgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4NDgxMjkxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERTQSBTd2l0Y2ggVkxBTiBPZmZsb2FkIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzIGZvciBEU0Egc3dpdGNoZXMgYW5kIGRldGVybWluZSBpZiBgbmV0L2RzYWAgb3IgYGI1M2AgY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gUUVNVS9zeXprYWxsZXIuIEZpcnN0LCBsZXQgbWUgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHBhdGNoJ3MgbW9kaWZpY2F0aW9ucy4gSXQgc2VlbXMgd2UgaGF2ZSBjaGFuZ2VzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXM6XG5cbjEuICBgZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNgIOKAkyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIFZMQU4gY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBiNTNgIGRyaXZlcjogYGI1M192bGFuX2h3X2VudHJ5YCwgYGI1M19jb25maWd1cmVfdmxhbmAsIGBiNTNfdmxhbl9hZGRgLCBgYjUzX3ZsYW5fZGVsYCwgYGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jYCwgYGI1M19icl9qb2luYCwgYGI1M19icl9sZWF2ZWAsIGFuZCBgYjUzX3N3aXRjaF9pbml0YC5cbjIuICBgaW5jbHVkZS9uZXQvZHNhLmhgIOKAkyBhIG5ldyBmaWVsZCwgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjFgLCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgYHN0cnVjdCBkc2Ffc3dpdGNoYC4gVGhpcyBpcyBhIGtleSBmbGFnLlxuMy4gIGBuZXQvZHNhL3BvcnQuY2Ag4oCTIFRoaXMgaW50cm9kdWNlcyBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gYGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKClgIGFuZCBgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoKWAuIElmIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgc2V0LCBWTEFOIGZpbHRlcmluZyBpcyBieXBhc3NlZCBmb3Igc3RhbmRhbG9uZSB1c2VyIHBvcnRzLCBhbmQgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgY2hlY2sgaW4gdGhlIGNvbmR1aXQgY2hhbmdlIGZ1bmN0aW9uLlxuNC4gIGBuZXQvZHNhL3VzZXIuY2Ag4oCTIGBkc2FfdXNlcl9zZXR1cF90YWdnZXIoKWAgbm93IHNldHMgYHVzZXItXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSYCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIHRydWUuIFRoaXMgc3VnZ2VzdHMgaGFyZHdhcmUgVkxBTiBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLlxuXG5Ob3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXMuIEFyZSBhbnkgb2YgdGhlIHZpcnR1YWwgb3IgZW11bGF0ZWQgc3dpdGNoZXMgYWN0dWFsbHkgKnVzaW5nKiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgPyBUaGUgcmVhbCB2YWx1ZSBvZiB0aGlzIHBhdGNoIGhpbmdlcyBvbiB0aGF0LiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY29kZSBzZWFyY2guIFRpbWUgdG8gZ3JlcCB0aGUgZW50aXJlIGNvZGViYXNlIGZvciBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGFuZCBzZWUgd2hlcmUgdGhpcyBmbGFnIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg2MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjI5LjQ0NzI0Mjk3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MjU0MDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMTczPXN0YXRpYyBpbnQgYjUzX3N3aXRjaF9pbml0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjU1LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMyNTY6XFx0ZGV2LVxcdTAwM2Vkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSAhaXM1MzI1KGRldikgXFx1MDAyNlxcdTAwMjYgIWlzNTM2NShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyNTctXFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaD0zODU9c3RydWN0IGRzYV9zd2l0Y2gge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmgtNDA4LVxcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cXG5pbmNsdWRlL25ldC9kc2EuaDo0MDk6XFx0dTMyXFx0XFx0XFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTtcXG5pbmNsdWRlL25ldC9kc2EuaC00MTAtXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz03OTE9aW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy04MzMtXFxubmV0L2RzYS9wb3J0LmM6ODM0OlxcdFxcdFxcdGlmIChkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXFxubmV0L2RzYS9wb3J0LmMtODM1LVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtODQ0LVxcbm5ldC9kc2EvcG9ydC5jOjg0NTpcXHRcXHRpZiAoIWRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xcbm5ldC9kc2EvcG9ydC5jLTg0Ni1cXHRcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXFx1MDAzZXVzZXIsXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNDMyPWludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE0NTMtXFx0ICogZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcsIGFuZCBldmVyeSBwb3J0IG9mIGFcXG5uZXQvZHNhL3BvcnQuYzoxNDU0OlxcdCAqIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyXFxubmV0L2RzYS9wb3J0LmMtMTQ1NS1cXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNDU4LVxcdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XFxubmV0L2RzYS9wb3J0LmM6MTQ1OTpcXHRcXHRcXHQgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkO1xcbm5ldC9kc2EvcG9ydC5jLTE0NjAtXFx0aWYgKHZsYW5fZmlsdGVyaW5nKSB7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0xOTI5PXN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTk0OC0gKiAgICAgLSBpZiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXFxubmV0L2RzYS91c2VyLmM6MTk0OTogKiAgICAgICBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZlxcbm5ldC9kc2EvdXNlci5jLTE5NTAtICogICAgICAgKGRzLVxcdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgPSB0cnVlIEFORCB0aGVyZSBhcmUgYnJpZGdlcyBzcGFubmluZ1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY5OD12b2lkIGRzYV91c2VyX3NldHVwX3RhZ2dlcihzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcilcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI3MjEtXFx0aWYgKGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nIHx8XFxubmV0L2RzYS91c2VyLmM6MjcyMjpcXHQgICAgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKVxcbm5ldC9kc2EvdXNlci5jLTI3MjMtXFx0XFx0dXNlci1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjozMC45ODk3ODc1NTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MjkxMTA1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIEI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgZmxhZyBpcyAqb25seSogc2V0IHdpdGhpbiBgYjUzX3N3aXRjaF9pbml0YCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIEI1MyBoYXJkd2FyZSBpcyBmdW5kYW1lbnRhbGx5LCBhbmQgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggaXQsIGhvdyBpdCdzIGRpc2NvdmVyZWQuXG5cbk15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhlc2UgQjUzIHN3aXRjaCBkcml2ZXJzLiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgcmVnaXN0cmF0aW9uIGFuZCBwcm9iZSBzZXF1ZW5jZXMgdG8gc2VlIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgdGhlc2Ugc3dpdGNoZXMuXG5cblRoZW4sIEknbGwgZGl2ZSBpbnRvIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb25zIHRoZW1zZWx2ZXM6IGBiNTNfc3BpLmNgLCBgYjUzX21kaW8uY2AsIGBiNTNfbW1hcC5jYCwgYW5kIGBiNTNfc3JhYi5jYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgSSBuZWVkIHRvIGxvb2sgZm9yIGhvdyB0aGV5IGRlYWwgd2l0aCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlcywgYW5kIGlkZW50aWZ5IHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoYXQgVkxBTiBvZmZsb2FkIGZsYWcgbWlnaHQgYmVjb21lIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc2OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMzowOS44MTg5MDI0NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjA3NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTM5MT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGI1M19tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zOTktfTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6NDAwOm1kaW9fbW9kdWxlX2RyaXZlcihiNTNfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGI1M19tbWFwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy01MDYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jOjUwNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGI1M19tbWFwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwOC1NT0RVTEVfQVVUSE9SKFxcXCJKb25hcyBHb3Jza2kgXFx1MDAzY2pvZ29Ab3BlbndydC5vcmdcXHUwMDNlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYz0zNjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGI1M19zcGlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzcxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjM3Mjptb2R1bGVfc3BpX2RyaXZlcihiNTNfc3BpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTY4Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfc3JhYl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2OTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfc3JhYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02OTQtTU9EVUxFX0FVVEhPUihcXFwiSGF1a2UgTWVocnRlbnMgXFx1MDAzY2hhdWtlQGhhdWtlLW0uZGVcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEzOjA5Ljg4NTUxNDUwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NjM4OTgwNjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYjUzIGFuZCBEU0EgQ29yZSBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGBiNTNgIGRpcmVjdG9yeSBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyczogYGI1M19tZGlvX2RyaXZlcmAsIGBiNTNfbW1hcF9kcml2ZXJgLCBgYjUzX3NwaV9kcml2ZXJgLCBhbmQgYGI1M19zcmFiX2RyaXZlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSBCcm9hZGNvbSBCNTMgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB1c2VkIGluIHRoZWlyIFNvQ3MgYW5kIHJvdXRlcnMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFllcywgY29uZmlybWVkLiBCQ001MzI1RSwgNTM2NSwgNTM5eCwgNTMxMTUsIDUzMTI1LCBhbmQgNjNYWCBhcmUgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIEJyb2FkY29tLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhlc2UgYmUgcHJvYmVkL2luc3RhbnRpYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmU/IE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgSSBjYW4ndCB0aGluayBvZiBhbnkgd2F5IHRoZSBNRElPL1NQSS9wbGF0Zm9ybSBkZXZpY2VzIGZvciBgYjUzYCB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSB0aG9zZSBtb2NrcyB1bmxlc3MgdGhlIGRyaXZlcnMgYXJlIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSBjaGlwcyFcblxuU28sIEknbSBub3cgZm9jdXNpbmcgb24gd2hldGhlciBjaGFuZ2VzIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AgcmVsYXRlZCB0byBgYjUzYCdzIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaGF2ZSBhbnkgd2lkZXIgaW1wbGljYXRpb25zLiBMZXQncyBzZWUuLi5cblxuSSd2ZSBmb3VuZCB0aGUgb2NjdXJyZW5jZXMgb2YgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpbiB0aGUgY29kZSwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJIHNlZSB0aGF0IHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUgZm9yIGBiNTNgIGNoaXBzIHdoaWNoIGFyZSBCQ001MzI1RSBhbmQgQkNNNTM2NSwgYW5kIGZhbHNlIGZvciBvdGhlciBEU0Egc3dpdGNoZXMgKGxpa2UgYGRzYV9sb29wYCkuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LCBJJ20gdHJhY2luZyBob3cgdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgdmFyaWFibGUgYWZmZWN0cyB0aGUgRFNBIGNvZGU6XG5cbi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBJZiB0aGUgdmFsdWUgaXMgMCAoZmFsc2UpLCB0aGUgY29kZSBiZWhhdmVzIGFzIGJlZm9yZS5cbi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBTaW1pbGFyIGZvciB0aGUgdmxhbiBmaWx0ZXJpbmcgY29uZGl0aW9uLCBubyBjaGFuZ2UgZm9yIGZhbHNlLlxuLSAgIEluIGBuZXQvZHNhL3VzZXIuY2A6IEFnYWluLCB3aGVuIGl0IGlzIGZhbHNlLCB0aGVyZSBpcyBubyBjaGFuZ2UuXG5cblNvLCBpbiBlc3NlbmNlLCB0aGUgRFNBIGNvcmUgbG9naWMgYmVoYXZlcyBpZGVudGljYWxseSBmb3IgYW55IERTQSBzd2l0Y2ggZHJpdmVyIG90aGVyIHRoYW4gYGI1M2AgaXRzZWxmLiBUaGlzIG1lYW5zIHRoYXQsIGZvciBvdGhlciBEU0Egc3dpdGNoZXMsIHRoZSBjaGFuZ2VzIGluIHRoZSBEU0EgY29kZSBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBidWdzIG9yIG5ldyBleGVjdXRpb24gcGF0aHMuXG5cbk5vdywgZm9yIGBiNTNgLCBjYW4gaXQgYmUgcHJvYmVkIG9yIG5vdD8gQ2FuIEkgZXZlbiBydW4gdGhlIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW46IFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHVucmVhY2hhYmxlIGNvZGUsIG9yIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGluIFFFTVUuIFRoYXQncyBhIGdvb2QgZ3VpZGUsIGFuZCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBJIHdvdWxkIG5lZWQgcmVhbCBoYXJkd2FyZSB0byB0ZXN0IHRoZXNlIGRyaXZlcnMuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBiNTNgIGlzIHJlZ2lzdGVyZWQsIGlmIGFueSBtb2NrIGJ1cyBjYW4gYmUgdXNlZC4gSSB3aWxsIGNoZWNrIGBiNTNfbWRpby5jYCwgYGI1M19tbWFwLmNgLCBgYjUzX3NwaS5jYCwgYGI1M19zcmFiLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRoaXMgY291bGQgYmUgaW5zdGFudGlhdGVkLCBvciBpZiBpdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MTYuMjc1MzIzNDQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qXFxuICAgMjpcXHQgKiBCNTMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggTUlJIHJlZ2lzdGVyc1xcbiAgIDM6XFx0ICpcXG4gICA0OlxcdCAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIEpvbmFzIEdvcnNraSBcXHUwMDNjam9nb0BvcGVud3J0Lm9yZ1xcdTAwM2VcXG4gICA1OlxcdCAqXFxuICAgNjpcXHQgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcXG4gICA3OlxcdCAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcXG4gICA4OlxcdCAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFxcXCJBUyBJU1xcXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXFxuICAxMTpcXHQgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXFxuICAxMjpcXHQgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxcbiAgMTM6XFx0ICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xcbiAgMTQ6XFx0ICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXFxuICAxNTpcXHQgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxcbiAgMTY6XFx0ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cXG4gIDE3OlxcdCAqL1xcbiAgMTg6XFx0XFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAyMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JyY21waHkuaFxcdTAwM2VcXG4gIDI1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4gIDI2OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxuICAyNzpcXHRcXG4gIDI4OlxcdCNpbmNsdWRlIFxcXCJiNTNfcHJpdi5oXFxcIlxcbiAgMjk6XFx0XFxuICAzMDpcXHQvKiBNSUkgcmVnaXN0ZXJzICovXFxuICAzMTpcXHQjZGVmaW5lIFJFR19NSUlfUEFHRSAgICAweDEwICAgIC8qIE1JSSBQYWdlIHJlZ2lzdGVyICovXFxuICAzMjpcXHQjZGVmaW5lIFJFR19NSUlfQUREUiAgICAweDExICAgIC8qIE1JSSBBZGRyZXNzIHJlZ2lzdGVyICovXFxuICAzMzpcXHQjZGVmaW5lIFJFR19NSUlfREFUQTAgICAweDE4ICAgIC8qIE1JSSBEYXRhIHJlZ2lzdGVyIDAgKi9cXG4gIDM0OlxcdCNkZWZpbmUgUkVHX01JSV9EQVRBMSAgIDB4MTkgICAgLyogTUlJIERhdGEgcmVnaXN0ZXIgMSAqL1xcbiAgMzU6XFx0I2RlZmluZSBSRUdfTUlJX0RBVEEyICAgMHgxYSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAyICovXFxuICAzNjpcXHQjZGVmaW5lIFJFR19NSUlfREFUQTMgICAweDFiICAgIC8qIE1JSSBEYXRhIHJlZ2lzdGVyIDMgKi9cXG4gIDM3OlxcdFxcbiAgMzg6XFx0I2RlZmluZSBSRUdfTUlJX1BBR0VfRU5BQkxFICAgICBCSVQoMClcXG4gIDM5OlxcdCNkZWZpbmUgUkVHX01JSV9BRERSX1dSSVRFICAgICAgQklUKDApXFxuICA0MDpcXHQjZGVmaW5lIFJFR19NSUlfQUREUl9SRUFEICAgICAgIEJJVCgxKVxcbiAgNDE6XFx0XFxuICA0MjpcXHRzdGF0aWMgaW50IGI1M19tZGlvX29wKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTE2IG9wKVxcbiAgNDM6XFx0e1xcbiAgNDQ6XFx0XFx0aW50IGk7XFxuICA0NTpcXHRcXHR1MTYgdjtcXG4gIDQ2OlxcdFxcdGludCByZXQ7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gZGV2LVxcdTAwM2Vwcml2O1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRpZiAoZGV2LVxcdTAwM2VjdXJyZW50X3BhZ2UgIT0gcGFnZSkge1xcbiAgNTA6XFx0XFx0XFx0Lyogc2V0IHBhZ2UgbnVtYmVyICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjE2LjI3NTQwNDc5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTgxODUwMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBiNTMgc3dpdGNoIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIHBhdGggZm9yIGJyaW5naW5nIGEgc3dpdGNoIG1hbmFnZWQgYnkgdGhpcyBkcml2ZXIgb25saW5lLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYGI1M19tZGlvX3Byb2JlYCwgYGI1M19zd2l0Y2hfaW5pdGAsIGFuZCB0aGVuIHRoZSBwYWlyIGBiNTNfc3dpdGNoX2FsbG9jYCBhbmQgYGI1M19zd2l0Y2hfcmVnaXN0ZXJgLlxuXG5gYjUzX21kaW9fcHJvYmVgIGlzIGxpa2VseSB3aGVyZSB0aGUgTURJTyBidXMgaW50ZXJhY3Rpb24gaGFwcGVucywgZGlzY292ZXJpbmcgdGhlIHN3aXRjaCdzIHByZXNlbmNlIGFuZCBwb3RlbnRpYWxseSByZXRyaWV2aW5nIGl0cyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzIHZpYSB0aGUgTUlJIChNYW5hZ2VtZW50IEludGVyZmFjZSkuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gZGlzY292ZXIgYW5kIHNldCB1cCBjb21tdW5pY2F0aW9uLlxuXG5OZXh0LCBgYjUzX3N3aXRjaF9pbml0YCBmZWVscyBsaWtlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuIEkgZXhwZWN0IHRvIHNlZSBoYXJkd2FyZS1zcGVjaWZpYyBzZXR1cCBoZXJlLCBtYXliZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiwgUEhZIGNvbmZpZ3VyYXRpb24sIGFuZCBzZXR0aW5nIHVwIGludGVycnVwdHMuIFRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCB0aGUgc3dpdGNoIGhhcmR3YXJlLlxuXG5Gb2xsb3dpbmcgdGhhdCwgYGI1M19zd2l0Y2hfYWxsb2NgIHNob3VsZCBiZSByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgdG8gcmVwcmVzZW50IHRoZSBzd2l0Y2guIEknbGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB3aGF0J3MgYWxsb2NhdGVkOyBpcyBpdCBtZW1vcnkgdG8gY29udGFpbiByZWdpc3RlciBtYXBzPyBJbmZvcm1hdGlvbiBhYm91dCBwb3J0cz8gVGhpcyBpcyB0aGUgZHJpdmVyJ3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uIEFuZCB0aGVuLCBgYjUzX3N3aXRjaF9yZWdpc3RlcmAgbXVzdCBiZSByZWdpc3RlcmluZyB0aGUgYWxsb2NhdGVkIHN0cnVjdHVyZXMgd2l0aCB0aGUga2VybmVsLCBtYWtpbmcgdGhlIHN3aXRjaCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFNvLCB0aGUgcmVnaXN0cmF0aW9uIG11c3QgYmUgc2V0dGluZyB1cCBhbGwgb2YgdGhlIGRhdGEgdGhhdCB0aGUgbmV0d29ya2luZyBzdGFjayBuZWVkcyB0byBmaW5kIHRoZSBzd2l0Y2guXG5cbkVzc2VudGlhbGx5LCBJJ20gdGhpbmtpbmcgb2YgYG1kaW9fcHJvYmVgIGFzIGRpc2NvdmVyeSwgYGluaXRgIGFzIGNvbmZpZ3VyYXRpb24vaGFyZHdhcmUgc2V0dXAsIGFuZCBgYWxsb2NgL2ByZWdpc3RlcmAgYXMgZGF0YSBzdHJ1Y3R1cmUgY3JlYXRpb24gYW5kIGludGVncmF0aW9uIHdpdGggdGhlIGtlcm5lbCdzIG5ldHdvcmsgbWFuYWdlbWVudC4gQnkgdHJhY2luZyB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGNhbGwgZGVwZW5kZW5jaWVzLCBhbmQgaW5zcGVjdGluZyBob3cgcmVnaXN0ZXJzIGFuZCBvdGhlciBkYXRhIHN0cnVjdHVyZXMgYXJlIHBvcHVsYXRlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLCBJIHNob3VsZCBnZXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGI1MyBzd2l0Y2ggaXMgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEl0J3MgYSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV0d29yayBkcml2ZXIgd29ya3MgYW5kIGNhbiBiZSBsZXZlcmFnZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzE2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNDoyMC44NTcyNTg4MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDYzOTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiNTNfc3dpdGNoX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMzODk9RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX2RldGVjdCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5MC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzkxOmludCBiNTNfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDExLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozNDEyOkVYUE9SVF9TWU1CT0woYjUzX3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzQxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yOTI9c3RhdGljIGludCBiNTNfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozNDU6XFx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYz00MDU9c3RhdGljIGludCBiNTNfbW1hcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ0OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM6NDUwOlxcdHJldHVybiBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ1MS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg9Mjg0PWludCBiNTNfc3dpdGNoX2RldGVjdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg1LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoyODY6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jPTI5Nj1zdGF0aWMgaW50IGI1M19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwNy1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYzozMDg6XFx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTYxOD1zdGF0aWMgaW50IGI1M19zcmFiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2NTc6XFx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjU4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MjAuOTY3OTAzMjA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNDU3OTQ3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIE1vZHVsZSBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGFyb3VuZCB0aGlzIGBiNTNfc3dpdGNoX3JlZ2lzdGVyYCBmdW5jdGlvbiwgYW5kIHRoZSBgYjUzX2NvbW1vbi5jYCBmaWxlIG1vcmUgYnJvYWRseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hvIGVsc2UgaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGF0IHNoYXJlZCBjb21tb24gY29kZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgYSBjb21wcmVoZW5zaXZlIHNlYXJjaCDigJMgYSBnb29kIG9sZCBgZ3JlcGAgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0cmVlLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cCB3aGVuIEkgbG9vayBmb3IgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBgYjUzX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgcmVsYXRlZCBkcml2ZXJzIG9yIG1vZHVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTYzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MjYuMzEzNzAxMTgxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE0NjA2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImI1M19zd2l0Y2hfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzM4OT1FWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfZGV0ZWN0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkwLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMzOTE6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjM0MTI6RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTI5Mj1zdGF0aWMgaW50IGI1M19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjM0NTpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQwNT1zdGF0aWMgaW50IGI1M19tbWFwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmMtNDQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo0NTA6XFx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmMtNDUxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0yODQ9aW50IGI1M19zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0yODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjI4NjppbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmM9Mjk2PXN0YXRpYyBpbnQgYjUzX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzA3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjMwODpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzA5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NjE4PXN0YXRpYyBpbnQgYjUzX3NyYWJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjY1NzpcXHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTU0OTpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNTUwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjI4LjcyODMxNjA2MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjM2MTM3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBCQ01fU0YyIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jYC4gSG1tLCB3aGF0J3MgdGhpcyBgYmNtX3NmMmAgYWxsIGFib3V0PyBBaCwgcmlnaHQsIGl0J3MgdGhlIFN0YXJmaWdodGVyIDIgc3dpdGNoLCB1c2VkIG9uIHRob3NlIEJyb2FkY29tIFNldCBUb3AgQm94IGFuZCBpUHJvYyBwbGF0Zm9ybXMg4oCTIHRob3NlIEFSTSBhbmQgTUlQUy1iYXNlZCBTeXN0ZW0tb24tQ2hpcHMuIE9rYXksIGdvdCBpdC4gTm93LCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGl0cyBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBiY21fc2YyYCBLY29uZmlnIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBmZWF0dXJlIHNldCBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjM0Ljk2NDQ1NjE4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE4NDExNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfQkNNX1NGMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3OmNvbmZpZyBORVRfRFNBX0JDTV9TRjJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNDozNS4wNDYzMDI1MzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwMDM0MDk0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgRFNBIENvcmUgQ2hhbmdlcyBhbmQgQXBwbGljYWJpbGl0eSB0byBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZywgYW5kIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgbGVhbmluZyB0b3dhcmRzIFwibm8uXCIgRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGNvZGUgY2hhbmdlcyBhcmUgaW5hY2Nlc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGlmIGFueSBvZiB0aGUgYGI1M2AgZmFtaWx5IGRyaXZlcnMgb3IgYGJjbV9zZjJgIGNvdWxkIGJlIHByb2JlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLiBRdWlja2x5LCBpdCBiZWNhbWUgY2xlYXIgdGhhdCBub25lIG9mIHRoZW0gY291bGQgYmU6IGBiNTNfc3BpYCwgYGI1M19tZGlvYCwgYGI1M19tbWFwYCwgYW5kIGBiNTNfc3JhYmAgYWxsIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMg4oCTIFNQSSBjb250cm9sbGVycywgTURJTyBidXNlcywgb3IgQnJvYWRjb20gU29DcyB3aXRoIG1lbW9yeS1tYXBwZWQgc3dpdGNoZXMsIHJlc3BlY3RpdmVseS4gTGlrZXdpc2UsIGBiY21fc2YyYCBpcyBhbHNvIHBsYXRmb3JtLXNwZWNpZmljLiBTdGFuZGFyZCBRRU1VIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzIGRvbid0IGVtdWxhdGUgdGhlc2UuIEkgbmVlZCB0byBub3RlIHRoYXQgdGhleSBkb24ndCBldmVuICpleGlzdCogaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBzbyBhbnkgcHJvYmluZyB3b3VsZCBmYWlsLlxuXG5UaGVuIEkgY29uc2lkZXJlZCB0aGUgRFNBIGNvcmUgY2hhbmdlcyB0aGVtc2VsdmVzLCBzcGVjaWZpY2FsbHkgdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgdmFyaWFibGUuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGxvZ2ljIGNoYW5nZXMgYmFzZWQgb24gdGhpcyB2YXJpYWJsZSBpbiBgbmV0L2RzYS9wb3J0LmNgIGFuZCBgbmV0L2RzYS91c2VyLmNgLiAgSSBzZWUgdGhhdCB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBmbGFnIGlzIG9ubHkgZXZlciBzZXQgdG8gdHJ1ZSB3aXRoaW4gYGI1M19zd2l0Y2hfaW5pdGAuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuXG5cbk15IGFzc3VtcHRpb24gaXMgdGhhdCBmb3IgYW55IFwicmVhY2hhYmxlXCIgc3dpdGNoLCBsaWtlIGBkc2FfbG9vcGAgb3IgYSBmdXR1cmUgbW9jayBzd2l0Y2gsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2lsbCBiZSBmYWxzZSwgYmVjYXVzZSBgYjUzX3N3aXRjaF9pbml0YCBpcyBuZXZlciBjYWxsZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIGZhbHNlLCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBwYXRjaCdzIGVmZmVjdHMgKm9ubHkqIGFwcGx5IHdoZW4gYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpcyB0cnVlLCB3aGljaCBpcyAqZXhjbHVzaXZlbHkqIG9uIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZSAoYjUzIG9yIGJjbV9zZjIpLlxuXG5UaGlzIGxvb2tzIGxpa2UgaXQgZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlIFwiY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50c1wiIHJ1bGUgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjazpcblxuMS4gIElzIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgc2V0ICphbnl3aGVyZSogZWxzZT8gQSBxdWljayBgZ3JlcHBlcmAgY29uZmlybXMgdGhhdCB0aGUgb25seSBwbGFjZSBpcyBpbmRlZWQgYGRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jYC5cbjIuICBDYW4gKmFueSogb2YgdGhlIGBiNTNgIGRyaXZlcnMsIGluY2x1ZGluZyBgYjUzX2NvbW1vbi5jYCBvciBpdHMgc3ViLWRyaXZlcnMsIGJlIGluc3RhbnRpYXRlZC9wcm9iZWQgaW4gUUVNVSBvciBHQ0U/IE5vLiBUaGV5J3JlIGFsbCB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgcmVxdWlyaW5nIGVpdGhlciBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSAoQkNNNTN4eCBvciBTdGFyZmlnaHRlciAyKSBvciBjdXN0b20gQnJvYWRjb20gTUlQUy9BUk0gU29Dcywgd2hpY2ggc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUuXG4zLiAgRG8gdGhlIERTQSBjb3JlIGNoYW5nZXMgYWZmZWN0IG90aGVyIERTQSBzd2l0Y2hlcz8gTm8sIGFsbCBvdGhlciBzd2l0Y2hlcyBoYXZlIHRoZSB2YXJpYWJsZSBzZXQgdG8gMCAoZmFsc2UpLCBzbyB0aGVpciBiZWhhdmlvciByZW1haW5zIGlkZW50aWNhbCB0byB0aGUgY29kZSAqYmVmb3JlKiB0aGUgcGF0Y2guXG5cblRoZSBjb25jbHVzaW9uIGlzIGNyeXN0YWwgY2xlYXIuIFRoZXNlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoZXJlZm9yZSBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIGFuZCBsZXQgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBkbyBpdHMgdGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzcyLCJPdXRwdXRUb2tlbnMiOjE0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTU6MDQuMDQ5NzE1MDg4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3RhbmRhbG9uZSBWTEFOIG9mZmxvYWRpbmcgZm9yIEJyb2FkY29tIEI1MyAvIEJDTV9TRjIgc3dpdGNoZXMuIFRoZSBjb3JlIERTQSBjaGFuZ2VzIGludHJvZHVjZSBhIG5ldyBmbGFnIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2hpY2ggaXMgb25seSBlbmFibGVkIGJ5IHRoZSBgYjUzYCBkcml2ZXIgZm9yIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZS4gQmVjYXVzZSBCcm9hZGNvbSBCNTMgc3dpdGNoZXMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIG5vIG90aGVyIGRyaXZlciBzZXRzIHRoaXMgZmxhZyAobGVhdmluZyBnZW5lcmFsIERTQSBiZWhhdmlvciB1bmNoYW5nZWQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNTowNC4wNDk3NTEzOThaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszr7f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 08:57:15 +0000 UTC FinishedAt: 2026-08-31 09:15:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NTRhYWQzNjA1NGEzNGEwMzY4MmM4NTg3NjcwOWFiZmVhZTU5MmU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDk6MTE6NTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuaW5kZXggMDg4MDMxMGM5Y2UzZi4uYjU3YzBiZGFjYjI3ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuQEAgLTg5OCwxMCAmIzQzOzg5OCw1MiBAQCBzdGF0aWMgYm9vbCBiNTNfdmxhbl9wb3J0X21heV9qb2luX3VudGFnZ2VkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4gXHRyZXR1cm4gZHAtXHUwMDNlYnJpZGdlID09IE5VTEw7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBiNTNfdmxhbl9od19lbnRyeShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGNvbnN0IHN0cnVjdCBiNTNfdmxhbiAqdmwsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbiYjNDM7XHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcbiYjNDM7XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuJiM0MztcdHVuc2lnbmVkIGludCBwb3J0O1xuJiM0MztcbiYjNDM7XHQqaHcgPSAqdmw7XG4mIzQzO1xuJiM0MztcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0aHctXHUwMDNlbWVtYmVycyA9IDA7XG4mIzQzO1x0aHctXHUwMDNldW50YWcgPSAwO1xuJiM0MztcbiYjNDM7XHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcbiYjNDM7XHRcdGlmICghKHZsLVx1MDAzZW1lbWJlcnMgXHUwMDI2IEJJVChwb3J0KSkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZHNhX3BvcnRfaXNfY3B1KGRwKSkge1xuJiM0MztcdFx0XHRpZiAoZHAtXHUwMDNlYnJpZGdlKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdFx0c3RhbmRhbG9uZSA9IHRydWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aHctXHUwMDNlbWVtYmVycyB8PSBCSVQocG9ydCk7XG4mIzQzO1x0XHRody1cdTAwM2V1bnRhZyB8PSB2bC1cdTAwM2V1bnRhZyBcdTAwMjYgQklUKHBvcnQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFzdGFuZGFsb25lKSB7XG4mIzQzO1x0XHRody1cdTAwM2VtZW1iZXJzID0gMDtcbiYjNDM7XHRcdGh3LVx1MDAzZXVudGFnID0gMDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdGFuZGFsb25lO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGI1M192bGFuIHZsID0geyAwIH07XG4mIzQzO1x0c3RydWN0IGI1M192bGFuIGh3O1xuIFx0c3RydWN0IGI1M192bGFuICp2O1xuIFx0aW50IGksIGRlZl92aWQ7XG4gXHR1MTYgdmlkO1xuQEAgLTkzNywyMCAmIzQzOzk3OSwyMyBAQCBpbnQgYjUzX2NvbmZpZ3VyZV92bGFuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcdH1cbiBcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIGRlZl92aWQsIFx1MDAyNnZsKTtcbiBcbi1cdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpIHtcbi1cdFx0LyogVXBvbiBpbml0aWFsIGNhbGwgd2UgaGF2ZSBub3Qgc2V0LXVwIGFueSBWTEFOcywgYnV0IHVwb25cbi1cdFx0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXG4tXHRcdCAqL1xuLVx0XHRmb3IgKHZpZCA9IGRlZl92aWQgJiM0MzsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7XG4tXHRcdFx0diA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuJiM0MztcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4mIzQzO1x0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0Zm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCBcdTAwM2MgZGV2LVx1MDAzZW51bV92bGFuczsgdmlkJiM0MzsmIzQzOykge1xuJiM0MztcdFx0diA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuIFxuLVx0XHRcdGlmICghdi1cdTAwM2VtZW1iZXJzKVxuLVx0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRpZiAoIXYtXHUwMDNlbWVtYmVycylcbiYjNDM7XHRcdFx0Y29udGludWU7XG4gXG4tXHRcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcbi1cdFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4tXHRcdH1cbiYjNDM7XHRcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHYsIFx1MDAyNmh3KSlcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4mIzQzO1x0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4mIzQzO1x0fVxuIFxuJiM0MztcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0YjUzX2Zvcl9lYWNoX3BvcnQoZGV2LCBpKSB7XG4gXHRcdFx0aWYgKCFkc2FfaXNfY3B1X3BvcnQoZHMsIGkpKVxuIFx0XHRcdFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLFxuQEAgLTE3MjAsNiAmIzQzOzE3NjUsNyBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXHUwMDNlcHJpdjtcbiBcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xuIFx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuJiM0MztcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4gXHR1MTYgb2xkX3B2aWQsIG5ld19wdmlkO1xuIFx0aW50IGVycjtcbkBAIC0xNzUxLDEzICYjNDM7MTc5NywxNCBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXHRlbHNlXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfkJJVChwb3J0KTtcbiBcbi1cdGlmICghZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKVxuJiM0MztcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHZsLCBcdTAwMjZodykpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi1cdTAwM2V2aWQsIHZsKTtcbiYjNDM7XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgXHUwMDI2aHcpO1xuIFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVx1MDAzZXZpZCk7XG4gXG4tXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4gXHRcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxuIFx0XHRcdCAgICBuZXdfcHZpZCk7XG4gXHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgb2xkX3B2aWQpO1xuQEAgLTE3NzIsNyAmIzQzOzE4MTksOSBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4ge1xuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbiYjNDM7XHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4gXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xuJiM0MztcdGJvb2wgbmVlZHNfaHc7XG4gXHR1MTYgcHZpZDtcbiBcbiBcdGlmICh2bGFuLVx1MDAzZXZpZCA9PSAwKVxuQEAgLTE3ODIsNiAmIzQzOzE4MzEsOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2bGFuLVx1MDAzZXZpZF07XG4gXG4mIzQzO1x0bmVlZHNfaHcgPSBiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbiYjNDM7XG4gXHR2bC1cdTAwM2VtZW1iZXJzIFx1MDAyNj0gfkJJVChwb3J0KTtcbiBcbiBcdGlmIChwdmlkID09IHZsYW4tXHUwMDNldmlkKVxuQEAgLTE3OTEsMTQgJiM0MzsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGlmICh1bnRhZ2dlZCBcdTAwMjZcdTAwMjYgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfihCSVQocG9ydCkpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4mIzQzO1x0aWYgKCFuZWVkc19odylcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgdmwpO1xuJiM0MztcdGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuJiM0MztcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCBcdTAwMjZodyk7XG4gXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXHUwMDNldmlkKTtcbiBcbi1cdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTtcbi1cdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZykge1xuJiM0MztcdFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksXG4mIzQzO1x0XHRcdCAgICBwdmlkKTtcbiYjNDM7XHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTIyNjEsNiAmIzQzOzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX21kYl9kZWwpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4mIzQzO1x0c3RydWN0IGI1M192bGFuIGh3O1xuJiM0MztcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4mIzQzO1x0dTE2IHZpZDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yICh2aWQgPSBiNTNfZGVmYXVsdF9wdmlkKGRldikgJiM0MzsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuJiM0MztcbiYjNDM7XHRcdGlmICghKHZsLVx1MDAzZW1lbWJlcnMgXHUwMDI2IEJJVChwb3J0KSkpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuJiM0MztcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4mIzQzO1x0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXG4gXHRcdGJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuQEAgLTIzMjQsNiAmIzQzOzI0MDEsOCBAQCBpbnQgYjUzX2JyX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuIFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfUFZMQU5fUEFHRSwgQjUzX1BWTEFOX1BPUlRfTUFTSyhwb3J0KSwgcHZsYW4pO1xuIFx0ZGV2LVx1MDAzZXBvcnRzW3BvcnRdLnZsYW5fY3RsX21hc2sgPSBwdmxhbjtcbiBcbiYjNDM7XHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX2JyX2pvaW4pO1xuQEAgLTIzNzYsNiAmIzQzOzI0NTUsOCBAQCB2b2lkIGI1M19icl9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4gXHRcdHZsLVx1MDAzZW1lbWJlcnMgfD0gQklUKHBvcnQpO1xuIFx0XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBwdmlkLCB2bCk7XG4gXHR9XG4mIzQzO1xuJiM0MztcdGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTtcbiB9XG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfbGVhdmUpO1xuIFxuQEAgLTMxNzIsNiAmIzQzOzMyNTMsOCBAQCBzdGF0aWMgaW50IGI1M19zd2l0Y2hfaW5pdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYtXHUwMDNldmxhbnMpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuJiM0MztcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuJiM0MztcbiBcdGRldi1cdTAwM2VyZXNldF9ncGlvID0gYjUzX3N3aXRjaF9nZXRfcmVzZXRfZ3BpbyhkZXYpO1xuIFxuIFx0aWYgKFBUUl9FUlIoZGV2LVx1MDAzZXJlc2V0X2dwaW8pID09IC1FUFJPQkVfREVGRVIpXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxuaW5kZXggNzUwN2Q2MzJlN2M2ZC4uNjdhMDFmYzVmODFlYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9kc2EuaFxuQEAgLTQwNSw2ICYjNDM7NDA1LDkgQEAgc3RydWN0IGRzYV9zd2l0Y2gge1xuIFx0LyogS2VlcCBWTEFOIGZpbHRlcmluZyBlbmFibGVkIG9uIHBvcnRzIG5vdCBvZmZsb2FkaW5nIGFueSB1cHBlciAqL1xuIFx0dTMyXHRcdFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZzoxO1xuIFxuJiM0MztcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbiYjNDM7XHR1MzJcdFx0XHRuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDoxO1xuJiM0MztcbiBcdC8qIFBhc3MgLnBvcnRfdmxhbl9hZGQgYW5kIC5wb3J0X3ZsYW5fZGVsIHRvIGRyaXZlcnMgZXZlbiBmb3IgYnJpZGdlc1xuIFx0ICogdGhhdCBoYXZlIHZsYW5fZmlsdGVyaW5nPTAuIEFsbCBkcml2ZXJzIHNob3VsZCBpZGVhbGx5IHNldCB0aGlzIChhbmRcbiBcdCAqIHRoZW4gdGhlIG9wdGlvbiB3b3VsZCBnZXQgcmVtb3ZlZCksIGJ1dCBpdCBpcyB1bmtub3duIHdoZXRoZXIgdGhpc1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvcG9ydC5jIGIvbmV0L2RzYS9wb3J0LmNcbmluZGV4IDFmNTUzNmMwZGZmYzIuLmU2MWFiYzdjNzRmNzMgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3BvcnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS9wb3J0LmNcbkBAIC04MzEsNiAmIzQzOzgzMSw5IEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuIFx0XHRcdGlmICghdXNlcilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuJiM0MztcdFx0XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuIFx0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxuIFx0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4gXHRcdFx0aWYgKGVycilcbkBAIC04MzksMTAgJiM0Mzs4NDIsMTIgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4gXHR9IGVsc2Uge1xuIFx0XHRkcC1cdTAwM2V2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nO1xuIFxuLVx0XHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXHUwMDNldXNlcixcbi1cdFx0XHRcdFx0XHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIHJlc3RvcmU7XG4mIzQzO1x0XHRpZiAoIWRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKSB7XG4mIzQzO1x0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xuJiM0MztcdFx0XHRpZiAoZXJyKVxuJiM0MztcdFx0XHRcdGdvdG8gcmVzdG9yZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTE0NDUsMTAgJiM0MzsxNDUwLDEzIEBAIGludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcbiBcbiBcdC8qIFRoZSBwb3J0IG1pZ2h0IHN0aWxsIGJlIFZMQU4gZmlsdGVyaW5nIGV2ZW4gaWYgaXQmIzM5O3Mgbm8gbG9uZ2VyXG4gXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgb3Jcbi1cdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOc1xuLVx0ICogb24gdGhlIENQVSBwb3J0LlxuJiM0MztcdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcsIGFuZCBldmVyeSBwb3J0IG9mIGFcbiYjNDM7XHQgKiBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyXG4mIzQzO1x0ICogVkxBTnMgd2hldGhlciBicmlkZ2VkIG9yIG5vdC4gSW4gdHVybiB0aGlzIG1lYW5zIFZMQU5zIG9uIHRoZVxuJiM0MztcdCAqIENQVSBwb3J0LlxuIFx0ICovXG4tXHR2bGFuX2ZpbHRlcmluZyA9IGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRwKTtcbiYjNDM7XHR2bGFuX2ZpbHRlcmluZyA9IGRzYV9wb3J0X2lzX3ZsYW5fZmlsdGVyaW5nKGRwKSB8fFxuJiM0MztcdFx0XHQgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XG4gXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggMDQxZjkwNjBjOGVmMC4uZmRhNmJhNGZkZDEzZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTE5NDYsNiAmIzQzOzE5NDYsNyBAQCBzdGF0aWMgaW50IGRzYV91c2VyX2NsZWFyX3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYsIGludCB2aWQsIHZvaWQgKmFyZylcbiAgKlxuICAqIC0gSWYgc3RhbmRhbG9uZSAodGhpcyBpbmNsdWRlcyBzb2Z0d2FyZSBicmlkZ2UsIHNvZnR3YXJlIExBRyk6XG4gICogICAgIC0gaWYgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXG4mIzQzOyAqICAgICAgIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gdHJ1ZSwgT1IgaWZcbiAgKiAgICAgICAoZHMtXHUwMDNldmxhbl9maWx0ZXJpbmdfaXNfZ2xvYmFsID0gdHJ1ZSBBTkQgdGhlcmUgYXJlIGJyaWRnZXMgc3Bhbm5pbmdcbiAgKiAgICAgICB0aGlzIHN3aXRjaCBjaGlwIHdoaWNoIGhhdmUgdmxhbl9maWx0ZXJpbmc9MSlcbiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zXG5AQCAtMjcxNyw3ICYjNDM7MjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxuIFx0dXNlci1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuIFx0aWYgKHVzZXItXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxuIFx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIFx1MDAyNj0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7XG4tXHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZylcbiYjNDM7XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyB8fFxuJiM0MztcdCAgICBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcbiBcdFx0dXNlci1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0hXX1ZMQU5fQ1RBR19GSUxURVI7XG4gXG4gXHR1c2VyLVx1MDAzZWxsdHggPSB0cnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3RhbmRhbG9uZSBWTEFOIG9mZmxvYWRpbmcgZm9yIEJyb2FkY29tIEI1MyAvIEJDTV9TRjIgc3dpdGNoZXMuIFRoZSBjb3JlIERTQSBjaGFuZ2VzIGludHJvZHVjZSBhIG5ldyBmbGFnIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2hpY2ggaXMgb25seSBlbmFibGVkIGJ5IHRoZSBgYjUzYCBkcml2ZXIgZm9yIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZS4gQmVjYXVzZSBCcm9hZGNvbSBCNTMgc3dpdGNoZXMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIG5vIG90aGVyIGRyaXZlciBzZXRzIHRoaXMgZmxhZyAobGVhdmluZyBnZW5lcmFsIERTQSBiZWhhdmlvciB1bmNoYW5nZWQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDU0YWFkMzYwNTRhMzRhMDM2ODJjODU4NzY3MDlhYmZlYWU1OTJlOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwppbmRleCAwODgwMzEwYzljZTNmLi5iNTdjMGJkYWNiMjdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYwpAQCAtODk4LDEwICYjNDM7ODk4LDUyIEBAIHN0YXRpYyBib29sIGI1M192bGFuX3BvcnRfbWF5X2pvaW5fdW50YWdnZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkKIAlyZXR1cm4gZHAtJmd0O2JyaWRnZSA9PSBOVUxMOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYjUzX3ZsYW5faHdfZW50cnkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBzdHJ1Y3QgYjUzX3ZsYW4gKnZsLAomIzQzOwkJCSAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtJmd0O3ByaXY7CiYjNDM7CWJvb2wgc3RhbmRhbG9uZSA9IGZhbHNlOwomIzQzOwlzdHJ1Y3QgZHNhX3BvcnQgKmRwOwomIzQzOwl1bnNpZ25lZCBpbnQgcG9ydDsKJiM0MzsKJiM0MzsJKmh3ID0gKnZsOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZykKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlody0mZ3Q7bWVtYmVycyA9IDA7CiYjNDM7CWh3LSZndDt1bnRhZyA9IDA7CiYjNDM7CiYjNDM7CWI1M19mb3JfZWFjaF9wb3J0KGRldiwgcG9ydCkgewomIzQzOwkJaWYgKCEodmwtJmd0O21lbWJlcnMgJmFtcDsgQklUKHBvcnQpKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCWRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpOwomIzQzOwomIzQzOwkJaWYgKCFkc2FfcG9ydF9pc19jcHUoZHApKSB7CiYjNDM7CQkJaWYgKGRwLSZndDticmlkZ2UpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCXN0YW5kYWxvbmUgPSB0cnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaHctJmd0O21lbWJlcnMgfD0gQklUKHBvcnQpOwomIzQzOwkJaHctJmd0O3VudGFnIHw9IHZsLSZndDt1bnRhZyAmYW1wOyBCSVQocG9ydCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKCFzdGFuZGFsb25lKSB7CiYjNDM7CQlody0mZ3Q7bWVtYmVycyA9IDA7CiYjNDM7CQlody0mZ3Q7dW50YWcgPSAwOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBzdGFuZGFsb25lOwomIzQzO30KJiM0MzsKIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogewogCXN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgYjUzX3ZsYW4gdmwgPSB7IDAgfTsKJiM0MzsJc3RydWN0IGI1M192bGFuIGh3OwogCXN0cnVjdCBiNTNfdmxhbiAqdjsKIAlpbnQgaSwgZGVmX3ZpZDsKIAl1MTYgdmlkOwpAQCAtOTM3LDIwICYjNDM7OTc5LDIzIEBAIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQogCX0KIAliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBkZWZfdmlkLCAmYW1wO3ZsKTsKIAotCWlmIChkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKSB7Ci0JCS8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uCi0JCSAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLgotCQkgKi8KLQkJZm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCAmbHQ7IGRldi0mZ3Q7bnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7Ci0JCQl2ID0gJmFtcDtkZXYtJmd0O3ZsYW5zW3ZpZF07CiYjNDM7CS8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uCiYjNDM7CSAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLgomIzQzOwkgKi8KJiM0MzsJZm9yICh2aWQgPSBkZWZfdmlkICYjNDM7IDE7IHZpZCAmbHQ7IGRldi0mZ3Q7bnVtX3ZsYW5zOyB2aWQmIzQzOyYjNDM7KSB7CiYjNDM7CQl2ID0gJmFtcDtkZXYtJmd0O3ZsYW5zW3ZpZF07CiAKLQkJCWlmICghdi0mZ3Q7bWVtYmVycykKLQkJCQljb250aW51ZTsKJiM0MzsJCWlmICghdi0mZ3Q7bWVtYmVycykKJiM0MzsJCQljb250aW51ZTsKIAotCQkJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTsKLQkJCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTsKLQkJfQomIzQzOwkJaWYgKCFiNTNfdmxhbl9od19lbnRyeShkcywgdiwgJmFtcDtodykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2aWQsICZhbXA7aHcpOwomIzQzOwkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpOwomIzQzOwl9CiAKJiM0MzsJaWYgKGRldi0mZ3Q7dmxhbl9maWx0ZXJpbmcpIHsKIAkJYjUzX2Zvcl9lYWNoX3BvcnQoZGV2LCBpKSB7CiAJCQlpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpCiAJCQkJYjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLApAQCAtMTcyMCw2ICYjNDM7MTc2NSw3IEBAIGludCBiNTNfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAlzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtJmd0O3ByaXY7CiAJYm9vbCB1bnRhZ2dlZCA9IHZsYW4tJmd0O2ZsYWdzICZhbXA7IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7CiAJYm9vbCBwdmlkID0gdmxhbi0mZ3Q7ZmxhZ3MgJmFtcDsgQlJJREdFX1ZMQU5fSU5GT19QVklEOwomIzQzOwlzdHJ1Y3QgYjUzX3ZsYW4gaHc7CiAJc3RydWN0IGI1M192bGFuICp2bDsKIAl1MTYgb2xkX3B2aWQsIG5ld19wdmlkOwogCWludCBlcnI7CkBAIC0xNzUxLDEzICYjNDM7MTc5NywxNCBAQCBpbnQgYjUzX3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJZWxzZQogCQl2bC0mZ3Q7dW50YWcgJmFtcDs9IH5CSVQocG9ydCk7CiAKLQlpZiAoIWRldi0mZ3Q7dmxhbl9maWx0ZXJpbmcpCiYjNDM7CWlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHZsLCAmYW1wO2h3KSkKIAkJcmV0dXJuIDA7CiAKLQliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLSZndDt2aWQsIHZsKTsKJiM0MzsJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi0mZ3Q7dmlkLCAmYW1wO2h3KTsKIAliNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tJmd0O3ZpZCk7CiAKLQlpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgJmFtcDsmYW1wOyBuZXdfcHZpZCAhPSBvbGRfcHZpZCkgewomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZyAmYW1wOyZhbXA7CiYjNDM7CSAgICAhZHNhX2lzX2NwdV9wb3J0KGRzLCBwb3J0KSAmYW1wOyZhbXA7IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7CiAJCWI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLAogCQkJICAgIG5ld19wdmlkKTsKIAkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBvbGRfcHZpZCk7CkBAIC0xNzcyLDcgJiM0MzsxODE5LDkgQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogewogCXN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy0mZ3Q7cHJpdjsKIAlib29sIHVudGFnZ2VkID0gdmxhbi0mZ3Q7ZmxhZ3MgJmFtcDsgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDsKJiM0MzsJc3RydWN0IGI1M192bGFuIGh3OwogCXN0cnVjdCBiNTNfdmxhbiAqdmw7CiYjNDM7CWJvb2wgbmVlZHNfaHc7CiAJdTE2IHB2aWQ7CiAKIAlpZiAodmxhbi0mZ3Q7dmlkID09IDApCkBAIC0xNzgyLDYgJiM0MzsxODMxLDggQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogCiAJdmwgPSAmYW1wO2Rldi0mZ3Q7dmxhbnNbdmxhbi0mZ3Q7dmlkXTsKIAomIzQzOwluZWVkc19odyA9IGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgJmFtcDtodyk7CiYjNDM7CiAJdmwtJmd0O21lbWJlcnMgJmFtcDs9IH5CSVQocG9ydCk7CiAKIAlpZiAocHZpZCA9PSB2bGFuLSZndDt2aWQpCkBAIC0xNzkxLDE0ICYjNDM7MTg0MiwxOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiAJaWYgKHVudGFnZ2VkICZhbXA7JmFtcDsgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpCiAJCXZsLSZndDt1bnRhZyAmYW1wOz0gfihCSVQocG9ydCkpOwogCi0JaWYgKCFkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKQomIzQzOwlpZiAoIW5lZWRzX2h3KQogCQlyZXR1cm4gMDsKIAotCWI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tJmd0O3ZpZCwgdmwpOwomIzQzOwliNTNfdmxhbl9od19lbnRyeShkcywgdmwsICZhbXA7aHcpOwomIzQzOwliNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLSZndDt2aWQsICZhbXA7aHcpOwogCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmxhbi0mZ3Q7dmlkKTsKIAotCWI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTsKLQliNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpOwomIzQzOwlpZiAoZGV2LSZndDt2bGFuX2ZpbHRlcmluZykgewomIzQzOwkJYjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksCiYjNDM7CQkJICAgIHB2aWQpOwomIzQzOwkJYjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBwdmlkKTsKJiM0MzsJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC0yMjYxLDYgJiM0MzsyMzE2LDI4IEBAIGludCBiNTNfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAogfQogRVhQT1JUX1NZTUJPTChiNTNfbWRiX2RlbCk7CiAKJiM0MztzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQomIzQzO3sKJiM0MzsJc3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLSZndDtwcml2OwomIzQzOwlzdHJ1Y3QgYjUzX3ZsYW4gaHc7CiYjNDM7CXN0cnVjdCBiNTNfdmxhbiAqdmw7CiYjNDM7CXUxNiB2aWQ7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O3ZsYW5fZmlsdGVyaW5nKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3IgKHZpZCA9IGI1M19kZWZhdWx0X3B2aWQoZGV2KSAmIzQzOyAxOyB2aWQgJmx0OyBkZXYtJmd0O251bV92bGFuczsgdmlkJiM0MzsmIzQzOykgewomIzQzOwkJdmwgPSAmYW1wO2Rldi0mZ3Q7dmxhbnNbdmlkXTsKJiM0MzsKJiM0MzsJCWlmICghKHZsLSZndDttZW1iZXJzICZhbXA7IEJJVChwb3J0KSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQliNTNfdmxhbl9od19lbnRyeShkcywgdmwsICZhbXA7aHcpOwomIzQzOwkJYjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCAmYW1wO2h3KTsKJiM0MzsJCWI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsCiAJCWJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CkBAIC0yMzI0LDYgJiM0MzsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSwKIAliNTNfd3JpdGUxNihkZXYsIEI1M19QVkxBTl9QQUdFLCBCNTNfUFZMQU5fUE9SVF9NQVNLKHBvcnQpLCBwdmxhbik7CiAJZGV2LSZndDtwb3J0c1twb3J0XS52bGFuX2N0bF9tYXNrID0gcHZsYW47CiAKJiM0MzsJYjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmMoZHMsIHBvcnQpOwomIzQzOwogCXJldHVybiAwOwogfQogRVhQT1JUX1NZTUJPTChiNTNfYnJfam9pbik7CkBAIC0yMzc2LDYgJiM0MzsyNDU1LDggQEAgdm9pZCBiNTNfYnJfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKQogCQl2bC0mZ3Q7bWVtYmVycyB8PSBCSVQocG9ydCk7CiAJCWI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHB2aWQsIHZsKTsKIAl9CiYjNDM7CiYjNDM7CWI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTsKIH0KIEVYUE9SVF9TWU1CT0woYjUzX2JyX2xlYXZlKTsKIApAQCAtMzE3Miw2ICYjNDM7MzI1Myw4IEBAIHN0YXRpYyBpbnQgYjUzX3N3aXRjaF9pbml0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpCiAJaWYgKCFkZXYtJmd0O3ZsYW5zKQogCQlyZXR1cm4gLUVOT01FTTsKIAomIzQzOwlkZXYtJmd0O2RzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSAmYW1wOyZhbXA7ICFpczUzNjUoZGV2KTsKJiM0MzsKIAlkZXYtJmd0O3Jlc2V0X2dwaW8gPSBiNTNfc3dpdGNoX2dldF9yZXNldF9ncGlvKGRldik7CiAKIAlpZiAoUFRSX0VSUihkZXYtJmd0O3Jlc2V0X2dwaW8pID09IC1FUFJPQkVfREVGRVIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oCmluZGV4IDc1MDdkNjMyZTdjNmQuLjY3YTAxZmM1ZjgxZWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2RzYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2RzYS5oCkBAIC00MDUsNiAmIzQzOzQwNSw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoIHsKIAkvKiBLZWVwIFZMQU4gZmlsdGVyaW5nIGVuYWJsZWQgb24gcG9ydHMgbm90IG9mZmxvYWRpbmcgYW55IHVwcGVyICovCiAJdTMyCQkJbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZzoxOwogCiYjNDM7CS8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi8KJiM0MzsJdTMyCQkJbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTsKJiM0MzsKIAkvKiBQYXNzIC5wb3J0X3ZsYW5fYWRkIGFuZCAucG9ydF92bGFuX2RlbCB0byBkcml2ZXJzIGV2ZW4gZm9yIGJyaWRnZXMKIAkgKiB0aGF0IGhhdmUgdmxhbl9maWx0ZXJpbmc9MC4gQWxsIGRyaXZlcnMgc2hvdWxkIGlkZWFsbHkgc2V0IHRoaXMgKGFuZAogCSAqIHRoZW4gdGhlIG9wdGlvbiB3b3VsZCBnZXQgcmVtb3ZlZCksIGJ1dCBpdCBpcyB1bmtub3duIHdoZXRoZXIgdGhpcwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS9wb3J0LmMgYi9uZXQvZHNhL3BvcnQuYwppbmRleCAxZjU1MzZjMGRmZmMyLi5lNjFhYmM3Yzc0ZjczIDEwMDY0NAotLS0gYS9uZXQvZHNhL3BvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3BvcnQuYwpAQCAtODMxLDYgJiM0Mzs4MzEsOSBAQCBpbnQgZHNhX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9wb3J0ICpkcCwgYm9vbCB2bGFuX2ZpbHRlcmluZywKIAkJCWlmICghdXNlcikKIAkJCQljb250aW51ZTsKIAomIzQzOwkJCWlmIChkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwogCQkJZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKHVzZXIsCiAJCQkJCQkJICAgICB2bGFuX2ZpbHRlcmluZyk7CiAJCQlpZiAoZXJyKQpAQCAtODM5LDEwICYjNDM7ODQyLDEyIEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLAogCX0gZWxzZSB7CiAJCWRwLSZndDt2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nOwogCi0JCWVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC0mZ3Q7dXNlciwKLQkJCQkJCSAgICAgdmxhbl9maWx0ZXJpbmcpOwotCQlpZiAoZXJyKQotCQkJZ290byByZXN0b3JlOwomIzQzOwkJaWYgKCFkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpIHsKJiM0MzsJCQllcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtJmd0O3VzZXIsCiYjNDM7CQkJCQkJCSAgICAgdmxhbl9maWx0ZXJpbmcpOwomIzQzOwkJCWlmIChlcnIpCiYjNDM7CQkJCWdvdG8gcmVzdG9yZTsKJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTE0NDUsMTAgJiM0MzsxNDUwLDEzIEBAIGludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCwKIAogCS8qIFRoZSBwb3J0IG1pZ2h0IHN0aWxsIGJlIFZMQU4gZmlsdGVyaW5nIGV2ZW4gaWYgaXQmIzM5O3Mgbm8gbG9uZ2VyCiAJICogdW5kZXIgYSBicmlkZ2UsIGVpdGhlciBkdWUgdG8gZHMtJmd0O3ZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCBvcgotCSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMKLQkgKiBvbiB0aGUgQ1BVIHBvcnQuCiYjNDM7CSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLCBhbmQgZXZlcnkgcG9ydCBvZiBhCiYjNDM7CSAqIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyCiYjNDM7CSAqIFZMQU5zIHdoZXRoZXIgYnJpZGdlZCBvciBub3QuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOcyBvbiB0aGUKJiM0MzsJICogQ1BVIHBvcnQuCiAJICovCi0Jdmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCk7CiYjNDM7CXZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8CiYjNDM7CQkJIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDsKIAlpZiAodmxhbl9maWx0ZXJpbmcpIHsKIAkJZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpOwogCQlpZiAoZXJyKSB7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDA0MWY5MDYwYzhlZjAuLmZkYTZiYTRmZGQxM2QgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdXNlci5jCkBAIC0xOTQ2LDYgJiM0MzsxOTQ2LDcgQEAgc3RhdGljIGludCBkc2FfdXNlcl9jbGVhcl92bGFuKHN0cnVjdCBuZXRfZGV2aWNlICp2ZGV2LCBpbnQgdmlkLCB2b2lkICphcmcpCiAgKgogICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKToKICAqICAgICAtIGlmIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nID0gdHJ1ZSwgT1IgaWYKJiM0MzsgKiAgICAgICBkcy0mZ3Q7bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZgogICogICAgICAgKGRzLSZndDt2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgPSB0cnVlIEFORCB0aGVyZSBhcmUgYnJpZGdlcyBzcGFubmluZwogICogICAgICAgdGhpcyBzd2l0Y2ggY2hpcCB3aGljaCBoYXZlIHZsYW5fZmlsdGVyaW5nPTEpCiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zCkBAIC0yNzE3LDcgJiM0MzsyNzE4LDggQEAgdm9pZCBkc2FfdXNlcl9zZXR1cF90YWdnZXIoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXIpCiAJdXNlci0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19UQzsKIAlpZiAodXNlci0mZ3Q7bmVlZGVkX3RhaWxyb29tKQogCQl1c2VyLSZndDtmZWF0dXJlcyAmYW1wOz0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7Ci0JaWYgKGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nKQomIzQzOwlpZiAoZHMtJmd0O25lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHwKJiM0MzsJICAgIGRzLSZndDtuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkKIAkJdXNlci0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSOwogCiAJdXNlci0mZ3Q7bGx0eCA9IHRydWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzQKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogRFNBIFN1YnN5c3RlbSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyB0d2Vha2VkLiBJIHNlZSBjaGFuZ2VzIGFjcm9zcyBhIGZldyBjcml0aWNhbCBmaWxlczogYGRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jYCwgYGluY2x1ZGUvbmV0L2RzYS5oYCwgYG5ldC9kc2EvcG9ydC5jYCwgYW5kIGBuZXQvZHNhL3VzZXIuY2AuIFRoaXMgaXMgZm9jdXNlZCBvbiB0aGUgRFNBIHN1YnN5c3RlbSwgc28gbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIHRoZSBhdHRhY2sgc3VyZmFjZS4KCk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgZXhwbG9pdCB2ZWN0b3JzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgYXJlIERTQSBkcml2ZXJzIGFuZCB0aGUgRFNBIGNvcmUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBDYW4gd2UgZnV6eiB0aGVzZSBjb21wb25lbnRzIGVmZmVjdGl2ZWx5PyBJJiMzOTttIHRoaW5raW5nIGFib3V0IERTQSBsb29wIG1vY2sgZHJpdmVycywgbW9jayBzd2l0Y2hlcywgYW5kIGlmIHRoZSBEU0EgY29yZSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBicmlkZ2UsIFZMQU4sIG9yIGV2ZW4gbW9jayBkZXZpY2VzLgoKTm93LCBhIGtleSBxdWVzdGlvbiBjb21lcyB0byBtaW5kOiBDYW4gd2UgZW11bGF0ZSBvciBjcmVhdGUgYSBtb2NrIG9mIERTQSBzd2l0Y2hlcz8gT3IgZXZlbiBqdXN0IHRoZSBjb3JlIERTQSBsb2dpYyBpdHNlbGY/IElmIHdlIGNhbiwgdGhhdCYjMzk7cyBhIG1hc3NpdmUgd2luIGZvciB0ZXN0aW5nIGFuZCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBmb3IgZXhpc3RpbmcgRFNBIGRyaXZlcnMuIElmIHRoZXJlIGFyZSBhbnksIGxldCYjMzk7cyBleHBsb3JlIHRoZW0gb3IgaHVudCBmb3IgYW55IG1vY2sgZHJpdmVycy4KCkZpbmFsbHksIEkmIzM5O20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdXN1YWwgYXBwcm9hY2gg4oCTIGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIG9yIHJ1bm5pbmcgYSBjb2Rlc2VhcmNoIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHNhX2xvb3AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjAtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6MTYxOkl0IGlzIGRlc2lyYWJsZSB0aGF0IGFsbCB0YWdnaW5nIHByb3RvY29scyBhcmUgdGVzdGFibGUgd2l0aCB0aGUgYGBkc2FfbG9vcGBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyMTcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIG9uIGI1MyBDb25uZWN0aXZpdHkqKgoKUmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzICYjMzQ7YjUzJiMzNDsgdGhpbmcgYmV0dGVyLiBXaGF0IGV4YWN0bHkgKmlzKiBiNTMgaW4gdGhpcyBjb250ZXh0PyBMZXQmIzM5O3MgYXNzdW1lIGl0JiMzOTtzIHNvbWUga2luZCBvZiBoYXJkd2FyZSBvciBzb2Z0d2FyZSBjb21wb25lbnQg4oCTIHBlcmhhcHMgYSBzd2l0Y2gsIGEgc3BlY2lmaWMgaW50ZXJmYWNlLCBvciBhIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQuIElzIGl0IGEgbW9kdWxlPyBJcyBpdCBidWlsdC1pbj8gSG93IGlzIGl0ICYjMzQ7YXR0YWNoZWQmIzM0OyBvciAmIzM0O3JlZ2lzdGVyZWQmIzM0OyB3aXRoIHRoZSBzeXN0ZW0/CgpNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBgZ3JlcGAgLSBpdCYjMzk7cyB0aGUgcXVpY2sgYW5kIGRpcnR5IHRvb2wgZm9yIGxvY2F0aW5nIHN0cmluZ3Mgd2l0aGluIHRleHQgZmlsZXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgcG90ZW50aWFsIGNsdWVzIGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzb3VyY2UgZm9yICYjMzQ7YjUzIGRyaXZlcnMuJiMzNDsgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgbG93LWhhbmdpbmcgZnJ1aXQ6IHRoZSBvYnZpb3VzIGRyaXZlciBmaWxlcywgYW55IGluaXRpYWxpemF0aW9uIGNvZGUsIG9yIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEFmdGVyIHRoYXQgSSYjMzk7bGwgbG9vayBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byAmIzM0O0tjb25maWcuJiMzNDsgS2NvbmZpZyBmaWxlcyBhcmUgZXNzZW50aWFsOyB0aGV5IHRlbGwgbWUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgYW5kIGhvdyB0aGlzIGI1MyBjb21wb25lbnQgbWlnaHQgYmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgYXQgYnVpbGQgdGltZS4gSSBiZXQgaXQmIzM5O3MgY29uZmlndXJlZCBpbiB0aGVyZSwgb3IgaXRzIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBpdC4gV2l0aCB0aG9zZSB0d28gYXBwcm9hY2hlcyBJIHNob3VsZCBiZSBhYmxlIHRvIGF0IGxlYXN0IHVuZGVyc3RhbmQgaXQgYSBiaXQgYmV0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CNTMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjQ5PUNPTkZJR19WSVJUSU9fTkVUPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjI1MDpDT05GSUdfQjUzX1NQSV9EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUxOkNPTkZJR19CNTNfTURJT19EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUyOkNPTkZJR19CNTNfTU1BUF9EUklWRVI9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMjUzLUNPTkZJR19ORVRfRFNBX0JDTV9TRjI9bVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL25ldC9kc2EvYjUzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0I1MylcdFx0JiM0Mzs9IGI1M19jb21tb24ub1xuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZS0zLVxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19CNTNfU1BJX0RSSVZFUilcdCYjNDM7PSBiNTNfc3BpLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfQjUzX01ESU9fRFJJVkVSKVx0JiM0Mzs9IGI1M19tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQjUzX01NQVBfRFJJVkVSKVx0JiM0Mzs9IGI1M19tbWFwLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQjUzX1NSQUJfRFJJVkVSKVx0JiM0Mzs9IGI1M19zcmFiLm9cbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfQjUzX1NFUkRFUylcdCYjNDM7PSBiNTNfc2VyZGVzLm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTU9dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTYtXHRcdFx0XHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE3OiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE4LWludCBiNTNfc2VyZGVzX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz0zODI9c3RhdGljIGlycXJldHVybl90IGI1M19zcmFiX3BvcnRfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtMzkzLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjM5NDojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy0zOTUtc3RhdGljIHU4IGI1M19zcmFiX3NlcmRlc19tYXBfbGFuZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NDQ2PXN0YXRpYyB2b2lkIGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ1NDojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTUtXHRcdC8qIElmIHAtXHUwMDNlbW9kZSBpbmRpY2F0ZXMgU0dNSUkgbW9kZSwgdGhhdCBlc3NlbnRpYWxseSBtZWFucyB3ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz00Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBiNTNfaW9fb3BzIGI1M19zcmFiX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkyLVx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTQtXHQucGh5bGlua19tYWNfc2VsZWN0X3BjcyA9IGI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3Bjcyxcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNzM0PXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZHNhX3N3aXRjaGVzX2FwcGx5X3dvcmthcm91bmRzW10gPSB7XG4tLVxubmV0L2RzYS9wb3J0LmMtMTc0MC0jZW5kaWZcbm5ldC9kc2EvcG9ydC5jOjE3NDE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0I1Mylcbm5ldC9kc2EvcG9ydC5jLTE3NDItXHRcJiMzNDticmNtLGJjbTUzMjVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgS2NvbmZpZyBmb3IgQjUzIGFuZCBEU0EgQ29yZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGI1MyBhbmQgdGhlIERTQSBjb3JlIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSB0aGUgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnYCB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgYjUzIGRyaXZlciBvcHRpb25zLiBBZnRlciB0aGF0LCBJJiMzOTtsbCBtb3ZlIHVwc3RyZWFtIHRvIGBuZXQvZHNhL0tjb25maWdgIHRvIHNlZSBob3cgdGhlIERTQSBjb3JlIGl0c2VsZiBpcyBzZXQgdXAgYW5kIGludGVydHdpbmVkIHdpdGggdGhlIGI1MyBjb25maWcuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgYWxsIGNvbmZpZ3VyYXRpb24gYXNwZWN0cywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgYmV0d2VlbiB0aGUgQjUzIGFuZCB0aGUgY29yZSBEU0EgZHJpdmVycy4gVGltZSB0byBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCNTMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzoyOm1lbnVjb25maWcgQjUzXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEJDTTUzeHggbWFuYWdlZCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzoxNTpjb25maWcgQjUzX1NQSV9EUklWRVJcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O0I1MyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjAtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjE6Y29uZmlnIEI1M19NRElPX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7QjUzIE1ESU8gY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6Mjc6Y29uZmlnIEI1M19NTUFQX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7QjUzIE1NQVAgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MzU6Y29uZmlnIEI1M19TUkFCX0RSSVZFUlxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM2LVx0dHJpc3RhdGUgXCYjMzQ7QjUzIFNSQUIgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctNDMtXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6NDQ6Y29uZmlnIEI1M19TRVJERVNcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy00NS1cdHRyaXN0YXRlIFwmIzM0O0I1MyBTZXJEZXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NTczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnYDoKCioqQW5hbHl6aW5nIHRoZSBiNTMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBCcm9hZGNvbSBCNTMgc3dpdGNoIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgaGFyZHdhcmUgdmFyaWF0aW9ucyBvZiB0aGVzZSBzd2l0Y2hlcy4gSW1tZWRpYXRlbHksIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0JiMzOTtzIHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheSwgYW5kIGhvdyBhcmUgdGhlIHZhcmlvdXMgc3ViLWZlYXR1cmVzIG9yZ2FuaXplZD8gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBkZWZpbml0aW9ucyBmb3IgdGhpbmdzIGxpa2UgZGlmZmVyZW50IEI1MyBjaGlwIHJldmlzaW9ucywgUEhZIHN1cHBvcnQsIHZhcmlvdXMgbWFuYWdlbWVudCBpbnRlcmZhY2VzIChsaWtlIE1ESU8pLCBhbmQgbWF5YmUgZXZlbiBvcHRpb25zIGZvciB0aGluZ3MgbGlrZSBWTEFOIGNvbmZpZ3VyYXRpb24gb3IgUW9TLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElmIGEgZmVhdHVyZSBpcyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbiwgSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgd2hhdCBjYXVzZXMgdGhhdCBzZWxlY3Rpb24uIFRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciB0aGlzIGRyaXZlciBzbyBJIGNhbiBhbnRpY2lwYXRlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGFyZWFzIHdoZXJlIGN1c3RvbSBjb25maWd1cmF0aW9uIG1pZ2h0IGJlIG5lY2Vzc2FyeSBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0gaW50ZWdyYXRpb24gb3IgbmV3IGJvYXJkIHN1cHBvcnQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYW55IGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBtaWdodCBuZWVkIG92ZXJyaWRpbmcgZm9yIG15IHNwZWNpZmljIHVzZSBjYXNlLCBhbmQgc3RhcnQgdG8gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYWxsIHRoZSBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdG1lbnVjb25maWcgQjUzXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBCQ001M3h4IG1hbmFnZWQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcbiAgIDY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXG4gICA3Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcbiAgIDg6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcbiAgIDk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBCcm9hZGNvbSBtYW5hZ2VkIHN3aXRjaCBjaGlwcy4gSXQgc3VwcG9ydHNcbiAgMTI6XHRcdCAgQkNNNTMyNUUsIEJDTTUzNjUsIEJDTTUzOXgsIEJDTTUzMTE1IGFuZCBCQ001MzEyNSBhcyB3ZWxsIGFzIEJDTTYzWFhcbiAgMTM6XHRcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cbiAgMTQ6XHRcbiAgMTU6XHRjb25maWcgQjUzX1NQSV9EUklWRVJcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbiAgMTc6XHRcdGRlcGVuZHMgb24gQjUzIFx1MDAyNlx1MDAyNiBTUElcbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxuICAyMDpcdFxuICAyMTpcdGNvbmZpZyBCNTNfTURJT19EUklWRVJcbiAgMjI6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBNRElPIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDIzOlx0XHRkZXBlbmRzIG9uIEI1M1xuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBNRElPLlxuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCNTNfTU1BUF9EUklWRVJcbiAgMjg6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBNTUFQIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDI5Olx0XHRkZXBlbmRzIG9uIEI1MyBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNXG4gIDMwOlx0XHRkZWZhdWx0IEJDTTYzWFggfHwgQk1JUFNfR0VORVJJQ1xuICAzMTpcdFx0aGVscFxuICAzMjpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIG1lbW9yeS1tYXBwZWQgc3dpdGNoZXMgbGlrZSB0aGUgQkNNNjNYWFxuICAzMzpcdFx0ICBpbnRlZ3JhdGVkIHN3aXRjaGVzLlxuICAzNDpcdFxuICAzNTpcdGNvbmZpZyBCNTNfU1JBQl9EUklWRVJcbiAgMzY6XHRcdHRyaXN0YXRlIFwmIzM0O0I1MyBTUkFCIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDM3Olx0XHRkZXBlbmRzIG9uIEI1MyBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNXG4gIDM4Olx0XHRkZXBlbmRzIG9uIEI1M19TRVJERVMgfHwgIUI1M19TRVJERVNcbiAgMzk6XHRcdGRlZmF1bHQgQVJDSF9CQ01fSVBST0NcbiAgNDA6XHRcdGhlbHBcbiAgNDE6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIFN3aXRjaCBSZWdpc3RlciBBY2Nlc3NcbiAgNDI6XHRcdCAgQnJpZGdlIFJlZ2lzdGVycyAoU1JBQikgbGlrZSBpdCBpcyBmb3VuZCBvbiB0aGUgQkNNNTMwMTBcbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgQjUzX1NFUkRFU1xuICA0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7QjUzIFNlckRlcyBzdXBwb3J0XCYjMzQ7XG4gIDQ2Olx0XHRkZXBlbmRzIG9uIEI1M1xuICA0NzpcdFx0ZGVmYXVsdCBBUkNIX0JDTV9OU1BcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBTZXJEZXMgb24gZS5nOiBOb3J0aHN0YXIgUGx1cyBTb0NzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjY1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcgRGl2ZSBmb3IgRFNBIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiBEU0EgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ2AgZmlsZXMuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgc29tZSBvdmVybGFwIGFuZCBwb3RlbnRpYWxseSBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljIEkgbmVlZCB0byB1bmRlcnN0YW5kLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgY29yZSBEU0EgZnVuY3Rpb25hbGl0eSBhbmQgYW55IHNwZWNpZmljIGRyaXZlciBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSBJJiMzOTtsbCBjaGVjazoKCiogICBXaGF0IGFyZSB0aGUgY29yZSBEU0Egb3B0aW9ucyBleHBvc2VkLCBhbmQgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQ/IEFyZSB0aGVyZSBhbnkgdG9wLWxldmVsIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CiogICBIb3cgYXJlIHZhcmlvdXMgRFNBIGZlYXR1cmVzIChlLmcuLCBWTEFOIGZpbHRlcmluZywgcG9ydCBjb25maWd1cmF0aW9uKSBlbmFibGVkIGFuZCBkaXNhYmxlZD8gQXJlIHRoZXkgZ3JhbnVsYXIsIG9yIG1vcmUgbW9ub2xpdGhpYyBvcHRpb25zPwoqICAgV2hhdCBkcml2ZXJzIGFyZSBleHBsaWNpdGx5IHN1cHBvcnRlZCB3aXRoaW4gZWFjaCBLY29uZmlnIGZpbGUsIGFuZCBob3cgaXMgdGhhdCBzdXBwb3J0IGRlZmluZWQ/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSBvciB0aGUgdGFyZ2V0IGhhcmR3YXJlPwoqICAgQXJlIHRoZXJlIGFueSAmIzM0O0VYUEVSSU1FTlRBTCYjMzQ7IG9yICYjMzQ7REVQUkVDQVRFRCYjMzQ7IG9wdGlvbnM/IFRoZXNlIGNhbiBmbGFnIGFyZWFzIGZvciBlaXRoZXIgZGVlcGVyIGludmVzdGlnYXRpb24gb3IgcG90ZW50aWFsbHkgc3VnZ2VzdCB0aGV5IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIGNvbnNpZGVyYXRpb24uCiogICBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIGxpa2UgbWFjc2VjIG9yIGJvbmRpbmcsIHRoYXQgSSBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQ/CgpGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVmZm9ydHMgYW5kIHdoaWNoIGZpbGVzIGhvbGQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBtYXR0ZXJzIG1vc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2RzYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0XG4gICAzOlx0bWVudWNvbmZpZyBORVRfRFNBXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXCYjMzQ7XG4gICA1Olx0XHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuICAgNjpcdFx0ZGVwZW5kcyBvbiBIU1IgfHwgSFNSPW5cbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVUREVWSUNFU1xuICAgODpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAgOTpcdFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbiAgMTA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDExOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMTI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAgMTM6XHRcdGhlbHBcbiAgMTQ6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBoYXJkd2FyZSBzd2l0Y2hlcyBzdXBwb3J0ZWRcbiAgMTU6XHRcdCAgYnkgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX0RTQVxuICAxODpcdFxuICAxOTpcdCMgRHJpdmVycyBtdXN0IHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdGFnZ2luZyBmb3JtYXQocylcbiAgMjA6XHRcbiAgMjE6XHRjb25maWcgTkVUX0RTQV9UQUdfTk9ORVxuICAyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7Tm8tb3AgdGFnIGRyaXZlclwmIzM0O1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBzd2l0Y2hlcyB3aGljaCBkb24mIzM5O3QgdGFnXG4gIDI1Olx0XHQgIGZyYW1lcyBvdmVyIHRoZSBDUFUgcG9ydC5cbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXG4gIDI4Olx0XHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2hcJiMzNDtcbiAgMjk6XHRcdGhlbHBcbiAgMzA6XHRcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yXG4gIDMxOlx0XHQgIHRoZSBBdGhlcm9zIEFSOTMzMSBTb0Mgd2l0aCBidWlsdC1pbiBzd2l0Y2guXG4gIDMyOlx0XG4gIDMzOlx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXG4gIDM0Olx0XHR0cmlzdGF0ZVxuICAzNTpcdFx0ZGVmYXVsdCBuXG4gIDM2Olx0XG4gIDM3Olx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbiAgMzk6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxuICA0MDpcdFx0aGVscFxuICA0MTpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxuICA0MjpcdFx0ICBCcm9hZGNvbSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlIGFkZHJlc3MuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXG4gIDQ1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4gIDQ2Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cbiAgNDc6XHRcdGhlbHBcbiAgNDg6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRhZ2dpbmcgZnJhbWVzIGZvciB0aGVcbiAgNDk6XHRcdCAgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgd2hpY2ggcGxhY2UgdGhlIHRhZyBhZnRlciB0aGUgTUFDIHNvdXJjZVxuICA1MDpcdFx0ICBhZGRyZXNzLlxuICA1MTpcdFx0ICBUaGlzIHRhZyBpcyB1c2VkIGluIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHdoaWNoIHdvcmsgd2l0aG91dCB0aGVcbiAgNTI6XHRcdCAgb3JpZ2luYWwgRkNTIGFuZCBsZW5ndGggYmVmb3JlIHRoZSB0YWcgaW5zZXJ0aW9uLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcbiAgNTU6XHRcdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbiAgNTY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxuICA1NzpcdFx0aGVscFxuICA1ODpcdFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxuICA1OTpcdFx0ICBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlXG4gIDYwOlx0XHQgIGFkZHJlc3MuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODYxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEU0EgU3dpdGNoIFZMQU4gT2ZmbG9hZCBDYXBhYmlsaXRpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzIGZvciBEU0Egc3dpdGNoZXMgYW5kIGRldGVybWluZSBpZiBgbmV0L2RzYWAgb3IgYGI1M2AgY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gUUVNVS9zeXprYWxsZXIuIEZpcnN0LCBsZXQgbWUgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHBhdGNoJiMzOTtzIG1vZGlmaWNhdGlvbnMuIEl0IHNlZW1zIHdlIGhhdmUgY2hhbmdlcyB0b3VjaGluZyBzZXZlcmFsIGZpbGVzOgoKMS4gIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2Ag4oCTIGEgYnVuY2ggb2YgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gVkxBTiBjb25maWd1cmF0aW9uIGFuZCBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgYGI1M2AgZHJpdmVyOiBgYjUzX3ZsYW5faHdfZW50cnlgLCBgYjUzX2NvbmZpZ3VyZV92bGFuYCwgYGI1M192bGFuX2FkZGAsIGBiNTNfdmxhbl9kZWxgLCBgYjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmNgLCBgYjUzX2JyX2pvaW5gLCBgYjUzX2JyX2xlYXZlYCwgYW5kIGBiNTNfc3dpdGNoX2luaXRgLgoyLiAgYGluY2x1ZGUvbmV0L2RzYS5oYCDigJMgYSBuZXcgZmllbGQsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDoxYCwgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGBzdHJ1Y3QgZHNhX3N3aXRjaGAuIFRoaXMgaXMgYSBrZXkgZmxhZy4KMy4gIGBuZXQvZHNhL3BvcnQuY2Ag4oCTIFRoaXMgaW50cm9kdWNlcyBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gYGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKClgIGFuZCBgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoKWAuIElmIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgc2V0LCBWTEFOIGZpbHRlcmluZyBpcyBieXBhc3NlZCBmb3Igc3RhbmRhbG9uZSB1c2VyIHBvcnRzLCBhbmQgdGhlcmUmIzM5O3MgYSBjb3JyZXNwb25kaW5nIGNoZWNrIGluIHRoZSBjb25kdWl0IGNoYW5nZSBmdW5jdGlvbi4KNC4gIGBuZXQvZHNhL3VzZXIuY2Ag4oCTIGBkc2FfdXNlcl9zZXR1cF90YWdnZXIoKWAgbm93IHNldHMgYHVzZXItJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUmAgaWYgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpcyB0cnVlLiBUaGlzIHN1Z2dlc3RzIGhhcmR3YXJlIFZMQU4gZmlsdGVyaW5nIGNhcGFiaWxpdGllcy4KCk5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlcy4gQXJlIGFueSBvZiB0aGUgdmlydHVhbCBvciBlbXVsYXRlZCBzd2l0Y2hlcyBhY3R1YWxseSAqdXNpbmcqIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGA/IFRoZSByZWFsIHZhbHVlIG9mIHRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoYXQuIFRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjb2RlIHNlYXJjaC4gVGltZSB0byBncmVwIHRoZSBlbnRpcmUgY29kZWJhc2UgZm9yIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgYW5kIHNlZSB3aGVyZSB0aGlzIGZsYWcgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxNzM9c3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjU1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzI1NjpcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzI1Ny1cbi0tXG5pbmNsdWRlL25ldC9kc2EuaD0zODU9c3RydWN0IGRzYV9zd2l0Y2gge1xuLS1cbmluY2x1ZGUvbmV0L2RzYS5oLTQwOC1cdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbmluY2x1ZGUvbmV0L2RzYS5oOjQwOTpcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjE7XG5pbmNsdWRlL25ldC9kc2EuaC00MTAtXG4tLVxubmV0L2RzYS9wb3J0LmM9NzkxPWludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuLS1cbm5ldC9kc2EvcG9ydC5jLTgzMy1cbm5ldC9kc2EvcG9ydC5jOjgzNDpcdFx0XHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG5uZXQvZHNhL3BvcnQuYy04MzUtXHRcdFx0XHRjb250aW51ZTtcbi0tXG5uZXQvZHNhL3BvcnQuYy04NDQtXG5uZXQvZHNhL3BvcnQuYzo4NDU6XHRcdGlmICghZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpIHtcbm5ldC9kc2EvcG9ydC5jLTg0Ni1cdFx0XHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXHUwMDNldXNlcixcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNDMyPWludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNDUzLVx0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxubmV0L2RzYS9wb3J0LmM6MTQ1NDpcdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkIHN3aXRjaCBrZWVwcyBpdHMgODAyMXEgdXBwZXJcbm5ldC9kc2EvcG9ydC5jLTE0NTUtXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXG4tLVxubmV0L2RzYS9wb3J0LmMtMTQ1OC1cdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XG5uZXQvZHNhL3BvcnQuYzoxNDU5Olx0XHRcdCBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZDtcbm5ldC9kc2EvcG9ydC5jLTE0NjAtXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbi0tXG5uZXQvZHNhL3VzZXIuYz0xOTI5PXN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxuLS1cbm5ldC9kc2EvdXNlci5jLTE5NDgtICogICAgIC0gaWYgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXG5uZXQvZHNhL3VzZXIuYzoxOTQ5OiAqICAgICAgIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gdHJ1ZSwgT1IgaWZcbm5ldC9kc2EvdXNlci5jLTE5NTAtICogICAgICAgKGRzLVx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXG4tLVxubmV0L2RzYS91c2VyLmM9MjY5OD12b2lkIGRzYV91c2VyX3NldHVwX3RhZ2dlcihzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcilcbi0tXG5uZXQvZHNhL3VzZXIuYy0yNzIxLVx0aWYgKGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHxcbm5ldC9kc2EvdXNlci5jOjI3MjI6XHQgICAgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG5uZXQvZHNhL3VzZXIuYy0yNzIzLVx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfSFdfVkxBTl9DVEFHX0ZJTFRFUjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIEI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIHRoZSBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGZsYWcgaXMgKm9ubHkqIHNldCB3aXRoaW4gYGI1M19zd2l0Y2hfaW5pdGAsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgQjUzIGhhcmR3YXJlIGlzIGZ1bmRhbWVudGFsbHksIGFuZCBob3cgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aCBpdCwgaG93IGl0JiMzOTtzIGRpc2NvdmVyZWQuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwcm9iaW5nIHByb2Nlc3MgZm9yIHRoZXNlIEI1MyBzd2l0Y2ggZHJpdmVycy4gSSYjMzk7bGwgbmVlZCB0byBkaXNzZWN0IHRoZSByZWdpc3RyYXRpb24gYW5kIHByb2JlIHNlcXVlbmNlcyB0byBzZWUgaG93IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhbmQgc2V0cyB1cCB0aGVzZSBzd2l0Y2hlcy4KClRoZW4sIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9ucyB0aGVtc2VsdmVzOiBgYjUzX3NwaS5jYCwgYGI1M19tZGlvLmNgLCBgYjUzX21tYXAuY2AsIGFuZCBgYjUzX3NyYWIuY2AuIFRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgYW5kIEkgbmVlZCB0byBsb29rIGZvciBob3cgdGhleSBkZWFsIHdpdGggdGhlIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZXMsIGFuZCBpZGVudGlmeSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGF0IFZMQU4gb2ZmbG9hZCBmbGFnIG1pZ2h0IGJlY29tZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0zOTE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBiNTNfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM5OS19O1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjQwMDptZGlvX21vZHVsZV9kcml2ZXIoYjUzX21kaW9fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy00MDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQ5Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfbW1hcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwNi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo1MDc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfbW1hcF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwOC1NT0RVTEVfQVVUSE9SKFwmIzM0O0pvbmFzIEdvcnNraSBcdTAwM2Nqb2dvQG9wZW53cnQub3JnXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYz0zNjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGI1M19zcGlfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTM3MS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjM3Mjptb2R1bGVfc3BpX2RyaXZlcihiNTNfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTY4Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfc3JhYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY5Mi1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2OTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfc3JhYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY5NC1NT0RVTEVfQVVUSE9SKFwmIzM0O0hhdWtlIE1laHJ0ZW5zIFx1MDAzY2hhdWtlQGhhdWtlLW0uZGVcdTAwM2VcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc0MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgSW1wYWN0IG9mIGI1MyBhbmQgRFNBIENvcmUgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGBiNTNgIGRpcmVjdG9yeSBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyczogYGI1M19tZGlvX2RyaXZlcmAsIGBiNTNfbW1hcF9kcml2ZXJgLCBgYjUzX3NwaV9kcml2ZXJgLCBhbmQgYGI1M19zcmFiX2RyaXZlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSBCcm9hZGNvbSBCNTMgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB1c2VkIGluIHRoZWlyIFNvQ3MgYW5kIHJvdXRlcnMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFllcywgY29uZmlybWVkLiBCQ001MzI1RSwgNTM2NSwgNTM5eCwgNTMxMTUsIDUzMTI1LCBhbmQgNjNYWCBhcmUgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIEJyb2FkY29tLgoKVGhlIGtleSBxdWVzdGlvbiBpcywgY2FuIHRoZXNlIGJlIHByb2JlZC9pbnN0YW50aWF0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IG5lZWRpbmcgYWN0dWFsIGhhcmR3YXJlPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IEkgY2FuJiMzOTt0IHRoaW5rIG9mIGFueSB3YXkgdGhlIE1ESU8vU1BJL3BsYXRmb3JtIGRldmljZXMgZm9yIGBiNTNgIHdvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSB0aG9zZSBtb2NrcyB1bmxlc3MgdGhlIGRyaXZlcnMgYXJlIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UgY2hpcHMhCgpTbywgSSYjMzk7bSBub3cgZm9jdXNpbmcgb24gd2hldGhlciBjaGFuZ2VzIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AgcmVsYXRlZCB0byBgYjUzYCYjMzk7cyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGhhdmUgYW55IHdpZGVyIGltcGxpY2F0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLgoKSSYjMzk7dmUgZm91bmQgdGhlIG9jY3VycmVuY2VzIG9mIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaW4gdGhlIGNvZGUsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byB0cnVlIGZvciBgYjUzYCBjaGlwcyB3aGljaCBhcmUgQkNNNTMyNUUgYW5kIEJDTTUzNjUsIGFuZCBmYWxzZSBmb3Igb3RoZXIgRFNBIHN3aXRjaGVzIChsaWtlIGBkc2FfbG9vcGApLiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCwgSSYjMzk7bSB0cmFjaW5nIGhvdyB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB2YXJpYWJsZSBhZmZlY3RzIHRoZSBEU0EgY29kZToKCi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBJZiB0aGUgdmFsdWUgaXMgMCAoZmFsc2UpLCB0aGUgY29kZSBiZWhhdmVzIGFzIGJlZm9yZS4KLSAgIEluIGBuZXQvZHNhL3BvcnQuY2A6IFNpbWlsYXIgZm9yIHRoZSB2bGFuIGZpbHRlcmluZyBjb25kaXRpb24sIG5vIGNoYW5nZSBmb3IgZmFsc2UuCi0gICBJbiBgbmV0L2RzYS91c2VyLmNgOiBBZ2Fpbiwgd2hlbiBpdCBpcyBmYWxzZSwgdGhlcmUgaXMgbm8gY2hhbmdlLgoKU28sIGluIGVzc2VuY2UsIHRoZSBEU0EgY29yZSBsb2dpYyBiZWhhdmVzIGlkZW50aWNhbGx5IGZvciBhbnkgRFNBIHN3aXRjaCBkcml2ZXIgb3RoZXIgdGhhbiBgYjUzYCBpdHNlbGYuIFRoaXMgbWVhbnMgdGhhdCwgZm9yIG90aGVyIERTQSBzd2l0Y2hlcywgdGhlIGNoYW5nZXMgaW4gdGhlIERTQSBjb2RlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBidWdzIG9yIG5ldyBleGVjdXRpb24gcGF0aHMuCgpOb3csIGZvciBgYjUzYCwgY2FuIGl0IGJlIHByb2JlZCBvciBub3Q/IENhbiBJIGV2ZW4gcnVuIHRoZSBkcml2ZXI/IEkgbmVlZCB0byBjaGVjayB0aGUgaW5zdHJ1Y3Rpb25zIGFnYWluOiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIHRoZSBwYXRjaCBjb25jZXJucyB1bnJlYWNoYWJsZSBjb2RlLCBvciB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgZ29vZCBndWlkZSwgYW5kIHRoaXMgd291bGQgbWVhbiB0aGF0IEkgd291bGQgbmVlZCByZWFsIGhhcmR3YXJlIHRvIHRlc3QgdGhlc2UgZHJpdmVycy4KClNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBiNTNgIGlzIHJlZ2lzdGVyZWQsIGlmIGFueSBtb2NrIGJ1cyBjYW4gYmUgdXNlZC4gSSB3aWxsIGNoZWNrIGBiNTNfbWRpby5jYCwgYGI1M19tbWFwLmNgLCBgYjUzX3NwaS5jYCwgYGI1M19zcmFiLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRoaXMgY291bGQgYmUgaW5zdGFudGlhdGVkLCBvciBpZiBpdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qXG4gICAyOlx0ICogQjUzIHJlZ2lzdGVyIGFjY2VzcyB0aHJvdWdoIE1JSSByZWdpc3RlcnNcbiAgIDM6XHQgKlxuICAgNDpcdCAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIEpvbmFzIEdvcnNraSBcdTAwM2Nqb2dvQG9wZW53cnQub3JnXHUwMDNlXG4gICA1Olx0ICpcbiAgIDY6XHQgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAgIDc6XHQgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gICA4Olx0ICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAgIDk6XHQgKlxuICAxMDpcdCAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcJiMzNDtBUyBJU1wmIzM0OyBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAgMTE6XHQgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gIDEyOlx0ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAgMTM6XHQgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gIDE0Olx0ICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gIDE1Olx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAgMTY6XHQgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICAxNzpcdCAqL1xuICAxODpcdFxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbiAgMjE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAyMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDI0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvYnJjbXBoeS5oXHUwMDNlXG4gIDI1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiAgMjY6XHQjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAgMjc6XHRcbiAgMjg6XHQjaW5jbHVkZSBcJiMzNDtiNTNfcHJpdi5oXCYjMzQ7XG4gIDI5Olx0XG4gIDMwOlx0LyogTUlJIHJlZ2lzdGVycyAqL1xuICAzMTpcdCNkZWZpbmUgUkVHX01JSV9QQUdFICAgIDB4MTAgICAgLyogTUlJIFBhZ2UgcmVnaXN0ZXIgKi9cbiAgMzI6XHQjZGVmaW5lIFJFR19NSUlfQUREUiAgICAweDExICAgIC8qIE1JSSBBZGRyZXNzIHJlZ2lzdGVyICovXG4gIDMzOlx0I2RlZmluZSBSRUdfTUlJX0RBVEEwICAgMHgxOCAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAwICovXG4gIDM0Olx0I2RlZmluZSBSRUdfTUlJX0RBVEExICAgMHgxOSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAxICovXG4gIDM1Olx0I2RlZmluZSBSRUdfTUlJX0RBVEEyICAgMHgxYSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAyICovXG4gIDM2Olx0I2RlZmluZSBSRUdfTUlJX0RBVEEzICAgMHgxYiAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAzICovXG4gIDM3Olx0XG4gIDM4Olx0I2RlZmluZSBSRUdfTUlJX1BBR0VfRU5BQkxFICAgICBCSVQoMClcbiAgMzk6XHQjZGVmaW5lIFJFR19NSUlfQUREUl9XUklURSAgICAgIEJJVCgwKVxuICA0MDpcdCNkZWZpbmUgUkVHX01JSV9BRERSX1JFQUQgICAgICAgQklUKDEpXG4gIDQxOlx0XG4gIDQyOlx0c3RhdGljIGludCBiNTNfbWRpb19vcChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBwYWdlLCB1OCByZWcsIHUxNiBvcClcbiAgNDM6XHR7XG4gIDQ0Olx0XHRpbnQgaTtcbiAgNDU6XHRcdHUxNiB2O1xuICA0NjpcdFx0aW50IHJldDtcbiAgNDc6XHRcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBkZXYtXHUwMDNlcHJpdjtcbiAgNDg6XHRcbiAgNDk6XHRcdGlmIChkZXYtXHUwMDNlY3VycmVudF9wYWdlICE9IHBhZ2UpIHtcbiAgNTA6XHRcdFx0Lyogc2V0IHBhZ2UgbnVtYmVyICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzE2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBiNTMgU3dpdGNoIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBiNTMgc3dpdGNoIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIHBhdGggZm9yIGJyaW5naW5nIGEgc3dpdGNoIG1hbmFnZWQgYnkgdGhpcyBkcml2ZXIgb25saW5lLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYGI1M19tZGlvX3Byb2JlYCwgYGI1M19zd2l0Y2hfaW5pdGAsIGFuZCB0aGVuIHRoZSBwYWlyIGBiNTNfc3dpdGNoX2FsbG9jYCBhbmQgYGI1M19zd2l0Y2hfcmVnaXN0ZXJgLgoKYGI1M19tZGlvX3Byb2JlYCBpcyBsaWtlbHkgd2hlcmUgdGhlIE1ESU8gYnVzIGludGVyYWN0aW9uIGhhcHBlbnMsIGRpc2NvdmVyaW5nIHRoZSBzd2l0Y2gmIzM5O3MgcHJlc2VuY2UgYW5kIHBvdGVudGlhbGx5IHJldHJpZXZpbmcgaXRzIGluaXRpYWwgY29uZmlndXJhdGlvbiBvciBjYXBhYmlsaXRpZXMgdmlhIHRoZSBNSUkgKE1hbmFnZW1lbnQgSW50ZXJmYWNlKS4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgdG8gZGlzY292ZXIgYW5kIHNldCB1cCBjb21tdW5pY2F0aW9uLgoKTmV4dCwgYGI1M19zd2l0Y2hfaW5pdGAgZmVlbHMgbGlrZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBJIGV4cGVjdCB0byBzZWUgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dXAgaGVyZSwgbWF5YmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24sIFBIWSBjb25maWd1cmF0aW9uLCBhbmQgc2V0dGluZyB1cCBpbnRlcnJ1cHRzLiBUaGlzIGlzIHdoZXJlIHRoZSBkcml2ZXIgaW50ZXJhY3RzIGRpcmVjdGx5IHdpdGggdGhlIHN3aXRjaCBoYXJkd2FyZS4KCkZvbGxvd2luZyB0aGF0LCBgYjUzX3N3aXRjaF9hbGxvY2Agc2hvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIHRoZSBuZWNlc3Nhcnkga2VybmVsIGRhdGEgc3RydWN0dXJlcyB0byByZXByZXNlbnQgdGhlIHN3aXRjaC4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB3aGF0JiMzOTtzIGFsbG9jYXRlZDsgaXMgaXQgbWVtb3J5IHRvIGNvbnRhaW4gcmVnaXN0ZXIgbWFwcz8gSW5mb3JtYXRpb24gYWJvdXQgcG9ydHM/IFRoaXMgaXMgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gQW5kIHRoZW4sIGBiNTNfc3dpdGNoX3JlZ2lzdGVyYCBtdXN0IGJlIHJlZ2lzdGVyaW5nIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlcyB3aXRoIHRoZSBrZXJuZWwsIG1ha2luZyB0aGUgc3dpdGNoIGF2YWlsYWJsZSB0byB0aGUgbmV0d29ya2luZyBzdGFjay4gU28sIHRoZSByZWdpc3RyYXRpb24gbXVzdCBiZSBzZXR0aW5nIHVwIGFsbCBvZiB0aGUgZGF0YSB0aGF0IHRoZSBuZXR3b3JraW5nIHN0YWNrIG5lZWRzIHRvIGZpbmQgdGhlIHN3aXRjaC4KCkVzc2VudGlhbGx5LCBJJiMzOTttIHRoaW5raW5nIG9mIGBtZGlvX3Byb2JlYCBhcyBkaXNjb3ZlcnksIGBpbml0YCBhcyBjb25maWd1cmF0aW9uL2hhcmR3YXJlIHNldHVwLCBhbmQgYGFsbG9jYC9gcmVnaXN0ZXJgIGFzIGRhdGEgc3RydWN0dXJlIGNyZWF0aW9uIGFuZCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBtYW5hZ2VtZW50LiBCeSB0cmFjaW5nIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgY2FsbCBkZXBlbmRlbmNpZXMsIGFuZCBpbnNwZWN0aW5nIGhvdyByZWdpc3RlcnMgYW5kIG90aGVyIGRhdGEgc3RydWN0dXJlcyBhcmUgcG9wdWxhdGVkIGR1cmluZyB0aGlzIHByb2Nlc3MsIEkgc2hvdWxkIGdldCBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaG93IGEgYjUzIHN3aXRjaCBpcyBicm91Z2h0IGludG8gdGhlIHN5c3RlbS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV0d29yayBkcml2ZXIgd29ya3MgYW5kIGNhbiBiZSBsZXZlcmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2I1M19zd2l0Y2hfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMzg5PUVYUE9SVF9TWU1CT0woYjUzX3N3aXRjaF9kZXRlY3QpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5MC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMzOTE6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzOTIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTEtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzQxMjpFWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfcmVnaXN0ZXIpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzQxMy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM9MjkyPXN0YXRpYyBpbnQgYjUzX21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6MzQ1Olx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Ni1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQwNT1zdGF0aWMgaW50IGI1M19tbWFwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ0OS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo0NTA6XHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ1MS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTI4ND1pbnQgYjUzX3N3aXRjaF9kZXRlY3Qoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjI4NjppbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0yODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmM9Mjk2PXN0YXRpYyBpbnQgYjUzX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwNy1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjMwODpcdHJldCA9IGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTYxOD1zdGF0aWMgaW50IGI1M19zcmFiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY1Ni1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2NTc6XHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTY1OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTYzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIE1vZHVsZSBEZWVwIERpdmUqKgoKT2theSwgdGltZSB0byBnZXQgZGlnZ2luZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBhcm91bmQgdGhpcyBgYjUzX3N3aXRjaF9yZWdpc3RlcmAgZnVuY3Rpb24sIGFuZCB0aGUgYGI1M19jb21tb24uY2AgZmlsZSBtb3JlIGJyb2FkbHkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdobyBlbHNlIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgd2hvIG1pZ2h0IGJlIHJlbHlpbmcgb24gdGhhdCBzaGFyZWQgY29tbW9uIGNvZGUuIE15IGZpcnN0IGluc3RpbmN0IGlzIGEgY29tcHJlaGVuc2l2ZSBzZWFyY2gg4oCTIGEgZ29vZCBvbGQgYGdyZXBgIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHR1cm5zIHVwIHdoZW4gSSBsb29rIGZvciBhbnl0aGluZyBzdGFydGluZyB3aXRoIGBiNTNfYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoaXMgbW9kdWxlIGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgcmVsYXRlZCBkcml2ZXJzIG9yIG1vZHVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2I1M19zd2l0Y2hfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzM4OT1FWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfZGV0ZWN0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMzOTAtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzkxOmludCBiNTNfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDExLX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjM0MTI6RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTI5Mj1zdGF0aWMgaW50IGI1M19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQ0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjM0NTpcdHJldCA9IGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYz00MDU9c3RhdGljIGludCBiNTNfbW1hcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy00NDktXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM6NDUwOlx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy00NTEtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0yODQ9aW50IGI1M19zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTI4NS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoyODY6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jPTI5Nj1zdGF0aWMgaW50IGI1M19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zMDctXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYzozMDg6XHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYy0zMDktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYz02MTg9c3RhdGljIGludCBiNTNfc3JhYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTYtXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NjU3Olx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTgtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTM2NT1zdGF0aWMgaW50IGJjbV9zZjJfc3dfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE1NDgtXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE1NDk6XHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTE1NTAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwOToxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQxOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBCQ01fU0YyIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmNgLiBIbW0sIHdoYXQmIzM5O3MgdGhpcyBgYmNtX3NmMmAgYWxsIGFib3V0PyBBaCwgcmlnaHQsIGl0JiMzOTtzIHRoZSBTdGFyZmlnaHRlciAyIHN3aXRjaCwgdXNlZCBvbiB0aG9zZSBCcm9hZGNvbSBTZXQgVG9wIEJveCBhbmQgaVByb2MgcGxhdGZvcm1zIOKAkyB0aG9zZSBBUk0gYW5kIE1JUFMtYmFzZWQgU3lzdGVtLW9uLUNoaXBzLiBPa2F5LCBnb3QgaXQuIE5vdywgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBpdHMgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGJjbV9zZjJgIEtjb25maWcgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIGZlYXR1cmUgc2V0IGFuZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX0JDTV9TRjImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjc6Y29uZmlnIE5FVF9EU0FfQkNNX1NGMlxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctOC1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIFN0YXJmaWdodGVyIDIgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY3NzIKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogMTA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBEU0EgQ29yZSBDaGFuZ2VzIGFuZCBBcHBsaWNhYmlsaXR5IHRvIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGxlYW5pbmcgdG93YXJkcyAmIzM0O25vLiYjMzQ7IEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSBjb2RlIGNoYW5nZXMgYXJlIGluYWNjZXNzaWJsZSBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGV4YW1pbmUgaWYgYW55IG9mIHRoZSBgYjUzYCBmYW1pbHkgZHJpdmVycyBvciBgYmNtX3NmMmAgY291bGQgYmUgcHJvYmVkIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuIFF1aWNrbHksIGl0IGJlY2FtZSBjbGVhciB0aGF0IG5vbmUgb2YgdGhlbSBjb3VsZCBiZTogYGI1M19zcGlgLCBgYjUzX21kaW9gLCBgYjUzX21tYXBgLCBhbmQgYGI1M19zcmFiYCBhbGwgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyDigJMgU1BJIGNvbnRyb2xsZXJzLCBNRElPIGJ1c2VzLCBvciBCcm9hZGNvbSBTb0NzIHdpdGggbWVtb3J5LW1hcHBlZCBzd2l0Y2hlcywgcmVzcGVjdGl2ZWx5LiBMaWtld2lzZSwgYGJjbV9zZjJgIGlzIGFsc28gcGxhdGZvcm0tc3BlY2lmaWMuIFN0YW5kYXJkIFFFTVUgeDg2XzY0IG9yIGFybTY0IHZpcnQgbWFjaGluZXMgZG9uJiMzOTt0IGVtdWxhdGUgdGhlc2UuIEkgbmVlZCB0byBub3RlIHRoYXQgdGhleSBkb24mIzM5O3QgZXZlbiAqZXhpc3QqIGluIHRoZXNlIGVudmlyb25tZW50cywgc28gYW55IHByb2Jpbmcgd291bGQgZmFpbC4KClRoZW4gSSBjb25zaWRlcmVkIHRoZSBEU0EgY29yZSBjaGFuZ2VzIHRoZW1zZWx2ZXMsIHNwZWNpZmljYWxseSB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB2YXJpYWJsZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgbG9naWMgY2hhbmdlcyBiYXNlZCBvbiB0aGlzIHZhcmlhYmxlIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AuICBJIHNlZSB0aGF0IHRoZSBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGZsYWcgaXMgb25seSBldmVyIHNldCB0byB0cnVlIHdpdGhpbiBgYjUzX3N3aXRjaF9pbml0YC4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudC4KCk15IGFzc3VtcHRpb24gaXMgdGhhdCBmb3IgYW55ICYjMzQ7cmVhY2hhYmxlJiMzNDsgc3dpdGNoLCBsaWtlIGBkc2FfbG9vcGAgb3IgYSBmdXR1cmUgbW9jayBzd2l0Y2gsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2lsbCBiZSBmYWxzZSwgYmVjYXVzZSBgYjUzX3N3aXRjaF9pbml0YCBpcyBuZXZlciBjYWxsZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIGZhbHNlLCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBwYXRjaCYjMzk7cyBlZmZlY3RzICpvbmx5KiBhcHBseSB3aGVuIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgdHJ1ZSwgd2hpY2ggaXMgKmV4Y2x1c2l2ZWx5KiBvbiBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUgKGI1MyBvciBiY21fc2YyKS4KClRoaXMgbG9va3MgbGlrZSBpdCBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgJiMzNDtjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzJiMzNDsgcnVsZSBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0Oy4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjazoKCjEuICBJcyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHNldCAqYW55d2hlcmUqIGVsc2U/IEEgcXVpY2sgYGdyZXBwZXJgIGNvbmZpcm1zIHRoYXQgdGhlIG9ubHkgcGxhY2UgaXMgaW5kZWVkIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AuCjIuICBDYW4gKmFueSogb2YgdGhlIGBiNTNgIGRyaXZlcnMsIGluY2x1ZGluZyBgYjUzX2NvbW1vbi5jYCBvciBpdHMgc3ViLWRyaXZlcnMsIGJlIGluc3RhbnRpYXRlZC9wcm9iZWQgaW4gUUVNVSBvciBHQ0U/IE5vLiBUaGV5JiMzOTtyZSBhbGwgdmVuZG9yLXNwZWNpZmljIHN3aXRjaCBkcml2ZXJzIHJlcXVpcmluZyBlaXRoZXIgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKEJDTTUzeHggb3IgU3RhcmZpZ2h0ZXIgMikgb3IgY3VzdG9tIEJyb2FkY29tIE1JUFMvQVJNIFNvQ3MsIHdoaWNoIHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZS4KMy4gIERvIHRoZSBEU0EgY29yZSBjaGFuZ2VzIGFmZmVjdCBvdGhlciBEU0Egc3dpdGNoZXM/IE5vLCBhbGwgb3RoZXIgc3dpdGNoZXMgaGF2ZSB0aGUgdmFyaWFibGUgc2V0IHRvIDAgKGZhbHNlKSwgc28gdGhlaXIgYmVoYXZpb3IgcmVtYWlucyBpZGVudGljYWwgdG8gdGhlIGNvZGUgKmJlZm9yZSogdGhlIHBhdGNoLgoKVGhlIGNvbmNsdXNpb24gaXMgY3J5c3RhbCBjbGVhci4gVGhlc2UgY2hhbmdlcyBhcmUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdGhlcmVmb3JlIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaW1lIHRvIG1vdmUgb24gYW5kIGxldCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGRvIGl0cyB0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDk6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA5OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMTo1Ni4xMzQ3Njk1MTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5MTQ5OTc0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTE6NTYuMTM0Nzc1NTIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY5OTMzMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NTRhYWQzNjA1NGEzNGEwMzY4MmM4NTg3NjcwOWFiZmVhZTU5MmU4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNcXG5pbmRleCAwODgwMzEwYzljZTNmLi5iNTdjMGJkYWNiMjdkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNcXG5AQCAtODk4LDEwICs4OTgsNTIgQEAgc3RhdGljIGJvb2wgYjUzX3ZsYW5fcG9ydF9tYXlfam9pbl91bnRhZ2dlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbiBcXHRyZXR1cm4gZHAtXFx1MDAzZWJyaWRnZSA9PSBOVUxMO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBiNTNfdmxhbl9od19lbnRyeShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGNvbnN0IHN0cnVjdCBiNTNfdmxhbiAqdmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXFxuK3tcXG4rXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVxcdTAwM2Vwcml2O1xcbitcXHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcXG4rXFx0c3RydWN0IGRzYV9wb3J0ICpkcDtcXG4rXFx0dW5zaWduZWQgaW50IHBvcnQ7XFxuK1xcbitcXHQqaHcgPSAqdmw7XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZylcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRody1cXHUwMDNlbWVtYmVycyA9IDA7XFxuK1xcdGh3LVxcdTAwM2V1bnRhZyA9IDA7XFxuK1xcbitcXHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcXG4rXFx0XFx0aWYgKCEodmwtXFx1MDAzZW1lbWJlcnMgXFx1MDAyNiBCSVQocG9ydCkpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdGRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpO1xcbitcXG4rXFx0XFx0aWYgKCFkc2FfcG9ydF9pc19jcHUoZHApKSB7XFxuK1xcdFxcdFxcdGlmIChkcC1cXHUwMDNlYnJpZGdlKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdHN0YW5kYWxvbmUgPSB0cnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRody1cXHUwMDNlbWVtYmVycyB8PSBCSVQocG9ydCk7XFxuK1xcdFxcdGh3LVxcdTAwM2V1bnRhZyB8PSB2bC1cXHUwMDNldW50YWcgXFx1MDAyNiBCSVQocG9ydCk7XFxuK1xcdH1cXG4rXFxuK1xcdGlmICghc3RhbmRhbG9uZSkge1xcbitcXHRcXHRody1cXHUwMDNlbWVtYmVycyA9IDA7XFxuK1xcdFxcdGh3LVxcdTAwM2V1bnRhZyA9IDA7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBzdGFuZGFsb25lO1xcbit9XFxuK1xcbiBpbnQgYjUzX2NvbmZpZ3VyZV92bGFuKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4ge1xcbiBcXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiB2bCA9IHsgMCB9O1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiAqdjtcXG4gXFx0aW50IGksIGRlZl92aWQ7XFxuIFxcdHUxNiB2aWQ7XFxuQEAgLTkzNywyMCArOTc5LDIzIEBAIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbiBcXHR9XFxuIFxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIGRlZl92aWQsIFxcdTAwMjZ2bCk7XFxuIFxcbi1cXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZykge1xcbi1cXHRcXHQvKiBVcG9uIGluaXRpYWwgY2FsbCB3ZSBoYXZlIG5vdCBzZXQtdXAgYW55IFZMQU5zLCBidXQgdXBvblxcbi1cXHRcXHQgKiBzeXN0ZW0gcmVzdW1lLCB3ZSBuZWVkIHRvIHJlc3RvcmUgYWxsIFZMQU4gZW50cmllcy5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGZvciAodmlkID0gZGVmX3ZpZCArIDE7IHZpZCBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xcbi1cXHRcXHRcXHR2ID0gXFx1MDAyNmRldi1cXHUwMDNldmxhbnNbdmlkXTtcXG4rXFx0LyogVXBvbiBpbml0aWFsIGNhbGwgd2UgaGF2ZSBub3Qgc2V0LXVwIGFueSBWTEFOcywgYnV0IHVwb25cXG4rXFx0ICogc3lzdGVtIHJlc3VtZSwgd2UgbmVlZCB0byByZXN0b3JlIGFsbCBWTEFOIGVudHJpZXMuXFxuK1xcdCAqL1xcbitcXHRmb3IgKHZpZCA9IGRlZl92aWQgKyAxOyB2aWQgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV92bGFuczsgdmlkKyspIHtcXG4rXFx0XFx0diA9IFxcdTAwMjZkZXYtXFx1MDAzZXZsYW5zW3ZpZF07XFxuIFxcbi1cXHRcXHRcXHRpZiAoIXYtXFx1MDAzZW1lbWJlcnMpXFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRpZiAoIXYtXFx1MDAzZW1lbWJlcnMpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4tXFx0XFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcXG4tXFx0XFx0XFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmICghYjUzX3ZsYW5faHdfZW50cnkoZHMsIHYsIFxcdTAwMjZodykpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcXHUwMDI2aHcpO1xcbitcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XFxuK1xcdH1cXG4gXFxuK1xcdGlmIChkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XFxuIFxcdFxcdGI1M19mb3JfZWFjaF9wb3J0KGRldiwgaSkge1xcbiBcXHRcXHRcXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpXFxuIFxcdFxcdFxcdFxcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSxcXG5AQCAtMTcyMCw2ICsxNzY1LDcgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHMtXFx1MDAzZXByaXY7XFxuIFxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuIFxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XFxuIFxcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XFxuIFxcdHUxNiBvbGRfcHZpZCwgbmV3X3B2aWQ7XFxuIFxcdGludCBlcnI7XFxuQEAgLTE3NTEsMTMgKzE3OTcsMTQgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXHRlbHNlXFxuIFxcdFxcdHZsLVxcdTAwM2V1bnRhZyBcXHUwMDI2PSB+QklUKHBvcnQpO1xcbiBcXG4tXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoIWI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXFx1MDAyNmh3KSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVxcdTAwM2V2aWQsIHZsKTtcXG4rXFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmxhbi1cXHUwMDNldmlkLCBcXHUwMDI2aHcpO1xcbiBcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXFx1MDAzZXZpZCk7XFxuIFxcbi1cXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXFx1MDAyNlxcdTAwMjYgbmV3X3B2aWQgIT0gb2xkX3B2aWQpIHtcXG4rXFx0aWYgKGRldi1cXHUwMDNldmxhbl9maWx0ZXJpbmcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFkc2FfaXNfY3B1X3BvcnQoZHMsIHBvcnQpIFxcdTAwMjZcXHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XFxuIFxcdFxcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxcbiBcXHRcXHRcXHQgICAgbmV3X3B2aWQpO1xcbiBcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIG9sZF9wdmlkKTtcXG5AQCAtMTc3Miw3ICsxODE5LDkgQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiB7XFxuIFxcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4gXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG4rXFx0c3RydWN0IGI1M192bGFuIGh3O1xcbiBcXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xcbitcXHRib29sIG5lZWRzX2h3O1xcbiBcXHR1MTYgcHZpZDtcXG4gXFxuIFxcdGlmICh2bGFuLVxcdTAwM2V2aWQgPT0gMClcXG5AQCAtMTc4Miw2ICsxODMxLDggQEAgaW50IGI1M192bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0dmwgPSBcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuc1t2bGFuLVxcdTAwM2V2aWRdO1xcbiBcXG4rXFx0bmVlZHNfaHcgPSBiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcbiBcXHR2bC1cXHUwMDNlbWVtYmVycyBcXHUwMDI2PSB+QklUKHBvcnQpO1xcbiBcXG4gXFx0aWYgKHB2aWQgPT0gdmxhbi1cXHUwMDNldmlkKVxcbkBAIC0xNzkxLDE0ICsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gXFx0aWYgKHVudGFnZ2VkIFxcdTAwMjZcXHUwMDI2ICFiNTNfdmxhbl9wb3J0X25lZWRzX2ZvcmNlZF90YWdnZWQoZHMsIHBvcnQpKVxcbiBcXHRcXHR2bC1cXHUwMDNldW50YWcgXFx1MDAyNj0gfihCSVQocG9ydCkpO1xcbiBcXG4tXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoIW5lZWRzX2h3KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXFx1MDAzZXZpZCwgdmwpO1xcbitcXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXFx1MDAzZXZpZCwgXFx1MDAyNmh3KTtcXG4gXFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVxcdTAwM2V2aWQpO1xcbiBcXG4tXFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfVkxBTl9QQUdFLCBCNTNfVkxBTl9QT1JUX0RFRl9UQUcocG9ydCksIHB2aWQpO1xcbi1cXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpO1xcbitcXHRpZiAoZGV2LVxcdTAwM2V2bGFuX2ZpbHRlcmluZykge1xcbitcXHRcXHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsIEI1M19WTEFOX1BPUlRfREVGX1RBRyhwb3J0KSxcXG4rXFx0XFx0XFx0ICAgIHB2aWQpO1xcbitcXHRcXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHB2aWQpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0yMjYxLDYgKzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChiNTNfbWRiX2RlbCk7XFxuIFxcbitzdGF0aWMgdm9pZCBiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbit7XFxuK1xcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4rXFx0c3RydWN0IGI1M192bGFuIGh3O1xcbitcXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xcbitcXHR1MTYgdmlkO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNldmxhbl9maWx0ZXJpbmcpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGZvciAodmlkID0gYjUzX2RlZmF1bHRfcHZpZChkZXYpICsgMTsgdmlkIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fdmxhbnM7IHZpZCsrKSB7XFxuK1xcdFxcdHZsID0gXFx1MDAyNmRldi1cXHUwMDNldmxhbnNbdmlkXTtcXG4rXFxuK1xcdFxcdGlmICghKHZsLVxcdTAwM2VtZW1iZXJzIFxcdTAwMjYgQklUKHBvcnQpKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFxcdTAwMjZodyk7XFxuK1xcdFxcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZpZCwgXFx1MDAyNmh3KTtcXG4rXFx0XFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xcbitcXHR9XFxuK31cXG4rXFxuIGludCBiNTNfYnJfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuIFxcdFxcdGJvb2wgKnR4X2Z3ZF9vZmZsb2FkLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG5AQCAtMjMyNCw2ICsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4gXFx0YjUzX3dyaXRlMTYoZGV2LCBCNTNfUFZMQU5fUEFHRSwgQjUzX1BWTEFOX1BPUlRfTUFTSyhwb3J0KSwgcHZsYW4pO1xcbiBcXHRkZXYtXFx1MDAzZXBvcnRzW3BvcnRdLnZsYW5fY3RsX21hc2sgPSBwdmxhbjtcXG4gXFxuK1xcdGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKGRzLCBwb3J0KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0woYjUzX2JyX2pvaW4pO1xcbkBAIC0yMzc2LDYgKzI0NTUsOCBAQCB2b2lkIGI1M19icl9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuIFxcdFxcdHZsLVxcdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcXG4gXFx0XFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgcHZpZCwgdmwpO1xcbiBcXHR9XFxuK1xcbitcXHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfbGVhdmUpO1xcbiBcXG5AQCAtMzE3Miw2ICszMjUzLDggQEAgc3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcXG4gXFx0aWYgKCFkZXYtXFx1MDAzZXZsYW5zKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuK1xcdGRldi1cXHUwMDNlZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkID0gIWlzNTMyNShkZXYpIFxcdTAwMjZcXHUwMDI2ICFpczUzNjUoZGV2KTtcXG4rXFxuIFxcdGRldi1cXHUwMDNlcmVzZXRfZ3BpbyA9IGI1M19zd2l0Y2hfZ2V0X3Jlc2V0X2dwaW8oZGV2KTtcXG4gXFxuIFxcdGlmIChQVFJfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykgPT0gLUVQUk9CRV9ERUZFUilcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZHNhLmggYi9pbmNsdWRlL25ldC9kc2EuaFxcbmluZGV4IDc1MDdkNjMyZTdjNmQuLjY3YTAxZmM1ZjgxZWEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcXG4rKysgYi9pbmNsdWRlL25ldC9kc2EuaFxcbkBAIC00MDUsNiArNDA1LDkgQEAgc3RydWN0IGRzYV9zd2l0Y2gge1xcbiBcXHQvKiBLZWVwIFZMQU4gZmlsdGVyaW5nIGVuYWJsZWQgb24gcG9ydHMgbm90IG9mZmxvYWRpbmcgYW55IHVwcGVyICovXFxuIFxcdHUzMlxcdFxcdFxcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmc6MTtcXG4gXFxuK1xcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cXG4rXFx0dTMyXFx0XFx0XFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTtcXG4rXFxuIFxcdC8qIFBhc3MgLnBvcnRfdmxhbl9hZGQgYW5kIC5wb3J0X3ZsYW5fZGVsIHRvIGRyaXZlcnMgZXZlbiBmb3IgYnJpZGdlc1xcbiBcXHQgKiB0aGF0IGhhdmUgdmxhbl9maWx0ZXJpbmc9MC4gQWxsIGRyaXZlcnMgc2hvdWxkIGlkZWFsbHkgc2V0IHRoaXMgKGFuZFxcbiBcXHQgKiB0aGVuIHRoZSBvcHRpb24gd291bGQgZ2V0IHJlbW92ZWQpLCBidXQgaXQgaXMgdW5rbm93biB3aGV0aGVyIHRoaXNcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS9wb3J0LmMgYi9uZXQvZHNhL3BvcnQuY1xcbmluZGV4IDFmNTUzNmMwZGZmYzIuLmU2MWFiYzdjNzRmNzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS9wb3J0LmNcXG4rKysgYi9uZXQvZHNhL3BvcnQuY1xcbkBAIC04MzEsNiArODMxLDkgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuIFxcdFxcdFxcdGlmICghdXNlcilcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbitcXHRcXHRcXHRpZiAoZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdFxcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcXG4gXFx0XFx0XFx0aWYgKGVycilcXG5AQCAtODM5LDEwICs4NDIsMTIgQEAgaW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGRwLVxcdTAwM2V2bGFuX2ZpbHRlcmluZyA9IHZsYW5fZmlsdGVyaW5nO1xcbiBcXG4tXFx0XFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRwLVxcdTAwM2V1c2VyLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZsYW5fZmlsdGVyaW5nKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byByZXN0b3JlO1xcbitcXHRcXHRpZiAoIWRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xcbitcXHRcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXFx1MDAzZXVzZXIsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xcbitcXHRcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRcXHRnb3RvIHJlc3RvcmU7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE0NDUsMTAgKzE0NTAsMTMgQEAgaW50IGRzYV9wb3J0X2NoYW5nZV9jb25kdWl0KHN0cnVjdCBkc2FfcG9ydCAqZHAsIHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0LFxcbiBcXG4gXFx0LyogVGhlIHBvcnQgbWlnaHQgc3RpbGwgYmUgVkxBTiBmaWx0ZXJpbmcgZXZlbiBpZiBpdCdzIG5vIGxvbmdlclxcbiBcXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cXHUwMDNldmxhbl9maWx0ZXJpbmdfaXNfZ2xvYmFsIG9yXFxuLVxcdCAqIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nLiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnNcXG4tXFx0ICogb24gdGhlIENQVSBwb3J0LlxcbitcXHQgKiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxcbitcXHQgKiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgc3dpdGNoIGtlZXBzIGl0cyA4MDIxcSB1cHBlclxcbitcXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXFxuK1xcdCAqIENQVSBwb3J0LlxcbiBcXHQgKi9cXG4tXFx0dmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCk7XFxuK1xcdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XFxuK1xcdFxcdFxcdCBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XFxuIFxcdGlmICh2bGFuX2ZpbHRlcmluZykge1xcbiBcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZGV2LCBmYWxzZSk7XFxuIFxcdFxcdGlmIChlcnIpIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xcbmluZGV4IDA0MWY5MDYwYzhlZjAuLmZkYTZiYTRmZGQxM2QgMTAwNjQ0XFxuLS0tIGEvbmV0L2RzYS91c2VyLmNcXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xcbkBAIC0xOTQ2LDYgKzE5NDYsNyBAQCBzdGF0aWMgaW50IGRzYV91c2VyX2NsZWFyX3ZsYW4oc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYsIGludCB2aWQsIHZvaWQgKmFyZylcXG4gICpcXG4gICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKTpcXG4gICogICAgIC0gaWYgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgPSB0cnVlLCBPUiBpZlxcbisgKiAgICAgICBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZlxcbiAgKiAgICAgICAoZHMtXFx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXFxuICAqICAgICAgIHRoaXMgc3dpdGNoIGNoaXAgd2hpY2ggaGF2ZSB2bGFuX2ZpbHRlcmluZz0xKVxcbiAgKiAgICAgICAgIC0gdGhlIDgwMjFxIHVwcGVyIFZMQU5zXFxuQEAgLTI3MTcsNyArMjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxcbiBcXHR1c2VyLVxcdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xcbiBcXHRpZiAodXNlci1cXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxcbiBcXHRcXHR1c2VyLVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2PSB+KE5FVElGX0ZfU0cgfCBORVRJRl9GX0ZSQUdMSVNUKTtcXG4tXFx0aWYgKGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nKVxcbitcXHRpZiAoZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcgfHxcXG4rXFx0ICAgIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcXG4gXFx0XFx0dXNlci1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xcbiBcXG4gXFx0dXNlci1cXHUwMDNlbGx0eCA9IHRydWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjU2LjU2MjY3MDQwOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg3NDg3MDc3Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN0YW5kYWxvbmUgVkxBTiBvZmZsb2FkaW5nIGZvciBCcm9hZGNvbSBCNTMgLyBCQ01fU0YyIHN3aXRjaGVzLiBUaGUgY29yZSBEU0EgY2hhbmdlcyBpbnRyb2R1Y2UgYSBuZXcgZmxhZyBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIHdoaWNoIGlzIG9ubHkgZW5hYmxlZCBieSB0aGUgYGI1M2AgZHJpdmVyIGZvciBwaHlzaWNhbCBCcm9hZGNvbSBzd2l0Y2ggaGFyZHdhcmUuIEJlY2F1c2UgQnJvYWRjb20gQjUzIHN3aXRjaGVzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBubyBvdGhlciBkcml2ZXIgc2V0cyB0aGlzIGZsYWcgKGxlYXZpbmcgZ2VuZXJhbCBEU0EgYmVoYXZpb3IgdW5jaGFuZ2VkKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDU0YWFkMzYwNTRhMzRhMDM2ODJjODU4NzY3MDlhYmZlYWU1OTJlOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA5OjExOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuaW5kZXggMDg4MDMxMGM5Y2UzZi4uYjU3YzBiZGFjYjI3ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY1xuQEAgLTg5OCwxMCArODk4LDUyIEBAIHN0YXRpYyBib29sIGI1M192bGFuX3BvcnRfbWF5X2pvaW5fdW50YWdnZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbiBcdHJldHVybiBkcC1cdTAwM2VicmlkZ2UgPT0gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYjUzX3ZsYW5faHdfZW50cnkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBjb25zdCBzdHJ1Y3QgYjUzX3ZsYW4gKnZsLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBiNTNfdmxhbiAqaHcpXG4re1xuK1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4rXHRib29sIHN0YW5kYWxvbmUgPSBmYWxzZTtcbitcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XG4rXHR1bnNpZ25lZCBpbnQgcG9ydDtcbitcbitcdCpodyA9ICp2bDtcbitcbitcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0aHctXHUwMDNlbWVtYmVycyA9IDA7XG4rXHRody1cdTAwM2V1bnRhZyA9IDA7XG4rXG4rXHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIHBvcnQpIHtcbitcdFx0aWYgKCEodmwtXHUwMDNlbWVtYmVycyBcdTAwMjYgQklUKHBvcnQpKSlcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0ZHAgPSBkc2FfdG9fcG9ydChkcywgcG9ydCk7XG4rXG4rXHRcdGlmICghZHNhX3BvcnRfaXNfY3B1KGRwKSkge1xuK1x0XHRcdGlmIChkcC1cdTAwM2VicmlkZ2UpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRzdGFuZGFsb25lID0gdHJ1ZTtcbitcdFx0fVxuK1xuK1x0XHRody1cdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcbitcdFx0aHctXHUwMDNldW50YWcgfD0gdmwtXHUwMDNldW50YWcgXHUwMDI2IEJJVChwb3J0KTtcbitcdH1cbitcbitcdGlmICghc3RhbmRhbG9uZSkge1xuK1x0XHRody1cdTAwM2VtZW1iZXJzID0gMDtcbitcdFx0aHctXHUwMDNldW50YWcgPSAwO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHN0YW5kYWxvbmU7XG4rfVxuK1xuIGludCBiNTNfY29uZmlndXJlX3ZsYW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIHtcbiBcdHN0cnVjdCBiNTNfZGV2aWNlICpkZXYgPSBkcy1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IGI1M192bGFuIHZsID0geyAwIH07XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4gXHRzdHJ1Y3QgYjUzX3ZsYW4gKnY7XG4gXHRpbnQgaSwgZGVmX3ZpZDtcbiBcdHUxNiB2aWQ7XG5AQCAtOTM3LDIwICs5NzksMjMgQEAgaW50IGI1M19jb25maWd1cmVfdmxhbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHR9XG4gXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCBkZWZfdmlkLCBcdTAwMjZ2bCk7XG4gXG4tXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XG4tXHRcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4tXHRcdCAqIHN5c3RlbSByZXN1bWUsIHdlIG5lZWQgdG8gcmVzdG9yZSBhbGwgVkxBTiBlbnRyaWVzLlxuLVx0XHQgKi9cbi1cdFx0Zm9yICh2aWQgPSBkZWZfdmlkICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuLVx0XHRcdHYgPSBcdTAwMjZkZXYtXHUwMDNldmxhbnNbdmlkXTtcbitcdC8qIFVwb24gaW5pdGlhbCBjYWxsIHdlIGhhdmUgbm90IHNldC11cCBhbnkgVkxBTnMsIGJ1dCB1cG9uXG4rXHQgKiBzeXN0ZW0gcmVzdW1lLCB3ZSBuZWVkIHRvIHJlc3RvcmUgYWxsIFZMQU4gZW50cmllcy5cbitcdCAqL1xuK1x0Zm9yICh2aWQgPSBkZWZfdmlkICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuK1x0XHR2ID0gXHUwMDI2ZGV2LVx1MDAzZXZsYW5zW3ZpZF07XG4gXG4tXHRcdFx0aWYgKCF2LVx1MDAzZW1lbWJlcnMpXG4tXHRcdFx0XHRjb250aW51ZTtcbitcdFx0aWYgKCF2LVx1MDAzZW1lbWJlcnMpXG4rXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCB2KTtcbi1cdFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZpZCk7XG4tXHRcdH1cbitcdFx0aWYgKCFiNTNfdmxhbl9od19lbnRyeShkcywgdiwgXHUwMDI2aHcpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2aWQsIFx1MDAyNmh3KTtcbitcdFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2aWQpO1xuK1x0fVxuIFxuK1x0aWYgKGRldi1cdTAwM2V2bGFuX2ZpbHRlcmluZykge1xuIFx0XHRiNTNfZm9yX2VhY2hfcG9ydChkZXYsIGkpIHtcbiBcdFx0XHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgaSkpXG4gXHRcdFx0XHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsXG5AQCAtMTcyMCw2ICsxNzY1LDcgQEAgaW50IGI1M192bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbiBcdGJvb2wgcHZpZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcbitcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4gXHR1MTYgb2xkX3B2aWQsIG5ld19wdmlkO1xuIFx0aW50IGVycjtcbkBAIC0xNzUxLDEzICsxNzk3LDE0IEBAIGludCBiNTNfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGVsc2VcbiBcdFx0dmwtXHUwMDNldW50YWcgXHUwMDI2PSB+QklUKHBvcnQpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRpZiAoIWI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCB2bCk7XG4rXHRiNTNfc2V0X3ZsYW5fZW50cnkoZGV2LCB2bGFuLVx1MDAzZXZpZCwgXHUwMDI2aHcpO1xuIFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCB2bGFuLVx1MDAzZXZpZCk7XG4gXG4tXHRpZiAoIWRzYV9pc19jcHVfcG9ydChkcywgcG9ydCkgXHUwMDI2XHUwMDI2IG5ld19wdmlkICE9IG9sZF9wdmlkKSB7XG4rXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFkc2FfaXNfY3B1X3BvcnQoZHMsIHBvcnQpIFx1MDAyNlx1MDAyNiBuZXdfcHZpZCAhPSBvbGRfcHZpZCkge1xuIFx0XHRiNTNfd3JpdGUxNihkZXYsIEI1M19WTEFOX1BBR0UsIEI1M19WTEFOX1BPUlRfREVGX1RBRyhwb3J0KSxcbiBcdFx0XHQgICAgbmV3X3B2aWQpO1xuIFx0XHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIG9sZF9wdmlkKTtcbkBAIC0xNzcyLDcgKzE4MTksOSBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4ge1xuIFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4gXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbitcdHN0cnVjdCBiNTNfdmxhbiBodztcbiBcdHN0cnVjdCBiNTNfdmxhbiAqdmw7XG4rXHRib29sIG5lZWRzX2h3O1xuIFx0dTE2IHB2aWQ7XG4gXG4gXHRpZiAodmxhbi1cdTAwM2V2aWQgPT0gMClcbkBAIC0xNzgyLDYgKzE4MzEsOCBAQCBpbnQgYjUzX3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2bGFuLVx1MDAzZXZpZF07XG4gXG4rXHRuZWVkc19odyA9IGI1M192bGFuX2h3X2VudHJ5KGRzLCB2bCwgXHUwMDI2aHcpO1xuK1xuIFx0dmwtXHUwMDNlbWVtYmVycyBcdTAwMjY9IH5CSVQocG9ydCk7XG4gXG4gXHRpZiAocHZpZCA9PSB2bGFuLVx1MDAzZXZpZClcbkBAIC0xNzkxLDE0ICsxODQyLDE4IEBAIGludCBiNTNfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBcdGlmICh1bnRhZ2dlZCBcdTAwMjZcdTAwMjYgIWI1M192bGFuX3BvcnRfbmVlZHNfZm9yY2VkX3RhZ2dlZChkcywgcG9ydCkpXG4gXHRcdHZsLVx1MDAzZXVudGFnIFx1MDAyNj0gfihCSVQocG9ydCkpO1xuIFxuLVx0aWYgKCFkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRpZiAoIW5lZWRzX2h3KVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCB2bCk7XG4rXHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbitcdGI1M19zZXRfdmxhbl9lbnRyeShkZXYsIHZsYW4tXHUwMDNldmlkLCBcdTAwMjZodyk7XG4gXHRiNTNfZmFzdF9hZ2VfdmxhbihkZXYsIHZsYW4tXHUwMDNldmlkKTtcbiBcbi1cdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLCBwdmlkKTtcbi1cdGI1M19mYXN0X2FnZV92bGFuKGRldiwgcHZpZCk7XG4rXHRpZiAoZGV2LVx1MDAzZXZsYW5fZmlsdGVyaW5nKSB7XG4rXHRcdGI1M193cml0ZTE2KGRldiwgQjUzX1ZMQU5fUEFHRSwgQjUzX1ZMQU5fUE9SVF9ERUZfVEFHKHBvcnQpLFxuK1x0XHRcdCAgICBwdmlkKTtcbitcdFx0YjUzX2Zhc3RfYWdlX3ZsYW4oZGV2LCBwdmlkKTtcbitcdH1cbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0yMjYxLDYgKzIzMTYsMjggQEAgaW50IGI1M19tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gfVxuIEVYUE9SVF9TWU1CT0woYjUzX21kYl9kZWwpO1xuIFxuK3N0YXRpYyB2b2lkIGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4re1xuK1x0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRzLVx1MDAzZXByaXY7XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gaHc7XG4rXHRzdHJ1Y3QgYjUzX3ZsYW4gKnZsO1xuK1x0dTE2IHZpZDtcbitcbitcdGlmIChkZXYtXHUwMDNldmxhbl9maWx0ZXJpbmcpXG4rXHRcdHJldHVybjtcbitcbitcdGZvciAodmlkID0gYjUzX2RlZmF1bHRfcHZpZChkZXYpICsgMTsgdmlkIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3ZsYW5zOyB2aWQrKykge1xuK1x0XHR2bCA9IFx1MDAyNmRldi1cdTAwM2V2bGFuc1t2aWRdO1xuK1xuK1x0XHRpZiAoISh2bC1cdTAwM2VtZW1iZXJzIFx1MDAyNiBCSVQocG9ydCkpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRiNTNfdmxhbl9od19lbnRyeShkcywgdmwsIFx1MDAyNmh3KTtcbitcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgdmlkLCBcdTAwMjZodyk7XG4rXHRcdGI1M19mYXN0X2FnZV92bGFuKGRldiwgdmlkKTtcbitcdH1cbit9XG4rXG4gaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbiBcdFx0Ym9vbCAqdHhfZndkX29mZmxvYWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG5AQCAtMjMyNCw2ICsyNDAxLDggQEAgaW50IGI1M19icl9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbiBcdGI1M193cml0ZTE2KGRldiwgQjUzX1BWTEFOX1BBR0UsIEI1M19QVkxBTl9QT1JUX01BU0socG9ydCksIHB2bGFuKTtcbiBcdGRldi1cdTAwM2Vwb3J0c1twb3J0XS52bGFuX2N0bF9tYXNrID0gcHZsYW47XG4gXG4rXHRiNTNfc3RhbmRhbG9uZV92bGFuX3Jlc3luYyhkcywgcG9ydCk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTChiNTNfYnJfam9pbik7XG5AQCAtMjM3Niw2ICsyNDU1LDggQEAgdm9pZCBiNTNfYnJfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxuIFx0XHR2bC1cdTAwM2VtZW1iZXJzIHw9IEJJVChwb3J0KTtcbiBcdFx0YjUzX3NldF92bGFuX2VudHJ5KGRldiwgcHZpZCwgdmwpO1xuIFx0fVxuK1xuK1x0YjUzX3N0YW5kYWxvbmVfdmxhbl9yZXN5bmMoZHMsIHBvcnQpO1xuIH1cbiBFWFBPUlRfU1lNQk9MKGI1M19icl9sZWF2ZSk7XG4gXG5AQCAtMzE3Miw2ICszMjUzLDggQEAgc3RhdGljIGludCBiNTNfc3dpdGNoX2luaXQoc3RydWN0IGI1M19kZXZpY2UgKmRldilcbiBcdGlmICghZGV2LVx1MDAzZXZsYW5zKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbitcdGRldi1cdTAwM2Vkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9ICFpczUzMjUoZGV2KSBcdTAwMjZcdTAwMjYgIWlzNTM2NShkZXYpO1xuK1xuIFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBiNTNfc3dpdGNoX2dldF9yZXNldF9ncGlvKGRldik7XG4gXG4gXHRpZiAoUFRSX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykgPT0gLUVQUk9CRV9ERUZFUilcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9kc2EuaCBiL2luY2x1ZGUvbmV0L2RzYS5oXG5pbmRleCA3NTA3ZDYzMmU3YzZkLi42N2EwMWZjNWY4MWVhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvZHNhLmhcbisrKyBiL2luY2x1ZGUvbmV0L2RzYS5oXG5AQCAtNDA1LDYgKzQwNSw5IEBAIHN0cnVjdCBkc2Ffc3dpdGNoIHtcbiBcdC8qIEtlZXAgVkxBTiBmaWx0ZXJpbmcgZW5hYmxlZCBvbiBwb3J0cyBub3Qgb2ZmbG9hZGluZyBhbnkgdXBwZXIgKi9cbiBcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmc6MTtcbiBcbitcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cbitcdHUzMlx0XHRcdG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjE7XG4rXG4gXHQvKiBQYXNzIC5wb3J0X3ZsYW5fYWRkIGFuZCAucG9ydF92bGFuX2RlbCB0byBkcml2ZXJzIGV2ZW4gZm9yIGJyaWRnZXNcbiBcdCAqIHRoYXQgaGF2ZSB2bGFuX2ZpbHRlcmluZz0wLiBBbGwgZHJpdmVycyBzaG91bGQgaWRlYWxseSBzZXQgdGhpcyAoYW5kXG4gXHQgKiB0aGVuIHRoZSBvcHRpb24gd291bGQgZ2V0IHJlbW92ZWQpLCBidXQgaXQgaXMgdW5rbm93biB3aGV0aGVyIHRoaXNcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3BvcnQuYyBiL25ldC9kc2EvcG9ydC5jXG5pbmRleCAxZjU1MzZjMGRmZmMyLi5lNjFhYmM3Yzc0ZjczIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS9wb3J0LmNcbisrKyBiL25ldC9kc2EvcG9ydC5jXG5AQCAtODMxLDYgKzgzMSw5IEBAIGludCBkc2FfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBib29sIHZsYW5fZmlsdGVyaW5nLFxuIFx0XHRcdGlmICghdXNlcilcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuK1x0XHRcdGlmIChkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZClcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyh1c2VyLFxuIFx0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4gXHRcdFx0aWYgKGVycilcbkBAIC04MzksMTAgKzg0MiwxMiBAQCBpbnQgZHNhX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9wb3J0ICpkcCwgYm9vbCB2bGFuX2ZpbHRlcmluZyxcbiBcdH0gZWxzZSB7XG4gXHRcdGRwLVx1MDAzZXZsYW5fZmlsdGVyaW5nID0gdmxhbl9maWx0ZXJpbmc7XG4gXG4tXHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuLVx0XHRcdFx0XHRcdCAgICAgdmxhbl9maWx0ZXJpbmcpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gcmVzdG9yZTtcbitcdFx0aWYgKCFkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xuK1x0XHRcdGVyciA9IGRzYV91c2VyX21hbmFnZV92bGFuX2ZpbHRlcmluZyhkcC1cdTAwM2V1c2VyLFxuK1x0XHRcdFx0XHRcdFx0ICAgICB2bGFuX2ZpbHRlcmluZyk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdGdvdG8gcmVzdG9yZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTQ0NSwxMCArMTQ1MCwxMyBAQCBpbnQgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXG4gXG4gXHQvKiBUaGUgcG9ydCBtaWdodCBzdGlsbCBiZSBWTEFOIGZpbHRlcmluZyBldmVuIGlmIGl0J3Mgbm8gbG9uZ2VyXG4gXHQgKiB1bmRlciBhIGJyaWRnZSwgZWl0aGVyIGR1ZSB0byBkcy1cdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgb3Jcbi1cdCAqIGRzLVx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcuIEluIHR1cm4gdGhpcyBtZWFucyBWTEFOc1xuLVx0ICogb24gdGhlIENQVSBwb3J0LlxuK1x0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZywgYW5kIGV2ZXJ5IHBvcnQgb2YgYVxuK1x0ICogZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgc3dpdGNoIGtlZXBzIGl0cyA4MDIxcSB1cHBlclxuK1x0ICogVkxBTnMgd2hldGhlciBicmlkZ2VkIG9yIG5vdC4gSW4gdHVybiB0aGlzIG1lYW5zIFZMQU5zIG9uIHRoZVxuK1x0ICogQ1BVIHBvcnQuXG4gXHQgKi9cbi1cdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApO1xuK1x0dmxhbl9maWx0ZXJpbmcgPSBkc2FfcG9ydF9pc192bGFuX2ZpbHRlcmluZyhkcCkgfHxcbitcdFx0XHQgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ7XG4gXHRpZiAodmxhbl9maWx0ZXJpbmcpIHtcbiBcdFx0ZXJyID0gZHNhX3VzZXJfbWFuYWdlX3ZsYW5fZmlsdGVyaW5nKGRldiwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS91c2VyLmMgYi9uZXQvZHNhL3VzZXIuY1xuaW5kZXggMDQxZjkwNjBjOGVmMC4uZmRhNmJhNGZkZDEzZCAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4rKysgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTE5NDYsNiArMTk0Niw3IEBAIHN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxuICAqXG4gICogLSBJZiBzdGFuZGFsb25lICh0aGlzIGluY2x1ZGVzIHNvZnR3YXJlIGJyaWRnZSwgc29mdHdhcmUgTEFHKTpcbiAgKiAgICAgLSBpZiBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nID0gdHJ1ZSwgT1IgaWZcbisgKiAgICAgICBkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCA9IHRydWUsIE9SIGlmXG4gICogICAgICAgKGRzLVx1MDAzZXZsYW5fZmlsdGVyaW5nX2lzX2dsb2JhbCA9IHRydWUgQU5EIHRoZXJlIGFyZSBicmlkZ2VzIHNwYW5uaW5nXG4gICogICAgICAgdGhpcyBzd2l0Y2ggY2hpcCB3aGljaCBoYXZlIHZsYW5fZmlsdGVyaW5nPTEpXG4gICogICAgICAgICAtIHRoZSA4MDIxcSB1cHBlciBWTEFOc1xuQEAgLTI3MTcsNyArMjcxOCw4IEBAIHZvaWQgZHNhX3VzZXJfc2V0dXBfdGFnZ2VyKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyKVxuIFx0dXNlci1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0hXX1RDO1xuIFx0aWYgKHVzZXItXHUwMDNlbmVlZGVkX3RhaWxyb29tKVxuIFx0XHR1c2VyLVx1MDAzZWZlYXR1cmVzIFx1MDAyNj0gfihORVRJRl9GX1NHIHwgTkVUSUZfRl9GUkFHTElTVCk7XG4tXHRpZiAoZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZylcbitcdGlmIChkcy1cdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nIHx8XG4rXHQgICAgZHMtXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXG4gXHRcdHVzZXItXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xuIFxuIFx0dXNlci1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjExOjU2LjU2MjY3MjU3OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwODgyNDEyNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IERTQSBTdWJzeXN0ZW0gRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHNlZSB3aGF0J3MgYmVpbmcgdHdlYWtlZC4gSSBzZWUgY2hhbmdlcyBhY3Jvc3MgYSBmZXcgY3JpdGljYWwgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AsIGBpbmNsdWRlL25ldC9kc2EuaGAsIGBuZXQvZHNhL3BvcnQuY2AsIGFuZCBgbmV0L2RzYS91c2VyLmNgLiBUaGlzIGlzIGZvY3VzZWQgb24gdGhlIERTQSBzdWJzeXN0ZW0sIHNvIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cbk15IG1pbmQgaW1tZWRpYXRlbHkgc3RhcnRzIHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgZXhwbG9pdCB2ZWN0b3JzLiBUaGUgY3JpdGljYWwgcXVlc3Rpb246IGhvdyByZWFjaGFibGUgYXJlIERTQSBkcml2ZXJzIGFuZCB0aGUgRFNBIGNvcmUgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPyBDYW4gd2UgZnV6eiB0aGVzZSBjb21wb25lbnRzIGVmZmVjdGl2ZWx5PyBJJ20gdGhpbmtpbmcgYWJvdXQgRFNBIGxvb3AgbW9jayBkcml2ZXJzLCBtb2NrIHN3aXRjaGVzLCBhbmQgaWYgdGhlIERTQSBjb3JlIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGJyaWRnZSwgVkxBTiwgb3IgZXZlbiBtb2NrIGRldmljZXMuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gY29tZXMgdG8gbWluZDogQ2FuIHdlIGVtdWxhdGUgb3IgY3JlYXRlIGEgbW9jayBvZiBEU0Egc3dpdGNoZXM/IE9yIGV2ZW4ganVzdCB0aGUgY29yZSBEU0EgbG9naWMgaXRzZWxmPyBJZiB3ZSBjYW4sIHRoYXQncyBhIG1hc3NpdmUgd2luIGZvciB0ZXN0aW5nIGFuZCB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4gVGltZSB0byBjaGVjayB0aGUga2VybmVsIHNvdXJjZSBmb3IgZXhpc3RpbmcgRFNBIGRyaXZlcnMuIElmIHRoZXJlIGFyZSBhbnksIGxldCdzIGV4cGxvcmUgdGhlbSBvciBodW50IGZvciBhbnkgbW9jayBkcml2ZXJzLlxuXG5GaW5hbGx5LCBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdXN1YWwgYXBwcm9hY2gg4oCTIGdyZXBwaW5nIHRoZSBrZXJuZWwgc291cmNlIG9yIHJ1bm5pbmcgYSBjb2Rlc2VhcmNoIHRvIGlkZW50aWZ5IHJlbGV2YW50IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNzQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjowNy40NDUwODczNzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MDM3ODU2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkc2FfbG9vcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0OjE2MTpJdCBpcyBkZXNpcmFibGUgdGhhdCBhbGwgdGFnZ2luZyBwcm90b2NvbHMgYXJlIHRlc3RhYmxlIHdpdGggdGhlIGBgZHNhX2xvb3BgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTM9YmNtLXNmMi1vYmpzXFx0XFx0XFx0Oj0gYmNtX3NmMi5vIGJjbV9zZjJfY2ZwLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVxcdCs9IGRzYV9sb29wLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjYtXFx0dTE2IG1lbWJlcnM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cXHRjaGFyIG5hbWVbRVRIX0dTVFJJTkdfTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1OmVudW0gZHNhX2xvb3BfbWliX2NvdW50ZXJzIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVxcdHUxNiBwdmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk6c3RydWN0IGRzYV9sb29wX3ByaXYge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVxcdHN0cnVjdCBtaWlfYnVzXFx0KmJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cXHR1bnNpZ25lZCBpbnRcXHRwb3J0X2Jhc2U7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcG9ydCBwb3J0c1tEU0FfTUFYX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU3OnN0cnVjdCBkc2FfbG9vcF9wZGF0YSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXFx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02OC1cXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXFx0PSB7IFxcXCJwaHlfcmVhZF9va1xcXCIsIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz03NT1zdGF0aWMgc3RydWN0IG1kaW9fZGV2aWNlICpzd2l0Y2hfbWRpb2RldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc4LVxcdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cXHR1bnNpZ25lZCBpbnQgaSwgY291bnQgPSAwO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjk3OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cXHRzdHJ1Y3QgZGV2bGlua19yZXNvdXJjZV9zaXplX3BhcmFtcyBzaXplX3BhcmFtcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVxcdGludCBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgRFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9WVFUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCwgcHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cXHRcXHRcXHRcXHRcXHRcXHQgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkcy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQwOlxcdFxcdG1lbWNweShwcy1cXHUwMDNlcG9ydHNbaV0ubWliLCBkc2FfbG9vcF9taWJzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcXHRcXHQgICAgICAgc2l6ZW9mKGRzYV9sb29wX21pYnMpKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1OlxcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE1MzpzdGF0aWMgaW50IGRzYV9sb29wX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVxcdFxcdFxcdFxcdCB1MzIgc3RyaW5nc2V0LCB1aW50OF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzQ6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXFx0XFx0XFx0XFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4NS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxOTk6c3RhdGljIGludCBkc2FfbG9vcF9waHlfd3JpdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXFx0XFx0XFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjAyOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMy1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIzMzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXFx0XFx0XFx0XFx0XFx0dTggc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjQwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cXHRcXHRcXHRcXHRcXHRib29sIHZsYW5fZmlsdGVyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXFx0Ym9vbCBwdmlkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVxcdGJvb2wgdW50YWdnZWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mjg3OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OC1cXHR1MTYgcHZpZCA9IHBzLVxcdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4OS1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXFx1MDAzZWJ1cztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyOTA6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTItXFx0XFx0XFx0XFx0ICAgIGludCBuZXdfbXR1KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzE0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XFx0LnNldHVwXFx0XFx0XFx0PSBkc2FfbG9vcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzc6XFx0LnRlYXJkb3duXFx0XFx0PSBkc2FfbG9vcF90ZWFyZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XFx0LmdldF9zdHJpbmdzXFx0XFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XFx0LmdldF9zc2V0X2NvdW50XFx0XFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDE6XFx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQyOlxcdC5waHlfcmVhZFxcdFxcdD0gZHNhX2xvb3BfcGh5X3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlxcdC5waHlfd3JpdGVcXHRcXHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XFx0LnBvcnRfYnJpZGdlX2pvaW5cXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1OlxcdC5wb3J0X2JyaWRnZV9sZWF2ZVxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2OlxcdC5wb3J0X3N0cF9zdGF0ZV9zZXRcXHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmdcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4OlxcdC5wb3J0X3ZsYW5fYWRkXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0OTpcXHQucG9ydF92bGFuX2RlbFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XFx0LnBvcnRfY2hhbmdlX210dVxcdD0gZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU3OlxcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTg6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXFx0ZHMtXFx1MDAzZWRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cXHRkcy1cXHUwMDNlcHJpdiA9IHBzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OS1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDExOnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVxcdC5tZGlvZHJ2LmRyaXZlclxcdD0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI2LVxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3OlxcdC5wcm9iZVxcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcXHQucmVtb3ZlXFx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcXHQuc2h1dGRvd24gPSBkc2FfbG9vcF9kcnZfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzMjpzdGF0aWMgaW50IGRzYV9sb29wX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzU6XFx0cmV0dXJuIGRydiA9PSBcXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0NjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcXHRzdGF0aWMgc3RydWN0IGRzYV9sb29wX3BkYXRhIGRzYV9sb29wX3BkYXRhID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cXHRcXHQuY2QgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcxOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDcyOlxcdHN3aXRjaF9tZGlvZGV2LVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFxcdTAwMjZkc2FfbG9vcF9wZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcXHRyZXQgPSBkc2FfbG9vcF9jcmVhdGVfc3dpdGNoX21kaW9kZXYoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XFx0cmV0ID0gbWRpb19kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XFx0XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVxcdFxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwMzptb2R1bGVfaW5pdChkc2FfbG9vcF9pbml0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XFx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XFx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA5LVxcdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjA5LjAwNTQ3NDM2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3OTIzMzQ2NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgb24gYjUzIENvbm5lY3Rpdml0eSoqXG5cblJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBcImI1M1wiIHRoaW5nIGJldHRlci4gV2hhdCBleGFjdGx5ICppcyogYjUzIGluIHRoaXMgY29udGV4dD8gTGV0J3MgYXNzdW1lIGl0J3Mgc29tZSBraW5kIG9mIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGNvbXBvbmVudCDigJMgcGVyaGFwcyBhIHN3aXRjaCwgYSBzcGVjaWZpYyBpbnRlcmZhY2UsIG9yIGEgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQncyBpbnRlZ3JhdGVkLiBJcyBpdCBhIG1vZHVsZT8gSXMgaXQgYnVpbHQtaW4/IEhvdyBpcyBpdCBcImF0dGFjaGVkXCIgb3IgXCJyZWdpc3RlcmVkXCIgd2l0aCB0aGUgc3lzdGVtP1xuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaWdnaW5nIGluIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwYCAtIGl0J3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB0b29sIGZvciBsb2NhdGluZyBzdHJpbmdzIHdpdGhpbiB0ZXh0IGZpbGVzLiBJJ2xsIHNlYXJjaCBmb3IgcG90ZW50aWFsIGNsdWVzIGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIHNvdXJjZSBmb3IgXCJiNTMgZHJpdmVycy5cIiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBsb3ctaGFuZ2luZyBmcnVpdDogdGhlIG9idmlvdXMgZHJpdmVyIGZpbGVzLCBhbnkgaW5pdGlhbGl6YXRpb24gY29kZSwgb3IgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gQWZ0ZXIgdGhhdCBJJ2xsIGxvb2sgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gXCJLY29uZmlnLlwiIEtjb25maWcgZmlsZXMgYXJlIGVzc2VudGlhbDsgdGhleSB0ZWxsIG1lIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIGFuZCBob3cgdGhpcyBiNTMgY29tcG9uZW50IG1pZ2h0IGJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25maWd1cmVkIGF0IGJ1aWxkIHRpbWUuIEkgYmV0IGl0J3MgY29uZmlndXJlZCBpbiB0aGVyZSwgb3IgaXRzIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBpdC4gV2l0aCB0aG9zZSB0d28gYXBwcm9hY2hlcyBJIHNob3VsZCBiZSBhYmxlIHRvIGF0IGxlYXN0IHVuZGVyc3RhbmQgaXQgYSBiaXQgYmV0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzIxNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjExLjc5NzgxMDkxNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM5NjEyODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CNTNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MjQ5PUNPTkZJR19WSVJUSU9fTkVUPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNTA6Q09ORklHX0I1M19TUElfRFJJVkVSPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNTE6Q09ORklHX0I1M19NRElPX0RSSVZFUj1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MjUyOkNPTkZJR19CNTNfTU1BUF9EUklWRVI9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI1My1DT05GSUdfTkVUX0RTQV9CQ01fU0YyPW1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZToyOm9iai0kKENPTkZJR19CNTMpXFx0XFx0Kz0gYjUzX2NvbW1vbi5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZS0zLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfQjUzX1NQSV9EUklWRVIpXFx0Kz0gYjUzX3NwaS5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19CNTNfTURJT19EUklWRVIpXFx0Kz0gYjUzX21kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQjUzX01NQVBfRFJJVkVSKVxcdCs9IGI1M19tbWFwLm9cXG5kcml2ZXJzL25ldC9kc2EvYjUzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0I1M19TUkFCX0RSSVZFUilcXHQrPSBiNTNfc3JhYi5vXFxuZHJpdmVycy9uZXQvZHNhL2I1My9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19CNTNfU0VSREVTKVxcdCs9IGI1M19zZXJkZXMub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg9MTE1PXZvaWQgYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNi1cXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTgtaW50IGI1M19zZXJkZXNfaW5pdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9MzgyPXN0YXRpYyBpcnFyZXR1cm5fdCBiNTNfc3JhYl9wb3J0X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtMzkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzozOTQ6I2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTM5NS1zdGF0aWMgdTggYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ0Nj1zdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1My1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDU0OiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NTUtXFx0XFx0LyogSWYgcC1cXHUwMDNlbW9kZSBpbmRpY2F0ZXMgU0dNSUkgbW9kZSwgdGhhdCBlc3NlbnRpYWxseSBtZWFucyB3ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5Mi1cXHQucGh5bGlua19nZXRfY2FwcyA9IGI1M19zcmFiX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MzojaWYgSVNfRU5BQkxFRChDT05GSUdfQjUzX1NFUkRFUylcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDk0LVxcdC5waHlsaW5rX21hY19zZWxlY3RfcGNzID0gYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzLFxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTczND1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGRzYV9zd2l0Y2hlc19hcHBseV93b3JrYXJvdW5kc1tdID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTc0MC0jZW5kaWZcXG5uZXQvZHNhL3BvcnQuYzoxNzQxOiNpZiBJU19FTkFCTEVEKENPTkZJR19CNTMpXFxubmV0L2RzYS9wb3J0LmMtMTc0Mi1cXHRcXFwiYnJjbSxiY201MzI1XFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTI6MTMuNDM3NDMwMjIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MjQ5NTgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEtjb25maWcgZm9yIEI1MyBhbmQgRFNBIENvcmUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGI1MyBhbmQgdGhlIERTQSBjb3JlIGFyZSBjb25maWd1cmVkLCBzcGVjaWZpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBuYXZpZ2F0ZSB0aGUgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSdsbCBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWdgIHRvIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBiNTMgZHJpdmVyIG9wdGlvbnMuIEFmdGVyIHRoYXQsIEknbGwgbW92ZSB1cHN0cmVhbSB0byBgbmV0L2RzYS9LY29uZmlnYCB0byBzZWUgaG93IHRoZSBEU0EgY29yZSBpdHNlbGYgaXMgc2V0IHVwIGFuZCBpbnRlcnR3aW5lZCB3aXRoIHRoZSBiNTMgY29uZmlnLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byB1bmRlcnN0YW5kIGFsbCBjb25maWd1cmF0aW9uIGFzcGVjdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIGJldHdlZW4gdGhlIEI1MyBhbmQgdGhlIGNvcmUgRFNBIGRyaXZlcnMuIFRpbWUgdG8gc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxNS42Nzk5Mjg2ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMDY4MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEI1M1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjptZW51Y29uZmlnIEI1M1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBCQ001M3h4IG1hbmFnZWQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnOjE1OmNvbmZpZyBCNTNfU1BJX0RSSVZFUlxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiQjUzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6MjE6Y29uZmlnIEI1M19NRElPX0RSSVZFUlxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiQjUzIE1ESU8gY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnOjI3OmNvbmZpZyBCNTNfTU1BUF9EUklWRVJcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctMjgtXFx0dHJpc3RhdGUgXFxcIkI1MyBNTUFQIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZzozNTpjb25maWcgQjUzX1NSQUJfRFJJVkVSXFxuZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnLTM2LVxcdHRyaXN0YXRlIFxcXCJCNTMgU1JBQiBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWc6NDQ6Y29uZmlnIEI1M19TRVJERVNcXG5kcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIkI1MyBTZXJEZXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTI6MTUuNzIzMjM5NTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIwNzQwMjEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHJlYWRpbmcgYGRyaXZlcnMvbmV0L2RzYS9iNTMvS2NvbmZpZ2A6XG5cbioqQW5hbHl6aW5nIHRoZSBiNTMgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgQnJvYWRjb20gQjUzIHN3aXRjaCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIHZhcmlhdGlvbnMgb2YgdGhlc2Ugc3dpdGNoZXMuIEltbWVkaWF0ZWx5LCBJJ20gbG9va2luZyBmb3IgdGhlIG92ZXJhbGwgc3RydWN0dXJlIOKAkyB3aGF0J3MgdGhlIHRvcC1sZXZlbCBzeW1ib2wsIHdoYXQgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGF5LCBhbmQgaG93IGFyZSB0aGUgdmFyaW91cyBzdWItZmVhdHVyZXMgb3JnYW5pemVkPyBJJ2xsIGJlIGV4cGVjdGluZyB0byBzZWUgZGVmaW5pdGlvbnMgZm9yIHRoaW5ncyBsaWtlIGRpZmZlcmVudCBCNTMgY2hpcCByZXZpc2lvbnMsIFBIWSBzdXBwb3J0LCB2YXJpb3VzIG1hbmFnZW1lbnQgaW50ZXJmYWNlcyAobGlrZSBNRElPKSwgYW5kIG1heWJlIGV2ZW4gb3B0aW9ucyBmb3IgdGhpbmdzIGxpa2UgVkxBTiBjb25maWd1cmF0aW9uIG9yIFFvUy4gSSdsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIElmIGEgZmVhdHVyZSBpcyBkZXBlbmRlbnQgb24gYSBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbiwgSSdtIHRyeWluZyB0byBpZGVudGlmeSB3aGF0IGNhdXNlcyB0aGF0IHNlbGVjdGlvbi4gVGhlIGdvYWwgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gc3BhY2UgZm9yIHRoaXMgZHJpdmVyIHNvIEkgY2FuIGFudGljaXBhdGUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgYXJlYXMgd2hlcmUgY3VzdG9tIGNvbmZpZ3VyYXRpb24gbWlnaHQgYmUgbmVjZXNzYXJ5IGZvciBhIHNwZWNpZmljIHN5c3RlbSBpbnRlZ3JhdGlvbiBvciBuZXcgYm9hcmQgc3VwcG9ydC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBkZWZhdWx0IHNldHRpbmdzIHRoYXQgbWlnaHQgbmVlZCBvdmVycmlkaW5nIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZSwgYW5kIHN0YXJ0IHRvIGJ1aWxkIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFsbCB0aGUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NzMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxOS45MzA2NDQwMDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIEI1M1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJDTTUzeHggbWFuYWdlZCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQVxcbiAgIDU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX05PTkVcXG4gICA2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNXFxuICAgNzpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lcXG4gICA4OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1NcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX1BSRVBFTkRcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBCcm9hZGNvbSBtYW5hZ2VkIHN3aXRjaCBjaGlwcy4gSXQgc3VwcG9ydHNcXG4gIDEyOlxcdFxcdCAgQkNNNTMyNUUsIEJDTTUzNjUsIEJDTTUzOXgsIEJDTTUzMTE1IGFuZCBCQ001MzEyNSBhcyB3ZWxsIGFzIEJDTTYzWFhcXG4gIDEzOlxcdFxcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEI1M19TUElfRFJJVkVSXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiQjUzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gQjUzIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbmZpZ3VyZWQgdGhyb3VnaCBTUEkuXFxuICAyMDpcXHRcXG4gIDIxOlxcdGNvbmZpZyBCNTNfTURJT19EUklWRVJcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgTURJTyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDIzOlxcdFxcdGRlcGVuZHMgb24gQjUzXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIE1ESU8uXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCNTNfTU1BUF9EUklWRVJcXG4gIDI4OlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgTU1BUCBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDI5OlxcdFxcdGRlcGVuZHMgb24gQjUzIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTVxcbiAgMzA6XFx0XFx0ZGVmYXVsdCBCQ002M1hYIHx8IEJNSVBTX0dFTkVSSUNcXG4gIDMxOlxcdFxcdGhlbHBcXG4gIDMyOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIHN3aXRjaGVzIGxpa2UgdGhlIEJDTTYzWFhcXG4gIDMzOlxcdFxcdCAgaW50ZWdyYXRlZCBzd2l0Y2hlcy5cXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIEI1M19TUkFCX0RSSVZFUlxcbiAgMzY6XFx0XFx0dHJpc3RhdGUgXFxcIkI1MyBTUkFCIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMzc6XFx0XFx0ZGVwZW5kcyBvbiBCNTMgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNXFxuICAzODpcXHRcXHRkZXBlbmRzIG9uIEI1M19TRVJERVMgfHwgIUI1M19TRVJERVNcXG4gIDM5OlxcdFxcdGRlZmF1bHQgQVJDSF9CQ01fSVBST0NcXG4gIDQwOlxcdFxcdGhlbHBcXG4gIDQxOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIFN3aXRjaCBSZWdpc3RlciBBY2Nlc3NcXG4gIDQyOlxcdFxcdCAgQnJpZGdlIFJlZ2lzdGVycyAoU1JBQikgbGlrZSBpdCBpcyBmb3VuZCBvbiB0aGUgQkNNNTMwMTBcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0Y29uZmlnIEI1M19TRVJERVNcXG4gIDQ1OlxcdFxcdHRyaXN0YXRlIFxcXCJCNTMgU2VyRGVzIHN1cHBvcnRcXFwiXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEI1M1xcbiAgNDc6XFx0XFx0ZGVmYXVsdCBBUkNIX0JDTV9OU1BcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBTZXJEZXMgb24gZS5nOiBOb3J0aHN0YXIgUGx1cyBTb0NzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjoxOS45MzA3MDYzMThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY2ODMzMTQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlIGZvciBEU0EgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgRFNBIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvZHNhL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGVzLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIG92ZXJsYXAgYW5kIHBvdGVudGlhbGx5IHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGNvcmUgRFNBIGZ1bmN0aW9uYWxpdHkgYW5kIGFueSBzcGVjaWZpYyBkcml2ZXIgZGVwZW5kZW5jaWVzLiBTcGVjaWZpY2FsbHkgSSdsbCBjaGVjazpcblxuKiAgIFdoYXQgYXJlIHRoZSBjb3JlIERTQSBvcHRpb25zIGV4cG9zZWQsIGFuZCBob3cgYXJlIHRoZXkgc3RydWN0dXJlZD8gQXJlIHRoZXJlIGFueSB0b3AtbGV2ZWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICBIb3cgYXJlIHZhcmlvdXMgRFNBIGZlYXR1cmVzIChlLmcuLCBWTEFOIGZpbHRlcmluZywgcG9ydCBjb25maWd1cmF0aW9uKSBlbmFibGVkIGFuZCBkaXNhYmxlZD8gQXJlIHRoZXkgZ3JhbnVsYXIsIG9yIG1vcmUgbW9ub2xpdGhpYyBvcHRpb25zP1xuKiAgIFdoYXQgZHJpdmVycyBhcmUgZXhwbGljaXRseSBzdXBwb3J0ZWQgd2l0aGluIGVhY2ggS2NvbmZpZyBmaWxlLCBhbmQgaG93IGlzIHRoYXQgc3VwcG9ydCBkZWZpbmVkPyBBcmUgdGhlcmUgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBiYXNlZCBvbiB0aGUgcGxhdGZvcm0gb3IgdGhlIHRhcmdldCBoYXJkd2FyZT9cbiogICBBcmUgdGhlcmUgYW55IFwiRVhQRVJJTUVOVEFMXCIgb3IgXCJERVBSRUNBVEVEXCIgb3B0aW9ucz8gVGhlc2UgY2FuIGZsYWcgYXJlYXMgZm9yIGVpdGhlciBkZWVwZXIgaW52ZXN0aWdhdGlvbiBvciBwb3RlbnRpYWxseSBzdWdnZXN0IHRoZXkgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gY29uc2lkZXJhdGlvbi5cbiogICBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JraW5nIHN1YnN5c3RlbXMsIGxpa2UgbWFjc2VjIG9yIGJvbmRpbmcsIHRoYXQgSSBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQ/XG5cbkZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBhbmQgd2hpY2ggZmlsZXMgaG9sZCB0aGUgY29uZmlndXJhdGlvbiB0aGF0IG1hdHRlcnMgbW9zdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjIyLjU5OTAzOTc0OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudWNvbmZpZyBORVRfRFNBXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZVxcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEhTUiB8fCBIU1I9blxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IE5FVERFVklDRVNcXG4gICA4OlxcdFxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4gICA5OlxcdFxcdHNlbGVjdCBORVRfU1dJVENIREVWXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMjpcXHRcXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuICAxMzpcXHRcXHRoZWxwXFxuICAxNDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgc3dpdGNoZXMgc3VwcG9ydGVkXFxuICAxNTpcXHRcXHQgIGJ5IHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBORVRfRFNBXFxuICAxODpcXHRcXG4gIDE5OlxcdCMgRHJpdmVycyBtdXN0IHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdGFnZ2luZyBmb3JtYXQocylcXG4gIDIwOlxcdFxcbiAgMjE6XFx0Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcXG4gIDIyOlxcdFxcdHRyaXN0YXRlIFxcXCJOby1vcCB0YWcgZHJpdmVyXFxcIlxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBzd2l0Y2hlcyB3aGljaCBkb24ndCB0YWdcXG4gIDI1OlxcdFxcdCAgZnJhbWVzIG92ZXIgdGhlIENQVSBwb3J0LlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgTkVUX0RTQV9UQUdfQVI5MzMxXFxuICAyODpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXFxcIlxcbiAgMjk6XFx0XFx0aGVscFxcbiAgMzA6XFx0XFx0ICBTYXkgWSBvciBNIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0YWdnaW5nIGZyYW1lcyBmb3JcXG4gIDMxOlxcdFxcdCAgdGhlIEF0aGVyb3MgQVI5MzMxIFNvQyB3aXRoIGJ1aWx0LWluIHN3aXRjaC5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fQ09NTU9OXFxuICAzNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMzU6XFx0XFx0ZGVmYXVsdCBuXFxuICAzNjpcXHRcXG4gIDM3OlxcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4gIDM5OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbiAgNDA6XFx0XFx0aGVscFxcbiAgNDE6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxcbiAgNDI6XFx0XFx0ICBCcm9hZGNvbSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlIGFkZHJlc3MuXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRhZ2dpbmcgZnJhbWVzIGZvciB0aGVcXG4gIDQ5OlxcdFxcdCAgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgd2hpY2ggcGxhY2UgdGhlIHRhZyBhZnRlciB0aGUgTUFDIHNvdXJjZVxcbiAgNTA6XFx0XFx0ICBhZGRyZXNzLlxcbiAgNTE6XFx0XFx0ICBUaGlzIHRhZyBpcyB1c2VkIGluIEJDTTYzeHggbGVnYWN5IHN3aXRjaGVzIHdoaWNoIHdvcmsgd2l0aG91dCB0aGVcXG4gIDUyOlxcdFxcdCAgb3JpZ2luYWwgRkNTIGFuZCBsZW5ndGggYmVmb3JlIHRoZSB0YWcgaW5zZXJ0aW9uLlxcbiAgNTM6XFx0XFxuICA1NDpcXHRjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9MRUdBQ1lfRkNTXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNTN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4gIDU2OlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxcbiAgNTc6XFx0XFx0aGVscFxcbiAgNTg6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGFnZ2luZyBmcmFtZXMgZm9yIHRoZVxcbiAgNTk6XFx0XFx0ICBCQ001M3h4IGxlZ2FjeSBzd2l0Y2hlcyB3aGljaCBwbGFjZSB0aGUgdGFnIGFmdGVyIHRoZSBNQUMgc291cmNlXFxuICA2MDpcXHRcXHQgIGFkZHJlc3MuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjIyLjU5OTExMTgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY4NDgxMjkxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERTQSBTd2l0Y2ggVkxBTiBPZmZsb2FkIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgaW5zdGFudGlhdGlvbiBwcm9jZXNzIGZvciBEU0Egc3dpdGNoZXMgYW5kIGRldGVybWluZSBpZiBgbmV0L2RzYWAgb3IgYGI1M2AgY2FuIGJlIGVmZmVjdGl2ZWx5IHRlc3RlZCB3aXRoaW4gUUVNVS9zeXprYWxsZXIuIEZpcnN0LCBsZXQgbWUgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHBhdGNoJ3MgbW9kaWZpY2F0aW9ucy4gSXQgc2VlbXMgd2UgaGF2ZSBjaGFuZ2VzIHRvdWNoaW5nIHNldmVyYWwgZmlsZXM6XG5cbjEuICBgZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmNgIOKAkyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIFZMQU4gY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGBiNTNgIGRyaXZlcjogYGI1M192bGFuX2h3X2VudHJ5YCwgYGI1M19jb25maWd1cmVfdmxhbmAsIGBiNTNfdmxhbl9hZGRgLCBgYjUzX3ZsYW5fZGVsYCwgYGI1M19zdGFuZGFsb25lX3ZsYW5fcmVzeW5jYCwgYGI1M19icl9qb2luYCwgYGI1M19icl9sZWF2ZWAsIGFuZCBgYjUzX3N3aXRjaF9pbml0YC5cbjIuICBgaW5jbHVkZS9uZXQvZHNhLmhgIOKAkyBhIG5ldyBmaWVsZCwgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkOjFgLCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgYHN0cnVjdCBkc2Ffc3dpdGNoYC4gVGhpcyBpcyBhIGtleSBmbGFnLlxuMy4gIGBuZXQvZHNhL3BvcnQuY2Ag4oCTIFRoaXMgaW50cm9kdWNlcyBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gYGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKClgIGFuZCBgZHNhX3BvcnRfY2hhbmdlX2NvbmR1aXQoKWAuIElmIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaXMgc2V0LCBWTEFOIGZpbHRlcmluZyBpcyBieXBhc3NlZCBmb3Igc3RhbmRhbG9uZSB1c2VyIHBvcnRzLCBhbmQgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgY2hlY2sgaW4gdGhlIGNvbmR1aXQgY2hhbmdlIGZ1bmN0aW9uLlxuNC4gIGBuZXQvZHNhL3VzZXIuY2Ag4oCTIGBkc2FfdXNlcl9zZXR1cF90YWdnZXIoKWAgbm93IHNldHMgYHVzZXItXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSYCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIHRydWUuIFRoaXMgc3VnZ2VzdHMgaGFyZHdhcmUgVkxBTiBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLlxuXG5Ob3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXMuIEFyZSBhbnkgb2YgdGhlIHZpcnR1YWwgb3IgZW11bGF0ZWQgc3dpdGNoZXMgYWN0dWFsbHkgKnVzaW5nKiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgPyBUaGUgcmVhbCB2YWx1ZSBvZiB0aGlzIHBhdGNoIGhpbmdlcyBvbiB0aGF0LiBUbyBnZXQgYSBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY29kZSBzZWFyY2guIFRpbWUgdG8gZ3JlcCB0aGUgZW50aXJlIGNvZGViYXNlIGZvciBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGFuZCBzZWUgd2hlcmUgdGhpcyBmbGFnIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg2MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEyOjI5LjQ0NzI0Mjk3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0MjU0MDY4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMTczPXN0YXRpYyBpbnQgYjUzX3N3aXRjaF9pbml0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjU1LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMyNTY6XFx0ZGV2LVxcdTAwM2Vkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSAhaXM1MzI1KGRldikgXFx1MDAyNlxcdTAwMjYgIWlzNTM2NShkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyNTctXFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaD0zODU9c3RydWN0IGRzYV9zd2l0Y2gge1xcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmgtNDA4LVxcdC8qIE9mZmxvYWQgODAyMXEgdXBwZXJzIG9mIHN0YW5kYWxvbmUgcG9ydHMgZXZlbiB3aGVuIG5vdCBmaWx0ZXJpbmcgKi9cXG5pbmNsdWRlL25ldC9kc2EuaDo0MDk6XFx0dTMyXFx0XFx0XFx0bmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQ6MTtcXG5pbmNsdWRlL25ldC9kc2EuaC00MTAtXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz03OTE9aW50IGRzYV9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2FfcG9ydCAqZHAsIGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy04MzMtXFxubmV0L2RzYS9wb3J0LmM6ODM0OlxcdFxcdFxcdGlmIChkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQpXFxubmV0L2RzYS9wb3J0LmMtODM1LVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtODQ0LVxcbm5ldC9kc2EvcG9ydC5jOjg0NTpcXHRcXHRpZiAoIWRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCkge1xcbm5ldC9kc2EvcG9ydC5jLTg0Ni1cXHRcXHRcXHRlcnIgPSBkc2FfdXNlcl9tYW5hZ2Vfdmxhbl9maWx0ZXJpbmcoZHAtXFx1MDAzZXVzZXIsXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNDMyPWludCBkc2FfcG9ydF9jaGFuZ2VfY29uZHVpdChzdHJ1Y3QgZHNhX3BvcnQgKmRwLCBzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdCxcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE0NTMtXFx0ICogZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9maWx0ZXJpbmcsIGFuZCBldmVyeSBwb3J0IG9mIGFcXG5uZXQvZHNhL3BvcnQuYzoxNDU0OlxcdCAqIGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZCBzd2l0Y2gga2VlcHMgaXRzIDgwMjFxIHVwcGVyXFxubmV0L2RzYS9wb3J0LmMtMTQ1NS1cXHQgKiBWTEFOcyB3aGV0aGVyIGJyaWRnZWQgb3Igbm90LiBJbiB0dXJuIHRoaXMgbWVhbnMgVkxBTnMgb24gdGhlXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNDU4LVxcdHZsYW5fZmlsdGVyaW5nID0gZHNhX3BvcnRfaXNfdmxhbl9maWx0ZXJpbmcoZHApIHx8XFxubmV0L2RzYS9wb3J0LmM6MTQ1OTpcXHRcXHRcXHQgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkO1xcbm5ldC9kc2EvcG9ydC5jLTE0NjAtXFx0aWYgKHZsYW5fZmlsdGVyaW5nKSB7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0xOTI5PXN0YXRpYyBpbnQgZHNhX3VzZXJfY2xlYXJfdmxhbihzdHJ1Y3QgbmV0X2RldmljZSAqdmRldiwgaW50IHZpZCwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMTk0OC0gKiAgICAgLSBpZiBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX2ZpbHRlcmluZyA9IHRydWUsIE9SIGlmXFxubmV0L2RzYS91c2VyLmM6MTk0OTogKiAgICAgICBkcy1cXHUwMDNlbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWQgPSB0cnVlLCBPUiBpZlxcbm5ldC9kc2EvdXNlci5jLTE5NTAtICogICAgICAgKGRzLVxcdTAwM2V2bGFuX2ZpbHRlcmluZ19pc19nbG9iYWwgPSB0cnVlIEFORCB0aGVyZSBhcmUgYnJpZGdlcyBzcGFubmluZ1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY5OD12b2lkIGRzYV91c2VyX3NldHVwX3RhZ2dlcihzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcilcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI3MjEtXFx0aWYgKGRzLVxcdTAwM2VuZWVkc19zdGFuZGFsb25lX3ZsYW5fZmlsdGVyaW5nIHx8XFxubmV0L2RzYS91c2VyLmM6MjcyMjpcXHQgICAgZHMtXFx1MDAzZW5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkKVxcbm5ldC9kc2EvdXNlci5jLTI3MjMtXFx0XFx0dXNlci1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9IV19WTEFOX0NUQUdfRklMVEVSO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMjozMC45ODk3ODc1NTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MjkxMTA1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW52ZXN0aWdhdGlvbiBpbnRvIEI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgZmxhZyBpcyAqb25seSogc2V0IHdpdGhpbiBgYjUzX3N3aXRjaF9pbml0YCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uY2AuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIEI1MyBoYXJkd2FyZSBpcyBmdW5kYW1lbnRhbGx5LCBhbmQgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggaXQsIGhvdyBpdCdzIGRpc2NvdmVyZWQuXG5cbk15IG5leHQgc3RlcCBpcyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhlc2UgQjUzIHN3aXRjaCBkcml2ZXJzLiBJJ2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgcmVnaXN0cmF0aW9uIGFuZCBwcm9iZSBzZXF1ZW5jZXMgdG8gc2VlIGhvdyB0aGUga2VybmVsIHJlY29nbml6ZXMgYW5kIHNldHMgdXAgdGhlc2Ugc3dpdGNoZXMuXG5cblRoZW4sIEknbGwgZGl2ZSBpbnRvIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb25zIHRoZW1zZWx2ZXM6IGBiNTNfc3BpLmNgLCBgYjUzX21kaW8uY2AsIGBiNTNfbW1hcC5jYCwgYW5kIGBiNTNfc3JhYi5jYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgSSBuZWVkIHRvIGxvb2sgZm9yIGhvdyB0aGV5IGRlYWwgd2l0aCB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW50ZXJmYWNlcywgYW5kIGlkZW50aWZ5IHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoYXQgVkxBTiBvZmZsb2FkIGZsYWcgbWlnaHQgYmVjb21lIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc2OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxMzowOS44MTg5MDI0NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjA3NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTM5MT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGI1M19tZGlvX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zOTktfTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmM6NDAwOm1kaW9fbW9kdWxlX2RyaXZlcihiNTNfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy00MDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM9NDk3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGI1M19tbWFwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYy01MDYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jOjUwNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGI1M19tbWFwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTUwOC1NT0RVTEVfQVVUSE9SKFxcXCJKb25hcyBHb3Jza2kgXFx1MDAzY2pvZ29Ab3BlbndydC5vcmdcXHUwMDNlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYz0zNjE9c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGI1M19zcGlfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzcxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjM3Mjptb2R1bGVfc3BpX2RyaXZlcihiNTNfc3BpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTY4Mz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBiNTNfc3JhYl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjkyLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2OTM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihiNTNfc3JhYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02OTQtTU9EVUxFX0FVVEhPUihcXFwiSGF1a2UgTWVocnRlbnMgXFx1MDAzY2hhdWtlQGhhdWtlLW0uZGVcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjEzOjA5Ljg4NTUxNDUwN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NjM4OTgwNjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYjUzIGFuZCBEU0EgQ29yZSBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIGBiNTNgIGRpcmVjdG9yeSBhbmQgaXRzIGFzc29jaWF0ZWQgZHJpdmVyczogYGI1M19tZGlvX2RyaXZlcmAsIGBiNTNfbW1hcF9kcml2ZXJgLCBgYjUzX3NwaV9kcml2ZXJgLCBhbmQgYGI1M19zcmFiX2RyaXZlcmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSBCcm9hZGNvbSBCNTMgcGh5c2ljYWwgc3dpdGNoIGNoaXBzLCB1c2VkIGluIHRoZWlyIFNvQ3MgYW5kIHJvdXRlcnMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFllcywgY29uZmlybWVkLiBCQ001MzI1RSwgNTM2NSwgNTM5eCwgNTMxMTUsIDUzMTI1LCBhbmQgNjNYWCBhcmUgRXRoZXJuZXQgc3dpdGNoIElDcyBmcm9tIEJyb2FkY29tLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhlc2UgYmUgcHJvYmVkL2luc3RhbnRpYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgbmVlZGluZyBhY3R1YWwgaGFyZHdhcmU/IE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgSSBjYW4ndCB0aGluayBvZiBhbnkgd2F5IHRoZSBNRElPL1NQSS9wbGF0Zm9ybSBkZXZpY2VzIGZvciBgYjUzYCB3b3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cC4gU3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSB0aG9zZSBtb2NrcyB1bmxlc3MgdGhlIGRyaXZlcnMgYXJlIGVtdWxhdGVkIGluIFFFTVUsIGJ1dCBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aG9zZSBjaGlwcyFcblxuU28sIEknbSBub3cgZm9jdXNpbmcgb24gd2hldGhlciBjaGFuZ2VzIGluIGBuZXQvZHNhL3BvcnQuY2AgYW5kIGBuZXQvZHNhL3VzZXIuY2AgcmVsYXRlZCB0byBgYjUzYCdzIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgaGF2ZSBhbnkgd2lkZXIgaW1wbGljYXRpb25zLiBMZXQncyBzZWUuLi5cblxuSSd2ZSBmb3VuZCB0aGUgb2NjdXJyZW5jZXMgb2YgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpbiB0aGUgY29kZSwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJIHNlZSB0aGF0IHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIHRydWUgZm9yIGBiNTNgIGNoaXBzIHdoaWNoIGFyZSBCQ001MzI1RSBhbmQgQkNNNTM2NSwgYW5kIGZhbHNlIGZvciBvdGhlciBEU0Egc3dpdGNoZXMgKGxpa2UgYGRzYV9sb29wYCkuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LCBJJ20gdHJhY2luZyBob3cgdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgdmFyaWFibGUgYWZmZWN0cyB0aGUgRFNBIGNvZGU6XG5cbi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBJZiB0aGUgdmFsdWUgaXMgMCAoZmFsc2UpLCB0aGUgY29kZSBiZWhhdmVzIGFzIGJlZm9yZS5cbi0gICBJbiBgbmV0L2RzYS9wb3J0LmNgOiBTaW1pbGFyIGZvciB0aGUgdmxhbiBmaWx0ZXJpbmcgY29uZGl0aW9uLCBubyBjaGFuZ2UgZm9yIGZhbHNlLlxuLSAgIEluIGBuZXQvZHNhL3VzZXIuY2A6IEFnYWluLCB3aGVuIGl0IGlzIGZhbHNlLCB0aGVyZSBpcyBubyBjaGFuZ2UuXG5cblNvLCBpbiBlc3NlbmNlLCB0aGUgRFNBIGNvcmUgbG9naWMgYmVoYXZlcyBpZGVudGljYWxseSBmb3IgYW55IERTQSBzd2l0Y2ggZHJpdmVyIG90aGVyIHRoYW4gYGI1M2AgaXRzZWxmLiBUaGlzIG1lYW5zIHRoYXQsIGZvciBvdGhlciBEU0Egc3dpdGNoZXMsIHRoZSBjaGFuZ2VzIGluIHRoZSBEU0EgY29kZSBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBidWdzIG9yIG5ldyBleGVjdXRpb24gcGF0aHMuXG5cbk5vdywgZm9yIGBiNTNgLCBjYW4gaXQgYmUgcHJvYmVkIG9yIG5vdD8gQ2FuIEkgZXZlbiBydW4gdGhlIGRyaXZlcj8gSSBuZWVkIHRvIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMgYWdhaW46IFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHVucmVhY2hhYmxlIGNvZGUsIG9yIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGluIFFFTVUuIFRoYXQncyBhIGdvb2QgZ3VpZGUsIGFuZCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBJIHdvdWxkIG5lZWQgcmVhbCBoYXJkd2FyZSB0byB0ZXN0IHRoZXNlIGRyaXZlcnMuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBiNTNgIGlzIHJlZ2lzdGVyZWQsIGlmIGFueSBtb2NrIGJ1cyBjYW4gYmUgdXNlZC4gSSB3aWxsIGNoZWNrIGBiNTNfbWRpby5jYCwgYGI1M19tbWFwLmNgLCBgYjUzX3NwaS5jYCwgYGI1M19zcmFiLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRoaXMgY291bGQgYmUgaW5zdGFudGlhdGVkLCBvciBpZiBpdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MTYuMjc1MzIzNDQ2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qXFxuICAgMjpcXHQgKiBCNTMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggTUlJIHJlZ2lzdGVyc1xcbiAgIDM6XFx0ICpcXG4gICA0OlxcdCAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIEpvbmFzIEdvcnNraSBcXHUwMDNjam9nb0BvcGVud3J0Lm9yZ1xcdTAwM2VcXG4gICA1OlxcdCAqXFxuICAgNjpcXHQgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcXG4gICA3OlxcdCAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcXG4gICA4OlxcdCAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFxcXCJBUyBJU1xcXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXFxuICAxMTpcXHQgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXFxuICAxMjpcXHQgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxcbiAgMTM6XFx0ICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xcbiAgMTQ6XFx0ICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXFxuICAxNTpcXHQgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxcbiAgMTY6XFx0ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cXG4gIDE3OlxcdCAqL1xcbiAgMTg6XFx0XFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAyMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAgMjQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JyY21waHkuaFxcdTAwM2VcXG4gIDI1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4gIDI2OlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvZHNhLmhcXHUwMDNlXFxuICAyNzpcXHRcXG4gIDI4OlxcdCNpbmNsdWRlIFxcXCJiNTNfcHJpdi5oXFxcIlxcbiAgMjk6XFx0XFxuICAzMDpcXHQvKiBNSUkgcmVnaXN0ZXJzICovXFxuICAzMTpcXHQjZGVmaW5lIFJFR19NSUlfUEFHRSAgICAweDEwICAgIC8qIE1JSSBQYWdlIHJlZ2lzdGVyICovXFxuICAzMjpcXHQjZGVmaW5lIFJFR19NSUlfQUREUiAgICAweDExICAgIC8qIE1JSSBBZGRyZXNzIHJlZ2lzdGVyICovXFxuICAzMzpcXHQjZGVmaW5lIFJFR19NSUlfREFUQTAgICAweDE4ICAgIC8qIE1JSSBEYXRhIHJlZ2lzdGVyIDAgKi9cXG4gIDM0OlxcdCNkZWZpbmUgUkVHX01JSV9EQVRBMSAgIDB4MTkgICAgLyogTUlJIERhdGEgcmVnaXN0ZXIgMSAqL1xcbiAgMzU6XFx0I2RlZmluZSBSRUdfTUlJX0RBVEEyICAgMHgxYSAgICAvKiBNSUkgRGF0YSByZWdpc3RlciAyICovXFxuICAzNjpcXHQjZGVmaW5lIFJFR19NSUlfREFUQTMgICAweDFiICAgIC8qIE1JSSBEYXRhIHJlZ2lzdGVyIDMgKi9cXG4gIDM3OlxcdFxcbiAgMzg6XFx0I2RlZmluZSBSRUdfTUlJX1BBR0VfRU5BQkxFICAgICBCSVQoMClcXG4gIDM5OlxcdCNkZWZpbmUgUkVHX01JSV9BRERSX1dSSVRFICAgICAgQklUKDApXFxuICA0MDpcXHQjZGVmaW5lIFJFR19NSUlfQUREUl9SRUFEICAgICAgIEJJVCgxKVxcbiAgNDE6XFx0XFxuICA0MjpcXHRzdGF0aWMgaW50IGI1M19tZGlvX29wKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IHBhZ2UsIHU4IHJlZywgdTE2IG9wKVxcbiAgNDM6XFx0e1xcbiAgNDQ6XFx0XFx0aW50IGk7XFxuICA0NTpcXHRcXHR1MTYgdjtcXG4gIDQ2OlxcdFxcdGludCByZXQ7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gZGV2LVxcdTAwM2Vwcml2O1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRpZiAoZGV2LVxcdTAwM2VjdXJyZW50X3BhZ2UgIT0gcGFnZSkge1xcbiAgNTA6XFx0XFx0XFx0Lyogc2V0IHBhZ2UgbnVtYmVyICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjE2LjI3NTQwNDc5NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NTgxODUwMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIGI1MyBTd2l0Y2ggRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBiNTMgc3dpdGNoIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIHBhdGggZm9yIGJyaW5naW5nIGEgc3dpdGNoIG1hbmFnZWQgYnkgdGhpcyBkcml2ZXIgb25saW5lLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYSBmZXcga2V5IGZ1bmN0aW9uczogYGI1M19tZGlvX3Byb2JlYCwgYGI1M19zd2l0Y2hfaW5pdGAsIGFuZCB0aGVuIHRoZSBwYWlyIGBiNTNfc3dpdGNoX2FsbG9jYCBhbmQgYGI1M19zd2l0Y2hfcmVnaXN0ZXJgLlxuXG5gYjUzX21kaW9fcHJvYmVgIGlzIGxpa2VseSB3aGVyZSB0aGUgTURJTyBidXMgaW50ZXJhY3Rpb24gaGFwcGVucywgZGlzY292ZXJpbmcgdGhlIHN3aXRjaCdzIHByZXNlbmNlIGFuZCBwb3RlbnRpYWxseSByZXRyaWV2aW5nIGl0cyBpbml0aWFsIGNvbmZpZ3VyYXRpb24gb3IgY2FwYWJpbGl0aWVzIHZpYSB0aGUgTUlJIChNYW5hZ2VtZW50IEludGVyZmFjZSkuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gZGlzY292ZXIgYW5kIHNldCB1cCBjb21tdW5pY2F0aW9uLlxuXG5OZXh0LCBgYjUzX3N3aXRjaF9pbml0YCBmZWVscyBsaWtlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuIEkgZXhwZWN0IHRvIHNlZSBoYXJkd2FyZS1zcGVjaWZpYyBzZXR1cCBoZXJlLCBtYXliZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiwgUEhZIGNvbmZpZ3VyYXRpb24sIGFuZCBzZXR0aW5nIHVwIGludGVycnVwdHMuIFRoaXMgaXMgd2hlcmUgdGhlIGRyaXZlciBpbnRlcmFjdHMgZGlyZWN0bHkgd2l0aCB0aGUgc3dpdGNoIGhhcmR3YXJlLlxuXG5Gb2xsb3dpbmcgdGhhdCwgYGI1M19zd2l0Y2hfYWxsb2NgIHNob3VsZCBiZSByZXNwb25zaWJsZSBmb3IgYWxsb2NhdGluZyB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgdG8gcmVwcmVzZW50IHRoZSBzd2l0Y2guIEknbGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB3aGF0J3MgYWxsb2NhdGVkOyBpcyBpdCBtZW1vcnkgdG8gY29udGFpbiByZWdpc3RlciBtYXBzPyBJbmZvcm1hdGlvbiBhYm91dCBwb3J0cz8gVGhpcyBpcyB0aGUgZHJpdmVyJ3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uIEFuZCB0aGVuLCBgYjUzX3N3aXRjaF9yZWdpc3RlcmAgbXVzdCBiZSByZWdpc3RlcmluZyB0aGUgYWxsb2NhdGVkIHN0cnVjdHVyZXMgd2l0aCB0aGUga2VybmVsLCBtYWtpbmcgdGhlIHN3aXRjaCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFNvLCB0aGUgcmVnaXN0cmF0aW9uIG11c3QgYmUgc2V0dGluZyB1cCBhbGwgb2YgdGhlIGRhdGEgdGhhdCB0aGUgbmV0d29ya2luZyBzdGFjayBuZWVkcyB0byBmaW5kIHRoZSBzd2l0Y2guXG5cbkVzc2VudGlhbGx5LCBJJ20gdGhpbmtpbmcgb2YgYG1kaW9fcHJvYmVgIGFzIGRpc2NvdmVyeSwgYGluaXRgIGFzIGNvbmZpZ3VyYXRpb24vaGFyZHdhcmUgc2V0dXAsIGFuZCBgYWxsb2NgL2ByZWdpc3RlcmAgYXMgZGF0YSBzdHJ1Y3R1cmUgY3JlYXRpb24gYW5kIGludGVncmF0aW9uIHdpdGggdGhlIGtlcm5lbCdzIG5ldHdvcmsgbWFuYWdlbWVudC4gQnkgdHJhY2luZyB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGNhbGwgZGVwZW5kZW5jaWVzLCBhbmQgaW5zcGVjdGluZyBob3cgcmVnaXN0ZXJzIGFuZCBvdGhlciBkYXRhIHN0cnVjdHVyZXMgYXJlIHBvcHVsYXRlZCBkdXJpbmcgdGhpcyBwcm9jZXNzLCBJIHNob3VsZCBnZXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhIGI1MyBzd2l0Y2ggaXMgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIEl0J3MgYSBmdW5kYW1lbnRhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgbmV0d29yayBkcml2ZXIgd29ya3MgYW5kIGNhbiBiZSBsZXZlcmFnZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzE2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNDoyMC44NTcyNTg4MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDYzOTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiNTNfc3dpdGNoX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMzODk9RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX2RldGVjdCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5MC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMzkxOmludCBiNTNfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzM5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDExLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozNDEyOkVYUE9SVF9TWU1CT0woYjUzX3N3aXRjaF9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzQxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYz0yOTI9c3RhdGljIGludCBiNTNfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tZGlvLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYzozNDU6XFx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYz00MDU9c3RhdGljIGludCBiNTNfbW1hcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ0OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmM6NDUwOlxcdHJldHVybiBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jLTQ1MS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg9Mjg0PWludCBiNTNfc3dpdGNoX2RldGVjdChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg1LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoyODY6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTI4Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jPTI5Nj1zdGF0aWMgaW50IGI1M19zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwNy1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcGkuYzozMDg6XFx0cmV0ID0gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jLTMwOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTYxOD1zdGF0aWMgaW50IGI1M19zcmFiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo2NTc6XFx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNjU4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MjAuOTY3OTAzMjA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUzNDU3OTQ3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIE1vZHVsZSBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBkaWdnaW5nLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFuZHNjYXBlIGFyb3VuZCB0aGlzIGBiNTNfc3dpdGNoX3JlZ2lzdGVyYCBmdW5jdGlvbiwgYW5kIHRoZSBgYjUzX2NvbW1vbi5jYCBmaWxlIG1vcmUgYnJvYWRseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hvIGVsc2UgaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB3aG8gbWlnaHQgYmUgcmVseWluZyBvbiB0aGF0IHNoYXJlZCBjb21tb24gY29kZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgYSBjb21wcmVoZW5zaXZlIHNlYXJjaCDigJMgYSBnb29kIG9sZCBgZ3JlcGAgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0cmVlLiBMZXQncyBzZWUgd2hhdCB0dXJucyB1cCB3aGVuIEkgbG9vayBmb3IgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBgYjUzX2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgcmVsYXRlZCBkcml2ZXJzIG9yIG1vZHVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTYzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTQ6MjYuMzEzNzAxMTgxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDE0NjA2NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImI1M19zd2l0Y2hfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MzM4OT1FWFBPUlRfU1lNQk9MKGI1M19zd2l0Y2hfZGV0ZWN0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkwLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjMzOTE6aW50IGI1M19zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGI1M19kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMzkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTM0MTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjM0MTI6RVhQT1JUX1NZTUJPTChiNTNfc3dpdGNoX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zNDEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jPTI5Mj1zdGF0aWMgaW50IGI1M19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21kaW8uYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jOjM0NTpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbWRpby5jLTM0Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfbW1hcC5jPTQwNT1zdGF0aWMgaW50IGI1M19tbWFwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmMtNDQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX21tYXAuYzo0NTA6XFx0cmV0dXJuIGI1M19zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19tbWFwLmMtNDUxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0yODQ9aW50IGI1M19zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0yODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjI4NjppbnQgYjUzX3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3QgYjUzX2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmM9Mjk2PXN0YXRpYyBpbnQgYjUzX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzA3LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NwaS5jOjMwODpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3BpLmMtMzA5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NjE4PXN0YXRpYyBpbnQgYjUzX3NyYWJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTYtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjY1NzpcXHRyZXR1cm4gYjUzX3N3aXRjaF9yZWdpc3RlcihkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy02NTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTU0OTpcXHRyZXQgPSBiNTNfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNTUwLVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjI4LjcyODMxNjA2MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjM2MTM3NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBCQ01fU0YyIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jYC4gSG1tLCB3aGF0J3MgdGhpcyBgYmNtX3NmMmAgYWxsIGFib3V0PyBBaCwgcmlnaHQsIGl0J3MgdGhlIFN0YXJmaWdodGVyIDIgc3dpdGNoLCB1c2VkIG9uIHRob3NlIEJyb2FkY29tIFNldCBUb3AgQm94IGFuZCBpUHJvYyBwbGF0Zm9ybXMg4oCTIHRob3NlIEFSTSBhbmQgTUlQUy1iYXNlZCBTeXN0ZW0tb24tQ2hpcHMuIE9rYXksIGdvdCBpdC4gTm93LCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGl0cyBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBiY21fc2YyYCBLY29uZmlnIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBmZWF0dXJlIHNldCBhbmQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQxOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA5OjE0OjM0Ljk2NDQ1NjE4OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE4NDExNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfQkNNX1NGMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTU9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvYjUzL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo3OmNvbmZpZyBORVRfRFNBX0JDTV9TRjJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBTdGFyZmlnaHRlciAyIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNDozNS4wNDYzMDI1MzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjkwMDM0MDk0OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgRFNBIENvcmUgQ2hhbmdlcyBhbmQgQXBwbGljYWJpbGl0eSB0byBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZywgYW5kIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgbGVhbmluZyB0b3dhcmRzIFwibm8uXCIgRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGNvZGUgY2hhbmdlcyBhcmUgaW5hY2Nlc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIGlmIGFueSBvZiB0aGUgYGI1M2AgZmFtaWx5IGRyaXZlcnMgb3IgYGJjbV9zZjJgIGNvdWxkIGJlIHByb2JlZCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlLiBRdWlja2x5LCBpdCBiZWNhbWUgY2xlYXIgdGhhdCBub25lIG9mIHRoZW0gY291bGQgYmU6IGBiNTNfc3BpYCwgYGI1M19tZGlvYCwgYGI1M19tbWFwYCwgYW5kIGBiNTNfc3JhYmAgYWxsIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMg4oCTIFNQSSBjb250cm9sbGVycywgTURJTyBidXNlcywgb3IgQnJvYWRjb20gU29DcyB3aXRoIG1lbW9yeS1tYXBwZWQgc3dpdGNoZXMsIHJlc3BlY3RpdmVseS4gTGlrZXdpc2UsIGBiY21fc2YyYCBpcyBhbHNvIHBsYXRmb3JtLXNwZWNpZmljLiBTdGFuZGFyZCBRRU1VIHg4Nl82NCBvciBhcm02NCB2aXJ0IG1hY2hpbmVzIGRvbid0IGVtdWxhdGUgdGhlc2UuIEkgbmVlZCB0byBub3RlIHRoYXQgdGhleSBkb24ndCBldmVuICpleGlzdCogaW4gdGhlc2UgZW52aXJvbm1lbnRzLCBzbyBhbnkgcHJvYmluZyB3b3VsZCBmYWlsLlxuXG5UaGVuIEkgY29uc2lkZXJlZCB0aGUgRFNBIGNvcmUgY2hhbmdlcyB0aGVtc2VsdmVzLCBzcGVjaWZpY2FsbHkgdGhlIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgdmFyaWFibGUuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGxvZ2ljIGNoYW5nZXMgYmFzZWQgb24gdGhpcyB2YXJpYWJsZSBpbiBgbmV0L2RzYS9wb3J0LmNgIGFuZCBgbmV0L2RzYS91c2VyLmNgLiAgSSBzZWUgdGhhdCB0aGUgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBmbGFnIGlzIG9ubHkgZXZlciBzZXQgdG8gdHJ1ZSB3aXRoaW4gYGI1M19zd2l0Y2hfaW5pdGAuIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQuXG5cbk15IGFzc3VtcHRpb24gaXMgdGhhdCBmb3IgYW55IFwicmVhY2hhYmxlXCIgc3dpdGNoLCBsaWtlIGBkc2FfbG9vcGAgb3IgYSBmdXR1cmUgbW9jayBzd2l0Y2gsIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2lsbCBiZSBmYWxzZSwgYmVjYXVzZSBgYjUzX3N3aXRjaF9pbml0YCBpcyBuZXZlciBjYWxsZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBgbmVlZHNfc3RhbmRhbG9uZV92bGFuX29mZmxvYWRgIGlzIGZhbHNlLCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBwYXRjaCdzIGVmZmVjdHMgKm9ubHkqIGFwcGx5IHdoZW4gYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCBpcyB0cnVlLCB3aGljaCBpcyAqZXhjbHVzaXZlbHkqIG9uIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZSAoYjUzIG9yIGJjbV9zZjIpLlxuXG5UaGlzIGxvb2tzIGxpa2UgaXQgZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlIFwiY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50c1wiIHJ1bGUgZm9yIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjazpcblxuMS4gIElzIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgc2V0ICphbnl3aGVyZSogZWxzZT8gQSBxdWljayBgZ3JlcHBlcmAgY29uZmlybXMgdGhhdCB0aGUgb25seSBwbGFjZSBpcyBpbmRlZWQgYGRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jYC5cbjIuICBDYW4gKmFueSogb2YgdGhlIGBiNTNgIGRyaXZlcnMsIGluY2x1ZGluZyBgYjUzX2NvbW1vbi5jYCBvciBpdHMgc3ViLWRyaXZlcnMsIGJlIGluc3RhbnRpYXRlZC9wcm9iZWQgaW4gUUVNVSBvciBHQ0U/IE5vLiBUaGV5J3JlIGFsbCB2ZW5kb3Itc3BlY2lmaWMgc3dpdGNoIGRyaXZlcnMgcmVxdWlyaW5nIGVpdGhlciBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSAoQkNNNTN4eCBvciBTdGFyZmlnaHRlciAyKSBvciBjdXN0b20gQnJvYWRjb20gTUlQUy9BUk0gU29Dcywgd2hpY2ggc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUuXG4zLiAgRG8gdGhlIERTQSBjb3JlIGNoYW5nZXMgYWZmZWN0IG90aGVyIERTQSBzd2l0Y2hlcz8gTm8sIGFsbCBvdGhlciBzd2l0Y2hlcyBoYXZlIHRoZSB2YXJpYWJsZSBzZXQgdG8gMCAoZmFsc2UpLCBzbyB0aGVpciBiZWhhdmlvciByZW1haW5zIGlkZW50aWNhbCB0byB0aGUgY29kZSAqYmVmb3JlKiB0aGUgcGF0Y2guXG5cblRoZSBjb25jbHVzaW9uIGlzIGNyeXN0YWwgY2xlYXIuIFRoZXNlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoZXJlZm9yZSBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIGFuZCBsZXQgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBkbyBpdHMgdGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzcyLCJPdXRwdXRUb2tlbnMiOjE0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDk6MTU6MDQuMDQ5NzE1MDg4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdGFuZGFsb25lIFZMQU4gb2ZmbG9hZGluZyBmb3IgQnJvYWRjb20gQjUzIC8gQkNNX1NGMiBzd2l0Y2hlcy4gVGhlIGNvcmUgRFNBIGNoYW5nZXMgaW50cm9kdWNlIGEgbmV3IGZsYWcgYG5lZWRzX3N0YW5kYWxvbmVfdmxhbl9vZmZsb2FkYCB3aGljaCBpcyBvbmx5IGVuYWJsZWQgYnkgdGhlIGBiNTNgIGRyaXZlciBmb3IgcGh5c2ljYWwgQnJvYWRjb20gc3dpdGNoIGhhcmR3YXJlLiBCZWNhdXNlIEJyb2FkY29tIEI1MyBzd2l0Y2hlcyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgbm8gb3RoZXIgZHJpdmVyIHNldHMgdGhpcyBmbGFnIChsZWF2aW5nIGdlbmVyYWwgRFNBIGJlaGF2aW9yIHVuY2hhbmdlZCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3RhbmRhbG9uZSBWTEFOIG9mZmxvYWRpbmcgZm9yIEJyb2FkY29tIEI1MyAvIEJDTV9TRjIgc3dpdGNoZXMuIFRoZSBjb3JlIERTQSBjaGFuZ2VzIGludHJvZHVjZSBhIG5ldyBmbGFnIGBuZWVkc19zdGFuZGFsb25lX3ZsYW5fb2ZmbG9hZGAgd2hpY2ggaXMgb25seSBlbmFibGVkIGJ5IHRoZSBgYjUzYCBkcml2ZXIgZm9yIHBoeXNpY2FsIEJyb2FkY29tIHN3aXRjaCBoYXJkd2FyZS4gQmVjYXVzZSBCcm9hZGNvbSBCNTMgc3dpdGNoZXMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIG5vIG90aGVyIGRyaXZlciBzZXRzIHRoaXMgZmxhZyAobGVhdmluZyBnZW5lcmFsIERTQSBiZWhhdmlvciB1bmNoYW5nZWQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwOToxNTowNC4wNDk3NTEzOThaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszr7f[1] Phase: Running StartedAt: 2026-08-31 09:15:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszr7f[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 09:15:15 +0000 UTC FinishedAt: 2026-08-31 09:15:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}