Name: series-workflowt7ssb Phase: Failed StartedAt: 2026-08-30 14:34:48 +0000 UTC FinishedAt: 2026-08-30 15:13:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7ssb[0] Phase: Succeeded StartedAt: 2026-08-30 14:34:48 +0000 UTC FinishedAt: 2026-08-30 15:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7ssb[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 14:34:48 +0000 UTC FinishedAt: 2026-08-30 15:13:11 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGMyNzliMWQ4MWQyZjNlMmY2MDMzYzAxNzliOGY3OWI0NmMzY2M3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuaW5kZXggMjgzZDI1ZmFlNzllNy4uZmYxNjc0ZWZmN2FkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXG5AQCAtMTY3NywxNiAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdGlmICghbGVuZ3RoKVxuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFxuLVx0XHQvKiBSZXBvcnQgZGVzY3JpcHRvcnMgd2l0aCBsZW5ndGggZ3JlYXRlciB0aGFuIHBhZ2Ugc2l6ZSAqL1xuLVx0XHRpZiAobGVuZ3RoIFx1MDAzZSBQQUdFX1NJWkUpIHtcbiYjNDM7XHRcdC8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGludmFsaWQgbWVzc2FnZSBleHRlbnRzLiAqL1xuJiM0MztcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKG1zZy1cdTAwM2VoZHIpIHx8IGxlbmd0aCBcdTAwM2UgUEFHRV9TSVpFKSB7XG4gXHRcdFx0ZGV2X3dhcm4oZmJkLVx1MDAzZWRldixcbiBcdFx0XHRcdCBcJiMzNDtJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXG5cJiMzNDssXG4gXHRcdFx0XHQgbGVuZ3RoKTtcbiBcdFx0XHRnb3RvIG5leHRfcGFnZTtcbiBcdFx0fVxuIFxuLVx0XHRpZiAobGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aClcbiYjNDM7XHRcdGlmICghbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pIHx8XG4mIzQzO1x0XHQgICAgbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aCkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsIFwmIzM0O01haWxib3ggbWVzc2FnZSBsZW5ndGggbWlzbWF0Y2hcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG5leHRfcGFnZTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0LyogSWYgcGFyc2luZyBmYWlscyBkdW1wIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gZG1lc2cgKi9cbiBcdFx0ZXJyID0gZmJuaWNfdGx2X21zZ19wYXJzZShmYmQsIG1zZywgZmJuaWNfZndfdGx2X3BhcnNlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbmluZGV4IGM1NWQ0Zjc2YTVmYzAuLjYzOWY5MDY2NGQ5ODIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jXG5AQCAtNDI3LDkgJiM0Mzs0MjcsMTIgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFx0LyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqL1xuIFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIFx0XHR1MTYgYXR0cl9pZCA9IGF0dHItXHUwMDNlaGRyLnR5cGU7XG4tXHRcdHUxNiBhdHRyX2xlbjtcbiYjNDM7XHRcdHUxNiBhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0aW50IGVycjtcbiBcbiYjNDM7XHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC00NDMsNyAmIzQzOzQ0Niw2IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcbiBcdFx0cmVzdWx0c1tpJiM0MzsmIzQzO10gPSBhdHRyO1xuIFxuLVx0XHRhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0bGVuIC09IGF0dHJfbGVuO1xuIFx0XHRhdHRyICYjNDM7PSBhdHRyX2xlbjtcbiBcdH1cbkBAIC00NzYsMTEgJiM0Mzs0NzgsMTUgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFxuIFx0LyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqL1xuIFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuLVx0XHRpbnQgZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcbiBcdFx0dTE2IGF0dHJfaWQgPSBhdHRyLVx1MDAzZWhkci50eXBlO1xuLVx0XHR1MTYgYXR0cl9sZW47XG4mIzQzO1x0XHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4mIzQzO1x0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRcdC8qIFN0b3AgcGFyc2luZyBvbiBmdWxsIGVycm9yICovXG4mIzQzO1x0XHRlcnIgPSBmYm5pY190bHZfYXR0cl92YWxpZGF0ZShhdHRyLCB0bHZfaW5kZXgpO1xuIFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXG5AQCAtNDkzLDcgJiM0Mzs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXG4gXHRcdFx0cmVzdWx0c1thdHRyX2lkXSA9IGF0dHI7XG4gXHRcdH1cbiBcbi1cdFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4gXHRcdGxlbiAtPSBhdHRyX2xlbjtcbiBcdFx0YXR0ciAmIzQzOz0gYXR0cl9sZW47XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTQ6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGMyNzliMWQ4MWQyZjNlMmY2MDMzYzAxNzliOGY3OWI0NmMzY2M3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jCmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmMKQEAgLTE2NzcsMTYgJiM0MzsxNjc3LDE5IEBAIHN0YXRpYyB2b2lkIGZibmljX21ieF9wcm9jZXNzX3J4X21zZ3Moc3RydWN0IGZibmljX2RldiAqZmJkKQogCQlpZiAoIWxlbmd0aCkKIAkJCWdvdG8gbmV4dF9wYWdlOwogCi0JCS8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGxlbmd0aCBncmVhdGVyIHRoYW4gcGFnZSBzaXplICovCi0JCWlmIChsZW5ndGggJmd0OyBQQUdFX1NJWkUpIHsKJiM0MzsJCS8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGludmFsaWQgbWVzc2FnZSBleHRlbnRzLiAqLwomIzQzOwkJaWYgKGxlbmd0aCAmbHQ7IHNpemVvZihtc2ctJmd0O2hkcikgfHwgbGVuZ3RoICZndDsgUEFHRV9TSVpFKSB7CiAJCQlkZXZfd2FybihmYmQtJmd0O2RldiwKIAkJCQkgJiMzNDtJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcbiYjMzQ7LAogCQkJCSBsZW5ndGgpOwogCQkJZ290byBuZXh0X3BhZ2U7CiAJCX0KIAotCQlpZiAobGUxNl90b19jcHUobXNnLSZndDtoZHIubGVuKSAqIHNpemVvZih1MzIpICZndDsgbGVuZ3RoKQomIzQzOwkJaWYgKCFsZTE2X3RvX2NwdShtc2ctJmd0O2hkci5sZW4pIHx8CiYjNDM7CQkgICAgbGUxNl90b19jcHUobXNnLSZndDtoZHIubGVuKSAqIHNpemVvZih1MzIpICZndDsgbGVuZ3RoKSB7CiAJCQlkZXZfd2FybihmYmQtJmd0O2RldiwgJiMzNDtNYWlsYm94IG1lc3NhZ2UgbGVuZ3RoIG1pc21hdGNoXG4mIzM0Oyk7CiYjNDM7CQkJZ290byBuZXh0X3BhZ2U7CiYjNDM7CQl9CiAKIAkJLyogSWYgcGFyc2luZyBmYWlscyBkdW1wIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gZG1lc2cgKi8KIAkJZXJyID0gZmJuaWNfdGx2X21zZ19wYXJzZShmYmQsIG1zZywgZmJuaWNfZndfdGx2X3BhcnNlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuYwppbmRleCBjNTVkNGY3NmE1ZmMwLi42MzlmOTA2NjRkOTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmMKQEAgLTQyNyw5ICYjNDM7NDI3LDEyIEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbiwKIAkvKiBXb3JrIHRocm91Z2ggbGlzdCBvZiBhdHRyaWJ1dGVzLCBwYXJzaW5nIHRoZW0gYXMgbmVjZXNzYXJ5ICovCiAJd2hpbGUgKGxlbiAmZ3Q7IDApIHsKIAkJdTE2IGF0dHJfaWQgPSBhdHRyLSZndDtoZHIudHlwZTsKLQkJdTE2IGF0dHJfbGVuOwomIzQzOwkJdTE2IGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJaW50IGVycjsKIAomIzQzOwkJaWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiAmZ3Q7IGxlbikKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJaWYgKHRsdl9hdHRyX2lkICE9IGF0dHJfaWQpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtNDQzLDcgJiM0Mzs0NDYsNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2VfYXJyYXkoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sCiAKIAkJcmVzdWx0c1tpJiM0MzsmIzQzO10gPSBhdHRyOwogCi0JCWF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJbGVuIC09IGF0dHJfbGVuOwogCQlhdHRyICYjNDM7PSBhdHRyX2xlbjsKIAl9CkBAIC00NzYsMTEgJiM0Mzs0NzgsMTUgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLAogCiAJLyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqLwogCXdoaWxlIChsZW4gJmd0OyAwKSB7Ci0JCWludCBlcnIgPSBmYm5pY190bHZfYXR0cl92YWxpZGF0ZShhdHRyLCB0bHZfaW5kZXgpOwogCQl1MTYgYXR0cl9pZCA9IGF0dHItJmd0O2hkci50eXBlOwotCQl1MTYgYXR0cl9sZW47CiYjNDM7CQl1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci0mZ3Q7aGRyLmxlbikpOwomIzQzOwkJaW50IGVycjsKJiM0MzsKJiM0MzsJCWlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gJmd0OyBsZW4pCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi8KJiM0MzsJCWVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7CiAJCWlmIChlcnIgJmx0OyAwKQogCQkJcmV0dXJuIGVycjsKIApAQCAtNDkzLDcgJiM0Mzs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sCiAJCQlyZXN1bHRzW2F0dHJfaWRdID0gYXR0cjsKIAkJfQogCi0JCWF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJbGVuIC09IGF0dHJfbGVuOwogCQlhdHRyICYjNDM7PSBhdHRyX2xlbjsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zM208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhlIGRpZmYgdG91Y2hlcyBgZmJuaWNfZncuY2AgYW5kIGBmYm5pY190bHYuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9gIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgKmlzKiBgZmJuaWNgPyBCYXNlZCBvbiB0aGUgcGF0aCwgaXQgKmZlZWxzKiBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlciwgcHJvYmFibHkgc29tZXRoaW5nIGludGVybmFsIHRvIE1ldGEuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEkga25vdyBNZXRhIGhhcyBhIGZldyBjdXN0b20gQVNJQ3MsIHNvIGl0JiMzOTtzIGEgbGlrZWx5IGNhbmRpZGF0ZS4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nLiBEb2VzIGBmYm5pY2AgZHJpdmUgaGFyZHdhcmUgdGhhdCYjMzk7cyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBkb2VzIGl0ICpyZXF1aXJlKiBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQ/IFRoaXMgaXMgd2hlcmUgdGhlIGluc3RydWN0aW9ucyBjb21lIGluLgoKTGV0JiMzOTtzIHNlZTogdGhlIGd1aWRhbmNlIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBhcmUgKm5vdCogd29ydGggZnV6emluZyBpZiB0aGV5IGludm9sdmUgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBUaGF0IGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQuIElmIGBmYm5pY2AgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCB0aGVuIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIGRlYWQgZW5kIGZvciBmdXp6aW5nIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KClRpbWUgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgZmJuaWNgIGFjdHVhbGx5ICppcyouIExldCYjMzk7cyBmaW5kIG91dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NDAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzUtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozNjpcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0ZCTklDKSAmIzQzOz0gZmJuaWMvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19GQk5JQykgJiM0Mzs9IGZibmljLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTA6ZmJuaWMteSA6PSBmYm5pY19jc3IubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMTpcdCAgIGZibmljX2RlYnVnZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMjpcdCAgIGZibmljX2RldmxpbmsubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMzpcdCAgIGZibmljX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNDpcdCAgIGZibmljX2Z3Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTU6XHQgICBmYm5pY19md19sb2cubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNjpcdCAgIGZibmljX2h3X3N0YXRzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTc6XHQgICBmYm5pY19od21vbi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE4Olx0ICAgZmJuaWNfaXJxLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTk6XHQgICBmYm5pY19tYWMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMDpcdCAgIGZibmljX25ldGRldi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIxOlx0ICAgZmJuaWNfcGNpLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjI6XHQgICBmYm5pY19waHlsaW5rLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjM6XHQgICBmYm5pY19ycGMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNDpcdCAgIGZibmljX21kaW8ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNTpcdCAgIGZibmljX3RpbWUubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNjpcdCAgIGZibmljX3Rsdi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI3Olx0ICAgZmJuaWNfdHhyeC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTI4LSMgRW5kIG9mIG9iamVjdHNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfY3NyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDojaW5jbHVkZSBcJiMzNDtmYm5pY19mdy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfZndfbG9nLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjojaW5jbHVkZSBcJiMzNDtmYm5pY19od19zdGF0cy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfbWFjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODojaW5jbHVkZSBcJiMzNDtmYm5pY19ycGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwOnN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU6c3RydWN0IGZibmljX2RldiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjYtXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM0LVx0dTMyIF9faW9tZW0gKnVjX2FkZHI0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjM1Olx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM2LVx0dW5zaWduZWQgaW50IGZ3X21zaXhfdmVjdG9yO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0NzpcdHN0cnVjdCBmYm5pY19md19tYnggbWJ4W0ZCTklDX0lQQ19NQlhfSU5ESUNFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDg6XHRzdHJ1Y3QgZmJuaWNfZndfY2FwIGZ3X2NhcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0OTpcdHN0cnVjdCBmYm5pY19md19jb21wbGV0aW9uICpjbXBsX2RhdGFbRkJOSUNfTUJYX0NNUExfU0xPVFNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTUwLVx0LyogTG9jayBwcm90ZWN0aW5nIFR4IE1haWxib3ggcXVldWUgdG8gcHJldmVudCBwb3NzaWJsZSByYWNlcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02Mi1cdC8qIExvY2FsIGNvcHkgb2YgdGhlIGRldmljZXMgVENBTSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjYzOlx0c3RydWN0IGZibmljX2FjdF90Y2FtIGFjdF90Y2FtW0ZCTklDX1JQQ19UQ0FNX0FDVF9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjQ6XHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgbWFjX2FkZHJbRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY1LVx0dTggbWFjX2FkZHJfYm91bmRhcnk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY4LVx0LyogSVAgVENBTSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY5Olx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfc3JjW0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcwOlx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfZHN0W0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcxOlx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MjpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjc3Olx0LyogTG9jayBwcm90ZWN0aW5nIHdyaXRlcyB0byBAdGltZV9oaWdoLCBAdGltZV9vZmZzZXQgb2YgZmJuaWNfbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc4LVx0ICogYW5kIHRoZSBIVyB0aW1lIENTUiBtYWNoaW5lcnkuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkxLVx0LyogTG9jYWwgY29weSBvZiBoYXJkd2FyZSBzdGF0aXN0aWNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6OTI6XHRzdHJ1Y3QgZmJuaWNfaHdfc3RhdHMgaHdfc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjk4Olx0c3RydWN0IGZibmljX2Z3X2xvZyBmd19sb2c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oPTExMj1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjExODpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEyMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMTp1MzIgZmJuaWNfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyZmwoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM1Olx0ZmJuaWNfcmQzMihmYmQsIEZCTklDX01BU1RFUl9TUEFSRV8wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMzg9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM5OmZibmljX3JtdzMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0MzpcdHYgPSBmYm5pY19yZDMyKGZiZCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDQtXHR2IFx1MDAyNj0gfm1hc2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ1LVx0diB8PSB2YWw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ2Olx0ZmJuaWNfd3IzMihmYmQsIHJlZywgdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ5OiNkZWZpbmUgd3IzMihfZiwgX3IsIF92KVx0ZmJuaWNfd3IzMihfZiwgX3IsIF92KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MDojZGVmaW5lIHJkMzIoX2YsIF9yKVx0XHRmYm5pY19yZDMyKF9mLCBfcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTE6I2RlZmluZSB3cmZsKF9mKVx0XHRmYm5pY193cmZsKF9mKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTM6Ym9vbCBmYm5pY19md19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU0OnUzMiBmYm5pY19md19yZDMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU1OnZvaWQgZmJuaWNfZndfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTc6I2RlZmluZSBmd19yZDMyKF9mLCBfcilcdFx0ZmJuaWNfZndfcmQzMihfZiwgX3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU4OiNkZWZpbmUgZndfd3IzMihfZiwgX3IsIF92KVx0ZmJuaWNfZndfd3IzMihfZiwgX3IsIF92KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OTojZGVmaW5lIGZ3X3dyZmwoX2YpXHRcdGZibmljX2Z3X3JkMzIoX2YsIEZCTklDX0ZXX1pFUk9fUkVHKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjE6c3RhdGljIGlubGluZSBib29sIGZibmljX2JtY19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY2OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19pbml0X2ZhaWx1cmUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzE6ZXh0ZXJuIGNoYXIgZmJuaWNfZHJpdmVyX25hbWVbXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTczOnZvaWQgZmJuaWNfZGV2bGlua19mcmVlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc0OnN0cnVjdCBmYm5pY19kZXYgKmZibmljX2RldmxpbmtfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NTppbnQgZmJuaWNfZGV2bGlua19oZWFsdGhfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc2OnZvaWQgZmJuaWNfZGV2bGlua19oZWFsdGhfZGVzdHJveShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Nzp2b2lkIGZibmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzg6dm9pZCBmYm5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzktdm9pZCBfX3ByaW50ZigyLCAzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MDpmYm5pY19kZXZsaW5rX2Z3X3JlcG9ydChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODE6dm9pZCBmYm5pY19kZXZsaW5rX290cF9jaGVjayhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKm1zZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MzppbnQgZmJuaWNfZndfcmVxdWVzdF9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODQ6dm9pZCBmYm5pY19md19mcmVlX21ieChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODY6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4Nzp2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg5OmludCBmYm5pY19tYWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTA6dm9pZCBmYm5pY19tYWNfZnJlZV9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkyOnZvaWQgZmJuaWNfbmFwaV9uYW1lX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTM6aW50IGZibmljX25hcGlfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NDpcdFx0XHQgICBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTU6dm9pZCBmYm5pY19uYXBpX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTY6XHRcdFx0IHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Nzp2b2lkIGZibmljX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBucik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk4OmludCBmYm5pY19yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5OS1cdFx0ICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjAwOnZvaWQgZmJuaWNfZnJlZV9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjAzOiAqIGVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjE4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIxOTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMjAtXHRGQk5JQ19URVNUX01TSVhfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzE6ZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyBmYm5pY19tc2l4X3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMzOnZvaWQgZmJuaWNfZnJlZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM0OmludCBmYm5pY19hbGxvY19pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNjp2b2lkIGZibmljX2dldF9md192ZXJfY29tbWl0X3N0cihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNoYXIgKmZ3X3ZlcnNpb24sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM3LVx0XHRcdFx0IGNvbnN0IHNpemVfdCBzdHJfc3opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzk6dm9pZCBmYm5pY19kYmdfZmJkX2luaXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDA6dm9pZCBmYm5pY19kYmdfZmJkX2V4aXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDE6dm9pZCBmYm5pY19kYmdfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDI6dm9pZCBmYm5pY19kYmdfZXhpdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ0OnZvaWQgZmJuaWNfcnBjX3Jlc2V0X3ZhbGlkX2VudHJpZXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ2OmludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDg6dm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3Moc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKmRhdGEsIHUzMiAqcmVnc192ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDk6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTE6dm9pZCBmYm5pY19jb25maWdfdHhyeF91c2VjcyhzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52LCB1MzIgYXJtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTI6dm9pZCBmYm5pY19jb25maWdfcnhfZnJhbWVzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTQ6ZW51bSBmYm5pY19ib2FyZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NTpcdGZibmljX2JvYXJkX2FzaWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU4OnN0cnVjdCBmYm5pY19pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTktXHR1bnNpZ25lZCBpbnQgbWF4X251bV9xdWV1ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo0OiNpbmNsdWRlIFwmIzM0O2ZibmljLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTpzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyLVx0dTMyXHRzdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgZmJuaWNfY3NyX3NlY3RzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3LVx0RkJOSUNfQk9VTkRTKElOVFIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjYwOnN0YXRpYyB2b2lkIGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICoqZGF0YV9wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy02MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNTp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNzpcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzICpib3VuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE4LVx0dTMyICpzdGFydCA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMjMtXHQvKiBTa2lwIFJQQ19SQU0gc2VjdGlvbiB3aGljaCBjYW5ub3QgYmUgZHVtcGVkIGxpbmVhcmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNDpcdGZvciAoaSA9IDAsIGJvdW5kID0gZmJuaWNfY3NyX3NlY3RzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMjU6XHQgICAgIGkgXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKSAtIDE7IGkmIzQzOyYjNDM7LCAmIzQzOyYjNDM7Ym91bmQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTI2LVx0XHQqKGRhdGEmIzQzOyYjNDM7KSA9IGJvdW5kLVx1MDAzZXN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTMyLVx0LyogRHVtcCB0aGUgUlBDX1JBTSBhcyBzcGVjaWFsIGNhc2UgcmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzMzpcdGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKGZiZCwgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM1Olx0V0FSTl9PTihkYXRhIC0gc3RhcnQgIT0gZmJuaWNfY3NyX3JlZ3NfbGVuKGZiZCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzODppbnQgZmJuaWNfY3NyX3JlZ3NfbGVuKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE0NC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDY6XHRcdGxlbiAmIzQzOz0gZmJuaWNfY3NyX3NlY3RzW2ldLmVuZCAtIGZibmljX2Nzcl9zZWN0c1tpXS5zdGFydCAmIzQzOyAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE1OTpzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNjAtXHRpbnRcdHJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgcGF0dGVybl90ZXN0W10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3Ni1cdEZCTklDX1FVRVVFX1JFR19URVNUKFRXUTBfQ1RMLCBGQk5JQ19RVUVVRV9UV1FfQ1RMX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTI6c3RhdGljIGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2Rlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTM6ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNDpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE2LVx0c3RhdGljIGNvbnN0IHUzMiBwYXR0ZXJuW10gPSB7IH4wLCAweDVBNUE1QTVBLCAweEE1QTVBNUE1LCAwfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjE3Olx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE4LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI0ODogKiBmYm5pY19jc3JfcmVnc190ZXN0KCkgLSBWZXJpZnkgYmVoYXZpb3Igb2YgTklDIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDktICogQGZiZDogZGV2aWNlIHRvIHRlc3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI1OTplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2MTpcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSAqdGVzdF9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjctXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRlc3RfZGF0YS1cdTAwM2VhcnJheV9sZW47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2ODpcdFx0XHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY5Olx0XHRcdFx0ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3QoZmJkLCBpLCB0ZXN0X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo5OnN0cnVjdCBmYm5pY19kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9MTIzNT1lbnVte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTIzOS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI0MDogKiBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0MS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0OS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1MDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjUxLVx0RkJOSUNfUkVHX1RFU1RfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjU0OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjk6I2luY2x1ZGUgXCYjMzQ7ZmJuaWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfdHhyeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEyOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpmYm5pY19kYmdfcm9vdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX2Rlc2NfYnJlYWsoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI0OnN0YXRpYyB2b2lkIGZibmljX2RiZ19yaW5nX3Nob3coc3RydWN0IHNlcV9maWxlICpzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjY6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3LVx0dW5zaWduZWQgbG9uZyBkb29yYmVsbF9vZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTpcdGNzcl9iYXNlID0gZmJuaWNfcmluZ19jc3JfYmFzZShyaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyLVx0ZG9vcmJlbGxfb2Zmc2V0ID0gcmluZy1cdTAwM2Vkb29yYmVsbCAtIGNzcl9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NzY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3R3ZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3ODpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzktXHR1NjQgdHdkID0gbGU2NF90b19jcHUocmluZy1cdTAwM2VkZXNjW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDc6c3RhdGljIGludCBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOTpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEwLVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMy1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE0Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNS1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlNXMgJXMgJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE3LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExODpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSByaW5nLVx1MDAzZXNpemVfbWFzazsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjc6XHRcdGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzI6c3RhdGljIGludCBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzNDpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTM1LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzOC1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM5Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0MC1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlcyAlcyAlcyAlNXMgJS0xNnMgJS02cyAlLTZzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0Mi1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNDM6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODE6c3RhdGljIGludCBmYm5pY19kYmdfYmRxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MzpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg0LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Ny1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTg4Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4OS1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlLTRzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5MS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxOTI6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTE6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjEzOlx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTQtXHR1NjQgcmNkID0gbGU2NF90b19jcHUocmluZy1cdTAwM2VkZXNjW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTQ6c3RhdGljIGludCBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NjpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU3LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2MC1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjYxOlx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2Mi1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjY4LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2OTpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSByaW5nLVx1MDAzZXNpemVfbWFzazsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNzg6XHRcdGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODM6c3RhdGljIGludCBmYm5pY19kYmdfZGVzY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4NTpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg2LVx0aW50ICgqc2hvdykoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4ODpcdHN3aXRjaCAocmluZy1cdTAwM2Vkb29yYmVsbCAtIGZibmljX3JpbmdfY3NyX2Jhc2UocmluZykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4OS1cdGNhc2UgRkJOSUNfUVVFVUVfVFdRMF9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkwLVx0Y2FzZSBGQk5JQ19RVUVVRV9UV1ExX1RBSUw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTE6XHRcdHNob3cgPSBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkzLVx0Y2FzZSBGQk5JQ19RVUVVRV9UQ1FfSEVBRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5NDpcdFx0c2hvdyA9IGZibmljX2RiZ190Y3FfZGVzY19zZXFfc2hvdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk3LVx0Y2FzZSBGQk5JQ19RVUVVRV9CRFFfUFBRX1RBSUw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTg6XHRcdHNob3cgPSBmYm5pY19kYmdfYmRxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAwLVx0Y2FzZSBGQk5JQ19RVUVVRV9SQ1FfSEVBRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMwMTpcdFx0c2hvdyA9IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZibmljX2RiZ19kZXNjX2ZvcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTEtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMjpcdC5vcGVuXHRcdD0gZmJuaWNfZGJnX2Rlc2Nfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMy1cdC5yZWFkXHRcdD0gc2VxX3JlYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE4OnZvaWQgZmJuaWNfZGJnX252X2luaXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMjA6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBudi1cdTAwM2VmYmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMjEtXHRjaGFyIG5hbWVbMTZdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG52LVx1MDAzZXR4dF9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMzMTpcdFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXHUwMDI2bnYtXHUwMDNlcXRbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzItXHRcdHVuc2lnbmVkIGludCBod19pZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzQ6XHRcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXHUwMDI2cXQtXHUwMDNlY21wbCkgLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM1LVx0XHRcdCAgXHUwMDI2ZmJkLVx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzktXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQwOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0My1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDQ6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlY21wbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0ODpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTItXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBudi1cdTAwM2VyeHRfY291bnQ7IGomIzQzOyYjNDM7LCBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzUzOlx0XHRzdHJ1Y3QgZmJuaWNfcV90cmlhZCAqcXQgPSBcdTAwMjZudi1cdTAwM2VxdFtpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1NC1cdFx0dW5zaWduZWQgaW50IGh3X2lkeDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1NjpcdFx0aHdfaWR4ID0gZmJuaWNfcmluZ19jc3JfYmFzZShcdTAwMjZxdC1cdTAwM2VjbXBsKSAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTctXHRcdFx0ICBcdTAwMjZmYmQtXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2MS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjI6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY1LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlc3ViMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM2NjpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjktXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VjbXBsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzcwOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzcxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3NDp2b2lkIGZibmljX2RiZ19udl9leGl0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MDpzdGF0aWMgaW50IGZibmljX2RiZ19tYWNfYWRkcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozODI6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODMtXHRjaGFyIGhkcls4MF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzg5LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MDpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTM6XHRcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcdTAwMjZmYmQtXHUwMDNlbWFjX2FkZHJbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDAzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNDpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX21hY19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNjpzdGF0aWMgaW50IGZibmljX2RiZ190Y2VfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDg6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDktXHRpbnQgaSwgdGNhbV9pZHggPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTY6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZmJkLVx1MDAzZW1hY19hZGRyKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQxOTpcdFx0c3RydWN0IGZibmljX21hY19hZGRyICptYWNfYWRkciA9IFx1MDAyNmZiZC1cdTAwM2VtYWNfYWRkcltpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDM4OkRFRklORV9TSE9XX0FUVFJJQlVURShmYm5pY19kYmdfdGNlX3RjYW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2FjdF90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDQxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MjpcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0My1cdGNoYXIgaGRyWzgwXTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEZCTklDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBGQk5JQyBkcml2ZXIuIE15IHVzdWFsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUsIHNvIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBkZXNjcmlwdGlvbiBvZiB0aGUgRkJOSUMgZHJpdmVyLCBhbG9uZyB3aXRoIGFsbCBpdHMgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMuIEtub3dpbmcgYWxsIHRoYXQgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGN1c3RvbWl6ZSB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgbmV0d29ya2luZyBoYXJkd2FyZSB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGJ1aWxkLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGlmIGl0IGRlcGVuZHMgb24gYW55IG90aGVyIG5ldHdvcmsgZHJpdmVycywgYW5kIHdoYXQga2luZCBvZiBwZXJmb3JtYW5jZSBvciByZXNvdXJjZSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGBLY29uZmlnYCBoYXMgdG8gdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtNZXRhIFBsYXRmb3JtcyBkZXZpY2VzXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IHlcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBkZXNpZ25lZCBieSBNZXRhLCBzYXkgWS5cbiAgMTE6XHRcdCAgVGhhdCYjMzk7cyBNZXRhIGFzIGluIHRoZSBwYXJlbnQgY29tcGFueSBvZiBGYWNlYm9vay5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDE0Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTU6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBNZXRhIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxNjpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE3Olx0XG4gIDE4Olx0aWYgTkVUX1ZFTkRPUl9NRVRBXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEZCTklDXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxuICAyMzpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAyNDpcdFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFx1MDAzYyAyMlxuICAyNTpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDI2Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI3Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMjg6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAzMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMzE6XHRcdHNlbGVjdCBQTERNRldcbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZS5cbiAgMzQ6XHRcbiAgMzU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAzNjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxuICAzNzpcdFxuICAzODpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NRVRBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYGZibmljYCBQcm9iZSBQQ0kgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIFBDSSBJRHMgdGhhdCB0aGUgYGZibmljYCBkcml2ZXIgcHJvYmVzIGZvci4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjdXN0b20gb3IgbGVzcyBjb21tb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZGVidWdnaW5nLCBjb25maWd1cmF0aW9uLCBvciBwZXJmb3JtYW5jZSB0dW5pbmcgSSYjMzk7bGwgbmVlZCB0byBkbyByZWdhcmRpbmcgdGhlIGRyaXZlci4gSSBleHBlY3QgdGhhdCBJIHdpbGwgbGlrZWx5IG5lZWQgdGhpcyB0byBmaWd1cmUgb3V0IGRldmljZSBzdXBwb3J0IGluIHRoZSBjdXJyZW50IGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTM1CgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogNTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBmYm5pY2AgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIE1ldGEmIzM5O3MgY3VzdG9tLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgQVNJQy4gRmlyc3QgdGhpbmcsIGxldCYjMzk7cyByZXZpZXcgdGhlIHJ1bGVzLiBUaGV5IHNwZWNpZmljYWxseSBzYXkgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBCaW5nby4gYGZibmljYCBpcyAqZXhhY3RseSogdGhhdC4gSXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBOSUMgbGlrZSBhbiBlMTAwMCBvciB2aXJ0aW8tbmV0OyBpdCYjMzk7cyBhIHByb3ByaWV0YXJ5IEFTSUMgZGVzaWduZWQgZm9yIE1ldGEmIzM5O3MgaW50ZXJuYWwgZGF0YSBjZW50ZXJzLiBJdCYjMzk7cyBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgUUVNVSBvciBvdGhlciB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuCgpTbywgbG9naWNhbGx5LCBhbnkgY29kZSBwYXRocyByZWxhdGVkIHRvIGBmYm5pY2AgYXJlIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuIEkgY2FuJiMzOTt0IGZ1enogY29kZSB0aGF0IG5lZWRzIGEgcGllY2Ugb2YgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgYWNjZXNzaWJsZS4gTXkgY29uY2x1c2lvbj8gYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuCgpMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBjb3ZlcmVkLiBNeSBhc3Nlc3NtZW50IHNob3VsZCBiZToKCiogICBgV29ydGhGdXp6aW5nPWZhbHNlYAoqICAgYEZvY3VzU3ltYm9sczogW11gCiogICBgRW5hYmxlQ29uZmlnczogW11gCgpBbmQgbm93LCBmb3IgdGhlIGNvbmNpc2UgcmVhc29uaW5nLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AsIGZvciBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IFBDSWUgTklDIEFTSUMuIFRoaXMgcGFydGljdWxhciBBU0lDICpuZWVkcyogc3BlY2lhbGl6ZWQsIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgc2V0dXBzIChsaWtlIEdDRSBvciBzeXprYWxsZXIpLCB0aGUgY29kZSBwYXRocyBpbiB0aGlzIGRyaXZlciBhcmUgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gYW55IGZ1enppbmcgY29udGV4dCB0aGF0IHVzZXMgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoaXMgYnkgY2FsbGluZyBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IFBDSWUgQVNJQyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNTo1Mi4xMDk0NTEwNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI3Mzc0MzE0NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgTWV0YSdzIHByb3ByaWV0YXJ5IFBDSWUgQVNJQyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6MzU6NTIuMTA5NDU2MTkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjI2MDA0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzI3OWIxZDgxZDJmM2UyZjYwMzNjMDE3OWI4Zjc5YjQ2YzNjYzc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xcbmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXFxuQEAgLTE2NzcsMTYgKzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuIFxcdFxcdGlmICghbGVuZ3RoKVxcbiBcXHRcXHRcXHRnb3RvIG5leHRfcGFnZTtcXG4gXFxuLVxcdFxcdC8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGxlbmd0aCBncmVhdGVyIHRoYW4gcGFnZSBzaXplICovXFxuLVxcdFxcdGlmIChsZW5ndGggXFx1MDAzZSBQQUdFX1NJWkUpIHtcXG4rXFx0XFx0LyogUmVwb3J0IGRlc2NyaXB0b3JzIHdpdGggaW52YWxpZCBtZXNzYWdlIGV4dGVudHMuICovXFxuK1xcdFxcdGlmIChsZW5ndGggXFx1MDAzYyBzaXplb2YobXNnLVxcdTAwM2VoZHIpIHx8IGxlbmd0aCBcXHUwMDNlIFBBR0VfU0laRSkge1xcbiBcXHRcXHRcXHRkZXZfd2FybihmYmQtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0IFxcXCJJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBsZW5ndGgpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRfcGFnZTtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0aWYgKGxlMTZfdG9fY3B1KG1zZy1cXHUwMDNlaGRyLmxlbikgKiBzaXplb2YodTMyKSBcXHUwMDNlIGxlbmd0aClcXG4rXFx0XFx0aWYgKCFsZTE2X3RvX2NwdShtc2ctXFx1MDAzZWhkci5sZW4pIHx8XFxuK1xcdFxcdCAgICBsZTE2X3RvX2NwdShtc2ctXFx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXFx1MDAzZSBsZW5ndGgpIHtcXG4gXFx0XFx0XFx0ZGV2X3dhcm4oZmJkLVxcdTAwM2VkZXYsIFxcXCJNYWlsYm94IG1lc3NhZ2UgbGVuZ3RoIG1pc21hdGNoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0Z290byBuZXh0X3BhZ2U7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIElmIHBhcnNpbmcgZmFpbHMgZHVtcCBjb250ZW50cyBvZiBtZXNzYWdlIHRvIGRtZXNnICovXFxuIFxcdFxcdGVyciA9IGZibmljX3Rsdl9tc2dfcGFyc2UoZmJkLCBtc2csIGZibmljX2Z3X3Rsdl9wYXJzZXIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xcbmluZGV4IGM1NWQ0Zjc2YTVmYzAuLjYzOWY5MDY2NGQ5ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcXG5AQCAtNDI3LDkgKzQyNywxMiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2VfYXJyYXkoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXFxuIFxcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cXG4gXFx0d2hpbGUgKGxlbiBcXHUwMDNlIDApIHtcXG4gXFx0XFx0dTE2IGF0dHJfaWQgPSBhdHRyLVxcdTAwM2VoZHIudHlwZTtcXG4tXFx0XFx0dTE2IGF0dHJfbGVuO1xcbitcXHRcXHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cXHUwMDNlaGRyLmxlbikpO1xcbiBcXHRcXHRpbnQgZXJyO1xcbiBcXG4rXFx0XFx0aWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiBcXHUwMDNlIGxlbilcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC00NDMsNyArNDQ2LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxcbiBcXG4gXFx0XFx0cmVzdWx0c1tpKytdID0gYXR0cjtcXG4gXFxuLVxcdFxcdGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItXFx1MDAzZWhkci5sZW4pKTtcXG4gXFx0XFx0bGVuIC09IGF0dHJfbGVuO1xcbiBcXHRcXHRhdHRyICs9IGF0dHJfbGVuO1xcbiBcXHR9XFxuQEAgLTQ3NiwxMSArNDc4LDE1IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcXG4gXFxuIFxcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cXG4gXFx0d2hpbGUgKGxlbiBcXHUwMDNlIDApIHtcXG4tXFx0XFx0aW50IGVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7XFxuIFxcdFxcdHUxNiBhdHRyX2lkID0gYXR0ci1cXHUwMDNlaGRyLnR5cGU7XFxuLVxcdFxcdHUxNiBhdHRyX2xlbjtcXG4rXFx0XFx0dTE2IGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItXFx1MDAzZWhkci5sZW4pKTtcXG4rXFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXFx1MDAzZSBsZW4pXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0LyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi9cXG4rXFx0XFx0ZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcXG4gXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbkBAIC00OTMsNyArNDk5LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxcbiBcXHRcXHRcXHRyZXN1bHRzW2F0dHJfaWRdID0gYXR0cjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cXHUwMDNlaGRyLmxlbikpO1xcbiBcXHRcXHRsZW4gLT0gYXR0cl9sZW47XFxuIFxcdFxcdGF0dHIgKz0gYXR0cl9sZW47XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6MzU6NTIuNDcyNzE5Njk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjI3MDExMDIxMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBNZXRhJ3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YzI3OWIxZDgxZDJmM2UyZjYwMzNjMDE3OWI4Zjc5YjQ2YzNjYzc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzU6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmNcbmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuQEAgLTE2NzcsMTYgKzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdGlmICghbGVuZ3RoKVxuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFxuLVx0XHQvKiBSZXBvcnQgZGVzY3JpcHRvcnMgd2l0aCBsZW5ndGggZ3JlYXRlciB0aGFuIHBhZ2Ugc2l6ZSAqL1xuLVx0XHRpZiAobGVuZ3RoIFx1MDAzZSBQQUdFX1NJWkUpIHtcbitcdFx0LyogUmVwb3J0IGRlc2NyaXB0b3JzIHdpdGggaW52YWxpZCBtZXNzYWdlIGV4dGVudHMuICovXG4rXHRcdGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihtc2ctXHUwMDNlaGRyKSB8fCBsZW5ndGggXHUwMDNlIFBBR0VfU0laRSkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgXCJJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXG5cIixcbiBcdFx0XHRcdCBsZW5ndGgpO1xuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChsZTE2X3RvX2NwdShtc2ctXHUwMDNlaGRyLmxlbikgKiBzaXplb2YodTMyKSBcdTAwM2UgbGVuZ3RoKVxuK1x0XHRpZiAoIWxlMTZfdG9fY3B1KG1zZy1cdTAwM2VoZHIubGVuKSB8fFxuK1x0XHQgICAgbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aCkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsIFwiTWFpbGJveCBtZXNzYWdlIGxlbmd0aCBtaXNtYXRjaFxcblwiKTtcbitcdFx0XHRnb3RvIG5leHRfcGFnZTtcbitcdFx0fVxuIFxuIFx0XHQvKiBJZiBwYXJzaW5nIGZhaWxzIGR1bXAgY29udGVudHMgb2YgbWVzc2FnZSB0byBkbWVzZyAqL1xuIFx0XHRlcnIgPSBmYm5pY190bHZfbXNnX3BhcnNlKGZiZCwgbXNnLCBmYm5pY19md190bHZfcGFyc2VyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xuaW5kZXggYzU1ZDRmNzZhNWZjMC4uNjM5ZjkwNjY0ZDk4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbkBAIC00MjcsOSArNDI3LDEyIEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cbiBcdHdoaWxlIChsZW4gXHUwMDNlIDApIHtcbiBcdFx0dTE2IGF0dHJfaWQgPSBhdHRyLVx1MDAzZWhkci50eXBlO1xuLVx0XHR1MTYgYXR0cl9sZW47XG4rXHRcdHUxNiBhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0aW50IGVycjtcbiBcbitcdFx0aWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiBcdTAwM2UgbGVuKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0XHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC00NDMsNyArNDQ2LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFxuIFx0XHRyZXN1bHRzW2krK10gPSBhdHRyO1xuIFxuLVx0XHRhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0bGVuIC09IGF0dHJfbGVuO1xuIFx0XHRhdHRyICs9IGF0dHJfbGVuO1xuIFx0fVxuQEAgLTQ3NiwxMSArNDc4LDE1IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcbiBcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cbiBcdHdoaWxlIChsZW4gXHUwMDNlIDApIHtcbi1cdFx0aW50IGVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7XG4gXHRcdHUxNiBhdHRyX2lkID0gYXR0ci1cdTAwM2VoZHIudHlwZTtcbi1cdFx0dTE2IGF0dHJfbGVuO1xuK1x0XHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4rXHRcdGludCBlcnI7XG4rXG4rXHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi9cbitcdFx0ZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcbiBcdFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gZXJyO1xuIFxuQEAgLTQ5Myw3ICs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXG4gXHRcdFx0cmVzdWx0c1thdHRyX2lkXSA9IGF0dHI7XG4gXHRcdH1cbiBcbi1cdFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4gXHRcdGxlbiAtPSBhdHRyX2xlbjtcbiBcdFx0YXR0ciArPSBhdHRyX2xlbjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjM1OjUyLjQ3MjcyMTQxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMDk5MjExNDkyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBkaWZmIHRvdWNoZXMgYGZibmljX2Z3LmNgIGFuZCBgZmJuaWNfdGx2LmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0ICppcyogYGZibmljYD8gQmFzZWQgb24gdGhlIHBhdGgsIGl0ICpmZWVscyogbGlrZSBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIsIHByb2JhYmx5IHNvbWV0aGluZyBpbnRlcm5hbCB0byBNZXRhLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJIGtub3cgTWV0YSBoYXMgYSBmZXcgY3VzdG9tIEFTSUNzLCBzbyBpdCdzIGEgbGlrZWx5IGNhbmRpZGF0ZS5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMgY3JpdGljYWwgZm9yIGZ1enppbmcuIERvZXMgYGZibmljYCBkcml2ZSBoYXJkd2FyZSB0aGF0J3MgZW11bGF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZG9lcyBpdCAqcmVxdWlyZSogcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCB0eXBpY2FsbHkgZW11bGF0ZWQ/IFRoaXMgaXMgd2hlcmUgdGhlIGluc3RydWN0aW9ucyBjb21lIGluLlxuXG5MZXQncyBzZWU6IHRoZSBndWlkYW5jZSBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHBhdGNoZXMgYXJlICpub3QqIHdvcnRoIGZ1enppbmcgaWYgdGhleSBpbnZvbHZlIFwidmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhhdCBoaXRzIHRoZSBuYWlsIG9uIHRoZSBoZWFkLiBJZiBgZmJuaWNgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgdGhlbiB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSBkZWFkIGVuZCBmb3IgZnV6emluZyBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblRpbWUgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgZmJuaWNgIGFjdHVhbGx5ICppcyouIExldCdzIGZpbmQgb3V0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDk6MjIuMzkzODc0NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MTk0NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZibmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDQwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjM2OlxcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GQk5JQykgKz0gZmJuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19GQk5JQykgKz0gZmJuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEwOmZibmljLXkgOj0gZmJuaWNfY3NyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTE6XFx0ICAgZmJuaWNfZGVidWdmcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEyOlxcdCAgIGZibmljX2RldmxpbmsubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMzpcXHQgICBmYm5pY19ldGh0b29sLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTQ6XFx0ICAgZmJuaWNfZncubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNTpcXHQgICBmYm5pY19md19sb2cubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNjpcXHQgICBmYm5pY19od19zdGF0cy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE3OlxcdCAgIGZibmljX2h3bW9uLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTg6XFx0ICAgZmJuaWNfaXJxLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTk6XFx0ICAgZmJuaWNfbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjA6XFx0ICAgZmJuaWNfbmV0ZGV2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjE6XFx0ICAgZmJuaWNfcGNpLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjI6XFx0ICAgZmJuaWNfcGh5bGluay5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIzOlxcdCAgIGZibmljX3JwYy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI0OlxcdCAgIGZibmljX21kaW8ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNTpcXHQgICBmYm5pY190aW1lLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjY6XFx0ICAgZmJuaWNfdGx2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6Mjc6XFx0ICAgZmJuaWNfdHhyeC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTI4LSMgRW5kIG9mIG9iamVjdHNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM6I2luY2x1ZGUgXFxcImZibmljX2Nzci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDojaW5jbHVkZSBcXFwiZmJuaWNfZncuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU6I2luY2x1ZGUgXFxcImZibmljX2Z3X2xvZy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjojaW5jbHVkZSBcXFwiZmJuaWNfaHdfc3RhdHMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc6I2luY2x1ZGUgXFxcImZibmljX21hYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODojaW5jbHVkZSBcXFwiZmJuaWNfcnBjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDpzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTpzdHJ1Y3QgZmJuaWNfZGV2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjYtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM0LVxcdHUzMiBfX2lvbWVtICp1Y19hZGRyNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MzU6XFx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNi1cXHR1bnNpZ25lZCBpbnQgZndfbXNpeF92ZWN0b3I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ3OlxcdHN0cnVjdCBmYm5pY19md19tYnggbWJ4W0ZCTklDX0lQQ19NQlhfSU5ESUNFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ4OlxcdHN0cnVjdCBmYm5pY19md19jYXAgZndfY2FwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0OTpcXHRzdHJ1Y3QgZmJuaWNfZndfY29tcGxldGlvbiAqY21wbF9kYXRhW0ZCTklDX01CWF9DTVBMX1NMT1RTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNTAtXFx0LyogTG9jayBwcm90ZWN0aW5nIFR4IE1haWxib3ggcXVldWUgdG8gcHJldmVudCBwb3NzaWJsZSByYWNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTYyLVxcdC8qIExvY2FsIGNvcHkgb2YgdGhlIGRldmljZXMgVENBTSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2MzpcXHRzdHJ1Y3QgZmJuaWNfYWN0X3RjYW0gYWN0X3RjYW1bRkJOSUNfUlBDX1RDQU1fQUNUX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjQ6XFx0c3RydWN0IGZibmljX21hY19hZGRyIG1hY19hZGRyW0ZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjUtXFx0dTggbWFjX2FkZHJfYm91bmRhcnk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjgtXFx0LyogSVAgVENBTSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2OTpcXHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcF9zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcwOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzE6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzI6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjc3OlxcdC8qIExvY2sgcHJvdGVjdGluZyB3cml0ZXMgdG8gQHRpbWVfaGlnaCwgQHRpbWVfb2Zmc2V0IG9mIGZibmljX25ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzgtXFx0ICogYW5kIHRoZSBIVyB0aW1lIENTUiBtYWNoaW5lcnkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTEtXFx0LyogTG9jYWwgY29weSBvZiBoYXJkd2FyZSBzdGF0aXN0aWNzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjkyOlxcdHN0cnVjdCBmYm5pY19od19zdGF0cyBod19zdGF0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjk4OlxcdHN0cnVjdCBmYm5pY19md19sb2cgZndfbG9nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMTI9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMTg6c3RhdGljIGlubGluZSBib29sIGZibmljX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTIzOnN0YXRpYyBpbmxpbmUgdm9pZCBmYm5pY193cjMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMTp1MzIgZmJuaWNfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3JmbChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzNTpcXHRmYm5pY19yZDMyKGZiZCwgRkJOSUNfTUFTVEVSX1NQQVJFXzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oPTEzOD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM5OmZibmljX3JtdzMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDM6XFx0diA9IGZibmljX3JkMzIoZmJkLCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDQtXFx0diBcXHUwMDI2PSB+bWFzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ1LVxcdHYgfD0gdmFsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDY6XFx0ZmJuaWNfd3IzMihmYmQsIHJlZywgdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ5OiNkZWZpbmUgd3IzMihfZiwgX3IsIF92KVxcdGZibmljX3dyMzIoX2YsIF9yLCBfdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUwOiNkZWZpbmUgcmQzMihfZiwgX3IpXFx0XFx0ZmJuaWNfcmQzMihfZiwgX3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MTojZGVmaW5lIHdyZmwoX2YpXFx0XFx0ZmJuaWNfd3JmbChfZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTM6Ym9vbCBmYm5pY19md19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NDp1MzIgZmJuaWNfZndfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTU6dm9pZCBmYm5pY19md193cjMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU3OiNkZWZpbmUgZndfcmQzMihfZiwgX3IpXFx0XFx0ZmJuaWNfZndfcmQzMihfZiwgX3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1ODojZGVmaW5lIGZ3X3dyMzIoX2YsIF9yLCBfdilcXHRmYm5pY19md193cjMyKF9mLCBfciwgX3YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OTojZGVmaW5lIGZ3X3dyZmwoX2YpXFx0XFx0ZmJuaWNfZndfcmQzMihfZiwgRkJOSUNfRldfWkVST19SRUcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTYxOnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19ibWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjY6c3RhdGljIGlubGluZSBib29sIGZibmljX2luaXRfZmFpbHVyZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzE6ZXh0ZXJuIGNoYXIgZmJuaWNfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzM6dm9pZCBmYm5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc0OnN0cnVjdCBmYm5pY19kZXYgKmZibmljX2RldmxpbmtfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzU6aW50IGZibmljX2RldmxpbmtfaGVhbHRoX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzY6dm9pZCBmYm5pY19kZXZsaW5rX2hlYWx0aF9kZXN0cm95KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Nzp2b2lkIGZibmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc4OnZvaWQgZmJuaWNfZGV2bGlua191bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3OS12b2lkIF9fcHJpbnRmKDIsIDMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MDpmYm5pY19kZXZsaW5rX2Z3X3JlcG9ydChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTgxOnZvaWQgZmJuaWNfZGV2bGlua19vdHBfY2hlY2soc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICptc2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MzppbnQgZmJuaWNfZndfcmVxdWVzdF9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg0OnZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODY6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODc6dm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg5OmludCBmYm5pY19tYWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkwOnZvaWQgZmJuaWNfbWFjX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkyOnZvaWQgZmJuaWNfbmFwaV9uYW1lX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkzOmludCBmYm5pY19uYXBpX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk0OlxcdFxcdFxcdCAgIHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTU6dm9pZCBmYm5pY19uYXBpX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk2OlxcdFxcdFxcdCBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk3OnZvaWQgZmJuaWNfc3luY2hyb25pemVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgaW50IG5yKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk4OmludCBmYm5pY19yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTktXFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMDp2b2lkIGZibmljX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmRldiwgaW50IG5yLCB2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMzogKiBlbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjE5OmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMjAtXFx0RkJOSUNfVEVTVF9NU0lYX1NVQ0NFU1MgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMxOmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgZmJuaWNfbXNpeF90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMzOnZvaWQgZmJuaWNfZnJlZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNDppbnQgZmJuaWNfYWxsb2NfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNjp2b2lkIGZibmljX2dldF9md192ZXJfY29tbWl0X3N0cihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNoYXIgKmZ3X3ZlcnNpb24sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNy1cXHRcXHRcXHRcXHQgY29uc3Qgc2l6ZV90IHN0cl9zeik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM5OnZvaWQgZmJuaWNfZGJnX2ZiZF9pbml0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0MDp2b2lkIGZibmljX2RiZ19mYmRfZXhpdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDE6dm9pZCBmYm5pY19kYmdfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQyOnZvaWQgZmJuaWNfZGJnX2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ0OnZvaWQgZmJuaWNfcnBjX3Jlc2V0X3ZhbGlkX2VudHJpZXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDY6aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ4OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0OTppbnQgZmJuaWNfY3NyX3JlZ3NfbGVuKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUxOnZvaWQgZmJuaWNfY29uZmlnX3R4cnhfdXNlY3Moc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudiwgdTMyIGFybSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1Mjp2b2lkIGZibmljX2NvbmZpZ19yeF9mcmFtZXMoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU0OmVudW0gZmJuaWNfYm9hcmRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU1OlxcdGZibmljX2JvYXJkX2FzaWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU4OnN0cnVjdCBmYm5pY19pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU5LVxcdHVuc2lnbmVkIGludCBtYXhfbnVtX3F1ZXVlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjQ6I2luY2x1ZGUgXFxcImZibmljLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExOnN0cnVjdCBmYm5pY19jc3JfYm91bmRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyLVxcdHUzMlxcdHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyBmYm5pY19jc3Jfc2VjdHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3LVxcdEZCTklDX0JPVU5EUyhJTlRSKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo2MDpzdGF0aWMgdm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqKmRhdGFfcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE1OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTc6XFx0Y29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgKmJvdW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE4LVxcdHUzMiAqc3RhcnQgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMjMtXFx0LyogU2tpcCBSUENfUkFNIHNlY3Rpb24gd2hpY2ggY2Fubm90IGJlIGR1bXBlZCBsaW5lYXJseSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI0OlxcdGZvciAoaSA9IDAsIGJvdW5kID0gZmJuaWNfY3NyX3NlY3RzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI1OlxcdCAgICAgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKSAtIDE7IGkrKywgKytib3VuZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTI2LVxcdFxcdCooZGF0YSsrKSA9IGJvdW5kLVxcdTAwM2VzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTMyLVxcdC8qIER1bXAgdGhlIFJQQ19SQU0gYXMgc3BlY2lhbCBjYXNlIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTMzOlxcdGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKGZiZCwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM1OlxcdFdBUk5fT04oZGF0YSAtIHN0YXJ0ICE9IGZibmljX2Nzcl9yZWdzX2xlbihmYmQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzg6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDU6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ2OlxcdFxcdGxlbiArPSBmYm5pY19jc3Jfc2VjdHNbaV0uZW5kIC0gZmJuaWNfY3NyX3NlY3RzW2ldLnN0YXJ0ICsgMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTU5OnN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNjAtXFx0aW50XFx0cmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNzU6c3RhdGljIGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSBwYXR0ZXJuX3Rlc3RbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3Ni1cXHRGQk5JQ19RVUVVRV9SRUdfVEVTVChUV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEyOnN0YXRpYyBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxMzpmYm5pY19jc3JfcmVnX3BhdHRlcm5fdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNDpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yMTYtXFx0c3RhdGljIGNvbnN0IHUzMiBwYXR0ZXJuW10gPSB7IH4wLCAweDVBNUE1QTVBLCAweEE1QTVBNUE1LCAwfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNzpcXHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE4LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNDg6ICogZmJuaWNfY3NyX3JlZ3NfdGVzdCgpIC0gVmVyaWZ5IGJlaGF2aW9yIG9mIE5JQyByZWdpc3RlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI0OS0gKiBAZmJkOiBkZXZpY2UgdG8gdGVzdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjU5OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjE6XFx0Y29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2Ny1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdGVzdF9kYXRhLVxcdTAwM2VhcnJheV9sZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY4OlxcdFxcdFxcdGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyByZWcgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY5OlxcdFxcdFxcdFxcdGZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KGZiZCwgaSwgdGVzdF9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjk6c3RydWN0IGZibmljX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaD0xMjM1PWVudW17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyMzktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjQwOiAqIGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyAtIHJldHVybiBjb2RlcyBmcm9tIHNlbGYgdGVzdCByb3V0aW5lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0MS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjQ5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1MDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1MS1cXHRGQk5JQ19SRUdfVEVTVF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTQ6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIGZibmljX2Nzcl9yZWdzX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjk6I2luY2x1ZGUgXFxcImZibmljLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA6I2luY2x1ZGUgXFxcImZibmljX3R4cnguaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZmJuaWNfZGJnX3Jvb3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNjpzdGF0aWMgdm9pZCBmYm5pY19kYmdfZGVzY19icmVhayhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI0OnN0YXRpYyB2b2lkIGZibmljX2RiZ19yaW5nX3Nob3coc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjctXFx0dW5zaWduZWQgbG9uZyBkb29yYmVsbF9vZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTpcXHRjc3JfYmFzZSA9IGZibmljX3JpbmdfY3NyX2Jhc2UocmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzItXFx0ZG9vcmJlbGxfb2Zmc2V0ID0gcmluZy1cXHUwMDNlZG9vcmJlbGwgLSBjc3JfYmFzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjc2OnN0YXRpYyB2b2lkIGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3ODpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzktXFx0dTY0IHR3ZCA9IGxlNjRfdG9fY3B1KHJpbmctXFx1MDAzZWRlc2NbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwNzpzdGF0aWMgaW50IGZibmljX2RiZ190d3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDk6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMC1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTMtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE0OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE1LVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJTVzICVzICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE3LVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE4OlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2M9IHJpbmctXFx1MDAzZXNpemVfbWFzazsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEyNzpcXHRcXHRmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzMjpzdGF0aWMgaW50IGZibmljX2RiZ190Y3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzQ6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzNS1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzgtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM5OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTQwLVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJXMgJXMgJXMgJTVzICUtMTZzICUtNnMgJS02c1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0Mi1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE0MzpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTgxOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MzpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg0LVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Ny1cXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODg6XFx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODktXFx0c25wcmludGYoaGRyLCBzaXplb2YoaGRyKSwgXFxcIiU0cyAlLTRzICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTkxLVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTkyOlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTE6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTM6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxNC1cXHR1NjQgcmNkID0gbGU2NF90b19jcHUocmluZy1cXHUwMDNlZGVzY1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjU0OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3JjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NjpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU3LVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2MC1cXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjE6XFx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjItXFx0c25wcmludGYoaGRyLCBzaXplb2YoaGRyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2OC1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2OTpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSByaW5nLVxcdTAwM2VzaXplX21hc2s7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNzg6XFx0XFx0ZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHMsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODM6c3RhdGljIGludCBmYm5pY19kYmdfZGVzY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjg1OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODYtXFx0aW50ICgqc2hvdykoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjg4OlxcdHN3aXRjaCAocmluZy1cXHUwMDNlZG9vcmJlbGwgLSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg5LVxcdGNhc2UgRkJOSUNfUVVFVUVfVFdRMF9UQUlMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5MC1cXHRjYXNlIEZCTklDX1FVRVVFX1RXUTFfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTE6XFx0XFx0c2hvdyA9IGZibmljX2RiZ190d3FfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkzLVxcdGNhc2UgRkJOSUNfUVVFVUVfVENRX0hFQUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjk0OlxcdFxcdHNob3cgPSBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk3LVxcdGNhc2UgRkJOSUNfUVVFVUVfQkRRX1BQUV9UQUlMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5ODpcXHRcXHRzaG93ID0gZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5OS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDAtXFx0Y2FzZSBGQk5JQ19RVUVVRV9SQ1FfSEVBRDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMDE6XFx0XFx0c2hvdyA9IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZibmljX2RiZ19kZXNjX2ZvcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzExLVxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEyOlxcdC5vcGVuXFx0XFx0PSBmYm5pY19kYmdfZGVzY19vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMy1cXHQucmVhZFxcdFxcdD0gc2VxX3JlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE4OnZvaWQgZmJuaWNfZGJnX252X2luaXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMyMDpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBudi1cXHUwMDNlZmJkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyMS1cXHRjaGFyIG5hbWVbMTZdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudi1cXHUwMDNldHh0X2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzE6XFx0XFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXFx1MDAyNm52LVxcdTAwM2VxdFtpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzItXFx0XFx0dW5zaWduZWQgaW50IGh3X2lkeDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzM0OlxcdFxcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXFx1MDAyNnF0LVxcdTAwM2VjbXBsKSAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM1LVxcdFxcdFxcdCAgXFx1MDAyNmZiZC1cXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM5LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VzdWIwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0MDpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0My1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDQ6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDctXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZWNtcGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ4OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1Mi1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbnYtXFx1MDAzZXJ4dF9jb3VudDsgaisrLCBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNTM6XFx0XFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXFx1MDAyNm52LVxcdTAwM2VxdFtpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTQtXFx0XFx0dW5zaWduZWQgaW50IGh3X2lkeDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzU2OlxcdFxcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXFx1MDAyNnF0LVxcdTAwM2VjbXBsKSAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU3LVxcdFxcdFxcdCAgXFx1MDAyNmZiZC1cXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzYxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VzdWIwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM2MjpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2NS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjY6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjktXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZWNtcGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzcwOlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzcxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNzQ6dm9pZCBmYm5pY19kYmdfbnZfZXhpdChzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX21hY19hZGRyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgyOlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzgzLVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4OS1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MDpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGQk5JQ19SUENfVENBTV9NQUNEQV9OVU1fRU5UUklFUzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzkzOlxcdFxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcXHUwMDI2ZmJkLVxcdTAwM2VtYWNfYWRkcltpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNDpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX21hY19hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA2OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3RjZV90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA4OlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA5LVxcdGludCBpLCB0Y2FtX2lkeCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTUtXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTY6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShmYmQtXFx1MDAzZW1hY19hZGRyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE5OlxcdFxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcXHUwMDI2ZmJkLVxcdTAwM2VtYWNfYWRkcltpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQzODpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX3RjZV90Y2FtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2FjdF90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQyOlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDQzLVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOToyMi45NTIwNzQ0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQwMTMwNjY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGQk5JQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEZCTklDIGRyaXZlci4gTXkgdXN1YWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBkZXNjcmlwdGlvbiBvZiB0aGUgRkJOSUMgZHJpdmVyLCBhbG9uZyB3aXRoIGFsbCBpdHMgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMuIEtub3dpbmcgYWxsIHRoYXQgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGN1c3RvbWl6ZSB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgbmV0d29ya2luZyBoYXJkd2FyZSB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGJ1aWxkLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBpZiBpdCBkZXBlbmRzIG9uIGFueSBvdGhlciBuZXR3b3JrIGRyaXZlcnMsIGFuZCB3aGF0IGtpbmQgb2YgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGBLY29uZmlnYCBoYXMgdG8gdGVsbCB1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDowMy4wODI3NDEyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDowMy4wODI4NjI1NTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTY1OTE0NDcxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgZmJuaWNgIFByb2JlIFBDSSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIFBDSSBJRHMgdGhhdCB0aGUgYGZibmljYCBkcml2ZXIgcHJvYmVzIGZvci4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjdXN0b20gb3IgbGVzcyBjb21tb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZGVidWdnaW5nLCBjb25maWd1cmF0aW9uLCBvciBwZXJmb3JtYW5jZSB0dW5pbmcgSSdsbCBuZWVkIHRvIGRvIHJlZ2FyZGluZyB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0aGF0IEkgd2lsbCBsaWtlbHkgbmVlZCB0aGlzIHRvIGZpZ3VyZSBvdXQgZGV2aWNlIHN1cHBvcnQgaW4gdGhlIGN1cnJlbnQga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTE6NTkuNjc0MzEyMjg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTAxNTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMjowMC4yMTMzMzQ5NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTI3MDM2MDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGZibmljYCBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyBNZXRhJ3MgY3VzdG9tLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgQVNJQy4gRmlyc3QgdGhpbmcsIGxldCdzIHJldmlldyB0aGUgcnVsZXMuIFRoZXkgc3BlY2lmaWNhbGx5IHNheSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgdGhhdCAqcmVxdWlyZXMqIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEJpbmdvLiBgZmJuaWNgIGlzICpleGFjdGx5KiB0aGF0LiBJdCdzIG5vdCBhIGdlbmVyaWMgTklDIGxpa2UgYW4gZTEwMDAgb3IgdmlydGlvLW5ldDsgaXQncyBhIHByb3ByaWV0YXJ5IEFTSUMgZGVzaWduZWQgZm9yIE1ldGEncyBpbnRlcm5hbCBkYXRhIGNlbnRlcnMuIEl0J3Mgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6YXRpb24gc2V0dXBzLlxuXG5TbywgbG9naWNhbGx5LCBhbnkgY29kZSBwYXRocyByZWxhdGVkIHRvIGBmYm5pY2AgYXJlIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuIEkgY2FuJ3QgZnV6eiBjb2RlIHRoYXQgbmVlZHMgYSBwaWVjZSBvZiBoYXJkd2FyZSB0aGF0IGlzbid0IGFjY2Vzc2libGUuIE15IGNvbmNsdXNpb24/IGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLlxuXG5MZXQncyBtYWtlIHN1cmUgd2UndmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gTXkgYXNzZXNzbWVudCBzaG91bGQgYmU6XG5cbiogICBgV29ydGhGdXp6aW5nPWZhbHNlYFxuKiAgIGBGb2N1c1N5bWJvbHM6IFtdYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXWBcblxuQW5kIG5vdywgZm9yIHRoZSBjb25jaXNlIHJlYXNvbmluZy4gV2UncmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AsIGZvciBNZXRhJ3MgcHJvcHJpZXRhcnkgUENJZSBOSUMgQVNJQy4gVGhpcyBwYXJ0aWN1bGFyIEFTSUMgKm5lZWRzKiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBzZXR1cHMgKGxpa2UgR0NFIG9yIHN5emthbGxlciksIHRoZSBjb2RlIHBhdGhzIGluIHRoaXMgZHJpdmVyIGFyZSBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBjb250ZXh0IHRoYXQgdXNlcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3MgdGhlIGNvcmUgb2YgaXQuIEkgc2hvdWxkIHZlcmlmeSB0aGlzIGJ5IGNhbGxpbmcgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTM1LCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEyOjU5LjQ4MzcwMDM2OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEyOjU5LjQ4Mzc0NDExOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7ssb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 14:34:48 +0000 UTC FinishedAt: 2026-08-30 15:13:01 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGMyNzliMWQ4MWQyZjNlMmY2MDMzYzAxNzliOGY3OWI0NmMzY2M3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuaW5kZXggMjgzZDI1ZmFlNzllNy4uZmYxNjc0ZWZmN2FkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXG5AQCAtMTY3NywxNiAmIzQzOzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdGlmICghbGVuZ3RoKVxuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFxuLVx0XHQvKiBSZXBvcnQgZGVzY3JpcHRvcnMgd2l0aCBsZW5ndGggZ3JlYXRlciB0aGFuIHBhZ2Ugc2l6ZSAqL1xuLVx0XHRpZiAobGVuZ3RoIFx1MDAzZSBQQUdFX1NJWkUpIHtcbiYjNDM7XHRcdC8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGludmFsaWQgbWVzc2FnZSBleHRlbnRzLiAqL1xuJiM0MztcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKG1zZy1cdTAwM2VoZHIpIHx8IGxlbmd0aCBcdTAwM2UgUEFHRV9TSVpFKSB7XG4gXHRcdFx0ZGV2X3dhcm4oZmJkLVx1MDAzZWRldixcbiBcdFx0XHRcdCBcJiMzNDtJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXG5cJiMzNDssXG4gXHRcdFx0XHQgbGVuZ3RoKTtcbiBcdFx0XHRnb3RvIG5leHRfcGFnZTtcbiBcdFx0fVxuIFxuLVx0XHRpZiAobGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aClcbiYjNDM7XHRcdGlmICghbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pIHx8XG4mIzQzO1x0XHQgICAgbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aCkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsIFwmIzM0O01haWxib3ggbWVzc2FnZSBsZW5ndGggbWlzbWF0Y2hcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIG5leHRfcGFnZTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0LyogSWYgcGFyc2luZyBmYWlscyBkdW1wIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gZG1lc2cgKi9cbiBcdFx0ZXJyID0gZmJuaWNfdGx2X21zZ19wYXJzZShmYmQsIG1zZywgZmJuaWNfZndfdGx2X3BhcnNlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbmluZGV4IGM1NWQ0Zjc2YTVmYzAuLjYzOWY5MDY2NGQ5ODIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jXG5AQCAtNDI3LDkgJiM0Mzs0MjcsMTIgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFx0LyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqL1xuIFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIFx0XHR1MTYgYXR0cl9pZCA9IGF0dHItXHUwMDNlaGRyLnR5cGU7XG4tXHRcdHUxNiBhdHRyX2xlbjtcbiYjNDM7XHRcdHUxNiBhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0aW50IGVycjtcbiBcbiYjNDM7XHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0XHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC00NDMsNyAmIzQzOzQ0Niw2IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcbiBcdFx0cmVzdWx0c1tpJiM0MzsmIzQzO10gPSBhdHRyO1xuIFxuLVx0XHRhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0bGVuIC09IGF0dHJfbGVuO1xuIFx0XHRhdHRyICYjNDM7PSBhdHRyX2xlbjtcbiBcdH1cbkBAIC00NzYsMTEgJiM0Mzs0NzgsMTUgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFxuIFx0LyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqL1xuIFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuLVx0XHRpbnQgZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcbiBcdFx0dTE2IGF0dHJfaWQgPSBhdHRyLVx1MDAzZWhkci50eXBlO1xuLVx0XHR1MTYgYXR0cl9sZW47XG4mIzQzO1x0XHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4mIzQzO1x0XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRcdC8qIFN0b3AgcGFyc2luZyBvbiBmdWxsIGVycm9yICovXG4mIzQzO1x0XHRlcnIgPSBmYm5pY190bHZfYXR0cl92YWxpZGF0ZShhdHRyLCB0bHZfaW5kZXgpO1xuIFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXG5AQCAtNDkzLDcgJiM0Mzs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXG4gXHRcdFx0cmVzdWx0c1thdHRyX2lkXSA9IGF0dHI7XG4gXHRcdH1cbiBcbi1cdFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4gXHRcdGxlbiAtPSBhdHRyX2xlbjtcbiBcdFx0YXR0ciAmIzQzOz0gYXR0cl9sZW47XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTQ6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MzdtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGMyNzliMWQ4MWQyZjNlMmY2MDMzYzAxNzliOGY3OWI0NmMzY2M3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jCmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmMKQEAgLTE2NzcsMTYgJiM0MzsxNjc3LDE5IEBAIHN0YXRpYyB2b2lkIGZibmljX21ieF9wcm9jZXNzX3J4X21zZ3Moc3RydWN0IGZibmljX2RldiAqZmJkKQogCQlpZiAoIWxlbmd0aCkKIAkJCWdvdG8gbmV4dF9wYWdlOwogCi0JCS8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGxlbmd0aCBncmVhdGVyIHRoYW4gcGFnZSBzaXplICovCi0JCWlmIChsZW5ndGggJmd0OyBQQUdFX1NJWkUpIHsKJiM0MzsJCS8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGludmFsaWQgbWVzc2FnZSBleHRlbnRzLiAqLwomIzQzOwkJaWYgKGxlbmd0aCAmbHQ7IHNpemVvZihtc2ctJmd0O2hkcikgfHwgbGVuZ3RoICZndDsgUEFHRV9TSVpFKSB7CiAJCQlkZXZfd2FybihmYmQtJmd0O2RldiwKIAkJCQkgJiMzNDtJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcbiYjMzQ7LAogCQkJCSBsZW5ndGgpOwogCQkJZ290byBuZXh0X3BhZ2U7CiAJCX0KIAotCQlpZiAobGUxNl90b19jcHUobXNnLSZndDtoZHIubGVuKSAqIHNpemVvZih1MzIpICZndDsgbGVuZ3RoKQomIzQzOwkJaWYgKCFsZTE2X3RvX2NwdShtc2ctJmd0O2hkci5sZW4pIHx8CiYjNDM7CQkgICAgbGUxNl90b19jcHUobXNnLSZndDtoZHIubGVuKSAqIHNpemVvZih1MzIpICZndDsgbGVuZ3RoKSB7CiAJCQlkZXZfd2FybihmYmQtJmd0O2RldiwgJiMzNDtNYWlsYm94IG1lc3NhZ2UgbGVuZ3RoIG1pc21hdGNoXG4mIzM0Oyk7CiYjNDM7CQkJZ290byBuZXh0X3BhZ2U7CiYjNDM7CQl9CiAKIAkJLyogSWYgcGFyc2luZyBmYWlscyBkdW1wIGNvbnRlbnRzIG9mIG1lc3NhZ2UgdG8gZG1lc2cgKi8KIAkJZXJyID0gZmJuaWNfdGx2X21zZ19wYXJzZShmYmQsIG1zZywgZmJuaWNfZndfdGx2X3BhcnNlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuYwppbmRleCBjNTVkNGY3NmE1ZmMwLi42MzlmOTA2NjRkOTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmMKQEAgLTQyNyw5ICYjNDM7NDI3LDEyIEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbiwKIAkvKiBXb3JrIHRocm91Z2ggbGlzdCBvZiBhdHRyaWJ1dGVzLCBwYXJzaW5nIHRoZW0gYXMgbmVjZXNzYXJ5ICovCiAJd2hpbGUgKGxlbiAmZ3Q7IDApIHsKIAkJdTE2IGF0dHJfaWQgPSBhdHRyLSZndDtoZHIudHlwZTsKLQkJdTE2IGF0dHJfbGVuOwomIzQzOwkJdTE2IGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJaW50IGVycjsKIAomIzQzOwkJaWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiAmZ3Q7IGxlbikKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJaWYgKHRsdl9hdHRyX2lkICE9IGF0dHJfaWQpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtNDQzLDcgJiM0Mzs0NDYsNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2VfYXJyYXkoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sCiAKIAkJcmVzdWx0c1tpJiM0MzsmIzQzO10gPSBhdHRyOwogCi0JCWF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJbGVuIC09IGF0dHJfbGVuOwogCQlhdHRyICYjNDM7PSBhdHRyX2xlbjsKIAl9CkBAIC00NzYsMTEgJiM0Mzs0NzgsMTUgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLAogCiAJLyogV29yayB0aHJvdWdoIGxpc3Qgb2YgYXR0cmlidXRlcywgcGFyc2luZyB0aGVtIGFzIG5lY2Vzc2FyeSAqLwogCXdoaWxlIChsZW4gJmd0OyAwKSB7Ci0JCWludCBlcnIgPSBmYm5pY190bHZfYXR0cl92YWxpZGF0ZShhdHRyLCB0bHZfaW5kZXgpOwogCQl1MTYgYXR0cl9pZCA9IGF0dHItJmd0O2hkci50eXBlOwotCQl1MTYgYXR0cl9sZW47CiYjNDM7CQl1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci0mZ3Q7aGRyLmxlbikpOwomIzQzOwkJaW50IGVycjsKJiM0MzsKJiM0MzsJCWlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gJmd0OyBsZW4pCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi8KJiM0MzsJCWVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7CiAJCWlmIChlcnIgJmx0OyAwKQogCQkJcmV0dXJuIGVycjsKIApAQCAtNDkzLDcgJiM0Mzs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sCiAJCQlyZXN1bHRzW2F0dHJfaWRdID0gYXR0cjsKIAkJfQogCi0JCWF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItJmd0O2hkci5sZW4pKTsKIAkJbGVuIC09IGF0dHJfbGVuOwogCQlhdHRyICYjNDM7PSBhdHRyX2xlbjsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE0OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zM208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhlIGRpZmYgdG91Y2hlcyBgZmJuaWNfZncuY2AgYW5kIGBmYm5pY190bHYuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9gIGRpcmVjdG9yeS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgKmlzKiBgZmJuaWNgPyBCYXNlZCBvbiB0aGUgcGF0aCwgaXQgKmZlZWxzKiBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlciwgcHJvYmFibHkgc29tZXRoaW5nIGludGVybmFsIHRvIE1ldGEuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEkga25vdyBNZXRhIGhhcyBhIGZldyBjdXN0b20gQVNJQ3MsIHNvIGl0JiMzOTtzIGEgbGlrZWx5IGNhbmRpZGF0ZS4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nLiBEb2VzIGBmYm5pY2AgZHJpdmUgaGFyZHdhcmUgdGhhdCYjMzk7cyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBkb2VzIGl0ICpyZXF1aXJlKiBwaHlzaWNhbCBQQ0llIGNhcmRzIHRoYXQgYXJlbiYjMzk7dCB0eXBpY2FsbHkgZW11bGF0ZWQ/IFRoaXMgaXMgd2hlcmUgdGhlIGluc3RydWN0aW9ucyBjb21lIGluLgoKTGV0JiMzOTtzIHNlZTogdGhlIGd1aWRhbmNlIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBhcmUgKm5vdCogd29ydGggZnV6emluZyBpZiB0aGV5IGludm9sdmUgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBUaGF0IGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQuIElmIGBmYm5pY2AgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LCB0aGVuIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIGRlYWQgZW5kIGZvciBmdXp6aW5nIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KClRpbWUgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgZmJuaWNgIGFjdHVhbGx5ICppcyouIExldCYjMzk7cyBmaW5kIG91dCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDg0NDAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzUtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozNjpcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0ZCTklDKSAmIzQzOz0gZmJuaWMvXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19GQk5JQykgJiM0Mzs9IGZibmljLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTA6ZmJuaWMteSA6PSBmYm5pY19jc3IubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMTpcdCAgIGZibmljX2RlYnVnZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMjpcdCAgIGZibmljX2RldmxpbmsubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMzpcdCAgIGZibmljX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNDpcdCAgIGZibmljX2Z3Lm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTU6XHQgICBmYm5pY19md19sb2cubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNjpcdCAgIGZibmljX2h3X3N0YXRzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTc6XHQgICBmYm5pY19od21vbi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE4Olx0ICAgZmJuaWNfaXJxLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTk6XHQgICBmYm5pY19tYWMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyMDpcdCAgIGZibmljX25ldGRldi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIxOlx0ICAgZmJuaWNfcGNpLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjI6XHQgICBmYm5pY19waHlsaW5rLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjM6XHQgICBmYm5pY19ycGMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNDpcdCAgIGZibmljX21kaW8ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNTpcdCAgIGZibmljX3RpbWUubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNjpcdCAgIGZibmljX3Rsdi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI3Olx0ICAgZmJuaWNfdHhyeC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTI4LSMgRW5kIG9mIG9iamVjdHNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfY3NyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDojaW5jbHVkZSBcJiMzNDtmYm5pY19mdy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfZndfbG9nLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjojaW5jbHVkZSBcJiMzNDtmYm5pY19od19zdGF0cy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfbWFjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODojaW5jbHVkZSBcJiMzNDtmYm5pY19ycGMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwOnN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU6c3RydWN0IGZibmljX2RldiB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjYtXHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM0LVx0dTMyIF9faW9tZW0gKnVjX2FkZHI0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjM1Olx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM2LVx0dW5zaWduZWQgaW50IGZ3X21zaXhfdmVjdG9yO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0NzpcdHN0cnVjdCBmYm5pY19md19tYnggbWJ4W0ZCTklDX0lQQ19NQlhfSU5ESUNFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NDg6XHRzdHJ1Y3QgZmJuaWNfZndfY2FwIGZ3X2NhcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0OTpcdHN0cnVjdCBmYm5pY19md19jb21wbGV0aW9uICpjbXBsX2RhdGFbRkJOSUNfTUJYX0NNUExfU0xPVFNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTUwLVx0LyogTG9jayBwcm90ZWN0aW5nIFR4IE1haWxib3ggcXVldWUgdG8gcHJldmVudCBwb3NzaWJsZSByYWNlcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC02Mi1cdC8qIExvY2FsIGNvcHkgb2YgdGhlIGRldmljZXMgVENBTSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjYzOlx0c3RydWN0IGZibmljX2FjdF90Y2FtIGFjdF90Y2FtW0ZCTklDX1JQQ19UQ0FNX0FDVF9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjQ6XHRzdHJ1Y3QgZmJuaWNfbWFjX2FkZHIgbWFjX2FkZHJbRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY1LVx0dTggbWFjX2FkZHJfYm91bmRhcnk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTY4LVx0LyogSVAgVENBTSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjY5Olx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfc3JjW0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcwOlx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBfZHN0W0ZCTklDX1JQQ19UQ0FNX0lQX0FERFJfTlVNX0VOVFJJRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcxOlx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo3MjpcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwb19kc3RbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjc3Olx0LyogTG9jayBwcm90ZWN0aW5nIHdyaXRlcyB0byBAdGltZV9oaWdoLCBAdGltZV9vZmZzZXQgb2YgZmJuaWNfbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTc4LVx0ICogYW5kIHRoZSBIVyB0aW1lIENTUiBtYWNoaW5lcnkuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTkxLVx0LyogTG9jYWwgY29weSBvZiBoYXJkd2FyZSBzdGF0aXN0aWNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6OTI6XHRzdHJ1Y3QgZmJuaWNfaHdfc3RhdHMgaHdfc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjk4Olx0c3RydWN0IGZibmljX2Z3X2xvZyBmd19sb2c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oPTExMj1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjExODpzdGF0aWMgaW5saW5lIGJvb2wgZmJuaWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEyMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTI0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMTp1MzIgZmJuaWNfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMzM6c3RhdGljIGlubGluZSB2b2lkIGZibmljX3dyZmwoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM1Olx0ZmJuaWNfcmQzMihmYmQsIEZCTklDX01BU1RFUl9TUEFSRV8wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMzg9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM5OmZibmljX3JtdzMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE0MzpcdHYgPSBmYm5pY19yZDMyKGZiZCwgcmVnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDQtXHR2IFx1MDAyNj0gfm1hc2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ1LVx0diB8PSB2YWw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ2Olx0ZmJuaWNfd3IzMihmYmQsIHJlZywgdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ5OiNkZWZpbmUgd3IzMihfZiwgX3IsIF92KVx0ZmJuaWNfd3IzMihfZiwgX3IsIF92KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MDojZGVmaW5lIHJkMzIoX2YsIF9yKVx0XHRmYm5pY19yZDMyKF9mLCBfcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTE6I2RlZmluZSB3cmZsKF9mKVx0XHRmYm5pY193cmZsKF9mKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTM6Ym9vbCBmYm5pY19md19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU0OnUzMiBmYm5pY19md19yZDMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU1OnZvaWQgZmJuaWNfZndfd3IzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcsIHUzMiB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTc6I2RlZmluZSBmd19yZDMyKF9mLCBfcilcdFx0ZmJuaWNfZndfcmQzMihfZiwgX3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU4OiNkZWZpbmUgZndfd3IzMihfZiwgX3IsIF92KVx0ZmJuaWNfZndfd3IzMihfZiwgX3IsIF92KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OTojZGVmaW5lIGZ3X3dyZmwoX2YpXHRcdGZibmljX2Z3X3JkMzIoX2YsIEZCTklDX0ZXX1pFUk9fUkVHKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjE6c3RhdGljIGlubGluZSBib29sIGZibmljX2JtY19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTY2OnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19pbml0X2ZhaWx1cmUoc3RydWN0IGZibmljX2RldiAqZmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzE6ZXh0ZXJuIGNoYXIgZmJuaWNfZHJpdmVyX25hbWVbXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTczOnZvaWQgZmJuaWNfZGV2bGlua19mcmVlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc0OnN0cnVjdCBmYm5pY19kZXYgKmZibmljX2RldmxpbmtfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3NTppbnQgZmJuaWNfZGV2bGlua19oZWFsdGhfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc2OnZvaWQgZmJuaWNfZGV2bGlua19oZWFsdGhfZGVzdHJveShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Nzp2b2lkIGZibmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzg6dm9pZCBmYm5pY19kZXZsaW5rX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNzktdm9pZCBfX3ByaW50ZigyLCAzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MDpmYm5pY19kZXZsaW5rX2Z3X3JlcG9ydChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODE6dm9pZCBmYm5pY19kZXZsaW5rX290cF9jaGVjayhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKm1zZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MzppbnQgZmJuaWNfZndfcmVxdWVzdF9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODQ6dm9pZCBmYm5pY19md19mcmVlX21ieChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODY6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4Nzp2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg5OmludCBmYm5pY19tYWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTA6dm9pZCBmYm5pY19tYWNfZnJlZV9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkyOnZvaWQgZmJuaWNfbmFwaV9uYW1lX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTM6aW50IGZibmljX25hcGlfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5NDpcdFx0XHQgICBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTU6dm9pZCBmYm5pY19uYXBpX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTY6XHRcdFx0IHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE5Nzp2b2lkIGZibmljX3N5bmNocm9uaXplX2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBucik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk4OmludCBmYm5pY19yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5OS1cdFx0ICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjAwOnZvaWQgZmJuaWNfZnJlZV9pcnEoc3RydWN0IGZibmljX2RldiAqZGV2LCBpbnQgbnIsIHZvaWQgKmRhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjAzOiAqIGVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjE4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIxOTplbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMjAtXHRGQk5JQ19URVNUX01TSVhfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzE6ZW51bSBmYm5pY19tc2l4X3NlbGZfdGVzdF9jb2RlcyBmYm5pY19tc2l4X3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMzOnZvaWQgZmJuaWNfZnJlZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM0OmludCBmYm5pY19hbGxvY19pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNjp2b2lkIGZibmljX2dldF9md192ZXJfY29tbWl0X3N0cihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNoYXIgKmZ3X3ZlcnNpb24sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjM3LVx0XHRcdFx0IGNvbnN0IHNpemVfdCBzdHJfc3opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMzk6dm9pZCBmYm5pY19kYmdfZmJkX2luaXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDA6dm9pZCBmYm5pY19kYmdfZmJkX2V4aXQoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDE6dm9pZCBmYm5pY19kYmdfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDI6dm9pZCBmYm5pY19kYmdfZXhpdCh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ0OnZvaWQgZmJuaWNfcnBjX3Jlc2V0X3ZhbGlkX2VudHJpZXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ2OmludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDg6dm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3Moc3RydWN0IGZibmljX2RldiAqZmJkLCB1MzIgKmRhdGEsIHUzMiAqcmVnc192ZXJzaW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDk6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTE6dm9pZCBmYm5pY19jb25maWdfdHhyeF91c2VjcyhzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52LCB1MzIgYXJtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTI6dm9pZCBmYm5pY19jb25maWdfcnhfZnJhbWVzKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTQ6ZW51bSBmYm5pY19ib2FyZHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1NTpcdGZibmljX2JvYXJkX2FzaWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU4OnN0cnVjdCBmYm5pY19pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yNTktXHR1bnNpZ25lZCBpbnQgbWF4X251bV9xdWV1ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo0OiNpbmNsdWRlIFwmIzM0O2ZibmljLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTpzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyLVx0dTMyXHRzdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNjpzdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgZmJuaWNfY3NyX3NlY3RzW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3LVx0RkJOSUNfQk9VTkRTKElOVFIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjYwOnN0YXRpYyB2b2lkIGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICoqZGF0YV9wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy02MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNTp2b2lkIGZibmljX2Nzcl9nZXRfcmVncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqZGF0YSwgdTMyICpyZWdzX3ZlcnNpb24pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExNzpcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfYm91bmRzICpib3VuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE4LVx0dTMyICpzdGFydCA9IGRhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMjMtXHQvKiBTa2lwIFJQQ19SQU0gc2VjdGlvbiB3aGljaCBjYW5ub3QgYmUgZHVtcGVkIGxpbmVhcmx5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEyNDpcdGZvciAoaSA9IDAsIGJvdW5kID0gZmJuaWNfY3NyX3NlY3RzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMjU6XHQgICAgIGkgXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKSAtIDE7IGkmIzQzOyYjNDM7LCAmIzQzOyYjNDM7Ym91bmQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTI2LVx0XHQqKGRhdGEmIzQzOyYjNDM7KSA9IGJvdW5kLVx1MDAzZXN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTMyLVx0LyogRHVtcCB0aGUgUlBDX1JBTSBhcyBzcGVjaWFsIGNhc2UgcmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzMzpcdGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKGZiZCwgXHUwMDI2ZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM1Olx0V0FSTl9PTihkYXRhIC0gc3RhcnQgIT0gZmJuaWNfY3NyX3JlZ3NfbGVuKGZiZCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjEzODppbnQgZmJuaWNfY3NyX3JlZ3NfbGVuKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE0NC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZibmljX2Nzcl9zZWN0cyk7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDY6XHRcdGxlbiAmIzQzOz0gZmJuaWNfY3NyX3NlY3RzW2ldLmVuZCAtIGZibmljX2Nzcl9zZWN0c1tpXS5zdGFydCAmIzQzOyAyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE1OTpzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNjAtXHRpbnRcdHJlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgcGF0dGVybl90ZXN0W10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3Ni1cdEZCTklDX1FVRVVFX1JFR19URVNUKFRXUTBfQ1RMLCBGQk5JQ19RVUVVRV9UV1FfQ1RMX1JFU0VULFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTI6c3RhdGljIGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2Rlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyMTM6ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkLCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNDpcdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE2LVx0c3RhdGljIGNvbnN0IHUzMiBwYXR0ZXJuW10gPSB7IH4wLCAweDVBNUE1QTVBLCAweEE1QTVBNUE1LCAwfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjE3Olx0ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIHJlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE4LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI0ODogKiBmYm5pY19jc3JfcmVnc190ZXN0KCkgLSBWZXJpZnkgYmVoYXZpb3Igb2YgTklDIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDktICogQGZiZDogZGV2aWNlIHRvIHRlc3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI1OTplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgZmJuaWNfY3NyX3JlZ3NfdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2MTpcdGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSAqdGVzdF9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjctXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRlc3RfZGF0YS1cdTAwM2VhcnJheV9sZW47IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjI2ODpcdFx0XHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY5Olx0XHRcdFx0ZmJuaWNfY3NyX3JlZ19wYXR0ZXJuX3Rlc3QoZmJkLCBpLCB0ZXN0X2RhdGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDo5OnN0cnVjdCBmYm5pY19kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg9MTIzNT1lbnVte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTIzOS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI0MDogKiBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgLSByZXR1cm4gY29kZXMgZnJvbSBzZWxmIHRlc3Qgcm91dGluZXNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0MS0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0OS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1MDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjUxLVx0RkJOSUNfUkVHX1RFU1RfU1VDQ0VTUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjU0OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjk6I2luY2x1ZGUgXCYjMzQ7ZmJuaWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZmJuaWNfdHhyeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEyOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpmYm5pY19kYmdfcm9vdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX2Rlc2NfYnJlYWsoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgaSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI0OnN0YXRpYyB2b2lkIGZibmljX2RiZ19yaW5nX3Nob3coc3RydWN0IHNlcV9maWxlICpzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjY6XHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3LVx0dW5zaWduZWQgbG9uZyBkb29yYmVsbF9vZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTpcdGNzcl9iYXNlID0gZmJuaWNfcmluZ19jc3JfYmFzZShyaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyLVx0ZG9vcmJlbGxfb2Zmc2V0ID0gcmluZy1cdTAwM2Vkb29yYmVsbCAtIGNzcl9iYXNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NzY6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3R3ZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy03Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3ODpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzktXHR1NjQgdHdkID0gbGU2NF90b19jcHUocmluZy1cdTAwM2VkZXNjW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDc6c3RhdGljIGludCBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwOTpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTEwLVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMy1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE0Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExNS1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlNXMgJXMgJXNcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE3LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjExODpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSByaW5nLVx1MDAzZXNpemVfbWFzazsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjc6XHRcdGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzI6c3RhdGljIGludCBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzNDpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTM1LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzOC1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM5Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0MC1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlcyAlcyAlcyAlNXMgJS0xNnMgJS02cyAlLTZzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0Mi1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNDM6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODE6c3RhdGljIGludCBmYm5pY19kYmdfYmRxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MzpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg0LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Ny1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTg4Olx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4OS1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFwmIzM0OyU0cyAlLTRzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5MS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxOTI6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTE6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjEzOlx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yMTQtXHR1NjQgcmNkID0gbGU2NF90b19jcHUocmluZy1cdTAwM2VkZXNjW2ldKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNTQ6c3RhdGljIGludCBmYm5pY19kYmdfcmNxX2Rlc2Nfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NjpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gcy1cdTAwM2Vwcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU3LVx0Y2hhciBoZHJbODBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2MC1cdC8qIEdlbmVyYXRlIGhlYWRlciBvbiBmaXJzdCBlbnRyeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjYxOlx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2Mi1cdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjY4LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2OTpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjcwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjPSByaW5nLVx1MDAzZXNpemVfbWFzazsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNzg6XHRcdGZibmljX2RiZ19yY2RfZGVzY19zZXFfc2hvdyhzLCBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODM6c3RhdGljIGludCBmYm5pY19kYmdfZGVzY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4NTpcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gaW5vZGUtXHUwMDNlaV9wcml2YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg2LVx0aW50ICgqc2hvdykoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI4ODpcdHN3aXRjaCAocmluZy1cdTAwM2Vkb29yYmVsbCAtIGZibmljX3JpbmdfY3NyX2Jhc2UocmluZykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4OS1cdGNhc2UgRkJOSUNfUVVFVUVfVFdRMF9UQUlMOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkwLVx0Y2FzZSBGQk5JQ19RVUVVRV9UV1ExX1RBSUw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTE6XHRcdHNob3cgPSBmYm5pY19kYmdfdHdxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTItXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkzLVx0Y2FzZSBGQk5JQ19RVUVVRV9UQ1FfSEVBRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5NDpcdFx0c2hvdyA9IGZibmljX2RiZ190Y3FfZGVzY19zZXFfc2hvdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk3LVx0Y2FzZSBGQk5JQ19RVUVVRV9CRFFfUFBRX1RBSUw6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTg6XHRcdHNob3cgPSBmYm5pY19kYmdfYmRxX2Rlc2Nfc2VxX3Nob3c7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzAwLVx0Y2FzZSBGQk5JQ19RVUVVRV9SQ1FfSEVBRDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMwMTpcdFx0c2hvdyA9IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMwMi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZibmljX2RiZ19kZXNjX2ZvcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTEtXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMxMjpcdC5vcGVuXHRcdD0gZmJuaWNfZGJnX2Rlc2Nfb3BlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMy1cdC5yZWFkXHRcdD0gc2VxX3JlYWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE4OnZvaWQgZmJuaWNfZGJnX252X2luaXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxOS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMjA6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBudi1cdTAwM2VmYmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMjEtXHRjaGFyIG5hbWVbMTZdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMzMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG52LVx1MDAzZXR4dF9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMzMTpcdFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXHUwMDI2bnYtXHUwMDNlcXRbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzItXHRcdHVuc2lnbmVkIGludCBod19pZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzQ6XHRcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXHUwMDI2cXQtXHUwMDNlY21wbCkgLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM1LVx0XHRcdCAgXHUwMDI2ZmJkLVx1MDAzZXVjX2FkZHIwW0ZCTklDX1FVRVVFKDApXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzktXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VzdWIwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQwOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0My1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDQ6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ3LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlY21wbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0ODpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTItXHRmb3IgKGogPSAwOyBqIFx1MDAzYyBudi1cdTAwM2VyeHRfY291bnQ7IGomIzQzOyYjNDM7LCBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzUzOlx0XHRzdHJ1Y3QgZmJuaWNfcV90cmlhZCAqcXQgPSBcdTAwMjZudi1cdTAwM2VxdFtpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1NC1cdFx0dW5zaWduZWQgaW50IGh3X2lkeDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM1NjpcdFx0aHdfaWR4ID0gZmJuaWNfcmluZ19jc3JfYmFzZShcdTAwMjZxdC1cdTAwM2VjbXBsKSAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTctXHRcdFx0ICBcdTAwMjZmYmQtXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2MS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cdTAwM2VkYmdfbnYsIFx1MDAyNnF0LVx1MDAzZXN1YjAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjI6XHRcdFx0XHQgICAgXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzY1LVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVx1MDAzZWRiZ19udiwgXHUwMDI2cXQtXHUwMDNlc3ViMSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM2NjpcdFx0XHRcdCAgICBcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjktXHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXHUwMDNlZGJnX252LCBcdTAwMjZxdC1cdTAwM2VjbXBsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzcwOlx0XHRcdFx0ICAgIFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzcxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM3NDp2b2lkIGZibmljX2RiZ19udl9leGl0KHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM4MDpzdGF0aWMgaW50IGZibmljX2RiZ19tYWNfYWRkcl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozODI6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zODMtXHRjaGFyIGhkcls4MF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzg5LVx0c2VxX3B1dHMocywgaGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MDpcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRkJOSUNfUlBDX1RDQU1fTUFDREFfTlVNX0VOVFJJRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozOTM6XHRcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcdTAwMjZmYmQtXHUwMDNlbWFjX2FkZHJbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDAzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNDpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX21hY19hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNjpzdGF0aWMgaW50IGZibmljX2RiZ190Y2VfdGNhbV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MDg6XHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDktXHRpbnQgaSwgdGNhbV9pZHggPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNS1cdHNlcV9wdXRzKHMsIGhkcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTY6XHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZmJkLVx1MDAzZW1hY19hZGRyKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQxOTpcdFx0c3RydWN0IGZibmljX21hY19hZGRyICptYWNfYWRkciA9IFx1MDAyNmZiZC1cdTAwM2VtYWNfYWRkcltpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQyMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDM4OkRFRklORV9TSE9XX0FUVFJJQlVURShmYm5pY19kYmdfdGNlX3RjYW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2FjdF90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDQxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQ0MjpcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0My1cdGNoYXIgaGRyWzgwXTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEZCTklDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBGQk5JQyBkcml2ZXIuIE15IHVzdWFsIHN0YXJ0aW5nIHBvaW50IGlzIGFsd2F5cyB0aGUgYEtjb25maWdgIGZpbGUsIHNvIEkmIzM5O20gaGVhZGluZyBzdHJhaWdodCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBkZXNjcmlwdGlvbiBvZiB0aGUgRkJOSUMgZHJpdmVyLCBhbG9uZyB3aXRoIGFsbCBpdHMgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMuIEtub3dpbmcgYWxsIHRoYXQgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGN1c3RvbWl6ZSB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgbmV0d29ya2luZyBoYXJkd2FyZSB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGJ1aWxkLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBpdCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGlmIGl0IGRlcGVuZHMgb24gYW55IG90aGVyIG5ldHdvcmsgZHJpdmVycywgYW5kIHdoYXQga2luZCBvZiBwZXJmb3JtYW5jZSBvciByZXNvdXJjZSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGBLY29uZmlnYCBoYXMgdG8gdGVsbCB1cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtNZXRhIFBsYXRmb3JtcyBkZXZpY2VzXCYjMzQ7XG4gICA4Olx0XHRkZWZhdWx0IHlcbiAgIDk6XHRcdGhlbHBcbiAgMTA6XHRcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBkZXNpZ25lZCBieSBNZXRhLCBzYXkgWS5cbiAgMTE6XHRcdCAgVGhhdCYjMzk7cyBNZXRhIGFzIGluIHRoZSBwYXJlbnQgY29tcGFueSBvZiBGYWNlYm9vay5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDE0Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTU6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBNZXRhIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxNjpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE3Olx0XG4gIDE4Olx0aWYgTkVUX1ZFTkRPUl9NRVRBXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIEZCTklDXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZXRhIFBsYXRmb3JtcyBIb3N0IE5ldHdvcmsgSW50ZXJmYWNlXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxuICAyMzpcdFx0ZGVwZW5kcyBvbiAhUzM5MFxuICAyNDpcdFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFx1MDAzYyAyMlxuICAyNTpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gIDI2Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDI3Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMjg6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMjk6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAzMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMzE6XHRcdHNlbGVjdCBQTERNRldcbiAgMzI6XHRcdGhlbHBcbiAgMzM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZS5cbiAgMzQ6XHRcbiAgMzU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAzNjpcdFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxuICAzNzpcdFxuICAzODpcdGVuZGlmICMgTkVUX1ZFTkRPUl9NRVRBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNDIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYGZibmljYCBQcm9iZSBQQ0kgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIFBDSSBJRHMgdGhhdCB0aGUgYGZibmljYCBkcml2ZXIgcHJvYmVzIGZvci4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjdXN0b20gb3IgbGVzcyBjb21tb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZGVidWdnaW5nLCBjb25maWd1cmF0aW9uLCBvciBwZXJmb3JtYW5jZSB0dW5pbmcgSSYjMzk7bGwgbmVlZCB0byBkbyByZWdhcmRpbmcgdGhlIGRyaXZlci4gSSBleHBlY3QgdGhhdCBJIHdpbGwgbGlrZWx5IG5lZWQgdGhpcyB0byBmaWd1cmUgb3V0IGRldmljZSBzdXBwb3J0IGluIHRoZSBjdXJyZW50IGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTI2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfaW5mbyAqZmJuaWNfaW5mb190YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYzozMDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZmJuaWNfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zMS1cdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yMTQ9c3RhdGljIHZvaWQgZmJuaWNfc2VydmljZV90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI1OC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jOjI1OTpzdGF0aWMgaW50IGZibmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTM1CgkJCQkJCQlvdXRwdXQ6IDk4CgkJCQkJCQl0aG91Z2h0czogNTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBmYm5pY2AgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggSSBrbm93IGlzIE1ldGEmIzM5O3MgY3VzdG9tLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgQVNJQy4gRmlyc3QgdGhpbmcsIGxldCYjMzk7cyByZXZpZXcgdGhlIHJ1bGVzLiBUaGV5IHNwZWNpZmljYWxseSBzYXkgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBCaW5nby4gYGZibmljYCBpcyAqZXhhY3RseSogdGhhdC4gSXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBOSUMgbGlrZSBhbiBlMTAwMCBvciB2aXJ0aW8tbmV0OyBpdCYjMzk7cyBhIHByb3ByaWV0YXJ5IEFTSUMgZGVzaWduZWQgZm9yIE1ldGEmIzM5O3MgaW50ZXJuYWwgZGF0YSBjZW50ZXJzLiBJdCYjMzk7cyBub3QgcGFydCBvZiB0aGUgc3RhbmRhcmQgUUVNVSBvciBvdGhlciB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuCgpTbywgbG9naWNhbGx5LCBhbnkgY29kZSBwYXRocyByZWxhdGVkIHRvIGBmYm5pY2AgYXJlIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuIEkgY2FuJiMzOTt0IGZ1enogY29kZSB0aGF0IG5lZWRzIGEgcGllY2Ugb2YgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgYWNjZXNzaWJsZS4gTXkgY29uY2x1c2lvbj8gYFdvcnRoRnV6emluZ2AgaGFzIHRvIGJlIGBmYWxzZWAuCgpMZXQmIzM5O3MgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgZXZlcnl0aGluZyBjb3ZlcmVkLiBNeSBhc3Nlc3NtZW50IHNob3VsZCBiZToKCiogICBgV29ydGhGdXp6aW5nPWZhbHNlYAoqICAgYEZvY3VzU3ltYm9sczogW11gCiogICBgRW5hYmxlQ29uZmlnczogW11gCgpBbmQgbm93LCBmb3IgdGhlIGNvbmNpc2UgcmVhc29uaW5nLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AsIGZvciBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IFBDSWUgTklDIEFTSUMuIFRoaXMgcGFydGljdWxhciBBU0lDICpuZWVkcyogc3BlY2lhbGl6ZWQsIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6ZWQgc2V0dXBzIChsaWtlIEdDRSBvciBzeXprYWxsZXIpLCB0aGUgY29kZSBwYXRocyBpbiB0aGlzIGRyaXZlciBhcmUgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gYW55IGZ1enppbmcgY29udGV4dCB0aGF0IHVzZXMgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoaXMgYnkgY2FsbGluZyBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBNZXRhJiMzOTtzIHByb3ByaWV0YXJ5IFBDSWUgQVNJQyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNDozNTo1Mi4xMDk0NTEwNjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI3Mzc0MzE0NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy8pLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgTWV0YSdzIHByb3ByaWV0YXJ5IFBDSWUgQVNJQyBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBUaGlzIGRyaXZlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6MzU6NTIuMTA5NDU2MTkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjI2MDA0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YzI3OWIxZDgxZDJmM2UyZjYwMzNjMDE3OWI4Zjc5YjQ2YzNjYzc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE0OjM1OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xcbmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19mdy5jXFxuQEAgLTE2NzcsMTYgKzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuIFxcdFxcdGlmICghbGVuZ3RoKVxcbiBcXHRcXHRcXHRnb3RvIG5leHRfcGFnZTtcXG4gXFxuLVxcdFxcdC8qIFJlcG9ydCBkZXNjcmlwdG9ycyB3aXRoIGxlbmd0aCBncmVhdGVyIHRoYW4gcGFnZSBzaXplICovXFxuLVxcdFxcdGlmIChsZW5ndGggXFx1MDAzZSBQQUdFX1NJWkUpIHtcXG4rXFx0XFx0LyogUmVwb3J0IGRlc2NyaXB0b3JzIHdpdGggaW52YWxpZCBtZXNzYWdlIGV4dGVudHMuICovXFxuK1xcdFxcdGlmIChsZW5ndGggXFx1MDAzYyBzaXplb2YobXNnLVxcdTAwM2VoZHIpIHx8IGxlbmd0aCBcXHUwMDNlIFBBR0VfU0laRSkge1xcbiBcXHRcXHRcXHRkZXZfd2FybihmYmQtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0IFxcXCJJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBsZW5ndGgpO1xcbiBcXHRcXHRcXHRnb3RvIG5leHRfcGFnZTtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0aWYgKGxlMTZfdG9fY3B1KG1zZy1cXHUwMDNlaGRyLmxlbikgKiBzaXplb2YodTMyKSBcXHUwMDNlIGxlbmd0aClcXG4rXFx0XFx0aWYgKCFsZTE2X3RvX2NwdShtc2ctXFx1MDAzZWhkci5sZW4pIHx8XFxuK1xcdFxcdCAgICBsZTE2X3RvX2NwdShtc2ctXFx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXFx1MDAzZSBsZW5ndGgpIHtcXG4gXFx0XFx0XFx0ZGV2X3dhcm4oZmJkLVxcdTAwM2VkZXYsIFxcXCJNYWlsYm94IG1lc3NhZ2UgbGVuZ3RoIG1pc21hdGNoXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0Z290byBuZXh0X3BhZ2U7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdC8qIElmIHBhcnNpbmcgZmFpbHMgZHVtcCBjb250ZW50cyBvZiBtZXNzYWdlIHRvIGRtZXNnICovXFxuIFxcdFxcdGVyciA9IGZibmljX3Rsdl9tc2dfcGFyc2UoZmJkLCBtc2csIGZibmljX2Z3X3Rsdl9wYXJzZXIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xcbmluZGV4IGM1NWQ0Zjc2YTVmYzAuLjYzOWY5MDY2NGQ5ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcXG5AQCAtNDI3LDkgKzQyNywxMiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2VfYXJyYXkoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXFxuIFxcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cXG4gXFx0d2hpbGUgKGxlbiBcXHUwMDNlIDApIHtcXG4gXFx0XFx0dTE2IGF0dHJfaWQgPSBhdHRyLVxcdTAwM2VoZHIudHlwZTtcXG4tXFx0XFx0dTE2IGF0dHJfbGVuO1xcbitcXHRcXHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cXHUwMDNlaGRyLmxlbikpO1xcbiBcXHRcXHRpbnQgZXJyO1xcbiBcXG4rXFx0XFx0aWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiBcXHUwMDNlIGxlbilcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC00NDMsNyArNDQ2LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxcbiBcXG4gXFx0XFx0cmVzdWx0c1tpKytdID0gYXR0cjtcXG4gXFxuLVxcdFxcdGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItXFx1MDAzZWhkci5sZW4pKTtcXG4gXFx0XFx0bGVuIC09IGF0dHJfbGVuO1xcbiBcXHRcXHRhdHRyICs9IGF0dHJfbGVuO1xcbiBcXHR9XFxuQEAgLTQ3NiwxMSArNDc4LDE1IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcXG4gXFxuIFxcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cXG4gXFx0d2hpbGUgKGxlbiBcXHUwMDNlIDApIHtcXG4tXFx0XFx0aW50IGVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7XFxuIFxcdFxcdHUxNiBhdHRyX2lkID0gYXR0ci1cXHUwMDNlaGRyLnR5cGU7XFxuLVxcdFxcdHUxNiBhdHRyX2xlbjtcXG4rXFx0XFx0dTE2IGF0dHJfbGVuID0gRkJOSUNfVExWX01TR19TSVpFKGxlMTZfdG9fY3B1KGF0dHItXFx1MDAzZWhkci5sZW4pKTtcXG4rXFx0XFx0aW50IGVycjtcXG4rXFxuK1xcdFxcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXFx1MDAzZSBsZW4pXFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0XFx0LyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi9cXG4rXFx0XFx0ZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcXG4gXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbkBAIC00OTMsNyArNDk5LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlKHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxcbiBcXHRcXHRcXHRyZXN1bHRzW2F0dHJfaWRdID0gYXR0cjtcXG4gXFx0XFx0fVxcbiBcXG4tXFx0XFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cXHUwMDNlaGRyLmxlbikpO1xcbiBcXHRcXHRsZW4gLT0gYXR0cl9sZW47XFxuIFxcdFxcdGF0dHIgKz0gYXR0cl9sZW47XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTQ6MzU6NTIuNDcyNzE5Njk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMjI3MDExMDIxMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljLyksIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBNZXRhJ3MgcHJvcHJpZXRhcnkgUENJZSBBU0lDIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4YzI3OWIxZDgxZDJmM2UyZjYwMzNjMDE3OWI4Zjc5YjQ2YzNjYzc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTQ6MzU6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmNcbmluZGV4IDI4M2QyNWZhZTc5ZTcuLmZmMTY3NGVmZjdhZDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Z3LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZncuY1xuQEAgLTE2NzcsMTYgKzE2NzcsMTkgQEAgc3RhdGljIHZvaWQgZmJuaWNfbWJ4X3Byb2Nlc3NfcnhfbXNncyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdGlmICghbGVuZ3RoKVxuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFxuLVx0XHQvKiBSZXBvcnQgZGVzY3JpcHRvcnMgd2l0aCBsZW5ndGggZ3JlYXRlciB0aGFuIHBhZ2Ugc2l6ZSAqL1xuLVx0XHRpZiAobGVuZ3RoIFx1MDAzZSBQQUdFX1NJWkUpIHtcbitcdFx0LyogUmVwb3J0IGRlc2NyaXB0b3JzIHdpdGggaW52YWxpZCBtZXNzYWdlIGV4dGVudHMuICovXG4rXHRcdGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihtc2ctXHUwMDNlaGRyKSB8fCBsZW5ndGggXHUwMDNlIFBBR0VfU0laRSkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsXG4gXHRcdFx0XHQgXCJJbnZhbGlkIG1haWxib3ggZGVzY3JpcHRvciBsZW5ndGg6ICVsbGRcXG5cIixcbiBcdFx0XHRcdCBsZW5ndGgpO1xuIFx0XHRcdGdvdG8gbmV4dF9wYWdlO1xuIFx0XHR9XG4gXG4tXHRcdGlmIChsZTE2X3RvX2NwdShtc2ctXHUwMDNlaGRyLmxlbikgKiBzaXplb2YodTMyKSBcdTAwM2UgbGVuZ3RoKVxuK1x0XHRpZiAoIWxlMTZfdG9fY3B1KG1zZy1cdTAwM2VoZHIubGVuKSB8fFxuK1x0XHQgICAgbGUxNl90b19jcHUobXNnLVx1MDAzZWhkci5sZW4pICogc2l6ZW9mKHUzMikgXHUwMDNlIGxlbmd0aCkge1xuIFx0XHRcdGRldl93YXJuKGZiZC1cdTAwM2VkZXYsIFwiTWFpbGJveCBtZXNzYWdlIGxlbmd0aCBtaXNtYXRjaFxcblwiKTtcbitcdFx0XHRnb3RvIG5leHRfcGFnZTtcbitcdFx0fVxuIFxuIFx0XHQvKiBJZiBwYXJzaW5nIGZhaWxzIGR1bXAgY29udGVudHMgb2YgbWVzc2FnZSB0byBkbWVzZyAqL1xuIFx0XHRlcnIgPSBmYm5pY190bHZfbXNnX3BhcnNlKGZiZCwgbXNnLCBmYm5pY19md190bHZfcGFyc2VyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3Rsdi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190bHYuY1xuaW5kZXggYzU1ZDRmNzZhNWZjMC4uNjM5ZjkwNjY0ZDk4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdGx2LmNcbkBAIC00MjcsOSArNDI3LDEyIEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZV9hcnJheShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cbiBcdHdoaWxlIChsZW4gXHUwMDNlIDApIHtcbiBcdFx0dTE2IGF0dHJfaWQgPSBhdHRyLVx1MDAzZWhkci50eXBlO1xuLVx0XHR1MTYgYXR0cl9sZW47XG4rXHRcdHUxNiBhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0aW50IGVycjtcbiBcbitcdFx0aWYgKCFhdHRyX2xlbiB8fCBhdHRyX2xlbiBcdTAwM2UgbGVuKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0XHRpZiAodGx2X2F0dHJfaWQgIT0gYXR0cl9pZClcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC00NDMsNyArNDQ2LDYgQEAgaW50IGZibmljX3Rsdl9hdHRyX3BhcnNlX2FycmF5KHN0cnVjdCBmYm5pY190bHZfbXNnICphdHRyLCBpbnQgbGVuLFxuIFxuIFx0XHRyZXN1bHRzW2krK10gPSBhdHRyO1xuIFxuLVx0XHRhdHRyX2xlbiA9IEZCTklDX1RMVl9NU0dfU0laRShsZTE2X3RvX2NwdShhdHRyLVx1MDAzZWhkci5sZW4pKTtcbiBcdFx0bGVuIC09IGF0dHJfbGVuO1xuIFx0XHRhdHRyICs9IGF0dHJfbGVuO1xuIFx0fVxuQEAgLTQ3NiwxMSArNDc4LDE1IEBAIGludCBmYm5pY190bHZfYXR0cl9wYXJzZShzdHJ1Y3QgZmJuaWNfdGx2X21zZyAqYXR0ciwgaW50IGxlbixcbiBcbiBcdC8qIFdvcmsgdGhyb3VnaCBsaXN0IG9mIGF0dHJpYnV0ZXMsIHBhcnNpbmcgdGhlbSBhcyBuZWNlc3NhcnkgKi9cbiBcdHdoaWxlIChsZW4gXHUwMDNlIDApIHtcbi1cdFx0aW50IGVyciA9IGZibmljX3Rsdl9hdHRyX3ZhbGlkYXRlKGF0dHIsIHRsdl9pbmRleCk7XG4gXHRcdHUxNiBhdHRyX2lkID0gYXR0ci1cdTAwM2VoZHIudHlwZTtcbi1cdFx0dTE2IGF0dHJfbGVuO1xuK1x0XHR1MTYgYXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4rXHRcdGludCBlcnI7XG4rXG4rXHRcdGlmICghYXR0cl9sZW4gfHwgYXR0cl9sZW4gXHUwMDNlIGxlbilcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0LyogU3RvcCBwYXJzaW5nIG9uIGZ1bGwgZXJyb3IgKi9cbitcdFx0ZXJyID0gZmJuaWNfdGx2X2F0dHJfdmFsaWRhdGUoYXR0ciwgdGx2X2luZGV4KTtcbiBcdFx0aWYgKGVyciBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gZXJyO1xuIFxuQEAgLTQ5Myw3ICs0OTksNiBAQCBpbnQgZmJuaWNfdGx2X2F0dHJfcGFyc2Uoc3RydWN0IGZibmljX3Rsdl9tc2cgKmF0dHIsIGludCBsZW4sXG4gXHRcdFx0cmVzdWx0c1thdHRyX2lkXSA9IGF0dHI7XG4gXHRcdH1cbiBcbi1cdFx0YXR0cl9sZW4gPSBGQk5JQ19UTFZfTVNHX1NJWkUobGUxNl90b19jcHUoYXR0ci1cdTAwM2VoZHIubGVuKSk7XG4gXHRcdGxlbiAtPSBhdHRyX2xlbjtcbiBcdFx0YXR0ciArPSBhdHRyX2xlbjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE0OjM1OjUyLjQ3MjcyMTQxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMDk5MjExNDkyNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgdGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBkaWZmIHRvdWNoZXMgYGZibmljX2Z3LmNgIGFuZCBgZmJuaWNfdGx2LmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0ICppcyogYGZibmljYD8gQmFzZWQgb24gdGhlIHBhdGgsIGl0ICpmZWVscyogbGlrZSBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIsIHByb2JhYmx5IHNvbWV0aGluZyBpbnRlcm5hbCB0byBNZXRhLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBJIGtub3cgTWV0YSBoYXMgYSBmZXcgY3VzdG9tIEFTSUNzLCBzbyBpdCdzIGEgbGlrZWx5IGNhbmRpZGF0ZS5cblxuVGhlIG5leHQgcXVlc3Rpb24gaXMgY3JpdGljYWwgZm9yIGZ1enppbmcuIERvZXMgYGZibmljYCBkcml2ZSBoYXJkd2FyZSB0aGF0J3MgZW11bGF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZG9lcyBpdCAqcmVxdWlyZSogcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCB0eXBpY2FsbHkgZW11bGF0ZWQ/IFRoaXMgaXMgd2hlcmUgdGhlIGluc3RydWN0aW9ucyBjb21lIGluLlxuXG5MZXQncyBzZWU6IHRoZSBndWlkYW5jZSBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHBhdGNoZXMgYXJlICpub3QqIHdvcnRoIGZ1enppbmcgaWYgdGhleSBpbnZvbHZlIFwidmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhhdCBoaXRzIHRoZSBuYWlsIG9uIHRoZSBoZWFkLiBJZiBgZmJuaWNgIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeSwgdGhlbiB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSBkZWFkIGVuZCBmb3IgZnV6emluZyBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cblRpbWUgdG8gc2VhcmNoIHRoZSBjb2RlYmFzZSBhbmQgZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBgZmJuaWNgIGFjdHVhbGx5ICppcyouIExldCdzIGZpbmQgb3V0IVxuXG5cbiIsIklucHV0VG9rZW5zIjozMDg2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MDk6MjIuMzkzODc0NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MTk0NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZibmljXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDQwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzUtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjM2OlxcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GQk5JQykgKz0gZmJuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19GQk5JQykgKz0gZmJuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGUtOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEwOmZibmljLXkgOj0gZmJuaWNfY3NyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTE6XFx0ICAgZmJuaWNfZGVidWdmcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjEyOlxcdCAgIGZibmljX2RldmxpbmsubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxMzpcXHQgICBmYm5pY19ldGh0b29sLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTQ6XFx0ICAgZmJuaWNfZncubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNTpcXHQgICBmYm5pY19md19sb2cubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToxNjpcXHQgICBmYm5pY19od19zdGF0cy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjE3OlxcdCAgIGZibmljX2h3bW9uLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTg6XFx0ICAgZmJuaWNfaXJxLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MTk6XFx0ICAgZmJuaWNfbWFjLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjA6XFx0ICAgZmJuaWNfbmV0ZGV2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjE6XFx0ICAgZmJuaWNfcGNpLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjI6XFx0ICAgZmJuaWNfcGh5bGluay5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjIzOlxcdCAgIGZibmljX3JwYy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlOjI0OlxcdCAgIGZibmljX21kaW8ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9NYWtlZmlsZToyNTpcXHQgICBmYm5pY190aW1lLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6MjY6XFx0ICAgZmJuaWNfdGx2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvTWFrZWZpbGU6Mjc6XFx0ICAgZmJuaWNfdHhyeC5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL01ha2VmaWxlLTI4LSMgRW5kIG9mIG9iamVjdHNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM6I2luY2x1ZGUgXFxcImZibmljX2Nzci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDojaW5jbHVkZSBcXFwiZmJuaWNfZncuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU6I2luY2x1ZGUgXFxcImZibmljX2Z3X2xvZy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjojaW5jbHVkZSBcXFwiZmJuaWNfaHdfc3RhdHMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc6I2luY2x1ZGUgXFxcImZibmljX21hYy5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODojaW5jbHVkZSBcXFwiZmJuaWNfcnBjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyMDpzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3I7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNTpzdHJ1Y3QgZmJuaWNfZGV2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjYtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTM0LVxcdHUzMiBfX2lvbWVtICp1Y19hZGRyNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MzU6XFx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0zNi1cXHR1bnNpZ25lZCBpbnQgZndfbXNpeF92ZWN0b3I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ3OlxcdHN0cnVjdCBmYm5pY19md19tYnggbWJ4W0ZCTklDX0lQQ19NQlhfSU5ESUNFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjQ4OlxcdHN0cnVjdCBmYm5pY19md19jYXAgZndfY2FwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo0OTpcXHRzdHJ1Y3QgZmJuaWNfZndfY29tcGxldGlvbiAqY21wbF9kYXRhW0ZCTklDX01CWF9DTVBMX1NMT1RTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNTAtXFx0LyogTG9jayBwcm90ZWN0aW5nIFR4IE1haWxib3ggcXVldWUgdG8gcHJldmVudCBwb3NzaWJsZSByYWNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTYyLVxcdC8qIExvY2FsIGNvcHkgb2YgdGhlIGRldmljZXMgVENBTSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2MzpcXHRzdHJ1Y3QgZmJuaWNfYWN0X3RjYW0gYWN0X3RjYW1bRkJOSUNfUlBDX1RDQU1fQUNUX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NjQ6XFx0c3RydWN0IGZibmljX21hY19hZGRyIG1hY19hZGRyW0ZCTklDX1JQQ19UQ0FNX01BQ0RBX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjUtXFx0dTggbWFjX2FkZHJfYm91bmRhcnk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNjgtXFx0LyogSVAgVENBTSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDo2OTpcXHRzdHJ1Y3QgZmJuaWNfaXBfYWRkciBpcF9zcmNbRkJOSUNfUlBDX1RDQU1fSVBfQUREUl9OVU1fRU5UUklFU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjcwOlxcdHN0cnVjdCBmYm5pY19pcF9hZGRyIGlwX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzE6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX3NyY1tGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6NzI6XFx0c3RydWN0IGZibmljX2lwX2FkZHIgaXBvX2RzdFtGQk5JQ19SUENfVENBTV9JUF9BRERSX05VTV9FTlRSSUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjc3OlxcdC8qIExvY2sgcHJvdGVjdGluZyB3cml0ZXMgdG8gQHRpbWVfaGlnaCwgQHRpbWVfb2Zmc2V0IG9mIGZibmljX25ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtNzgtXFx0ICogYW5kIHRoZSBIVyB0aW1lIENTUiBtYWNoaW5lcnkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTEtXFx0LyogTG9jYWwgY29weSBvZiBoYXJkd2FyZSBzdGF0aXN0aWNzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjkyOlxcdHN0cnVjdCBmYm5pY19od19zdGF0cyBod19zdGF0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjk4OlxcdHN0cnVjdCBmYm5pY19md19sb2cgZndfbG9nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xMTI9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxMTg6c3RhdGljIGlubGluZSBib29sIGZibmljX3ByZXNlbnQoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTIzOnN0YXRpYyBpbmxpbmUgdm9pZCBmYm5pY193cjMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMTp1MzIgZmJuaWNfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzMzpzdGF0aWMgaW5saW5lIHZvaWQgZmJuaWNfd3JmbChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTEzNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjEzNTpcXHRmYm5pY19yZDMyKGZiZCwgRkJOSUNfTUFTVEVSX1NQQVJFXzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oPTEzOD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTM5OmZibmljX3JtdzMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDM6XFx0diA9IGZibmljX3JkMzIoZmJkLCByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xNDQtXFx0diBcXHUwMDI2PSB+bWFzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTQ1LVxcdHYgfD0gdmFsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNDY6XFx0ZmJuaWNfd3IzMihmYmQsIHJlZywgdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTQ5OiNkZWZpbmUgd3IzMihfZiwgX3IsIF92KVxcdGZibmljX3dyMzIoX2YsIF9yLCBfdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTUwOiNkZWZpbmUgcmQzMihfZiwgX3IpXFx0XFx0ZmJuaWNfcmQzMihfZiwgX3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1MTojZGVmaW5lIHdyZmwoX2YpXFx0XFx0ZmJuaWNfd3JmbChfZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTM6Ym9vbCBmYm5pY19md19wcmVzZW50KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1NDp1MzIgZmJuaWNfZndfcmQzMihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiByZWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNTU6dm9pZCBmYm5pY19md193cjMyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyIHJlZywgdTMyIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTU3OiNkZWZpbmUgZndfcmQzMihfZiwgX3IpXFx0XFx0ZmJuaWNfZndfcmQzMihfZiwgX3IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1ODojZGVmaW5lIGZ3X3dyMzIoX2YsIF9yLCBfdilcXHRmYm5pY19md193cjMyKF9mLCBfciwgX3YpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE1OTojZGVmaW5lIGZ3X3dyZmwoX2YpXFx0XFx0ZmJuaWNfZndfcmQzMihfZiwgRkJOSUNfRldfWkVST19SRUcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTYxOnN0YXRpYyBpbmxpbmUgYm9vbCBmYm5pY19ibWNfcHJlc2VudChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNjY6c3RhdGljIGlubGluZSBib29sIGZibmljX2luaXRfZmFpbHVyZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzE6ZXh0ZXJuIGNoYXIgZmJuaWNfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzM6dm9pZCBmYm5pY19kZXZsaW5rX2ZyZWUoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc0OnN0cnVjdCBmYm5pY19kZXYgKmZibmljX2RldmxpbmtfYWxsb2Moc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzU6aW50IGZibmljX2RldmxpbmtfaGVhbHRoX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxNzY6dm9pZCBmYm5pY19kZXZsaW5rX2hlYWx0aF9kZXN0cm95KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE3Nzp2b2lkIGZibmljX2RldmxpbmtfcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTc4OnZvaWQgZmJuaWNfZGV2bGlua191bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE3OS12b2lkIF9fcHJpbnRmKDIsIDMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MDpmYm5pY19kZXZsaW5rX2Z3X3JlcG9ydChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTgxOnZvaWQgZmJuaWNfZGV2bGlua19vdHBfY2hlY2soc3RydWN0IGZibmljX2RldiAqZmJkLCBjb25zdCBjaGFyICptc2cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjE4MzppbnQgZmJuaWNfZndfcmVxdWVzdF9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg0OnZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODY6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODc6dm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTg5OmludCBmYm5pY19tYWNfcmVxdWVzdF9pcnEoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkwOnZvaWQgZmJuaWNfbWFjX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkyOnZvaWQgZmJuaWNfbmFwaV9uYW1lX2lycXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTkzOmludCBmYm5pY19uYXBpX3JlcXVlc3RfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk0OlxcdFxcdFxcdCAgIHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxOTU6dm9pZCBmYm5pY19uYXBpX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk2OlxcdFxcdFxcdCBzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk3OnZvaWQgZmJuaWNfc3luY2hyb25pemVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgaW50IG5yKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MTk4OmludCBmYm5pY19yZXF1ZXN0X2lycShzdHJ1Y3QgZmJuaWNfZGV2ICpkZXYsIGludCBuciwgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xOTktXFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMDp2b2lkIGZibmljX2ZyZWVfaXJxKHN0cnVjdCBmYm5pY19kZXYgKmRldiwgaW50IG5yLCB2b2lkICpkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMDItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIwMzogKiBlbnVtIGZibmljX21zaXhfc2VsZl90ZXN0X2NvZGVzIC0gcmV0dXJuIGNvZGVzIGZyb20gc2VsZiB0ZXN0IHJvdXRpbmVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIwNC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIxOC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjE5OmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMjAtXFx0RkJOSUNfVEVTVF9NU0lYX1NVQ0NFU1MgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMxOmVudW0gZmJuaWNfbXNpeF9zZWxmX3Rlc3RfY29kZXMgZmJuaWNfbXNpeF90ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjMzOnZvaWQgZmJuaWNfZnJlZV9pcnFzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNDppbnQgZmJuaWNfYWxsb2NfaXJxcyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0yMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjIzNjp2b2lkIGZibmljX2dldF9md192ZXJfY29tbWl0X3N0cihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGNoYXIgKmZ3X3ZlcnNpb24sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzNy1cXHRcXHRcXHRcXHQgY29uc3Qgc2l6ZV90IHN0cl9zeik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTIzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjM5OnZvaWQgZmJuaWNfZGJnX2ZiZF9pbml0KHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0MDp2b2lkIGZibmljX2RiZ19mYmRfZXhpdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDE6dm9pZCBmYm5pY19kYmdfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQyOnZvaWQgZmJuaWNfZGJnX2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ0OnZvaWQgZmJuaWNfcnBjX3Jlc2V0X3ZhbGlkX2VudHJpZXMoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoyNDY6aW50IGZibmljX21kaW9idXNfY3JlYXRlKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjQ4OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI0OTppbnQgZmJuaWNfY3NyX3JlZ3NfbGVuKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjUxOnZvaWQgZmJuaWNfY29uZmlnX3R4cnhfdXNlY3Moc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudiwgdTMyIGFybSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oOjI1Mjp2b2lkIGZibmljX2NvbmZpZ19yeF9mcmFtZXMoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU0OmVudW0gZmJuaWNfYm9hcmRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU1OlxcdGZibmljX2JvYXJkX2FzaWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg6MjU4OnN0cnVjdCBmYm5pY19pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMjU5LVxcdHVuc2lnbmVkIGludCBtYXhfbnVtX3F1ZXVlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjQ6I2luY2x1ZGUgXFxcImZibmljLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjExOnN0cnVjdCBmYm5pY19jc3JfYm91bmRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEyLVxcdHUzMlxcdHN0YXJ0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX2JvdW5kcyBmYm5pY19jc3Jfc2VjdHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3LVxcdEZCTklDX0JPVU5EUyhJTlRSKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzo2MDpzdGF0aWMgdm9pZCBmYm5pY19jc3JfZ2V0X3JlZ3NfcnBjX3JhbShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIHUzMiAqKmRhdGFfcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTE1OnZvaWQgZmJuaWNfY3NyX2dldF9yZWdzKHN0cnVjdCBmYm5pY19kZXYgKmZiZCwgdTMyICpkYXRhLCB1MzIgKnJlZ3NfdmVyc2lvbilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTExNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMTc6XFx0Y29uc3Qgc3RydWN0IGZibmljX2Nzcl9ib3VuZHMgKmJvdW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTE4LVxcdHUzMiAqc3RhcnQgPSBkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMjMtXFx0LyogU2tpcCBSUENfUkFNIHNlY3Rpb24gd2hpY2ggY2Fubm90IGJlIGR1bXBlZCBsaW5lYXJseSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI0OlxcdGZvciAoaSA9IDAsIGJvdW5kID0gZmJuaWNfY3NyX3NlY3RzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTI1OlxcdCAgICAgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKSAtIDE7IGkrKywgKytib3VuZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTI2LVxcdFxcdCooZGF0YSsrKSA9IGJvdW5kLVxcdTAwM2VzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTMyLVxcdC8qIER1bXAgdGhlIFJQQ19SQU0gYXMgc3BlY2lhbCBjYXNlIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTMzOlxcdGZibmljX2Nzcl9nZXRfcmVnc19ycGNfcmFtKGZiZCwgXFx1MDAyNmRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTM1OlxcdFdBUk5fT04oZGF0YSAtIHN0YXJ0ICE9IGZibmljX2Nzcl9yZWdzX2xlbihmYmQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTEzNi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxMzg6aW50IGZibmljX2Nzcl9yZWdzX2xlbihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNDQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNDU6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZmJuaWNfY3NyX3NlY3RzKTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTQ2OlxcdFxcdGxlbiArPSBmYm5pY19jc3Jfc2VjdHNbaV0uZW5kIC0gZmJuaWNfY3NyX3NlY3RzW2ldLnN0YXJ0ICsgMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMTU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MTU5OnN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNjAtXFx0aW50XFx0cmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0xNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoxNzU6c3RhdGljIGNvbnN0IHN0cnVjdCBmYm5pY19jc3JfcmVnX3Rlc3RfZGF0YSBwYXR0ZXJuX3Rlc3RbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTE3Ni1cXHRGQk5JQ19RVUVVRV9SRUdfVEVTVChUV1EwX0NUTCwgRkJOSUNfUVVFVUVfVFdRX0NUTF9SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjEyOnN0YXRpYyBlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxMzpmYm5pY19jc3JfcmVnX3BhdHRlcm5fdGVzdChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQsIGludCBpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNDpcXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZmJuaWNfY3NyX3JlZ190ZXN0X2RhdGEgKnRlc3RfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTIxNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yMTYtXFx0c3RhdGljIGNvbnN0IHUzMiBwYXR0ZXJuW10gPSB7IH4wLCAweDVBNUE1QTVBLCAweEE1QTVBNUE1LCAwfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jOjIxNzpcXHRlbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMgcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmMtMjE4LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNDg6ICogZmJuaWNfY3NyX3JlZ3NfdGVzdCgpIC0gVmVyaWZ5IGJlaGF2aW9yIG9mIE5JQyByZWdpc3RlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI0OS0gKiBAZmJkOiBkZXZpY2UgdG8gdGVzdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjU5OmVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyBmYm5pY19jc3JfcmVnc190ZXN0KHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYzoyNjE6XFx0Y29uc3Qgc3RydWN0IGZibmljX2Nzcl9yZWdfdGVzdF9kYXRhICp0ZXN0X2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuYy0yNjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI2Ny1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdGVzdF9kYXRhLVxcdTAwM2VhcnJheV9sZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY4OlxcdFxcdFxcdGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyByZWcgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmM6MjY5OlxcdFxcdFxcdFxcdGZibmljX2Nzcl9yZWdfcGF0dGVybl90ZXN0KGZiZCwgaSwgdGVzdF9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5jLTI3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjk6c3RydWN0IGZibmljX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaD0xMjM1PWVudW17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyMzktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaDoxMjQwOiAqIGVudW0gZmJuaWNfcmVnX3NlbGZfdGVzdF9jb2RlcyAtIHJldHVybiBjb2RlcyBmcm9tIHNlbGYgdGVzdCByb3V0aW5lc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI0MS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19jc3IuaC0xMjQ5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmg6MTI1MDplbnVtIGZibmljX3JlZ19zZWxmX3Rlc3RfY29kZXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1MS1cXHRGQk5JQ19SRUdfVEVTVF9TVUNDRVNTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfY3NyLmgtMTI1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oOjEyNTQ6ZW51bSBmYm5pY19yZWdfc2VsZl90ZXN0X2NvZGVzIGZibmljX2Nzcl9yZWdzX3Rlc3Qoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2Nzci5oLTEyNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjk6I2luY2x1ZGUgXFxcImZibmljLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTA6I2luY2x1ZGUgXFxcImZibmljX3R4cnguaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqZmJuaWNfZGJnX3Jvb3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxNjpzdGF0aWMgdm9pZCBmYm5pY19kYmdfZGVzY19icmVhayhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI0OnN0YXRpYyB2b2lkIGZibmljX2RiZ19yaW5nX3Nob3coc3RydWN0IHNlcV9maWxlICpzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjctXFx0dW5zaWduZWQgbG9uZyBkb29yYmVsbF9vZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMTpcXHRjc3JfYmFzZSA9IGZibmljX3JpbmdfY3NyX2Jhc2UocmluZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzItXFx0ZG9vcmJlbGxfb2Zmc2V0ID0gcmluZy1cXHUwMDNlZG9vcmJlbGwgLSBjc3JfYmFzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjc2OnN0YXRpYyB2b2lkIGZibmljX2RiZ190d2RfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTc3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo3ODpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNzktXFx0dTY0IHR3ZCA9IGxlNjRfdG9fY3B1KHJpbmctXFx1MDAzZWRlc2NbaV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEwNzpzdGF0aWMgaW50IGZibmljX2RiZ190d3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMDk6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExMC1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMTMtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE0OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE1LVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJTVzICVzICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTE3LVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTE4OlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTExOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEyNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2M9IHJpbmctXFx1MDAzZXNpemVfbWFzazsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEyNzpcXHRcXHRmYm5pY19kYmdfdHdkX2Rlc2Nfc2VxX3Nob3cocywgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjEzMjpzdGF0aWMgaW50IGZibmljX2RiZ190Y3FfZGVzY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxMzQ6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTEzNS1cXHRjaGFyIGhkcls4MF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xMzgtXFx0LyogR2VuZXJhdGUgaGVhZGVyIG9uIGZpcnN0IGVudHJ5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTM5OlxcdGZibmljX2RiZ19yaW5nX3Nob3cocyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTQwLVxcdHNucHJpbnRmKGhkciwgc2l6ZW9mKGhkciksIFxcXCIlNHMgJXMgJXMgJXMgJTVzICUtMTZzICUtNnMgJS02c1xcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE0Mi1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE0MzpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTgxOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjE4MzpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTg0LVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE4Ny1cXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoxODg6XFx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0xODktXFx0c25wcmludGYoaGRyLCBzaXplb2YoaGRyKSwgXFxcIiU0cyAlLTRzICVzXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMTkxLVxcdHNlcV9wdXRzKHMsIGhkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MTkyOlxcdGZibmljX2RiZ19kZXNjX2JyZWFrKHMsIHN0cm5sZW4oaGRyLCBzaXplb2YoaGRyKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTE5My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTE6c3RhdGljIHZvaWQgZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyMTM6XFx0c3RydWN0IGZibmljX3JpbmcgKnJpbmcgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTIxNC1cXHR1NjQgcmNkID0gbGU2NF90b19jcHUocmluZy1cXHUwMDNlZGVzY1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MjU0OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3JjcV9kZXNjX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI1NjpcXHRzdHJ1Y3QgZmJuaWNfcmluZyAqcmluZyA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjU3LVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2MC1cXHQvKiBHZW5lcmF0ZSBoZWFkZXIgb24gZmlyc3QgZW50cnkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNjE6XFx0ZmJuaWNfZGJnX3Jpbmdfc2hvdyhzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNjItXFx0c25wcmludGYoaGRyLCBzaXplb2YoaGRyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI2OC1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI2OTpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjPSByaW5nLVxcdTAwM2VzaXplX21hc2s7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyNzg6XFx0XFx0ZmJuaWNfZGJnX3JjZF9kZXNjX3NlcV9zaG93KHMsIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyODM6c3RhdGljIGludCBmYm5pY19kYmdfZGVzY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI4NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjg1OlxcdHN0cnVjdCBmYm5pY19yaW5nICpyaW5nID0gaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODYtXFx0aW50ICgqc2hvdykoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjg4OlxcdHN3aXRjaCAocmluZy1cXHUwMDNlZG9vcmJlbGwgLSBmYm5pY19yaW5nX2Nzcl9iYXNlKHJpbmcpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjg5LVxcdGNhc2UgRkJOSUNfUVVFVUVfVFdRMF9UQUlMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5MC1cXHRjYXNlIEZCTklDX1FVRVVFX1RXUTFfVEFJTDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzoyOTE6XFx0XFx0c2hvdyA9IGZibmljX2RiZ190d3FfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0yOTItXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjkzLVxcdGNhc2UgRkJOSUNfUVVFVUVfVENRX0hFQUQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6Mjk0OlxcdFxcdHNob3cgPSBmYm5pY19kYmdfdGNxX2Rlc2Nfc2VxX3Nob3c7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMjk3LVxcdGNhc2UgRkJOSUNfUVVFVUVfQkRRX1BQUV9UQUlMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjI5ODpcXHRcXHRzaG93ID0gZmJuaWNfZGJnX2JkcV9kZXNjX3NlcV9zaG93O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTI5OS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDAtXFx0Y2FzZSBGQk5JQ19RVUVVRV9SQ1FfSEVBRDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMDE6XFx0XFx0c2hvdyA9IGZibmljX2RiZ19yY3FfZGVzY19zZXFfc2hvdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZibmljX2RiZ19kZXNjX2ZvcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzExLVxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzEyOlxcdC5vcGVuXFx0XFx0PSBmYm5pY19kYmdfZGVzY19vcGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMxMy1cXHQucmVhZFxcdFxcdD0gc2VxX3JlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzE4OnZvaWQgZmJuaWNfZGJnX252X2luaXQoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjMyMDpcXHRzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBudi1cXHUwMDNlZmJkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTMyMS1cXHRjaGFyIG5hbWVbMTZdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzMwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudi1cXHUwMDNldHh0X2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozMzE6XFx0XFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXFx1MDAyNm52LVxcdTAwM2VxdFtpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzItXFx0XFx0dW5zaWduZWQgaW50IGh3X2lkeDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzM0OlxcdFxcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXFx1MDAyNnF0LVxcdTAwM2VjbXBsKSAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM1LVxcdFxcdFxcdCAgXFx1MDAyNmZiZC1cXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzM5LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VzdWIwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM0MDpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM0My1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNDQ6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNDctXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZWNtcGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzQ4OlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzQ5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM1Mi1cXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgbnYtXFx1MDAzZXJ4dF9jb3VudDsgaisrLCBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNTM6XFx0XFx0c3RydWN0IGZibmljX3FfdHJpYWQgKnF0ID0gXFx1MDAyNm52LVxcdTAwM2VxdFtpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTQtXFx0XFx0dW5zaWduZWQgaW50IGh3X2lkeDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzU2OlxcdFxcdGh3X2lkeCA9IGZibmljX3JpbmdfY3NyX2Jhc2UoXFx1MDAyNnF0LVxcdTAwM2VjbXBsKSAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzU3LVxcdFxcdFxcdCAgXFx1MDAyNmZiZC1cXHUwMDNldWNfYWRkcjBbRkJOSUNfUVVFVUUoMCldO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzYxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQwMCwgbnYtXFx1MDAzZWRiZ19udiwgXFx1MDAyNnF0LVxcdTAwM2VzdWIwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM2MjpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmZibmljX2RiZ19kZXNjX2ZvcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM2NS1cXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0MDAsIG52LVxcdTAwM2VkYmdfbnYsIFxcdTAwMjZxdC1cXHUwMDNlc3ViMSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNjY6XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZmYm5pY19kYmdfZGVzY19mb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNjktXFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDAwLCBudi1cXHUwMDNlZGJnX252LCBcXHUwMDI2cXQtXFx1MDAzZWNtcGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzcwOlxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZmJuaWNfZGJnX2Rlc2NfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzcxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzozNzQ6dm9pZCBmYm5pY19kYmdfbnZfZXhpdChzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX21hY19hZGRyX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzgyOlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzgzLVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTM4OS1cXHRzZXFfcHV0cyhzLCBoZHIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjM5MDpcXHRmYm5pY19kYmdfZGVzY19icmVhayhzLCBzdHJubGVuKGhkciwgc2l6ZW9mKGhkcikpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtMzkyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGQk5JQ19SUENfVENBTV9NQUNEQV9OVU1fRU5UUklFUzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6MzkzOlxcdFxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcXHUwMDI2ZmJkLVxcdTAwM2VtYWNfYWRkcltpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDMtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQwNDpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX21hY19hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA2OnN0YXRpYyBpbnQgZmJuaWNfZGJnX3RjZV90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQwNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDA4OlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDA5LVxcdGludCBpLCB0Y2FtX2lkeCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MTUtXFx0c2VxX3B1dHMocywgaGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYzo0MTY6XFx0ZmJuaWNfZGJnX2Rlc2NfYnJlYWsocywgc3RybmxlbihoZHIsIHNpemVvZihoZHIpKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQxOC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShmYmQtXFx1MDAzZW1hY19hZGRyKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDE5OlxcdFxcdHN0cnVjdCBmYm5pY19tYWNfYWRkciAqbWFjX2FkZHIgPSBcXHUwMDI2ZmJkLVxcdTAwM2VtYWNfYWRkcltpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MjAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jOjQzODpERUZJTkVfU0hPV19BVFRSSUJVVEUoZmJuaWNfZGJnX3RjZV90Y2FtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2RlYnVnZnMuYy00MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQwOnN0YXRpYyBpbnQgZmJuaWNfZGJnX2FjdF90Y2FtX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfZGVidWdmcy5jLTQ0MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmM6NDQyOlxcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19kZWJ1Z2ZzLmMtNDQzLVxcdGNoYXIgaGRyWzgwXTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTowOToyMi45NTIwNzQ0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQwMTMwNjY0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGQk5JQyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhlIEZCTklDIGRyaXZlci4gTXkgdXN1YWwgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZSwgc28gSSdtIGhlYWRpbmcgc3RyYWlnaHQgZm9yIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVmaW5pdGl2ZSBkZXNjcmlwdGlvbiBvZiB0aGUgRkJOSUMgZHJpdmVyLCBhbG9uZyB3aXRoIGFsbCBpdHMgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHN5bWJvbHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc3RyYWludHMuIEtub3dpbmcgYWxsIHRoYXQgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byBlbmFibGUsIGRpc2FibGUsIG9yIGN1c3RvbWl6ZSB0aGlzIHBhcnRpY3VsYXIgcGllY2Ugb2YgbmV0d29ya2luZyBoYXJkd2FyZSB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtIGJ1aWxkLiBJIG5lZWQgdG8gZW5zdXJlIGl0IGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBpZiBpdCBkZXBlbmRzIG9uIGFueSBvdGhlciBuZXR3b3JrIGRyaXZlcnMsIGFuZCB3aGF0IGtpbmQgb2YgcGVyZm9ybWFuY2Ugb3IgcmVzb3VyY2UgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGBLY29uZmlnYCBoYXMgdG8gdGVsbCB1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDowMy4wODI3NDEyODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMDowMy4wODI4NjI1NTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMTY1OTE0NDcxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgZmJuaWNgIFByb2JlIFBDSSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNwZWNpZmljIFBDSSBJRHMgdGhhdCB0aGUgYGZibmljYCBkcml2ZXIgcHJvYmVzIGZvci4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjdXN0b20gb3IgbGVzcyBjb21tb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbnMuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZGVidWdnaW5nLCBjb25maWd1cmF0aW9uLCBvciBwZXJmb3JtYW5jZSB0dW5pbmcgSSdsbCBuZWVkIHRvIGRvIHJlZ2FyZGluZyB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0aGF0IEkgd2lsbCBsaWtlbHkgbmVlZCB0aGlzIHRvIGZpZ3VyZSBvdXQgZGV2aWNlIHN1cHBvcnQgaW4gdGhlIGN1cnJlbnQga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA0MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MTE6NTkuNjc0MzEyMjg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzOTAxNTgyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZibmljX2luZm8gKmZibmljX2luZm9fdGJsW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzA6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGZibmljX3BjaV90YmxbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTMxLVxcdHsgUENJX0RFVklDRV9EQVRBKE1FVEEsIEZCTklDX0FTSUMsIGZibmljX2JvYXJkX2FzaWMpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jPTIxND1zdGF0aWMgdm9pZCBmYm5pY19zZXJ2aWNlX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNTgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MjU5OnN0YXRpYyBpbnQgZmJuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0yNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNToxMjowMC4yMTMzMzQ5NjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTI3MDM2MDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgZmJuaWNgIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIGZvciB0aGUgYGZibmljYCBkcml2ZXIsIHdoaWNoIEkga25vdyBpcyBNZXRhJ3MgY3VzdG9tLCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgQVNJQy4gRmlyc3QgdGhpbmcsIGxldCdzIHJldmlldyB0aGUgcnVsZXMuIFRoZXkgc3BlY2lmaWNhbGx5IHNheSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIGNvZGUgdGhhdCAqcmVxdWlyZXMqIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEJpbmdvLiBgZmJuaWNgIGlzICpleGFjdGx5KiB0aGF0LiBJdCdzIG5vdCBhIGdlbmVyaWMgTklDIGxpa2UgYW4gZTEwMDAgb3IgdmlydGlvLW5ldDsgaXQncyBhIHByb3ByaWV0YXJ5IEFTSUMgZGVzaWduZWQgZm9yIE1ldGEncyBpbnRlcm5hbCBkYXRhIGNlbnRlcnMuIEl0J3Mgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkIFFFTVUgb3Igb3RoZXIgdmlydHVhbGl6YXRpb24gc2V0dXBzLlxuXG5TbywgbG9naWNhbGx5LCBhbnkgY29kZSBwYXRocyByZWxhdGVkIHRvIGBmYm5pY2AgYXJlIHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMuIEkgY2FuJ3QgZnV6eiBjb2RlIHRoYXQgbmVlZHMgYSBwaWVjZSBvZiBoYXJkd2FyZSB0aGF0IGlzbid0IGFjY2Vzc2libGUuIE15IGNvbmNsdXNpb24/IGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLlxuXG5MZXQncyBtYWtlIHN1cmUgd2UndmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gTXkgYXNzZXNzbWVudCBzaG91bGQgYmU6XG5cbiogICBgV29ydGhGdXp6aW5nPWZhbHNlYFxuKiAgIGBGb2N1c1N5bWJvbHM6IFtdYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXWBcblxuQW5kIG5vdywgZm9yIHRoZSBjb25jaXNlIHJlYXNvbmluZy4gV2UncmUgZGVhbGluZyB3aXRoIGEgZHJpdmVyLCBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2AsIGZvciBNZXRhJ3MgcHJvcHJpZXRhcnkgUENJZSBOSUMgQVNJQy4gVGhpcyBwYXJ0aWN1bGFyIEFTSUMgKm5lZWRzKiBzcGVjaWFsaXplZCwgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBvdGhlciB2aXJ0dWFsaXplZCBzZXR1cHMgKGxpa2UgR0NFIG9yIHN5emthbGxlciksIHRoZSBjb2RlIHBhdGhzIGluIHRoaXMgZHJpdmVyIGFyZSBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBhbnkgZnV6emluZyBjb250ZXh0IHRoYXQgdXNlcyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0J3MgdGhlIGNvcmUgb2YgaXQuIEkgc2hvdWxkIHZlcmlmeSB0aGlzIGJ5IGNhbGxpbmcgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NTM1LCJPdXRwdXRUb2tlbnMiOjk4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEyOjU5LjQ4MzcwMDM2OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvKSwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIE1ldGEncyBwcm9wcmlldGFyeSBQQ0llIEFTSUMgbmV0d29yayBpbnRlcmZhY2UgY2FyZC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjEyOjU5LjQ4Mzc0NDExOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt7ssb[1] Phase: Running StartedAt: 2026-08-30 15:13:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt7ssb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 15:13:11 +0000 UTC FinishedAt: 2026-08-30 15:13:17 +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,}