Name: series-workflowhbf7v Phase: Running StartedAt: 2026-08-01 05:27:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhbf7v[0] Phase: Running StartedAt: 2026-08-01 05:27:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhbf7v[0].run-triage Phase: Running StartedAt: 2026-08-01 05:27:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhbf7v[0].run-triage(0) Phase: Running StartedAt: 2026-08-01 05:27:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmNtZm1hYyBhbmQgYnJjbXNtYWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBCcm9hZGNvbSBXaS1GaSBoYXJkd2FyZSAoUENJZSwgU0RJTywgb3IgQkNNQSkgdG8gaW5pdGlhbGl6ZSBhbmQgZnVuY3Rpb24uIFdoaWxlIGJyY21mbWFjIHN1cHBvcnRzIFVTQiwgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGRhdGEgcGF0aHMgKFJYL1RYKSBhbmQgY2ZnODAyMTEgY2FsbGJhY2tzIHJlcXVpcmVzIHBhc3NpbmcgYSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIGhhbmRzaGFrZSwgd2hpY2ggaXMgaW1wb3NzaWJsZSB0byBhY2hpZXZlIHZpYSByYW5kb20gVVNCIGdhZGdldCBmdXp6aW5nIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmEwZGMxZDhjMTgxNmUzOTllMzJlNWE4OGM4NzdiNTQ3ODI1ZWZmM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMDU6NTA6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggMGI1NWQ0NDU4OTVmMi4uN2Q3ZTVlY2VjZDIyOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTM5ODksMTIgJiM0MzszOTg5LDEwIEBAIHN0YXRpYyBpbnQgYnJjbWZfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdG9wKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGJyY21mX2RlbGF5KHUzMiBtcylcbiB7XG4tXHRpZiAobXMgXHUwMDNjIDEwMDAgLyBIWikge1xuLVx0XHRjb25kX3Jlc2NoZWQoKTtcbi1cdFx0bWRlbGF5KG1zKTtcbi1cdH0gZWxzZSB7XG4mIzQzO1x0aWYgKG1zIFx1MDAzYz0gMjApXG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UobXMgKiAxMDAwLCBtcyAqIDEwMDAgJiM0MzsgMTAwMCk7XG4mIzQzO1x0ZWxzZVxuIFx0XHRtc2xlZXAobXMpO1xuLVx0fVxuIH1cbiBcbiBzdGF0aWMgczMyIGJyY21mX2NvbmZpZ193b3dsX3BhdHRlcm4oc3RydWN0IGJyY21mX2lmICppZnAsIHU4IGNtZFs0XSxcbkBAIC00MzY0LDYgJiM0Mzs0MzYyLDEwNCBAQCBicmNtZl9wbWtzYV92M19vcChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IGNmZzgwMjExX3Bta3NhICpwbWtzYSxcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MzsvKipcbiYjNDM7ICogYnJjbWZfcG1rc2FfdjJfb3AgLSB1cGRhdGUgZmlybXdhcmUgUE1LU0EgY2FjaGUgdXNpbmcgdGhlIFYyIGxpc3QgaW50ZXJmYWNlLlxuJiM0MzsgKlxuJiM0MzsgKiBWMiBmaXJtd2FyZSAocmV2aXNpb24gMTIpIHVzZXMgYSB2ZXJzaW9uZWQgZmxhdCBsaXN0IHN0cnVjdHVyZVxuJiM0MzsgKiAoYnJjbWZfcG1rX2xpc3RfdjJfbGUpIHJhdGhlciB0aGFuIHRoZSBwZXItZW50cnkgb3BlcmF0aW9uIG1vZGVsIG9mIFYzLlxuJiM0MzsgKiBFYWNoIGVudHJ5IGNhcnJpZXMgRklMUy1zcGVjaWZpYyBmaWVsZHMgKHJhdyBQTUsgbWF0ZXJpYWwsIFNTSUQsIGFuZFxuJiM0MzsgKiBmaWxzX2NhY2hlX2lkKSBpbiBhZGRpdGlvbiB0byB0aGUgYmFzaWMgQlNTSUQgJiM0MzsgUE1LSUQgcGFpciwgZW5hYmxpbmdcbiYjNDM7ICogRklMUyBmYXN0LXJvYW1pbmcgb24gZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IFYzLlxuJiM0MzsgKlxuJiM0MzsgKiBAY2ZnOiAgIGRyaXZlciBjb25maWcgc3RydWN0dXJlIGhvbGRpbmcgdGhlIHNoYWRvdyBWMiBQTUtTQSBsaXN0XG4mIzQzOyAqIEBpZnA6ICAgaW50ZXJmYWNlIHBvaW50ZXJcbiYjNDM7ICogQHBta3NhOiB0aGUgUE1LU0EgdG8gYWRkL3JlbW92ZSwgb3IgTlVMTCBmb3IgYSBmbHVzaFxuJiM0MzsgKiBAYWxpdmU6IHRydWUgPSBhZGQgKHNldCB0aW1lX2xlZnQgdG8gbm8tZXhwaXJ5KSwgZmFsc2UgPSByZW1vdmUvZmx1c2hcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBzMzJcbiYjNDM7YnJjbWZfcG1rc2FfdjJfb3Aoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywgc3RydWN0IGJyY21mX2lmICppZnAsXG4mIzQzO1x0XHQgIHN0cnVjdCBjZmc4MDIxMV9wbWtzYSAqcG1rc2EsIGJvb2wgYWxpdmUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gY2ZnLVx1MDAzZXB1YjtcbiYjNDM7XHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfdjJfbGUgKmxpc3QgPSBcdTAwMjZjZmctXHUwMDNlcG1rX2xpc3RfdjI7XG4mIzQzO1x0c3RydWN0IGJyY21mX3Bta3NhX3YyICpwbWsgPSBsaXN0LVx1MDAzZXBtaztcbiYjNDM7XHR1MzIgbnBtayA9IGxlMTZfdG9fY3B1KGxpc3QtXHUwMDNlbGVuZ3RoKTtcbiYjNDM7XHR1MzIgaTtcbiYjNDM7XG4mIzQzO1x0LyogbnBtayBoZXJlIHN0b3JlcyB0aGUgY291bnQgb2YgdmFsaWQgZW50cmllcywgcmVwdXJwb3NpbmcgdGhlXG4mIzQzO1x0ICogbGVuZ3RoIGZpZWxkIG9mIHRoZSBzaGFkb3cgbGlzdCBhcyBhIGNvdW50ZXIuICBXZSBjb252ZXJ0IHRvXG4mIzQzO1x0ICogdGhlIHdpcmUgZm9ybWF0IChieXRlIGxlbmd0aCkgd2hlbiBzZW5kaW5nIHRvIGZpcm13YXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghcG1rc2EpIHtcbiYjNDM7XHRcdC8qIEZsdXNoOiB6ZXJvIHRoZSBzaGFkb3cgbGlzdCBhbmQgcHVzaCBhbiBlbXB0eSBWMiBsaXN0LiAqL1xuJiM0MztcdFx0bWVtc2V0KGxpc3QsIDAsIHNpemVvZigqbGlzdCkpO1xuJiM0MztcdFx0Z290byBzZW5kO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGFsaXZlKSB7XG4mIzQzO1x0XHQvKiBTZXQ6IHNlYXJjaCBmb3IgZXhpc3RpbmcgQlNTSUQgbWF0Y2ggZmlyc3QuICovXG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucG1rOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKCFtZW1jbXAocG1rc2EtXHUwMDNlYnNzaWQsIHBta1tpXS5ic3NpZCwgRVRIX0FMRU4pKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdGlmIChpIFx1MDAzZT0gQlJDTUZfTUFYUE1LSUQpIHtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7VjIgUE1LU0EgY2FjaGUgZnVsbCAoJWQgZW50cmllcylcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IG5wbWspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRtZW1zZXQoXHUwMDI2cG1rW2ldLCAwLCBzaXplb2YocG1rW2ldKSk7XG4mIzQzO1x0XHRwbWtbaV0ubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHN0cnVjdCBicmNtZl9wbWtzYV92MikpO1xuJiM0MztcdFx0aWYgKHBta3NhLVx1MDAzZWJzc2lkKVxuJiM0MztcdFx0XHRtZW1jcHkocG1rW2ldLmJzc2lkLCBwbWtzYS1cdTAwM2Vic3NpZCwgRVRIX0FMRU4pO1xuJiM0MztcdFx0aWYgKHBta3NhLVx1MDAzZXBta2lkKVxuJiM0MztcdFx0XHRtZW1jcHkocG1rW2ldLnBta2lkLCBwbWtzYS1cdTAwM2VwbWtpZCwgV0xBTl9QTUtJRF9MRU4pO1xuJiM0MztcdFx0aWYgKHBta3NhLVx1MDAzZXBtayBcdTAwMjZcdTAwMjYgcG1rc2EtXHUwMDNlcG1rX2xlbiBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICBwbWtzYS1cdTAwM2VwbWtfbGVuIFx1MDAzYz0gV0xBTl9QTUtfTEVOX1NVSVRFX0JfMTkyKSB7XG4mIzQzO1x0XHRcdG1lbWNweShwbWtbaV0ucG1rLCBwbWtzYS1cdTAwM2VwbWssIHBta3NhLVx1MDAzZXBta19sZW4pO1xuJiM0MztcdFx0XHRwbWtbaV0ucG1rX2xlbiA9IGNwdV90b19sZTE2KHBta3NhLVx1MDAzZXBta19sZW4pO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0aWYgKHBta3NhLVx1MDAzZXNzaWQgXHUwMDI2XHUwMDI2IHBta3NhLVx1MDAzZXNzaWRfbGVuKSB7XG4mIzQzO1x0XHRcdG1lbWNweShwbWtbaV0uc3NpZC5TU0lELCBwbWtzYS1cdTAwM2Vzc2lkLCBwbWtzYS1cdTAwM2Vzc2lkX2xlbik7XG4mIzQzO1x0XHRcdHBta1tpXS5zc2lkLlNTSURfbGVuID0gcG1rc2EtXHUwMDNlc3NpZF9sZW47XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRpZiAocG1rc2EtXHUwMDNlZmlsc19jYWNoZV9pZClcbiYjNDM7XHRcdFx0cG1rW2ldLmZpbHNfY2FjaGVfaWQgPSAqcG1rc2EtXHUwMDNlZmlsc19jYWNoZV9pZDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaSA9PSBucG1rKVxuJiM0MztcdFx0XHRucG1rJiM0MzsmIzQzOztcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0LyogRGVsZXRlOiBmaW5kIGJ5IEJTU0lEIGFuZCBjb21wYWN0IHRoZSBsaXN0LiAqL1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBtazsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdGlmICghbWVtY21wKHBta3NhLVx1MDAzZWJzc2lkLCBwbWtbaV0uYnNzaWQsIEVUSF9BTEVOKSlcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoaSBcdTAwM2U9IG5wbWspIHtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7VjIgUE1LU0EgZW50cnkgbm90IGZvdW5kXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Zm9yICg7IGkgXHUwMDNjIG5wbWsgLSAxOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0bWVtY3B5KFx1MDAyNnBta1tpXSwgXHUwMDI2cG1rW2kgJiM0MzsgMV0sIHNpemVvZihwbWtbaV0pKTtcbiYjNDM7XHRcdG1lbXNldChcdTAwMjZwbWtbbnBtayAtIDFdLCAwLCBzaXplb2YocG1rW25wbWsgLSAxXSkpO1xuJiM0MztcdFx0bnBtay0tO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogVXBkYXRlIHNoYWRvdyBlbnRyeSBjb3VudCAoc3RvcmVkIGluIGxlbmd0aCBmaWVsZCkuICovXG4mIzQzO1x0bGlzdC1cdTAwM2VsZW5ndGggPSBjcHVfdG9fbGUxNihucG1rKTtcbiYjNDM7XG4mIzQzO3NlbmQ6XG4mIzQzO1x0LyogQnVpbGQgdGhlIHdpcmUtZm9ybWF0IGhlYWRlciBhbmQgc2VuZCB0aGUgZnVsbCBsaXN0IHRvIGZpcm13YXJlLlxuJiM0MztcdCAqIHZlcnNpb24gYW5kIGxlbmd0aCBvbiB0aGUgd2lyZSByZWZsZWN0IHRoZSBhY3R1YWwgYnl0ZSBmb290cHJpbnQuXG4mIzQzO1x0ICovXG4mIzQzO1x0bGlzdC1cdTAwM2V2ZXJzaW9uID0gY3B1X3RvX2xlMTYoQlJDTUZfUE1LU0FfVkVSXzIpO1xuJiM0MztcdGxpc3QtXHUwMDNlbGVuZ3RoICA9IGNwdV90b19sZTE2KG9mZnNldG9mKHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSwgcG1rKSAmIzQzO1xuJiM0MztcdFx0XHRcdCAgIG5wbWsgKiBzaXplb2Yoc3RydWN0IGJyY21mX3Bta3NhX3YyKSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDtwbWtpZF9pbmZvXCYjMzQ7LCBsaXN0LCBzaXplb2YoKmxpc3QpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7XG4gc3RhdGljIF9fdXNlZCBzMzJcbiBicmNtZl91cGRhdGVfcG1rbGlzdChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcbiB7XG5AQCAtNDQwMiw4ICYjNDM7NDQ5OCw4IEBAIGJyY21mX2NmZzgwMjExX3NldF9wbWtzYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YzKSlcbiBcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YzX29wKGlmcCwgcG1rc2EsIHRydWUpO1xuLVxuLVx0LyogVE9ETzogaW1wbGVtZW50IFBNS0lEX1YyICovXG4mIzQzO1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjIpKVxuJiM0MztcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBwbWtzYSwgdHJ1ZSk7XG4gXG4gXHRucG1rID0gbGUzMl90b19jcHUoY2ZnLVx1MDAzZXBta19saXN0Lm5wbWspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBtazsgaSYjNDM7JiM0MzspXG5AQCAtNDQ0Niw4ICYjNDM7NDU0Miw4IEBAIGJyY21mX2NmZzgwMjExX2RlbF9wbWtzYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YzKSlcbiBcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YzX29wKGlmcCwgcG1rc2EsIGZhbHNlKTtcbi1cbi1cdC8qIFRPRE86IGltcGxlbWVudCBQTUtJRF9WMiAqL1xuJiM0MztcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcbiYjNDM7XHRcdHJldHVybiBicmNtZl9wbWtzYV92Ml9vcChjZmcsIGlmcCwgcG1rc2EsIGZhbHNlKTtcbiBcbiBcdG5wbWsgPSBsZTMyX3RvX2NwdShjZmctXHUwMDNlcG1rX2xpc3QubnBtayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucG1rOyBpJiM0MzsmIzQzOylcbkBAIC00NDg3LDggJiM0Mzs0NTgzLDggQEAgYnJjbWZfY2ZnODAyMTFfZmx1c2hfcG1rc2Eoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXG4gXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTUtJRF9WMykpXG4gXHRcdHJldHVybiBicmNtZl9wbWtzYV92M19vcChpZnAsIE5VTEwsIGZhbHNlKTtcbi1cbi1cdC8qIFRPRE86IGltcGxlbWVudCBQTUtJRF9WMiAqL1xuJiM0MztcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcbiYjNDM7XHRcdHJldHVybiBicmNtZl9wbWtzYV92Ml9vcChjZmcsIGlmcCwgTlVMTCwgZmFsc2UpO1xuIFxuIFx0bWVtc2V0KFx1MDAyNmNmZy1cdTAwM2VwbWtfbGlzdCwgMCwgc2l6ZW9mKGNmZy1cdTAwM2VwbWtfbGlzdCkpO1xuIFx0ZXJyID0gYnJjbWZfdXBkYXRlX3Bta2xpc3QoY2ZnLCBpZnApO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbmluZGV4IDZjZWIzMDE0MjkwNTQuLjU3MTY3ZmRlNWJhMTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbkBAIC0zNDQsNyAmIzQzOzM0NCw4IEBAIHN0cnVjdCBicmNtZl9jZmc4MDIxMV93b3dsIHtcbiAgKiBAYnNzX2xpc3Q6IGJzc19saXN0IGhvbGRpbmcgc2Nhbm5lZCBhcCBpbmZvcm1hdGlvbi5cbiAgKiBAYnNzX2luZm86IGJzcyBpbmZvcm1hdGlvbiBmb3IgY2ZnODAyMTEgbGF5ZXIuXG4gICogQGNvbm5faW5mbzogYXNzb2NpYXRpb24gaW5mby5cbi0gKiBAcG1rX2xpc3Q6IHdwYTIgcG1rIGxpc3QuXG4mIzQzOyAqIEBwbWtfbGlzdDogd3BhMiBwbWsgbGlzdCAoVjEgZmlybXdhcmUpLlxuJiM0MzsgKiBAcG1rX2xpc3RfdjI6IHdwYTIgcG1rIGxpc3QgZm9yIFYyIGZpcm13YXJlIChGSUxTLWNhcGFibGUsIGZpcm13YXJlIHJldiAxMikuXG4gICogQHNjYW5fc3RhdHVzOiBzY2FuIGFjdGl2aXR5IG9uIHRoZSBkb25nbGUuXG4gICogQHB1YjogY29tbW9uIGRyaXZlciBpbmZvcm1hdGlvbi5cbiAgKiBAY2hhbm5lbDogY3VycmVudCBjaGFubmVsLlxuQEAgLTM3Niw2ICYjNDM7Mzc3LDcgQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8ge1xuIFx0c3RydWN0IHdsX2NmZzgwMjExX2Jzc19pbmZvICpic3NfaW5mbztcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xuIFx0c3RydWN0IGJyY21mX3Bta19saXN0X2xlIHBta19saXN0O1xuJiM0MztcdHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSBwbWtfbGlzdF92MjtcbiBcdHVuc2lnbmVkIGxvbmcgc2Nhbl9zdGF0dXM7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpwdWI7XG4gXHR1MzIgY2hhbm5lbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuY1xuaW5kZXggZWMxNzA2NDc4MDBkYS4uNjczZjAwMDAzODljYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcbkBAIC00MzEsNDUgJiM0Mzs0MzEsNTEgQEAgdm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdG5ldGlmX3J4KHNrYik7XG4gfVxuIFxuJiM0MztzdHJ1Y3QgYnJjbWZfcmFkaW90YXBfaW5mbyB7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgaGRyO1xuJiM0MztcdHM4IGRibV9hbnRzaWduYWw7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuIHZvaWQgYnJjbWZfbmV0aWZfbW9uX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX01PTklUT1JfRk1UX1JBRElPVEFQKSkge1xuLVx0XHQvKiBEbyBub3RoaW5nICovXG4mIzQzO1x0XHQvKiBGaXJtd2FyZSBhbHJlYWR5IHByb3ZpZGVkIGEgZnVsbCByYWRpb3RhcCBoZWFkZXI7IGRvIG5vdGhpbmcgKi9cbiBcdH0gZWxzZSBpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NT05JVE9SX0ZNVF9IV19SWF9IRFIpKSB7XG4gXHRcdHN0cnVjdCB3bGNfZDExcnhoZHIgKndsY19yeGhkciA9IChzdHJ1Y3Qgd2xjX2QxMXJ4aGRyICopc2tiLVx1MDAzZWRhdGE7XG4tXHRcdHN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyICpyYWRpb3RhcDtcbiYjNDM7XHRcdHN0cnVjdCBicmNtZl9yYWRpb3RhcF9pbmZvICpydGFwO1xuIFx0XHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xuIFx0XHR1MTYgUnhTdGF0dXMxO1xuJiM0MztcdFx0czggcnNzaTtcbiBcbiBcdFx0UnhTdGF0dXMxID0gbGUxNl90b19jcHUod2xjX3J4aGRyLVx1MDAzZXJ4aGRyLlJ4U3RhdHVzMSk7XG4mIzQzO1x0XHRyc3NpID0gd2xjX3J4aGRyLVx1MDAzZXJzc2k7XG4gXG4gXHRcdG9mZnNldCA9IHNpemVvZihzdHJ1Y3Qgd2xjX2QxMXJ4aGRyKTtcbi1cdFx0LyogTUFDIGluc2VydHMgMiBwYWQgYnl0ZXMgZm9yIGE0IGhlYWRlcnMgb3IgUW9TIG9yIEEtTVNEVVxuLVx0XHQgKiBzdWJmcmFtZXNcbi1cdFx0ICovXG4mIzQzO1x0XHQvKiBNQUMgaW5zZXJ0cyAyIHBhZCBieXRlcyBmb3IgYTQgaGVhZGVycyBvciBRb1Mgb3IgQS1NU0RVIHN1YmZyYW1lcyAqL1xuIFx0XHRpZiAoUnhTdGF0dXMxIFx1MDAyNiBSWFNfUEJQUkVTKVxuIFx0XHRcdG9mZnNldCAmIzQzOz0gMjtcbiBcdFx0b2Zmc2V0ICYjNDM7PSBEMTFfUEhZX0hEUl9MRU47XG4gXG4gXHRcdHNrYl9wdWxsKHNrYiwgb2Zmc2V0KTtcbiBcbi1cdFx0LyogVE9ETzogdXNlIFJYIGhlYWRlciB0byBmaWxsIHNvbWUgcmFkaW90YXAgZGF0YSAqL1xuLVx0XHRyYWRpb3RhcCA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xuLVx0XHRtZW1zZXQocmFkaW90YXAsIDAsIHNpemVvZigqcmFkaW90YXApKTtcbi1cdFx0cmFkaW90YXAtXHUwMDNlaXRfbGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCpyYWRpb3RhcCkpO1xuJiM0MztcdFx0LyogSW5zZXJ0IG91ciByYWRpb3RhcCBoZWFkZXIgd2l0aCBSU1NJIGRhdGEgKi9cbiYjNDM7XHRcdHJ0YXAgPSBza2JfcHVzaChza2IsIHNpemVvZigqcnRhcCkpO1xuJiM0MztcdFx0bWVtc2V0KHJ0YXAsIDAsIHNpemVvZigqcnRhcCkpO1xuJiM0MztcdFx0cnRhcC1cdTAwM2VoZHIuaXRfbGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCpydGFwKSk7XG4mIzQzO1x0XHRydGFwLVx1MDAzZWhkci5pdF9wcmVzZW50ID0gY3B1X3RvX2xlMzIoMSBcdTAwM2NcdTAwM2MgSUVFRTgwMjExX1JBRElPVEFQX0RCTV9BTlRTSUdOQUwpO1xuJiM0MztcdFx0cnRhcC1cdTAwM2VkYm1fYW50c2lnbmFsID0gcnNzaTtcbiBcbi1cdFx0LyogVE9ETzogNCBieXRlcyB3aXRoIHJlY2VpdmUgc3RhdHVzPyAqL1xuLVx0XHRza2ItXHUwMDNlbGVuIC09IDQ7XG4mIzQzO1x0XHQvKiBTdHJpcCB0aGUgNC1ieXRlIHJlY2VpdmUgc3RhdHVzIC8gRkNTIHRhaWwgKi9cbiYjNDM7XHRcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwO1xuIFxuLVx0XHQvKiBUT0RPOiB1c2UgUlggc3RhdHVzIHRvIGZpbGwgc29tZSByYWRpb3RhcCBkYXRhICovXG4gXHRcdHJhZGlvdGFwID0gc2tiX3B1c2goc2tiLCBzaXplb2YoKnJhZGlvdGFwKSk7XG4gXHRcdG1lbXNldChyYWRpb3RhcCwgMCwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xuIFx0XHRyYWRpb3RhcC1cdTAwM2VpdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YoKnJhZGlvdGFwKSk7XG4gXG4tXHRcdC8qIFRPRE86IDQgYnl0ZXMgd2l0aCByZWNlaXZlIHN0YXR1cz8gKi9cbi1cdFx0c2tiLVx1MDAzZWxlbiAtPSA0O1xuJiM0MztcdFx0LyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovXG4mIzQzO1x0XHRza2JfdHJpbShza2IsIHNrYi1cdTAwM2VsZW4gLSA0KTtcbiBcdH1cbiBcbiBcdHNrYi1cdTAwM2VkZXYgPSBpZnAtXHUwMDNlbmRldjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jXG5pbmRleCAzNWNiY2VhMGFiYzlhLi5iOWM1MTg5MzlmNTA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jXG5AQCAtMTgyLDEwICYjNDM7MTgyLDggQEAgc3RhdGljIHZvaWQgYnJjbWZfZmxvd3JpbmdfYmxvY2soc3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93LCB1MTYgZmxvd2lkLFxuIFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuLVx0Ym9vbCBjdXJyZW50bHlfYmxvY2tlZDtcbi1cdGludCBpO1xuLVx0dTggaWZpZHg7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MztcdHU4IGlmaWR4O1xuIFxuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Zmxvdy1cdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XG4gXG5AQCAtMTk0LDIzICYjNDM7MTkyLDU0IEBAIHN0YXRpYyB2b2lkIGJyY21mX2Zsb3dyaW5nX2Jsb2NrKHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdywgdTE2IGZsb3dpZCxcbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZmbG93LVx1MDAzZWJsb2NrX2xvY2ssIGZsYWdzKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuLVx0aWZpZHggPSBicmNtZl9mbG93cmluZ19pZmlkeF9nZXQoZmxvdywgZmxvd2lkKTtcbiBcbi1cdGN1cnJlbnRseV9ibG9ja2VkID0gZmFsc2U7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBmbG93LVx1MDAzZW5yb2ZyaW5nczsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKChmbG93LVx1MDAzZXJpbmdzW2ldKSBcdTAwMjZcdTAwMjYgKGkgIT0gZmxvd2lkKSkge1xuLVx0XHRcdHJpbmcgPSBmbG93LVx1MDAzZXJpbmdzW2ldO1xuLVx0XHRcdGlmICgocmluZy1cdTAwM2VzdGF0dXMgPT0gUklOR19PUEVOKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAgKGJyY21mX2Zsb3dyaW5nX2lmaWR4X2dldChmbG93LCBpKSA9PSBpZmlkeCkpIHtcbi1cdFx0XHRcdGlmIChyaW5nLVx1MDAzZWJsb2NrZWQpIHtcbi1cdFx0XHRcdFx0Y3VycmVudGx5X2Jsb2NrZWQgPSB0cnVlO1xuLVx0XHRcdFx0XHRicmVhaztcbi1cdFx0XHRcdH1cbi1cdFx0XHR9XG4mIzQzO1x0aWZpZHggPSBicmNtZl9mbG93cmluZ19pZmlkeF9nZXQoZmxvdywgZmxvd2lkKTtcbiYjNDM7XHRyaW5nLVx1MDAzZWJsb2NrZWQgPSBibG9ja2VkO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE1haW50YWluIHRoZSBwZXItaW50ZXJmYWNlIGJsb2NrZWQtcmluZyBjb3VudGVyLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogV2UgdXNlIHJpbmctXHUwMDNlY291bnRlZF9pbl9ibG9ja2VkIHJhdGhlciB0aGFuIGNoZWNraW5nXG4mIzQzO1x0ICogcmluZy1cdTAwM2VzdGF0dXMgaGVyZS4gIEEgcmluZyB0aGF0IGJlY2FtZSBibG9ja2VkIHdoaWxlXG4mIzQzO1x0ICogUklOR19PUEVOIGhhcyBhbHJlYWR5IGJlZW4gY291bnRlZCAoY291bnRlZF9pbl9ibG9ja2VkPXRydWUpLlxuJiM0MztcdCAqIEJ5IHRoZSB0aW1lIHdlIHVuYmxvY2sgaXQgZHVyaW5nIHRlYXJkb3duIGl0cyBzdGF0dXMgbWF5IGhhdmVcbiYjNDM7XHQgKiBhZHZhbmNlZCB0byBSSU5HX0NMT1NJTkcsIHNvIHRlc3RpbmcgUklOR19PUEVOIHdvdWxkIHdyb25nbHlcbiYjNDM7XHQgKiBza2lwIHRoZSBhdG9taWNfZGVjIGFuZCBwZXJtYW5lbnRseSBsZWFrIHRoZSBjb3VudGVyLCBsZWF2aW5nXG4mIzQzO1x0ICogdGhlIG5ldGlmIHF1ZXVlIHN0b3BwZWQgZm9yZXZlci5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIFJ1bGU6XG4mIzQzO1x0ICogICBibG9jayB0cmFuc2l0aW9uICAodW5ibG9ja2Vk4oaSYmxvY2tlZCk6IGNvdW50IG9ubHkgaWYgUklOR19PUEVOLFxuJiM0MztcdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGNvdW50ZWRfaW5fYmxvY2tlZC5cbiYjNDM7XHQgKiAgIHVuYmxvY2sgdHJhbnNpdGlvbiAoYmxvY2tlZOKGknVuYmxvY2tlZCk6IGRlY3JlbWVudCBvbmx5IGlmIHdlXG4mIzQzO1x0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGNvdW50ZWQgaXQsXG4mIzQzO1x0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhciBjb3VudGVkX2luX2Jsb2NrZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJsb2NrZWQpIHtcbiYjNDM7XHRcdGlmIChyaW5nLVx1MDAzZXN0YXR1cyA9PSBSSU5HX09QRU4pIHtcbiYjNDM7XHRcdFx0YXRvbWljX2luYyhcdTAwMjZmbG93LVx1MDAzZWlmX2Jsb2NrZWRfY250W2lmaWR4XSk7XG4mIzQzO1x0XHRcdHJpbmctXHUwMDNlY291bnRlZF9pbl9ibG9ja2VkID0gdHJ1ZTtcbiBcdFx0fVxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRpZiAocmluZy1cdTAwM2Vjb3VudGVkX2luX2Jsb2NrZWQpIHtcbiYjNDM7XHRcdFx0YXRvbWljX2RlYyhcdTAwMjZmbG93LVx1MDAzZWlmX2Jsb2NrZWRfY250W2lmaWR4XSk7XG4mIzQzO1x0XHRcdHJpbmctXHUwMDNlY291bnRlZF9pbl9ibG9ja2VkID0gZmFsc2U7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9ubHkgcHJvcGFnYXRlIGEgbmV0aWYgcXVldWUtc3RvcC93YWtlIHdoZW4gdGhlIGludGVyZmFjZVxuJiM0MztcdCAqIHRyYW5zaXRpb25zIGJldHdlZW4gZnVsbHktY2xlYXIgYW5kIGF0LWxlYXN0LW9uZS1ibG9ja2VkLlxuJiM0MztcdCAqIFJlYWRpbmcgdGhlIGF0b21pYyBpcyBzYWZlIGhlcmU6IHdlIGhvbGQgYmxvY2tfbG9jaywgc28gbm9cbiYjNDM7XHQgKiBjb25jdXJyZW50IGJyY21mX2Zsb3dyaW5nX2Jsb2NrKCkgY2FsbCBjYW4gcmFjZSB0aGUgdXBkYXRlXG4mIzQzO1x0ICogd2UganVzdCBtYWRlIGFib3ZlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChibG9ja2VkIFx1MDAyNlx1MDAyNiBhdG9taWNfcmVhZChcdTAwMjZmbG93LVx1MDAzZWlmX2Jsb2NrZWRfY250W2lmaWR4XSkgIT0gMSkge1xuJiM0MztcdFx0LyogQW5vdGhlciByaW5nIHdhcyBhbHJlYWR5IGJsb2NrZWQ7IG5vIG5ldyBxdWV1ZS1zdG9wIG5lZWRlZC4gKi9cbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Zmxvdy1cdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRyZXR1cm47XG4gXHR9XG4tXHRmbG93LVx1MDAzZXJpbmdzW2Zsb3dpZF0tXHUwMDNlYmxvY2tlZCA9IGJsb2NrZWQ7XG4tXHRpZiAoY3VycmVudGx5X2Jsb2NrZWQpIHtcbiYjNDM7XHRpZiAoIWJsb2NrZWQgXHUwMDI2XHUwMDI2IGF0b21pY19yZWFkKFx1MDAyNmZsb3ctXHUwMDNlaWZfYmxvY2tlZF9jbnRbaWZpZHhdKSAhPSAwKSB7XG4mIzQzO1x0XHQvKiBNb3JlIHJpbmdzIHN0aWxsIGJsb2NrZWQ7IGRvIG5vdCB3YWtlIHRoZSBxdWV1ZSB5ZXQuICovXG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Zmxvdy1cdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbkBAIC0zNjcsNiAmIzQzOzM5Niw4IEBAIHN0cnVjdCBicmNtZl9mbG93cmluZyAqYnJjbWZfZmxvd3JpbmdfYXR0YWNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IG5yb2ZyaW5ncylcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Zmxvdy1cdTAwM2VibG9ja19sb2NrKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmbG93LVx1MDAzZWFkZHJfbW9kZSk7IGkmIzQzOyYjNDM7KVxuIFx0XHRcdGZsb3ctXHUwMDNlYWRkcl9tb2RlW2ldID0gQUREUl9JTkRJUkVDVDtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZmxvdy1cdTAwM2VpZl9ibG9ja2VkX2NudCk7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRhdG9taWNfc2V0KFx1MDAyNmZsb3ctXHUwMDNlaWZfYmxvY2tlZF9jbnRbaV0sIDApO1xuIFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZsb3ctXHUwMDNlaGFzaCk7IGkmIzQzOyYjNDM7KVxuIFx0XHRcdGZsb3ctXHUwMDNlaGFzaFtpXS5pZmlkeCA9IEJSQ01GX0ZMT1dSSU5HX0lOVkFMSURfSUZJRFg7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuaFxuaW5kZXggZjNkNTExZjlhM2M5YS4uYWZkZWE4YjNmOGFhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuaFxuQEAgLTUsNiAmIzQzOzUsOCBAQFxuICNpZm5kZWYgQlJDTUZNQUNfRkxPV1JJTkdfSFxuICNkZWZpbmUgQlJDTUZNQUNfRkxPV1JJTkdfSFxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MztcbiBcbiAjZGVmaW5lIEJSQ01GX0ZMT1dSSU5HX0hBU0hTSVpFXHRcdDUxMlx0XHQvKiBoYXMgdG8gYmUgMl54ICovXG4gI2RlZmluZSBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lEXHQweEZGRkZGRkZGXG5AQCAtMjYsNiAmIzQzOzI4LDE2IEBAIGVudW0gcmluZ19zdGF0dXMge1xuIHN0cnVjdCBicmNtZl9mbG93cmluZ19yaW5nIHtcbiBcdHUxNiBoYXNoX2lkO1xuIFx0Ym9vbCBibG9ja2VkO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVHJ1ZSB3aGVuIHRoaXMgcmluZyBoYXMgYmVlbiBjb3VudGVkIGluIHRoZSBwZXItaW50ZXJmYWNlXG4mIzQzO1x0ICogaWZfYmxvY2tlZF9jbnRbXS4gIFNldCB0byB0cnVlIHdoZW5ldmVyIHRoZSByaW5nIHRyYW5zaXRpb25zXG4mIzQzO1x0ICogdW5ibG9ja2Vk4oaSYmxvY2tlZCB3aGlsZSBSSU5HX09QRU47IGNsZWFyZWQgb24gdGhlIG1hdGNoaW5nXG4mIzQzO1x0ICogYmxvY2tlZOKGknVuYmxvY2tlZCB0cmFuc2l0aW9uLiAgTmVlZGVkIHNvIHRoYXQgYSByaW5nIHRoYXRcbiYjNDM7XHQgKiBiZWNvbWVzIGJsb2NrZWQgd2hpbGUgUklOR19PUEVOIGFuZCBpcyBsYXRlciBtb3ZlZCB0b1xuJiM0MztcdCAqIFJJTkdfQ0xPU0lORyBzdGlsbCBjb3JyZWN0bHkgZGVjcmVtZW50cyB0aGUgY291bnRlciBhdFxuJiM0MztcdCAqIHRlYXJkb3duLCBldmVuIHRob3VnaCBpdHMgc3RhdHVzIGlzIG5vIGxvbmdlciBSSU5HX09QRU4uXG4mIzQzO1x0ICovXG4mIzQzO1x0Ym9vbCBjb3VudGVkX2luX2Jsb2NrZWQ7XG4gXHRlbnVtIHJpbmdfc3RhdHVzIHN0YXR1cztcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgc2tibGlzdDtcbiB9O1xuQEAgLTQwLDYgJiM0Mzs1MiwxMiBAQCBzdHJ1Y3QgYnJjbWZfZmxvd3Jpbmcge1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nX2hhc2ggaGFzaFtCUkNNRl9GTE9XUklOR19IQVNIU0laRV07XG4gXHRzcGlubG9ja190IGJsb2NrX2xvY2s7XG4gXHRlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGVbQlJDTUZfTUFYX0lGU107XG4mIzQzO1x0LyogUGVyLWludGVyZmFjZSBjb3VudCBvZiBjdXJyZW50bHkgYmxvY2tlZCBvcGVuIHJpbmdzLlxuJiM0MztcdCAqIE1haW50YWluZWQgYXRvbWljYWxseSBzbyBicmNtZl9mbG93cmluZ19ibG9jaygpIGNhbiBjaGVja1xuJiM0MztcdCAqIHdoZXRoZXIgYW55IHNpYmxpbmcgcmluZyBpcyBhbHJlYWR5IGJsb2NrZWQgaW4gTygxKSB3aXRob3V0XG4mIzQzO1x0ICogaG9sZGluZyBibG9ja19sb2NrIGFjcm9zcyBhbiBPKG5yb2ZyaW5ncykgd2Fsay5cbiYjNDM7XHQgKi9cbiYjNDM7XHRhdG9taWNfdCBpZl9ibG9ja2VkX2NudFtCUkNNRl9NQVhfSUZTXTtcbiBcdHUxNiBucm9mcmluZ3M7XG4gXHRib29sIHRkbHNfYWN0aXZlO1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nX3RkbHNfZW50cnkgKnRkbHNfZW50cnk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3c2lnbmFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuY1xuaW5kZXggYTQzZjFhMzhiMGUzMC4uM2MxY2EzNTVlOGVlYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuY1xuQEAgLTEwMzcsNyAmIzQzOzEwMzcsOSBAQCBpbnQgYnJjbWZfZndzX21hY2Rlc2NfaW5kaWNhdGUoc3RydWN0IGJyY21mX2Z3c19pbmZvICpmd3MsIHU4IHR5cGUsIHU4ICpkYXRhKVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7dXNlIGV4aXN0aW5nXFxuXCYjMzQ7KTtcbiBcdFx0XHRXQVJOX09OKGVudHJ5LVx1MDAzZW1hY19oYW5kbGUgIT0gbWFjX2hhbmRsZSk7XG4tXHRcdFx0LyogVE9ETzogd2hhdCBzaG91bGQgd2UgZG8gaGVyZTogY29udGludWUsIHJlaW5pdCwgLi4gKi9cbiYjNDM7XHRcdFx0LyogRmlybXdhcmUgcmUtc2VudCBBREQgZm9yIHRoZSBzYW1lIE1BQyBoYW5kbGUuXG4mIzQzO1x0XHRcdCAqIE5vIGFjdGlvbiByZXF1aXJlZDsgaXQgaXMgYSBzYWZlIG5vLW9wLlxuJiM0MztcdFx0XHQgKi9cbiBcdFx0fVxuIFx0fVxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5pbmRleCBiYTFjZTE1NTJlMGY0Li44ZGI2MTY3MDcyZGEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbkBAIC00OCw3ICYjNDM7NDgsMTkgQEBcbiAjZGVmaW5lIE1TR0JVRl9UWVBFX0xQQktfRE1BWEZFUlx0XHQweDEzXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9MUEJLX0RNQVhGRVJfQ01QTFRcdFx0MHgxNFxuIFxuLSNkZWZpbmUgTlJfVFhfUEtUSURTXHRcdFx0XHQyMDQ4XG4mIzQzOy8qXG4mIzQzOyAqIE5SX1RYX1BLVElEUzogbnVtYmVyIG9mIHNpbXVsdGFuZW91c2x5IGluLWZsaWdodCBUWCBwYWNrZXQgSURzLlxuJiM0MzsgKiBFYWNoIG91dHN0YW5kaW5nIFRYIGZyYW1lIGNvbnN1bWVzIG9uZSBJRCB1bnRpbCB0aGUgZG9uZ2xlIHJldHVybnNcbiYjNDM7ICogYSBUWC1zdGF0dXMgY29tcGxldGlvbi4gIFRoZSBvcmlnaW5hbCAyMDQ4LWVudHJ5IHBvb2wgZXhoYXVzdGVkIHVuZGVyXG4mIzQzOyAqIOKJpTQgY29uY3VycmVudCBpcGVyZjMgc3RyZWFtcyBvbiBXaS1GaSA1LzYgKDgwMi4xMWFjL2F4KSBkZXZpY2VzLFxuJiM0MzsgKiBjYXVzaW5nIFwmIzM0O05vIFBLVElEIGF2YWlsYWJsZVwmIzM0OyBkcm9wcyBhbmQgVENQIHJldHJhbnNtaXRzLiAgNDA5NiBnaXZlc1xuJiM0MzsgKiBoZWFkcm9vbSBmb3IgaGlnaC1hZ2dyZWdhdGlvbiBzY2VuYXJpb3Mgd2hpbGUgc3RpbGwgZml0dGluZyBpbiBhXG4mIzQzOyAqIG1vZGVzdCBhbW91bnQgb2YgaG9zdCBtZW1vcnkgKH40OCBLQiBmb3IgdGhlIHBrdGlkIHRhYmxlIGVudHJpZXMpLlxuJiM0MzsgKlxuJiM0MzsgKiBOUl9SWF9QS1RJRFM6IFJYIHBvc3QgYnVmZmVycyBwcmUtYWxsb2NhdGVkIHRvIHRoZSBkb25nbGUuICAxMDI0IGlzXG4mIzQzOyAqIHN1ZmZpY2llbnQgZm9yIGN1cnJlbnQgaGFyZHdhcmUgUlggcmluZyBkZXB0aHM7IGxlYXZlIHVuY2hhbmdlZC5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgTlJfVFhfUEtUSURTXHRcdFx0XHQ0MDk2XG4gI2RlZmluZSBOUl9SWF9QS1RJRFNcdFx0XHRcdDEwMjRcbiBcbiAjZGVmaW5lIEJSQ01GX0lPQ1RMX1JFUV9QS1RJRFx0XHRcdDB4RkZGRVxuQEAgLTY0LDggJiM0Mzs3NiwyOSBAQFxuICNkZWZpbmUgQlJDTUZfTVNHQlVGX1BLVF9GTEFHU19GUkFNRV9NQVNLXHQweDA3XG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfUEtUX0ZMQUdTX1BSSU9fU0hJRlRcdDVcbiBcbi0jZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQxXHRcdDMyXG4tI2RlZmluZSBCUkNNRl9NU0dCVUZfVFhfRkxVU0hfQ05UMlx0XHQ5NlxuJiM0MzsvKlxuJiM0MzsgKiBUWCBmbHVzaCAvIGRvb3JiZWxsLXJpbmcgdGhyZXNob2xkcy5cbiYjNDM7ICpcbiYjNDM7ICogQ05UMSBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIGFjY3VtdWxhdGUgaW4gdGhlIGNvbW1vbnJpbmdcbiYjNDM7ICogYmVmb3JlIHRoZSBmaXJzdCBpbnRlcm1lZGlhdGUgd3JpdGVfY29tcGxldGUoKSAoZG9vcmJlbGwgcmluZykgaXNcbiYjNDM7ICogaXNzdWVkIG1pZC1iYXRjaC4gIENOVDIgaXMgdGhlIGhhcmQgZmx1c2ggaW50ZXJ2YWw6IGFmdGVyIHRoaXMgbWFueVxuJiM0MzsgKiBmcmFtZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gc2luY2UgdGhlIGxhc3QgZmx1c2gsIHdlIHVuY29uZGl0aW9uYWxseVxuJiM0MzsgKiByaW5nIHRoZSBiZWxsIGFuZCByZXNldCB0aGUgY291bnRlci5cbiYjNDM7ICpcbiYjNDM7ICogUmFpc2luZyBib3RoIGZyb20gdGhlIG9yaWdpbmFsIDMyLzk2IHRvIDY0LzEyOCBkb3VibGVzIHRoZSBhdmVyYWdlXG4mIzQzOyAqIG51bWJlciBvZiBUWCBkZXNjcmlwdG9ycyBjb21taXR0ZWQgcGVyIE1NSU8gd3JpdGUsIGhhbHZpbmcgdGhlIFBDSWVcbiYjNDM7ICogZG9vcmJlbGwgcmF0ZSBvbiBzdXN0YWluZWQgdGhyb3VnaHB1dCB3b3JrbG9hZHMuICBUaGUgdHJhZGVvZmYgaXMgYVxuJiM0MzsgKiBtYXJnaW5hbGx5IGhpZ2hlciB3b3JzdC1jYXNlIGxhdGVuY3kgZm9yIHRoZSBsYXN0IGZyYW1lcyBpbiBhIGJ1cnN0LFxuJiM0MzsgKiB3aGljaCBpbiBwcmFjdGljZSBpcyBoaWRkZW4gYnkgdGhlIHRpbWUgdGhlIGRvbmdsZSBETUEgZW5naW5lIGRyYWluc1xuJiM0MzsgKiB0aGUgcHJldmlvdXMgYmF0Y2guXG4mIzQzOyAqXG4mIzQzOyAqIFRSSUNLTEVfVFhXT1JLRVJfVEhSUyBnb3Zlcm5zIGhvdyBvZnRlbiBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YSgpXG4mIzQzOyAqIGZvcmNlcyBhIHdvcmtxdWV1ZSBzY2hlZHVsZSB3aGVuIHRoZSBxdWV1ZSBkZXB0aCBpcyBub3QgYSBtdWx0aXBsZSBvZlxuJiM0MzsgKiB0aGlzIHZhbHVlLiAgS2VlcGluZyBpdCBhdCBoYWxmIG9mIENOVDEgKDMyKSBwcmVzZXJ2ZXMgcmVzcG9uc2l2ZW5lc3NcbiYjNDM7ICogZm9yIGxvdy1yYXRlIGZsb3dzIChlLmcuIFZvSVAsIElDTVApIHRoYXQgbmV2ZXIgYWNjdW11bGF0ZSA2NCBmcmFtZXMuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQxXHRcdDY0XG4mIzQzOyNkZWZpbmUgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDJcdFx0MTI4XG4gXG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSU1x0OTZcbiAjZGVmaW5lIEJSQ01GX01TR0JVRl9UUklDS0xFX1RYV09SS0VSX1RIUlNcdDMyXG5AQCAtNzg3LDEwICYjNDM7ODIwLDMwIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4ge1xuIFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XG4gXG4tXHRzZXRfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZWZsb3dfbWFwKTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIElmIHRoZSBiaXQgd2FzIGFscmVhZHkgc2V0LCBhIHR4Zmxvd193b3JrIGl0ZW0gaXMgYWxyZWFkeVxuJiM0MztcdCAqIHF1ZXVlZCBvciBydW5uaW5nIGZvciB0aGlzIHJpbmcuICBJbiB0aGF0IGNhc2UgdGhlIGV4aXN0aW5nXG4mIzQzO1x0ICogd29ya2VyIHdpbGwgZHJhaW4gb3VyIGZyZXNobHkgZW5xdWV1ZWQgZnJhbWUgd2hlbiBpdCBydW5zLFxuJiM0MztcdCAqIHNvIHdlIG9ubHkgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIHdvcmsgaXRlbSB3aGVuIHRoZVxuJiM0MztcdCAqIGZvcmNlIGZsYWcgaXMgc2V0IG9yIHRoZSByaW5nIGlzIGJlbG93IHRoZSBkZWxheSB0aHJlc2hvbGQuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBJZiB0aGUgYml0IHdhcyBOT1Qgc2V0ICh0ZXN0X2FuZF9zZXRfYml0IHJldHVybnMgZmFsc2UpLCBub1xuJiM0MztcdCAqIHdvcmtlciBpcyBwZW5kaW5nIGZvciB0aGlzIHJpbmcgYXQgYWxsLiAgV2UgTVVTVCBzY2hlZHVsZVxuJiM0MztcdCAqIG9uZSB1bmNvbmRpdGlvbmFsbHksIG90aGVyd2lzZSB0aGUgZnJhbWUgd2UganVzdCBlbnF1ZXVlZFxuJiM0MztcdCAqIHdpbGwgc2l0IGluIHRoZSBmbG93cmluZyB1bnNlbnQgdW50aWwgc29tZSB1bnJlbGF0ZWQgZXZlbnRcbiYjNDM7XHQgKiB0cmlnZ2VycyB0aGUgd29ya3F1ZXVlIOKAlCBjYXVzaW5nIHNpbGVudCBUWCBzdGFsbHMgdW5kZXJcbiYjNDM7XHQgKiBoaWdoIGxvYWQgd2hlbiBvdXRzdGFuZGluZ190eCBcdTAwM2U9IERFTEFZX1RYV09SS0VSX1RIUlMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZWZsb3dfbWFwKSkge1xuJiM0MztcdFx0LyogQml0IHdhcyBjbGVhcjogbm8gd29ya2VyIHBlbmRpbmcsIGFsd2F5cyBzY2hlZHVsZS4gKi9cbiYjNDM7XHRcdHF1ZXVlX3dvcmsobXNnYnVmLVx1MDAzZXR4Zmxvd193cSwgXHUwMDI2bXNnYnVmLVx1MDAzZXR4Zmxvd193b3JrKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogQml0IHdhcyBhbHJlYWR5IHNldDogd29ya2VyIHBlbmRpbmcsIGFwcGx5IGNvYWxlc2NpbmcgaGV1cmlzdGljLiAqL1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbi1cdGlmICgoZm9yY2UpIHx8IChhdG9taWNfcmVhZChcdTAwMjZjb21tb25yaW5nLVx1MDAzZW91dHN0YW5kaW5nX3R4KSBcdTAwM2Ncbi1cdFx0XHRCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSUykpXG4mIzQzO1x0aWYgKGZvcmNlIHx8IChhdG9taWNfcmVhZChcdTAwMjZjb21tb25yaW5nLVx1MDAzZW91dHN0YW5kaW5nX3R4KSBcdTAwM2NcbiYjNDM7XHRcdCAgICAgIEJSQ01GX01TR0JVRl9ERUxBWV9UWFdPUktFUl9USFJTKSlcbiBcdFx0cXVldWVfd29yayhtc2didWYtXHUwMDNldHhmbG93X3dxLCBcdTAwMjZtc2didWYtXHUwMDNldHhmbG93X3dvcmspO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTYyMSwxMSAmIzQzOzE2NzQsMTEgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdGRvIHtcbiBcdFx0YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChtc2didWYpO1xuIFx0XHRpZiAobXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QgIT0gbXNnYnVmLVx1MDAzZXJ4YnVmcG9zdClcbi1cdFx0XHRtc2xlZXAoMTApO1xuJiM0MztcdFx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XG4gXHRcdGVsc2VcbiBcdFx0XHRicmVhaztcbiBcdFx0Y291bnQmIzQzOyYjNDM7O1xuLVx0fSB3aGlsZSAoY291bnQgXHUwMDNjIDEwKTtcbiYjNDM7XHR9IHdoaWxlIChjb3VudCBcdTAwM2MgMTAwKTtcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XG4gXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xuaW5kZXggMTM2NjJhYTRiNGVhNi4uOTMzOGE1ZmFhMjYwYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbkBAIC0yNjgsNiAmIzQzOzI2OCwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2Zpcm13YXJlX21hcHBpbmcgYnJjbWZfcGNpZV9md25hbWVzW10gPSB7XG4gXG4gI2RlZmluZSBCUkNNRl9QQ0lFX01CREFUQV9USU1FT1VUXHRcdG1zZWNzX3RvX2ppZmZpZXMoMjAwMClcbiBcbiYjNDM7LypcbiYjNDM7ICogSDJEIG1haWxib3ggcG9sbCB0aW1pbmcgcGFyYW1ldGVycy5cbiYjNDM7ICpcbiYjNDM7ICogVGhlIGRvbmdsZSB0eXBpY2FsbHkgY2xlYXJzIHRoZSBIMkQgbWFpbGJveCByZWdpc3RlciB3aXRoaW4gYSBmZXdcbiYjNDM7ICogaHVuZHJlZCBtaWNyb3NlY29uZHMgYWZ0ZXIgdGhlIGRvb3JiZWxsIGludGVycnVwdCBmaXJlcy4gIFRoZVxuJiM0MzsgKiBvcmlnaW5hbCBjb2RlIHVzZWQgbXNsZWVwKDEwKSAqIDEwMCBpdGVyYXRpb25zLCBtZWFuaW5nIHRoZVxuJiM0MzsgKiBtaW5pbXVtIG9ic2VydmFibGUgbGF0ZW5jeSB3YXMgMTBtcyBldmVuIHdoZW4gdGhlIGRvbmdsZSB3YXMgZmFzdC5cbiYjNDM7ICpcbiYjNDM7ICogV2UgaW5zdGVhZCBzdGFydCB3aXRoIGEgc2hvcnQgc2xlZXAgYW5kIGRvdWJsZSBpdCBlYWNoIGl0ZXJhdGlvblxuJiM0MzsgKiAoZXhwb25lbnRpYWwgYmFja29mZikgdXAgdG8gQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUywgc3RheWluZ1xuJiM0MzsgKiB3aXRoaW4gdGhlIHNhbWUgMS1zZWNvbmQgYWJzb2x1dGUgdGltZW91dC5cbiYjNDM7ICpcbiYjNDM7ICogTUlOX1VTIC8gSU5JVElBTF9NQVhfVVMgOiB1c2xlZXBfcmFuZ2UgYm91bmRzIGZvciB0aGUgZmlyc3QgaXRlcmF0aW9uLlxuJiM0MzsgKiBNQVhfVVMgICAgIDogY2FwIG9uIHRoZSBwZXItaXRlcmF0aW9uIHNsZWVwICjCtXMpLlxuJiM0MzsgKiBUSU1FT1VUX1VTIDogdG90YWwgYnVkZ2V0IGJlZm9yZSBnaXZpbmcgdXAgKDEgc2Vjb25kKS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgQlJDTUZfUENJRV9NQl9QT0xMX01JTl9VU1x0XHQ0MFxuJiM0MzsjZGVmaW5lIEJSQ01GX1BDSUVfTUJfUE9MTF9JTklUSUFMX01BWF9VU1x0NTBcbiYjNDM7I2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfTUFYX1VTXHRcdDUwMDBcbiYjNDM7I2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfVElNRU9VVF9VU1x0XHQxMDAwMDAwXG4mIzQzO1xuICNkZWZpbmUgQlJDTUZfUENJRV9DRkdSRUdfU1RBVFVTX0NNRFx0XHQweDRcbiAjZGVmaW5lIEJSQ01GX1BDSUVfQ0ZHUkVHX1BNX0NTUlx0XHQweDRDXG4gI2RlZmluZSBCUkNNRl9QQ0lFX0NGR1JFR19NU0lfQ0FQXHRcdDB4NThcbkBAIC03NjYsNyAmIzQzOzc4Nyw4IEBAIGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8sIHUzMiBodG9kX21iX2RhdGEpXG4gXHRzdHJ1Y3QgYnJjbWZfY29yZSAqY29yZTtcbiBcdHUzMiBhZGRyO1xuIFx0dTMyIGN1cl9odG9kX21iX2RhdGE7XG4tXHR1MzIgaTtcbiYjNDM7XHR1MzIgZWxhcHNlZF91cyA9IDA7XG4mIzQzO1x0dTMyIHNsZWVwX3VzID0gQlJDTUZfUENJRV9NQl9QT0xMX0lOSVRJQUxfTUFYX1VTO1xuIFxuIFx0c2hhcmVkID0gXHUwMDI2ZGV2aW5mby1cdTAwM2VzaGFyZWQ7XG4gXHRhZGRyID0gc2hhcmVkLVx1MDAzZWh0b2RfbWJfZGF0YV9hZGRyO1xuQEAgLTc3NiwxMiAmIzQzOzc5OCw0MCBAQCBicmNtZl9wY2llX3NlbmRfbWJfZGF0YShzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCB1MzIgaHRvZF9tYl9kYXRhKVxuIFx0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7TUIgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBwZW5kaW5nIDB4JTA0eFxcblwmIzM0OyxcbiBcdFx0XHQgIGN1cl9odG9kX21iX2RhdGEpO1xuIFxuLVx0aSA9IDA7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBXYWl0IGZvciB0aGUgZG9uZ2xlIHRvIGNvbnN1bWUgdGhlIHByZXZpb3VzIEgyRCBtYWlsYm94IG1lc3NhZ2UuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBUaGVyZSBpcyBubyBpbnRlcnJ1cHQgdGhhdCBzaWduYWxzIHdoZW4gdGhlIGRvbmdsZSBjbGVhcnMgdGhpc1xuJiM0MztcdCAqIHJlZ2lzdGVyLCBzbyBwb2xsaW5nIGlzIHVuYXZvaWRhYmxlLiAgVGhlIG9yaWdpbmFsIGNvZGUgdXNlZFxuJiM0MztcdCAqIG1zbGVlcCgxMCkgcGVyIGl0ZXJhdGlvbiwgaW5jdXJyaW5nIGF0IGxlYXN0IDEwbXMgb2YgbGF0ZW5jeVxuJiM0MztcdCAqIGV2ZW4gd2hlbiB0aGUgZG9uZ2xlIHJlc3BvbmRlZCBpbiBtaWNyb3NlY29uZHMuXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBXZSB1c2UgdXNsZWVwX3JhbmdlKCkgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGluc3RlYWQ6XG4mIzQzO1x0ICogICAtIEZpcnN0IGl0ZXJhdGlvbiBzbGVlcHMgfjUwwrVzIChmYXN0IHBhdGggZm9yIHJlc3BvbnNpdmUgZG9uZ2xlKS5cbiYjNDM7XHQgKiAgIC0gRWFjaCBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBkb3VibGVzIHRoZSBzbGVlcCwgY2FwcGVkIGF0IDVtcyxcbiYjNDM7XHQgKiAgICAgc28gbG9uZyB3YWl0cyBzdGlsbCB5aWVsZCB0aGUgQ1BVIHdpdGhvdXQgYnVzeS1zcGlubmluZy5cbiYjNDM7XHQgKiAgIC0gVG90YWwgdGltZW91dCBtYXRjaGVzIHRoZSBvcmlnaW5hbCAxLXNlY29uZCBsaW1pdC5cbiYjNDM7XHQgKiAgIC0gV2UgYmFpbCBlYXJseSBpZiB0aGUgZGV2aWNlIGhhcyBnb25lIGRvd24gc28gdGhhdCBhIGRlYWRcbiYjNDM7XHQgKiAgICAgZG9uZ2xlIGRvZXMgbm90IGhvbGQgdGhlIGNhbGxlciBmb3IgYSBmdWxsIHNlY29uZC5cbiYjNDM7XHQgKi9cbiBcdHdoaWxlIChjdXJfaHRvZF9tYl9kYXRhICE9IDApIHtcbi1cdFx0bXNsZWVwKDEwKTtcbi1cdFx0aSYjNDM7JiM0Mzs7XG4tXHRcdGlmIChpIFx1MDAzZSAxMDApXG4mIzQzO1x0XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSA9PSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV04pIHtcbiYjNDM7XHRcdFx0YnJjbWZfZGJnKFBDSUUsIFwmIzM0O0RldmljZSBkb3duLCBhYm9ydGluZyBNQiBzZW5kXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoZWxhcHNlZF91cyBcdTAwM2U9IEJSQ01GX1BDSUVfTUJfUE9MTF9USU1FT1VUX1VTKSB7XG4mIzQzO1x0XHRcdGJyY21mX2VycihcJiMzNDtUaW1lb3V0IHdhaXRpbmcgZm9yIEgyRCBNQiBzbG90IGFmdGVyICV1IHVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgZWxhcHNlZF91cyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHVzbGVlcF9yYW5nZShCUkNNRl9QQ0lFX01CX1BPTExfTUlOX1VTLCBzbGVlcF91cyk7XG4mIzQzO1x0XHRlbGFwc2VkX3VzICYjNDM7PSBzbGVlcF91cztcbiYjNDM7XG4mIzQzO1x0XHQvKiBFeHBvbmVudGlhbCBiYWNrb2ZmLCBjYXBwZWQgYXQgQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUyAqL1xuJiM0MztcdFx0c2xlZXBfdXMgPSBtaW4oc2xlZXBfdXMgKiAyLCAodTMyKUJSQ01GX1BDSUVfTUJfUE9MTF9NQVhfVVMpO1xuJiM0MztcbiBcdFx0Y3VyX2h0b2RfbWJfZGF0YSA9IGJyY21mX3BjaWVfcmVhZF90Y20zMihkZXZpbmZvLCBhZGRyKTtcbiBcdH1cbiBcbkBAIC0xMDAxLDEwICYjNDM7MTA1MSwxMCBAQCBzdGF0aWMgdm9pZCBicmNtZl9wY2llX3JlbGVhc2VfaXJxKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8pXG4gXHRmcmVlX2lycShwZGV2LVx1MDAzZWlycSwgZGV2aW5mbyk7XG4gXHRwY2lfZGlzYWJsZV9tc2kocGRldik7XG4gXG4tXHRtc2xlZXAoNTApO1xuJiM0MztcdHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTtcbiBcdGNvdW50ID0gMDtcbi1cdHdoaWxlICgoZGV2aW5mby1cdTAwM2Vpbl9pcnEpIFx1MDAyNlx1MDAyNiAoY291bnQgXHUwMDNjIDIwKSkge1xuLVx0XHRtc2xlZXAoNTApO1xuJiM0MztcdHdoaWxlICgoZGV2aW5mby1cdTAwM2Vpbl9pcnEpIFx1MDAyNlx1MDAyNiAoY291bnQgXHUwMDNjIDEwMDApKSB7XG4mIzQzO1x0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XG4gXHRcdGNvdW50JiM0MzsmIzQzOztcbiBcdH1cbiBcdGlmIChkZXZpbmZvLVx1MDAzZWluX2lycSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uY1xuaW5kZXggYjcyNWM2NGU1YjVjNi4uNGU0MTQ0MDNkNzQ3MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmNcbkBAIC0xNjQ1LDM3ICYjNDM7MTY0NSw0MyBAQCBzdGF0aWMgdTggYnJjbWZfc2Rpb19yeGdsb20oc3RydWN0IGJyY21mX3NkaW8gKmJ1cywgdTggcnhzZXEpXG4gXG4gXHRcdHJkX25ldy5zZXFfbnVtID0gcnhzZXE7XG4gXHRcdHJkX25ldy5sZW4gPSBkbGVuO1xuJiM0MztcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBDbGFpbSB0aGUgaG9zdCBvbmNlIGZvciB0aGUgZW50aXJlIGhlYWRlci1wYXJzaW5nIHBoYXNlLlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIGJyY21mX3NkaW9faGRwYXJzZSgpIG9wZXJhdGVzIG9uIGRhdGEgYWxyZWFkeSBpbiBob3N0XG4mIzQzO1x0XHQgKiBtZW1vcnksIGJ1dCBtYXkgY2FsbCBicmNtZl9zZGlvX3J4ZmFpbCgpIG9uIGVycm9yLCB3aGljaFxuJiM0MztcdFx0ICogd3JpdGVzIFNESU8gRnVuYzEgcmVnaXN0ZXJzIGFuZCB0aGVyZWZvcmUgcmVxdWlyZXMgdGhlXG4mIzQzO1x0XHQgKiBob3N0IHRvIGJlIGNsYWltZWQuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogc2tiX3B1bGwoKSBhbmQgdGhlIG51bSBjb3VudGVyIGFyZSBwdXJlIGhvc3QtbWVtb3J5XG4mIzQzO1x0XHQgKiBvcGVyYXRpb25zOyBrZWVwIHRoZW0gb3V0c2lkZSB0aGUgbG9jayB0byBtaW5pbWlzZSB0aGVcbiYjNDM7XHRcdCAqIGhvbGQgdGltZS4gIEJvdGggaGRwYXJzZSBjYWxscyAoc3VwZXJmcmFtZSBoZWFkZXIgYW5kXG4mIzQzO1x0XHQgKiBlYWNoIHN1YmZyYW1lIGhlYWRlcikgYXJlIGdyb3VwZWQgdW5kZXIgYSBzaW5nbGUgY2xhaW0vXG4mIzQzO1x0XHQgKiByZWxlYXNlLCByZXBsYWNpbmcgdGhlIG9yaWdpbmFsIE4mIzQzOzEgc2VwYXJhdGUgcGFpcnMuXG4mIzQzO1x0XHQgKi9cbiBcdFx0c2Rpb19jbGFpbV9ob3N0KGJ1cy1cdTAwM2VzZGlvZGV2LVx1MDAzZWZ1bmMxKTtcbiBcdFx0ZXJyY29kZSA9IGJyY21mX3NkaW9faGRwYXJzZShidXMsIHBmaXJzdC1cdTAwM2VkYXRhLCBcdTAwMjZyZF9uZXcsXG4gXHRcdFx0XHRcdCAgICAgQlJDTUZfU0RJT19GVF9TVVBFUik7XG4tXHRcdHNkaW9fcmVsZWFzZV9ob3N0KGJ1cy1cdTAwM2VzZGlvZGV2LVx1MDAzZWZ1bmMxKTtcbi1cdFx0YnVzLVx1MDAzZWN1cl9yZWFkLmxlbiA9IHJkX25ldy5sZW5fbnh0ZnJtIFx1MDAzY1x1MDAzYyA0O1xuLVxuLVx0XHQvKiBSZW1vdmUgc3VwZXJmcmFtZSBoZWFkZXIsIHJlbWVtYmVyIG9mZnNldCAqL1xuLVx0XHRza2JfcHVsbChwZmlyc3QsIHJkX25ldy5kYXRfb2Zmc2V0KTtcbi1cdFx0bnVtID0gMDtcbi1cbi1cdFx0LyogVmFsaWRhdGUgYWxsIHRoZSBzdWJmcmFtZSBoZWFkZXJzICovXG4tXHRcdHNrYl9xdWV1ZV93YWxrKFx1MDAyNmJ1cy1cdTAwM2VnbG9tLCBwbmV4dCkge1xuLVx0XHRcdC8qIGxlYXZlIHdoZW4gaW52YWxpZCBzdWJmcmFtZSBpcyBmb3VuZCAqL1xuLVx0XHRcdGlmIChlcnJjb2RlKVxuLVx0XHRcdFx0YnJlYWs7XG4gXG4tXHRcdFx0cmRfbmV3LmxlbiA9IHBuZXh0LVx1MDAzZWxlbjtcbi1cdFx0XHRyZF9uZXcuc2VxX251bSA9IHJ4c2VxJiM0MzsmIzQzOztcbi1cdFx0XHRzZGlvX2NsYWltX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuLVx0XHRcdGVycmNvZGUgPSBicmNtZl9zZGlvX2hkcGFyc2UoYnVzLCBwbmV4dC1cdTAwM2VkYXRhLCBcdTAwMjZyZF9uZXcsXG4tXHRcdFx0XHRcdFx0ICAgICBCUkNNRl9TRElPX0ZUX1NVQik7XG4tXHRcdFx0c2Rpb19yZWxlYXNlX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuLVx0XHRcdGJyY21mX2RiZ19oZXhfZHVtcChCUkNNRl9HTE9NX09OKCksXG4tXHRcdFx0XHRcdCAgIHBuZXh0LVx1MDAzZWRhdGEsIDMyLCBcJiMzNDtzdWJmcmFtZTpcXG5cJiMzNDspO1xuLVxuLVx0XHRcdG51bSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHQvKiBWYWxpZGF0ZSBhbGwgdGhlIHN1YmZyYW1lIGhlYWRlcnMgd2hpbGUgaG9zdCBpcyBjbGFpbWVkICovXG4mIzQzO1x0XHRpZiAoIWVycmNvZGUpIHtcbiYjNDM7XHRcdFx0c2tiX3F1ZXVlX3dhbGsoXHUwMDI2YnVzLVx1MDAzZWdsb20sIHBuZXh0KSB7XG4mIzQzO1x0XHRcdFx0cmRfbmV3LmxlbiA9IHBuZXh0LVx1MDAzZWxlbjtcbiYjNDM7XHRcdFx0XHRyZF9uZXcuc2VxX251bSA9IHJ4c2VxJiM0MzsmIzQzOztcbiYjNDM7XHRcdFx0XHRlcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcG5leHQtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnJkX25ldyxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgIEJSQ01GX1NESU9fRlRfU1VCKTtcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmdfaGV4X2R1bXAoQlJDTUZfR0xPTV9PTigpLFxuJiM0MztcdFx0XHRcdFx0XHQgICBwbmV4dC1cdTAwM2VkYXRhLCAzMixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgXCYjMzQ7c3ViZnJhbWU6XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRpZiAoZXJyY29kZSlcbiYjNDM7XHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGVycmNvZGUpIHtcbi1cdFx0XHQvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IgKi9cbi1cdFx0XHRzZGlvX2NsYWltX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuJiM0MztcdFx0XHQvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IsIHN0aWxsIGhvbGRpbmcgdGhlIGhvc3QgKi9cbiBcdFx0XHRicmNtZl9zZGlvX3J4ZmFpbChidXMsIHRydWUsIGZhbHNlKTtcbiBcdFx0XHRidXMtXHUwMDNlc2RjbnQucnhnbG9tZmFpbCYjNDM7JiM0Mzs7XG4gXHRcdFx0YnJjbWZfc2Rpb19mcmVlX2dsb20oYnVzKTtcbkBAIC0xNjgzLDYgJiM0MzsxNjg5LDE0IEBAIHN0YXRpYyB1OCBicmNtZl9zZGlvX3J4Z2xvbShzdHJ1Y3QgYnJjbWZfc2RpbyAqYnVzLCB1OCByeHNlcSlcbiBcdFx0XHRidXMtXHUwMDNlY3VyX3JlYWQubGVuID0gMDtcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdFx0fVxuJiM0MztcdFx0c2Rpb19yZWxlYXNlX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuJiM0MztcbiYjNDM7XHRcdC8qIEhvc3QgcmVsZWFzZWQ7IG5vdyBkbyB0aGUgcHVyZS1tZW1vcnkgYm9va2tlZXBpbmcgKi9cbiYjNDM7XHRcdGJ1cy1cdTAwM2VjdXJfcmVhZC5sZW4gPSByZF9uZXcubGVuX254dGZybSBcdTAwM2NcdTAwM2MgNDtcbiYjNDM7XG4mIzQzO1x0XHQvKiBSZW1vdmUgc3VwZXJmcmFtZSBoZWFkZXIsIHJlbWVtYmVyIG9mZnNldCAqL1xuJiM0MztcdFx0c2tiX3B1bGwocGZpcnN0LCByZF9uZXcuZGF0X29mZnNldCk7XG4mIzQzO1x0XHRudW0gPSAwO1xuIFxuIFx0XHQvKiBCYXNpYyBTRCBmcmFtaW5nIGxvb2tzIG9rIC0gcHJvY2VzcyBlYWNoIHBhY2tldCAoaGVhZGVyKSAqL1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9hbXBkdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmNcbmluZGV4IGZjN2E1ZGQyZTVkODYuLjNmZDhiZGJkMzVlNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmNcbkBAIC01MTYsMTIgJiM0Mzs1MTYsMTEgQEAgaW50IGJyY21zX2NfYW1wZHVfYWRkX2ZyYW1lKHN0cnVjdCBicmNtc19hbXBkdV9zZXNzaW9uICpzZXNzaW9uLFxuIFx0XHRcdHJldHVybiAtRU5PU1BDO1xuIFxuIFx0XHQvKlxuLVx0XHQgKiBXZSBhcmVuJiMzOTt0IHJlYWxseSBvdXQgb2Ygc3BhY2UgaWYgdGhlIG5ldyBmcmFtZSBpcyBvZlxuLVx0XHQgKiBhIGRpZmZlcmVudCBwcmlvcml0eSwgYnV0IHdlIHdhbnQgdGhlIHNhbWUgYmVoYXZpb3VyXG4tXHRcdCAqIHNvIHJldHVybiAtRU5PU1BDIGFueXdheS5cbi1cdFx0ICpcbi1cdFx0ICogWFhYOiBUaGUgb2xkIEFNUERVIGNvZGUgZGlkIHRoaXMsIGJ1dCBpcyBpdCByZWFsbHlcbi1cdFx0ICogbmVjZXNzYXJ5P1xuJiM0MztcdFx0ICogSUVFRSA4MDIuMTFuIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgYWxsIE1QRFVzIHdpdGhpbiBhblxuJiM0MztcdFx0ICogQS1NUERVIGJlbG9uZyB0byB0aGUgc2FtZSBUSUQgKFRyYWZmaWMgSWRlbnRpZmllcikuXG4mIzQzO1x0XHQgKiBTaW5jZSBwcmlvcml0eSBtYXBzIHRvIFRJRCwgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbWVhbnNcbiYjNDM7XHRcdCAqIHdlIG11c3QgY2xvc2UgdGhlIGN1cnJlbnQgYWdncmVnYXRlIGFuZCBzdGFydCBhIG5ldyBvbmUsXG4mIzQzO1x0XHQgKiBzbyB3ZSByZXR1cm4gLUVOT1NQQyBoZXJlLlxuIFx0XHQgKi9cbiBcdFx0Zmlyc3QgPSBza2JfcGVlayhcdTAwMjZzZXNzaW9uLVx1MDAzZXNrYl9saXN0KTtcbiBcdFx0aWYgKHAtXHUwMDNlcHJpb3JpdHkgIT0gZmlyc3QtXHUwMDNlcHJpb3JpdHkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmNtZm1hYyBhbmQgYnJjbXNtYWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBCcm9hZGNvbSBXaS1GaSBoYXJkd2FyZSAoUENJZSwgU0RJTywgb3IgQkNNQSkgdG8gaW5pdGlhbGl6ZSBhbmQgZnVuY3Rpb24uIFdoaWxlIGJyY21mbWFjIHN1cHBvcnRzIFVTQiwgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGRhdGEgcGF0aHMgKFJYL1RYKSBhbmQgY2ZnODAyMTEgY2FsbGJhY2tzIHJlcXVpcmVzIHBhc3NpbmcgYSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIGhhbmRzaGFrZSwgd2hpY2ggaXMgaW1wb3NzaWJsZSB0byBhY2hpZXZlIHZpYSByYW5kb20gVVNCIGdhZGdldCBmdXp6aW5nIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmEwZGMxZDhjMTgxNmUzOTllMzJlNWE4OGM4NzdiNTQ3ODI1ZWZmMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDU6NTA6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDBiNTVkNDQ1ODk1ZjIuLjdkN2U1ZWNlY2QyMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCkBAIC0zOTg5LDEyICYjNDM7Mzk4OSwxMCBAQCBzdGF0aWMgaW50IGJyY21mX2NmZzgwMjExX3NjaGVkX3NjYW5fc3RvcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYnJjbWZfZGVsYXkodTMyIG1zKQogewotCWlmIChtcyAmbHQ7IDEwMDAgLyBIWikgewotCQljb25kX3Jlc2NoZWQoKTsKLQkJbWRlbGF5KG1zKTsKLQl9IGVsc2UgewomIzQzOwlpZiAobXMgJmx0Oz0gMjApCiYjNDM7CQl1c2xlZXBfcmFuZ2UobXMgKiAxMDAwLCBtcyAqIDEwMDAgJiM0MzsgMTAwMCk7CiYjNDM7CWVsc2UKIAkJbXNsZWVwKG1zKTsKLQl9CiB9CiAKIHN0YXRpYyBzMzIgYnJjbWZfY29uZmlnX3dvd2xfcGF0dGVybihzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgdTggY21kWzRdLApAQCAtNDM2NCw2ICYjNDM7NDM2MiwxMDQgQEAgYnJjbWZfcG1rc2FfdjNfb3Aoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBjZmc4MDIxMV9wbWtzYSAqcG1rc2EsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGJyY21mX3Bta3NhX3YyX29wIC0gdXBkYXRlIGZpcm13YXJlIFBNS1NBIGNhY2hlIHVzaW5nIHRoZSBWMiBsaXN0IGludGVyZmFjZS4KJiM0MzsgKgomIzQzOyAqIFYyIGZpcm13YXJlIChyZXZpc2lvbiAxMikgdXNlcyBhIHZlcnNpb25lZCBmbGF0IGxpc3Qgc3RydWN0dXJlCiYjNDM7ICogKGJyY21mX3Bta19saXN0X3YyX2xlKSByYXRoZXIgdGhhbiB0aGUgcGVyLWVudHJ5IG9wZXJhdGlvbiBtb2RlbCBvZiBWMy4KJiM0MzsgKiBFYWNoIGVudHJ5IGNhcnJpZXMgRklMUy1zcGVjaWZpYyBmaWVsZHMgKHJhdyBQTUsgbWF0ZXJpYWwsIFNTSUQsIGFuZAomIzQzOyAqIGZpbHNfY2FjaGVfaWQpIGluIGFkZGl0aW9uIHRvIHRoZSBiYXNpYyBCU1NJRCAmIzQzOyBQTUtJRCBwYWlyLCBlbmFibGluZwomIzQzOyAqIEZJTFMgZmFzdC1yb2FtaW5nIG9uIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBWMy4KJiM0MzsgKgomIzQzOyAqIEBjZmc6ICAgZHJpdmVyIGNvbmZpZyBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgc2hhZG93IFYyIFBNS1NBIGxpc3QKJiM0MzsgKiBAaWZwOiAgIGludGVyZmFjZSBwb2ludGVyCiYjNDM7ICogQHBta3NhOiB0aGUgUE1LU0EgdG8gYWRkL3JlbW92ZSwgb3IgTlVMTCBmb3IgYSBmbHVzaAomIzQzOyAqIEBhbGl2ZTogdHJ1ZSA9IGFkZCAoc2V0IHRpbWVfbGVmdCB0byBuby1leHBpcnkpLCBmYWxzZSA9IHJlbW92ZS9mbHVzaAomIzQzOyAqLwomIzQzO3N0YXRpYyBzMzIKJiM0MzticmNtZl9wbWtzYV92Ml9vcChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKJiM0MzsJCSAgc3RydWN0IGNmZzgwMjExX3Bta3NhICpwbWtzYSwgYm9vbCBhbGl2ZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBjZmctJmd0O3B1YjsKJiM0MzsJc3RydWN0IGJyY21mX3Bta19saXN0X3YyX2xlICpsaXN0ID0gJmFtcDtjZmctJmd0O3Bta19saXN0X3YyOwomIzQzOwlzdHJ1Y3QgYnJjbWZfcG1rc2FfdjIgKnBtayA9IGxpc3QtJmd0O3BtazsKJiM0MzsJdTMyIG5wbWsgPSBsZTE2X3RvX2NwdShsaXN0LSZndDtsZW5ndGgpOwomIzQzOwl1MzIgaTsKJiM0MzsKJiM0MzsJLyogbnBtayBoZXJlIHN0b3JlcyB0aGUgY291bnQgb2YgdmFsaWQgZW50cmllcywgcmVwdXJwb3NpbmcgdGhlCiYjNDM7CSAqIGxlbmd0aCBmaWVsZCBvZiB0aGUgc2hhZG93IGxpc3QgYXMgYSBjb3VudGVyLiAgV2UgY29udmVydCB0bwomIzQzOwkgKiB0aGUgd2lyZSBmb3JtYXQgKGJ5dGUgbGVuZ3RoKSB3aGVuIHNlbmRpbmcgdG8gZmlybXdhcmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXBta3NhKSB7CiYjNDM7CQkvKiBGbHVzaDogemVybyB0aGUgc2hhZG93IGxpc3QgYW5kIHB1c2ggYW4gZW1wdHkgVjIgbGlzdC4gKi8KJiM0MzsJCW1lbXNldChsaXN0LCAwLCBzaXplb2YoKmxpc3QpKTsKJiM0MzsJCWdvdG8gc2VuZDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoYWxpdmUpIHsKJiM0MzsJCS8qIFNldDogc2VhcmNoIGZvciBleGlzdGluZyBCU1NJRCBtYXRjaCBmaXJzdC4gKi8KJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBucG1rOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAoIW1lbWNtcChwbWtzYS0mZ3Q7YnNzaWQsIHBta1tpXS5ic3NpZCwgRVRIX0FMRU4pKQomIzQzOwkJCQlicmVhazsKJiM0MzsKJiM0MzsJCWlmIChpICZndDs9IEJSQ01GX01BWFBNS0lEKSB7CiYjNDM7CQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtWMiBQTUtTQSBjYWNoZSBmdWxsICglZCBlbnRyaWVzKVxuJiMzNDssCiYjNDM7CQkJCSBucG1rKTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW1lbXNldCgmYW1wO3Bta1tpXSwgMCwgc2l6ZW9mKHBta1tpXSkpOwomIzQzOwkJcG1rW2ldLmxlbmd0aCA9IGNwdV90b19sZTE2KHNpemVvZihzdHJ1Y3QgYnJjbWZfcG1rc2FfdjIpKTsKJiM0MzsJCWlmIChwbWtzYS0mZ3Q7YnNzaWQpCiYjNDM7CQkJbWVtY3B5KHBta1tpXS5ic3NpZCwgcG1rc2EtJmd0O2Jzc2lkLCBFVEhfQUxFTik7CiYjNDM7CQlpZiAocG1rc2EtJmd0O3Bta2lkKQomIzQzOwkJCW1lbWNweShwbWtbaV0ucG1raWQsIHBta3NhLSZndDtwbWtpZCwgV0xBTl9QTUtJRF9MRU4pOwomIzQzOwkJaWYgKHBta3NhLSZndDtwbWsgJmFtcDsmYW1wOyBwbWtzYS0mZ3Q7cG1rX2xlbiAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcG1rc2EtJmd0O3Bta19sZW4gJmx0Oz0gV0xBTl9QTUtfTEVOX1NVSVRFX0JfMTkyKSB7CiYjNDM7CQkJbWVtY3B5KHBta1tpXS5wbWssIHBta3NhLSZndDtwbWssIHBta3NhLSZndDtwbWtfbGVuKTsKJiM0MzsJCQlwbWtbaV0ucG1rX2xlbiA9IGNwdV90b19sZTE2KHBta3NhLSZndDtwbWtfbGVuKTsKJiM0MzsJCX0KJiM0MzsJCWlmIChwbWtzYS0mZ3Q7c3NpZCAmYW1wOyZhbXA7IHBta3NhLSZndDtzc2lkX2xlbikgewomIzQzOwkJCW1lbWNweShwbWtbaV0uc3NpZC5TU0lELCBwbWtzYS0mZ3Q7c3NpZCwgcG1rc2EtJmd0O3NzaWRfbGVuKTsKJiM0MzsJCQlwbWtbaV0uc3NpZC5TU0lEX2xlbiA9IHBta3NhLSZndDtzc2lkX2xlbjsKJiM0MzsJCX0KJiM0MzsJCWlmIChwbWtzYS0mZ3Q7Zmlsc19jYWNoZV9pZCkKJiM0MzsJCQlwbWtbaV0uZmlsc19jYWNoZV9pZCA9ICpwbWtzYS0mZ3Q7Zmlsc19jYWNoZV9pZDsKJiM0MzsKJiM0MzsJCWlmIChpID09IG5wbWspCiYjNDM7CQkJbnBtayYjNDM7JiM0Mzs7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQkvKiBEZWxldGU6IGZpbmQgYnkgQlNTSUQgYW5kIGNvbXBhY3QgdGhlIGxpc3QuICovCiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgbnBtazsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKCFtZW1jbXAocG1rc2EtJmd0O2Jzc2lkLCBwbWtbaV0uYnNzaWQsIEVUSF9BTEVOKSkKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlpZiAoaSAmZ3Q7PSBucG1rKSB7CiYjNDM7CQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtWMiBQTUtTQSBlbnRyeSBub3QgZm91bmRcbiYjMzQ7KTsKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWZvciAoOyBpICZsdDsgbnBtayAtIDE7IGkmIzQzOyYjNDM7KQomIzQzOwkJCW1lbWNweSgmYW1wO3Bta1tpXSwgJmFtcDtwbWtbaSAmIzQzOyAxXSwgc2l6ZW9mKHBta1tpXSkpOwomIzQzOwkJbWVtc2V0KCZhbXA7cG1rW25wbWsgLSAxXSwgMCwgc2l6ZW9mKHBta1tucG1rIC0gMV0pKTsKJiM0MzsJCW5wbWstLTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBVcGRhdGUgc2hhZG93IGVudHJ5IGNvdW50IChzdG9yZWQgaW4gbGVuZ3RoIGZpZWxkKS4gKi8KJiM0MzsJbGlzdC0mZ3Q7bGVuZ3RoID0gY3B1X3RvX2xlMTYobnBtayk7CiYjNDM7CiYjNDM7c2VuZDoKJiM0MzsJLyogQnVpbGQgdGhlIHdpcmUtZm9ybWF0IGhlYWRlciBhbmQgc2VuZCB0aGUgZnVsbCBsaXN0IHRvIGZpcm13YXJlLgomIzQzOwkgKiB2ZXJzaW9uIGFuZCBsZW5ndGggb24gdGhlIHdpcmUgcmVmbGVjdCB0aGUgYWN0dWFsIGJ5dGUgZm9vdHByaW50LgomIzQzOwkgKi8KJiM0MzsJbGlzdC0mZ3Q7dmVyc2lvbiA9IGNwdV90b19sZTE2KEJSQ01GX1BNS1NBX1ZFUl8yKTsKJiM0MzsJbGlzdC0mZ3Q7bGVuZ3RoICA9IGNwdV90b19sZTE2KG9mZnNldG9mKHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSwgcG1rKSAmIzQzOwomIzQzOwkJCQkgICBucG1rICogc2l6ZW9mKHN0cnVjdCBicmNtZl9wbWtzYV92MikpOwomIzQzOwomIzQzOwlyZXR1cm4gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDtwbWtpZF9pbmZvJiMzNDssIGxpc3QsIHNpemVvZigqbGlzdCkpOwomIzQzO30KJiM0MzsKJiM0MzsKIHN0YXRpYyBfX3VzZWQgczMyCiBicmNtZl91cGRhdGVfcG1rbGlzdChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcCkKIHsKQEAgLTQ0MDIsOCAmIzQzOzQ0OTgsOCBAQCBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2Eoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAKIAlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTUtJRF9WMykpCiAJCXJldHVybiBicmNtZl9wbWtzYV92M19vcChpZnAsIHBta3NhLCB0cnVlKTsKLQotCS8qIFRPRE86IGltcGxlbWVudCBQTUtJRF9WMiAqLwomIzQzOwlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTUtJRF9WMikpCiYjNDM7CQlyZXR1cm4gYnJjbWZfcG1rc2FfdjJfb3AoY2ZnLCBpZnAsIHBta3NhLCB0cnVlKTsKIAogCW5wbWsgPSBsZTMyX3RvX2NwdShjZmctJmd0O3Bta19saXN0Lm5wbWspOwogCWZvciAoaSA9IDA7IGkgJmx0OyBucG1rOyBpJiM0MzsmIzQzOykKQEAgLTQ0NDYsOCAmIzQzOzQ1NDIsOCBAQCBicmNtZl9jZmc4MDIxMV9kZWxfcG1rc2Eoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAKIAlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTUtJRF9WMykpCiAJCXJldHVybiBicmNtZl9wbWtzYV92M19vcChpZnAsIHBta3NhLCBmYWxzZSk7Ci0KLQkvKiBUT0RPOiBpbXBsZW1lbnQgUE1LSURfVjIgKi8KJiM0MzsJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjIpKQomIzQzOwkJcmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBwbWtzYSwgZmFsc2UpOwogCiAJbnBtayA9IGxlMzJfdG9fY3B1KGNmZy0mZ3Q7cG1rX2xpc3QubnBtayk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG5wbWs7IGkmIzQzOyYjNDM7KQpAQCAtNDQ4Nyw4ICYjNDM7NDU4Myw4IEBAIGJyY21mX2NmZzgwMjExX2ZsdXNoX3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogCiAJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjMpKQogCQlyZXR1cm4gYnJjbWZfcG1rc2FfdjNfb3AoaWZwLCBOVUxMLCBmYWxzZSk7Ci0KLQkvKiBUT0RPOiBpbXBsZW1lbnQgUE1LSURfVjIgKi8KJiM0MzsJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjIpKQomIzQzOwkJcmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBOVUxMLCBmYWxzZSk7CiAKIAltZW1zZXQoJmFtcDtjZmctJmd0O3Bta19saXN0LCAwLCBzaXplb2YoY2ZnLSZndDtwbWtfbGlzdCkpOwogCWVyciA9IGJyY21mX3VwZGF0ZV9wbWtsaXN0KGNmZywgaWZwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgKaW5kZXggNmNlYjMwMTQyOTA1NC4uNTcxNjdmZGU1YmExNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgKQEAgLTM0NCw3ICYjNDM7MzQ0LDggQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX3dvd2wgewogICogQGJzc19saXN0OiBic3NfbGlzdCBob2xkaW5nIHNjYW5uZWQgYXAgaW5mb3JtYXRpb24uCiAgKiBAYnNzX2luZm86IGJzcyBpbmZvcm1hdGlvbiBmb3IgY2ZnODAyMTEgbGF5ZXIuCiAgKiBAY29ubl9pbmZvOiBhc3NvY2lhdGlvbiBpbmZvLgotICogQHBta19saXN0OiB3cGEyIHBtayBsaXN0LgomIzQzOyAqIEBwbWtfbGlzdDogd3BhMiBwbWsgbGlzdCAoVjEgZmlybXdhcmUpLgomIzQzOyAqIEBwbWtfbGlzdF92Mjogd3BhMiBwbWsgbGlzdCBmb3IgVjIgZmlybXdhcmUgKEZJTFMtY2FwYWJsZSwgZmlybXdhcmUgcmV2IDEyKS4KICAqIEBzY2FuX3N0YXR1czogc2NhbiBhY3Rpdml0eSBvbiB0aGUgZG9uZ2xlLgogICogQHB1YjogY29tbW9uIGRyaXZlciBpbmZvcm1hdGlvbi4KICAqIEBjaGFubmVsOiBjdXJyZW50IGNoYW5uZWwuCkBAIC0zNzYsNiAmIzQzOzM3Nyw3IEBAIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHsKIAlzdHJ1Y3Qgd2xfY2ZnODAyMTFfYnNzX2luZm8gKmJzc19pbmZvOwogCXN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvOwogCXN0cnVjdCBicmNtZl9wbWtfbGlzdF9sZSBwbWtfbGlzdDsKJiM0MzsJc3RydWN0IGJyY21mX3Bta19saXN0X3YyX2xlIHBta19saXN0X3YyOwogCXVuc2lnbmVkIGxvbmcgc2Nhbl9zdGF0dXM7CiAJc3RydWN0IGJyY21mX3B1YiAqcHViOwogCXUzMiBjaGFubmVsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMKaW5kZXggZWMxNzA2NDc4MDBkYS4uNjczZjAwMDAzODljYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jCkBAIC00MzEsNDUgJiM0Mzs0MzEsNTEgQEAgdm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAluZXRpZl9yeChza2IpOwogfQogCiYjNDM7c3RydWN0IGJyY21mX3JhZGlvdGFwX2luZm8gewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciBoZHI7CiYjNDM7CXM4IGRibV9hbnRzaWduYWw7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKIHZvaWQgYnJjbWZfbmV0aWZfbW9uX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCWlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX01PTklUT1JfRk1UX1JBRElPVEFQKSkgewotCQkvKiBEbyBub3RoaW5nICovCiYjNDM7CQkvKiBGaXJtd2FyZSBhbHJlYWR5IHByb3ZpZGVkIGEgZnVsbCByYWRpb3RhcCBoZWFkZXI7IGRvIG5vdGhpbmcgKi8KIAl9IGVsc2UgaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTU9OSVRPUl9GTVRfSFdfUlhfSERSKSkgewogCQlzdHJ1Y3Qgd2xjX2QxMXJ4aGRyICp3bGNfcnhoZHIgPSAoc3RydWN0IHdsY19kMTFyeGhkciAqKXNrYi0mZ3Q7ZGF0YTsKLQkJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwOwomIzQzOwkJc3RydWN0IGJyY21mX3JhZGlvdGFwX2luZm8gKnJ0YXA7CiAJCXVuc2lnbmVkIGludCBvZmZzZXQ7CiAJCXUxNiBSeFN0YXR1czE7CiYjNDM7CQlzOCByc3NpOwogCiAJCVJ4U3RhdHVzMSA9IGxlMTZfdG9fY3B1KHdsY19yeGhkci0mZ3Q7cnhoZHIuUnhTdGF0dXMxKTsKJiM0MzsJCXJzc2kgPSB3bGNfcnhoZHItJmd0O3Jzc2k7CiAKIAkJb2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCB3bGNfZDExcnhoZHIpOwotCQkvKiBNQUMgaW5zZXJ0cyAyIHBhZCBieXRlcyBmb3IgYTQgaGVhZGVycyBvciBRb1Mgb3IgQS1NU0RVCi0JCSAqIHN1YmZyYW1lcwotCQkgKi8KJiM0MzsJCS8qIE1BQyBpbnNlcnRzIDIgcGFkIGJ5dGVzIGZvciBhNCBoZWFkZXJzIG9yIFFvUyBvciBBLU1TRFUgc3ViZnJhbWVzICovCiAJCWlmIChSeFN0YXR1czEgJmFtcDsgUlhTX1BCUFJFUykKIAkJCW9mZnNldCAmIzQzOz0gMjsKIAkJb2Zmc2V0ICYjNDM7PSBEMTFfUEhZX0hEUl9MRU47CiAKIAkJc2tiX3B1bGwoc2tiLCBvZmZzZXQpOwogCi0JCS8qIFRPRE86IHVzZSBSWCBoZWFkZXIgdG8gZmlsbCBzb21lIHJhZGlvdGFwIGRhdGEgKi8KLQkJcmFkaW90YXAgPSBza2JfcHVzaChza2IsIHNpemVvZigqcmFkaW90YXApKTsKLQkJbWVtc2V0KHJhZGlvdGFwLCAwLCBzaXplb2YoKnJhZGlvdGFwKSk7Ci0JCXJhZGlvdGFwLSZndDtpdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YoKnJhZGlvdGFwKSk7CiYjNDM7CQkvKiBJbnNlcnQgb3VyIHJhZGlvdGFwIGhlYWRlciB3aXRoIFJTU0kgZGF0YSAqLwomIzQzOwkJcnRhcCA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpydGFwKSk7CiYjNDM7CQltZW1zZXQocnRhcCwgMCwgc2l6ZW9mKCpydGFwKSk7CiYjNDM7CQlydGFwLSZndDtoZHIuaXRfbGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKCpydGFwKSk7CiYjNDM7CQlydGFwLSZndDtoZHIuaXRfcHJlc2VudCA9IGNwdV90b19sZTMyKDEgJmx0OyZsdDsgSUVFRTgwMjExX1JBRElPVEFQX0RCTV9BTlRTSUdOQUwpOwomIzQzOwkJcnRhcC0mZ3Q7ZGJtX2FudHNpZ25hbCA9IHJzc2k7CiAKLQkJLyogVE9ETzogNCBieXRlcyB3aXRoIHJlY2VpdmUgc3RhdHVzPyAqLwotCQlza2ItJmd0O2xlbiAtPSA0OwomIzQzOwkJLyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovCiYjNDM7CQlza2JfdHJpbShza2IsIHNrYi0mZ3Q7bGVuIC0gNCk7CiAJfSBlbHNlIHsKIAkJc3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwOwogCi0JCS8qIFRPRE86IHVzZSBSWCBzdGF0dXMgdG8gZmlsbCBzb21lIHJhZGlvdGFwIGRhdGEgKi8KIAkJcmFkaW90YXAgPSBza2JfcHVzaChza2IsIHNpemVvZigqcmFkaW90YXApKTsKIAkJbWVtc2V0KHJhZGlvdGFwLCAwLCBzaXplb2YoKnJhZGlvdGFwKSk7CiAJCXJhZGlvdGFwLSZndDtpdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YoKnJhZGlvdGFwKSk7CiAKLQkJLyogVE9ETzogNCBieXRlcyB3aXRoIHJlY2VpdmUgc3RhdHVzPyAqLwotCQlza2ItJmd0O2xlbiAtPSA0OwomIzQzOwkJLyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovCiYjNDM7CQlza2JfdHJpbShza2IsIHNrYi0mZ3Q7bGVuIC0gNCk7CiAJfQogCiAJc2tiLSZndDtkZXYgPSBpZnAtJmd0O25kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jCmluZGV4IDM1Y2JjZWEwYWJjOWEuLmI5YzUxODkzOWY1MDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jCkBAIC0xODIsMTAgJiM0MzsxODIsOCBAQCBzdGF0aWMgdm9pZCBicmNtZl9mbG93cmluZ19ibG9jayhzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3csIHUxNiBmbG93aWQsCiAJc3RydWN0IGJyY21mX2J1cyAqYnVzX2lmOwogCXN0cnVjdCBicmNtZl9wdWIgKmRydnI7CiAJc3RydWN0IGJyY21mX2lmICppZnA7Ci0JYm9vbCBjdXJyZW50bHlfYmxvY2tlZDsKLQlpbnQgaTsKLQl1OCBpZmlkeDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwl1OCBpZmlkeDsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7Zmxvdy0mZ3Q7YmxvY2tfbG9jaywgZmxhZ3MpOwogCkBAIC0xOTQsMjMgJiM0MzsxOTIsNTQgQEAgc3RhdGljIHZvaWQgYnJjbWZfZmxvd3JpbmdfYmxvY2soc3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93LCB1MTYgZmxvd2lkLAogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Zmxvdy0mZ3Q7YmxvY2tfbG9jaywgZmxhZ3MpOwogCQlyZXR1cm47CiAJfQotCWlmaWR4ID0gYnJjbWZfZmxvd3JpbmdfaWZpZHhfZ2V0KGZsb3csIGZsb3dpZCk7CiAKLQljdXJyZW50bHlfYmxvY2tlZCA9IGZhbHNlOwotCWZvciAoaSA9IDA7IGkgJmx0OyBmbG93LSZndDtucm9mcmluZ3M7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmICgoZmxvdy0mZ3Q7cmluZ3NbaV0pICZhbXA7JmFtcDsgKGkgIT0gZmxvd2lkKSkgewotCQkJcmluZyA9IGZsb3ctJmd0O3JpbmdzW2ldOwotCQkJaWYgKChyaW5nLSZndDtzdGF0dXMgPT0gUklOR19PUEVOKSAmYW1wOyZhbXA7Ci0JCQkgICAgKGJyY21mX2Zsb3dyaW5nX2lmaWR4X2dldChmbG93LCBpKSA9PSBpZmlkeCkpIHsKLQkJCQlpZiAocmluZy0mZ3Q7YmxvY2tlZCkgewotCQkJCQljdXJyZW50bHlfYmxvY2tlZCA9IHRydWU7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQkJCX0KJiM0MzsJaWZpZHggPSBicmNtZl9mbG93cmluZ19pZmlkeF9nZXQoZmxvdywgZmxvd2lkKTsKJiM0MzsJcmluZy0mZ3Q7YmxvY2tlZCA9IGJsb2NrZWQ7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE1haW50YWluIHRoZSBwZXItaW50ZXJmYWNlIGJsb2NrZWQtcmluZyBjb3VudGVyLgomIzQzOwkgKgomIzQzOwkgKiBXZSB1c2UgcmluZy0mZ3Q7Y291bnRlZF9pbl9ibG9ja2VkIHJhdGhlciB0aGFuIGNoZWNraW5nCiYjNDM7CSAqIHJpbmctJmd0O3N0YXR1cyBoZXJlLiAgQSByaW5nIHRoYXQgYmVjYW1lIGJsb2NrZWQgd2hpbGUKJiM0MzsJICogUklOR19PUEVOIGhhcyBhbHJlYWR5IGJlZW4gY291bnRlZCAoY291bnRlZF9pbl9ibG9ja2VkPXRydWUpLgomIzQzOwkgKiBCeSB0aGUgdGltZSB3ZSB1bmJsb2NrIGl0IGR1cmluZyB0ZWFyZG93biBpdHMgc3RhdHVzIG1heSBoYXZlCiYjNDM7CSAqIGFkdmFuY2VkIHRvIFJJTkdfQ0xPU0lORywgc28gdGVzdGluZyBSSU5HX09QRU4gd291bGQgd3JvbmdseQomIzQzOwkgKiBza2lwIHRoZSBhdG9taWNfZGVjIGFuZCBwZXJtYW5lbnRseSBsZWFrIHRoZSBjb3VudGVyLCBsZWF2aW5nCiYjNDM7CSAqIHRoZSBuZXRpZiBxdWV1ZSBzdG9wcGVkIGZvcmV2ZXIuCiYjNDM7CSAqCiYjNDM7CSAqIFJ1bGU6CiYjNDM7CSAqICAgYmxvY2sgdHJhbnNpdGlvbiAgKHVuYmxvY2tlZOKGkmJsb2NrZWQpOiBjb3VudCBvbmx5IGlmIFJJTkdfT1BFTiwKJiM0MzsJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgY291bnRlZF9pbl9ibG9ja2VkLgomIzQzOwkgKiAgIHVuYmxvY2sgdHJhbnNpdGlvbiAoYmxvY2tlZOKGknVuYmxvY2tlZCk6IGRlY3JlbWVudCBvbmx5IGlmIHdlCiYjNDM7CSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBjb3VudGVkIGl0LAomIzQzOwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyIGNvdW50ZWRfaW5fYmxvY2tlZC4KJiM0MzsJICovCiYjNDM7CWlmIChibG9ja2VkKSB7CiYjNDM7CQlpZiAocmluZy0mZ3Q7c3RhdHVzID09IFJJTkdfT1BFTikgewomIzQzOwkJCWF0b21pY19pbmMoJmFtcDtmbG93LSZndDtpZl9ibG9ja2VkX2NudFtpZmlkeF0pOwomIzQzOwkJCXJpbmctJmd0O2NvdW50ZWRfaW5fYmxvY2tlZCA9IHRydWU7CiAJCX0KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChyaW5nLSZndDtjb3VudGVkX2luX2Jsb2NrZWQpIHsKJiM0MzsJCQlhdG9taWNfZGVjKCZhbXA7Zmxvdy0mZ3Q7aWZfYmxvY2tlZF9jbnRbaWZpZHhdKTsKJiM0MzsJCQlyaW5nLSZndDtjb3VudGVkX2luX2Jsb2NrZWQgPSBmYWxzZTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBPbmx5IHByb3BhZ2F0ZSBhIG5ldGlmIHF1ZXVlLXN0b3Avd2FrZSB3aGVuIHRoZSBpbnRlcmZhY2UKJiM0MzsJICogdHJhbnNpdGlvbnMgYmV0d2VlbiBmdWxseS1jbGVhciBhbmQgYXQtbGVhc3Qtb25lLWJsb2NrZWQuCiYjNDM7CSAqIFJlYWRpbmcgdGhlIGF0b21pYyBpcyBzYWZlIGhlcmU6IHdlIGhvbGQgYmxvY2tfbG9jaywgc28gbm8KJiM0MzsJICogY29uY3VycmVudCBicmNtZl9mbG93cmluZ19ibG9jaygpIGNhbGwgY2FuIHJhY2UgdGhlIHVwZGF0ZQomIzQzOwkgKiB3ZSBqdXN0IG1hZGUgYWJvdmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoYmxvY2tlZCAmYW1wOyZhbXA7IGF0b21pY19yZWFkKCZhbXA7Zmxvdy0mZ3Q7aWZfYmxvY2tlZF9jbnRbaWZpZHhdKSAhPSAxKSB7CiYjNDM7CQkvKiBBbm90aGVyIHJpbmcgd2FzIGFscmVhZHkgYmxvY2tlZDsgbm8gbmV3IHF1ZXVlLXN0b3AgbmVlZGVkLiAqLwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Zsb3ctJmd0O2Jsb2NrX2xvY2ssIGZsYWdzKTsKJiM0MzsJCXJldHVybjsKIAl9Ci0JZmxvdy0mZ3Q7cmluZ3NbZmxvd2lkXS0mZ3Q7YmxvY2tlZCA9IGJsb2NrZWQ7Ci0JaWYgKGN1cnJlbnRseV9ibG9ja2VkKSB7CiYjNDM7CWlmICghYmxvY2tlZCAmYW1wOyZhbXA7IGF0b21pY19yZWFkKCZhbXA7Zmxvdy0mZ3Q7aWZfYmxvY2tlZF9jbnRbaWZpZHhdKSAhPSAwKSB7CiYjNDM7CQkvKiBNb3JlIHJpbmdzIHN0aWxsIGJsb2NrZWQ7IGRvIG5vdCB3YWtlIHRoZSBxdWV1ZSB5ZXQuICovCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtmbG93LSZndDtibG9ja19sb2NrLCBmbGFncyk7CiAJCXJldHVybjsKIAl9CkBAIC0zNjcsNiAmIzQzOzM5Niw4IEBAIHN0cnVjdCBicmNtZl9mbG93cmluZyAqYnJjbWZfZmxvd3JpbmdfYXR0YWNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IG5yb2ZyaW5ncykKIAkJc3Bpbl9sb2NrX2luaXQoJmFtcDtmbG93LSZndDtibG9ja19sb2NrKTsKIAkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoZmxvdy0mZ3Q7YWRkcl9tb2RlKTsgaSYjNDM7JiM0MzspCiAJCQlmbG93LSZndDthZGRyX21vZGVbaV0gPSBBRERSX0lORElSRUNUOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoZmxvdy0mZ3Q7aWZfYmxvY2tlZF9jbnQpOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlhdG9taWNfc2V0KCZhbXA7Zmxvdy0mZ3Q7aWZfYmxvY2tlZF9jbnRbaV0sIDApOwogCQlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShmbG93LSZndDtoYXNoKTsgaSYjNDM7JiM0MzspCiAJCQlmbG93LSZndDtoYXNoW2ldLmlmaWR4ID0gQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRklEWDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oCmluZGV4IGYzZDUxMWY5YTNjOWEuLmFmZGVhOGIzZjhhYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oCkBAIC01LDYgJiM0Mzs1LDggQEAKICNpZm5kZWYgQlJDTUZNQUNfRkxPV1JJTkdfSAogI2RlZmluZSBCUkNNRk1BQ19GTE9XUklOR19ICiAKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvYXRvbWljLmgmZ3Q7CiYjNDM7CiAKICNkZWZpbmUgQlJDTUZfRkxPV1JJTkdfSEFTSFNJWkUJCTUxMgkJLyogaGFzIHRvIGJlIDJeeCAqLwogI2RlZmluZSBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lECTB4RkZGRkZGRkYKQEAgLTI2LDYgJiM0MzsyOCwxNiBAQCBlbnVtIHJpbmdfc3RhdHVzIHsKIHN0cnVjdCBicmNtZl9mbG93cmluZ19yaW5nIHsKIAl1MTYgaGFzaF9pZDsKIAlib29sIGJsb2NrZWQ7CiYjNDM7CS8qCiYjNDM7CSAqIFRydWUgd2hlbiB0aGlzIHJpbmcgaGFzIGJlZW4gY291bnRlZCBpbiB0aGUgcGVyLWludGVyZmFjZQomIzQzOwkgKiBpZl9ibG9ja2VkX2NudFtdLiAgU2V0IHRvIHRydWUgd2hlbmV2ZXIgdGhlIHJpbmcgdHJhbnNpdGlvbnMKJiM0MzsJICogdW5ibG9ja2Vk4oaSYmxvY2tlZCB3aGlsZSBSSU5HX09QRU47IGNsZWFyZWQgb24gdGhlIG1hdGNoaW5nCiYjNDM7CSAqIGJsb2NrZWTihpJ1bmJsb2NrZWQgdHJhbnNpdGlvbi4gIE5lZWRlZCBzbyB0aGF0IGEgcmluZyB0aGF0CiYjNDM7CSAqIGJlY29tZXMgYmxvY2tlZCB3aGlsZSBSSU5HX09QRU4gYW5kIGlzIGxhdGVyIG1vdmVkIHRvCiYjNDM7CSAqIFJJTkdfQ0xPU0lORyBzdGlsbCBjb3JyZWN0bHkgZGVjcmVtZW50cyB0aGUgY291bnRlciBhdAomIzQzOwkgKiB0ZWFyZG93biwgZXZlbiB0aG91Z2ggaXRzIHN0YXR1cyBpcyBubyBsb25nZXIgUklOR19PUEVOLgomIzQzOwkgKi8KJiM0MzsJYm9vbCBjb3VudGVkX2luX2Jsb2NrZWQ7CiAJZW51bSByaW5nX3N0YXR1cyBzdGF0dXM7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCBza2JsaXN0OwogfTsKQEAgLTQwLDYgJiM0Mzs1MiwxMiBAQCBzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgewogCXN0cnVjdCBicmNtZl9mbG93cmluZ19oYXNoIGhhc2hbQlJDTUZfRkxPV1JJTkdfSEFTSFNJWkVdOwogCXNwaW5sb2NrX3QgYmxvY2tfbG9jazsKIAllbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGVbQlJDTUZfTUFYX0lGU107CiYjNDM7CS8qIFBlci1pbnRlcmZhY2UgY291bnQgb2YgY3VycmVudGx5IGJsb2NrZWQgb3BlbiByaW5ncy4KJiM0MzsJICogTWFpbnRhaW5lZCBhdG9taWNhbGx5IHNvIGJyY21mX2Zsb3dyaW5nX2Jsb2NrKCkgY2FuIGNoZWNrCiYjNDM7CSAqIHdoZXRoZXIgYW55IHNpYmxpbmcgcmluZyBpcyBhbHJlYWR5IGJsb2NrZWQgaW4gTygxKSB3aXRob3V0CiYjNDM7CSAqIGhvbGRpbmcgYmxvY2tfbG9jayBhY3Jvc3MgYW4gTyhucm9mcmluZ3MpIHdhbGsuCiYjNDM7CSAqLwomIzQzOwlhdG9taWNfdCBpZl9ibG9ja2VkX2NudFtCUkNNRl9NQVhfSUZTXTsKIAl1MTYgbnJvZnJpbmdzOwogCWJvb2wgdGRsc19hY3RpdmU7CiAJc3RydWN0IGJyY21mX2Zsb3dyaW5nX3RkbHNfZW50cnkgKnRkbHNfZW50cnk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jCmluZGV4IGE0M2YxYTM4YjBlMzAuLjNjMWNhMzU1ZThlZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jCkBAIC0xMDM3LDcgJiM0MzsxMDM3LDkgQEAgaW50IGJyY21mX2Z3c19tYWNkZXNjX2luZGljYXRlKHN0cnVjdCBicmNtZl9md3NfaW5mbyAqZndzLCB1OCB0eXBlLCB1OCAqZGF0YSkKIAkJfSBlbHNlIHsKIAkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDt1c2UgZXhpc3RpbmdcbiYjMzQ7KTsKIAkJCVdBUk5fT04oZW50cnktJmd0O21hY19oYW5kbGUgIT0gbWFjX2hhbmRsZSk7Ci0JCQkvKiBUT0RPOiB3aGF0IHNob3VsZCB3ZSBkbyBoZXJlOiBjb250aW51ZSwgcmVpbml0LCAuLiAqLwomIzQzOwkJCS8qIEZpcm13YXJlIHJlLXNlbnQgQUREIGZvciB0aGUgc2FtZSBNQUMgaGFuZGxlLgomIzQzOwkJCSAqIE5vIGFjdGlvbiByZXF1aXJlZDsgaXQgaXMgYSBzYWZlIG5vLW9wLgomIzQzOwkJCSAqLwogCQl9CiAJfQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCmluZGV4IGJhMWNlMTU1MmUwZjQuLjhkYjYxNjcwNzJkYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTQ4LDcgJiM0Mzs0OCwxOSBAQAogI2RlZmluZSBNU0dCVUZfVFlQRV9MUEJLX0RNQVhGRVIJCTB4MTMKICNkZWZpbmUgTVNHQlVGX1RZUEVfTFBCS19ETUFYRkVSX0NNUExUCQkweDE0CiAKLSNkZWZpbmUgTlJfVFhfUEtUSURTCQkJCTIwNDgKJiM0MzsvKgomIzQzOyAqIE5SX1RYX1BLVElEUzogbnVtYmVyIG9mIHNpbXVsdGFuZW91c2x5IGluLWZsaWdodCBUWCBwYWNrZXQgSURzLgomIzQzOyAqIEVhY2ggb3V0c3RhbmRpbmcgVFggZnJhbWUgY29uc3VtZXMgb25lIElEIHVudGlsIHRoZSBkb25nbGUgcmV0dXJucwomIzQzOyAqIGEgVFgtc3RhdHVzIGNvbXBsZXRpb24uICBUaGUgb3JpZ2luYWwgMjA0OC1lbnRyeSBwb29sIGV4aGF1c3RlZCB1bmRlcgomIzQzOyAqIOKJpTQgY29uY3VycmVudCBpcGVyZjMgc3RyZWFtcyBvbiBXaS1GaSA1LzYgKDgwMi4xMWFjL2F4KSBkZXZpY2VzLAomIzQzOyAqIGNhdXNpbmcgJiMzNDtObyBQS1RJRCBhdmFpbGFibGUmIzM0OyBkcm9wcyBhbmQgVENQIHJldHJhbnNtaXRzLiAgNDA5NiBnaXZlcwomIzQzOyAqIGhlYWRyb29tIGZvciBoaWdoLWFnZ3JlZ2F0aW9uIHNjZW5hcmlvcyB3aGlsZSBzdGlsbCBmaXR0aW5nIGluIGEKJiM0MzsgKiBtb2Rlc3QgYW1vdW50IG9mIGhvc3QgbWVtb3J5ICh+NDggS0IgZm9yIHRoZSBwa3RpZCB0YWJsZSBlbnRyaWVzKS4KJiM0MzsgKgomIzQzOyAqIE5SX1JYX1BLVElEUzogUlggcG9zdCBidWZmZXJzIHByZS1hbGxvY2F0ZWQgdG8gdGhlIGRvbmdsZS4gIDEwMjQgaXMKJiM0MzsgKiBzdWZmaWNpZW50IGZvciBjdXJyZW50IGhhcmR3YXJlIFJYIHJpbmcgZGVwdGhzOyBsZWF2ZSB1bmNoYW5nZWQuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBOUl9UWF9QS1RJRFMJCQkJNDA5NgogI2RlZmluZSBOUl9SWF9QS1RJRFMJCQkJMTAyNAogCiAjZGVmaW5lIEJSQ01GX0lPQ1RMX1JFUV9QS1RJRAkJCTB4RkZGRQpAQCAtNjQsOCAmIzQzOzc2LDI5IEBACiAjZGVmaW5lIEJSQ01GX01TR0JVRl9QS1RfRkxBR1NfRlJBTUVfTUFTSwkweDA3CiAjZGVmaW5lIEJSQ01GX01TR0JVRl9QS1RfRkxBR1NfUFJJT19TSElGVAk1CiAKLSNkZWZpbmUgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDEJCTMyCi0jZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQyCQk5NgomIzQzOy8qCiYjNDM7ICogVFggZmx1c2ggLyBkb29yYmVsbC1yaW5nIHRocmVzaG9sZHMuCiYjNDM7ICoKJiM0MzsgKiBDTlQxIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBmcmFtZXMgdG8gYWNjdW11bGF0ZSBpbiB0aGUgY29tbW9ucmluZwomIzQzOyAqIGJlZm9yZSB0aGUgZmlyc3QgaW50ZXJtZWRpYXRlIHdyaXRlX2NvbXBsZXRlKCkgKGRvb3JiZWxsIHJpbmcpIGlzCiYjNDM7ICogaXNzdWVkIG1pZC1iYXRjaC4gIENOVDIgaXMgdGhlIGhhcmQgZmx1c2ggaW50ZXJ2YWw6IGFmdGVyIHRoaXMgbWFueQomIzQzOyAqIGZyYW1lcyBoYXZlIGJlZW4gd3JpdHRlbiBzaW5jZSB0aGUgbGFzdCBmbHVzaCwgd2UgdW5jb25kaXRpb25hbGx5CiYjNDM7ICogcmluZyB0aGUgYmVsbCBhbmQgcmVzZXQgdGhlIGNvdW50ZXIuCiYjNDM7ICoKJiM0MzsgKiBSYWlzaW5nIGJvdGggZnJvbSB0aGUgb3JpZ2luYWwgMzIvOTYgdG8gNjQvMTI4IGRvdWJsZXMgdGhlIGF2ZXJhZ2UKJiM0MzsgKiBudW1iZXIgb2YgVFggZGVzY3JpcHRvcnMgY29tbWl0dGVkIHBlciBNTUlPIHdyaXRlLCBoYWx2aW5nIHRoZSBQQ0llCiYjNDM7ICogZG9vcmJlbGwgcmF0ZSBvbiBzdXN0YWluZWQgdGhyb3VnaHB1dCB3b3JrbG9hZHMuICBUaGUgdHJhZGVvZmYgaXMgYQomIzQzOyAqIG1hcmdpbmFsbHkgaGlnaGVyIHdvcnN0LWNhc2UgbGF0ZW5jeSBmb3IgdGhlIGxhc3QgZnJhbWVzIGluIGEgYnVyc3QsCiYjNDM7ICogd2hpY2ggaW4gcHJhY3RpY2UgaXMgaGlkZGVuIGJ5IHRoZSB0aW1lIHRoZSBkb25nbGUgRE1BIGVuZ2luZSBkcmFpbnMKJiM0MzsgKiB0aGUgcHJldmlvdXMgYmF0Y2guCiYjNDM7ICoKJiM0MzsgKiBUUklDS0xFX1RYV09SS0VSX1RIUlMgZ292ZXJucyBob3cgb2Z0ZW4gYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoKQomIzQzOyAqIGZvcmNlcyBhIHdvcmtxdWV1ZSBzY2hlZHVsZSB3aGVuIHRoZSBxdWV1ZSBkZXB0aCBpcyBub3QgYSBtdWx0aXBsZSBvZgomIzQzOyAqIHRoaXMgdmFsdWUuICBLZWVwaW5nIGl0IGF0IGhhbGYgb2YgQ05UMSAoMzIpIHByZXNlcnZlcyByZXNwb25zaXZlbmVzcwomIzQzOyAqIGZvciBsb3ctcmF0ZSBmbG93cyAoZS5nLiBWb0lQLCBJQ01QKSB0aGF0IG5ldmVyIGFjY3VtdWxhdGUgNjQgZnJhbWVzLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDEJCTY0CiYjNDM7I2RlZmluZSBCUkNNRl9NU0dCVUZfVFhfRkxVU0hfQ05UMgkJMTI4CiAKICNkZWZpbmUgQlJDTUZfTVNHQlVGX0RFTEFZX1RYV09SS0VSX1RIUlMJOTYKICNkZWZpbmUgQlJDTUZfTVNHQlVGX1RSSUNLTEVfVFhXT1JLRVJfVEhSUwkzMgpAQCAtNzg3LDEwICYjNDM7ODIwLDMwIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsCiB7CiAJc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7CiAKLQlzZXRfYml0KGZsb3dpZCwgbXNnYnVmLSZndDtmbG93X21hcCk7CiYjNDM7CS8qCiYjNDM7CSAqIElmIHRoZSBiaXQgd2FzIGFscmVhZHkgc2V0LCBhIHR4Zmxvd193b3JrIGl0ZW0gaXMgYWxyZWFkeQomIzQzOwkgKiBxdWV1ZWQgb3IgcnVubmluZyBmb3IgdGhpcyByaW5nLiAgSW4gdGhhdCBjYXNlIHRoZSBleGlzdGluZwomIzQzOwkgKiB3b3JrZXIgd2lsbCBkcmFpbiBvdXIgZnJlc2hseSBlbnF1ZXVlZCBmcmFtZSB3aGVuIGl0IHJ1bnMsCiYjNDM7CSAqIHNvIHdlIG9ubHkgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIHdvcmsgaXRlbSB3aGVuIHRoZQomIzQzOwkgKiBmb3JjZSBmbGFnIGlzIHNldCBvciB0aGUgcmluZyBpcyBiZWxvdyB0aGUgZGVsYXkgdGhyZXNob2xkLgomIzQzOwkgKgomIzQzOwkgKiBJZiB0aGUgYml0IHdhcyBOT1Qgc2V0ICh0ZXN0X2FuZF9zZXRfYml0IHJldHVybnMgZmFsc2UpLCBubwomIzQzOwkgKiB3b3JrZXIgaXMgcGVuZGluZyBmb3IgdGhpcyByaW5nIGF0IGFsbC4gIFdlIE1VU1Qgc2NoZWR1bGUKJiM0MzsJICogb25lIHVuY29uZGl0aW9uYWxseSwgb3RoZXJ3aXNlIHRoZSBmcmFtZSB3ZSBqdXN0IGVucXVldWVkCiYjNDM7CSAqIHdpbGwgc2l0IGluIHRoZSBmbG93cmluZyB1bnNlbnQgdW50aWwgc29tZSB1bnJlbGF0ZWQgZXZlbnQKJiM0MzsJICogdHJpZ2dlcnMgdGhlIHdvcmtxdWV1ZSDigJQgY2F1c2luZyBzaWxlbnQgVFggc3RhbGxzIHVuZGVyCiYjNDM7CSAqIGhpZ2ggbG9hZCB3aGVuIG91dHN0YW5kaW5nX3R4ICZndDs9IERFTEFZX1RYV09SS0VSX1RIUlMuCiYjNDM7CSAqLwomIzQzOwlpZiAoIXRlc3RfYW5kX3NldF9iaXQoZmxvd2lkLCBtc2didWYtJmd0O2Zsb3dfbWFwKSkgewomIzQzOwkJLyogQml0IHdhcyBjbGVhcjogbm8gd29ya2VyIHBlbmRpbmcsIGFsd2F5cyBzY2hlZHVsZS4gKi8KJiM0MzsJCXF1ZXVlX3dvcmsobXNnYnVmLSZndDt0eGZsb3dfd3EsICZhbXA7bXNnYnVmLSZndDt0eGZsb3dfd29yayk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBCaXQgd2FzIGFscmVhZHkgc2V0OiB3b3JrZXIgcGVuZGluZywgYXBwbHkgY29hbGVzY2luZyBoZXVyaXN0aWMuICovCiAJY29tbW9ucmluZyA9IG1zZ2J1Zi0mZ3Q7Zmxvd3JpbmdzW2Zsb3dpZF07Ci0JaWYgKChmb3JjZSkgfHwgKGF0b21pY19yZWFkKCZhbXA7Y29tbW9ucmluZy0mZ3Q7b3V0c3RhbmRpbmdfdHgpICZsdDsKLQkJCUJSQ01GX01TR0JVRl9ERUxBWV9UWFdPUktFUl9USFJTKSkKJiM0MzsJaWYgKGZvcmNlIHx8IChhdG9taWNfcmVhZCgmYW1wO2NvbW1vbnJpbmctJmd0O291dHN0YW5kaW5nX3R4KSAmbHQ7CiYjNDM7CQkgICAgICBCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSUykpCiAJCXF1ZXVlX3dvcmsobXNnYnVmLSZndDt0eGZsb3dfd3EsICZhbXA7bXNnYnVmLSZndDt0eGZsb3dfd29yayk7CiAKIAlyZXR1cm4gMDsKQEAgLTE2MjEsMTEgJiM0MzsxNjc0LDExIEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpCiAJZG8gewogCQlicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7CiAJCWlmIChtc2didWYtJmd0O21heF9yeGJ1ZnBvc3QgIT0gbXNnYnVmLSZndDtyeGJ1ZnBvc3QpCi0JCQltc2xlZXAoMTApOwomIzQzOwkJCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKIAkJZWxzZQogCQkJYnJlYWs7CiAJCWNvdW50JiM0MzsmIzQzOzsKLQl9IHdoaWxlIChjb3VudCAmbHQ7IDEwKTsKJiM0MzsJfSB3aGlsZSAoY291bnQgJmx0OyAxMDApOwogCWJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7CiAJYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jCmluZGV4IDEzNjYyYWE0YjRlYTYuLjkzMzhhNWZhYTI2MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYwpAQCAtMjY4LDYgJiM0MzsyNjgsMjcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9maXJtd2FyZV9tYXBwaW5nIGJyY21mX3BjaWVfZnduYW1lc1tdID0gewogCiAjZGVmaW5lIEJSQ01GX1BDSUVfTUJEQVRBX1RJTUVPVVQJCW1zZWNzX3RvX2ppZmZpZXMoMjAwMCkKIAomIzQzOy8qCiYjNDM7ICogSDJEIG1haWxib3ggcG9sbCB0aW1pbmcgcGFyYW1ldGVycy4KJiM0MzsgKgomIzQzOyAqIFRoZSBkb25nbGUgdHlwaWNhbGx5IGNsZWFycyB0aGUgSDJEIG1haWxib3ggcmVnaXN0ZXIgd2l0aGluIGEgZmV3CiYjNDM7ICogaHVuZHJlZCBtaWNyb3NlY29uZHMgYWZ0ZXIgdGhlIGRvb3JiZWxsIGludGVycnVwdCBmaXJlcy4gIFRoZQomIzQzOyAqIG9yaWdpbmFsIGNvZGUgdXNlZCBtc2xlZXAoMTApICogMTAwIGl0ZXJhdGlvbnMsIG1lYW5pbmcgdGhlCiYjNDM7ICogbWluaW11bSBvYnNlcnZhYmxlIGxhdGVuY3kgd2FzIDEwbXMgZXZlbiB3aGVuIHRoZSBkb25nbGUgd2FzIGZhc3QuCiYjNDM7ICoKJiM0MzsgKiBXZSBpbnN0ZWFkIHN0YXJ0IHdpdGggYSBzaG9ydCBzbGVlcCBhbmQgZG91YmxlIGl0IGVhY2ggaXRlcmF0aW9uCiYjNDM7ICogKGV4cG9uZW50aWFsIGJhY2tvZmYpIHVwIHRvIEJSQ01GX1BDSUVfTUJfUE9MTF9NQVhfVVMsIHN0YXlpbmcKJiM0MzsgKiB3aXRoaW4gdGhlIHNhbWUgMS1zZWNvbmQgYWJzb2x1dGUgdGltZW91dC4KJiM0MzsgKgomIzQzOyAqIE1JTl9VUyAvIElOSVRJQUxfTUFYX1VTIDogdXNsZWVwX3JhbmdlIGJvdW5kcyBmb3IgdGhlIGZpcnN0IGl0ZXJhdGlvbi4KJiM0MzsgKiBNQVhfVVMgICAgIDogY2FwIG9uIHRoZSBwZXItaXRlcmF0aW9uIHNsZWVwICjCtXMpLgomIzQzOyAqIFRJTUVPVVRfVVMgOiB0b3RhbCBidWRnZXQgYmVmb3JlIGdpdmluZyB1cCAoMSBzZWNvbmQpLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgQlJDTUZfUENJRV9NQl9QT0xMX01JTl9VUwkJNDAKJiM0MzsjZGVmaW5lIEJSQ01GX1BDSUVfTUJfUE9MTF9JTklUSUFMX01BWF9VUwk1MAomIzQzOyNkZWZpbmUgQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUwkJNTAwMAomIzQzOyNkZWZpbmUgQlJDTUZfUENJRV9NQl9QT0xMX1RJTUVPVVRfVVMJCTEwMDAwMDAKJiM0MzsKICNkZWZpbmUgQlJDTUZfUENJRV9DRkdSRUdfU1RBVFVTX0NNRAkJMHg0CiAjZGVmaW5lIEJSQ01GX1BDSUVfQ0ZHUkVHX1BNX0NTUgkJMHg0QwogI2RlZmluZSBCUkNNRl9QQ0lFX0NGR1JFR19NU0lfQ0FQCQkweDU4CkBAIC03NjYsNyAmIzQzOzc4Nyw4IEBAIGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8sIHUzMiBodG9kX21iX2RhdGEpCiAJc3RydWN0IGJyY21mX2NvcmUgKmNvcmU7CiAJdTMyIGFkZHI7CiAJdTMyIGN1cl9odG9kX21iX2RhdGE7Ci0JdTMyIGk7CiYjNDM7CXUzMiBlbGFwc2VkX3VzID0gMDsKJiM0MzsJdTMyIHNsZWVwX3VzID0gQlJDTUZfUENJRV9NQl9QT0xMX0lOSVRJQUxfTUFYX1VTOwogCiAJc2hhcmVkID0gJmFtcDtkZXZpbmZvLSZndDtzaGFyZWQ7CiAJYWRkciA9IHNoYXJlZC0mZ3Q7aHRvZF9tYl9kYXRhX2FkZHI7CkBAIC03NzYsMTIgJiM0Mzs3OTgsNDAgQEAgYnJjbWZfcGNpZV9zZW5kX21iX2RhdGEoc3RydWN0IGJyY21mX3BjaWVkZXZfaW5mbyAqZGV2aW5mbywgdTMyIGh0b2RfbWJfZGF0YSkKIAkJYnJjbWZfZGJnKFBDSUUsICYjMzQ7TUIgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBwZW5kaW5nIDB4JTA0eFxuJiMzNDssCiAJCQkgIGN1cl9odG9kX21iX2RhdGEpOwogCi0JaSA9IDA7CiYjNDM7CS8qCiYjNDM7CSAqIFdhaXQgZm9yIHRoZSBkb25nbGUgdG8gY29uc3VtZSB0aGUgcHJldmlvdXMgSDJEIG1haWxib3ggbWVzc2FnZS4KJiM0MzsJICoKJiM0MzsJICogVGhlcmUgaXMgbm8gaW50ZXJydXB0IHRoYXQgc2lnbmFscyB3aGVuIHRoZSBkb25nbGUgY2xlYXJzIHRoaXMKJiM0MzsJICogcmVnaXN0ZXIsIHNvIHBvbGxpbmcgaXMgdW5hdm9pZGFibGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkCiYjNDM7CSAqIG1zbGVlcCgxMCkgcGVyIGl0ZXJhdGlvbiwgaW5jdXJyaW5nIGF0IGxlYXN0IDEwbXMgb2YgbGF0ZW5jeQomIzQzOwkgKiBldmVuIHdoZW4gdGhlIGRvbmdsZSByZXNwb25kZWQgaW4gbWljcm9zZWNvbmRzLgomIzQzOwkgKgomIzQzOwkgKiBXZSB1c2UgdXNsZWVwX3JhbmdlKCkgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGluc3RlYWQ6CiYjNDM7CSAqICAgLSBGaXJzdCBpdGVyYXRpb24gc2xlZXBzIH41MMK1cyAoZmFzdCBwYXRoIGZvciByZXNwb25zaXZlIGRvbmdsZSkuCiYjNDM7CSAqICAgLSBFYWNoIHN1YnNlcXVlbnQgaXRlcmF0aW9uIGRvdWJsZXMgdGhlIHNsZWVwLCBjYXBwZWQgYXQgNW1zLAomIzQzOwkgKiAgICAgc28gbG9uZyB3YWl0cyBzdGlsbCB5aWVsZCB0aGUgQ1BVIHdpdGhvdXQgYnVzeS1zcGlubmluZy4KJiM0MzsJICogICAtIFRvdGFsIHRpbWVvdXQgbWF0Y2hlcyB0aGUgb3JpZ2luYWwgMS1zZWNvbmQgbGltaXQuCiYjNDM7CSAqICAgLSBXZSBiYWlsIGVhcmx5IGlmIHRoZSBkZXZpY2UgaGFzIGdvbmUgZG93biBzbyB0aGF0IGEgZGVhZAomIzQzOwkgKiAgICAgZG9uZ2xlIGRvZXMgbm90IGhvbGQgdGhlIGNhbGxlciBmb3IgYSBmdWxsIHNlY29uZC4KJiM0MzsJICovCiAJd2hpbGUgKGN1cl9odG9kX21iX2RhdGEgIT0gMCkgewotCQltc2xlZXAoMTApOwotCQlpJiM0MzsmIzQzOzsKLQkJaWYgKGkgJmd0OyAxMDApCiYjNDM7CQlpZiAoZGV2aW5mby0mZ3Q7c3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9ET1dOKSB7CiYjNDM7CQkJYnJjbWZfZGJnKFBDSUUsICYjMzQ7RGV2aWNlIGRvd24sIGFib3J0aW5nIE1CIHNlbmRcbiYjMzQ7KTsKIAkJCXJldHVybiAtRUlPOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGVsYXBzZWRfdXMgJmd0Oz0gQlJDTUZfUENJRV9NQl9QT0xMX1RJTUVPVVRfVVMpIHsKJiM0MzsJCQlicmNtZl9lcnIoJiMzNDtUaW1lb3V0IHdhaXRpbmcgZm9yIEgyRCBNQiBzbG90IGFmdGVyICV1IHVzXG4mIzM0OywKJiM0MzsJCQkJICBlbGFwc2VkX3VzKTsKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXVzbGVlcF9yYW5nZShCUkNNRl9QQ0lFX01CX1BPTExfTUlOX1VTLCBzbGVlcF91cyk7CiYjNDM7CQllbGFwc2VkX3VzICYjNDM7PSBzbGVlcF91czsKJiM0MzsKJiM0MzsJCS8qIEV4cG9uZW50aWFsIGJhY2tvZmYsIGNhcHBlZCBhdCBCUkNNRl9QQ0lFX01CX1BPTExfTUFYX1VTICovCiYjNDM7CQlzbGVlcF91cyA9IG1pbihzbGVlcF91cyAqIDIsICh1MzIpQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUyk7CiYjNDM7CiAJCWN1cl9odG9kX21iX2RhdGEgPSBicmNtZl9wY2llX3JlYWRfdGNtMzIoZGV2aW5mbywgYWRkcik7CiAJfQogCkBAIC0xMDAxLDEwICYjNDM7MTA1MSwxMCBAQCBzdGF0aWMgdm9pZCBicmNtZl9wY2llX3JlbGVhc2VfaXJxKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8pCiAJZnJlZV9pcnEocGRldi0mZ3Q7aXJxLCBkZXZpbmZvKTsKIAlwY2lfZGlzYWJsZV9tc2kocGRldik7CiAKLQltc2xlZXAoNTApOwomIzQzOwl1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7CiAJY291bnQgPSAwOwotCXdoaWxlICgoZGV2aW5mby0mZ3Q7aW5faXJxKSAmYW1wOyZhbXA7IChjb3VudCAmbHQ7IDIwKSkgewotCQltc2xlZXAoNTApOwomIzQzOwl3aGlsZSAoKGRldmluZm8tJmd0O2luX2lycSkgJmFtcDsmYW1wOyAoY291bnQgJmx0OyAxMDAwKSkgewomIzQzOwkJdXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApOwogCQljb3VudCYjNDM7JiM0Mzs7CiAJfQogCWlmIChkZXZpbmZvLSZndDtpbl9pcnEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYwppbmRleCBiNzI1YzY0ZTViNWM2Li40ZTQxNDQwM2Q3NDcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMKQEAgLTE2NDUsMzcgJiM0MzsxNjQ1LDQzIEBAIHN0YXRpYyB1OCBicmNtZl9zZGlvX3J4Z2xvbShzdHJ1Y3QgYnJjbWZfc2RpbyAqYnVzLCB1OCByeHNlcSkKIAogCQlyZF9uZXcuc2VxX251bSA9IHJ4c2VxOwogCQlyZF9uZXcubGVuID0gZGxlbjsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBDbGFpbSB0aGUgaG9zdCBvbmNlIGZvciB0aGUgZW50aXJlIGhlYWRlci1wYXJzaW5nIHBoYXNlLgomIzQzOwkJICoKJiM0MzsJCSAqIGJyY21mX3NkaW9faGRwYXJzZSgpIG9wZXJhdGVzIG9uIGRhdGEgYWxyZWFkeSBpbiBob3N0CiYjNDM7CQkgKiBtZW1vcnksIGJ1dCBtYXkgY2FsbCBicmNtZl9zZGlvX3J4ZmFpbCgpIG9uIGVycm9yLCB3aGljaAomIzQzOwkJICogd3JpdGVzIFNESU8gRnVuYzEgcmVnaXN0ZXJzIGFuZCB0aGVyZWZvcmUgcmVxdWlyZXMgdGhlCiYjNDM7CQkgKiBob3N0IHRvIGJlIGNsYWltZWQuCiYjNDM7CQkgKgomIzQzOwkJICogc2tiX3B1bGwoKSBhbmQgdGhlIG51bSBjb3VudGVyIGFyZSBwdXJlIGhvc3QtbWVtb3J5CiYjNDM7CQkgKiBvcGVyYXRpb25zOyBrZWVwIHRoZW0gb3V0c2lkZSB0aGUgbG9jayB0byBtaW5pbWlzZSB0aGUKJiM0MzsJCSAqIGhvbGQgdGltZS4gIEJvdGggaGRwYXJzZSBjYWxscyAoc3VwZXJmcmFtZSBoZWFkZXIgYW5kCiYjNDM7CQkgKiBlYWNoIHN1YmZyYW1lIGhlYWRlcikgYXJlIGdyb3VwZWQgdW5kZXIgYSBzaW5nbGUgY2xhaW0vCiYjNDM7CQkgKiByZWxlYXNlLCByZXBsYWNpbmcgdGhlIG9yaWdpbmFsIE4mIzQzOzEgc2VwYXJhdGUgcGFpcnMuCiYjNDM7CQkgKi8KIAkJc2Rpb19jbGFpbV9ob3N0KGJ1cy0mZ3Q7c2Rpb2Rldi0mZ3Q7ZnVuYzEpOwogCQllcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcGZpcnN0LSZndDtkYXRhLCAmYW1wO3JkX25ldywKIAkJCQkJICAgICBCUkNNRl9TRElPX0ZUX1NVUEVSKTsKLQkJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLSZndDtzZGlvZGV2LSZndDtmdW5jMSk7Ci0JCWJ1cy0mZ3Q7Y3VyX3JlYWQubGVuID0gcmRfbmV3Lmxlbl9ueHRmcm0gJmx0OyZsdDsgNDsKLQotCQkvKiBSZW1vdmUgc3VwZXJmcmFtZSBoZWFkZXIsIHJlbWVtYmVyIG9mZnNldCAqLwotCQlza2JfcHVsbChwZmlyc3QsIHJkX25ldy5kYXRfb2Zmc2V0KTsKLQkJbnVtID0gMDsKLQotCQkvKiBWYWxpZGF0ZSBhbGwgdGhlIHN1YmZyYW1lIGhlYWRlcnMgKi8KLQkJc2tiX3F1ZXVlX3dhbGsoJmFtcDtidXMtJmd0O2dsb20sIHBuZXh0KSB7Ci0JCQkvKiBsZWF2ZSB3aGVuIGludmFsaWQgc3ViZnJhbWUgaXMgZm91bmQgKi8KLQkJCWlmIChlcnJjb2RlKQotCQkJCWJyZWFrOwogCi0JCQlyZF9uZXcubGVuID0gcG5leHQtJmd0O2xlbjsKLQkJCXJkX25ldy5zZXFfbnVtID0gcnhzZXEmIzQzOyYjNDM7OwotCQkJc2Rpb19jbGFpbV9ob3N0KGJ1cy0mZ3Q7c2Rpb2Rldi0mZ3Q7ZnVuYzEpOwotCQkJZXJyY29kZSA9IGJyY21mX3NkaW9faGRwYXJzZShidXMsIHBuZXh0LSZndDtkYXRhLCAmYW1wO3JkX25ldywKLQkJCQkJCSAgICAgQlJDTUZfU0RJT19GVF9TVUIpOwotCQkJc2Rpb19yZWxlYXNlX2hvc3QoYnVzLSZndDtzZGlvZGV2LSZndDtmdW5jMSk7Ci0JCQlicmNtZl9kYmdfaGV4X2R1bXAoQlJDTUZfR0xPTV9PTigpLAotCQkJCQkgICBwbmV4dC0mZ3Q7ZGF0YSwgMzIsICYjMzQ7c3ViZnJhbWU6XG4mIzM0Oyk7Ci0KLQkJCW51bSYjNDM7JiM0Mzs7CiYjNDM7CQkvKiBWYWxpZGF0ZSBhbGwgdGhlIHN1YmZyYW1lIGhlYWRlcnMgd2hpbGUgaG9zdCBpcyBjbGFpbWVkICovCiYjNDM7CQlpZiAoIWVycmNvZGUpIHsKJiM0MzsJCQlza2JfcXVldWVfd2FsaygmYW1wO2J1cy0mZ3Q7Z2xvbSwgcG5leHQpIHsKJiM0MzsJCQkJcmRfbmV3LmxlbiA9IHBuZXh0LSZndDtsZW47CiYjNDM7CQkJCXJkX25ldy5zZXFfbnVtID0gcnhzZXEmIzQzOyYjNDM7OwomIzQzOwkJCQllcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcG5leHQtJmd0O2RhdGEsCiYjNDM7CQkJCQkJCSAgICAgJmFtcDtyZF9uZXcsCiYjNDM7CQkJCQkJCSAgICAgQlJDTUZfU0RJT19GVF9TVUIpOwomIzQzOwkJCQlicmNtZl9kYmdfaGV4X2R1bXAoQlJDTUZfR0xPTV9PTigpLAomIzQzOwkJCQkJCSAgIHBuZXh0LSZndDtkYXRhLCAzMiwKJiM0MzsJCQkJCQkgICAmIzM0O3N1YmZyYW1lOlxuJiMzNDspOwomIzQzOwkJCQlpZiAoZXJyY29kZSkKJiM0MzsJCQkJCWJyZWFrOwomIzQzOwkJCX0KIAkJfQogCiAJCWlmIChlcnJjb2RlKSB7Ci0JCQkvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IgKi8KLQkJCXNkaW9fY2xhaW1faG9zdChidXMtJmd0O3NkaW9kZXYtJmd0O2Z1bmMxKTsKJiM0MzsJCQkvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IsIHN0aWxsIGhvbGRpbmcgdGhlIGhvc3QgKi8KIAkJCWJyY21mX3NkaW9fcnhmYWlsKGJ1cywgdHJ1ZSwgZmFsc2UpOwogCQkJYnVzLSZndDtzZGNudC5yeGdsb21mYWlsJiM0MzsmIzQzOzsKIAkJCWJyY21mX3NkaW9fZnJlZV9nbG9tKGJ1cyk7CkBAIC0xNjgzLDYgJiM0MzsxNjg5LDE0IEBAIHN0YXRpYyB1OCBicmNtZl9zZGlvX3J4Z2xvbShzdHJ1Y3QgYnJjbWZfc2RpbyAqYnVzLCB1OCByeHNlcSkKIAkJCWJ1cy0mZ3Q7Y3VyX3JlYWQubGVuID0gMDsKIAkJCXJldHVybiAwOwogCQl9CiYjNDM7CQlzZGlvX3JlbGVhc2VfaG9zdChidXMtJmd0O3NkaW9kZXYtJmd0O2Z1bmMxKTsKJiM0MzsKJiM0MzsJCS8qIEhvc3QgcmVsZWFzZWQ7IG5vdyBkbyB0aGUgcHVyZS1tZW1vcnkgYm9va2tlZXBpbmcgKi8KJiM0MzsJCWJ1cy0mZ3Q7Y3VyX3JlYWQubGVuID0gcmRfbmV3Lmxlbl9ueHRmcm0gJmx0OyZsdDsgNDsKJiM0MzsKJiM0MzsJCS8qIFJlbW92ZSBzdXBlcmZyYW1lIGhlYWRlciwgcmVtZW1iZXIgb2Zmc2V0ICovCiYjNDM7CQlza2JfcHVsbChwZmlyc3QsIHJkX25ldy5kYXRfb2Zmc2V0KTsKJiM0MzsJCW51bSA9IDA7CiAKIAkJLyogQmFzaWMgU0QgZnJhbWluZyBsb29rcyBvayAtIHByb2Nlc3MgZWFjaCBwYWNrZXQgKGhlYWRlcikgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuYwppbmRleCBmYzdhNWRkMmU1ZDg2Li4zZmQ4YmRiZDM1ZTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuYwpAQCAtNTE2LDEyICYjNDM7NTE2LDExIEBAIGludCBicmNtc19jX2FtcGR1X2FkZF9mcmFtZShzdHJ1Y3QgYnJjbXNfYW1wZHVfc2Vzc2lvbiAqc2Vzc2lvbiwKIAkJCXJldHVybiAtRU5PU1BDOwogCiAJCS8qCi0JCSAqIFdlIGFyZW4mIzM5O3QgcmVhbGx5IG91dCBvZiBzcGFjZSBpZiB0aGUgbmV3IGZyYW1lIGlzIG9mCi0JCSAqIGEgZGlmZmVyZW50IHByaW9yaXR5LCBidXQgd2Ugd2FudCB0aGUgc2FtZSBiZWhhdmlvdXIKLQkJICogc28gcmV0dXJuIC1FTk9TUEMgYW55d2F5LgotCQkgKgotCQkgKiBYWFg6IFRoZSBvbGQgQU1QRFUgY29kZSBkaWQgdGhpcywgYnV0IGlzIGl0IHJlYWxseQotCQkgKiBuZWNlc3Nhcnk/CiYjNDM7CQkgKiBJRUVFIDgwMi4xMW4gc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbGwgTVBEVXMgd2l0aGluIGFuCiYjNDM7CQkgKiBBLU1QRFUgYmVsb25nIHRvIHRoZSBzYW1lIFRJRCAoVHJhZmZpYyBJZGVudGlmaWVyKS4KJiM0MzsJCSAqIFNpbmNlIHByaW9yaXR5IG1hcHMgdG8gVElELCBhIGRpZmZlcmVudCBwcmlvcml0eSBtZWFucwomIzQzOwkJICogd2UgbXVzdCBjbG9zZSB0aGUgY3VycmVudCBhZ2dyZWdhdGUgYW5kIHN0YXJ0IGEgbmV3IG9uZSwKJiM0MzsJCSAqIHNvIHdlIHJldHVybiAtRU5PU1BDIGhlcmUuCiAJCSAqLwogCQlmaXJzdCA9IHNrYl9wZWVrKCZhbXA7c2Vzc2lvbi0mZ3Q7c2tiX2xpc3QpOwogCQlpZiAocC0mZ3Q7cHJpb3JpdHkgIT0gZmlyc3QtJmd0O3ByaW9yaXR5KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzMxNgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEwNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBicmNtODAyMTEgUGF0Y2ggZm9yIGJyY21mbWFjKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgYGJyY204MDIxMWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIGBicmNtZm1hY2AgYW5kIGBicmNtc21hY2AuIExldCYjMzk7cyBicmVhayBkb3duIHRoZSBpbXBsaWNhdGlvbnMuCgpGaXJzdCwgbG9va2luZyBhdCB0aGUgYGJyY21mbWFjL2NmZzgwMjExLmNgIGNoYW5nZXMsIHRoZSBgYnJjbWZfZGVsYXlgIG1vZGlmaWNhdGlvbnMgYXJlIGludGVyZXN0aW5nLiBTd2FwcGluZyBgbWRlbGF5YCBmb3IgYHVzbGVlcF9yYW5nZWAvYG1zbGVlcGAgc3VnZ2VzdHMgYW4gYXR0ZW1wdCB0byBiZSBtb3JlIHByZWNpc2Ugb3IgZmxleGlibGUgd2l0aCB0aW1pbmcsIGxpa2VseSBhaW1lZCBhdCBhdm9pZGluZyBwb3RlbnRpYWwgYnVzeS13YWl0aW5nIGlzc3VlcyBvciBpbXByb3ZpbmcgcG93ZXIgbWFuYWdlbWVudC4gVGhlIGFkZGl0aW9uIG9mIGBicmNtZl9wbWtzYV92Ml9vcGAgYW5kIGl0cyBpbnRlZ3JhdGlvbiB3aXRoIFBNS0lEIFYyIHN1cHBvcnQgaXMgZGVmaW5pdGVseSBzaWduaWZpY2FudCwgYW5kIHBvaW50cyB0byB0aGUgaW5jbHVzaW9uIG9mIEZJTFMtY2FwYWJsZSBmaXJtd2FyZSBpbnRlcmFjdGlvbnMuIFRoaXMgc3VnZ2VzdHMgYW4gZWZmb3J0IHRvIGFjY29tbW9kYXRlIG5ld2VyIHNlY3VyaXR5IHByb3RvY29scy4gQW5kIHRoZSBjaGFuZ2UgdG8gYGJyY21mX2NmZzgwMjExX3NldF9wbWtzYWAsIGBicmNtZl9jZmc4MDIxMV9kZWxfcG1rc2FgLCBgYnJjbWZfY2ZnODAyMTFfZmx1c2hfcG1rc2FgIG1lYW5zIHRoZSBuZXcgZmVhdHVyZSBpcyBmdWxseSBpbnRlZ3JhdGVkLgoKVGhlIGluY2x1c2lvbiBvZiBgcG1rX2xpc3RfdjJgIGluIHRoZSBgYnJjbWZfY2ZnODAyMTFfaW5mb2Agc3RydWN0IGluIGBjZmc4MDIxMS5oYCBjbGVhcmx5IGNvbXBsZW1lbnRzIHRoZSBQTUtJRCBWMiBpbXBsZW1lbnRhdGlvbi4KCkluIGBicmNtZm1hYy9jb3JlLmNgLCB0aGUgYWRkaXRpb24gb2YgYSByYWRpb3RhcCBoZWFkZXIgd2l0aCBSU1NJIGRhdGEgd2hlbiBgQlJDTUZfRkVBVF9NT05JVE9SX0ZNVF9IV19SWF9IRFJgIGlzIGVuYWJsZWQgbG9va3MgbGlrZSBhIGhlbHBmdWwgYWRkaXRpb24gZm9yIG1vbml0b3JpbmcgYW5kIGRlYnVnZ2luZywgYW5kIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIGludGVyZXN0aW5nIHRvIGxvb2sgYXQgaW4gbW9yZSBkZXRhaWwuCgpgYnJjbWZtYWMvZmxvd3JpbmcuY2AgYW5kIGBmbG93cmluZy5oYCBzaG93IG9wdGltaXphdGlvbiBpbiB0aGUgYmxvY2tpbmcgbG9naWMgd2l0aCBhIHBlci1pbnRlcmZhY2UgYmxvY2tlZC1yaW5nIGNvdW50ZXIsIHdoaWNoIHNob3VsZCBpbXByb3ZlIHBlcmZvcm1hbmNlLgoKVGhlIGNoYW5nZXMgaW4gYGJyY21mbWFjL2Z3c2lnbmFsLmNgIGFuZCBgYnJjbXNtYWMvYW1wZHUuY2Agc2VlbSBwdXJlbHkgY29zbWV0aWMsIGp1c3QgYWRkaW5nIG9yIHJlcGxhY2luZyBjb21tZW50cy4gTm90IHJlbGV2YW50IHRvIHRoZSBhbmFseXNpcy4KCmBicmNtZm1hYy9tc2didWYuY2Agc2VlcyBzb21lIHN1YnN0YW50aWFsIG1vZGlmaWNhdGlvbnMsIHdpdGggaW5jcmVhc2VzIGluIGBOUl9UWF9QS1RJRFNgLCBgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDFgLCBhbmQgYEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQyYC4gVGhpcyBoaW50cyBhdCBwb3RlbnRpYWxseSBoYW5kbGluZyBoaWdoZXIgdGhyb3VnaHB1dCBvciBhIGxhcmdlciBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb25zLiBUaGUgbG9naWMgY2hhbmdlIGluIGBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhYCBpcyBhbHNvIGludGVyZXN0aW5nOyBhbHdheXMgc2NoZWR1bGluZyBhIHdvcmtlciBzZWVtcyBwb3RlbnRpYWxseSBtb3JlIHJvYnVzdC4gU2ltaWxhcmx5LCB0aGUgdGltaW5nIGNoYW5nZXMgaW4gYGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2hgIHdpdGggdGhlIGluY3JlYXNlZCBsb29wIGNvdW50IGFuZCBgdXNsZWVwX3JhbmdlYCBzdWdnZXN0cyBzb21lIHJlZmluZW1lbnQgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZS4KClRoZSBwb2xsaW5nIGFkanVzdG1lbnRzIGluIGBicmNtZm1hYy9wY2llLmNgIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiBhbmQgdGhlIHRpbWluZyBpbXByb3ZlbWVudHMgaW4gYGJyY21mX3BjaWVfcmVsZWFzZV9pcnFgIGFyZSBmdXJ0aGVyIGV2aWRlbmNlIG9mIGFuIGVmZm9ydCB0byBvcHRpbWl6ZSBjb21tdW5pY2F0aW9uLCBzcGVjaWZpY2FsbHkgb24gUENJZS4KCkluIGBicmNtZm1hYy9zZGlvLmNgLCBtaW5pbWl6aW5nIGBzZGlvX2NsYWltX2hvc3RgIGhvbGQgdGltZSBpbiBgYnJjbWZfc2Rpb19yeGdsb21gIGFsc28gcG9pbnRzIHRvIHRyeWluZyB0byBzcGVlZCB0aGluZ3MgdXAgb3IgaW1wcm92ZSBjb25jdXJyZW5jeS4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBgYnJjbWZtYWNgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBhbHdheXMgcmFpc2VzIHNlY3VyaXR5IGNvbmNlcm5zLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCBmaXJtd2FyZSBvdmVyIFNESU8sIFBDSWUsIG9yIFVTQi4gR2l2ZW4gdGhhdCB0aGVyZSBhcmUgc2V2ZXJhbCBjb21tdW5pY2F0aW9ucyBwYXRocywgdGhlcmUgYXJlIG11bHRpcGxlIGF2ZW51ZXMgb2YgcG9zc2libGUgYXR0YWNrLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHN0cmF0ZWdpZXMuIEkga25vdyBJIGNhbiBlbXVsYXRlIFVTQiBpbiBRRU1VLiBCdXQgY2FuIEkgdXNlIHRoYXQgd2l0aCBgYnJjbWZtYWNgPyBgYnJjbWZtYWNgIGlzIGEgRnVsbE1BQyBkcml2ZXIgYW5kIHdvbiYjMzk7dCBpbnRlcmFjdCB3aXRoIGBtYWM4MDIxMV9od3NpbWAuIEkgbmVlZCBhY3R1YWwgQnJvYWRjb20gaGFyZHdhcmUgZm9yIHRoaXMgZHJpdmVyLgoKV2hhdCBhYm91dCBzeXprYWxsZXI/IEl0IGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBVU0IgcGFydCBvZiBgYnJjbWZtYWNgIGlzIHJlYWNoYWJsZSBvciBzdXBwb3J0ZWQuIEkgc2hvdWxkIHNlYXJjaCBmb3IgYGJyY21mX3VzYl9wcm9iZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AgdG8gc2VlLiBUaGUgcGF0Y2ggbWVudGlvbnMgbm8gY2hhbmdlcyB0byB0aGUgVVNCIHN1YnN5c3RlbSwgYnV0IEkgbmVlZCB0byBzZWUgd2hhdCYjMzk7cyBwb3NzaWJsZSB0byBmdXp6LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3VzYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTExNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9idXNfb3BzIGJyY21mX3VzYl9idXNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjExNzY6c3RhdGljIHZvaWQgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMihzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cdFx0XHRcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTIyND1icmNtZl91c2JfcHJlcGFyZV9md19yZXF1ZXN0KHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI0My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMjQ0OnN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVx0XHRcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDctXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA4Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMzQxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzQyOmJyY21mX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzNDMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE0NDM6XHRyZXQgPSBicmNtZl91c2JfcHJvYmVfY2IoZGV2aW5mbywgaWQtXHUwMDNlZHJpdmVyX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI0Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcdTAwMjZ1c2ItXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1NjU9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGJyY21mX3VzYmRydnIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU2Ni1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU2NzpcdC5wcm9iZSA9IGJyY21mX3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY4LVx0LmRpc2Nvbm5lY3QgPSBicmNtZl91c2JfZGlzY29ubmVjdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjUwMwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBgYnJjbWZtYWNgIERyaXZlciB3aXRoIFN5emthbGxlcjogSW5pdGlhbCBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyB0aGUgYGJyY21mbWFjYCBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBzaW5jZSBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIFVTQiBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgaG93ZXZlciwgaXMgdGhlIGZpcm13YXJlIGRlcGVuZGVuY3kuIEkgcmVjYWxsIHRoYXQgYGJyY21mbWFjYCByZWxpZXMgb24gZmlybXdhcmUgbG9hZGluZyB2aWEgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgLiBJZiB0aGF0IHByb2Nlc3MgZmFpbHMsIHRoZSBwcm9iZSB3aWxsIGxpa2VseSBiYWlsIG91dCBlYXJseSwgYW5kIEkmIzM5O2xsIG1pc3MgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBkcml2ZXImIzM5O3MgbG9naWMuCgpJIG5lZWQgdG8gcXVpY2tseSBjaGVjayBpZiBTeXprYWxsZXIgb2ZmZXJzIHRoZSBuZWNlc3NhcnkgZmlybXdhcmUgZm9yIGBicmNtZm1hY2Agb3IgaWYgdGhlcmUmIzM5O3MgYSB3YXkgdG8gYnlwYXNzIHRoaXMgcmVxdWlyZW1lbnQuIEFoLCByaWdodCwgYGJyY21mbWFjYCB1c2VzIGByZXF1ZXN0X2Zpcm13YXJlYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggU3l6a2FsbGVyIHNvbWV0aW1lcyBoYW5kbGVzIGJ5IGhhdmluZyB0aGUgZmlybXdhcmUgYWxyZWFkeSBiYWtlZCBpbnRvIHRoZSBpbWFnZS4gQnV0IHRoYXQgbWF5IGFsc28gZmFpbC4gSWYgdGhlIGZpcm13YXJlIGxvYWQgZmFpbHMsIGlzIGZ1enppbmcgZXZlbiB3b3J0aHdoaWxlPyBFdmVuIGlmIGEgbG90IG9mIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlPwoKTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGFyZWFzIG9mIGNoYW5nZSB0byBnZXQgYSBzZW5zZSBvZiB3aGVyZSB0byBmb2N1cy4gVGhlIGNvbW1pdCBsb2dzIHNob3cgY2hhbmdlcyBpbiBgY2ZnODAyMTEuY2AsIGBjb3JlLmNgLCBgZmxvd3JpbmcuY2AsIGBtc2didWYuY2AsIGBwY2llLmNgLCBhbmQgYHNkaW8uY2AuIFRoZSBgY2ZnODAyMTEuY2AgY2hhbmdlcyBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYW5kIG9wZXJhdGlvbnMsIGBjb3JlLmNgIGZvciB0aGUgcmVjZWl2ZSBwYXRoLCBhbmQgYGZsb3dyaW5nLmNgIGFuZCBgbXNnYnVmLmNgIHJlbGF0ZSB0byB0aGUgdHJhbnNtaXQgcGF0aC4gYHBjaWUuY2AgYW5kIGBzZGlvLmNgIGFyZSBQQ0llIGFuZCBTRElPIHNwZWNpZmljLiBXYWl0LiBgbXNnYnVmLmNgIGFuZCBgZmxvd3JpbmcuY2AgYXJlIHVzZWQgYnkgUENJZS4gQXJlIHRoZXkgYWxzbyB1c2VkIGJ5IFVTQj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHJvYWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2shCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfbXNnYnVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYz00MDk9dm9pZCBicmNtZl9mbG93cmluZ19kZXRhY2goc3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jLTQxOC1cdFx0aWYgKGZsb3ctXHUwMDNlcmluZ3NbZmxvd2lkXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jOjQxOTpcdFx0XHRicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKGRydnIsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYy00MjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmM9NDMyPXZvaWQgYnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3csIGludCBpZmlkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYy00NDUtXHRcdFx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmM6NDQ2Olx0XHRcdFx0YnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhkcnZyLCBmbG93aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDQ3LVx0XHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYz00NTQ9dm9pZCBicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3csIGludCBpZmlkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYy00ODQtXHRcdFx0aWYgKGZsb3ctXHUwMDNlcmluZ3NbZmxvd2lkXS1cdTAwM2VzdGF0dXMgPT0gUklOR19PUEVOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmM6NDg1Olx0XHRcdFx0YnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhkcnZyLCBmbG93aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDg2LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk0LSAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTU6ICogVFJJQ0tMRV9UWFdPUktFUl9USFJTIGdvdmVybnMgaG93IG9mdGVuIGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05Ni0gKiBmb3JjZXMgYSB3b3JrcXVldWUgc2NoZWR1bGUgd2hlbiB0aGUgcXVldWUgZGVwdGggaXMgbm90IGEgbXVsdGlwbGUgb2Zcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MjQ4PXN0cnVjdCBtc2didWZfZmxvd3JpbmdfZmx1c2hfcmVzcCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyNTQ6c3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI1NS1cdHN0cnVjdCBsaXN0X2hlYWQgcXVldWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyNjI6c3RydWN0IGJyY21mX21zZ2J1ZiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjYzLVx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjI5NzpcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICp0eF9wa3RpZHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6Mjk4Olx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnJ4X3BrdGlkcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0yOTktXHRzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3c7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozMTE6c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzEyLVx0YXRvbWljX3QgIGFsbG9jYXRlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjMxODpzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzE5LVx0dTMyIGFycmF5X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMyMS1cdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozMjI6XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkICphcnJheTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMjMtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzI1OnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzI4OnN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzI5OmJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMzAtXHRcdFx0IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMzEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjMzMjpcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWQgKmFycmF5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjMzMzpcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0zNTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjM1MjpicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjM1MzpcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zNTQtXHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkYXRhX29mZnNldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzU2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozNTc6XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkICphcnJheTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zNTgtXHR1MzIgY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTM5OT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQwMDpicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00MDEtXHRcdCAgICAgICB1MzIgaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDAzOlx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZCAqcGt0aWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDA0LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9NDI3PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDI4OmJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0Mjk6XHRcdFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00MzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQzMTpcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWQgKmFycmF5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQzMjpcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWQgKnBrdGlkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQzMy1cdHUzMiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQ1MzpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ1NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDU1LVx0aWYgKG1zZ2J1Zi1cdTAwM2VyeF9wa3RpZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDU2Olx0XHRicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ1Ny1cdFx0XHRcdFx0ICAgbXNnYnVmLVx1MDAzZXJ4X3BrdGlkcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDU4LVx0aWYgKG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDU5Olx0XHRicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ2MC1cdFx0XHRcdFx0ICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0NjQ6c3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ2NS1cdFx0XHRcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00NjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQ2NzpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00NjgtXHRzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUxMDpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dhaXQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTUxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTUxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1MTg6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FrZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTE5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUyNTpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MjYtXHRcdFx0XHQgICB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01Mjcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUyODpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MjktXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTM1LVx0bXNnYnVmLVx1MDAzZWN0bF9jb21wbGV0ZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1MzY6XHRlcnIgPSBicmNtZl9tc2didWZfdHhfaW9jdGwoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTUzNy1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTUzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1NDA6XHR0aW1lb3V0ID0gYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChtc2didWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU0MS1cdGlmICghdGltZW91dCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NTQ2Olx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU0Ny1cdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXJ4X3BrdGlkcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU2MzpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTY0LVx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU2NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NTY2Olx0cmV0dXJuIGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKGRydnIsIGlmaWR4LCBjbWQsIGJ1ZiwgbGVuLCBmd2Vycik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTY3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU3MDpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU3MS1cdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU3NjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhyZW9yZGVyKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTU4MD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU4MTpicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01ODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NTk3OnN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NTk4OmJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU5OS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NjAwOlx0c3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmsgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTYwMS1cdHVsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02MDUtXHRcdHdvcmsgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm1zZ2J1Zi1cdTAwM2V3b3JrX3F1ZXVlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjYwNjpcdFx0XHRcdFx0c3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0sIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02MDctXHRcdGxpc3RfZGVsKFx1MDAyNndvcmstXHUwMDNlcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz02MTU9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjYxNjpicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NjE3Olx0XHRcdFx0ICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTYxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY0OS1cdFx0YnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NjUwOlx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02NTEtXHRcdHJldHVybiBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lEO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02NzUtXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0ZhaWxlZCB0byB3cml0ZSBjb21tb25yaW5nXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2NzY6XHRcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY3Ny1cdFx0cmV0dXJuIEJSQ01GX0ZMT1dSSU5HX0lOVkFMSURfSUQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2ODQ6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNjg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2ODY6XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6Njg3Olx0c3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKmNyZWF0ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6Njg5Olx0bXNnYnVmID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBicmNtZl9tc2didWYsIGZsb3dyaW5nX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2OTE6XHR3aGlsZSAoKGNyZWF0ZSA9IGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsobXNnYnVmKSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2OTI6XHRcdGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKG1zZ2J1ZiwgY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02OTMtXHRcdGtmcmVlKGNyZWF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2OTg6c3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY5OS1cdFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03MDAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjcwMTpcdHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpjcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzAyLVx0c3RydWN0IGV0aGhkciAqZWggPSAoc3RydWN0IGV0aGhkciAqKShza2ItXHUwMDNlZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTczMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo3MzE6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzMyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzU4LVx0XHRza2Jfb3JwaGFuKHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NzU5Olx0XHRpZiAoYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKG1zZ2J1Zi1cdTAwM2VkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzYwLVx0XHRcdFx0XHQgICAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMsIHNrYiwgRVRIX0hMRU4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTc2Ny1cdFx0aWYgKCFyZXRfcHRyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NzY4Olx0XHRcdGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03NjktXHRcdFx0XHRcdCAgICAgICBtc2didWYtXHUwMDNldHhfcGt0aWRzLCBwa3RpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTgwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4MDU6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODA2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4MDc6XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODA4LVx0dTMyIGZsb3dpZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODEwOlx0bXNnYnVmID0gY29udGFpbmVyX29mKHdvcmtlciwgc3RydWN0IGJyY21mX21zZ2J1ZiwgdHhmbG93X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTgxMS1cdGZvcl9lYWNoX3NldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNlZmxvd19tYXAsIG1zZ2J1Zi1cdTAwM2VtYXhfZmxvd3JpbmdzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODEyLVx0XHRjbGVhcl9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNlZmxvd19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjgxMzpcdFx0YnJjbWZfbXNnYnVmX3R4Zmxvdyhtc2didWYsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODE0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODE4OnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODE5LVx0XHRcdFx0XHRib29sIGZvcmNlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODUzOnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg1NC1cdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4NTY6XHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODU3LVx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVx1MDAzZWZsb3c7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg2NC1cdGlmIChmbG93aWQgPT0gQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg2NTpcdFx0Zmxvd2lkID0gYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShtc2didWYsIGlmaWR4LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg2Ni1cdFx0aWYgKGZsb3dpZCA9PSBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lEKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg3NC1cdGZvcmNlID0gKChxdWV1ZV9jb3VudCAlIEJSQ01GX01TR0JVRl9UUklDS0xFX1RYV09SS0VSX1RIUlMpID09IDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg3NTpcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIGZvcmNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg4MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg4MjpicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODgzLVx0XHRcdFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg4NTpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04ODYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg5MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg5MjpicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04OTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg5NDpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04OTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTkwMD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjkwMTpicmNtZl9tc2didWZfYWRkX3RkbHNfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTAzOlx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVx1MDAzZXByb3RvLVx1MDAzZXBkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9OTA5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTEwOmJyY21mX21zZ2J1Zl9wcm9jZXNzX2lvY3RsX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkxMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MjE6XHRicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTIyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05MjQtXHRcdG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmLS07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTI1Olx0YnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTI2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9OTI5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTMwOmJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkzMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk0MS1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjk0MjpcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05NDMtXHRcdFx0XHQgICAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMsIGlkeCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5NTY6c3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk5MS1cdFx0cGt0bGVuID0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5OTI6XHRcdGlmIChicmNtZl9tc2didWZfYWxsb2NfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05OTMtXHRcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXJ4X3BrdGlkcywgc2tiLCAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMDM0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTAzNTpicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDM2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA0Mi1cdHdoaWxlIChmaWxsYnVmcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwNDM6XHRcdHJldGNvdW50ID0gYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChtc2didWYsIGZpbGxidWZzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDQ0LVx0XHRpZiAoIXJldGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMDUyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTA1MzpicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDU0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA1Ny1cdFx0XHRcdCAgQlJDTUZfTVNHQlVGX1JYQlVGUE9TVF9USFJFU0hPTEQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEwNTg6XHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDU5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTA2Mj1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTA2MzpicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA2NC1cdFx0XHQgICAgIHUzMiBjb3VudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEwMS1cdFx0cGt0bGVuID0gc2tiLVx1MDAzZWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTAyOlx0XHRpZiAoYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKG1zZ2J1Zi1cdTAwM2VkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEwMy1cdFx0XHRcdFx0ICAgICBtc2didWYtXHUwMDNlcnhfcGt0aWRzLCBza2IsIDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTEzNjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTQwLVx0Y291bnQgPSBtc2didWYtXHUwMDNlbWF4X2lvY3RscmVzcGJ1ZiAtIG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNDE6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCBmYWxzZSwgY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDItXHRtc2didWYtXHUwMDNlY3VyX2lvY3RscmVzcGJ1ZiAmIzQzOz0gY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE0NjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNTAtXHRjb3VudCA9IG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYgLSBtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNTE6XHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCB0cnVlLCBjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE1Mi1cdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYgJiM0Mzs9IGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNTY6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE1Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzAtXHRcdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYtLTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTcxOlx0YnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3QobXNnYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzM6XHRza2IgPSBicmNtZl9tc2didWZfZ2V0X3BrdGlkKG1zZ2J1Zi1cdTAwM2VkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE3NC1cdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXJ4X3BrdGlkcywgaWR4KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTE5OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEyMDA6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTIwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTIxMTpcdGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KG1zZ2J1ZiwgMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTIxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjE5Olx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXHUwMDNlZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyMjAtXHRcdFx0XHQgICAgIG1zZ2J1Zi1cdTAwM2VyeF9wa3RpZHMsIGlkeCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTI1NzpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19nZW5fc3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjU4LVx0XHRcdFx0XHQgICAgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEyNjk6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcmluZ19zdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNzAtXHRcdFx0XHRcdCAgICAgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMjg1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTI4NjpicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjg3LVx0XHRcdFx0XHQgICAgICAgdm9pZCAqYnVmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzAxLVx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtGbG93cmluZyBjcmVhdGlvbiBmYWlsZWQsIGNvZGUgJWRcXG5cJiMzNDssIHN0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTMwMjpcdFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMwMy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzMTA6XHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzExLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMxND1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzMTU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMxNi1cdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM3Olx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMzOC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM0MTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQ5LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9HRU5fU1RBVFVTXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzUwOlx0XHRicmNtZl9tc2didWZfcHJvY2Vzc19nZW5fc3RhdHVzKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzUxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1My1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7TVNHQlVGX1RZUEVfUklOR19TVEFUVVNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTQ6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3Jpbmdfc3RhdHVzKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzU1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1Ny1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7TVNHQlVGX1RZUEVfRkxPV19SSU5HX0NSRUFURV9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM1ODpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1OS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjEtXHRcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O01TR0JVRl9UWVBFX0ZMT1dfUklOR19ERUxFVEVfQ01QTFRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2UobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzY4LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9JT0NUTF9DTVBMVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2OTpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzAtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9XTF9FVkVOVFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM3MzpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzQtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzc2LVx0XHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtNU0dCVUZfVFlQRV9UWF9TVEFUVVNcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzc6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzc4LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM4MC1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7TVNHQlVGX1RZUEVfUlhfQ01QTFRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzODE6XHRcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzgyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzkwOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzkxLVx0XHRcdFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDAzLVx0d2hpbGUgKGNvdW50KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQwNDpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQwNS1cdFx0XHRcdFx0ICAgICBidWYgJiM0MzsgbXNnYnVmLVx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNDIyPWludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MjUtXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVx1MDAzZWRydnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQyNjpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDI3LVx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MzItXHRidWYgPSBtc2didWYtXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfUlhfQ09NUExFVEVdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MzM6XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQzNC1cdGJ1ZiA9IG1zZ2J1Zi1cdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQzNTpcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KG1zZ2J1ZiwgYnVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDM2LVx0YnVmID0gbXNnYnVmLVx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX0NPTlRST0xfQ09NUExFVEVdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0Mzc6XHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQzOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ0Ni1cdFx0XHRcdEJSQ01GX01TR0JVRl9UUklDS0xFX1RYV09SS0VSX1RIUlMpKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDQ3Olx0XHRcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0NDgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQ1NDp2b2lkIGJyY21mX21zZ2J1Zl9kZWxldGVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgdTE2IGZsb3dpZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDU1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDU2Olx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVx1MDAzZXByb3RvLVx1MDAzZXBkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0NTctXHRzdHJ1Y3QgbXNnYnVmX3R4X2Zsb3dyaW5nX2RlbGV0ZV9yZXEgKmRlbGV0ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ4My1cdFx0YnJjbWZfZGJnKE1TR0JVRiwgXCYjMzQ7YnVzIGRvd24sIGZsb3dyaW5nIHdpbGwgYmUgcmVtb3ZlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQ4NDpcdFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ4NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDkzLVx0XHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDk0Olx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDk1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1MTYtXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0ZhaWxlZCB0byBzdWJtaXQgUklOR19ERUxFVEUsIGZsb3dyaW5nIHdpbGwgYmUgcmVtb3ZlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTUxNzpcdFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUxOC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyMS0jaWZkZWYgREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTIyOnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3N0YXRzX3JlYWQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1MjUtXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVx1MDAzZWRydnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTUyNjpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTI3LVx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NjgtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTY5OnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3N0YXRzX3JlYWQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTU3NTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZGVidWdmc19jcmVhdGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTc2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTc3Olx0YnJjbWZfZGVidWdmc19hZGRfZW50cnkoZHJ2ciwgXCYjMzQ7bXNnYnVmX3N0YXRzXCYjMzQ7LCBicmNtZl9tc2didWZfc3RhdHNfcmVhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU3OC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE1ODA9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU4Mi1cdHN0cnVjdCBicmNtZl9idXNfbXNnYnVmICppZl9tc2didWY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTU4MzpcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTg0LVx0dTY0IGFkZHJlc3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2MDMtXHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYwNDpcdElOSVRfV09SSyhcdTAwMjZtc2didWYtXHUwMDNldHhmbG93X3dvcmssIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjA1LVx0Y291bnQgPSBCSVRTX1RPX0xPTkdTKGlmX21zZ2J1Zi1cdTAwM2VtYXhfZmxvd3JpbmdzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTYyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjI2Olx0ZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VoZHJwdWxsID0gYnJjbWZfbXNnYnVmX2hkcnB1bGw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYyNzpcdGRydnItXHUwMDNlcHJvdG8tXHUwMDNlcXVlcnlfZGNtZCA9IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2Mjg6XHRkcnZyLVx1MDAzZXByb3RvLVx1MDAzZXNldF9kY21kID0gYnJjbWZfbXNnYnVmX3NldF9kY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2Mjk6XHRkcnZyLVx1MDAzZXByb3RvLVx1MDAzZXR4X3F1ZXVlX2RhdGEgPSBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjMwOlx0ZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2Vjb25maWd1cmVfYWRkcl9tb2RlID0gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYzMTpcdGRydnItXHUwMDNlcHJvdG8tXHUwMDNlZGVsZXRlX3BlZXIgPSBicmNtZl9tc2didWZfZGVsZXRlX3BlZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYzMjpcdGRydnItXHUwMDNlcHJvdG8tXHUwMDNlYWRkX3RkbHNfcGVlciA9IGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2MzM6XHRkcnZyLVx1MDAzZXByb3RvLVx1MDAzZXJ4cmVvcmRlciA9IGJyY21mX21zZ2J1Zl9yeHJlb3JkZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYzNDpcdGRydnItXHUwMDNlcHJvdG8tXHUwMDNlZGVidWdmc19jcmVhdGUgPSBicmNtZl9tc2didWZfZGVidWdmc19jcmVhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTYzNS1cdGRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQgPSBtc2didWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTY1NTpcdG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMgPSBicmNtZl9tc2didWZfaW5pdF9wa3RpZHMoTlJfVFhfUEtUSURTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NTYtXHRcdFx0XHRcdFx0ICAgICBETUFfVE9fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY1OC1cdFx0Z290byBmYWlsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NTk6XHRtc2didWYtXHUwMDNlcnhfcGt0aWRzID0gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKE5SX1JYX1BLVElEUyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjYwLVx0XHRcdFx0XHRcdCAgICAgRE1BX0ZST01fREVWSUNFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY3NC1cdGRvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjc1Olx0XHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTIxNAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgcmVsYXRlcyB0byB0aGlzIGNvZGU6CgoqKkNoZWNraW5nIFBDSWUvVVNCIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtc2didWYuY2AgYW5kIGBmbG93cmluZy5jYC4gVGhlIGNvbnRleHQgdGVsbHMgbWUgdGhlc2UgYXJlIGRlZmluaXRlbHkgaW52b2x2ZWQgaW4gUENJZSBvcGVyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBcmUgdGhlc2UgYWxzbyB1dGlsaXplZCBieSB0aGUgVVNCIHN0YWNrPyYjMzQ7IEl0JiMzOTtzIGEgdmFsaWQgcXVlc3Rpb24sIGFzIGJvdGggUENJZSBhbmQgVVNCIGFyZSBtZXRob2RzIGZvciBkYXRhIHRyYW5zZmVyLCBhbmQgdGhlcmUgY291bGQgYmUgb3ZlcmxhcCBpbiBob3cgYnVmZmVycyBhbmQgZmxvdyBjb250cm9sIGFyZSBtYW5hZ2VkIGF0IGEgbG93IGxldmVsLiBJdCBtYWtlcyBzZW5zZSB0byB2ZXJpZnkgaWYgdGhlcmUmIzM5O3MgYW55IHNoYXJlZCBjb2RlLiBEZXRlcm1pbmluZyB3aGV0aGVyIFVTQiB1c2VzIHRoZXNlIGZpbGVzIHdvdWxkIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG1vcmUgZnVsbHkuIEl0IHdvdWxkIGRldGVybWluZSB0aGUgZXh0ZW50IG9mIHRoZXNlIHV0aWxpdGllcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIGRpZmZlcmVudCBkZXZpY2VzIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIFVTQiBkcml2ZXIgY29kZSBhbmQgbG9vayBmb3IgYW55IHJlZmVyZW5jZXMgb3IgZGVwZW5kZW5jaWVzIG9uIHRoZXNlIHBhcnRpY3VsYXIgbW9kdWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wcm90b19tc2didWZfYXR0YWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTU3NT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZGVidWdmc19jcmVhdGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTgwOmludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU4MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oPTMyPXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNC12b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzUtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNS1cdH0gZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2Olx0XHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVx0XHRcdGdvdG8gZmFpbDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjE0OAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBgcHJvdG9fdHlwZWAgVVNCIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHByb3RvX3R5cGVgIFVTQiB1c2VzIHVuZGVyIHRoZSBob29kLiBJdOKAmXMgY3J1Y2lhbCB0byBrbm93IHRoaXMsIGJlY2F1c2UgdGhhdCBpbXBhY3RzIGV2ZXJ5dGhpbmcgZnJvbSBwb3dlciBjb25zdW1wdGlvbiBhbmQgZGF0YSB0cmFuc2ZlciByYXRlcyB0byBvdmVyYWxsIHN5c3RlbSBhcmNoaXRlY3R1cmUgYW5kIGRlc2lnbiBjaG9pY2VzLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBhc3Nlc3MgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGRlY2lzaW9ucyBhcm91bmQgdGhpcyBgcHJvdG9fdHlwZWAuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBnZXQgYSBzZW5zZSBvZiB0aGUgVVNCIHZlcnNpb24gYW5kIGZlYXR1cmVzIGl0JiMzOTtzIHVzaW5nLiBUaGlzIHdpbGwgaGVscCBtZSBwbGFuIGEgbW9yZSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmFzZWxpbmUgdG8gd29yayBmcm9tLCBiZWZvcmUgSSBzdGFydCBsb29raW5nIGF0IHRoZSBsb3dlciBsZXZlbCBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm90b190eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI2OC1cdGJ1cy1cdTAwM2VvcHMgPSBcdTAwMjZicmNtZl91c2JfYnVzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMjY5Olx0YnVzLVx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19CQ0RDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNzAtXHRidXMtXHUwMDNlZnd2aWQgPSBmd3ZpZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY1NzkKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAzNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQnJvYWRjb20gV2ktRmkgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGZ1enogdGhlIGBicmNtZm1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEJyb2FkY29tIFdpLUZpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9vayBhdCB0aGUgZGlmZmVyZW50IHByb3RvY29sIGxheWVycyBpdCB1c2VzLCBuYW1lbHkgYEJSQ01GX1BST1RPX0JDRENgIGZvciBVU0IgYW5kIGBCUkNNRl9QUk9UT19NU0dCVUZgIGZvciBQQ0llLiBDYW4gSSBldmVuIGdldCB0byB0aGUgUENJZSBzaWRlIGZvciBmdXp6aW5nPyBTeXprYWxsZXImIzM5O3Mgbm8gaGVscCBoZXJlLCBpdCBkb2VzbiYjMzk7dCBkbyBhIGdvb2Qgam9iIG9mIGVtdWxhdGluZyBCcm9hZGNvbSBQQ0llIFdpLUZpLiBJdCBvbmx5IGhhcyBnZW5lcmljIGRldmljZSBlbXVsYXRpb24sIHJpZ2h0PwoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gdGhhdCBtaWdodCBoZWxwIHdpdGggQnJvYWRjb20gUENJZSBXaS1GaT8gTm9wZS4gU28sIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4gU3RhbmRhcmQgUUVNVSBqdXN0IHdvbiYjMzk7dCBnZXQgbWUgdGhlcmUuIFNESU8/IFN5emthbGxlciBhZ2FpbiBpc24mIzM5O3QgZ29pbmcgdG8gaGVscC4gQW5kIGBtYWM4MDIxMV9od3NpbWA/IEZvcmdldCBpdCwgYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBkb2VzbiYjMzk7dCB1c2UgYG1hYzgwMjExX2h3c2ltYC4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaG93IGRvIEkgcmVhY2ggdGhlIGBicmNtZm1hY2AgY29kZSB3aXRob3V0IHJlYWwgaGFyZHdhcmU/CgpJZiB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgVVNCLCBpdCB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYC4gSSYjMzk7dmUgbm90aWNlZCB0aGUgcGF0Y2ggdG91Y2hlcyBhIGJ1bmNoIG9mIGZpbGVzOiBgY2ZnODAyMTEuY2AsIGBjb3JlLmNgLCBgZmxvd3JpbmcuY2AsIGBtc2didWYuY2AsIGBwY2llLmNgLCBgc2Rpby5jYCwgYW5kIGBhbXBkdS5jYC4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IGBjZmc4MDIxMS5jYCBhbmQgYGNvcmUuY2AgYXJlIHNoYXJlZCBieSBhbGwgdGhlIGJ1c2VzLCBVU0IsIFBDSWUsIGFuZCBTRElPLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4KCkkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHdoZXRoZXIgSSBjYW4gc3VjY2Vzc2Z1bGx5IHByb2JlIHRoZSBgYnJjbWZtYWNgIFVTQiB3aXRob3V0IHRoZSByZWFsIGZpcm13YXJlLiBJZiBsb2FkaW5nIHRoZSBmaXJtd2FyZSBmYWlscywgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIHdpbGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd2lsbCB1bnJlZ2lzdGVyLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3VzYl9wcm9iZV9waGFzZTImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTExNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9idXNfb3BzIGJyY21mX3VzYl9idXNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjExNzY6c3RhdGljIHZvaWQgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMihzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cdFx0XHRcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDctXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA4Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI0Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcdTAwMjZ1c2ItXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDUxCgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBicmNtZl91c2JfcHJvYmVfcGhhc2UyKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4gSSBleHBlY3QgdGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHN0ZXBzIGZpbmFsaXplIGFmdGVyIHRoZSBpbml0aWFsIGRldmljZSBhdHRhY2htZW50LiBGaXJzdCwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcmVzb3VyY2UgYWxsb2NhdGlvbjsgbWVtb3J5LCBpbnRlcnJ1cHRzLCBETUEgY2hhbm5lbHMuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIFVTQiBzdGFjaywgcHJvYmFibHkgdXNpbmcgYHVzYl9yZWdpc3Rlcl9kZXYoKWAuCgpJJiMzOTttIGJldHRpbmcgdGhlIGZpcm13YXJlIGxvYWRpbmcgaXMgaGFuZGxlZCBoZXJlLCBvciBhdCBsZWFzdCBpbml0aWF0ZWQuIEl0JiMzOTtzIGxpa2VseSB1c2luZyBgdXNiX2J1bGtfbXNnYCBvciBgdXNiX2NvbnRyb2xfbXNnYCB0byB0cmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gdGhlIGRldmljZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGVycm9yIGhhbmRsaW5nIGFzIHdlbGwuIFdoZXJlIGFyZSB0aGUgZmFpbHVyZSBwb2ludHM/IFdoYXQmIzM5O3MgdGhlIHJlY292ZXJ5IHBhdGggaWYgdGhlIGZpcm13YXJlIGxvYWQgZmFpbHMsIG9yIGlmIHRoZSBkZXZpY2UgZmFpbHMgZHVyaW5nIGluaXRpYWxpemF0aW9uPyAKCk5leHQgSSYjMzk7bGwgbG9vayBmb3IgZGV2aWNlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEFyZSB0aGVyZSBhbnkgdmVuZG9yLXNwZWNpZmljIHJlcXVlc3RzIG9yIFVSQiBzZXR1cD8gSSYjMzk7bGwgcHJvYmFibHkgZmluZCBzb21lIG1vcmUgYHVzYl9zZXRfaW50ZmRhdGEoKWAgY2FsbHMsIHNldHRpbmcgdXAgcGVyLWRldmljZSBkYXRhLiBUaGlzIG1pZ2h0IGJlIHdoZXJlIHBvd2VyIG1hbmFnZW1lbnQgaXMgc2V0dXAgYXMgd2VsbC4gSSYjMzk7bGwgY2hlY2sgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IFVTQiBjb25maWd1cmF0aW9uczsgaGlnaC1zcGVlZCwgZnVsbC1zcGVlZCwgZXRjLiBUaGUgY2xvY2sgc2V0dXAgaXMgcHJvYmFibHkgaGVyZSB0b28sIGlmIGl0IG5lZWRzIGEgc3BlY2lmaWMgY2xvY2suCgpGaW5hbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBCUkNNRiBkcml2ZXImIzM5O3MgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLCBsaWtlIHRoZSAqYnJjbWZfcHViKiBzdHJ1Y3R1cmUsIGFuZCBsaW5raW5nIHRoZW0gdG8gdGhlIFVTQiBkZXZpY2UuIEkmIzM5O2xsIGJlIGNoZWNraW5nIHRvIHNlZSB3aGF0IGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSwgaXMgYSBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2UgY3JlYXRlZCwgYW5kIGhvdyBpdCBpcyBjb25uZWN0ZWQgdG8gdGhlIFVTQiBkZXZpY2UuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBhcHByb3ByaWF0ZSBgbmV0aWZfYCBjYWxscywgYW5kIGByZWdpc3Rlcl9uZXRkZXYoKWAsIGFuZCBpdHMgYXNzb2NpYXRlZCBjbGVhbnVwIGZ1bmN0aW9uLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE3NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTc2Olx0c3RhdGljIHZvaWQgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMihzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZXQsXG4xMTc3Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXG4xMTc4Olx0e1xuMTE3OTpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4xMTgwOlx0XHRzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8gPSBidXMtXHUwMDNlYnVzX3ByaXYudXNiLVx1MDAzZWRldmluZm87XG4xMTgxOlx0XHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xuMTE4MjpcdFxuMTE4MzpcdFx0aWYgKHJldClcbjExODQ6XHRcdFx0Z290byBlcnJvcjtcbjExODU6XHRcbjExODY6XHRcdGJyY21mX2RiZyhVU0IsIFwmIzM0O1N0YXJ0IGZ3IGRvd25sb2FkaW5nXFxuXCYjMzQ7KTtcbjExODc6XHRcbjExODg6XHRcdGZ3ID0gZndyZXEtXHUwMDNlaXRlbXNbQlJDTUZfVVNCX0ZXX0NPREVdLmJpbmFyeTtcbjExODk6XHRcdGtmcmVlKGZ3cmVxKTtcbjExOTA6XHRcbjExOTE6XHRcdHJldCA9IGNoZWNrX2ZpbGUoZnctXHUwMDNlZGF0YSk7XG4xMTkyOlx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4xMTkzOlx0XHRcdGJyY21mX2VycihcJiMzNDtpbnZhbGlkIGZpcm13YXJlXFxuXCYjMzQ7KTtcbjExOTQ6XHRcdFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XG4xMTk1Olx0XHRcdGdvdG8gZXJyb3I7XG4xMTk2Olx0XHR9XG4xMTk3Olx0XG4xMTk4Olx0XHRkZXZpbmZvLVx1MDAzZWltYWdlID0gZnctXHUwMDNlZGF0YTtcbjExOTk6XHRcdGRldmluZm8tXHUwMDNlaW1hZ2VfbGVuID0gZnctXHUwMDNlc2l6ZTtcbjEyMDA6XHRcbjEyMDE6XHRcdHJldCA9IGJyY21mX3VzYl9md19kb3dubG9hZChkZXZpbmZvKTtcbjEyMDI6XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTIwMzpcdFx0aWYgKHJldClcbjEyMDQ6XHRcdFx0Z290byBlcnJvcjtcbjEyMDU6XHRcbjEyMDY6XHRcdHJldCA9IGJyY21mX2FsbG9jKGRldmluZm8tXHUwMDNlZGV2LCBkZXZpbmZvLVx1MDAzZXNldHRpbmdzKTtcbjEyMDc6XHRcdGlmIChyZXQpXG4xMjA4Olx0XHRcdGdvdG8gZXJyb3I7XG4xMjA5Olx0XG4xMjEwOlx0XHQvKiBBdHRhY2ggdG8gdGhlIGNvbW1vbiBkcml2ZXIgaW50ZXJmYWNlICovXG4xMjExOlx0XHRyZXQgPSBicmNtZl9hdHRhY2goZGV2aW5mby1cdTAwM2VkZXYpO1xuMTIxMjpcdFx0aWYgKHJldClcbjEyMTM6XHRcdFx0Z290byBlcnJvcjtcbjEyMTQ6XHRcbjEyMTU6XHRcdGNvbXBsZXRlKFx1MDAyNmRldmluZm8tXHUwMDNlZGV2X2luaXRfZG9uZSk7XG4xMjE2Olx0XHRyZXR1cm47XG4xMjE3Olx0ZXJyb3I6XG4xMjE4Olx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O2ZhaWxlZDogZGV2PSVzLCBlcnI9JWRcXG5cJiMzNDssIGRldl9uYW1lKGRldiksIHJldCk7XG4xMjE5Olx0XHRjb21wbGV0ZShcdTAwMjZkZXZpbmZvLVx1MDAzZWRldl9pbml0X2RvbmUpO1xuMTIyMDpcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldik7XG4xMjIxOlx0fVxuMTIyMjpcdFxuMTIyMzpcdHN0YXRpYyBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqXG4xMjI0Olx0YnJjbWZfdXNiX3ByZXBhcmVfZndfcmVxdWVzdChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8pXG4xMjI1Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTI5MgoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJyb2FkY29tIFdpLUZpIERyaXZlciBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZXJyb3IgaGFuZGxpbmcsIGFuZCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJZiB0aGUgcmV0dXJuIGNvZGUsIGByZXRgLCBpcyBhbnl0aGluZyBvdGhlciB0aGFuIHplcm8g4oCTIG1lYW5pbmcgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBmb3VuZCDigJMgd2UganVtcCByaWdodCBpbnRvIGVycm9yIGhhbmRsaW5nLiBUaGF0IGludm9sdmVzIHJlbGVhc2luZyB0aGUgZHJpdmVyIHdpdGggYGRldmljZV9yZWxlYXNlX2RyaXZlcihkZXYpYCBhbmQgdGhlbiwgcHJlZGljdGFibHksIGl0IGZhaWxzLiBTdGFuZGFyZCBzdHVmZi4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IFN5emthbGxlciBwcm9iYWJseSBkb2VzbiYjMzk7dCBoYXZlIHRoZSBCcm9hZGNvbSBmaXJtd2FyZSBpbWFnZXMgZm9yIGBicmNtZm1hY2AuIFNwZWNpZmljYWxseSwgdGhlIG9uZXMgbGlrZSBgYnJjbWZtYWM0MzE0My5iaW5gIG9yIGBicmNtZm1hYzQzMjM2Yi5iaW5gLCBhbmQgdGhlIGNvZGUgd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgb25lIG9mIHRoZXNlIHdlcmVuJiMzOTt0IHByb3ZpZGVkLgoKV2FpdCwgaG9sZCBvbi4gSSBuZWVkIHRvIHJldGhpbmsgdGhpcywgc2luY2UgSSByZW1lbWJlciBTeXprYWxsZXIgaGFzIHNvbWUgZmlybXdhcmUgaW1hZ2VzLiBPa2F5LCBidXQgSSBiZXQgdGhleSYjMzk7cmUgbm90IEJyb2FkY29tIFdpLUZpIGZpcm13YXJlcy4gRXZlbiBpZiB0aGV5IHdlcmUsIHRoYXQgYGJyY21mX3VzYl9md19kb3dubG9hZGAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IGFuZCB3cml0ZSB0aGUgZmlybXdhcmUgdG8gdGhlIGRldmljZSB1c2luZyBVU0IgY29udHJvbCBtZXNzYWdlcy4gU2luY2UgdGhpcyBpcyBhIGR1bW15IFVTQiBkZXZpY2UsIGl0IHByb2JhYmx5IHdpbGwganVzdCBhY2NlcHQgdGhvc2UgbWVzc2FnZXMuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHJlYWwsIGl0IHdvbiYjMzk7dCBhY3R1YWxseSBleGVjdXRlIHRoZSBmaXJtd2FyZSBvciByZXNwb25kIGNvcnJlY3RseS4gU28sIGl0JiMzOTtzIGxpa2VseSBhIGRlYWQgZW5kLCBldmVuIGlmIHdlICpjb3VsZCogZ2V0IHRoZSByaWdodCBmaXJtd2FyZSBsb2FkZWQuCgpBZnRlciB0aGF0IGZpcm13YXJlIGRvd25sb2FkLCB3ZSBnZXQgYGJyY21mX2F0dGFjaGAsIHdoaWNoIGluaXRpYWxpemVzIHRoZSBjb3JlIGRyaXZlci4gVGhhdCYjMzk7cyB0aGUgcmVhbCBtZWF0IG9mIHRoZSBvcGVyYXRpb24uIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBicmNtZl9hdHRhY2hgIGlzIGFjdHVhbGx5IGRvaW5nLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBicmNtZl9hdHRhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD0yOTk9aW50IGJyY21mX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21wX2RldmljZSAqc2V0dGluZ3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMwMC0vKiBJbmRpY2F0aW9uIGZyb20gYnVzIG1vZHVsZSByZWdhcmRpbmcgcHJlc2VuY2UvaW5zZXJ0aW9uIG9mIGRvbmdsZS4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDozMDE6aW50IGJyY21mX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMwMi0vKiBJbmRpY2F0aW9uIGZyb20gYnVzIG1vZHVsZSByZWdhcmRpbmcgcmVtb3ZhbC9hYnNlbmNlIG9mIGRvbmdsZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM9MTMwNz1pbnQgYnJjbWZfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXBfZGV2aWNlICpzZXR0aW5ncylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTEzMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jOjEzMzY6aW50IGJyY21mX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTEzMzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDI3MwoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGEgc2Vhc29uZWQgcHJvZmVzc2lvbmFsIGluIHRoZSBmaWVsZCwgc3RhcnRpbmcgd2l0aCB0aGUgYm9sZGVkIGhlYWRlcjoKCioqRGl2aW5nIGludG8gYGJyY21mX2F0dGFjaGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGUgdGFyZ2V0IGhlcmUgaXMgYGJyY21mX2F0dGFjaGAuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCB0byBleHBlY3QsIGJ1dCBsZXQmIzM5O3Mgc2VlIGhvdyB3ZWxsIGl0IG1hcHMgdG8gbXkgbWVudGFsIG1vZGVsLiBVc3VhbGx5IGluIHRoZXNlIHNvcnRzIG9mIGRyaXZlcnMsIHRoaXMgaXMgdGhlIHBpdm90YWwgZnVuY3Rpb27igJQgdGhlIGdhdGV3YXkuIEl0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSBhIG5ldyBkZXZpY2UgaW5zdGFuY2UgZ2V0cyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbS4gSeKAmW0gdGhpbmtpbmcgaW5pdGlhbGl6YXRpb24sIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBiaW5kaW5nIHRvIHRoZSByZWxldmFudCBrZXJuZWwgc3Vic3lzdGVtcyBhcmUgYWxsIGxpa2VseSBjYW5kaWRhdGVzIGZvciB0aGlzIGZ1bmN0aW9uJiMzOTtzIHJlc3BvbnNpYmlsaXRpZXMuIFRoaW5ncyBsaWtlIGhhcmR3YXJlIGlkZW50aWZpY2F0aW9uLCBzZXR0aW5nIHVwIERNQSBjaGFubmVscywgZXN0YWJsaXNoaW5nIGludGVycnVwdCBoYW5kbGVycy4uLiBJJiMzOTttIHJlYWxseSBjdXJpb3VzIHRvIHNlZSBob3cgdGhlIEJyb2FkY29tIGRyaXZlciBtYW5hZ2VzIGl0cyBkZXZpY2UgY29udGV4dCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBmaXJtd2FyZS4gSXMgdGhlcmUgYSBzZXBhcmF0ZSBmaXJtd2FyZSBsb2FkIHN0YWdlPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgYXR0YWNobWVudD8gQXJlIHRoZXJlIGFueSBjbGV2ZXIgdHJpY2tzIHRvIG9wdGltaXplIHRoZSBwcm9jZXNzLCBtYXliZSBzcGVjaWZpYyB0byB0aGVpciBjaGlwc2V0cz8gSSBrbm93IHRoZXNlIGRyaXZlcnMgY2FuIGdldCBjb252b2x1dGVkIHF1aWNrbHksIHNvIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBvciB1bmNvbnZlbnRpb25hbCBhcHByb2FjaGVzLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMzNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzM2Olx0aW50IGJyY21mX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4xMzM3Olx0e1xuMTMzODpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4xMzM5Olx0XHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVx1MDAzZWRydnI7XG4xMzQwOlx0XHRpbnQgcmV0ID0gMDtcbjEzNDE6XHRcdGludCBpO1xuMTM0MjpcdFxuMTM0MzpcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4xMzQ0Olx0XG4xMzQ1Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGRydnItXHUwMDNlaWYyYnNzKTsgaSYjNDM7JiM0MzspXG4xMzQ2Olx0XHRcdGRydnItXHUwMDNlaWYyYnNzW2ldID0gQlJDTUZfQlNTSURYX0lOVkFMSUQ7XG4xMzQ3Olx0XG4xMzQ4Olx0XHRtdXRleF9pbml0KFx1MDAyNmRydnItXHUwMDNlcHJvdG9fYmxvY2spO1xuMTM0OTpcdFxuMTM1MDpcdFx0LyogTGluayB0byBidXMgbW9kdWxlICovXG4xMzUxOlx0XHRkcnZyLVx1MDAzZWhkcmxlbiA9IDA7XG4xMzUyOlx0XG4xMzUzOlx0XHRyZXQgPSBicmNtZl9md3ZpZF9hdHRhY2goZHJ2cik7XG4xMzU0Olx0XHRpZiAocmV0ICE9IDApIHtcbjEzNTU6XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7YnJjbWZfZnd2aWRfYXR0YWNoIGZhaWxlZFxcblwmIzM0Oyk7XG4xMzU2Olx0XHRcdGdvdG8gZmFpbDtcbjEzNTc6XHRcdH1cbjEzNTg6XHRcbjEzNTk6XHRcdC8qIEF0dGFjaCBhbmQgbGluayBpbiB0aGUgcHJvdG9jb2wgKi9cbjEzNjA6XHRcdHJldCA9IGJyY21mX3Byb3RvX2F0dGFjaChkcnZyKTtcbjEzNjE6XHRcdGlmIChyZXQgIT0gMCkge1xuMTM2MjpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDticmNtZl9wcm90X2F0dGFjaCBmYWlsZWRcXG5cJiMzNDspO1xuMTM2MzpcdFx0XHRnb3RvIGZhaWw7XG4xMzY0Olx0XHR9XG4xMzY1Olx0XG4xMzY2Olx0XHQvKiBhdHRhY2ggZmlybXdhcmUgZXZlbnQgaGFuZGxlciAqL1xuMTM2NzpcdFx0cmV0ID0gYnJjbWZfZndlaF9hdHRhY2goZHJ2cik7XG4xMzY4Olx0XHRpZiAocmV0ICE9IDApIHtcbjEzNjk6XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7YnJjbWZfZndlaF9hdHRhY2ggZmFpbGVkXFxuXCYjMzQ7KTtcbjEzNzA6XHRcdFx0Z290byBmYWlsO1xuMTM3MTpcdFx0fVxuMTM3MjpcdFxuMTM3MzpcdFx0LyogQXR0YWNoIHRvIGV2ZW50cyBpbXBvcnRhbnQgZm9yIGNvcmUgY29kZSAqL1xuMTM3NDpcdFx0YnJjbWZfZndlaF9yZWdpc3RlcihkcnZyLCBCUkNNRl9FX1BTTV9XQVRDSERPRyxcbjEzNzU6XHRcdFx0XHQgICAgYnJjbWZfcHNtX3dhdGNoZG9nX25vdGlmeSk7XG4xMzc2Olx0XG4xMzc3Olx0XHRicmNtZl9md3ZpZF9nZXRfY2ZnODAyMTFfb3BzKGRydnIpO1xuMTM3ODpcdFxuMTM3OTpcdFx0cmV0ID0gYnJjbWZfYnVzX3N0YXJ0ZWQoZHJ2ciwgZHJ2ci1cdTAwM2VvcHMpO1xuMTM4MDpcdFx0aWYgKHJldCAhPSAwKSB7XG4xMzgxOlx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2RvbmdsZSBpcyBub3QgcmVzcG9uZGluZzogZXJyPSVkXFxuXCYjMzQ7LCByZXQpO1xuMTM4MjpcdFx0XHRnb3RvIGZhaWw7XG4xMzgzOlx0XHR9XG4xMzg0Olx0XG4xMzg1Olx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzNzQKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydCBsaWtlIG15c2VsZjoKCioqRGl2aW5nIGludG8gYnJjbWZfYnVzX3N0YXJ0ZWQqKgoKQWxyaWdodCwgdGhlIGBicmNtZl9idXNfc3RhcnRlZGAgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmRvaW5nKiBhdCB0aGlzIGNyaXRpY2FsIGp1bmN0dXJlLiBJdCYjMzk7cyBsaWtlbHkgc2V0dGluZyB1cCB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIEJyb2FkY29tIFdpLUZpIGJ1cywgYnV0IEkgbmVlZCB0byBnZXQgdGhlIHNwZWNpZmljIGRldGFpbHMuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIGV4YW1pbmUgaXRzIGZ1bmN0aW9uIGNhbGxzIHRvIHVuZGVyc3RhbmQgdGhlIHNldHVwIHByb2Nlc3MuIEFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXM/IFBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbj8gSW5pdGlhbGl6YXRpb24gb2YgRE1BIGNoYW5uZWxzPyBJ4oCZbSBleHBlY3RpbmcgYSBmbHVycnkgb2YgYnVzIGluaXRpYWxpemF0aW9uIGFjdGlvbnMuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIHN0YXJ0IGlzIHN1Y2Nlc3NmdWwgb3IgaWYgYW55IGVycm9ycyBhcmUgcmV0dXJuZWQuIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIGlkZWEgb2YgaG93IHRoZSBkcml2ZXIgb3JjaGVzdHJhdGVzIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIEJyb2FkY29tIFdpLUZpIGNoaXAsIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnQgYnJjbWZfYnVzX3N0YXJ0ZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM9MTIwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBidXNfcmVzZXRfZm9wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTEyMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jOjEyMDY6c3RhdGljIGludCBicmNtZl9idXNfc3RhcnRlZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTEyMDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg0MAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiBgYnJjbWZfYnVzX3N0YXJ0ZWRgOgoKKipNeSBBbmFseXNpcyBvZiBicmNtZl9idXNfc3RhcnRlZCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIGV4YW1pbmUgdGhlIGBicmNtZl9idXNfc3RhcnRlZGAgZnVuY3Rpb24uIEJhc2VkIG9uIHRoZSBuYW1pbmcsIEkmIzM5O20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSB0aGUgaW5pdGlhbCBzdGFnZXMgb2YgYnJpbmdpbmcgdXAgdGhlIGJ1cyBpbnRlcmZhY2UgZm9yIHRoZSBCcm9hZGNvbSBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBoYXJkd2FyZSBpcyBpbml0aWFsaXplZCBhbmQgY29uZmlndXJlZCBhZnRlciB0aGUgZHJpdmVyIGhhcyBiZWVuIGxvYWRlZCwgb3IgYXQgbGVhc3Qgc3RhcnRlZCBpdHMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqSGFyZHdhcmUgcHJvYmluZyBhbmQgaWRlbnRpZmljYXRpb246KiogSXMgdGhlcmUgYW55IGRldGVjdGlvbiBvciBpZGVudGlmaWNhdGlvbiBvZiBzcGVjaWZpYyBidXMgdHlwZXMgKFNESU8sIFBDSWUsIFVTQiwgZXRjLikgYW5kIHJlbGF0ZWQgaGFyZHdhcmU/IEkmIzM5O2xsIHBheSBhdHRlbnRpb24gdG8gdGhlIGJ1cy1zcGVjaWZpYyBpbml0aWFsaXphdGlvbi4KKiAgICoqUmVzb3VyY2UgYWxsb2NhdGlvbjoqKiBBcmUgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdHMsIG9yIG90aGVyIGhhcmR3YXJlIHJlc291cmNlcyBiZWluZyByZXF1ZXN0ZWQgYW5kIG1hcHBlZCBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudC4KKiAgICoqQnVzLXNwZWNpZmljIGluaXRpYWxpemF0aW9uOioqIFdoYXQgYnVzLXNwZWNpZmljIG9wZXJhdGlvbnMgYXJlIGJlaW5nIHBlcmZvcm1lZD8gQXJlIHRoZXJlIGFueSBsb3ctbGV2ZWwgaGFyZHdhcmUgcmVnaXN0ZXJzIGJlaW5nIHByb2dyYW1tZWQ/CiogICAqKkRyaXZlciByZWdpc3RyYXRpb24vYXR0YWNobWVudDoqKiBJcyB0aGlzIHdoZXJlIHRoZSBkcml2ZXIgaXRzZWxmIGlzIGF0dGFjaGluZyB0byB0aGUgYnVzPyBJJiMzOTttIHdhdGNoaW5nIGZvciBhbnkgY2FsbHMgdG8gYnVzIGRyaXZlciBhdHRhY2htZW50IGZ1bmN0aW9ucyBvciBzb21ldGhpbmcgbGlrZSAmIzM0O2RldmljZSByZWdpc3RyYXRpb24mIzM0Oy4KKiAgICoqUG93ZXIgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9uczoqKiBJcyBhbnkgcG93ZXIgbWFuYWdlbWVudCBsb2dpYyBiZWluZyB1c2VkIGhlcmU/IEFyZSB0aGVyZSBwb3dlci1vbiBzZXF1ZW5jZXMgb3IgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnMgaW52b2x2ZWQ/CiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIGhvdz8gVGhpcyBpcyBjcml0aWNhbCBmb3IgcmVsaWFiaWxpdHkuIEFyZSB0aGVyZSBhdHRlbXB0cyB0byBwcm9iZSBvciByZS1pbml0aWFsaXplIGlmIGl0IGZhaWxzPwoqICAgKipJbnRlcnJ1cHQgc2V0dXA6KiogQW55IGludGVycnVwdC1yZWxhdGVkIHNldC11cC4KKiAgICoqRGVmZXJyZWQgd29yazoqKiBJZiB0aGlzIGZ1bmN0aW9uIGtpY2tzIG9mZiBhbnkgZGVmZXJyZWQgd29yaywgbGlrZSBhIGRlbGF5ZWQgcHJvYmUsIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4KClRoaXMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlciBnZXRzIHRoZSBidXMgaW50ZXJmYWNlIHJlYWR5IGZvciBkYXRhIHRyYW5zZmVyLiBVbmRlcnN0YW5kaW5nIHRoZSBzZXF1ZW5jZSBvZiBzdGVwcyBhbmQgdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgZmFpbHVyZSBpcyBjcnVjaWFsIGZvciBkZWJ1Z2dpbmcgYW5kIG9wdGltaXphdGlvbi4gSXQgd2lsbCBhbHNvIGhlbHAgbWUgdG8gaWRlbnRpZnkgYW55IGFyZWFzIG9mIGNvbmNlcm4gaW4gdGVybXMgb2YgcmVzb3VyY2UgY29udGVudGlvbiBvciBkcml2ZXIgZGVwZW5kZW5jaWVzLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gZm9yIHRoZSB3aG9sZSBkYXRhIHBsYW5lLiBJJiMzOTttIGtlZW4gdG8gZ28gdGhyb3VnaCB0aGUgY29kZSBzdGVwLWJ5LXN0ZXAgYW5kIHNlZSBob3cgdGhlIGJ1cyBnZXRzIHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMDYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIwNjpcdHN0YXRpYyBpbnQgYnJjbWZfYnVzX3N0YXJ0ZWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgc3RydWN0IGNmZzgwMjExX29wcyAqb3BzKVxuMTIwNzpcdHtcbjEyMDg6XHRcdGludCByZXQgPSAtMTtcbjEyMDk6XHRcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRydnItXHUwMDNlYnVzX2lmO1xuMTIxMDpcdFx0c3RydWN0IGJyY21mX2lmICppZnA7XG4xMjExOlx0XHRzdHJ1Y3QgYnJjbWZfaWYgKnAycF9pZnA7XG4xMjEyOlx0XG4xMjEzOlx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1xcblwmIzM0Oyk7XG4xMjE0Olx0XG4xMjE1Olx0XHQvKiBhZGQgcHJpbWFyeSBuZXR3b3JraW5nIGludGVyZmFjZSAqL1xuMTIxNjpcdFx0aWZwID0gYnJjbWZfYWRkX2lmKGRydnIsIDAsIDAsIGZhbHNlLCBcJiMzNDt3bGFuJWRcJiMzNDssXG4xMjE3Olx0XHRcdFx0ICAgaXNfdmFsaWRfZXRoZXJfYWRkcihkcnZyLVx1MDAzZXNldHRpbmdzLVx1MDAzZW1hYykgPyBkcnZyLVx1MDAzZXNldHRpbmdzLVx1MDAzZW1hYyA6IE5VTEwpO1xuMTIxODpcdFx0aWYgKElTX0VSUihpZnApKVxuMTIxOTpcdFx0XHRyZXR1cm4gUFRSX0VSUihpZnApO1xuMTIyMDpcdFxuMTIyMTpcdFx0cDJwX2lmcCA9IE5VTEw7XG4xMjIyOlx0XG4xMjIzOlx0XHQvKiBzaWduYWwgYnVzIHJlYWR5ICovXG4xMjI0Olx0XHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1c19pZiwgQlJDTUZfQlVTX1VQKTtcbjEyMjU6XHRcbjEyMjY6XHRcdC8qIGRvIGJ1cyBzcGVjaWZpYyBwcmVpbml0IGhlcmUgKi9cbjEyMjc6XHRcdHJldCA9IGJyY21mX2J1c19wcmVpbml0KGJ1c19pZik7XG4xMjI4Olx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTIyOTpcdFx0XHRnb3RvIGZhaWw7XG4xMjMwOlx0XG4xMjMxOlx0XHQvKiBCdXMgaXMgcmVhZHksIGRvIGFueSBpbml0aWFsaXphdGlvbiAqL1xuMTIzMjpcdFx0cmV0ID0gYnJjbWZfY19wcmVpbml0X2RjbWRzKGlmcCk7XG4xMjMzOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTIzNDpcdFx0XHRnb3RvIGZhaWw7XG4xMjM1Olx0XG4xMjM2Olx0XHRicmNtZl9mZWF0X2F0dGFjaChkcnZyKTtcbjEyMzc6XHRcbjEyMzg6XHRcdHJldCA9IGJyY21mX3Byb3RvX2luaXRfZG9uZShkcnZyKTtcbjEyMzk6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMjQwOlx0XHRcdGdvdG8gZmFpbDtcbjEyNDE6XHRcbjEyNDI6XHRcdGJyY21mX3Byb3RvX2FkZF9pZihkcnZyLCBpZnApO1xuMTI0MzpcdFxuMTI0NDpcdFx0ZHJ2ci1cdTAwM2Vjb25maWcgPSBicmNtZl9jZmc4MDIxMV9hdHRhY2goZHJ2ciwgb3BzLFxuMTI0NTpcdFx0XHRcdFx0XHQgICAgIGRydnItXHUwMDNlc2V0dGluZ3MtXHUwMDNlcDJwX2VuYWJsZSk7XG4xMjQ2Olx0XHRpZiAoZHJ2ci1cdTAwM2Vjb25maWcgPT0gTlVMTCkge1xuMTI0NzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTI0ODpcdFx0XHRnb3RvIGZhaWw7XG4xMjQ5Olx0XHR9XG4xMjUwOlx0XG4xMjUxOlx0XHRyZXQgPSBicmNtZl9uZXRfYXR0YWNoKGlmcCwgZmFsc2UpO1xuMTI1MjpcdFxuMTI1MzpcdFx0aWYgKCghcmV0KSBcdTAwMjZcdTAwMjYgKGRydnItXHUwMDNlc2V0dGluZ3MtXHUwMDNlcDJwX2VuYWJsZSkpIHtcbjEyNTQ6XHRcdFx0cDJwX2lmcCA9IGRydnItXHUwMDNlaWZsaXN0WzFdO1xuMTI1NTpcdFx0XHRpZiAocDJwX2lmcClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxODcKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBicmNtZm1hY2AgVVNCIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIFRoZSBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmdW5jdGlvbiBzZW5kcyBjb21tYW5kcyB0byB0aGUgZmlybXdhcmUuIE5vdywgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBhY3R1YWxseSBydW5uaW5nIChsaWtlIHdpdGggYSBkdW1teSBVU0IgZGV2aWNlKSwgdGhvc2UgY29tbWFuZHMgYXJlIGdvaW5nIHRvIGZhaWwgb3IgdGltZSBvdXQsIHdoaWNoIGNhdXNlcyBgYnJjbWZfYnVzX3N0YXJ0ZWRgIHRvIGZhaWwuIFRoaXMgaXMgdGhlIG5vcm1hbCBpbml0aWFsaXphdGlvbiBmbG93IGFuZCBtZWFucyB0aGUgZHJpdmVyIHdvbiYjMzk7dCBjb21wbGV0ZSBzZXR1cC4KCkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4gSWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgdGhpcyBVU0IgaW50ZXJmYWNlLCBpdCBjYW4gKnByb3ZpZGUqIHRoZSByZXNwb25zZXMgdG8gdGhlIGNvbnRyb2wgbWVzc2FnZXMgYW5kIHRoZSBidWxrIGVuZHBvaW50cyB0aGF0IHRoZSBkcml2ZXIgaXMgZXhwZWN0aW5nLiBIbW0sIHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHN5emthbGxlciBjYW4gYmFzaWNhbGx5ICplbXVsYXRlKiB0aGUgZmlybXdhcmUmIzM5O3MgcmVzcG9uc2VzIQoKUmlnaHQsIEkgbmVlZCB0byBjaGVjayBpZiBzeXprYWxsZXIgY2FuIGVtdWxhdGUgYGJyY21mbWFjYCYjMzk7cyBVU0IgYmVoYXZpb3Igc3BlY2lmaWNhbGx5LiBCYXNlZCBvbiBwcmlvciBrbm93bGVkZ2UsIEkgYmVsaWV2ZSBzeXprYWxsZXImIzM5O3MgYGR1bW15X2hjZGAgY2FuIGVtdWxhdGUgKmFueSogVVNCIGRldmljZS4gVGhlIGZ1enplciBoYXMgdGhlIHBvd2VyIHRvIHByb3ZpZGUgY29tcGxldGVseSBhcmJpdHJhcnkgcmVzcG9uc2VzIHRvIGFueSBpbmNvbWluZyBVU0IgcmVxdWVzdC4KClRoZXJlZm9yZSwgaXQmIzM5O3MgdG90YWxseSBwbGF1c2libGUgZm9yIHRoZSBmdXp6ZXIgdG8gYnlwYXNzIHRoZSBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmdW5jdGlvbiBieSBnaXZpbmcgaXQgdGhlIFVTQiByZXNwb25zZXMgaXQgbmVlZHMuCgpBaCwgYnV0IHRoZXJlJiMzOTtzIG1vcmUgdG8gdGhpcy4gVGhlIGBicmNtZm1hY2AgZmlybXdhcmUgZG93bmxvYWQgKml0c2VsZiogaGFwcGVucyBvdmVyIFVTQi4gU28sIHRoZSBkcml2ZXIgc2VuZHMgdGhlIGZpcm13YXJlIGltYWdlLCBleHBlY3RzIHRoZSBmaXJtd2FyZSB0byBib290LCBhbmQgdGhlbiByZXNwb25kIHRvIGNvbW1hbmRzLiBUaGlzIGlzIGRvbmUgd2l0aCBgQlJDTUZfUFJPVE9fQkNEQ2AgZm9yIFVTQi4KCkxldCYjMzk7cyBzZWUgaWYgYGJyY21mX2NfcHJlaW5pdF9kY21kc2AgaXMgYWN0dWFsbHkgcmVhY2hhYmxlLiBJZiBpdCBpcyByZWFjaGFibGUsIHRoZW4gdGhlcmUmIzM5O3MgYSBwb3NzaWJpbGl0eSB0aGF0IGNoYW5nZXMgbWFkZSB0byB0aGUgYGNmZzgwMjExLmNgIGZpbGUgY291bGQgYmUgZXhwbG9pdGFibGUsIGFuZCBpdCB3b3VsZCBiZSB3b3J0aCB0YXJnZXRpbmcuCgpUaGlua2luZyBhYm91dCBpdCwgSSBuZWVkIHRvIGNoZWNrIGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgLiBUaGlzIGlzIGEgY2ZnODAyMTEgY2FsbGJhY2suIEl0IGlzIGNhbGxlZCBieSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgdG8gc2V0IHRoZSBQTUtTQS4gVGhpcyByZXF1aXJlcyB0aGUgd2lyZWxlc3MgZGV2aWNlIHRvIGJlIHJlZ2lzdGVyZWQgd2l0aCBjZmc4MDIxMSAoYHdpcGh5X3JlZ2lzdGVyYCkuIFRoYXQgZnVuY3Rpb24gaXMgbGlrZWx5IGNhbGxlZCBpbiBgYnJjbWZfY2ZnODAyMTFfYXR0YWNoYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBuZXh0IHN0ZXAsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgYnJjbWZfY2ZnODAyMTFfYXR0YWNoYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7d2lwaHlfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTg0MDU9c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmJyY21mX2NmZzgwMjExX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTg0ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo4NDkwOlx0ZXJyID0gd2lwaHlfcmVnaXN0ZXIod2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtODQ5MS1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy04NTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6ODUwMjpcdC8qIElmIGNmZzgwMjExIGRpZG4mIzM5O3QgZGlzYWJsZSA0ME1IeiBIVCBDQVAgaW4gd2lwaHlfcmVnaXN0ZXIoKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTg1MDMtXHQgKiBzZXR1cCA0ME1IeiBpbiAyR0h6IGJhbmQgYW5kIGVuYWJsZSBPQlNTIHNjYW5uaW5nLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDUzMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZSBjaGFsbGVuZ2UgaGVyZSBpcyBnZXR0aW5nIGEgZnV6emVyLCBzcGVjaWZpY2FsbHkgU3l6a2FsbGVyLCB0byByZWFsbHkgZGlnIGludG8gYGJyY21mbWFjYCB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIFRoZSBjb3JlIHByb2JsZW0sIGFzIEkgc2VlIGl0LCBpcyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIElmIHRoZSBmdXp6ZXIgY2FuIGZsYXdsZXNzbHkgZW11bGF0ZSB0aGUgVVNCIGRldmljZSBzdWZmaWNpZW50bHkgdG8gbWFrZSBpdCBwYXN0IGBicmNtZl9jX3ByZWluaXRfZGNtZHNgIGFuZCBgYnJjbWZfYnVzX3N0YXJ0ZWRgLCB0aGVuIHdlJiMzOTtyZSBpbiBidXNpbmVzcyDigJMgdGhlIHdpcGh5IHJlZ2lzdGVycyBhbmQgdGhlIGBjZmc4MDIxMWAgY2FsbGJhY2tzIHdpbGwgb3BlbiB1cC4gVGhlIGNydWNpYWwgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgcmVhbGlzdGljYWxseSBhY2hpZXZlIHRoYXQ/CgpTeXprYWxsZXIgZG9lcyBoYXZlIFVTQiBkZXZpY2UgZGVzY3JpcHRpb25zLCBidXQgSSYjMzk7bSBoaWdobHkgc2tlcHRpY2FsIG9mIHB1cmUgcmFuZG9tIGZ1enppbmcgc3VjY2VlZGluZyB3aXRoIGNvbXBsZXggZmlybXdhcmUgaW5pdGlhbGl6YXRpb24gaGFuZHNoYWtlcy4gVGhlc2UgcHJvdG9jb2xzIGFyZSBvZnRlbiBpbnRyaWNhdGUgYW5kIHJlcXVpcmUgc3BlY2lmaWMga25vd2xlZGdlIG9mIHRoZSBleHBlY3RlZCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbW1hbmQgc2VxdWVuY2VzLiBVbmxlc3Mgd2UgaGF2ZSBkZWRpY2F0ZWQgU3l6bGFuZyBkZXNjcmlwdGlvbnMgdGFpbG9yZWQgZm9yIHRoZSBgYnJjbWZtYWNgIFVTQiBwcm90b2NvbCwgSSB0aGluayB3ZSYjMzk7cmUgZ29pbmcgdG8gaGl0IGEgd2FsbC4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY2hlY2sgdG8gY29uZmlybSBpZiBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucyBleGlzdCBmb3IgYGJyY21mbWFjYCwgaWYgdGhleSBkb24mIzM5O3Qgd2Ugd2lsbCBoYXZlIHRvIG1ha2UgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZm1hYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy9saW51eC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDk2NAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDUwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdvcnRoaW5lc3Mgb2YgRnV6emluZyBhIFBhdGNoKioKCk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdC4gVGhlIHByb21wdCBjbGVhcmx5IHN0YXRlcyBJIGNhbiYjMzk7dCBkaXJlY3RseSBzZWFyY2ggc3l6a2FsbGVyLXNwZWNpZmljIGRlc2NyaXB0aW9ucy4gVGhhdCBtZWFucyBJIGNhbiYjMzk7dCB1c2UgYGdyZXBwZXJgIG9uIGBzeXMvbGludXgvYCBvciBhbnl0aGluZyB3aXRoICYjMzQ7c3l6XyYjMzQ7IGluIGl0LiBUaGF0JiMzOTtzIGEgZ29vZCByZW1pbmRlci4gQnV0LCB0aGUgb3ZlcmFyY2hpbmcgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSBpZiB0aGUgcGF0Y2ggaXMgKndvcnRoKiBmdXp6aW5nLiBBbmQgZXZlbiBpZiBzeXprYWxsZXIgY2FuJiMzOTt0IGRpcmVjdGx5ICpkZXNjcmliZSogaXQsIGRvZXNuJiMzOTt0IG1lYW4gaXQgY2FuJiMzOTt0IHJlYWNoIGl0LiBTbyBJIG5lZWQgdG8ga2VlcCB0aGF0IHBlcnNwZWN0aXZlLiBTeXprYWxsZXIgbWlnaHQgc3RpbGwgYmUgYWJsZSB0byBoaXQgaXQuIFJlYWNoYWJsZSBjb3JlL2RyaXZlciBsb2dpYyBpcyBhbHdheXMgd29ydGggY29uc2lkZXJhdGlvbi4KCkFscmlnaHQsIHRoZSBuZXh0IHBhcnQgb2YgdGhlIHByb21wdCBvdXRsaW5lcyBzb21lIHNwZWNpZmljIHNjZW5hcmlvcyB3aGVyZSBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZXNlIGFyZTogZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcgKHByX2VyciwgcHJpbnRrLCB0cmFjZXBvaW50cyksIG51bWVyaWMgY29uc3RhbnQgY2hhbmdlcyAodW5sZXNzIHRoZXkgaW1wYWN0IGV4ZWN1dGlvbiksIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBHb3QgaXQuIEkgbmVlZCB0byBiZSBkaWxpZ2VudCBhYm91dCBpZGVudGlmeWluZyB0aGVzZS4KCk5vdywgb24gdG8gdGhlIGFjdHVhbCBwYXRjaCBJJiMzOTttIGV4YW1pbmluZy4gSSYjMzk7bSBsb29raW5nIGF0IGBicmNtZm1hY2AsIGEgQnJvYWRjb20gRnVsbE1BQyB3aXJlbGVzcyBkcml2ZXIgdGhhdCBzdXBwb3J0cyBQQ0llLCBTRElPLCBhbmQgVVNCLiBJbXBvcnRhbnQuIFBDSWUgYW5kIFNESU8gYXJlbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBIb3dldmVyLCBVU0IgKmlzKiBlbXVsYXRlZCB2aWEgYGR1bW15X2hjZGAsIFVTQiBnYWRnZXQuIFNvLCB0aGUgcXVlc3Rpb24gYmVjb21lczogY2FuIGBicmNtZm1hY2AmIzM5O3MgVVNCIHBhdGggYmUgcmVhY2hlZD8gVGhlIGFuc3dlciBpcyB5ZXMsIHRocm91Z2ggdGhlIGBkdW1teV9oY2RgLiBCdXQuLi4gdGhlIHBhdGNoIG1vZGlmaWVzIG11bHRpcGxlIGZpbGVzOiBgbXNnYnVmLmNgLCBgZmxvd3JpbmcuY2AsIGBwY2llLmNgLCBgc2Rpby5jYCwgYGNmZzgwMjExLmNgLCBgY29yZS5jYCwgYW5kIGBhbXBkdS5jYC4gTm93IEkgbmVlZCB0byBleGFtaW5lIHRvIHdoYXQgZXh0ZW50IHRoZSBwYXJ0cyBvZiBgYnJjbWZtYWNgIHdoaWNoIHVzZSBVU0IgYXJlIG1vZGlmaWVkLiBgcGNpZS5jYCBhbmQgYHNkaW8uY2AgYXJlIG5vdCBhcHBsaWNhYmxlLCBhcyB3ZSBqdXN0IGxlYXJuZWQuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93bi4gQXJlIGBtc2didWYuY2AgYW5kIGBmbG93cmluZy5jYCB1c2VkIGJ5IFVTQj8gUmVtZW1iZXIsIEkmIzM5O20gdHJ5aW5nIHRvIGRlY2lkZSBpZiB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEkgcmVjYWxsIHRoYXQgYEJSQ01GX1BST1RPX0JDRENgIGlzIHVzZWQgZm9yIFVTQi4gVGhlcmVmb3JlLCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIGBCUkNNRl9QUk9UT19CQ0RDYCBtYWtlcyB1c2Ugb2YgZWl0aGVyIGBtc2didWYuY2Agb3IgYGZsb3dyaW5nLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZpbGVzIGFyZSB1c2VkIGJ5IGVhY2ggVVNCIHByb3RvY29sLCBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkmIzM5O3JlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNTc1PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1ODA6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTgxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg9MzI9dm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oOjMzOmludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTM0LXZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNS0jZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oOjM2OnN0YXRpYyBpbmxpbmUgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM1LVx0fSBlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzY6XHRcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzctXHRcdFx0Z290byBmYWlsO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc1OQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIGBtc2didWYuY2AgRGVwZW5kZW5jeSoqCgpBbHJpZ2h0LCBzbyB0aGUgYG1zZ2J1Zi5jYCBmaWxlIGlzIG9ubHkgcHVsbGVkIGluIHdoZW4gYHByb3RvX3R5cGVgIGlzIHNldCB0byBgQlJDTUZfUFJPVE9fTVNHQlVGYC4gU3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgYnV0IHRoYXQgYmVncyB0aGUgcXVlc3Rpb246IFdoZXJlIGlzIGBCUkNNRl9QUk9UT19NU0dCVUZgIGFjdHVhbGx5ICpkZWZpbmVkKiBhbmQsIGNyaXRpY2FsbHksICpob3cqIGlzIGl0IGJlaW5nIHNldD8gV2UgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIFRoZSBkZXBlbmRlbmN5IG9uIGBtc2didWYuY2AgaXMgY29uZGl0aW9uYWwgb24gYSBwcm90b2NvbCB0eXBlLCBzbyBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgYnVzIHRoYXQgY29uZmlndXJlcyBgQlJDTUZfUFJPVE9fTVNHQlVGYCwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoYXQgdHJpZ2dlcnMgdGhlIGluY2x1c2lvbiBvZiBgbXNnYnVmLmNgLiBVbmRlcnN0YW5kaW5nIHRoZSBidXMgaW1wbGVtZW50YXRpb24gc2V0dGluZyB0aGUgc3BlY2lmaWMgcHJvdG9jb2wgd2lsbCBiZSBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB3aGVyZSBgbXNnYnVmLmNgIGlzIHVzZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHdoZXJlIHRoYXQgdmFyaWFibGUgaXMgYmVpbmcgYXNzaWduZWQuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfUFJPVE9fTVNHQlVGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9NTA9ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtNTEtXHRCUkNNRl9QUk9UT19CQ0RDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjUyOlx0QlJDTUZfUFJPVE9fTVNHQlVGXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtNTMtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0ODk9YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU2NC1cdGJ1cy1cdTAwM2VvcHMgPSBcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1NjU6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU2Ni1cdGJ1cy1cdTAwM2VjaGlwID0gZGV2aW5mby1cdTAwM2Vjb3JlaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM0LVx0XHRcdGdvdG8gZmFpbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM1Olx0fSBlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzYtXHRcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTU5PXZvaWQgYnJjbWZfcHJvdG9fZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjUtXHRcdFx0YnJjbWZfcHJvdG9fYmNkY19kZXRhY2goZHJ2cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzo2NjpcdFx0ZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02Ny1cdFx0XHRicmNtZl9wcm90b19tc2didWZfZGV0YWNoKGRydnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgyOQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBSZWFjaGFibGUgQ29kZSBQYXRocyoqCgpPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUsIGl0IHNlZW1zIHRoYXQgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgKm9ubHkqIHVzZWQgd2l0aGluIHRoZSBQQ0llIGNvbnRleHQuIEFuZCBgZmxvd3JpbmcuY2Agc2VlbXMgdG8gYmUgbGlua2VkIHdpdGggYG1zZ2J1Zi5jYC4gVGhlcmVmb3JlLCBgbXNnYnVmLmNgLCBgZmxvd3JpbmcuY2AsIGFuZCBgcGNpZS5jYCBhcmUgYWxsIFBDSWUtc3BlY2lmaWMgbW9kdWxlcy4gQnV0IHdoYXQgYWJvdXQgU0RJTz8gQWgsIGBzZGlvLmNgIGlzIFNESU8tc3BlY2lmaWMuIEZpbmUuIGBjZmc4MDIxMS5jYCBhbmQgYGNvcmUuY2AgYXBwZWFyIHRvIGJlIHNoYXJlZCBtb2R1bGVzIOKAkyB3aGljaCBpcyBleHBlY3RlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBgYnJjbWZtYWNgIFdpLUZpIGRyaXZlci4gSXQmIzM5O3MgYSBGdWxsTUFDIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQgcmVsaWVzIG9uIGZpcm13YXJlIGZvciBvcGVyYXRpb25zIGFuZCBjb21tYW5kIHJlc3BvbnNlcy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHdoZXRoZXIgd2UgY2FuIGdldCB0byBgY2ZnODAyMTEuY2AgYW5kIGBjb3JlLmNgLiBJZiB3ZSBlbXVsYXRlIHRoZSBVU0IgZGV2aWNlIHZpYSBhIGZ1enplciwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHRoZXJlLgoKVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgJiMzNDtjYW4gd2UgcmVhY2ggdGhlc2UgYXJlYXMgaW4gUUVNVT8mIzM0Oy4gVGhlIGFuc3dlciwgYXMgSSBzZWUgaXQsIGlzIHllcy4gV2UgY2FuIHJlYWNoIGBjZmc4MDIxMS5jYCBhbmQgYGNvcmUuY2AgaW4gUUVNVSwgc3BlY2lmaWNhbGx5IGJ5IFVTQiBmdXp6aW5nLgoKSGFuZyBvbiwgdGhlIHByb21wdCBlbXBoYXNpemVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBtZW50aW9ucyB0aGUgdXN1YWwgc3VzcGVjdHM6IGNvZGUgZGVwZW5kZW50IG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgY2FyZHMgKGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4pLiBCdXQgYGJyY21mbWFjYCBpcyBhIFdpLUZpIGRyaXZlciwgd2l0aCBhIFVTQiBpbnRlcmZhY2UuIFRoaXMgbWVhbnMgdGhlIFVTQiBwb3J0aW9ucyBhbmQgdGhlIHNoYXJlZCBwYXJ0cyBvZiB0aGUgZHJpdmVyIChgY2ZnODAyMTEuY2AsIGBjb3JlLmNgKSBhcmUgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBnYWRnZXQgZW11bGF0aW9uLgoKSSBhbHNvIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGVsc2UuIGBicmNtc21hY2AgYWxzbyBhcHBlYXJzIHRvIGhhdmUgbW9kaWZpY2F0aW9ucy4gU3BlY2lmaWNhbGx5LCBgYW1wZHUuY2AuIExldCBtZSBxdWlja2x5IGNvbmZpcm0uIElzIGBicmNtc21hY2AgYWxzbyBQQ0llLW9ubHk/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYz0xMzE4PXN0YXRpYyBERUNMQVJFX1dPUksoYnJjbXNfZHJpdmVyX3dvcmssIGJyY21zX2RyaXZlcl9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoxMzIwOnN0YXRpYyBpbnQgX19pbml0IGJyY21zX21vZHVsZV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMzIxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYz0xMzM2PXN0YXRpYyB2b2lkIF9fZXhpdCBicmNtc19tb2R1bGVfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoxMzQzOm1vZHVsZV9pbml0KGJyY21zX21vZHVsZV9pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzNDQtbW9kdWxlX2V4aXQoYnJjbXNfbW9kdWxlX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA3NQoJCQkJCQkJb3V0cHV0OiA2MAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gYnJjbXNfbW9kdWxlX2luaXQqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGBicmNtc19tb2R1bGVfaW5pdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtb2R1bGUmIzM5O3MgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBkb2luZy4gSXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIGtub3c6IHdoYXQgcmVzb3VyY2VzIGlzIGl0IGdyYWJiaW5nPyBXaGF0IHN0cnVjdHVyZXMgaXMgaXQgYWxsb2NhdGluZyBhbmQgcG9wdWxhdGluZz8gQW55IGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGl0JiMzOTtzIGtpY2tpbmcgb2ZmPyBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBiZWluZyBpbml0aWFsaXplZD8gQW55IGludGVyYWN0aW9uIHdpdGggdGhlIGNvcmUgZmlybXdhcmUgb3IgZGV2aWNlIGRyaXZlcnM/IElzIHRoZXJlIGFueSBpbnRlcmVzdGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBhbnkgY2FsbHMgdG8gYHJlcXVlc3RfbWVtX3JlZ2lvbmAgb3IgYGlvcmVtYXBgLi4uIHRoYXQmIzM5O2xsIGdpdmUgbWUgYSBoYW5kbGUgb24gbWVtb3J5IG1hbmFnZW1lbnQuIFRoZW4sIHRoZSBjYWxscyB0byByZWdpc3RlciBkZXZpY2UgZHJpdmVycywgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgYW55IFBDSSBjb25maWd1cmF0aW9uIHJvdXRpbmVzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgY2FyZWZ1bGx5LCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiwgcGFydGljdWxhcmx5IHJhY2UgY29uZGl0aW9ucyBvciByZXNvdXJjZSBjb25mbGljdHMuIFVuZGVyc3RhbmRpbmcgdGhpcyByb3V0aW5lIGlzIGdvaW5nIHRvIGJlIGtleSB0byBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIEJyb2FkY29tIHdpcmVsZXNzIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTMyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzIwOlx0c3RhdGljIGludCBfX2luaXQgYnJjbXNfbW9kdWxlX2luaXQodm9pZClcbjEzMjE6XHR7XG4xMzIyOlx0XHRicmNtc19kZWJ1Z2ZzX2luaXQoKTtcbjEzMjM6XHRcdGlmICghc2NoZWR1bGVfd29yayhcdTAwMjZicmNtc19kcml2ZXJfd29yaykpXG4xMzI0Olx0XHRcdHJldHVybiAtRUJVU1k7XG4xMzI1Olx0XG4xMzI2Olx0XHRyZXR1cm4gMDtcbjEzMjc6XHR9XG4xMzI4Olx0XG4xMzI5Olx0LypcbjEzMzA6XHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9hZHMgdGhlIGJyY21zbWFjIGRyaXZlciBmcm9tIHRoZSBzeXN0ZW0uXG4xMzMxOlx0ICpcbjEzMzI6XHQgKiBUaGlzIGZ1bmN0aW9uIHVuY29uZGl0aW9uYWxseSB1bmxvYWRzIHRoZSBicmNtc21hYyBkcml2ZXIgbW9kdWxlIGZyb20gdGhlXG4xMzMzOlx0ICogc3lzdGVtLlxuMTMzNDpcdCAqXG4xMzM1Olx0ICovXG4xMzM2Olx0c3RhdGljIHZvaWQgX19leGl0IGJyY21zX21vZHVsZV9leGl0KHZvaWQpXG4xMzM3Olx0e1xuMTMzODpcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZicmNtc19kcml2ZXJfd29yayk7XG4xMzM5Olx0XHRiY21hX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmJyY21zX2JjbWFfZHJpdmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk2NjUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxOTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgQXNzZXNzbWVudCBmb3IgYnJjbWZtYWMvYnJjbXNtYWMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBicmNtc21hY2AgcmVnaXN0ZXJzIGEgYGJjbWFgIGRyaXZlciwgd2hpY2ggaXMgQnJvYWRjb20mIzM5O3MgaW50ZXJuYWwgYnVzLCB1c3VhbGx5IFBDSWUgb3IgU29DLiBDYW4gd2UgZnV6eiBgYmNtYWA/IFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgYGJjbWFgIGZ1enplciwgdGhhdCBzZWVtcyBsaWtlIGEgZGVhZCBlbmQuIEhvd2V2ZXIsIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgc28gbWF5YmUgdGhhdCYjMzk7cyB0aGUgYW5nbGUuCgpUaGlzIHNwZWNpZmljIHBhdGNoIG1vZGlmaWVzIGBicmNtZm1hYy9jZmc4MDIxMS5jYCBhbmQgYGJyY21mbWFjL2NvcmUuY2AuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMgaW4gYGNmZzgwMjExLmNgOiBgYnJjbWZfZGVsYXlgIGlzIGJlaW5nIGNoYW5nZWQsIGFuZCBhIG5ldyBmdW5jdGlvbiBgYnJjbWZfcG1rc2FfdjJfb3BgIGlzIGFkZGVkLCBhbG9uZyB3aXRoIG1vZGlmaWNhdGlvbnMgdG8gYGJyY21mX2NmZzgwMjExX3NldF9wbWtzYWAsIGBicmNtZl9jZmc4MDIxMV9kZWxfcG1rc2FgLCBhbmQgYGJyY21mX2NmZzgwMjExX2ZsdXNoX3Bta3NhYCB0byB1c2UgdGhhdCBuZXcgZnVuY3Rpb24uCgpDYW4gd2UgcmVhY2ggYGJyY21mX2NmZzgwMjExX3NldF9wbWtzYWA/IFllcywgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMsIGxpa2UgYE5MODAyMTFfQ01EX1NFVF9QTUtTQWAuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCB3aXRoIGNmZzgwMjExIGZpcnN0LiBBbmQgdGhhdCByZXF1aXJlcyB0aGUgZmlybXdhcmUgdG8gYmUgbG9hZGVkIGFuZCB0aGUgZGV2aWNlIHRvIHJlc3BvbmQgdG8gY29tbWFuZHMuIElmIHN5emthbGxlciBjYW4gZW11bGF0ZSB0aGUgVVNCIGRldmljZSwgdGhhdCBtYXkgd29yay4KCkJ1dCBkb2VzIHN5emthbGxlciAqYWN0dWFsbHkqIGVtdWxhdGUgYGJyY21mbWFjYCBVU0I/ICBUaGUgYGR1bW15X2hjZGAganVzdCBsZXRzIHN5emthbGxlciBpbmplY3QgVVNCIGRlc2NyaXB0b3JzIGFuZCByZXNwb25kIHRvIFVTQiB0cmFuc2ZlcnMsIGl0IGRvZXNuJiMzOTt0IGhhdmUgYSBzcGVjaWFsaXplZCBzdGF0ZSBtYWNoaW5lIGZvciBgYnJjbWZtYWNgIGZpcm13YXJlLiBTeXprYWxsZXIgY2FuIGdlbmVyYXRlIHJhbmRvbSBVU0IgcmVzcG9uc2VzLCBidXQgd2lsbCB0aGF0IGJlIGVub3VnaCB0byBwYXNzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHBoYXNlPyBgcmVxdWVzdF9maXJtd2FyZWAgbmVlZHMgdG8gc3VjY2VlZC4gU3l6a2FsbGVyIGltYWdlcyBtYXkgbm90IGhhdmUgQnJvYWRjb20gZmlybXdhcmUgYXZhaWxhYmxlLCBhbHRob3VnaCBpdCBjYW4gaW5qZWN0IGZpcm13YXJlIHRocm91Z2ggYHN5el9tb3VudF9pbWFnZWAgb3IgaW4gYC9saWIvZmlybXdhcmVgLiBMZXQmIzM5O3MgYXNzdW1lIHRoYXQgc3l6a2FsbGVyIGhhcyBzb21lIEJyb2FkY29tIGZpcm13YXJlIGF2YWlsYWJsZS4KCkV2ZW4gd2l0aCB0aGUgZmlybXdhcmUsIHRoZSBkcml2ZXIgcmVhZHMgaXQsIHNlbmRzIGl0IHZpYSBVU0IsIGFuZCBleHBlY3RzIHRoZSBmaXJtd2FyZSB0byBib290IGFuZCByZXNwb25kIHRvIHNwZWNpZmljIEJyb2FkY29tIGNvbW1hbmRzLiBUaGUgcHJvYmFiaWxpdHkgb2YgYSByYW5kb20gZnV6emVyIGdlbmVyYXRpbmcgKnZhbGlkKiBCcm9hZGNvbSBjb21tYW5kIHJlc3BvbnNlcyBpcyBhc3Ryb25vbWljYWxseSBsb3cuICBTeXprYWxsZXIgaGFzIGBtYWM4MDIxMV9od3NpbWAgZm9yIFdpLUZpIGZ1enppbmcsIGJ1dCBgbWFjODAyMTFfaHdzaW1gIGlzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCBhbmQgYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIHRoYXQgdXNlcyBgY2ZnODAyMTFgLCBub3QgYG1hYzgwMjExYC4gU28gdGhhdCYjMzk7cyBub3QgcmVsZXZhbnQuCgpJcyBgYnJjbWZtYWNgIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgcHJvbXB0PyAgVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIGBicmNtZm1hY2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLiBJdCByZXF1aXJlcyBoYXJkd2FyZSAoQnJvYWRjb20gY2hpcHMpIG9yIGNvbXBsZXggVVNCIGVtdWxhdGlvbi4KClN5emthbGxlciAqaGFzKiBmb3VuZCBidWdzIGluIG1hbnkgVVNCIFdpLUZpIGRyaXZlcnMgbGlrZSBgYXRoOWtfaHRjYCwgYHJ0dzg4YCwgYG10NzZgLCBgcnRsOHh4eHVgIHZpYSBVU0IgZW11bGF0aW9uLCBidXQgdGhhdOKAmXMgZGlmZmVyZW50IHRoYW4gZ2V0dGluZyBgYnJjbWZtYWNgIHdvcmtpbmcuIElmIGBicmNtZm1hY2AgcmVsaWVzIG9uIGByZXF1ZXN0X2Zpcm13YXJlYCwgaXQgbWlnaHQgZmFpbCBlYXJseS4gSG93ZXZlciwgc3l6a2FsbGVyJiMzOTtzIGBkdW1teV9oY2RgIGNhbiBvZnRlbiBoaXQgYnVncyBpbiBwcm9iZSBvciBlYXJseSBpbml0aWFsaXphdGlvbi4gQnV0IHRoaXMgcGF0Y2gmIzM5O3MgbW9kaWZpY2F0aW9ucyBhcmUgaW4gZGF0YSBwYXRocyAoUlgvVFgpIG9yIGNmZzgwMjExIG9wZXJhdGlvbnM6CgotICAgYGJyY21mX3Bta3NhX3YyX29wYCAoY2ZnODAyMTEgb3BzLCByZXF1aXJlcyByZWdpc3RlcmVkIHdpcGh5KQotICAgYGJyY21mX25ldGlmX21vbl9yeGAgKHJ4IHBhdGgsIHJlcXVpcmVzIHJlZ2lzdGVyZWQgbmV0ZGV2KQotICAgYGJyY21mX2Zsb3dyaW5nX2Jsb2NrYCwgYGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGFgLCBgYnJjbWZfcGNpZV9zZW5kX21iX2RhdGFgICh0eCBwYXRoLCBQQ0llIHNwZWNpZmljKQotICAgYGJyY21mX3NkaW9fcnhnbG9tYCAoU0RJTyBzcGVjaWZpYykKLSAgIGBicmNtc19jX2FtcGR1X2FkZF9mcmFtZWAgKGJyY21zbWFjLCBiY21hIGJ1cykKClRoZSBQQ0llLCBTRElPIGFuZCBCQ01BIHBhcnRzIGFyZSB1bnJlYWNoYWJsZSBpbiBRRU1VLiBUaGUgVVNCIGRhdGEgcGF0aHMgYXJlIHVubGlrZWx5IHRvIGJlIGhpdCBzaW5jZSB0aGV5IHJlcXVpcmUgdGhlIGRldmljZSB0byBiZSBmdWxseSBpbml0aWFsaXplZC4KCkkgc2VlIGEgY29tbWl0IG1lc3NhZ2UgdGhhdCBzZWVtcyBsaWtlIGEgc3l6a2FsbGVyIHRyaWFnZSwgYnV0IHRoaXMgaXMgbWVyZWx5IGEgcGF0Y2ggKnN1Ym1pdHRlZCogZm9yIHRlc3RpbmcKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9yeF9mcmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTI3OT1zdGF0aWMgaW5saW5lIHZvaWQgYnJjbWZfYnVzX3JlbW92ZShzdHJ1Y3QgYnJjbWZfYnVzICpidXMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTI5My0vKiBSZWNlaXZlIGZyYW1lIGZvciBkZWxpdmVyeSB0byBPUy4gIENhbGxlZSBkaXNwb3NlcyBvZiByeHAuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6Mjk0OnZvaWQgYnJjbWZfcnhfZnJhbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqcnhwLCBib29sIGhhbmRsZV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0yOTUtXHRcdCAgICBib29sIGluaXJxKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jPTQ4OT1zdGF0aWMgaW50IGJyY21mX3J4X2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM6NTA4OnZvaWQgYnJjbWZfcnhfZnJhbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIGhhbmRsZV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMtNTA5LVx0XHQgICAgYm9vbCBpbmlycSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jPTE1MTQ9c3RhdGljIHU4IGJyY21mX3NkaW9fcnhnbG9tKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHU4IHJ4c2VxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMtMTczMS1cdFx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjE3MzI6XHRcdFx0XHRicmNtZl9yeF9mcmFtZShidXMtXHUwMDNlc2Rpb2Rldi1cdTAwM2VkZXYsIHBmaXJzdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMtMTczMy1cdFx0XHRcdFx0ICAgICAgIGZhbHNlLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYz0xODcwPXN0YXRpYyB1aW50IGJyY21mX3NkaW9fcmVhZGZyYW1lcyhzdHJ1Y3QgYnJjbWZfc2RpbyAqYnVzLCB1aW50IG1heGZyYW1lcylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTIwNjUtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6MjA2NjpcdFx0XHRicmNtZl9yeF9mcmFtZShidXMtXHUwMDNlc2Rpb2Rldi1cdTAwM2VkZXYsIHBrdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMtMjA2Ny1cdFx0XHRcdCAgICAgICBmYWxzZSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01MDc9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTI3LVx0XHRza2JfcHV0KHNrYiwgdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjUyODpcdFx0YnJjbWZfcnhfZnJhbWUoZGV2aW5mby1cdTAwM2VkZXYsIHNrYiwgdHJ1ZSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTI5LVx0XHRicmNtZl91c2JfcnhfcmVmaWxsKGRldmluZm8sIHJlcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNjk4CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUlggRnJhbWUgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgaG93IGRhdGEgZ2V0cyByZWNlaXZlZCBvdmVyIFVTQiBpbiB0aGlzIGBicmNtZmAgZHJpdmVyLiBJIHNlZSB0aGF0IGBicmNtZl9yeF9mcmFtZWAgaXMgdGhlIHVsdGltYXRlIGhhbmRsZXIgZm9yIGluY29taW5nIGZyYW1lcywgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBicmNtZl91c2JfcnhfY29tcGxldGVgLiBgYnJjbWZfdXNiX3J4X2NvbXBsZXRlYCBpcyB0cmlnZ2VyZWQgd2hlbiBhIFVTQiBidWxrIElOIHRyYW5zZmVyIGlzIGNvbXBsZXRlLiBSaWdodCwgbWFrZXMgc2Vuc2UuIFNvLCBpZiBhIGZ1enplciwgZm9yIGV4YW1wbGUsIHNlbmRzIGEgYnVsayBJTiB0cmFuc2ZlciB0byB0aGUgZGV2aWNlLCBpdCYjMzk7bGwgaGl0IGBicmNtZl91c2JfcnhfY29tcGxldGVgLCBhbmQgdGhhdCBmdW5jdGlvbiB3aWxsIGluIHR1cm4gY2FsbCBgYnJjbWZfcnhfZnJhbWVgIHRvIHByb2Nlc3MgdGhlIGRhdGEuCgpIbW0sIGEgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBicmNtZl91c2JfcnhfY29tcGxldGVgIGhhdmUgYW55IHByZWNvbmRpdGlvbnM/IFNwZWNpZmljYWxseSwgZG9lcyBpdCByZXF1aXJlIHRoZSBVU0IgZGV2aWNlIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYW5kIGluIGEgc3RhYmxlIHN0YXRlIGJlZm9yZSBpdCBjYW4gZXhlY3V0ZSBjb3JyZWN0bHk/IFRoaXMgaXMgc29tZXRoaW5nIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5LCBhcyBpdCBoYXMgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGNvdmVyYWdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVuIGFuZCBob3cgdGhvc2UgVVNCIFVSQnMgYXJlIHN1Ym1pdHRlZCBpbiB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gZ28gYmFjayBhbmQgZXhhbWluZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgdG8gc2VlIGhvdyB0aGUgZGV2aWNlIGlzIHNldCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3J4X3JlZmlsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTIwPXN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNjM6c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X3JlZmlsbChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTY0LVx0XHRcdFx0c3RydWN0IGJyY21mX3VzYnJlcSAgKnJlcSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTUwNz1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01MjgtXHRcdGJyY21mX3J4X2ZyYW1lKGRldmluZm8tXHUwMDNlZGV2LCBza2IsIHRydWUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjUyOTpcdFx0YnJjbWZfdXNiX3J4X3JlZmlsbChkZXZpbmZvLCByZXEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUzMC1cdFx0dXNiX21hcmtfbGFzdF9idXN5KHVyYi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01MzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTM5OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9yeF9yZWZpbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU0MC1cdFx0XHRcdHN0cnVjdCBicmNtZl91c2JyZXEgICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTU3MT1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfZmlsbF9hbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzktXHR3aGlsZSAoKHJlcSA9IGJyY21mX3VzYl9kZXEoZGV2aW5mbywgXHUwMDI2ZGV2aW5mby1cdTAwM2VyeF9mcmVlcSwgTlVMTCkpICE9IE5VTEwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTgwOlx0XHRicmNtZl91c2JfcnhfcmVmaWxsKGRldmluZm8sIHJlcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTgxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ4NDgKCQkJCQkJCW91dHB1dDogNTYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MgbGFpZCBvdXQsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgYGJyY21mX3VzYl9yeF9maWxsX2FsbGAqKgoKQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBicmNtZl91c2JfcnhfZmlsbF9hbGxgIGlzIGJlaW5nIHVzZWQuIFdoZXJlIGRvZXMgaXQgZml0IGludG8gdGhlIGJyb2FkZXIgZGF0YSBmbG93IHdpdGhpbiB0aGlzIEJyb2FkY29tIFVTQiBXaS1GaSBkcml2ZXI/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgLSBsaWtlbHkgZ3JlcCBvciBzb21lIGNvZGUgbmF2aWdhdGlvbiB0b29scyAtIHRvIHBpbnBvaW50IGV2ZXJ5IGluc3RhbmNlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgaW52b2tlZC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBpcyBjcnVjaWFsIGZvciBncmFzcGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsbHkgZGlhZ25vc2luZyBhbnkgaXNzdWVzIEkgbWlnaHQgYmUgc2VlaW5nIG9yIGFudGljaXBhdGluZy4gVGhpcyBxdWljayBjaGVjayB3aWxsIGdpdmUgbWUgYSBjcml0aWNhbCBvdmVydmlldyBiZWZvcmUgSSBkZWx2ZSBpbnRvIHRoZSBmdW5jdGlvbiYjMzk7cyBpbnRlcm5hbCBsb2dpYy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl91c2JfcnhfZmlsbF9hbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTUzOT1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfcmVmaWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjU3MTpzdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfZmlsbF9hbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTY2NT1zdGF0aWMgaW50IGJyY21mX3VzYl91cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY5My1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2OTQ6XHRicmNtZl91c2JfcnhfZmlsbF9hbGwoZGV2aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjk1LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE0OTg9c3RhdGljIGludCBicmNtZl91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA1LVx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MDY6XHRicmNtZl91c2JfcnhfZmlsbF9hbGwoZGV2aW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUwNy1cdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShkZXZpbmZvLVx1MDAzZWRldiwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTY1OQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBicmNtZl91c2JfdXBgIENhbGwgU2l0ZSoqCgpPa2F5LCBzbyBgYnJjbWZfdXNiX3VwYCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgVVNCIGJ1cyBpdHNlbGYgaXMgYWN0aXZhdGVkLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgaG9vayB0byB1bmRlcnN0YW5kLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHBpbnBvaW50IGV4YWN0bHkgKndoZXJlKiB0aGF0IGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBpbiB0aGUgZHJpdmVyLiBUaGlzIGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCB1bmRlcnN0YW5kaW5nIHRoZSBidXMtc3BlY2lmaWMgc2V0dXAgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIGluc3RhbmNlcyBvZiBgYnJjbWZfdXNiX3VwYCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0JiMzOTtzIGludm9rZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIFVTQiBpbnRlcmZhY2UgY29tZXMgdG8gbGlmZSB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX3VzYl91cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjA4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3R4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY2NTpzdGF0aWMgaW50IGJyY21mX3VzYl91cChzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE2NjpcdC5wcmVpbml0ID0gYnJjbWZfdXNiX3VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNjctXHQuc3RvcCA9IGJyY21mX3VzYl9kb3duLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjIyMAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDgwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSB3aXRoIEZpcm13YXJlIExvYWRpbmcgYW5kIER1bW15IFVTQiBEZXZpY2VzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBicmNtZl91c2JfdXBgIGlzIHRoZSBgcHJlaW5pdGAgY2FsbGJhY2sgZm9yIHRoaXMgYnVzLiBJIHJlbWVtYmVyIHNlZWluZyBlYXJsaWVyIHRoYXQgYGJyY21mX2J1c19wcmVpbml0YCBpcyBjYWxsZWQgZnJvbSBgYnJjbWZfYnVzX3N0YXJ0ZWRgLCB3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGZyb20gYGJyY21mX2F0dGFjaGAuIEZ1cnRoZXIgYmFjaywgYGJyY21mX2F0dGFjaGAgZ2V0cyBjYWxsZWQgZnJvbSBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAsIGFuZCB0aGF0JiMzOTtzIHRyaWdnZXJlZCBhZnRlciBmaXJtd2FyZSBsb2FkaW5nLiBTbywgaWYgZmlybXdhcmUgbG9hZGluZyBnb2VzIGJlbGx5LXVwLCBgYnJjbWZfdXNiX3VwYCBuZXZlciBydW5zLiBObyBVUkJzIGdldCBzdWJtaXR0ZWQsIGFuZCB0aGVyZWZvcmUgYGJyY21mX3VzYl9yeF9jb21wbGV0ZWAgbmV2ZXIgZ2V0cyBpbnZva2VkLCB3aGljaCBtZWFucyBgYnJjbWZfbmV0aWZfbW9uX3J4YCBpcyB1bnJlYWNoYWJsZS4gU2ltcGxlIGVub3VnaC4KCkJ1dCB3aGF0IGFib3V0IGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgPyBUaGF0JiMzOTtzIGEgY2ZnODAyMTEgY2FsbGJhY2ssIGFuZCB0aG9zZSByZXF1aXJlIHRoZSB3aXBoeSB0byBiZSByZWdpc3RlcmVkLiBUaGUgd2lwaHkgZ2V0cyByZWdpc3RlcmVkIGluIGBicmNtZl9jZmc4MDIxMV9hdHRhY2hgLCB3aGljaCBpcyBhbHNvIGNhbGxlZCBmcm9tIGBicmNtZl9idXNfc3RhcnRlZGAuIFRoaXMgcmVpbmZvcmNlcyB0aGUgY29uY2x1c2lvbjogaWYgZmlybXdhcmUgbG9hZGluZyBmYWlscywgdGhlIHdpcGh5IGRvZXNuJiMzOTt0IHJlZ2lzdGVyLCBhbmQgbm8gY2ZnODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGNhbGxlZC4gVGhlIGVudGlyZSBkcml2ZXIgbG9naWMgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB3aXRob3V0IHN1Y2Nlc3NmdWwgZmlybXdhcmUgbG9hZGluZy4KCk5vdywgdGhlIGludGVyZXN0aW5nIHBhcnQuIERvZXMgc3l6a2FsbGVyIGFjdHVhbGx5ICpwcm92aWRlKiBCcm9hZGNvbSBmaXJtd2FyZT8gSXQgdXN1YWxseSB1c2VzIGdlbmVyaWMgRGViaWFuIG9yIEJ1aWxkcm9vdCBpbWFnZXMuIFR5cGljYWxseSwgYGxpbnV4LWZpcm13YXJlYCBpcyBpbmNsdWRlZCBpbiB0aG9zZSBEZWJpYW4gaW1hZ2VzLiBTbywgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYGJyY21mbWFjYCBmaXJtd2FyZSAqbWlnaHQqIGJlIHByZXNlbnQuIElmIGl0ICppcyogcHJlc2VudCwgYHJlcXVlc3RfZmlybXdhcmVgIHNob3VsZCBzdWNjZWVkLiBUaGVuLCBgYnJjbWZfdXNiX2Z3X2Rvd25sb2FkYCB3aWxsIHRyeSB0byBzZW5kIHRoZSBmaXJtd2FyZSB0byB0aGUgZHVtbXkgVVNCIGRldmljZS4gVGhpcyBkdW1teSBkZXZpY2Ugd2lsbCBqdXN0IGFjY2VwdCB0aGUgY29udHJvbCBtZXNzYWdlcywgb3IgZmFpbCBkZXBlbmRpbmcgb24gaG93IHRoZSBmdXp6ZXIgaXMgYmVoYXZpbmcuIElmIHRoZSBmdXp6ZXIgaXMgc3VjY2Vzc2Z1bCwgYGJyY21mX3VzYl9md19kb3dubG9hZGAgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KClRoYXQmIzM5O3Mgd2hlbiBgYnJjbWZfYXR0YWNoYCBpcyBjYWxsZWQuIEFuZCBgYnJjbWZfYXR0YWNoYCwgb2YgY291cnNlLCBjYWxscyBgYnJjbWZfYnVzX3N0YXJ0ZWRgLiBUaGlzIHRoZW4gdHJpZ2dlcnMgdGhlIGNhbGxpbmcgb2YgYGJyY21mX2J1c19wcmVpbml0YCAod2hpY2ggaXMgYGJyY21mX3VzYl91cGApLCB3aGljaCBzdWJtaXRzIHRob3NlIFJYIFVSQnMuIEFmdGVyd2FyZCwgaXQgY2FsbHMgYGJyY21mX2NfcHJlaW5pdF9kY21kc2AuIFRoaXMgc2VuZHMgdGhvc2UgQnJvYWRjb20tc3BlY2lmaWMgY29tbWFuZHMgdG8gdGhlIGRldmljZSBhbmQgd2FpdHMgZm9yIHRoZSByZXNwb25zZXMuIFNpbmNlIGl0JiMzOTtzIGEgZHVtbXkgZGV2aWNlLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gZ2VuZXJhdGUgdGhlIHJpZ2h0IEJyb2FkY29tLXNwZWNpZmljIHJlc3BvbnNlcy4gVGhlIGZ1enplciB3b3VsZCBoYXZlIHRvIGtub3cgKmV4YWN0bHkqIHdoYXQgdGhvc2UgcmVzcG9uc2VzIGxvb2sgbGlrZSAoZS5nLiwgdGhlIGZvcm1hdCBvZiB0aGUgYHN0cnVjdCBicmNtZl9kY21kYCB3aXRoIHRoZSByaWdodCBzdGF0dXMgYW5kIGRhdGEpIHRvIGdldCB0aHJvdWdoIGBicmNtZl9jX3ByZWluaXRfZGNtZHNgLiBUaGUgb2RkcyBvZiB0aGF0IGhhcHBlbmluZyBieSBhY2NpZGVudCBhcmUgaW5maW5pdGVzaW1hbGx5IHNtYWxsLiBJZiBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmYWlscywgYGJyY21mX2J1c19zdGFydGVkYCBmYWlscywgYW5kIGBicmNtZl9hdHRhY2hgIGZhaWxzLiBJZiBgYnJjbWZfYXR0YWNoYCBmYWlscywgdGhlIGRyaXZlciBnaXZlcyB1cCBvbiBpbml0aWFsaXphdGlvbiwgYW5kIHRoZSB3aXBoeSBkb2VzbiYjMzk7dCBnZXQgcmVnaXN0ZXJlZCwgd2hpY2ggbWVhbnMgbm8gY2ZnODAyMTEgY2FsbGJhY2tzLgoKQnV0LCB3aGF0IGFib3V0IHRob3NlIFJYIFVSQnMgdGhhdCBnb3Qgc3VibWl0dGVkIGluIGBicmNtZl91c2JfdXBgPyBJZiB0aGUgZnV6emVyIG1hbmFnZXMgdG8gY29tcGxldGUgYW4gUlggVVJCICpiZWZvcmUqIGBicmNtZl9hdHRhY2hgIGZhaWxzLCB0aGVuIGBicmNtZl91c2JfcnhfY29tcGxldGVgICp3aWxsKiBiZSBjYWxsZWQuIFRoaXMsIGluIHR1cm4sIGNhbGxzIGBicmNtZl9yeF9mcmFtZWAuIE5vdyB3ZSBuZWVkIHRvIGludmVzdGlnYXRlIGhvdyB0byBnZXQgYGJyY21mX3J4X2ZyYW1lYCB0byBldmVudHVhbGx5IHJlYWNoIGBicmNtZl9uZXRpZl9tb25fcnhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9uZXRpZl9tb25fcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM9NDM0PXN0cnVjdCBicmNtZl9yYWRpb3RhcF9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTQzOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM6NDM5OnZvaWQgYnJjbWZfbmV0aWZfbW9uX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYy00NDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmg9MjIwPXZvaWQgYnJjbWZfbmV0aWZfcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaDoyMjE6dm9pZCBicmNtZl9uZXRpZl9tb25fcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaC0yMjItdm9pZCBicmNtZl9uZXRfZGV0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGxvY2tlZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyMDA9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTI0MTpcdFx0YnJjbWZfbmV0aWZfbW9uX3J4KGlmcCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjQyLVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NDU5CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKlBDSWUgYW5kIHRoZSBgYnJjbWZfbmV0aWZfbW9uX3J4YCBGdW5jdGlvbjogQSBEZWVwIERpdmUqKgoKSG1tLCBzbyBgYnJjbWZfbmV0aWZfbW9uX3J4YC4uLiB0aGF0IGZ1bmN0aW9uJiMzOTtzIGNhbGxlZCBvbmx5IGZyb20gYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlYCwgcmlnaHQ/IEFuZCBub3cgSSByZW1lbWJlciwgYG1zZ2J1Zi5jYC4uLiB0aGF04oCZcyB0aGUgbW9kdWxlIHRoYXQgaGFuZGxlcyB0aGUgbWVzc2FnZSBidWZmZXIsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3MgZXhjbHVzaXZlIHRvIHRoZSBQQ0llIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBhbiBpbnRlcmVzdGluZyBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aG91Z2guIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1jaGVjayB0aGF0IGFuZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IHBvdGVudGlhbCBjYWxsIHBhdGhzLiBKdXN0IGEgcXVpY2sgZG91YmxlLWNoZWNrIGZvciBteSBvd24gcGVhY2Ugb2YgbWluZCwgb2YgY291cnNlLiBOZWVkIHRvIGNvbmZpcm0gdGhhdCBteSBpbml0aWFsIGFuYWx5c2lzIGlzIHNwb3Qgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX25ldGlmX21vbl9yeCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYz00MzQ9c3RydWN0IGJyY21mX3JhZGlvdGFwX2luZm8ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMtNDM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYzo0Mzk6dm9pZCBicmNtZl9uZXRpZl9tb25fcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTQ0MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaD0yMjA9dm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5oOjIyMTp2b2lkIGJyY21mX25ldGlmX21vbl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5oLTIyMi12b2lkIGJyY21mX25ldF9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgbG9ja2VkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTIwMD1icmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjQxOlx0XHRicmNtZl9uZXRpZl9tb25fcngoaWZwLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNDItXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkyODMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA3OTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgUGF0Y2ggUmVhY2hhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBgYnJjbWZfbmV0aWZfbW9uX3J4YCBpcyBjYWxsZWQgZXhjbHVzaXZlbHkgZnJvbSBgbXNnYnVmLmNgLCB3aGljaCwgYXMgd2Uga25vdywgaXMgb25seSB1c2VkIGJ5IFBDSWUuIFNvLCBkZWFkIGVuZCBpbiBRRU1VLiBMaWtld2lzZSwgYGJyY21mX2Zsb3dyaW5nX2Jsb2NrYCBhbmQgYGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGFgIGFyZSBhbHNvIGluIGBtc2didWYuY2AsIHRoZXJlZm9yZSBQQ0llLW9ubHkuIGBicmNtZl9wY2llX3NlbmRfbWJfZGF0YWAgbGl2ZXMgaW4gYHBjaWUuY2AsIG1ha2luZyBpdCBQQ0llLXNwZWNpZmljLiAgYGJyY21mX3NkaW9fcnhnbG9tYCBpcyB0aWVkIHRvIGBzZGlvLmNgLCBpbXBseWluZyBTRElPLCB0aGVyZWZvcmUgdW5yZWFjaGFibGUgd2l0aG91dCBhbiBTRElPIGVtdWxhdG9yLiBgYnJjbXNfY19hbXBkdV9hZGRfZnJhbWVgIGlzIHdpdGhpbiBgYnJjbXNtYWMvYW1wZHUuY2AgbWVhbmluZyBCQ01BIG9ubHkuCgpXaGF0IGFib3V0IGBicmNtZl9wbWtzYV92Ml9vcGA/IFRoaXMgb25lIGlzIGNhbGxlZCBmcm9tIGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgLCBhIGNmZzgwMjExIGNhbGxiYWNrLiBSZWdpc3RlcmluZyB0aGUgd2lwaHkgcmVxdWlyZXMgYGJyY21mX2NfcHJlaW5pdF9kY21kc2Agd2hpY2gsIGNvbnNpZGVyaW5nIHRoZSBuZWVkIGZvciBhIGRlZGljYXRlZCBmaXJtd2FyZSBlbXVsYXRvciwgaXMgZWZmZWN0aXZlbHkgaW1wb3NzaWJsZSBmb3IgYSBmdXp6ZXIuIFNvLCB0aG9zZSBjZmc4MDIxMSBjYWxsYmFja3MgYXJlIG91dC4KClNvLCBhbGwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGNvbmZpbmVkIHRvOgoKMS4gIFBDSWUtc3BlY2lmaWMgY29kZSAodW5yZWFjaGFibGUgaW4gUUVNVSkuCjIuICBTRElPLXNwZWNpZmljIGNvZGUgKHVucmVhY2hhYmxlIGluIFFFTVUpLgozLiAgQkNNQS1zcGVjaWZpYyBjb2RlICh1bnJlYWNoYWJsZSBpbiBRRU1VKS4KNC4gIGNmZzgwMjExIGNhbGxiYWNrcyB3aXRoaW4gYSBGdWxsTUFDIGRyaXZlciB0aGF0IGNhbm5vdCBiZSBpbml0aWFsaXplZCB3aXRob3V0IGEgZGVkaWNhdGVkIGZpcm13YXJlIGVtdWxhdG9yICh1bnJlYWNoYWJsZSBpbiBRRU1VKS4KCkkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IGEgY2hhbmNlIHRoYXQgU3l6a2FsbGVyIGNvdWxkIGVtdWxhdGUgdGhlIHJlcXVpcmVkIGhhcmR3YXJlLiAgTm8gUENJZSBCcm9hZGNvbSBlbXVsYXRpb24/IE5vIFNESU8gZWl0aGVyPyBBbmQgZGVmaW5pdGVseSBubyBCQ01BPyBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0LgoKVGhlcmVmb3JlLCBzaW5jZSBhbGwgdGhlc2UgcGF0aHMgYXJlIGJsb2NrZWQgYnkgdGhlaXIgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIChQQ0llLCBTRElPLCBCQ01BKSBvciBhIGNvbXBsZXggZmlybXdhcmUgZGVwZW5kZW5jeSwgYW5kIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlLCB0aGV5IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIFFFTVUuICBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZXhjbHVkZXMgcGF0Y2hlcyB3aXRoIHRoaXMgY2hhcmFjdGVyaXN0aWMuICBUaGUgcGF0Y2ggbW9kaWZpZXMgYGJyY21mbWFjYCBhbmQgYGJyY21zbWFjYCwgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXJzIHRoYXQgd291bGQgcmVxdWlyZSBzcGVjaWZpYyBmaXJtd2FyZSBlbXVsYXRpb24uIFRoaXMgaXNuJiMzOTt0IHBvc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUuCgpIb2xkIG9uLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGBtYWM4MDIxMV9od3NpbWAgY2FuIHJlYWNoIGBicmNtc21hY2AuIEFoLCBpdCYjMzk7cyBhIGBtYWM4MDIxMWAgZHJpdmVyISBCdXQgdGhlIHF1ZXN0aW9uIGlzIGhvdyBpdCBpbnRlcmFjdHMuIExvb2tpbmcgYXQgYGJyY21zbWFjL21hYzgwMjExX2lmLmNgIG5vdy4uLgoKQ29uc2lkZXJpbmcgYWxsIHRoaXMsIHRoaXMgcGF0Y2ggaXMgKipub3QqKiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL01ha2VmaWxlPTIzPWJyY21zbWFjLXkgOj0gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9NYWtlZmlsZToyNDpcdG1hYzgwMjExX2lmLm8gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9NYWtlZmlsZS0yNS1cdHVjb2RlX2xvYWRlci5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmMtMTUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuYzoxNjojaW5jbHVkZSBcdTAwM2NuZXQvbWFjODAyMTEuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmMtMTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FudHNlbC5jLTE3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FudHNlbC5jOjE4OiNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW50c2VsLmMtMTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2JyY21zX3RyYWNlX2V2ZW50cy5jLTE5LSNpZm5kZWYgX19DSEVDS0VSX19cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9icmNtc190cmFjZV9ldmVudHMuYzoyMDojaW5jbHVkZSBcJiMzNDttYWM4MDIxMV9pZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYnJjbXNfdHJhY2VfZXZlbnRzLmMtMjEtI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2JyY21zX3RyYWNlX2V2ZW50cy5oLTIyLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2JyY21zX3RyYWNlX2V2ZW50cy5oOjIzOiNpbmNsdWRlIFwmIzM0O21hYzgwMjExX2lmLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9icmNtc190cmFjZV9ldmVudHMuaC0yNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jLTE4LSNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jOjE5OiNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jLTIwLSNpbmNsdWRlIFx1MDAzY25ldC9yZWd1bGF0b3J5LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jLTI3LSNpbmNsdWRlIFwmIzM0O2NoYW5uZWwuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2NoYW5uZWwuYzoyODojaW5jbHVkZSBcJiMzNDttYWM4MDIxMV9pZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jLTI5LSNpbmNsdWRlIFwmIzM0O2RlYnVnLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuYy0yMy0jaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmM6MjQ6I2luY2x1ZGUgXHUwMDNjbmV0L21hYzgwMjExLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5jLTI1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oLTIyLSNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaDoyMzojaW5jbHVkZSBcdTAwM2NuZXQvbWFjODAyMTEuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmgtMjQtI2luY2x1ZGUgXCYjMzQ7bWFpbi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaDoyNTojaW5jbHVkZSBcJiMzNDttYWM4MDIxMV9pZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaC0yNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaD00Mj12b2lkIF9fYnJjbXNfZGJnKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGxldmVsLCBjb25zdCBjaGFyICpmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oLTYwLSNkZWZpbmUgYnJjbXNfZGJnX2luZm8oY29yZSwgZiwgYS4uLilcdFx0YnJjbXNfZGJnKGNvcmUsIEJSQ01fRExfSU5GTywgZiwgIyNhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmg6NjE6I2RlZmluZSBicmNtc19kYmdfbWFjODAyMTEoY29yZSwgZiwgYS4uLilcdGJyY21zX2RiZyhjb3JlLCBCUkNNX0RMX01BQzgwMjExLCBmLCAjI2EpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaC02Mi0jZGVmaW5lIGJyY21zX2RiZ19yeChjb3JlLCBmLCBhLi4uKVx0XHRicmNtc19kYmcoY29yZSwgQlJDTV9ETF9SWCwgZiwgIyNhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kbWEuYy0yMC0jaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RtYS5jOjIxOiNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZG1hLmMtMjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2xlZC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9sZWQuYzoyOiNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmMtMy0jaW5jbHVkZSBcdTAwM2NsaW51eC9iY21hL2JjbWFfZHJpdmVyX2NoaXBjb21tb24uaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9sZWQuYy03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2xlZC5jOjg6I2luY2x1ZGUgXCYjMzQ7bWFjODAyMTFfaWYuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2xlZC5jLTktI2luY2x1ZGUgXCYjMzQ7cHViLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0yNy0jaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmdfY2hvaWNlcy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoyODojaW5jbHVkZSBcdTAwM2NuZXQvbWFjODAyMTEuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMjktI2luY2x1ZGUgXHUwMDNjZGVmcy5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMzUtI2luY2x1ZGUgXCYjMzQ7dWNvZGVfbG9hZGVyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjM2OiNpbmNsdWRlIFwmIzM0O21hYzgwMjExX2lmLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTM3LSNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6NDE6I2RlZmluZSBOX1RYX1FVRVVFU1x0NCAvKiAjdHggcXVldWVzIG9uIG1hYzgwMjExXHUwMDNjLVx1MDAzZWRyaXZlciBpbnRlcmZhY2UgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTQyLSNkZWZpbmUgQlJDTVNfRkxVU0hfVElNRU9VVFx0NTAwIC8qIG1zZWMgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYz00MDI9c3RhdGljIHZvaWQgYnJjbXNfb3BzX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTQxNC1cdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjQxNTpcdGlmIChicmNtc19jX3NlbmRwa3RfbWFjODAyMTEod2wtXHUwMDNld2xjLCBza2IsIGh3KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTQxNi1cdFx0dHhfaW5mby1cdTAwM2VyYXRlX2RyaXZlcl9kYXRhWzBdID0gY29udHJvbC1cdTAwM2VzdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9OTA2PXN0YXRpYyB2b2lkIGJyY21zX29wc19mbHVzaChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy05MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzo5MTg6XHRicmNtc19kYmdfbWFjODAyMTEod2wtXHUwMDNld2xjLVx1MDAzZWh3LVx1MDAzZWQxMWNvcmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy05MTktXHRcdFx0ICAgXCYjMzQ7cmV0PSVkXFxuXCYjMzQ7LCBqaWZmaWVzX3RvX21zZWNzKHJldCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMjItI2luY2x1ZGUgXHUwMDNjbmV0L2NmZzgwMjExLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6MjM6I2luY2x1ZGUgXHUwMDNjbmV0L21hYzgwMjExLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMjQtI2luY2x1ZGUgXHUwMDNjYnJjbV9od19pZHMuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMzMtI2luY2x1ZGUgXCYjMzQ7YW1wZHUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzozNDojaW5jbHVkZSBcJiMzNDttYWM4MDIxMV9pZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTM1LSNpbmNsdWRlIFwmIzM0O3Vjb2RlX2xvYWRlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz03NDc9c3RhdGljIHZvaWQgYnJjbXNfY19zZXR4YmFuZChzdHJ1Y3QgYnJjbXNfaGFyZHdhcmUgKndsY19odywgdWludCBiYW5kdW5pdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNzQ4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NzQ5Olx0YnJjbXNfZGJnX21hYzgwMjExKHdsY19ody1cdTAwM2VkMTFjb3JlLCBcJiMzNDt3bCVkOiBiYW5kdW5pdCAlZFxcblwmIzM0Oywgd2xjX2h3LVx1MDAzZXVuaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTc1MC1cdFx0XHQgICBiYW5kdW5pdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz03NzI9c3RhdGljIHUzMiBicmNtc19jX3NldGJhbmRfaW5hY3Qoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCB1aW50IGJhbmR1bml0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNzc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo3Nzg6XHRicmNtc19kYmdfbWFjODAyMTEod2xjX2h3LVx1MDAzZWQxMWNvcmUsIFwmIzM0O3dsJWRcXG5cJiMzNDssIHdsY19ody1cdTAwM2V1bml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNzc5LVx0bWFjY3RybCA9IGJjbWFfcmVhZDMyKHdsY19ody1cdTAwM2VkMTFjb3JlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9MTY1OT1zdGF0aWMgdm9pZCBicmNtc19iX2JzaW5pdChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHUxNiBjaGFuc3BlYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTE2NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjE2NjM6XHRicmNtc19kYmdfbWFjODAyMTEod2xjX2h3LVx1MDAzZWQxMWNvcmUsIFwmIzM0O3dsJWQ6IGJhbmR1bml0ICVkXFxuXCYjMzQ7LCB3bGNfaHctXHUwMDNldW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMTY2NC1cdFx0XHQgICB3bGNfaHctXHUwMDNlYmFuZC1cdTAwM2ViYW5kdW5pdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz0yNTk0PXZvaWQgYnJjbXNfY19zdXNwZW5kX21hY19hbmRfd2FpdChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0yNTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzoyNjAwOlx0YnJjbXNfZGJnX21hYzgwMjExKGNvcmUsIFwmIzM0O3dsJWQ6IGJhbmR1bml0ICVkXFxuXCYjMzQ7LCB3bGNfaHctXHUwMDNldW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMjYwMS1cdFx0XHQgICB3bGNfaHctXHUwMDNlYmFuZC1cdTAwM2ViYW5kdW5pdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz0yNjYyPXZvaWQgYnJjbXNfY19lbmFibGVfbWFjKHN0cnVjdCBicmNtc19jX2luZm8gKndsYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTI2NjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjI2Njg6XHRicmNtc19kYmdfbWFjODAyMTEoY29yZSwgXCYjMzQ7d2wlZDogYmFuZHVuaXQgJWRcXG5cJiMzNDssIHdsY19ody1cdTAwM2V1bml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0yNjY5LVx0XHRcdCAgIHdsYy1cdTAwM2ViYW5kLVx1MDAzZWJhbmR1bml0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTM2OTc9c3RhdGljIHZvaWQgYnJjbXNfY19zZXRfcHNfY3RybChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0zNzA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzozNzA1Olx0YnJjbXNfZGJnX21hYzgwMjExKHdsYy1cdTAwM2Vody1cdTAwM2VkMTFjb3JlLCBcJiMzNDt3bCVkOiBocHMgJWRcXG5cJiMzNDssIHdsYy1cdTAwM2VwdWItXHUwMDNldW5pdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMzcwNi1cdFx0XHQgICBocHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9Mzc5Mz1icmNtc19iX3NldF9jaGFuc3BlYyhzdHJ1Y3QgYnJjbXNfaGFyZHdhcmUgKndsY19odywgdTE2IGNoYW5zcGVjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMzc5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6Mzc5ODpcdGJyY21zX2RiZ19tYWM4MDIxMSh3bGNfaHctXHUwMDNlZDExY29yZSwgXCYjMzQ7d2wlZDogMHgleFxcblwmIzM0Oywgd2xjX2h3LVx1MDAzZXVuaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTM3OTktXHRcdFx0ICAgY2hhbnNwZWMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9NTc5OD1zdGF0aWMgdTMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjU3OTk6bWFjODAyMTFfd2xjX3NldF9ucmF0ZShzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBicmNtc19iYW5kICpjdXJfYmFuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNTgwMC1cdFx0ICAgICAgIHUzMiBpbnRfdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNTgzNS1cdFx0XHRpZiAoc3RmICE9IFBIWV9UWEMxX01PREVfU0RNKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjU4MzY6XHRcdFx0XHRicmNtc19kYmdfbWFjODAyMTEoY29yZSwgXCYjMzQ7d2wlZDogZW5hYmxpbmcgXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTU4MzctXHRcdFx0XHRcdFx0ICAgXCYjMzQ7U0RNIG1vZGUgZm9yIG1jcyAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTYxMjM9c3RhdGljIHUxNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo2MTI0OmJyY21zX2NfZDExaGRyc19tYWM4MDIxMShzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02MTI1LVx0XHQgICAgIHN0cnVjdCBza19idWZmICpwLCBzdHJ1Y3Qgc2NiICpzY2IsIHVpbnQgZnJhZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTYyMjctXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjYyMjg6XHRcdFx0cnNwZWNba10gPSBtYWM4MDIxMV93bGNfc2V0X25yYXRlKHdsYywgd2xjLVx1MDAzZWJhbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTYyMjktXHRcdFx0XHRcdE5SQVRFX01DU19JTlVTRSB8IHR4cmF0ZVtrXS1cdTAwM2VpZHgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9Njc2MT1zdGF0aWMgaW50IGJyY21zX2NfdHgoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjc3My1cdFx0LypcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6Njc3NDpcdFx0ICogV2Ugc29tZXRpbWVzIGdldCBhIGZyYW1lIGZyb20gbWFjODAyMTEgYWZ0ZXIgc3RvcHBpbmdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjc3NS1cdFx0ICogdGhlIHF1ZXVlcy4gVGhpcyBvbmx5IGV2ZXIgc2VlbXMgdG8gYmUgYSBzaW5nbGUgZnJhbWVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTY4MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjY4MTU6Ym9vbCBicmNtc19jX3NlbmRwa3RfbWFjODAyMTEoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2R1LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02ODE2LVx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjgyMS1cdGZpZm8gPSBicmNtc19hY190b19maWZvKHNrYl9nZXRfcXVldWVfbWFwcGluZyhzZHUpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NjgyMjpcdGJyY21zX2NfZDExaGRyc19tYWM4MDIxMSh3bGMsIGh3LCBzZHUsIHNjYiwgMCwgMSwgZmlmbywgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTY4MjMtXHRpZiAoIWJyY21zX2NfdHgod2xjLCBzZHUpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9NjgzMj1icmNtc19jX3R4ZmlmbyhzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHVpbnQgZmlmbywgc3RydWN0IHNrX2J1ZmYgKnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02ODQzLVx0ICogU3RvcCBxdWV1ZSBpZiBETUEgcmluZyBpcyBmdWxsLiBSZXNlcnZlIHNvbWUgZnJlZSBkZXNjcmlwdG9ycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6Njg0NDpcdCAqIGFzIHdlIHNvbWV0aW1lcyByZWNlaXZlIGEgZnJhbWUgZnJvbSBtYWM4MDIxMSBhZnRlciB0aGUgcXVldWVzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTY4NDUtXHQgKiBhcmUgc3RvcHBlZC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTY5NjI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6Njk2MzpwcmVwX21hYzgwMjExX3N0YXR1cyhzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBkMTFyeGhkciAqcnhoLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02OTY0LVx0XHQgICAgIHN0cnVjdCBza19idWZmICpwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNzA0Mi1cdFx0ICogYSBzdWJzZXQgb2YgdGhlIDIuNEcgcmF0ZXMuIFNlZSBiaXRyYXRlcyBmaWVsZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo3MDQzOlx0XHQgKiBvZiBicmNtc19iYW5kXzVHSHpfbnBoeSAoaW4gbWFjODAyMTFfaWYuYykuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTcwNDQtXHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9NzA3Nj1icmNtc19jX3JlY3ZjdGwoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBzdHJ1Y3QgZDExcnhoZHIgKnJ4aCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTcwODMtXHRtZW1zZXQoXHUwMDI2cnhfc3RhdHVzLCAwLCBzaXplb2Yocnhfc3RhdHVzKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjcwODQ6XHRwcmVwX21hYzgwMjExX3N0YXR1cyh3bGMsIHJ4aCwgcCwgXHUwMDI2cnhfc3RhdHVzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNzA4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5X3NoaW0uYy0yNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHlfc2hpbS5jOjI1OiNpbmNsdWRlIFx1MDAzY25ldC9tYWM4MDIxMS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5X3NoaW0uYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHlfc2hpbS5jLTI3LSNpbmNsdWRlIFwmIzM0O21haW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeV9zaGltLmM6Mjg6I2luY2x1ZGUgXCYjMzQ7bWFjODAyMTFfaWYuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3BoeV9zaGltLmMtMjktI2luY2x1ZGUgXCYjMzQ7cGh5X3NoaW0uaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaD0xNDQ9c3RydWN0IGJyY21zX3B1YiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3B1Yi5oLTE0Ny1cdHN0cnVjdCBzY2JfYW1wZHUgKmdsb2JhbF9hbXBkdTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaDoxNDg6XHR1aW50IG1hYzgwMjExX3N0YXRlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3B1Yi5oLTE0OS1cdHVpbnQgdW5pdDtcdFx0LyogZGV2aWNlIGluc3RhbmNlIG51bWJlciAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaD0yODU9Ym9vbCBicmNtc19jX2RwYyhzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIGJvb2wgYm91bmRlZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcHViLmg6Mjg2OmJvb2wgYnJjbXNfY19zZW5kcGt0X21hYzgwMjExKHN0cnVjdCBicmNtc19jX2luZm8gKndsYywgc3RydWN0IHNrX2J1ZmYgKnNkdSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaC0yODctXHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9zY2IuaD00Mz1zdHJ1Y3Qgc2NiX2FtcGR1IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvc2NiLmgtNDktXHQgKiBUaGlzIGNvdWxkIGVhc2lseSBiZSBhIGluaVtdIHBvaW50ZXIgYW5kIHdlIGtlZXAgdGhpcyBpbmZvIGluIHdsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvc2NiLmg6NTA6XHQgKiBpdHNlbGYgaW5zdGVhZCBvZiBoYXZpbmcgbWFjODAyMTEgaG9sZCBpdCBmb3IgdXMuIEFsc28gY291bGQgYmUgbWFkZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3NjYi5oLTUxLVx0ICogZHluYW1pYyBwZXIgdGlkIGluc3RlYWQgb2Ygc3RhdGljLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9zdGYuYy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9zdGYuYzoxNzojaW5jbHVkZSBcdTAwM2NuZXQvbWFjODAyMTEuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3N0Zi5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzY1MQoJCQkJCQkJb3V0cHV0OiAxNTAKCQkJCQkJCXRob3VnaHRzOiA2MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogUGF0Y2ggVW5mdXp6YWJsZSBpbiBDdXJyZW50IEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBicmNtZm1hY2AgYW5kIGBicmNtc21hY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSAqZGVmaW5pdGVseSogZ29pbmcgdG8gYmUgcHJvYmxlbWF0aWMgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBhbmQgYWZ0ZXIgd2Fsa2luZyB0aHJvdWdoIHRoZSByZWFzb25pbmcsIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCBhYm91dCBteSBhc3Nlc3NtZW50LgoKRmlyc3Qgb2ZmLCBgYnJjbXNtYWNgIGlzIGEgYG1hYzgwMjExYCBkcml2ZXIsIGJ1dCBpdCYjMzk7cyAqbm90KiB0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCBuZWVkcyBhY3R1YWwgQnJvYWRjb20gaGFyZHdhcmUgY29ubmVjdGVkIHZpYSB0aGUgQkNNQSBidXMuIFRoZXJlJiMzOTtzIG5vIEJDTUEgZW11bGF0aW9uIGluIFFFTVUsIHNvIHRoYXQgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLiBUaGF0IHRha2VzIGBicmNtc21hY2Agb2ZmIHRoZSB0YWJsZS4KClRoZW4gdGhlcmUmIzM5O3MgYGJyY21mbWFjYC4gVGhpcyBpcyBhIEZ1bGxNQUMgZHJpdmVyIGFuZCBpcyBldmVuIHRyaWNraWVyLiBJdCByZXF1aXJlcyBlaXRoZXIgdGhlIHBoeXNpY2FsIEJyb2FkY29tIGhhcmR3YXJlIG9yIGFuIGluY3JlZGlibHkgY29tcGxleCBVU0IgZmlybXdhcmUgZW11bGF0aW9uLiBXaGlsZSBpdCBzdXBwb3J0cyBVU0IsIHNpbXBseSB0aHJvd2luZyByYW5kb20gZGF0YSBhdCBpdCBpc24mIzM5O3QgZ29pbmcgdG8gd29yay4gVGhlIGZpcm13YXJlIGhhbmRzaGFrZSBpcyBub3RvcmlvdXNseSBjb21wbGV4LCBhbmQgaXQgd29uJiMzOTt0IGJlIHBvc3NpYmxlIHRvIGdldCB0aHJvdWdoIHRoaXMgd2l0aCBvbmx5IHJhbmRvbSBkYXRhLiBUaGlzIGlzIGV2ZW4gbW9yZSB1bmxpa2VseSB0byBiZSBmdXp6YWJsZSwgYW5kIGlzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuCgpTbywgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHRoYXQmIzM5O3MgdW5yZWFjaGFibGUgaW4gUUVNVS4gQ2hlY2shIFRoaXMgcGF0Y2ggaXMgb25seSBpbiB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycyB0aGF0IHJlcXVpcmUgcmVhbCBoYXJkd2FyZS4gSW4gUUVNVSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJlYWNoIHRoZSB0YXJnZXQgZHJpdmVyIGNvZGUsIG1lYW5pbmcgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byBmdXp6LiBHaXZlbiB0aGlzLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyBhcmUgb25seSBpbiB0aG9zZSBCcm9hZGNvbSBkcml2ZXJzLCBJIGFtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGZ1enppbmcgZWZmb3J0IGlzIGdvaW5nIHRvIGJlIHdhc3RlZC4KCkkgcXVpY2tseSBkb3VibGUgY2hlY2tlZCB0aGUgcGF0Y2ggY29udGVudCBhZ2FpbiB0byBiZSBzdXJlLCBhbmQgeWVwLCBpdCYjMzk7cyBqdXN0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYC4KCkkmIzM5O20gcmVhZHkgdG8gbW92ZSBvbi4gTGV0JiMzOTtzIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBjbG9zZSB0aGlzIG9uZSBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyY21mbWFjIGFuZCBicmNtc21hYyBCcm9hZGNvbSB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEJyb2FkY29tIFdpLUZpIGhhcmR3YXJlIChQQ0llLCBTRElPLCBvciBCQ01BKSB0byBpbml0aWFsaXplIGFuZCBmdW5jdGlvbi4gV2hpbGUgYnJjbWZtYWMgc3VwcG9ydHMgVVNCLCByZWFjaGluZyB0aGUgbW9kaWZpZWQgZGF0YSBwYXRocyAoUlgvVFgpIGFuZCBjZmc4MDIxMSBjYWxsYmFja3MgcmVxdWlyZXMgcGFzc2luZyBhIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gaGFuZHNoYWtlLCB3aGljaCBpcyBpbXBvc3NpYmxlIHRvIGFjaGlldmUgdmlhIHJhbmRvbSBVU0IgZ2FkZ2V0IGZ1enppbmcgd2l0aG91dCBhIGRlZGljYXRlZCBmaXJtd2FyZSBlbXVsYXRvci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmNtZm1hYyBhbmQgYnJjbXNtYWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBCcm9hZGNvbSBXaS1GaSBoYXJkd2FyZSAoUENJZSwgU0RJTywgb3IgQkNNQSkgdG8gaW5pdGlhbGl6ZSBhbmQgZnVuY3Rpb24uIFdoaWxlIGJyY21mbWFjIHN1cHBvcnRzIFVTQiwgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGRhdGEgcGF0aHMgKFJYL1RYKSBhbmQgY2ZnODAyMTEgY2FsbGJhY2tzIHJlcXVpcmVzIHBhc3NpbmcgYSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIGhhbmRzaGFrZSwgd2hpY2ggaXMgaW1wb3NzaWJsZSB0byBhY2hpZXZlIHZpYSByYW5kb20gVVNCIGdhZGdldCBmdXp6aW5nIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MDguMjA5MjMxOTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4OTk5MTU3NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYnJjbWZtYWMgYW5kIGJyY21zbWFjIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcnMuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQnJvYWRjb20gV2ktRmkgaGFyZHdhcmUgKFBDSWUsIFNESU8sIG9yIEJDTUEpIHRvIGluaXRpYWxpemUgYW5kIGZ1bmN0aW9uLiBXaGlsZSBicmNtZm1hYyBzdXBwb3J0cyBVU0IsIHJlYWNoaW5nIHRoZSBtb2RpZmllZCBkYXRhIHBhdGhzIChSWC9UWCkgYW5kIGNmZzgwMjExIGNhbGxiYWNrcyByZXF1aXJlcyBwYXNzaW5nIGEgY29tcGxleCBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBoYW5kc2hha2UsIHdoaWNoIGlzIGltcG9zc2libGUgdG8gYWNoaWV2ZSB2aWEgcmFuZG9tIFVTQiBnYWRnZXQgZnV6emluZyB3aXRob3V0IGEgZGVkaWNhdGVkIGZpcm13YXJlIGVtdWxhdG9yLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MDguMjA5MjQyOTk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzY4NDYzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYTBkYzFkOGMxODE2ZTM5OWUzMmU1YTg4Yzg3N2I1NDc4MjVlZmYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMDU6NTA6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbmluZGV4IDBiNTVkNDQ1ODk1ZjIuLjdkN2U1ZWNlY2QyMjkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbkBAIC0zOTg5LDEyICszOTg5LDEwIEBAIHN0YXRpYyBpbnQgYnJjbWZfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdG9wKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgYnJjbWZfZGVsYXkodTMyIG1zKVxcbiB7XFxuLVxcdGlmIChtcyBcXHUwMDNjIDEwMDAgLyBIWikge1xcbi1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4tXFx0XFx0bWRlbGF5KG1zKTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aWYgKG1zIFxcdTAwM2M9IDIwKVxcbitcXHRcXHR1c2xlZXBfcmFuZ2UobXMgKiAxMDAwLCBtcyAqIDEwMDAgKyAxMDAwKTtcXG4rXFx0ZWxzZVxcbiBcXHRcXHRtc2xlZXAobXMpO1xcbi1cXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyBzMzIgYnJjbWZfY29uZmlnX3dvd2xfcGF0dGVybihzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgdTggY21kWzRdLFxcbkBAIC00MzY0LDYgKzQzNjIsMTA0IEBAIGJyY21mX3Bta3NhX3YzX29wKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3QgY2ZnODAyMTFfcG1rc2EgKnBta3NhLFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbisvKipcXG4rICogYnJjbWZfcG1rc2FfdjJfb3AgLSB1cGRhdGUgZmlybXdhcmUgUE1LU0EgY2FjaGUgdXNpbmcgdGhlIFYyIGxpc3QgaW50ZXJmYWNlLlxcbisgKlxcbisgKiBWMiBmaXJtd2FyZSAocmV2aXNpb24gMTIpIHVzZXMgYSB2ZXJzaW9uZWQgZmxhdCBsaXN0IHN0cnVjdHVyZVxcbisgKiAoYnJjbWZfcG1rX2xpc3RfdjJfbGUpIHJhdGhlciB0aGFuIHRoZSBwZXItZW50cnkgb3BlcmF0aW9uIG1vZGVsIG9mIFYzLlxcbisgKiBFYWNoIGVudHJ5IGNhcnJpZXMgRklMUy1zcGVjaWZpYyBmaWVsZHMgKHJhdyBQTUsgbWF0ZXJpYWwsIFNTSUQsIGFuZFxcbisgKiBmaWxzX2NhY2hlX2lkKSBpbiBhZGRpdGlvbiB0byB0aGUgYmFzaWMgQlNTSUQgKyBQTUtJRCBwYWlyLCBlbmFibGluZ1xcbisgKiBGSUxTIGZhc3Qtcm9hbWluZyBvbiBkZXZpY2VzIHRoYXQgZG8gbm90IHN1cHBvcnQgVjMuXFxuKyAqXFxuKyAqIEBjZmc6ICAgZHJpdmVyIGNvbmZpZyBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgc2hhZG93IFYyIFBNS1NBIGxpc3RcXG4rICogQGlmcDogICBpbnRlcmZhY2UgcG9pbnRlclxcbisgKiBAcG1rc2E6IHRoZSBQTUtTQSB0byBhZGQvcmVtb3ZlLCBvciBOVUxMIGZvciBhIGZsdXNoXFxuKyAqIEBhbGl2ZTogdHJ1ZSA9IGFkZCAoc2V0IHRpbWVfbGVmdCB0byBuby1leHBpcnkpLCBmYWxzZSA9IHJlbW92ZS9mbHVzaFxcbisgKi9cXG4rc3RhdGljIHMzMlxcbiticmNtZl9wbWtzYV92Ml9vcChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4rXFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfcG1rc2EgKnBta3NhLCBib29sIGFsaXZlKVxcbit7XFxuK1xcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBjZmctXFx1MDAzZXB1YjtcXG4rXFx0c3RydWN0IGJyY21mX3Bta19saXN0X3YyX2xlICpsaXN0ID0gXFx1MDAyNmNmZy1cXHUwMDNlcG1rX2xpc3RfdjI7XFxuK1xcdHN0cnVjdCBicmNtZl9wbWtzYV92MiAqcG1rID0gbGlzdC1cXHUwMDNlcG1rO1xcbitcXHR1MzIgbnBtayA9IGxlMTZfdG9fY3B1KGxpc3QtXFx1MDAzZWxlbmd0aCk7XFxuK1xcdHUzMiBpO1xcbitcXG4rXFx0LyogbnBtayBoZXJlIHN0b3JlcyB0aGUgY291bnQgb2YgdmFsaWQgZW50cmllcywgcmVwdXJwb3NpbmcgdGhlXFxuK1xcdCAqIGxlbmd0aCBmaWVsZCBvZiB0aGUgc2hhZG93IGxpc3QgYXMgYSBjb3VudGVyLiAgV2UgY29udmVydCB0b1xcbitcXHQgKiB0aGUgd2lyZSBmb3JtYXQgKGJ5dGUgbGVuZ3RoKSB3aGVuIHNlbmRpbmcgdG8gZmlybXdhcmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXBta3NhKSB7XFxuK1xcdFxcdC8qIEZsdXNoOiB6ZXJvIHRoZSBzaGFkb3cgbGlzdCBhbmQgcHVzaCBhbiBlbXB0eSBWMiBsaXN0LiAqL1xcbitcXHRcXHRtZW1zZXQobGlzdCwgMCwgc2l6ZW9mKCpsaXN0KSk7XFxuK1xcdFxcdGdvdG8gc2VuZDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGFsaXZlKSB7XFxuK1xcdFxcdC8qIFNldDogc2VhcmNoIGZvciBleGlzdGluZyBCU1NJRCBtYXRjaCBmaXJzdC4gKi9cXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wbWs7IGkrKylcXG4rXFx0XFx0XFx0aWYgKCFtZW1jbXAocG1rc2EtXFx1MDAzZWJzc2lkLCBwbWtbaV0uYnNzaWQsIEVUSF9BTEVOKSlcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRpZiAoaSBcXHUwMDNlPSBCUkNNRl9NQVhQTUtJRCkge1xcbitcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiVjIgUE1LU0EgY2FjaGUgZnVsbCAoJWQgZW50cmllcylcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCBucG1rKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdG1lbXNldChcXHUwMDI2cG1rW2ldLCAwLCBzaXplb2YocG1rW2ldKSk7XFxuK1xcdFxcdHBta1tpXS5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGJyY21mX3Bta3NhX3YyKSk7XFxuK1xcdFxcdGlmIChwbWtzYS1cXHUwMDNlYnNzaWQpXFxuK1xcdFxcdFxcdG1lbWNweShwbWtbaV0uYnNzaWQsIHBta3NhLVxcdTAwM2Vic3NpZCwgRVRIX0FMRU4pO1xcbitcXHRcXHRpZiAocG1rc2EtXFx1MDAzZXBta2lkKVxcbitcXHRcXHRcXHRtZW1jcHkocG1rW2ldLnBta2lkLCBwbWtzYS1cXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcXG4rXFx0XFx0aWYgKHBta3NhLVxcdTAwM2VwbWsgXFx1MDAyNlxcdTAwMjYgcG1rc2EtXFx1MDAzZXBta19sZW4gXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHBta3NhLVxcdTAwM2VwbWtfbGVuIFxcdTAwM2M9IFdMQU5fUE1LX0xFTl9TVUlURV9CXzE5Mikge1xcbitcXHRcXHRcXHRtZW1jcHkocG1rW2ldLnBtaywgcG1rc2EtXFx1MDAzZXBtaywgcG1rc2EtXFx1MDAzZXBta19sZW4pO1xcbitcXHRcXHRcXHRwbWtbaV0ucG1rX2xlbiA9IGNwdV90b19sZTE2KHBta3NhLVxcdTAwM2VwbWtfbGVuKTtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAocG1rc2EtXFx1MDAzZXNzaWQgXFx1MDAyNlxcdTAwMjYgcG1rc2EtXFx1MDAzZXNzaWRfbGVuKSB7XFxuK1xcdFxcdFxcdG1lbWNweShwbWtbaV0uc3NpZC5TU0lELCBwbWtzYS1cXHUwMDNlc3NpZCwgcG1rc2EtXFx1MDAzZXNzaWRfbGVuKTtcXG4rXFx0XFx0XFx0cG1rW2ldLnNzaWQuU1NJRF9sZW4gPSBwbWtzYS1cXHUwMDNlc3NpZF9sZW47XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKHBta3NhLVxcdTAwM2VmaWxzX2NhY2hlX2lkKVxcbitcXHRcXHRcXHRwbWtbaV0uZmlsc19jYWNoZV9pZCA9ICpwbWtzYS1cXHUwMDNlZmlsc19jYWNoZV9pZDtcXG4rXFxuK1xcdFxcdGlmIChpID09IG5wbWspXFxuK1xcdFxcdFxcdG5wbWsrKztcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0LyogRGVsZXRlOiBmaW5kIGJ5IEJTU0lEIGFuZCBjb21wYWN0IHRoZSBsaXN0LiAqL1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnBtazsgaSsrKVxcbitcXHRcXHRcXHRpZiAoIW1lbWNtcChwbWtzYS1cXHUwMDNlYnNzaWQsIHBta1tpXS5ic3NpZCwgRVRIX0FMRU4pKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdGlmIChpIFxcdTAwM2U9IG5wbWspIHtcXG4rXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIlYyIFBNS1NBIGVudHJ5IG5vdCBmb3VuZFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRmb3IgKDsgaSBcXHUwMDNjIG5wbWsgLSAxOyBpKyspXFxuK1xcdFxcdFxcdG1lbWNweShcXHUwMDI2cG1rW2ldLCBcXHUwMDI2cG1rW2kgKyAxXSwgc2l6ZW9mKHBta1tpXSkpO1xcbitcXHRcXHRtZW1zZXQoXFx1MDAyNnBta1tucG1rIC0gMV0sIDAsIHNpemVvZihwbWtbbnBtayAtIDFdKSk7XFxuK1xcdFxcdG5wbWstLTtcXG4rXFx0fVxcbitcXG4rXFx0LyogVXBkYXRlIHNoYWRvdyBlbnRyeSBjb3VudCAoc3RvcmVkIGluIGxlbmd0aCBmaWVsZCkuICovXFxuK1xcdGxpc3QtXFx1MDAzZWxlbmd0aCA9IGNwdV90b19sZTE2KG5wbWspO1xcbitcXG4rc2VuZDpcXG4rXFx0LyogQnVpbGQgdGhlIHdpcmUtZm9ybWF0IGhlYWRlciBhbmQgc2VuZCB0aGUgZnVsbCBsaXN0IHRvIGZpcm13YXJlLlxcbitcXHQgKiB2ZXJzaW9uIGFuZCBsZW5ndGggb24gdGhlIHdpcmUgcmVmbGVjdCB0aGUgYWN0dWFsIGJ5dGUgZm9vdHByaW50LlxcbitcXHQgKi9cXG4rXFx0bGlzdC1cXHUwMDNldmVyc2lvbiA9IGNwdV90b19sZTE2KEJSQ01GX1BNS1NBX1ZFUl8yKTtcXG4rXFx0bGlzdC1cXHUwMDNlbGVuZ3RoICA9IGNwdV90b19sZTE2KG9mZnNldG9mKHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSwgcG1rKSArXFxuK1xcdFxcdFxcdFxcdCAgIG5wbWsgKiBzaXplb2Yoc3RydWN0IGJyY21mX3Bta3NhX3YyKSk7XFxuK1xcbitcXHRyZXR1cm4gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcInBta2lkX2luZm9cXFwiLCBsaXN0LCBzaXplb2YoKmxpc3QpKTtcXG4rfVxcbitcXG4rXFxuIHN0YXRpYyBfX3VzZWQgczMyXFxuIGJyY21mX3VwZGF0ZV9wbWtsaXN0KHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxcbiB7XFxuQEAgLTQ0MDIsOCArNDQ5OCw4IEBAIGJyY21mX2NmZzgwMjExX3NldF9wbWtzYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFxuIFxcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YzKSlcXG4gXFx0XFx0cmV0dXJuIGJyY21mX3Bta3NhX3YzX29wKGlmcCwgcG1rc2EsIHRydWUpO1xcbi1cXG4tXFx0LyogVE9ETzogaW1wbGVtZW50IFBNS0lEX1YyICovXFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcXG4rXFx0XFx0cmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBwbWtzYSwgdHJ1ZSk7XFxuIFxcbiBcXHRucG1rID0gbGUzMl90b19jcHUoY2ZnLVxcdTAwM2VwbWtfbGlzdC5ucG1rKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5wbWs7IGkrKylcXG5AQCAtNDQ0Niw4ICs0NTQyLDggQEAgYnJjbWZfY2ZnODAyMTFfZGVsX3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXG4gXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjMpKVxcbiBcXHRcXHRyZXR1cm4gYnJjbWZfcG1rc2FfdjNfb3AoaWZwLCBwbWtzYSwgZmFsc2UpO1xcbi1cXG4tXFx0LyogVE9ETzogaW1wbGVtZW50IFBNS0lEX1YyICovXFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcXG4rXFx0XFx0cmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBwbWtzYSwgZmFsc2UpO1xcbiBcXG4gXFx0bnBtayA9IGxlMzJfdG9fY3B1KGNmZy1cXHUwMDNlcG1rX2xpc3QubnBtayk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucG1rOyBpKyspXFxuQEAgLTQ0ODcsOCArNDU4Myw4IEBAIGJyY21mX2NmZzgwMjExX2ZsdXNoX3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXG4gXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjMpKVxcbiBcXHRcXHRyZXR1cm4gYnJjbWZfcG1rc2FfdjNfb3AoaWZwLCBOVUxMLCBmYWxzZSk7XFxuLVxcbi1cXHQvKiBUT0RPOiBpbXBsZW1lbnQgUE1LSURfVjIgKi9cXG4rXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjIpKVxcbitcXHRcXHRyZXR1cm4gYnJjbWZfcG1rc2FfdjJfb3AoY2ZnLCBpZnAsIE5VTEwsIGZhbHNlKTtcXG4gXFxuIFxcdG1lbXNldChcXHUwMDI2Y2ZnLVxcdTAwM2VwbWtfbGlzdCwgMCwgc2l6ZW9mKGNmZy1cXHUwMDNlcG1rX2xpc3QpKTtcXG4gXFx0ZXJyID0gYnJjbWZfdXBkYXRlX3Bta2xpc3QoY2ZnLCBpZnApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNTcxNjdmZGU1YmExNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuQEAgLTM0NCw3ICszNDQsOCBAQCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfd293bCB7XFxuICAqIEBic3NfbGlzdDogYnNzX2xpc3QgaG9sZGluZyBzY2FubmVkIGFwIGluZm9ybWF0aW9uLlxcbiAgKiBAYnNzX2luZm86IGJzcyBpbmZvcm1hdGlvbiBmb3IgY2ZnODAyMTEgbGF5ZXIuXFxuICAqIEBjb25uX2luZm86IGFzc29jaWF0aW9uIGluZm8uXFxuLSAqIEBwbWtfbGlzdDogd3BhMiBwbWsgbGlzdC5cXG4rICogQHBta19saXN0OiB3cGEyIHBtayBsaXN0IChWMSBmaXJtd2FyZSkuXFxuKyAqIEBwbWtfbGlzdF92Mjogd3BhMiBwbWsgbGlzdCBmb3IgVjIgZmlybXdhcmUgKEZJTFMtY2FwYWJsZSwgZmlybXdhcmUgcmV2IDEyKS5cXG4gICogQHNjYW5fc3RhdHVzOiBzY2FuIGFjdGl2aXR5IG9uIHRoZSBkb25nbGUuXFxuICAqIEBwdWI6IGNvbW1vbiBkcml2ZXIgaW5mb3JtYXRpb24uXFxuICAqIEBjaGFubmVsOiBjdXJyZW50IGNoYW5uZWwuXFxuQEAgLTM3Niw2ICszNzcsNyBAQCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyB7XFxuIFxcdHN0cnVjdCB3bF9jZmc4MDIxMV9ic3NfaW5mbyAqYnNzX2luZm87XFxuIFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gY29ubl9pbmZvO1xcbiBcXHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfbGUgcG1rX2xpc3Q7XFxuK1xcdHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSBwbWtfbGlzdF92MjtcXG4gXFx0dW5zaWduZWQgbG9uZyBzY2FuX3N0YXR1cztcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqcHViO1xcbiBcXHR1MzIgY2hhbm5lbDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcXG5pbmRleCBlYzE3MDY0NzgwMGRhLi42NzNmMDAwMDM4OWNjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jXFxuQEAgLTQzMSw0NSArNDMxLDUxIEBAIHZvaWQgYnJjbWZfbmV0aWZfcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdG5ldGlmX3J4KHNrYik7XFxuIH1cXG4gXFxuK3N0cnVjdCBicmNtZl9yYWRpb3RhcF9pbmZvIHtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgaGRyO1xcbitcXHRzOCBkYm1fYW50c2lnbmFsO1xcbit9IF9fcGFja2VkO1xcbitcXG4gdm9pZCBicmNtZl9uZXRpZl9tb25fcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG4gXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTU9OSVRPUl9GTVRfUkFESU9UQVApKSB7XFxuLVxcdFxcdC8qIERvIG5vdGhpbmcgKi9cXG4rXFx0XFx0LyogRmlybXdhcmUgYWxyZWFkeSBwcm92aWRlZCBhIGZ1bGwgcmFkaW90YXAgaGVhZGVyOyBkbyBub3RoaW5nICovXFxuIFxcdH0gZWxzZSBpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NT05JVE9SX0ZNVF9IV19SWF9IRFIpKSB7XFxuIFxcdFxcdHN0cnVjdCB3bGNfZDExcnhoZHIgKndsY19yeGhkciA9IChzdHJ1Y3Qgd2xjX2QxMXJ4aGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbi1cXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciAqcmFkaW90YXA7XFxuK1xcdFxcdHN0cnVjdCBicmNtZl9yYWRpb3RhcF9pbmZvICpydGFwO1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgb2Zmc2V0O1xcbiBcXHRcXHR1MTYgUnhTdGF0dXMxO1xcbitcXHRcXHRzOCByc3NpO1xcbiBcXG4gXFx0XFx0UnhTdGF0dXMxID0gbGUxNl90b19jcHUod2xjX3J4aGRyLVxcdTAwM2VyeGhkci5SeFN0YXR1czEpO1xcbitcXHRcXHRyc3NpID0gd2xjX3J4aGRyLVxcdTAwM2Vyc3NpO1xcbiBcXG4gXFx0XFx0b2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCB3bGNfZDExcnhoZHIpO1xcbi1cXHRcXHQvKiBNQUMgaW5zZXJ0cyAyIHBhZCBieXRlcyBmb3IgYTQgaGVhZGVycyBvciBRb1Mgb3IgQS1NU0RVXFxuLVxcdFxcdCAqIHN1YmZyYW1lc1xcbi1cXHRcXHQgKi9cXG4rXFx0XFx0LyogTUFDIGluc2VydHMgMiBwYWQgYnl0ZXMgZm9yIGE0IGhlYWRlcnMgb3IgUW9TIG9yIEEtTVNEVSBzdWJmcmFtZXMgKi9cXG4gXFx0XFx0aWYgKFJ4U3RhdHVzMSBcXHUwMDI2IFJYU19QQlBSRVMpXFxuIFxcdFxcdFxcdG9mZnNldCArPSAyO1xcbiBcXHRcXHRvZmZzZXQgKz0gRDExX1BIWV9IRFJfTEVOO1xcbiBcXG4gXFx0XFx0c2tiX3B1bGwoc2tiLCBvZmZzZXQpO1xcbiBcXG4tXFx0XFx0LyogVE9ETzogdXNlIFJYIGhlYWRlciB0byBmaWxsIHNvbWUgcmFkaW90YXAgZGF0YSAqL1xcbi1cXHRcXHRyYWRpb3RhcCA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xcbi1cXHRcXHRtZW1zZXQocmFkaW90YXAsIDAsIHNpemVvZigqcmFkaW90YXApKTtcXG4tXFx0XFx0cmFkaW90YXAtXFx1MDAzZWl0X2xlbiA9IGNwdV90b19sZTE2KHNpemVvZigqcmFkaW90YXApKTtcXG4rXFx0XFx0LyogSW5zZXJ0IG91ciByYWRpb3RhcCBoZWFkZXIgd2l0aCBSU1NJIGRhdGEgKi9cXG4rXFx0XFx0cnRhcCA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpydGFwKSk7XFxuK1xcdFxcdG1lbXNldChydGFwLCAwLCBzaXplb2YoKnJ0YXApKTtcXG4rXFx0XFx0cnRhcC1cXHUwMDNlaGRyLml0X2xlbiA9IGNwdV90b19sZTE2KHNpemVvZigqcnRhcCkpO1xcbitcXHRcXHRydGFwLVxcdTAwM2VoZHIuaXRfcHJlc2VudCA9IGNwdV90b19sZTMyKDEgXFx1MDAzY1xcdTAwM2MgSUVFRTgwMjExX1JBRElPVEFQX0RCTV9BTlRTSUdOQUwpO1xcbitcXHRcXHRydGFwLVxcdTAwM2VkYm1fYW50c2lnbmFsID0gcnNzaTtcXG4gXFxuLVxcdFxcdC8qIFRPRE86IDQgYnl0ZXMgd2l0aCByZWNlaXZlIHN0YXR1cz8gKi9cXG4tXFx0XFx0c2tiLVxcdTAwM2VsZW4gLT0gNDtcXG4rXFx0XFx0LyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovXFxuK1xcdFxcdHNrYl90cmltKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwO1xcbiBcXG4tXFx0XFx0LyogVE9ETzogdXNlIFJYIHN0YXR1cyB0byBmaWxsIHNvbWUgcmFkaW90YXAgZGF0YSAqL1xcbiBcXHRcXHRyYWRpb3RhcCA9IHNrYl9wdXNoKHNrYiwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xcbiBcXHRcXHRtZW1zZXQocmFkaW90YXAsIDAsIHNpemVvZigqcmFkaW90YXApKTtcXG4gXFx0XFx0cmFkaW90YXAtXFx1MDAzZWl0X2xlbiA9IGNwdV90b19sZTE2KHNpemVvZigqcmFkaW90YXApKTtcXG4gXFxuLVxcdFxcdC8qIFRPRE86IDQgYnl0ZXMgd2l0aCByZWNlaXZlIHN0YXR1cz8gKi9cXG4tXFx0XFx0c2tiLVxcdTAwM2VsZW4gLT0gNDtcXG4rXFx0XFx0LyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovXFxuK1xcdFxcdHNrYl90cmltKHNrYiwgc2tiLVxcdTAwM2VsZW4gLSA0KTtcXG4gXFx0fVxcbiBcXG4gXFx0c2tiLVxcdTAwM2VkZXYgPSBpZnAtXFx1MDAzZW5kZXY7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmNcXG5pbmRleCAzNWNiY2VhMGFiYzlhLi5iOWM1MTg5MzlmNTA0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmNcXG5AQCAtMTgyLDEwICsxODIsOCBAQCBzdGF0aWMgdm9pZCBicmNtZl9mbG93cmluZ19ibG9jayhzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3csIHUxNiBmbG93aWQsXFxuIFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZjtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcXG4gXFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuLVxcdGJvb2wgY3VycmVudGx5X2Jsb2NrZWQ7XFxuLVxcdGludCBpO1xcbi1cXHR1OCBpZmlkeDtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4rXFx0dTggaWZpZHg7XFxuIFxcbiBcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Zmxvdy1cXHUwMDNlYmxvY2tfbG9jaywgZmxhZ3MpO1xcbiBcXG5AQCAtMTk0LDIzICsxOTIsNTQgQEAgc3RhdGljIHZvaWQgYnJjbWZfZmxvd3JpbmdfYmxvY2soc3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93LCB1MTYgZmxvd2lkLFxcbiBcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZmbG93LVxcdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbi1cXHRpZmlkeCA9IGJyY21mX2Zsb3dyaW5nX2lmaWR4X2dldChmbG93LCBmbG93aWQpO1xcbiBcXG4tXFx0Y3VycmVudGx5X2Jsb2NrZWQgPSBmYWxzZTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGZsb3ctXFx1MDAzZW5yb2ZyaW5nczsgaSsrKSB7XFxuLVxcdFxcdGlmICgoZmxvdy1cXHUwMDNlcmluZ3NbaV0pIFxcdTAwMjZcXHUwMDI2IChpICE9IGZsb3dpZCkpIHtcXG4tXFx0XFx0XFx0cmluZyA9IGZsb3ctXFx1MDAzZXJpbmdzW2ldO1xcbi1cXHRcXHRcXHRpZiAoKHJpbmctXFx1MDAzZXN0YXR1cyA9PSBSSU5HX09QRU4pIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgICAoYnJjbWZfZmxvd3JpbmdfaWZpZHhfZ2V0KGZsb3csIGkpID09IGlmaWR4KSkge1xcbi1cXHRcXHRcXHRcXHRpZiAocmluZy1cXHUwMDNlYmxvY2tlZCkge1xcbi1cXHRcXHRcXHRcXHRcXHRjdXJyZW50bHlfYmxvY2tlZCA9IHRydWU7XFxuLVxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdH1cXG4rXFx0aWZpZHggPSBicmNtZl9mbG93cmluZ19pZmlkeF9nZXQoZmxvdywgZmxvd2lkKTtcXG4rXFx0cmluZy1cXHUwMDNlYmxvY2tlZCA9IGJsb2NrZWQ7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBNYWludGFpbiB0aGUgcGVyLWludGVyZmFjZSBibG9ja2VkLXJpbmcgY291bnRlci5cXG4rXFx0ICpcXG4rXFx0ICogV2UgdXNlIHJpbmctXFx1MDAzZWNvdW50ZWRfaW5fYmxvY2tlZCByYXRoZXIgdGhhbiBjaGVja2luZ1xcbitcXHQgKiByaW5nLVxcdTAwM2VzdGF0dXMgaGVyZS4gIEEgcmluZyB0aGF0IGJlY2FtZSBibG9ja2VkIHdoaWxlXFxuK1xcdCAqIFJJTkdfT1BFTiBoYXMgYWxyZWFkeSBiZWVuIGNvdW50ZWQgKGNvdW50ZWRfaW5fYmxvY2tlZD10cnVlKS5cXG4rXFx0ICogQnkgdGhlIHRpbWUgd2UgdW5ibG9jayBpdCBkdXJpbmcgdGVhcmRvd24gaXRzIHN0YXR1cyBtYXkgaGF2ZVxcbitcXHQgKiBhZHZhbmNlZCB0byBSSU5HX0NMT1NJTkcsIHNvIHRlc3RpbmcgUklOR19PUEVOIHdvdWxkIHdyb25nbHlcXG4rXFx0ICogc2tpcCB0aGUgYXRvbWljX2RlYyBhbmQgcGVybWFuZW50bHkgbGVhayB0aGUgY291bnRlciwgbGVhdmluZ1xcbitcXHQgKiB0aGUgbmV0aWYgcXVldWUgc3RvcHBlZCBmb3JldmVyLlxcbitcXHQgKlxcbitcXHQgKiBSdWxlOlxcbitcXHQgKiAgIGJsb2NrIHRyYW5zaXRpb24gICh1bmJsb2NrZWTihpJibG9ja2VkKTogY291bnQgb25seSBpZiBSSU5HX09QRU4sXFxuK1xcdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGNvdW50ZWRfaW5fYmxvY2tlZC5cXG4rXFx0ICogICB1bmJsb2NrIHRyYW5zaXRpb24gKGJsb2NrZWTihpJ1bmJsb2NrZWQpOiBkZWNyZW1lbnQgb25seSBpZiB3ZVxcbitcXHQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgY291bnRlZCBpdCxcXG4rXFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhciBjb3VudGVkX2luX2Jsb2NrZWQuXFxuK1xcdCAqL1xcbitcXHRpZiAoYmxvY2tlZCkge1xcbitcXHRcXHRpZiAocmluZy1cXHUwMDNlc3RhdHVzID09IFJJTkdfT1BFTikge1xcbitcXHRcXHRcXHRhdG9taWNfaW5jKFxcdTAwMjZmbG93LVxcdTAwM2VpZl9ibG9ja2VkX2NudFtpZmlkeF0pO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vjb3VudGVkX2luX2Jsb2NrZWQgPSB0cnVlO1xcbiBcXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGlmIChyaW5nLVxcdTAwM2Vjb3VudGVkX2luX2Jsb2NrZWQpIHtcXG4rXFx0XFx0XFx0YXRvbWljX2RlYyhcXHUwMDI2Zmxvdy1cXHUwMDNlaWZfYmxvY2tlZF9jbnRbaWZpZHhdKTtcXG4rXFx0XFx0XFx0cmluZy1cXHUwMDNlY291bnRlZF9pbl9ibG9ja2VkID0gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0LypcXG4rXFx0ICogT25seSBwcm9wYWdhdGUgYSBuZXRpZiBxdWV1ZS1zdG9wL3dha2Ugd2hlbiB0aGUgaW50ZXJmYWNlXFxuK1xcdCAqIHRyYW5zaXRpb25zIGJldHdlZW4gZnVsbHktY2xlYXIgYW5kIGF0LWxlYXN0LW9uZS1ibG9ja2VkLlxcbitcXHQgKiBSZWFkaW5nIHRoZSBhdG9taWMgaXMgc2FmZSBoZXJlOiB3ZSBob2xkIGJsb2NrX2xvY2ssIHNvIG5vXFxuK1xcdCAqIGNvbmN1cnJlbnQgYnJjbWZfZmxvd3JpbmdfYmxvY2soKSBjYWxsIGNhbiByYWNlIHRoZSB1cGRhdGVcXG4rXFx0ICogd2UganVzdCBtYWRlIGFib3ZlLlxcbitcXHQgKi9cXG4rXFx0aWYgKGJsb2NrZWQgXFx1MDAyNlxcdTAwMjYgYXRvbWljX3JlYWQoXFx1MDAyNmZsb3ctXFx1MDAzZWlmX2Jsb2NrZWRfY250W2lmaWR4XSkgIT0gMSkge1xcbitcXHRcXHQvKiBBbm90aGVyIHJpbmcgd2FzIGFscmVhZHkgYmxvY2tlZDsgbm8gbmV3IHF1ZXVlLXN0b3AgbmVlZGVkLiAqL1xcbitcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZmbG93LVxcdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XFxuK1xcdFxcdHJldHVybjtcXG4gXFx0fVxcbi1cXHRmbG93LVxcdTAwM2VyaW5nc1tmbG93aWRdLVxcdTAwM2VibG9ja2VkID0gYmxvY2tlZDtcXG4tXFx0aWYgKGN1cnJlbnRseV9ibG9ja2VkKSB7XFxuK1xcdGlmICghYmxvY2tlZCBcXHUwMDI2XFx1MDAyNiBhdG9taWNfcmVhZChcXHUwMDI2Zmxvdy1cXHUwMDNlaWZfYmxvY2tlZF9jbnRbaWZpZHhdKSAhPSAwKSB7XFxuK1xcdFxcdC8qIE1vcmUgcmluZ3Mgc3RpbGwgYmxvY2tlZDsgZG8gbm90IHdha2UgdGhlIHF1ZXVlIHlldC4gKi9cXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2Zmxvdy1cXHUwMDNlYmxvY2tfbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG5AQCAtMzY3LDYgKzM5Niw4IEBAIHN0cnVjdCBicmNtZl9mbG93cmluZyAqYnJjbWZfZmxvd3JpbmdfYXR0YWNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdTE2IG5yb2ZyaW5ncylcXG4gXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmZsb3ctXFx1MDAzZWJsb2NrX2xvY2spO1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShmbG93LVxcdTAwM2VhZGRyX21vZGUpOyBpKyspXFxuIFxcdFxcdFxcdGZsb3ctXFx1MDAzZWFkZHJfbW9kZVtpXSA9IEFERFJfSU5ESVJFQ1Q7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZsb3ctXFx1MDAzZWlmX2Jsb2NrZWRfY250KTsgaSsrKVxcbitcXHRcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZmbG93LVxcdTAwM2VpZl9ibG9ja2VkX2NudFtpXSwgMCk7XFxuIFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGZsb3ctXFx1MDAzZWhhc2gpOyBpKyspXFxuIFxcdFxcdFxcdGZsb3ctXFx1MDAzZWhhc2hbaV0uaWZpZHggPSBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lGSURYO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmhcXG5pbmRleCBmM2Q1MTFmOWEzYzlhLi5hZmRlYThiM2Y4YWE3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmhcXG5AQCAtNSw2ICs1LDggQEBcXG4gI2lmbmRlZiBCUkNNRk1BQ19GTE9XUklOR19IXFxuICNkZWZpbmUgQlJDTUZNQUNfRkxPV1JJTkdfSFxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0b21pYy5oXFx1MDAzZVxcbitcXG4gXFxuICNkZWZpbmUgQlJDTUZfRkxPV1JJTkdfSEFTSFNJWkVcXHRcXHQ1MTJcXHRcXHQvKiBoYXMgdG8gYmUgMl54ICovXFxuICNkZWZpbmUgQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRFxcdDB4RkZGRkZGRkZcXG5AQCAtMjYsNiArMjgsMTYgQEAgZW51bSByaW5nX3N0YXR1cyB7XFxuIHN0cnVjdCBicmNtZl9mbG93cmluZ19yaW5nIHtcXG4gXFx0dTE2IGhhc2hfaWQ7XFxuIFxcdGJvb2wgYmxvY2tlZDtcXG4rXFx0LypcXG4rXFx0ICogVHJ1ZSB3aGVuIHRoaXMgcmluZyBoYXMgYmVlbiBjb3VudGVkIGluIHRoZSBwZXItaW50ZXJmYWNlXFxuK1xcdCAqIGlmX2Jsb2NrZWRfY250W10uICBTZXQgdG8gdHJ1ZSB3aGVuZXZlciB0aGUgcmluZyB0cmFuc2l0aW9uc1xcbitcXHQgKiB1bmJsb2NrZWTihpJibG9ja2VkIHdoaWxlIFJJTkdfT1BFTjsgY2xlYXJlZCBvbiB0aGUgbWF0Y2hpbmdcXG4rXFx0ICogYmxvY2tlZOKGknVuYmxvY2tlZCB0cmFuc2l0aW9uLiAgTmVlZGVkIHNvIHRoYXQgYSByaW5nIHRoYXRcXG4rXFx0ICogYmVjb21lcyBibG9ja2VkIHdoaWxlIFJJTkdfT1BFTiBhbmQgaXMgbGF0ZXIgbW92ZWQgdG9cXG4rXFx0ICogUklOR19DTE9TSU5HIHN0aWxsIGNvcnJlY3RseSBkZWNyZW1lbnRzIHRoZSBjb3VudGVyIGF0XFxuK1xcdCAqIHRlYXJkb3duLCBldmVuIHRob3VnaCBpdHMgc3RhdHVzIGlzIG5vIGxvbmdlciBSSU5HX09QRU4uXFxuK1xcdCAqL1xcbitcXHRib29sIGNvdW50ZWRfaW5fYmxvY2tlZDtcXG4gXFx0ZW51bSByaW5nX3N0YXR1cyBzdGF0dXM7XFxuIFxcdHN0cnVjdCBza19idWZmX2hlYWQgc2tibGlzdDtcXG4gfTtcXG5AQCAtNDAsNiArNTIsMTIgQEAgc3RydWN0IGJyY21mX2Zsb3dyaW5nIHtcXG4gXFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nX2hhc2ggaGFzaFtCUkNNRl9GTE9XUklOR19IQVNIU0laRV07XFxuIFxcdHNwaW5sb2NrX3QgYmxvY2tfbG9jaztcXG4gXFx0ZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlW0JSQ01GX01BWF9JRlNdO1xcbitcXHQvKiBQZXItaW50ZXJmYWNlIGNvdW50IG9mIGN1cnJlbnRseSBibG9ja2VkIG9wZW4gcmluZ3MuXFxuK1xcdCAqIE1haW50YWluZWQgYXRvbWljYWxseSBzbyBicmNtZl9mbG93cmluZ19ibG9jaygpIGNhbiBjaGVja1xcbitcXHQgKiB3aGV0aGVyIGFueSBzaWJsaW5nIHJpbmcgaXMgYWxyZWFkeSBibG9ja2VkIGluIE8oMSkgd2l0aG91dFxcbitcXHQgKiBob2xkaW5nIGJsb2NrX2xvY2sgYWNyb3NzIGFuIE8obnJvZnJpbmdzKSB3YWxrLlxcbitcXHQgKi9cXG4rXFx0YXRvbWljX3QgaWZfYmxvY2tlZF9jbnRbQlJDTUZfTUFYX0lGU107XFxuIFxcdHUxNiBucm9mcmluZ3M7XFxuIFxcdGJvb2wgdGRsc19hY3RpdmU7XFxuIFxcdHN0cnVjdCBicmNtZl9mbG93cmluZ190ZGxzX2VudHJ5ICp0ZGxzX2VudHJ5O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jXFxuaW5kZXggYTQzZjFhMzhiMGUzMC4uM2MxY2EzNTVlOGVlYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jXFxuQEAgLTEwMzcsNyArMTAzNyw5IEBAIGludCBicmNtZl9md3NfbWFjZGVzY19pbmRpY2F0ZShzdHJ1Y3QgYnJjbWZfZndzX2luZm8gKmZ3cywgdTggdHlwZSwgdTggKmRhdGEpXFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcInVzZSBleGlzdGluZ1xcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFdBUk5fT04oZW50cnktXFx1MDAzZW1hY19oYW5kbGUgIT0gbWFjX2hhbmRsZSk7XFxuLVxcdFxcdFxcdC8qIFRPRE86IHdoYXQgc2hvdWxkIHdlIGRvIGhlcmU6IGNvbnRpbnVlLCByZWluaXQsIC4uICovXFxuK1xcdFxcdFxcdC8qIEZpcm13YXJlIHJlLXNlbnQgQUREIGZvciB0aGUgc2FtZSBNQUMgaGFuZGxlLlxcbitcXHRcXHRcXHQgKiBObyBhY3Rpb24gcmVxdWlyZWQ7IGl0IGlzIGEgc2FmZSBuby1vcC5cXG4rXFx0XFx0XFx0ICovXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXFxuaW5kZXggYmExY2UxNTUyZTBmNC4uOGRiNjE2NzA3MmRhMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG5AQCAtNDgsNyArNDgsMTkgQEBcXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9MUEJLX0RNQVhGRVJcXHRcXHQweDEzXFxuICNkZWZpbmUgTVNHQlVGX1RZUEVfTFBCS19ETUFYRkVSX0NNUExUXFx0XFx0MHgxNFxcbiBcXG4tI2RlZmluZSBOUl9UWF9QS1RJRFNcXHRcXHRcXHRcXHQyMDQ4XFxuKy8qXFxuKyAqIE5SX1RYX1BLVElEUzogbnVtYmVyIG9mIHNpbXVsdGFuZW91c2x5IGluLWZsaWdodCBUWCBwYWNrZXQgSURzLlxcbisgKiBFYWNoIG91dHN0YW5kaW5nIFRYIGZyYW1lIGNvbnN1bWVzIG9uZSBJRCB1bnRpbCB0aGUgZG9uZ2xlIHJldHVybnNcXG4rICogYSBUWC1zdGF0dXMgY29tcGxldGlvbi4gIFRoZSBvcmlnaW5hbCAyMDQ4LWVudHJ5IHBvb2wgZXhoYXVzdGVkIHVuZGVyXFxuKyAqIOKJpTQgY29uY3VycmVudCBpcGVyZjMgc3RyZWFtcyBvbiBXaS1GaSA1LzYgKDgwMi4xMWFjL2F4KSBkZXZpY2VzLFxcbisgKiBjYXVzaW5nIFxcXCJObyBQS1RJRCBhdmFpbGFibGVcXFwiIGRyb3BzIGFuZCBUQ1AgcmV0cmFuc21pdHMuICA0MDk2IGdpdmVzXFxuKyAqIGhlYWRyb29tIGZvciBoaWdoLWFnZ3JlZ2F0aW9uIHNjZW5hcmlvcyB3aGlsZSBzdGlsbCBmaXR0aW5nIGluIGFcXG4rICogbW9kZXN0IGFtb3VudCBvZiBob3N0IG1lbW9yeSAofjQ4IEtCIGZvciB0aGUgcGt0aWQgdGFibGUgZW50cmllcykuXFxuKyAqXFxuKyAqIE5SX1JYX1BLVElEUzogUlggcG9zdCBidWZmZXJzIHByZS1hbGxvY2F0ZWQgdG8gdGhlIGRvbmdsZS4gIDEwMjQgaXNcXG4rICogc3VmZmljaWVudCBmb3IgY3VycmVudCBoYXJkd2FyZSBSWCByaW5nIGRlcHRoczsgbGVhdmUgdW5jaGFuZ2VkLlxcbisgKi9cXG4rI2RlZmluZSBOUl9UWF9QS1RJRFNcXHRcXHRcXHRcXHQ0MDk2XFxuICNkZWZpbmUgTlJfUlhfUEtUSURTXFx0XFx0XFx0XFx0MTAyNFxcbiBcXG4gI2RlZmluZSBCUkNNRl9JT0NUTF9SRVFfUEtUSURcXHRcXHRcXHQweEZGRkVcXG5AQCAtNjQsOCArNzYsMjkgQEBcXG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfUEtUX0ZMQUdTX0ZSQU1FX01BU0tcXHQweDA3XFxuICNkZWZpbmUgQlJDTUZfTVNHQlVGX1BLVF9GTEFHU19QUklPX1NISUZUXFx0NVxcbiBcXG4tI2RlZmluZSBCUkNNRl9NU0dCVUZfVFhfRkxVU0hfQ05UMVxcdFxcdDMyXFxuLSNkZWZpbmUgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDJcXHRcXHQ5NlxcbisvKlxcbisgKiBUWCBmbHVzaCAvIGRvb3JiZWxsLXJpbmcgdGhyZXNob2xkcy5cXG4rICpcXG4rICogQ05UMSBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgZnJhbWVzIHRvIGFjY3VtdWxhdGUgaW4gdGhlIGNvbW1vbnJpbmdcXG4rICogYmVmb3JlIHRoZSBmaXJzdCBpbnRlcm1lZGlhdGUgd3JpdGVfY29tcGxldGUoKSAoZG9vcmJlbGwgcmluZykgaXNcXG4rICogaXNzdWVkIG1pZC1iYXRjaC4gIENOVDIgaXMgdGhlIGhhcmQgZmx1c2ggaW50ZXJ2YWw6IGFmdGVyIHRoaXMgbWFueVxcbisgKiBmcmFtZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gc2luY2UgdGhlIGxhc3QgZmx1c2gsIHdlIHVuY29uZGl0aW9uYWxseVxcbisgKiByaW5nIHRoZSBiZWxsIGFuZCByZXNldCB0aGUgY291bnRlci5cXG4rICpcXG4rICogUmFpc2luZyBib3RoIGZyb20gdGhlIG9yaWdpbmFsIDMyLzk2IHRvIDY0LzEyOCBkb3VibGVzIHRoZSBhdmVyYWdlXFxuKyAqIG51bWJlciBvZiBUWCBkZXNjcmlwdG9ycyBjb21taXR0ZWQgcGVyIE1NSU8gd3JpdGUsIGhhbHZpbmcgdGhlIFBDSWVcXG4rICogZG9vcmJlbGwgcmF0ZSBvbiBzdXN0YWluZWQgdGhyb3VnaHB1dCB3b3JrbG9hZHMuICBUaGUgdHJhZGVvZmYgaXMgYVxcbisgKiBtYXJnaW5hbGx5IGhpZ2hlciB3b3JzdC1jYXNlIGxhdGVuY3kgZm9yIHRoZSBsYXN0IGZyYW1lcyBpbiBhIGJ1cnN0LFxcbisgKiB3aGljaCBpbiBwcmFjdGljZSBpcyBoaWRkZW4gYnkgdGhlIHRpbWUgdGhlIGRvbmdsZSBETUEgZW5naW5lIGRyYWluc1xcbisgKiB0aGUgcHJldmlvdXMgYmF0Y2guXFxuKyAqXFxuKyAqIFRSSUNLTEVfVFhXT1JLRVJfVEhSUyBnb3Zlcm5zIGhvdyBvZnRlbiBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YSgpXFxuKyAqIGZvcmNlcyBhIHdvcmtxdWV1ZSBzY2hlZHVsZSB3aGVuIHRoZSBxdWV1ZSBkZXB0aCBpcyBub3QgYSBtdWx0aXBsZSBvZlxcbisgKiB0aGlzIHZhbHVlLiAgS2VlcGluZyBpdCBhdCBoYWxmIG9mIENOVDEgKDMyKSBwcmVzZXJ2ZXMgcmVzcG9uc2l2ZW5lc3NcXG4rICogZm9yIGxvdy1yYXRlIGZsb3dzIChlLmcuIFZvSVAsIElDTVApIHRoYXQgbmV2ZXIgYWNjdW11bGF0ZSA2NCBmcmFtZXMuXFxuKyAqL1xcbisjZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQxXFx0XFx0NjRcXG4rI2RlZmluZSBCUkNNRl9NU0dCVUZfVFhfRkxVU0hfQ05UMlxcdFxcdDEyOFxcbiBcXG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSU1xcdDk2XFxuICNkZWZpbmUgQlJDTUZfTVNHQlVGX1RSSUNLTEVfVFhXT1JLRVJfVEhSU1xcdDMyXFxuQEAgLTc4NywxMCArODIwLDMwIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XFxuIFxcbi1cXHRzZXRfYml0KGZsb3dpZCwgbXNnYnVmLVxcdTAwM2VmbG93X21hcCk7XFxuK1xcdC8qXFxuK1xcdCAqIElmIHRoZSBiaXQgd2FzIGFscmVhZHkgc2V0LCBhIHR4Zmxvd193b3JrIGl0ZW0gaXMgYWxyZWFkeVxcbitcXHQgKiBxdWV1ZWQgb3IgcnVubmluZyBmb3IgdGhpcyByaW5nLiAgSW4gdGhhdCBjYXNlIHRoZSBleGlzdGluZ1xcbitcXHQgKiB3b3JrZXIgd2lsbCBkcmFpbiBvdXIgZnJlc2hseSBlbnF1ZXVlZCBmcmFtZSB3aGVuIGl0IHJ1bnMsXFxuK1xcdCAqIHNvIHdlIG9ubHkgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIHdvcmsgaXRlbSB3aGVuIHRoZVxcbitcXHQgKiBmb3JjZSBmbGFnIGlzIHNldCBvciB0aGUgcmluZyBpcyBiZWxvdyB0aGUgZGVsYXkgdGhyZXNob2xkLlxcbitcXHQgKlxcbitcXHQgKiBJZiB0aGUgYml0IHdhcyBOT1Qgc2V0ICh0ZXN0X2FuZF9zZXRfYml0IHJldHVybnMgZmFsc2UpLCBub1xcbitcXHQgKiB3b3JrZXIgaXMgcGVuZGluZyBmb3IgdGhpcyByaW5nIGF0IGFsbC4gIFdlIE1VU1Qgc2NoZWR1bGVcXG4rXFx0ICogb25lIHVuY29uZGl0aW9uYWxseSwgb3RoZXJ3aXNlIHRoZSBmcmFtZSB3ZSBqdXN0IGVucXVldWVkXFxuK1xcdCAqIHdpbGwgc2l0IGluIHRoZSBmbG93cmluZyB1bnNlbnQgdW50aWwgc29tZSB1bnJlbGF0ZWQgZXZlbnRcXG4rXFx0ICogdHJpZ2dlcnMgdGhlIHdvcmtxdWV1ZSDigJQgY2F1c2luZyBzaWxlbnQgVFggc3RhbGxzIHVuZGVyXFxuK1xcdCAqIGhpZ2ggbG9hZCB3aGVuIG91dHN0YW5kaW5nX3R4IFxcdTAwM2U9IERFTEFZX1RYV09SS0VSX1RIUlMuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXRlc3RfYW5kX3NldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZWZsb3dfbWFwKSkge1xcbitcXHRcXHQvKiBCaXQgd2FzIGNsZWFyOiBubyB3b3JrZXIgcGVuZGluZywgYWx3YXlzIHNjaGVkdWxlLiAqL1xcbitcXHRcXHRxdWV1ZV93b3JrKG1zZ2J1Zi1cXHUwMDNldHhmbG93X3dxLCBcXHUwMDI2bXNnYnVmLVxcdTAwM2V0eGZsb3dfd29yayk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbitcXHQvKiBCaXQgd2FzIGFscmVhZHkgc2V0OiB3b3JrZXIgcGVuZGluZywgYXBwbHkgY29hbGVzY2luZyBoZXVyaXN0aWMuICovXFxuIFxcdGNvbW1vbnJpbmcgPSBtc2didWYtXFx1MDAzZWZsb3dyaW5nc1tmbG93aWRdO1xcbi1cXHRpZiAoKGZvcmNlKSB8fCAoYXRvbWljX3JlYWQoXFx1MDAyNmNvbW1vbnJpbmctXFx1MDAzZW91dHN0YW5kaW5nX3R4KSBcXHUwMDNjXFxuLVxcdFxcdFxcdEJSQ01GX01TR0JVRl9ERUxBWV9UWFdPUktFUl9USFJTKSlcXG4rXFx0aWYgKGZvcmNlIHx8IChhdG9taWNfcmVhZChcXHUwMDI2Y29tbW9ucmluZy1cXHUwMDNlb3V0c3RhbmRpbmdfdHgpIFxcdTAwM2NcXG4rXFx0XFx0ICAgICAgQlJDTUZfTVNHQlVGX0RFTEFZX1RYV09SS0VSX1RIUlMpKVxcbiBcXHRcXHRxdWV1ZV93b3JrKG1zZ2J1Zi1cXHUwMDNldHhmbG93X3dxLCBcXHUwMDI2bXNnYnVmLVxcdTAwM2V0eGZsb3dfd29yayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtMTYyMSwxMSArMTY3NCwxMSBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiBcXHRkbyB7XFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG4gXFx0XFx0aWYgKG1zZ2J1Zi1cXHUwMDNlbWF4X3J4YnVmcG9zdCAhPSBtc2didWYtXFx1MDAzZXJ4YnVmcG9zdClcXG4tXFx0XFx0XFx0bXNsZWVwKDEwKTtcXG4rXFx0XFx0XFx0dXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjb3VudCsrO1xcbi1cXHR9IHdoaWxlIChjb3VudCBcXHUwMDNjIDEwKTtcXG4rXFx0fSB3aGlsZSAoY291bnQgXFx1MDAzYyAxMDApO1xcbiBcXHRicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChtc2didWYpO1xcbiBcXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuaW5kZXggMTM2NjJhYTRiNGVhNi4uOTMzOGE1ZmFhMjYwYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xcbkBAIC0yNjgsNiArMjY4LDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfZmlybXdhcmVfbWFwcGluZyBicmNtZl9wY2llX2Z3bmFtZXNbXSA9IHtcXG4gXFxuICNkZWZpbmUgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVFxcdFxcdG1zZWNzX3RvX2ppZmZpZXMoMjAwMClcXG4gXFxuKy8qXFxuKyAqIEgyRCBtYWlsYm94IHBvbGwgdGltaW5nIHBhcmFtZXRlcnMuXFxuKyAqXFxuKyAqIFRoZSBkb25nbGUgdHlwaWNhbGx5IGNsZWFycyB0aGUgSDJEIG1haWxib3ggcmVnaXN0ZXIgd2l0aGluIGEgZmV3XFxuKyAqIGh1bmRyZWQgbWljcm9zZWNvbmRzIGFmdGVyIHRoZSBkb29yYmVsbCBpbnRlcnJ1cHQgZmlyZXMuICBUaGVcXG4rICogb3JpZ2luYWwgY29kZSB1c2VkIG1zbGVlcCgxMCkgKiAxMDAgaXRlcmF0aW9ucywgbWVhbmluZyB0aGVcXG4rICogbWluaW11bSBvYnNlcnZhYmxlIGxhdGVuY3kgd2FzIDEwbXMgZXZlbiB3aGVuIHRoZSBkb25nbGUgd2FzIGZhc3QuXFxuKyAqXFxuKyAqIFdlIGluc3RlYWQgc3RhcnQgd2l0aCBhIHNob3J0IHNsZWVwIGFuZCBkb3VibGUgaXQgZWFjaCBpdGVyYXRpb25cXG4rICogKGV4cG9uZW50aWFsIGJhY2tvZmYpIHVwIHRvIEJSQ01GX1BDSUVfTUJfUE9MTF9NQVhfVVMsIHN0YXlpbmdcXG4rICogd2l0aGluIHRoZSBzYW1lIDEtc2Vjb25kIGFic29sdXRlIHRpbWVvdXQuXFxuKyAqXFxuKyAqIE1JTl9VUyAvIElOSVRJQUxfTUFYX1VTIDogdXNsZWVwX3JhbmdlIGJvdW5kcyBmb3IgdGhlIGZpcnN0IGl0ZXJhdGlvbi5cXG4rICogTUFYX1VTICAgICA6IGNhcCBvbiB0aGUgcGVyLWl0ZXJhdGlvbiBzbGVlcCAowrVzKS5cXG4rICogVElNRU9VVF9VUyA6IHRvdGFsIGJ1ZGdldCBiZWZvcmUgZ2l2aW5nIHVwICgxIHNlY29uZCkuXFxuKyAqL1xcbisjZGVmaW5lIEJSQ01GX1BDSUVfTUJfUE9MTF9NSU5fVVNcXHRcXHQ0MFxcbisjZGVmaW5lIEJSQ01GX1BDSUVfTUJfUE9MTF9JTklUSUFMX01BWF9VU1xcdDUwXFxuKyNkZWZpbmUgQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VU1xcdFxcdDUwMDBcXG4rI2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfVElNRU9VVF9VU1xcdFxcdDEwMDAwMDBcXG4rXFxuICNkZWZpbmUgQlJDTUZfUENJRV9DRkdSRUdfU1RBVFVTX0NNRFxcdFxcdDB4NFxcbiAjZGVmaW5lIEJSQ01GX1BDSUVfQ0ZHUkVHX1BNX0NTUlxcdFxcdDB4NENcXG4gI2RlZmluZSBCUkNNRl9QQ0lFX0NGR1JFR19NU0lfQ0FQXFx0XFx0MHg1OFxcbkBAIC03NjYsNyArNzg3LDggQEAgYnJjbWZfcGNpZV9zZW5kX21iX2RhdGEoc3RydWN0IGJyY21mX3BjaWVkZXZfaW5mbyAqZGV2aW5mbywgdTMyIGh0b2RfbWJfZGF0YSlcXG4gXFx0c3RydWN0IGJyY21mX2NvcmUgKmNvcmU7XFxuIFxcdHUzMiBhZGRyO1xcbiBcXHR1MzIgY3VyX2h0b2RfbWJfZGF0YTtcXG4tXFx0dTMyIGk7XFxuK1xcdHUzMiBlbGFwc2VkX3VzID0gMDtcXG4rXFx0dTMyIHNsZWVwX3VzID0gQlJDTUZfUENJRV9NQl9QT0xMX0lOSVRJQUxfTUFYX1VTO1xcbiBcXG4gXFx0c2hhcmVkID0gXFx1MDAyNmRldmluZm8tXFx1MDAzZXNoYXJlZDtcXG4gXFx0YWRkciA9IHNoYXJlZC1cXHUwMDNlaHRvZF9tYl9kYXRhX2FkZHI7XFxuQEAgLTc3NiwxMiArNzk4LDQwIEBAIGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8sIHUzMiBodG9kX21iX2RhdGEpXFxuIFxcdFxcdGJyY21mX2RiZyhQQ0lFLCBcXFwiTUIgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBwZW5kaW5nIDB4JTA0eFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICBjdXJfaHRvZF9tYl9kYXRhKTtcXG4gXFxuLVxcdGkgPSAwO1xcbitcXHQvKlxcbitcXHQgKiBXYWl0IGZvciB0aGUgZG9uZ2xlIHRvIGNvbnN1bWUgdGhlIHByZXZpb3VzIEgyRCBtYWlsYm94IG1lc3NhZ2UuXFxuK1xcdCAqXFxuK1xcdCAqIFRoZXJlIGlzIG5vIGludGVycnVwdCB0aGF0IHNpZ25hbHMgd2hlbiB0aGUgZG9uZ2xlIGNsZWFycyB0aGlzXFxuK1xcdCAqIHJlZ2lzdGVyLCBzbyBwb2xsaW5nIGlzIHVuYXZvaWRhYmxlLiAgVGhlIG9yaWdpbmFsIGNvZGUgdXNlZFxcbitcXHQgKiBtc2xlZXAoMTApIHBlciBpdGVyYXRpb24sIGluY3VycmluZyBhdCBsZWFzdCAxMG1zIG9mIGxhdGVuY3lcXG4rXFx0ICogZXZlbiB3aGVuIHRoZSBkb25nbGUgcmVzcG9uZGVkIGluIG1pY3Jvc2Vjb25kcy5cXG4rXFx0ICpcXG4rXFx0ICogV2UgdXNlIHVzbGVlcF9yYW5nZSgpIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiBpbnN0ZWFkOlxcbitcXHQgKiAgIC0gRmlyc3QgaXRlcmF0aW9uIHNsZWVwcyB+NTDCtXMgKGZhc3QgcGF0aCBmb3IgcmVzcG9uc2l2ZSBkb25nbGUpLlxcbitcXHQgKiAgIC0gRWFjaCBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBkb3VibGVzIHRoZSBzbGVlcCwgY2FwcGVkIGF0IDVtcyxcXG4rXFx0ICogICAgIHNvIGxvbmcgd2FpdHMgc3RpbGwgeWllbGQgdGhlIENQVSB3aXRob3V0IGJ1c3ktc3Bpbm5pbmcuXFxuK1xcdCAqICAgLSBUb3RhbCB0aW1lb3V0IG1hdGNoZXMgdGhlIG9yaWdpbmFsIDEtc2Vjb25kIGxpbWl0LlxcbitcXHQgKiAgIC0gV2UgYmFpbCBlYXJseSBpZiB0aGUgZGV2aWNlIGhhcyBnb25lIGRvd24gc28gdGhhdCBhIGRlYWRcXG4rXFx0ICogICAgIGRvbmdsZSBkb2VzIG5vdCBob2xkIHRoZSBjYWxsZXIgZm9yIGEgZnVsbCBzZWNvbmQuXFxuK1xcdCAqL1xcbiBcXHR3aGlsZSAoY3VyX2h0b2RfbWJfZGF0YSAhPSAwKSB7XFxuLVxcdFxcdG1zbGVlcCgxMCk7XFxuLVxcdFxcdGkrKztcXG4tXFx0XFx0aWYgKGkgXFx1MDAzZSAxMDApXFxuK1xcdFxcdGlmIChkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9PSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV04pIHtcXG4rXFx0XFx0XFx0YnJjbWZfZGJnKFBDSUUsIFxcXCJEZXZpY2UgZG93biwgYWJvcnRpbmcgTUIgc2VuZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoZWxhcHNlZF91cyBcXHUwMDNlPSBCUkNNRl9QQ0lFX01CX1BPTExfVElNRU9VVF9VUykge1xcbitcXHRcXHRcXHRicmNtZl9lcnIoXFxcIlRpbWVvdXQgd2FpdGluZyBmb3IgSDJEIE1CIHNsb3QgYWZ0ZXIgJXUgdXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgZWxhcHNlZF91cyk7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHR1c2xlZXBfcmFuZ2UoQlJDTUZfUENJRV9NQl9QT0xMX01JTl9VUywgc2xlZXBfdXMpO1xcbitcXHRcXHRlbGFwc2VkX3VzICs9IHNsZWVwX3VzO1xcbitcXG4rXFx0XFx0LyogRXhwb25lbnRpYWwgYmFja29mZiwgY2FwcGVkIGF0IEJSQ01GX1BDSUVfTUJfUE9MTF9NQVhfVVMgKi9cXG4rXFx0XFx0c2xlZXBfdXMgPSBtaW4oc2xlZXBfdXMgKiAyLCAodTMyKUJSQ01GX1BDSUVfTUJfUE9MTF9NQVhfVVMpO1xcbitcXG4gXFx0XFx0Y3VyX2h0b2RfbWJfZGF0YSA9IGJyY21mX3BjaWVfcmVhZF90Y20zMihkZXZpbmZvLCBhZGRyKTtcXG4gXFx0fVxcbiBcXG5AQCAtMTAwMSwxMCArMTA1MSwxMCBAQCBzdGF0aWMgdm9pZCBicmNtZl9wY2llX3JlbGVhc2VfaXJxKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8pXFxuIFxcdGZyZWVfaXJxKHBkZXYtXFx1MDAzZWlycSwgZGV2aW5mbyk7XFxuIFxcdHBjaV9kaXNhYmxlX21zaShwZGV2KTtcXG4gXFxuLVxcdG1zbGVlcCg1MCk7XFxuK1xcdHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTtcXG4gXFx0Y291bnQgPSAwO1xcbi1cXHR3aGlsZSAoKGRldmluZm8tXFx1MDAzZWluX2lycSkgXFx1MDAyNlxcdTAwMjYgKGNvdW50IFxcdTAwM2MgMjApKSB7XFxuLVxcdFxcdG1zbGVlcCg1MCk7XFxuK1xcdHdoaWxlICgoZGV2aW5mby1cXHUwMDNlaW5faXJxKSBcXHUwMDI2XFx1MDAyNiAoY291bnQgXFx1MDAzYyAxMDAwKSkge1xcbitcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XFxuIFxcdFxcdGNvdW50Kys7XFxuIFxcdH1cXG4gXFx0aWYgKGRldmluZm8tXFx1MDAzZWluX2lycSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmNcXG5pbmRleCBiNzI1YzY0ZTViNWM2Li40ZTQxNDQwM2Q3NDcxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXFxuQEAgLTE2NDUsMzcgKzE2NDUsNDMgQEAgc3RhdGljIHU4IGJyY21mX3NkaW9fcnhnbG9tKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHU4IHJ4c2VxKVxcbiBcXG4gXFx0XFx0cmRfbmV3LnNlcV9udW0gPSByeHNlcTtcXG4gXFx0XFx0cmRfbmV3LmxlbiA9IGRsZW47XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBDbGFpbSB0aGUgaG9zdCBvbmNlIGZvciB0aGUgZW50aXJlIGhlYWRlci1wYXJzaW5nIHBoYXNlLlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBicmNtZl9zZGlvX2hkcGFyc2UoKSBvcGVyYXRlcyBvbiBkYXRhIGFscmVhZHkgaW4gaG9zdFxcbitcXHRcXHQgKiBtZW1vcnksIGJ1dCBtYXkgY2FsbCBicmNtZl9zZGlvX3J4ZmFpbCgpIG9uIGVycm9yLCB3aGljaFxcbitcXHRcXHQgKiB3cml0ZXMgU0RJTyBGdW5jMSByZWdpc3RlcnMgYW5kIHRoZXJlZm9yZSByZXF1aXJlcyB0aGVcXG4rXFx0XFx0ICogaG9zdCB0byBiZSBjbGFpbWVkLlxcbitcXHRcXHQgKlxcbitcXHRcXHQgKiBza2JfcHVsbCgpIGFuZCB0aGUgbnVtIGNvdW50ZXIgYXJlIHB1cmUgaG9zdC1tZW1vcnlcXG4rXFx0XFx0ICogb3BlcmF0aW9uczsga2VlcCB0aGVtIG91dHNpZGUgdGhlIGxvY2sgdG8gbWluaW1pc2UgdGhlXFxuK1xcdFxcdCAqIGhvbGQgdGltZS4gIEJvdGggaGRwYXJzZSBjYWxscyAoc3VwZXJmcmFtZSBoZWFkZXIgYW5kXFxuK1xcdFxcdCAqIGVhY2ggc3ViZnJhbWUgaGVhZGVyKSBhcmUgZ3JvdXBlZCB1bmRlciBhIHNpbmdsZSBjbGFpbS9cXG4rXFx0XFx0ICogcmVsZWFzZSwgcmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBOKzEgc2VwYXJhdGUgcGFpcnMuXFxuK1xcdFxcdCAqL1xcbiBcXHRcXHRzZGlvX2NsYWltX2hvc3QoYnVzLVxcdTAwM2VzZGlvZGV2LVxcdTAwM2VmdW5jMSk7XFxuIFxcdFxcdGVycmNvZGUgPSBicmNtZl9zZGlvX2hkcGFyc2UoYnVzLCBwZmlyc3QtXFx1MDAzZWRhdGEsIFxcdTAwMjZyZF9uZXcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgQlJDTUZfU0RJT19GVF9TVVBFUik7XFxuLVxcdFxcdHNkaW9fcmVsZWFzZV9ob3N0KGJ1cy1cXHUwMDNlc2Rpb2Rldi1cXHUwMDNlZnVuYzEpO1xcbi1cXHRcXHRidXMtXFx1MDAzZWN1cl9yZWFkLmxlbiA9IHJkX25ldy5sZW5fbnh0ZnJtIFxcdTAwM2NcXHUwMDNjIDQ7XFxuLVxcbi1cXHRcXHQvKiBSZW1vdmUgc3VwZXJmcmFtZSBoZWFkZXIsIHJlbWVtYmVyIG9mZnNldCAqL1xcbi1cXHRcXHRza2JfcHVsbChwZmlyc3QsIHJkX25ldy5kYXRfb2Zmc2V0KTtcXG4tXFx0XFx0bnVtID0gMDtcXG4tXFxuLVxcdFxcdC8qIFZhbGlkYXRlIGFsbCB0aGUgc3ViZnJhbWUgaGVhZGVycyAqL1xcbi1cXHRcXHRza2JfcXVldWVfd2FsayhcXHUwMDI2YnVzLVxcdTAwM2VnbG9tLCBwbmV4dCkge1xcbi1cXHRcXHRcXHQvKiBsZWF2ZSB3aGVuIGludmFsaWQgc3ViZnJhbWUgaXMgZm91bmQgKi9cXG4tXFx0XFx0XFx0aWYgKGVycmNvZGUpXFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4tXFx0XFx0XFx0cmRfbmV3LmxlbiA9IHBuZXh0LVxcdTAwM2VsZW47XFxuLVxcdFxcdFxcdHJkX25ldy5zZXFfbnVtID0gcnhzZXErKztcXG4tXFx0XFx0XFx0c2Rpb19jbGFpbV9ob3N0KGJ1cy1cXHUwMDNlc2Rpb2Rldi1cXHUwMDNlZnVuYzEpO1xcbi1cXHRcXHRcXHRlcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcG5leHQtXFx1MDAzZWRhdGEsIFxcdTAwMjZyZF9uZXcsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgQlJDTUZfU0RJT19GVF9TVUIpO1xcbi1cXHRcXHRcXHRzZGlvX3JlbGVhc2VfaG9zdChidXMtXFx1MDAzZXNkaW9kZXYtXFx1MDAzZWZ1bmMxKTtcXG4tXFx0XFx0XFx0YnJjbWZfZGJnX2hleF9kdW1wKEJSQ01GX0dMT01fT04oKSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgcG5leHQtXFx1MDAzZWRhdGEsIDMyLCBcXFwic3ViZnJhbWU6XFxcXG5cXFwiKTtcXG4tXFxuLVxcdFxcdFxcdG51bSsrO1xcbitcXHRcXHQvKiBWYWxpZGF0ZSBhbGwgdGhlIHN1YmZyYW1lIGhlYWRlcnMgd2hpbGUgaG9zdCBpcyBjbGFpbWVkICovXFxuK1xcdFxcdGlmICghZXJyY29kZSkge1xcbitcXHRcXHRcXHRza2JfcXVldWVfd2FsayhcXHUwMDI2YnVzLVxcdTAwM2VnbG9tLCBwbmV4dCkge1xcbitcXHRcXHRcXHRcXHRyZF9uZXcubGVuID0gcG5leHQtXFx1MDAzZWxlbjtcXG4rXFx0XFx0XFx0XFx0cmRfbmV3LnNlcV9udW0gPSByeHNlcSsrO1xcbitcXHRcXHRcXHRcXHRlcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcG5leHQtXFx1MDAzZWRhdGEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnJkX25ldyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBCUkNNRl9TRElPX0ZUX1NVQik7XFxuK1xcdFxcdFxcdFxcdGJyY21mX2RiZ19oZXhfZHVtcChCUkNNRl9HTE9NX09OKCksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIHBuZXh0LVxcdTAwM2VkYXRhLCAzMixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcInN1YmZyYW1lOlxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGlmIChlcnJjb2RlKVxcbitcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAoZXJyY29kZSkge1xcbi1cXHRcXHRcXHQvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IgKi9cXG4tXFx0XFx0XFx0c2Rpb19jbGFpbV9ob3N0KGJ1cy1cXHUwMDNlc2Rpb2Rldi1cXHUwMDNlZnVuYzEpO1xcbitcXHRcXHRcXHQvKiBUZXJtaW5hdGUgZnJhbWUgb24gZXJyb3IsIHN0aWxsIGhvbGRpbmcgdGhlIGhvc3QgKi9cXG4gXFx0XFx0XFx0YnJjbWZfc2Rpb19yeGZhaWwoYnVzLCB0cnVlLCBmYWxzZSk7XFxuIFxcdFxcdFxcdGJ1cy1cXHUwMDNlc2RjbnQucnhnbG9tZmFpbCsrO1xcbiBcXHRcXHRcXHRicmNtZl9zZGlvX2ZyZWVfZ2xvbShidXMpO1xcbkBAIC0xNjgzLDYgKzE2ODksMTQgQEAgc3RhdGljIHU4IGJyY21mX3NkaW9fcnhnbG9tKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHU4IHJ4c2VxKVxcbiBcXHRcXHRcXHRidXMtXFx1MDAzZWN1cl9yZWFkLmxlbiA9IDA7XFxuIFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHNkaW9fcmVsZWFzZV9ob3N0KGJ1cy1cXHUwMDNlc2Rpb2Rldi1cXHUwMDNlZnVuYzEpO1xcbitcXG4rXFx0XFx0LyogSG9zdCByZWxlYXNlZDsgbm93IGRvIHRoZSBwdXJlLW1lbW9yeSBib29ra2VlcGluZyAqL1xcbitcXHRcXHRidXMtXFx1MDAzZWN1cl9yZWFkLmxlbiA9IHJkX25ldy5sZW5fbnh0ZnJtIFxcdTAwM2NcXHUwMDNjIDQ7XFxuK1xcbitcXHRcXHQvKiBSZW1vdmUgc3VwZXJmcmFtZSBoZWFkZXIsIHJlbWVtYmVyIG9mZnNldCAqL1xcbitcXHRcXHRza2JfcHVsbChwZmlyc3QsIHJkX25ldy5kYXRfb2Zmc2V0KTtcXG4rXFx0XFx0bnVtID0gMDtcXG4gXFxuIFxcdFxcdC8qIEJhc2ljIFNEIGZyYW1pbmcgbG9va3Mgb2sgLSBwcm9jZXNzIGVhY2ggcGFja2V0IChoZWFkZXIpICovXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9hbXBkdS5jXFxuaW5kZXggZmM3YTVkZDJlNWQ4Ni4uM2ZkOGJkYmQzNWU1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9hbXBkdS5jXFxuQEAgLTUxNiwxMiArNTE2LDExIEBAIGludCBicmNtc19jX2FtcGR1X2FkZF9mcmFtZShzdHJ1Y3QgYnJjbXNfYW1wZHVfc2Vzc2lvbiAqc2Vzc2lvbixcXG4gXFx0XFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuIFxcbiBcXHRcXHQvKlxcbi1cXHRcXHQgKiBXZSBhcmVuJ3QgcmVhbGx5IG91dCBvZiBzcGFjZSBpZiB0aGUgbmV3IGZyYW1lIGlzIG9mXFxuLVxcdFxcdCAqIGEgZGlmZmVyZW50IHByaW9yaXR5LCBidXQgd2Ugd2FudCB0aGUgc2FtZSBiZWhhdmlvdXJcXG4tXFx0XFx0ICogc28gcmV0dXJuIC1FTk9TUEMgYW55d2F5Llxcbi1cXHRcXHQgKlxcbi1cXHRcXHQgKiBYWFg6IFRoZSBvbGQgQU1QRFUgY29kZSBkaWQgdGhpcywgYnV0IGlzIGl0IHJlYWxseVxcbi1cXHRcXHQgKiBuZWNlc3Nhcnk/XFxuK1xcdFxcdCAqIElFRUUgODAyLjExbiBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IGFsbCBNUERVcyB3aXRoaW4gYW5cXG4rXFx0XFx0ICogQS1NUERVIGJlbG9uZyB0byB0aGUgc2FtZSBUSUQgKFRyYWZmaWMgSWRlbnRpZmllcikuXFxuK1xcdFxcdCAqIFNpbmNlIHByaW9yaXR5IG1hcHMgdG8gVElELCBhIGRpZmZlcmVudCBwcmlvcml0eSBtZWFuc1xcbitcXHRcXHQgKiB3ZSBtdXN0IGNsb3NlIHRoZSBjdXJyZW50IGFnZ3JlZ2F0ZSBhbmQgc3RhcnQgYSBuZXcgb25lLFxcbitcXHRcXHQgKiBzbyB3ZSByZXR1cm4gLUVOT1NQQyBoZXJlLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0Zmlyc3QgPSBza2JfcGVlayhcXHUwMDI2c2Vzc2lvbi1cXHUwMDNlc2tiX2xpc3QpO1xcbiBcXHRcXHRpZiAocC1cXHUwMDNlcHJpb3JpdHkgIT0gZmlyc3QtXFx1MDAzZXByaW9yaXR5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MDowOC43ODcxNDI0NzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTg0MjEyNDExNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmNtZm1hYyBhbmQgYnJjbXNtYWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBCcm9hZGNvbSBXaS1GaSBoYXJkd2FyZSAoUENJZSwgU0RJTywgb3IgQkNNQSkgdG8gaW5pdGlhbGl6ZSBhbmQgZnVuY3Rpb24uIFdoaWxlIGJyY21mbWFjIHN1cHBvcnRzIFVTQiwgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGRhdGEgcGF0aHMgKFJYL1RYKSBhbmQgY2ZnODAyMTEgY2FsbGJhY2tzIHJlcXVpcmVzIHBhc3NpbmcgYSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIGhhbmRzaGFrZSwgd2hpY2ggaXMgaW1wb3NzaWJsZSB0byBhY2hpZXZlIHZpYSByYW5kb20gVVNCIGdhZGdldCBmdXp6aW5nIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYTBkYzFkOGMxODE2ZTM5OWUzMmU1YTg4Yzg3N2I1NDc4MjVlZmYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwNTo1MDowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDBiNTVkNDQ1ODk1ZjIuLjdkN2U1ZWNlY2QyMjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC0zOTg5LDEyICszOTg5LDEwIEBAIHN0YXRpYyBpbnQgYnJjbWZfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdG9wKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIGJyY21mX2RlbGF5KHUzMiBtcylcbiB7XG4tXHRpZiAobXMgXHUwMDNjIDEwMDAgLyBIWikge1xuLVx0XHRjb25kX3Jlc2NoZWQoKTtcbi1cdFx0bWRlbGF5KG1zKTtcbi1cdH0gZWxzZSB7XG4rXHRpZiAobXMgXHUwMDNjPSAyMClcbitcdFx0dXNsZWVwX3JhbmdlKG1zICogMTAwMCwgbXMgKiAxMDAwICsgMTAwMCk7XG4rXHRlbHNlXG4gXHRcdG1zbGVlcChtcyk7XG4tXHR9XG4gfVxuIFxuIHN0YXRpYyBzMzIgYnJjbWZfY29uZmlnX3dvd2xfcGF0dGVybihzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgdTggY21kWzRdLFxuQEAgLTQzNjQsNiArNDM2MiwxMDQgQEAgYnJjbWZfcG1rc2FfdjNfb3Aoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBjZmc4MDIxMV9wbWtzYSAqcG1rc2EsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbisvKipcbisgKiBicmNtZl9wbWtzYV92Ml9vcCAtIHVwZGF0ZSBmaXJtd2FyZSBQTUtTQSBjYWNoZSB1c2luZyB0aGUgVjIgbGlzdCBpbnRlcmZhY2UuXG4rICpcbisgKiBWMiBmaXJtd2FyZSAocmV2aXNpb24gMTIpIHVzZXMgYSB2ZXJzaW9uZWQgZmxhdCBsaXN0IHN0cnVjdHVyZVxuKyAqIChicmNtZl9wbWtfbGlzdF92Ml9sZSkgcmF0aGVyIHRoYW4gdGhlIHBlci1lbnRyeSBvcGVyYXRpb24gbW9kZWwgb2YgVjMuXG4rICogRWFjaCBlbnRyeSBjYXJyaWVzIEZJTFMtc3BlY2lmaWMgZmllbGRzIChyYXcgUE1LIG1hdGVyaWFsLCBTU0lELCBhbmRcbisgKiBmaWxzX2NhY2hlX2lkKSBpbiBhZGRpdGlvbiB0byB0aGUgYmFzaWMgQlNTSUQgKyBQTUtJRCBwYWlyLCBlbmFibGluZ1xuKyAqIEZJTFMgZmFzdC1yb2FtaW5nIG9uIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBWMy5cbisgKlxuKyAqIEBjZmc6ICAgZHJpdmVyIGNvbmZpZyBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgc2hhZG93IFYyIFBNS1NBIGxpc3RcbisgKiBAaWZwOiAgIGludGVyZmFjZSBwb2ludGVyXG4rICogQHBta3NhOiB0aGUgUE1LU0EgdG8gYWRkL3JlbW92ZSwgb3IgTlVMTCBmb3IgYSBmbHVzaFxuKyAqIEBhbGl2ZTogdHJ1ZSA9IGFkZCAoc2V0IHRpbWVfbGVmdCB0byBuby1leHBpcnkpLCBmYWxzZSA9IHJlbW92ZS9mbHVzaFxuKyAqL1xuK3N0YXRpYyBzMzJcbiticmNtZl9wbWtzYV92Ml9vcChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbitcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfcG1rc2EgKnBta3NhLCBib29sIGFsaXZlKVxuK3tcbitcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBjZmctXHUwMDNlcHViO1xuK1x0c3RydWN0IGJyY21mX3Bta19saXN0X3YyX2xlICpsaXN0ID0gXHUwMDI2Y2ZnLVx1MDAzZXBta19saXN0X3YyO1xuK1x0c3RydWN0IGJyY21mX3Bta3NhX3YyICpwbWsgPSBsaXN0LVx1MDAzZXBtaztcbitcdHUzMiBucG1rID0gbGUxNl90b19jcHUobGlzdC1cdTAwM2VsZW5ndGgpO1xuK1x0dTMyIGk7XG4rXG4rXHQvKiBucG1rIGhlcmUgc3RvcmVzIHRoZSBjb3VudCBvZiB2YWxpZCBlbnRyaWVzLCByZXB1cnBvc2luZyB0aGVcbitcdCAqIGxlbmd0aCBmaWVsZCBvZiB0aGUgc2hhZG93IGxpc3QgYXMgYSBjb3VudGVyLiAgV2UgY29udmVydCB0b1xuK1x0ICogdGhlIHdpcmUgZm9ybWF0IChieXRlIGxlbmd0aCkgd2hlbiBzZW5kaW5nIHRvIGZpcm13YXJlLlxuK1x0ICovXG4rXHRpZiAoIXBta3NhKSB7XG4rXHRcdC8qIEZsdXNoOiB6ZXJvIHRoZSBzaGFkb3cgbGlzdCBhbmQgcHVzaCBhbiBlbXB0eSBWMiBsaXN0LiAqL1xuK1x0XHRtZW1zZXQobGlzdCwgMCwgc2l6ZW9mKCpsaXN0KSk7XG4rXHRcdGdvdG8gc2VuZDtcbitcdH1cbitcbitcdGlmIChhbGl2ZSkge1xuK1x0XHQvKiBTZXQ6IHNlYXJjaCBmb3IgZXhpc3RpbmcgQlNTSUQgbWF0Y2ggZmlyc3QuICovXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5wbWs7IGkrKylcbitcdFx0XHRpZiAoIW1lbWNtcChwbWtzYS1cdTAwM2Vic3NpZCwgcG1rW2ldLmJzc2lkLCBFVEhfQUxFTikpXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0aWYgKGkgXHUwMDNlPSBCUkNNRl9NQVhQTUtJRCkge1xuK1x0XHRcdGJwaHlfZXJyKGRydnIsIFwiVjIgUE1LU0EgY2FjaGUgZnVsbCAoJWQgZW50cmllcylcXG5cIixcbitcdFx0XHRcdCBucG1rKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1xuK1x0XHRtZW1zZXQoXHUwMDI2cG1rW2ldLCAwLCBzaXplb2YocG1rW2ldKSk7XG4rXHRcdHBta1tpXS5sZW5ndGggPSBjcHVfdG9fbGUxNihzaXplb2Yoc3RydWN0IGJyY21mX3Bta3NhX3YyKSk7XG4rXHRcdGlmIChwbWtzYS1cdTAwM2Vic3NpZClcbitcdFx0XHRtZW1jcHkocG1rW2ldLmJzc2lkLCBwbWtzYS1cdTAwM2Vic3NpZCwgRVRIX0FMRU4pO1xuK1x0XHRpZiAocG1rc2EtXHUwMDNlcG1raWQpXG4rXHRcdFx0bWVtY3B5KHBta1tpXS5wbWtpZCwgcG1rc2EtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbitcdFx0aWYgKHBta3NhLVx1MDAzZXBtayBcdTAwMjZcdTAwMjYgcG1rc2EtXHUwMDNlcG1rX2xlbiBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHBta3NhLVx1MDAzZXBta19sZW4gXHUwMDNjPSBXTEFOX1BNS19MRU5fU1VJVEVfQl8xOTIpIHtcbitcdFx0XHRtZW1jcHkocG1rW2ldLnBtaywgcG1rc2EtXHUwMDNlcG1rLCBwbWtzYS1cdTAwM2VwbWtfbGVuKTtcbitcdFx0XHRwbWtbaV0ucG1rX2xlbiA9IGNwdV90b19sZTE2KHBta3NhLVx1MDAzZXBta19sZW4pO1xuK1x0XHR9XG4rXHRcdGlmIChwbWtzYS1cdTAwM2Vzc2lkIFx1MDAyNlx1MDAyNiBwbWtzYS1cdTAwM2Vzc2lkX2xlbikge1xuK1x0XHRcdG1lbWNweShwbWtbaV0uc3NpZC5TU0lELCBwbWtzYS1cdTAwM2Vzc2lkLCBwbWtzYS1cdTAwM2Vzc2lkX2xlbik7XG4rXHRcdFx0cG1rW2ldLnNzaWQuU1NJRF9sZW4gPSBwbWtzYS1cdTAwM2Vzc2lkX2xlbjtcbitcdFx0fVxuK1x0XHRpZiAocG1rc2EtXHUwMDNlZmlsc19jYWNoZV9pZClcbitcdFx0XHRwbWtbaV0uZmlsc19jYWNoZV9pZCA9ICpwbWtzYS1cdTAwM2VmaWxzX2NhY2hlX2lkO1xuK1xuK1x0XHRpZiAoaSA9PSBucG1rKVxuK1x0XHRcdG5wbWsrKztcbitcdH0gZWxzZSB7XG4rXHRcdC8qIERlbGV0ZTogZmluZCBieSBCU1NJRCBhbmQgY29tcGFjdCB0aGUgbGlzdC4gKi9cbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBtazsgaSsrKVxuK1x0XHRcdGlmICghbWVtY21wKHBta3NhLVx1MDAzZWJzc2lkLCBwbWtbaV0uYnNzaWQsIEVUSF9BTEVOKSlcbitcdFx0XHRcdGJyZWFrO1xuK1xuK1x0XHRpZiAoaSBcdTAwM2U9IG5wbWspIHtcbitcdFx0XHRicGh5X2VycihkcnZyLCBcIlYyIFBNS1NBIGVudHJ5IG5vdCBmb3VuZFxcblwiKTtcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1xuK1x0XHRmb3IgKDsgaSBcdTAwM2MgbnBtayAtIDE7IGkrKylcbitcdFx0XHRtZW1jcHkoXHUwMDI2cG1rW2ldLCBcdTAwMjZwbWtbaSArIDFdLCBzaXplb2YocG1rW2ldKSk7XG4rXHRcdG1lbXNldChcdTAwMjZwbWtbbnBtayAtIDFdLCAwLCBzaXplb2YocG1rW25wbWsgLSAxXSkpO1xuK1x0XHRucG1rLS07XG4rXHR9XG4rXG4rXHQvKiBVcGRhdGUgc2hhZG93IGVudHJ5IGNvdW50IChzdG9yZWQgaW4gbGVuZ3RoIGZpZWxkKS4gKi9cbitcdGxpc3QtXHUwMDNlbGVuZ3RoID0gY3B1X3RvX2xlMTYobnBtayk7XG4rXG4rc2VuZDpcbitcdC8qIEJ1aWxkIHRoZSB3aXJlLWZvcm1hdCBoZWFkZXIgYW5kIHNlbmQgdGhlIGZ1bGwgbGlzdCB0byBmaXJtd2FyZS5cbitcdCAqIHZlcnNpb24gYW5kIGxlbmd0aCBvbiB0aGUgd2lyZSByZWZsZWN0IHRoZSBhY3R1YWwgYnl0ZSBmb290cHJpbnQuXG4rXHQgKi9cbitcdGxpc3QtXHUwMDNldmVyc2lvbiA9IGNwdV90b19sZTE2KEJSQ01GX1BNS1NBX1ZFUl8yKTtcbitcdGxpc3QtXHUwMDNlbGVuZ3RoICA9IGNwdV90b19sZTE2KG9mZnNldG9mKHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSwgcG1rKSArXG4rXHRcdFx0XHQgICBucG1rICogc2l6ZW9mKHN0cnVjdCBicmNtZl9wbWtzYV92MikpO1xuK1xuK1x0cmV0dXJuIGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwicG1raWRfaW5mb1wiLCBsaXN0LCBzaXplb2YoKmxpc3QpKTtcbit9XG4rXG4rXG4gc3RhdGljIF9fdXNlZCBzMzJcbiBicmNtZl91cGRhdGVfcG1rbGlzdChzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcbiB7XG5AQCAtNDQwMiw4ICs0NDk4LDggQEAgYnJjbWZfY2ZnODAyMTFfc2V0X3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjMpKVxuIFx0XHRyZXR1cm4gYnJjbWZfcG1rc2FfdjNfb3AoaWZwLCBwbWtzYSwgdHJ1ZSk7XG4tXG4tXHQvKiBUT0RPOiBpbXBsZW1lbnQgUE1LSURfVjIgKi9cbitcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcbitcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBwbWtzYSwgdHJ1ZSk7XG4gXG4gXHRucG1rID0gbGUzMl90b19jcHUoY2ZnLVx1MDAzZXBta19saXN0Lm5wbWspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBtazsgaSsrKVxuQEAgLTQ0NDYsOCArNDU0Miw4IEBAIGJyY21mX2NmZzgwMjExX2RlbF9wbWtzYShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YzKSlcbiBcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YzX29wKGlmcCwgcG1rc2EsIGZhbHNlKTtcbi1cbi1cdC8qIFRPRE86IGltcGxlbWVudCBQTUtJRF9WMiAqL1xuK1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjIpKVxuK1x0XHRyZXR1cm4gYnJjbWZfcG1rc2FfdjJfb3AoY2ZnLCBpZnAsIHBta3NhLCBmYWxzZSk7XG4gXG4gXHRucG1rID0gbGUzMl90b19jcHUoY2ZnLVx1MDAzZXBta19saXN0Lm5wbWspO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnBtazsgaSsrKVxuQEAgLTQ0ODcsOCArNDU4Myw4IEBAIGJyY21mX2NmZzgwMjExX2ZsdXNoX3Bta3NhKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE1LSURfVjMpKVxuIFx0XHRyZXR1cm4gYnJjbWZfcG1rc2FfdjNfb3AoaWZwLCBOVUxMLCBmYWxzZSk7XG4tXG4tXHQvKiBUT0RPOiBpbXBsZW1lbnQgUE1LSURfVjIgKi9cbitcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BNS0lEX1YyKSlcbitcdFx0cmV0dXJuIGJyY21mX3Bta3NhX3YyX29wKGNmZywgaWZwLCBOVUxMLCBmYWxzZSk7XG4gXG4gXHRtZW1zZXQoXHUwMDI2Y2ZnLVx1MDAzZXBta19saXN0LCAwLCBzaXplb2YoY2ZnLVx1MDAzZXBta19saXN0KSk7XG4gXHRlcnIgPSBicmNtZl91cGRhdGVfcG1rbGlzdChjZmcsIGlmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNTcxNjdmZGU1YmExNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuQEAgLTM0NCw3ICszNDQsOCBAQCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfd293bCB7XG4gICogQGJzc19saXN0OiBic3NfbGlzdCBob2xkaW5nIHNjYW5uZWQgYXAgaW5mb3JtYXRpb24uXG4gICogQGJzc19pbmZvOiBic3MgaW5mb3JtYXRpb24gZm9yIGNmZzgwMjExIGxheWVyLlxuICAqIEBjb25uX2luZm86IGFzc29jaWF0aW9uIGluZm8uXG4tICogQHBta19saXN0OiB3cGEyIHBtayBsaXN0LlxuKyAqIEBwbWtfbGlzdDogd3BhMiBwbWsgbGlzdCAoVjEgZmlybXdhcmUpLlxuKyAqIEBwbWtfbGlzdF92Mjogd3BhMiBwbWsgbGlzdCBmb3IgVjIgZmlybXdhcmUgKEZJTFMtY2FwYWJsZSwgZmlybXdhcmUgcmV2IDEyKS5cbiAgKiBAc2Nhbl9zdGF0dXM6IHNjYW4gYWN0aXZpdHkgb24gdGhlIGRvbmdsZS5cbiAgKiBAcHViOiBjb21tb24gZHJpdmVyIGluZm9ybWF0aW9uLlxuICAqIEBjaGFubmVsOiBjdXJyZW50IGNoYW5uZWwuXG5AQCAtMzc2LDYgKzM3Nyw3IEBAIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHtcbiBcdHN0cnVjdCB3bF9jZmc4MDIxMV9ic3NfaW5mbyAqYnNzX2luZm87XG4gXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvIGNvbm5faW5mbztcbiBcdHN0cnVjdCBicmNtZl9wbWtfbGlzdF9sZSBwbWtfbGlzdDtcbitcdHN0cnVjdCBicmNtZl9wbWtfbGlzdF92Ml9sZSBwbWtfbGlzdF92MjtcbiBcdHVuc2lnbmVkIGxvbmcgc2Nhbl9zdGF0dXM7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpwdWI7XG4gXHR1MzIgY2hhbm5lbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuY1xuaW5kZXggZWMxNzA2NDc4MDBkYS4uNjczZjAwMDAzODljYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmNcbkBAIC00MzEsNDUgKzQzMSw1MSBAQCB2b2lkIGJyY21mX25ldGlmX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0bmV0aWZfcngoc2tiKTtcbiB9XG4gXG4rc3RydWN0IGJyY21mX3JhZGlvdGFwX2luZm8ge1xuK1x0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgaGRyO1xuK1x0czggZGJtX2FudHNpZ25hbDtcbit9IF9fcGFja2VkO1xuK1xuIHZvaWQgYnJjbWZfbmV0aWZfbW9uX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX01PTklUT1JfRk1UX1JBRElPVEFQKSkge1xuLVx0XHQvKiBEbyBub3RoaW5nICovXG4rXHRcdC8qIEZpcm13YXJlIGFscmVhZHkgcHJvdmlkZWQgYSBmdWxsIHJhZGlvdGFwIGhlYWRlcjsgZG8gbm90aGluZyAqL1xuIFx0fSBlbHNlIGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX01PTklUT1JfRk1UX0hXX1JYX0hEUikpIHtcbiBcdFx0c3RydWN0IHdsY19kMTFyeGhkciAqd2xjX3J4aGRyID0gKHN0cnVjdCB3bGNfZDExcnhoZHIgKilza2ItXHUwMDNlZGF0YTtcbi1cdFx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwO1xuK1x0XHRzdHJ1Y3QgYnJjbWZfcmFkaW90YXBfaW5mbyAqcnRhcDtcbiBcdFx0dW5zaWduZWQgaW50IG9mZnNldDtcbiBcdFx0dTE2IFJ4U3RhdHVzMTtcbitcdFx0czggcnNzaTtcbiBcbiBcdFx0UnhTdGF0dXMxID0gbGUxNl90b19jcHUod2xjX3J4aGRyLVx1MDAzZXJ4aGRyLlJ4U3RhdHVzMSk7XG4rXHRcdHJzc2kgPSB3bGNfcnhoZHItXHUwMDNlcnNzaTtcbiBcbiBcdFx0b2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCB3bGNfZDExcnhoZHIpO1xuLVx0XHQvKiBNQUMgaW5zZXJ0cyAyIHBhZCBieXRlcyBmb3IgYTQgaGVhZGVycyBvciBRb1Mgb3IgQS1NU0RVXG4tXHRcdCAqIHN1YmZyYW1lc1xuLVx0XHQgKi9cbitcdFx0LyogTUFDIGluc2VydHMgMiBwYWQgYnl0ZXMgZm9yIGE0IGhlYWRlcnMgb3IgUW9TIG9yIEEtTVNEVSBzdWJmcmFtZXMgKi9cbiBcdFx0aWYgKFJ4U3RhdHVzMSBcdTAwMjYgUlhTX1BCUFJFUylcbiBcdFx0XHRvZmZzZXQgKz0gMjtcbiBcdFx0b2Zmc2V0ICs9IEQxMV9QSFlfSERSX0xFTjtcbiBcbiBcdFx0c2tiX3B1bGwoc2tiLCBvZmZzZXQpO1xuIFxuLVx0XHQvKiBUT0RPOiB1c2UgUlggaGVhZGVyIHRvIGZpbGwgc29tZSByYWRpb3RhcCBkYXRhICovXG4tXHRcdHJhZGlvdGFwID0gc2tiX3B1c2goc2tiLCBzaXplb2YoKnJhZGlvdGFwKSk7XG4tXHRcdG1lbXNldChyYWRpb3RhcCwgMCwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xuLVx0XHRyYWRpb3RhcC1cdTAwM2VpdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YoKnJhZGlvdGFwKSk7XG4rXHRcdC8qIEluc2VydCBvdXIgcmFkaW90YXAgaGVhZGVyIHdpdGggUlNTSSBkYXRhICovXG4rXHRcdHJ0YXAgPSBza2JfcHVzaChza2IsIHNpemVvZigqcnRhcCkpO1xuK1x0XHRtZW1zZXQocnRhcCwgMCwgc2l6ZW9mKCpydGFwKSk7XG4rXHRcdHJ0YXAtXHUwMDNlaGRyLml0X2xlbiA9IGNwdV90b19sZTE2KHNpemVvZigqcnRhcCkpO1xuK1x0XHRydGFwLVx1MDAzZWhkci5pdF9wcmVzZW50ID0gY3B1X3RvX2xlMzIoMSBcdTAwM2NcdTAwM2MgSUVFRTgwMjExX1JBRElPVEFQX0RCTV9BTlRTSUdOQUwpO1xuK1x0XHRydGFwLVx1MDAzZWRibV9hbnRzaWduYWwgPSByc3NpO1xuIFxuLVx0XHQvKiBUT0RPOiA0IGJ5dGVzIHdpdGggcmVjZWl2ZSBzdGF0dXM/ICovXG4tXHRcdHNrYi1cdTAwM2VsZW4gLT0gNDtcbitcdFx0LyogU3RyaXAgdGhlIDQtYnl0ZSByZWNlaXZlIHN0YXR1cyAvIEZDUyB0YWlsICovXG4rXHRcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIDQpO1xuIFx0fSBlbHNlIHtcbiBcdFx0c3RydWN0IGllZWU4MDIxMV9yYWRpb3RhcF9oZWFkZXIgKnJhZGlvdGFwO1xuIFxuLVx0XHQvKiBUT0RPOiB1c2UgUlggc3RhdHVzIHRvIGZpbGwgc29tZSByYWRpb3RhcCBkYXRhICovXG4gXHRcdHJhZGlvdGFwID0gc2tiX3B1c2goc2tiLCBzaXplb2YoKnJhZGlvdGFwKSk7XG4gXHRcdG1lbXNldChyYWRpb3RhcCwgMCwgc2l6ZW9mKCpyYWRpb3RhcCkpO1xuIFx0XHRyYWRpb3RhcC1cdTAwM2VpdF9sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YoKnJhZGlvdGFwKSk7XG4gXG4tXHRcdC8qIFRPRE86IDQgYnl0ZXMgd2l0aCByZWNlaXZlIHN0YXR1cz8gKi9cbi1cdFx0c2tiLVx1MDAzZWxlbiAtPSA0O1xuK1x0XHQvKiBTdHJpcCB0aGUgNC1ieXRlIHJlY2VpdmUgc3RhdHVzIC8gRkNTIHRhaWwgKi9cbitcdFx0c2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gNCk7XG4gXHR9XG4gXG4gXHRza2ItXHUwMDNlZGV2ID0gaWZwLVx1MDAzZW5kZXY7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuY1xuaW5kZXggMzVjYmNlYTBhYmM5YS4uYjljNTE4OTM5ZjUwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuY1xuQEAgLTE4MiwxMCArMTgyLDggQEAgc3RhdGljIHZvaWQgYnJjbWZfZmxvd3JpbmdfYmxvY2soc3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93LCB1MTYgZmxvd2lkLFxuIFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuLVx0Ym9vbCBjdXJyZW50bHlfYmxvY2tlZDtcbi1cdGludCBpO1xuLVx0dTggaWZpZHg7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuK1x0dTggaWZpZHg7XG4gXG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZmbG93LVx1MDAzZWJsb2NrX2xvY2ssIGZsYWdzKTtcbiBcbkBAIC0xOTQsMjMgKzE5Miw1NCBAQCBzdGF0aWMgdm9pZCBicmNtZl9mbG93cmluZ19ibG9jayhzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3csIHUxNiBmbG93aWQsXG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Zmxvdy1cdTAwM2VibG9ja19sb2NrLCBmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbi1cdGlmaWR4ID0gYnJjbWZfZmxvd3JpbmdfaWZpZHhfZ2V0KGZsb3csIGZsb3dpZCk7XG4gXG4tXHRjdXJyZW50bHlfYmxvY2tlZCA9IGZhbHNlO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZmxvdy1cdTAwM2Vucm9mcmluZ3M7IGkrKykge1xuLVx0XHRpZiAoKGZsb3ctXHUwMDNlcmluZ3NbaV0pIFx1MDAyNlx1MDAyNiAoaSAhPSBmbG93aWQpKSB7XG4tXHRcdFx0cmluZyA9IGZsb3ctXHUwMDNlcmluZ3NbaV07XG4tXHRcdFx0aWYgKChyaW5nLVx1MDAzZXN0YXR1cyA9PSBSSU5HX09QRU4pIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICAoYnJjbWZfZmxvd3JpbmdfaWZpZHhfZ2V0KGZsb3csIGkpID09IGlmaWR4KSkge1xuLVx0XHRcdFx0aWYgKHJpbmctXHUwMDNlYmxvY2tlZCkge1xuLVx0XHRcdFx0XHRjdXJyZW50bHlfYmxvY2tlZCA9IHRydWU7XG4tXHRcdFx0XHRcdGJyZWFrO1xuLVx0XHRcdFx0fVxuLVx0XHRcdH1cbitcdGlmaWR4ID0gYnJjbWZfZmxvd3JpbmdfaWZpZHhfZ2V0KGZsb3csIGZsb3dpZCk7XG4rXHRyaW5nLVx1MDAzZWJsb2NrZWQgPSBibG9ja2VkO1xuK1xuK1x0LypcbitcdCAqIE1haW50YWluIHRoZSBwZXItaW50ZXJmYWNlIGJsb2NrZWQtcmluZyBjb3VudGVyLlxuK1x0ICpcbitcdCAqIFdlIHVzZSByaW5nLVx1MDAzZWNvdW50ZWRfaW5fYmxvY2tlZCByYXRoZXIgdGhhbiBjaGVja2luZ1xuK1x0ICogcmluZy1cdTAwM2VzdGF0dXMgaGVyZS4gIEEgcmluZyB0aGF0IGJlY2FtZSBibG9ja2VkIHdoaWxlXG4rXHQgKiBSSU5HX09QRU4gaGFzIGFscmVhZHkgYmVlbiBjb3VudGVkIChjb3VudGVkX2luX2Jsb2NrZWQ9dHJ1ZSkuXG4rXHQgKiBCeSB0aGUgdGltZSB3ZSB1bmJsb2NrIGl0IGR1cmluZyB0ZWFyZG93biBpdHMgc3RhdHVzIG1heSBoYXZlXG4rXHQgKiBhZHZhbmNlZCB0byBSSU5HX0NMT1NJTkcsIHNvIHRlc3RpbmcgUklOR19PUEVOIHdvdWxkIHdyb25nbHlcbitcdCAqIHNraXAgdGhlIGF0b21pY19kZWMgYW5kIHBlcm1hbmVudGx5IGxlYWsgdGhlIGNvdW50ZXIsIGxlYXZpbmdcbitcdCAqIHRoZSBuZXRpZiBxdWV1ZSBzdG9wcGVkIGZvcmV2ZXIuXG4rXHQgKlxuK1x0ICogUnVsZTpcbitcdCAqICAgYmxvY2sgdHJhbnNpdGlvbiAgKHVuYmxvY2tlZOKGkmJsb2NrZWQpOiBjb3VudCBvbmx5IGlmIFJJTkdfT1BFTixcbitcdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGNvdW50ZWRfaW5fYmxvY2tlZC5cbitcdCAqICAgdW5ibG9jayB0cmFuc2l0aW9uIChibG9ja2Vk4oaSdW5ibG9ja2VkKTogZGVjcmVtZW50IG9ubHkgaWYgd2VcbitcdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBjb3VudGVkIGl0LFxuK1x0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhciBjb3VudGVkX2luX2Jsb2NrZWQuXG4rXHQgKi9cbitcdGlmIChibG9ja2VkKSB7XG4rXHRcdGlmIChyaW5nLVx1MDAzZXN0YXR1cyA9PSBSSU5HX09QRU4pIHtcbitcdFx0XHRhdG9taWNfaW5jKFx1MDAyNmZsb3ctXHUwMDNlaWZfYmxvY2tlZF9jbnRbaWZpZHhdKTtcbitcdFx0XHRyaW5nLVx1MDAzZWNvdW50ZWRfaW5fYmxvY2tlZCA9IHRydWU7XG4gXHRcdH1cbitcdH0gZWxzZSB7XG4rXHRcdGlmIChyaW5nLVx1MDAzZWNvdW50ZWRfaW5fYmxvY2tlZCkge1xuK1x0XHRcdGF0b21pY19kZWMoXHUwMDI2Zmxvdy1cdTAwM2VpZl9ibG9ja2VkX2NudFtpZmlkeF0pO1xuK1x0XHRcdHJpbmctXHUwMDNlY291bnRlZF9pbl9ibG9ja2VkID0gZmFsc2U7XG4rXHRcdH1cbitcdH1cbitcbitcdC8qXG4rXHQgKiBPbmx5IHByb3BhZ2F0ZSBhIG5ldGlmIHF1ZXVlLXN0b3Avd2FrZSB3aGVuIHRoZSBpbnRlcmZhY2VcbitcdCAqIHRyYW5zaXRpb25zIGJldHdlZW4gZnVsbHktY2xlYXIgYW5kIGF0LWxlYXN0LW9uZS1ibG9ja2VkLlxuK1x0ICogUmVhZGluZyB0aGUgYXRvbWljIGlzIHNhZmUgaGVyZTogd2UgaG9sZCBibG9ja19sb2NrLCBzbyBub1xuK1x0ICogY29uY3VycmVudCBicmNtZl9mbG93cmluZ19ibG9jaygpIGNhbGwgY2FuIHJhY2UgdGhlIHVwZGF0ZVxuK1x0ICogd2UganVzdCBtYWRlIGFib3ZlLlxuK1x0ICovXG4rXHRpZiAoYmxvY2tlZCBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2Zmxvdy1cdTAwM2VpZl9ibG9ja2VkX2NudFtpZmlkeF0pICE9IDEpIHtcbitcdFx0LyogQW5vdGhlciByaW5nIHdhcyBhbHJlYWR5IGJsb2NrZWQ7IG5vIG5ldyBxdWV1ZS1zdG9wIG5lZWRlZC4gKi9cbitcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZmbG93LVx1MDAzZWJsb2NrX2xvY2ssIGZsYWdzKTtcbitcdFx0cmV0dXJuO1xuIFx0fVxuLVx0Zmxvdy1cdTAwM2VyaW5nc1tmbG93aWRdLVx1MDAzZWJsb2NrZWQgPSBibG9ja2VkO1xuLVx0aWYgKGN1cnJlbnRseV9ibG9ja2VkKSB7XG4rXHRpZiAoIWJsb2NrZWQgXHUwMDI2XHUwMDI2IGF0b21pY19yZWFkKFx1MDAyNmZsb3ctXHUwMDNlaWZfYmxvY2tlZF9jbnRbaWZpZHhdKSAhPSAwKSB7XG4rXHRcdC8qIE1vcmUgcmluZ3Mgc3RpbGwgYmxvY2tlZDsgZG8gbm90IHdha2UgdGhlIHF1ZXVlIHlldC4gKi9cbiBcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZmbG93LVx1MDAzZWJsb2NrX2xvY2ssIGZsYWdzKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuQEAgLTM2Nyw2ICszOTYsOCBAQCBzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmJyY21mX2Zsb3dyaW5nX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUxNiBucm9mcmluZ3MpXG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmZsb3ctXHUwMDNlYmxvY2tfbG9jayk7XG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoZmxvdy1cdTAwM2VhZGRyX21vZGUpOyBpKyspXG4gXHRcdFx0Zmxvdy1cdTAwM2VhZGRyX21vZGVbaV0gPSBBRERSX0lORElSRUNUO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGZsb3ctXHUwMDNlaWZfYmxvY2tlZF9jbnQpOyBpKyspXG4rXHRcdFx0YXRvbWljX3NldChcdTAwMjZmbG93LVx1MDAzZWlmX2Jsb2NrZWRfY250W2ldLCAwKTtcbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShmbG93LVx1MDAzZWhhc2gpOyBpKyspXG4gXHRcdFx0Zmxvdy1cdTAwM2VoYXNoW2ldLmlmaWR4ID0gQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRklEWDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oXG5pbmRleCBmM2Q1MTFmOWEzYzlhLi5hZmRlYThiM2Y4YWE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5oXG5AQCAtNSw2ICs1LDggQEBcbiAjaWZuZGVmIEJSQ01GTUFDX0ZMT1dSSU5HX0hcbiAjZGVmaW5lIEJSQ01GTUFDX0ZMT1dSSU5HX0hcbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuK1xuIFxuICNkZWZpbmUgQlJDTUZfRkxPV1JJTkdfSEFTSFNJWkVcdFx0NTEyXHRcdC8qIGhhcyB0byBiZSAyXnggKi9cbiAjZGVmaW5lIEJSQ01GX0ZMT1dSSU5HX0lOVkFMSURfSURcdDB4RkZGRkZGRkZcbkBAIC0yNiw2ICsyOCwxNiBAQCBlbnVtIHJpbmdfc3RhdHVzIHtcbiBzdHJ1Y3QgYnJjbWZfZmxvd3JpbmdfcmluZyB7XG4gXHR1MTYgaGFzaF9pZDtcbiBcdGJvb2wgYmxvY2tlZDtcbitcdC8qXG4rXHQgKiBUcnVlIHdoZW4gdGhpcyByaW5nIGhhcyBiZWVuIGNvdW50ZWQgaW4gdGhlIHBlci1pbnRlcmZhY2VcbitcdCAqIGlmX2Jsb2NrZWRfY250W10uICBTZXQgdG8gdHJ1ZSB3aGVuZXZlciB0aGUgcmluZyB0cmFuc2l0aW9uc1xuK1x0ICogdW5ibG9ja2Vk4oaSYmxvY2tlZCB3aGlsZSBSSU5HX09QRU47IGNsZWFyZWQgb24gdGhlIG1hdGNoaW5nXG4rXHQgKiBibG9ja2Vk4oaSdW5ibG9ja2VkIHRyYW5zaXRpb24uICBOZWVkZWQgc28gdGhhdCBhIHJpbmcgdGhhdFxuK1x0ICogYmVjb21lcyBibG9ja2VkIHdoaWxlIFJJTkdfT1BFTiBhbmQgaXMgbGF0ZXIgbW92ZWQgdG9cbitcdCAqIFJJTkdfQ0xPU0lORyBzdGlsbCBjb3JyZWN0bHkgZGVjcmVtZW50cyB0aGUgY291bnRlciBhdFxuK1x0ICogdGVhcmRvd24sIGV2ZW4gdGhvdWdoIGl0cyBzdGF0dXMgaXMgbm8gbG9uZ2VyIFJJTkdfT1BFTi5cbitcdCAqL1xuK1x0Ym9vbCBjb3VudGVkX2luX2Jsb2NrZWQ7XG4gXHRlbnVtIHJpbmdfc3RhdHVzIHN0YXR1cztcbiBcdHN0cnVjdCBza19idWZmX2hlYWQgc2tibGlzdDtcbiB9O1xuQEAgLTQwLDYgKzUyLDEyIEBAIHN0cnVjdCBicmNtZl9mbG93cmluZyB7XG4gXHRzdHJ1Y3QgYnJjbWZfZmxvd3JpbmdfaGFzaCBoYXNoW0JSQ01GX0ZMT1dSSU5HX0hBU0hTSVpFXTtcbiBcdHNwaW5sb2NrX3QgYmxvY2tfbG9jaztcbiBcdGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZVtCUkNNRl9NQVhfSUZTXTtcbitcdC8qIFBlci1pbnRlcmZhY2UgY291bnQgb2YgY3VycmVudGx5IGJsb2NrZWQgb3BlbiByaW5ncy5cbitcdCAqIE1haW50YWluZWQgYXRvbWljYWxseSBzbyBicmNtZl9mbG93cmluZ19ibG9jaygpIGNhbiBjaGVja1xuK1x0ICogd2hldGhlciBhbnkgc2libGluZyByaW5nIGlzIGFscmVhZHkgYmxvY2tlZCBpbiBPKDEpIHdpdGhvdXRcbitcdCAqIGhvbGRpbmcgYmxvY2tfbG9jayBhY3Jvc3MgYW4gTyhucm9mcmluZ3MpIHdhbGsuXG4rXHQgKi9cbitcdGF0b21pY190IGlmX2Jsb2NrZWRfY250W0JSQ01GX01BWF9JRlNdO1xuIFx0dTE2IG5yb2ZyaW5ncztcbiBcdGJvb2wgdGRsc19hY3RpdmU7XG4gXHRzdHJ1Y3QgYnJjbWZfZmxvd3JpbmdfdGRsc19lbnRyeSAqdGRsc19lbnRyeTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndzaWduYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jXG5pbmRleCBhNDNmMWEzOGIwZTMwLi4zYzFjYTM1NWU4ZWVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3c2lnbmFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md3NpZ25hbC5jXG5AQCAtMTAzNyw3ICsxMDM3LDkgQEAgaW50IGJyY21mX2Z3c19tYWNkZXNjX2luZGljYXRlKHN0cnVjdCBicmNtZl9md3NfaW5mbyAqZndzLCB1OCB0eXBlLCB1OCAqZGF0YSlcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwidXNlIGV4aXN0aW5nXFxuXCIpO1xuIFx0XHRcdFdBUk5fT04oZW50cnktXHUwMDNlbWFjX2hhbmRsZSAhPSBtYWNfaGFuZGxlKTtcbi1cdFx0XHQvKiBUT0RPOiB3aGF0IHNob3VsZCB3ZSBkbyBoZXJlOiBjb250aW51ZSwgcmVpbml0LCAuLiAqL1xuK1x0XHRcdC8qIEZpcm13YXJlIHJlLXNlbnQgQUREIGZvciB0aGUgc2FtZSBNQUMgaGFuZGxlLlxuK1x0XHRcdCAqIE5vIGFjdGlvbiByZXF1aXJlZDsgaXQgaXMgYSBzYWZlIG5vLW9wLlxuK1x0XHRcdCAqL1xuIFx0XHR9XG4gXHR9XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IGJhMWNlMTU1MmUwZjQuLjhkYjYxNjcwNzJkYTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTQ4LDcgKzQ4LDE5IEBAXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9MUEJLX0RNQVhGRVJcdFx0MHgxM1xuICNkZWZpbmUgTVNHQlVGX1RZUEVfTFBCS19ETUFYRkVSX0NNUExUXHRcdDB4MTRcbiBcbi0jZGVmaW5lIE5SX1RYX1BLVElEU1x0XHRcdFx0MjA0OFxuKy8qXG4rICogTlJfVFhfUEtUSURTOiBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzbHkgaW4tZmxpZ2h0IFRYIHBhY2tldCBJRHMuXG4rICogRWFjaCBvdXRzdGFuZGluZyBUWCBmcmFtZSBjb25zdW1lcyBvbmUgSUQgdW50aWwgdGhlIGRvbmdsZSByZXR1cm5zXG4rICogYSBUWC1zdGF0dXMgY29tcGxldGlvbi4gIFRoZSBvcmlnaW5hbCAyMDQ4LWVudHJ5IHBvb2wgZXhoYXVzdGVkIHVuZGVyXG4rICog4omlNCBjb25jdXJyZW50IGlwZXJmMyBzdHJlYW1zIG9uIFdpLUZpIDUvNiAoODAyLjExYWMvYXgpIGRldmljZXMsXG4rICogY2F1c2luZyBcIk5vIFBLVElEIGF2YWlsYWJsZVwiIGRyb3BzIGFuZCBUQ1AgcmV0cmFuc21pdHMuICA0MDk2IGdpdmVzXG4rICogaGVhZHJvb20gZm9yIGhpZ2gtYWdncmVnYXRpb24gc2NlbmFyaW9zIHdoaWxlIHN0aWxsIGZpdHRpbmcgaW4gYVxuKyAqIG1vZGVzdCBhbW91bnQgb2YgaG9zdCBtZW1vcnkgKH40OCBLQiBmb3IgdGhlIHBrdGlkIHRhYmxlIGVudHJpZXMpLlxuKyAqXG4rICogTlJfUlhfUEtUSURTOiBSWCBwb3N0IGJ1ZmZlcnMgcHJlLWFsbG9jYXRlZCB0byB0aGUgZG9uZ2xlLiAgMTAyNCBpc1xuKyAqIHN1ZmZpY2llbnQgZm9yIGN1cnJlbnQgaGFyZHdhcmUgUlggcmluZyBkZXB0aHM7IGxlYXZlIHVuY2hhbmdlZC5cbisgKi9cbisjZGVmaW5lIE5SX1RYX1BLVElEU1x0XHRcdFx0NDA5NlxuICNkZWZpbmUgTlJfUlhfUEtUSURTXHRcdFx0XHQxMDI0XG4gXG4gI2RlZmluZSBCUkNNRl9JT0NUTF9SRVFfUEtUSURcdFx0XHQweEZGRkVcbkBAIC02NCw4ICs3NiwyOSBAQFxuICNkZWZpbmUgQlJDTUZfTVNHQlVGX1BLVF9GTEFHU19GUkFNRV9NQVNLXHQweDA3XG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfUEtUX0ZMQUdTX1BSSU9fU0hJRlRcdDVcbiBcbi0jZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQxXHRcdDMyXG4tI2RlZmluZSBCUkNNRl9NU0dCVUZfVFhfRkxVU0hfQ05UMlx0XHQ5NlxuKy8qXG4rICogVFggZmx1c2ggLyBkb29yYmVsbC1yaW5nIHRocmVzaG9sZHMuXG4rICpcbisgKiBDTlQxIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBmcmFtZXMgdG8gYWNjdW11bGF0ZSBpbiB0aGUgY29tbW9ucmluZ1xuKyAqIGJlZm9yZSB0aGUgZmlyc3QgaW50ZXJtZWRpYXRlIHdyaXRlX2NvbXBsZXRlKCkgKGRvb3JiZWxsIHJpbmcpIGlzXG4rICogaXNzdWVkIG1pZC1iYXRjaC4gIENOVDIgaXMgdGhlIGhhcmQgZmx1c2ggaW50ZXJ2YWw6IGFmdGVyIHRoaXMgbWFueVxuKyAqIGZyYW1lcyBoYXZlIGJlZW4gd3JpdHRlbiBzaW5jZSB0aGUgbGFzdCBmbHVzaCwgd2UgdW5jb25kaXRpb25hbGx5XG4rICogcmluZyB0aGUgYmVsbCBhbmQgcmVzZXQgdGhlIGNvdW50ZXIuXG4rICpcbisgKiBSYWlzaW5nIGJvdGggZnJvbSB0aGUgb3JpZ2luYWwgMzIvOTYgdG8gNjQvMTI4IGRvdWJsZXMgdGhlIGF2ZXJhZ2VcbisgKiBudW1iZXIgb2YgVFggZGVzY3JpcHRvcnMgY29tbWl0dGVkIHBlciBNTUlPIHdyaXRlLCBoYWx2aW5nIHRoZSBQQ0llXG4rICogZG9vcmJlbGwgcmF0ZSBvbiBzdXN0YWluZWQgdGhyb3VnaHB1dCB3b3JrbG9hZHMuICBUaGUgdHJhZGVvZmYgaXMgYVxuKyAqIG1hcmdpbmFsbHkgaGlnaGVyIHdvcnN0LWNhc2UgbGF0ZW5jeSBmb3IgdGhlIGxhc3QgZnJhbWVzIGluIGEgYnVyc3QsXG4rICogd2hpY2ggaW4gcHJhY3RpY2UgaXMgaGlkZGVuIGJ5IHRoZSB0aW1lIHRoZSBkb25nbGUgRE1BIGVuZ2luZSBkcmFpbnNcbisgKiB0aGUgcHJldmlvdXMgYmF0Y2guXG4rICpcbisgKiBUUklDS0xFX1RYV09SS0VSX1RIUlMgZ292ZXJucyBob3cgb2Z0ZW4gYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoKVxuKyAqIGZvcmNlcyBhIHdvcmtxdWV1ZSBzY2hlZHVsZSB3aGVuIHRoZSBxdWV1ZSBkZXB0aCBpcyBub3QgYSBtdWx0aXBsZSBvZlxuKyAqIHRoaXMgdmFsdWUuICBLZWVwaW5nIGl0IGF0IGhhbGYgb2YgQ05UMSAoMzIpIHByZXNlcnZlcyByZXNwb25zaXZlbmVzc1xuKyAqIGZvciBsb3ctcmF0ZSBmbG93cyAoZS5nLiBWb0lQLCBJQ01QKSB0aGF0IG5ldmVyIGFjY3VtdWxhdGUgNjQgZnJhbWVzLlxuKyAqL1xuKyNkZWZpbmUgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDFcdFx0NjRcbisjZGVmaW5lIEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQyXHRcdDEyOFxuIFxuICNkZWZpbmUgQlJDTUZfTVNHQlVGX0RFTEFZX1RYV09SS0VSX1RIUlNcdDk2XG4gI2RlZmluZSBCUkNNRl9NU0dCVUZfVFJJQ0tMRV9UWFdPUktFUl9USFJTXHQzMlxuQEAgLTc4NywxMCArODIwLDMwIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4ge1xuIFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XG4gXG4tXHRzZXRfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZWZsb3dfbWFwKTtcbitcdC8qXG4rXHQgKiBJZiB0aGUgYml0IHdhcyBhbHJlYWR5IHNldCwgYSB0eGZsb3dfd29yayBpdGVtIGlzIGFscmVhZHlcbitcdCAqIHF1ZXVlZCBvciBydW5uaW5nIGZvciB0aGlzIHJpbmcuICBJbiB0aGF0IGNhc2UgdGhlIGV4aXN0aW5nXG4rXHQgKiB3b3JrZXIgd2lsbCBkcmFpbiBvdXIgZnJlc2hseSBlbnF1ZXVlZCBmcmFtZSB3aGVuIGl0IHJ1bnMsXG4rXHQgKiBzbyB3ZSBvbmx5IG5lZWQgdG8gc2NoZWR1bGUgYW5vdGhlciB3b3JrIGl0ZW0gd2hlbiB0aGVcbitcdCAqIGZvcmNlIGZsYWcgaXMgc2V0IG9yIHRoZSByaW5nIGlzIGJlbG93IHRoZSBkZWxheSB0aHJlc2hvbGQuXG4rXHQgKlxuK1x0ICogSWYgdGhlIGJpdCB3YXMgTk9UIHNldCAodGVzdF9hbmRfc2V0X2JpdCByZXR1cm5zIGZhbHNlKSwgbm9cbitcdCAqIHdvcmtlciBpcyBwZW5kaW5nIGZvciB0aGlzIHJpbmcgYXQgYWxsLiAgV2UgTVVTVCBzY2hlZHVsZVxuK1x0ICogb25lIHVuY29uZGl0aW9uYWxseSwgb3RoZXJ3aXNlIHRoZSBmcmFtZSB3ZSBqdXN0IGVucXVldWVkXG4rXHQgKiB3aWxsIHNpdCBpbiB0aGUgZmxvd3JpbmcgdW5zZW50IHVudGlsIHNvbWUgdW5yZWxhdGVkIGV2ZW50XG4rXHQgKiB0cmlnZ2VycyB0aGUgd29ya3F1ZXVlIOKAlCBjYXVzaW5nIHNpbGVudCBUWCBzdGFsbHMgdW5kZXJcbitcdCAqIGhpZ2ggbG9hZCB3aGVuIG91dHN0YW5kaW5nX3R4IFx1MDAzZT0gREVMQVlfVFhXT1JLRVJfVEhSUy5cbitcdCAqL1xuK1x0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KGZsb3dpZCwgbXNnYnVmLVx1MDAzZWZsb3dfbWFwKSkge1xuK1x0XHQvKiBCaXQgd2FzIGNsZWFyOiBubyB3b3JrZXIgcGVuZGluZywgYWx3YXlzIHNjaGVkdWxlLiAqL1xuK1x0XHRxdWV1ZV93b3JrKG1zZ2J1Zi1cdTAwM2V0eGZsb3dfd3EsIFx1MDAyNm1zZ2J1Zi1cdTAwM2V0eGZsb3dfd29yayk7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuK1x0LyogQml0IHdhcyBhbHJlYWR5IHNldDogd29ya2VyIHBlbmRpbmcsIGFwcGx5IGNvYWxlc2NpbmcgaGV1cmlzdGljLiAqL1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbi1cdGlmICgoZm9yY2UpIHx8IChhdG9taWNfcmVhZChcdTAwMjZjb21tb25yaW5nLVx1MDAzZW91dHN0YW5kaW5nX3R4KSBcdTAwM2Ncbi1cdFx0XHRCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSUykpXG4rXHRpZiAoZm9yY2UgfHwgKGF0b21pY19yZWFkKFx1MDAyNmNvbW1vbnJpbmctXHUwMDNlb3V0c3RhbmRpbmdfdHgpIFx1MDAzY1xuK1x0XHQgICAgICBCUkNNRl9NU0dCVUZfREVMQVlfVFhXT1JLRVJfVEhSUykpXG4gXHRcdHF1ZXVlX3dvcmsobXNnYnVmLVx1MDAzZXR4Zmxvd193cSwgXHUwMDI2bXNnYnVmLVx1MDAzZXR4Zmxvd193b3JrKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTE2MjEsMTEgKzE2NzQsMTEgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdGRvIHtcbiBcdFx0YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChtc2didWYpO1xuIFx0XHRpZiAobXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QgIT0gbXNnYnVmLVx1MDAzZXJ4YnVmcG9zdClcbi1cdFx0XHRtc2xlZXAoMTApO1xuK1x0XHRcdHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRjb3VudCsrO1xuLVx0fSB3aGlsZSAoY291bnQgXHUwMDNjIDEwKTtcbitcdH0gd2hpbGUgKGNvdW50IFx1MDAzYyAxMDApO1xuIFx0YnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3QobXNnYnVmKTtcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG5pbmRleCAxMzY2MmFhNGI0ZWE2Li45MzM4YTVmYWEyNjBhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xuQEAgLTI2OCw2ICsyNjgsMjcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9maXJtd2FyZV9tYXBwaW5nIGJyY21mX3BjaWVfZnduYW1lc1tdID0ge1xuIFxuICNkZWZpbmUgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVFx0XHRtc2Vjc190b19qaWZmaWVzKDIwMDApXG4gXG4rLypcbisgKiBIMkQgbWFpbGJveCBwb2xsIHRpbWluZyBwYXJhbWV0ZXJzLlxuKyAqXG4rICogVGhlIGRvbmdsZSB0eXBpY2FsbHkgY2xlYXJzIHRoZSBIMkQgbWFpbGJveCByZWdpc3RlciB3aXRoaW4gYSBmZXdcbisgKiBodW5kcmVkIG1pY3Jvc2Vjb25kcyBhZnRlciB0aGUgZG9vcmJlbGwgaW50ZXJydXB0IGZpcmVzLiAgVGhlXG4rICogb3JpZ2luYWwgY29kZSB1c2VkIG1zbGVlcCgxMCkgKiAxMDAgaXRlcmF0aW9ucywgbWVhbmluZyB0aGVcbisgKiBtaW5pbXVtIG9ic2VydmFibGUgbGF0ZW5jeSB3YXMgMTBtcyBldmVuIHdoZW4gdGhlIGRvbmdsZSB3YXMgZmFzdC5cbisgKlxuKyAqIFdlIGluc3RlYWQgc3RhcnQgd2l0aCBhIHNob3J0IHNsZWVwIGFuZCBkb3VibGUgaXQgZWFjaCBpdGVyYXRpb25cbisgKiAoZXhwb25lbnRpYWwgYmFja29mZikgdXAgdG8gQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUywgc3RheWluZ1xuKyAqIHdpdGhpbiB0aGUgc2FtZSAxLXNlY29uZCBhYnNvbHV0ZSB0aW1lb3V0LlxuKyAqXG4rICogTUlOX1VTIC8gSU5JVElBTF9NQVhfVVMgOiB1c2xlZXBfcmFuZ2UgYm91bmRzIGZvciB0aGUgZmlyc3QgaXRlcmF0aW9uLlxuKyAqIE1BWF9VUyAgICAgOiBjYXAgb24gdGhlIHBlci1pdGVyYXRpb24gc2xlZXAgKMK1cykuXG4rICogVElNRU9VVF9VUyA6IHRvdGFsIGJ1ZGdldCBiZWZvcmUgZ2l2aW5nIHVwICgxIHNlY29uZCkuXG4rICovXG4rI2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfTUlOX1VTXHRcdDQwXG4rI2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfSU5JVElBTF9NQVhfVVNcdDUwXG4rI2RlZmluZSBCUkNNRl9QQ0lFX01CX1BPTExfTUFYX1VTXHRcdDUwMDBcbisjZGVmaW5lIEJSQ01GX1BDSUVfTUJfUE9MTF9USU1FT1VUX1VTXHRcdDEwMDAwMDBcbitcbiAjZGVmaW5lIEJSQ01GX1BDSUVfQ0ZHUkVHX1NUQVRVU19DTURcdFx0MHg0XG4gI2RlZmluZSBCUkNNRl9QQ0lFX0NGR1JFR19QTV9DU1JcdFx0MHg0Q1xuICNkZWZpbmUgQlJDTUZfUENJRV9DRkdSRUdfTVNJX0NBUFx0XHQweDU4XG5AQCAtNzY2LDcgKzc4Nyw4IEBAIGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8sIHUzMiBodG9kX21iX2RhdGEpXG4gXHRzdHJ1Y3QgYnJjbWZfY29yZSAqY29yZTtcbiBcdHUzMiBhZGRyO1xuIFx0dTMyIGN1cl9odG9kX21iX2RhdGE7XG4tXHR1MzIgaTtcbitcdHUzMiBlbGFwc2VkX3VzID0gMDtcbitcdHUzMiBzbGVlcF91cyA9IEJSQ01GX1BDSUVfTUJfUE9MTF9JTklUSUFMX01BWF9VUztcbiBcbiBcdHNoYXJlZCA9IFx1MDAyNmRldmluZm8tXHUwMDNlc2hhcmVkO1xuIFx0YWRkciA9IHNoYXJlZC1cdTAwM2VodG9kX21iX2RhdGFfYWRkcjtcbkBAIC03NzYsMTIgKzc5OCw0MCBAQCBicmNtZl9wY2llX3NlbmRfbWJfZGF0YShzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCB1MzIgaHRvZF9tYl9kYXRhKVxuIFx0XHRicmNtZl9kYmcoUENJRSwgXCJNQiB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IHBlbmRpbmcgMHglMDR4XFxuXCIsXG4gXHRcdFx0ICBjdXJfaHRvZF9tYl9kYXRhKTtcbiBcbi1cdGkgPSAwO1xuK1x0LypcbitcdCAqIFdhaXQgZm9yIHRoZSBkb25nbGUgdG8gY29uc3VtZSB0aGUgcHJldmlvdXMgSDJEIG1haWxib3ggbWVzc2FnZS5cbitcdCAqXG4rXHQgKiBUaGVyZSBpcyBubyBpbnRlcnJ1cHQgdGhhdCBzaWduYWxzIHdoZW4gdGhlIGRvbmdsZSBjbGVhcnMgdGhpc1xuK1x0ICogcmVnaXN0ZXIsIHNvIHBvbGxpbmcgaXMgdW5hdm9pZGFibGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkXG4rXHQgKiBtc2xlZXAoMTApIHBlciBpdGVyYXRpb24sIGluY3VycmluZyBhdCBsZWFzdCAxMG1zIG9mIGxhdGVuY3lcbitcdCAqIGV2ZW4gd2hlbiB0aGUgZG9uZ2xlIHJlc3BvbmRlZCBpbiBtaWNyb3NlY29uZHMuXG4rXHQgKlxuK1x0ICogV2UgdXNlIHVzbGVlcF9yYW5nZSgpIHdpdGggZXhwb25lbnRpYWwgYmFja29mZiBpbnN0ZWFkOlxuK1x0ICogICAtIEZpcnN0IGl0ZXJhdGlvbiBzbGVlcHMgfjUwwrVzIChmYXN0IHBhdGggZm9yIHJlc3BvbnNpdmUgZG9uZ2xlKS5cbitcdCAqICAgLSBFYWNoIHN1YnNlcXVlbnQgaXRlcmF0aW9uIGRvdWJsZXMgdGhlIHNsZWVwLCBjYXBwZWQgYXQgNW1zLFxuK1x0ICogICAgIHNvIGxvbmcgd2FpdHMgc3RpbGwgeWllbGQgdGhlIENQVSB3aXRob3V0IGJ1c3ktc3Bpbm5pbmcuXG4rXHQgKiAgIC0gVG90YWwgdGltZW91dCBtYXRjaGVzIHRoZSBvcmlnaW5hbCAxLXNlY29uZCBsaW1pdC5cbitcdCAqICAgLSBXZSBiYWlsIGVhcmx5IGlmIHRoZSBkZXZpY2UgaGFzIGdvbmUgZG93biBzbyB0aGF0IGEgZGVhZFxuK1x0ICogICAgIGRvbmdsZSBkb2VzIG5vdCBob2xkIHRoZSBjYWxsZXIgZm9yIGEgZnVsbCBzZWNvbmQuXG4rXHQgKi9cbiBcdHdoaWxlIChjdXJfaHRvZF9tYl9kYXRhICE9IDApIHtcbi1cdFx0bXNsZWVwKDEwKTtcbi1cdFx0aSsrO1xuLVx0XHRpZiAoaSBcdTAwM2UgMTAwKVxuK1x0XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSA9PSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV04pIHtcbitcdFx0XHRicmNtZl9kYmcoUENJRSwgXCJEZXZpY2UgZG93biwgYWJvcnRpbmcgTUIgc2VuZFxcblwiKTtcbiBcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuK1xuK1x0XHRpZiAoZWxhcHNlZF91cyBcdTAwM2U9IEJSQ01GX1BDSUVfTUJfUE9MTF9USU1FT1VUX1VTKSB7XG4rXHRcdFx0YnJjbWZfZXJyKFwiVGltZW91dCB3YWl0aW5nIGZvciBIMkQgTUIgc2xvdCBhZnRlciAldSB1c1xcblwiLFxuK1x0XHRcdFx0ICBlbGFwc2VkX3VzKTtcbitcdFx0XHRyZXR1cm4gLUVJTztcbitcdFx0fVxuK1xuK1x0XHR1c2xlZXBfcmFuZ2UoQlJDTUZfUENJRV9NQl9QT0xMX01JTl9VUywgc2xlZXBfdXMpO1xuK1x0XHRlbGFwc2VkX3VzICs9IHNsZWVwX3VzO1xuK1xuK1x0XHQvKiBFeHBvbmVudGlhbCBiYWNrb2ZmLCBjYXBwZWQgYXQgQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUyAqL1xuK1x0XHRzbGVlcF91cyA9IG1pbihzbGVlcF91cyAqIDIsICh1MzIpQlJDTUZfUENJRV9NQl9QT0xMX01BWF9VUyk7XG4rXG4gXHRcdGN1cl9odG9kX21iX2RhdGEgPSBicmNtZl9wY2llX3JlYWRfdGNtMzIoZGV2aW5mbywgYWRkcik7XG4gXHR9XG4gXG5AQCAtMTAwMSwxMCArMTA1MSwxMCBAQCBzdGF0aWMgdm9pZCBicmNtZl9wY2llX3JlbGVhc2VfaXJxKHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm8pXG4gXHRmcmVlX2lycShwZGV2LVx1MDAzZWlycSwgZGV2aW5mbyk7XG4gXHRwY2lfZGlzYWJsZV9tc2kocGRldik7XG4gXG4tXHRtc2xlZXAoNTApO1xuK1x0dXNsZWVwX3JhbmdlKDEwMDAsIDIwMDApO1xuIFx0Y291bnQgPSAwO1xuLVx0d2hpbGUgKChkZXZpbmZvLVx1MDAzZWluX2lycSkgXHUwMDI2XHUwMDI2IChjb3VudCBcdTAwM2MgMjApKSB7XG4tXHRcdG1zbGVlcCg1MCk7XG4rXHR3aGlsZSAoKGRldmluZm8tXHUwMDNlaW5faXJxKSBcdTAwMjZcdTAwMjYgKGNvdW50IFx1MDAzYyAxMDAwKSkge1xuK1x0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XG4gXHRcdGNvdW50Kys7XG4gXHR9XG4gXHRpZiAoZGV2aW5mby1cdTAwM2Vpbl9pcnEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmNcbmluZGV4IGI3MjVjNjRlNWI1YzYuLjRlNDE0NDAzZDc0NzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXG5AQCAtMTY0NSwzNyArMTY0NSw0MyBAQCBzdGF0aWMgdTggYnJjbWZfc2Rpb19yeGdsb20oc3RydWN0IGJyY21mX3NkaW8gKmJ1cywgdTggcnhzZXEpXG4gXG4gXHRcdHJkX25ldy5zZXFfbnVtID0gcnhzZXE7XG4gXHRcdHJkX25ldy5sZW4gPSBkbGVuO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBDbGFpbSB0aGUgaG9zdCBvbmNlIGZvciB0aGUgZW50aXJlIGhlYWRlci1wYXJzaW5nIHBoYXNlLlxuK1x0XHQgKlxuK1x0XHQgKiBicmNtZl9zZGlvX2hkcGFyc2UoKSBvcGVyYXRlcyBvbiBkYXRhIGFscmVhZHkgaW4gaG9zdFxuK1x0XHQgKiBtZW1vcnksIGJ1dCBtYXkgY2FsbCBicmNtZl9zZGlvX3J4ZmFpbCgpIG9uIGVycm9yLCB3aGljaFxuK1x0XHQgKiB3cml0ZXMgU0RJTyBGdW5jMSByZWdpc3RlcnMgYW5kIHRoZXJlZm9yZSByZXF1aXJlcyB0aGVcbitcdFx0ICogaG9zdCB0byBiZSBjbGFpbWVkLlxuK1x0XHQgKlxuK1x0XHQgKiBza2JfcHVsbCgpIGFuZCB0aGUgbnVtIGNvdW50ZXIgYXJlIHB1cmUgaG9zdC1tZW1vcnlcbitcdFx0ICogb3BlcmF0aW9uczsga2VlcCB0aGVtIG91dHNpZGUgdGhlIGxvY2sgdG8gbWluaW1pc2UgdGhlXG4rXHRcdCAqIGhvbGQgdGltZS4gIEJvdGggaGRwYXJzZSBjYWxscyAoc3VwZXJmcmFtZSBoZWFkZXIgYW5kXG4rXHRcdCAqIGVhY2ggc3ViZnJhbWUgaGVhZGVyKSBhcmUgZ3JvdXBlZCB1bmRlciBhIHNpbmdsZSBjbGFpbS9cbitcdFx0ICogcmVsZWFzZSwgcmVwbGFjaW5nIHRoZSBvcmlnaW5hbCBOKzEgc2VwYXJhdGUgcGFpcnMuXG4rXHRcdCAqL1xuIFx0XHRzZGlvX2NsYWltX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuIFx0XHRlcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcGZpcnN0LVx1MDAzZWRhdGEsIFx1MDAyNnJkX25ldyxcbiBcdFx0XHRcdFx0ICAgICBCUkNNRl9TRElPX0ZUX1NVUEVSKTtcbi1cdFx0c2Rpb19yZWxlYXNlX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuLVx0XHRidXMtXHUwMDNlY3VyX3JlYWQubGVuID0gcmRfbmV3Lmxlbl9ueHRmcm0gXHUwMDNjXHUwMDNjIDQ7XG4tXG4tXHRcdC8qIFJlbW92ZSBzdXBlcmZyYW1lIGhlYWRlciwgcmVtZW1iZXIgb2Zmc2V0ICovXG4tXHRcdHNrYl9wdWxsKHBmaXJzdCwgcmRfbmV3LmRhdF9vZmZzZXQpO1xuLVx0XHRudW0gPSAwO1xuLVxuLVx0XHQvKiBWYWxpZGF0ZSBhbGwgdGhlIHN1YmZyYW1lIGhlYWRlcnMgKi9cbi1cdFx0c2tiX3F1ZXVlX3dhbGsoXHUwMDI2YnVzLVx1MDAzZWdsb20sIHBuZXh0KSB7XG4tXHRcdFx0LyogbGVhdmUgd2hlbiBpbnZhbGlkIHN1YmZyYW1lIGlzIGZvdW5kICovXG4tXHRcdFx0aWYgKGVycmNvZGUpXG4tXHRcdFx0XHRicmVhaztcbiBcbi1cdFx0XHRyZF9uZXcubGVuID0gcG5leHQtXHUwMDNlbGVuO1xuLVx0XHRcdHJkX25ldy5zZXFfbnVtID0gcnhzZXErKztcbi1cdFx0XHRzZGlvX2NsYWltX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuLVx0XHRcdGVycmNvZGUgPSBicmNtZl9zZGlvX2hkcGFyc2UoYnVzLCBwbmV4dC1cdTAwM2VkYXRhLCBcdTAwMjZyZF9uZXcsXG4tXHRcdFx0XHRcdFx0ICAgICBCUkNNRl9TRElPX0ZUX1NVQik7XG4tXHRcdFx0c2Rpb19yZWxlYXNlX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuLVx0XHRcdGJyY21mX2RiZ19oZXhfZHVtcChCUkNNRl9HTE9NX09OKCksXG4tXHRcdFx0XHRcdCAgIHBuZXh0LVx1MDAzZWRhdGEsIDMyLCBcInN1YmZyYW1lOlxcblwiKTtcbi1cbi1cdFx0XHRudW0rKztcbitcdFx0LyogVmFsaWRhdGUgYWxsIHRoZSBzdWJmcmFtZSBoZWFkZXJzIHdoaWxlIGhvc3QgaXMgY2xhaW1lZCAqL1xuK1x0XHRpZiAoIWVycmNvZGUpIHtcbitcdFx0XHRza2JfcXVldWVfd2FsayhcdTAwMjZidXMtXHUwMDNlZ2xvbSwgcG5leHQpIHtcbitcdFx0XHRcdHJkX25ldy5sZW4gPSBwbmV4dC1cdTAwM2VsZW47XG4rXHRcdFx0XHRyZF9uZXcuc2VxX251bSA9IHJ4c2VxKys7XG4rXHRcdFx0XHRlcnJjb2RlID0gYnJjbWZfc2Rpb19oZHBhcnNlKGJ1cywgcG5leHQtXHUwMDNlZGF0YSxcbitcdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2cmRfbmV3LFxuK1x0XHRcdFx0XHRcdFx0ICAgICBCUkNNRl9TRElPX0ZUX1NVQik7XG4rXHRcdFx0XHRicmNtZl9kYmdfaGV4X2R1bXAoQlJDTUZfR0xPTV9PTigpLFxuK1x0XHRcdFx0XHRcdCAgIHBuZXh0LVx1MDAzZWRhdGEsIDMyLFxuK1x0XHRcdFx0XHRcdCAgIFwic3ViZnJhbWU6XFxuXCIpO1xuK1x0XHRcdFx0aWYgKGVycmNvZGUpXG4rXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdH1cbiBcdFx0fVxuIFxuIFx0XHRpZiAoZXJyY29kZSkge1xuLVx0XHRcdC8qIFRlcm1pbmF0ZSBmcmFtZSBvbiBlcnJvciAqL1xuLVx0XHRcdHNkaW9fY2xhaW1faG9zdChidXMtXHUwMDNlc2Rpb2Rldi1cdTAwM2VmdW5jMSk7XG4rXHRcdFx0LyogVGVybWluYXRlIGZyYW1lIG9uIGVycm9yLCBzdGlsbCBob2xkaW5nIHRoZSBob3N0ICovXG4gXHRcdFx0YnJjbWZfc2Rpb19yeGZhaWwoYnVzLCB0cnVlLCBmYWxzZSk7XG4gXHRcdFx0YnVzLVx1MDAzZXNkY250LnJ4Z2xvbWZhaWwrKztcbiBcdFx0XHRicmNtZl9zZGlvX2ZyZWVfZ2xvbShidXMpO1xuQEAgLTE2ODMsNiArMTY4OSwxNCBAQCBzdGF0aWMgdTggYnJjbWZfc2Rpb19yeGdsb20oc3RydWN0IGJyY21mX3NkaW8gKmJ1cywgdTggcnhzZXEpXG4gXHRcdFx0YnVzLVx1MDAzZWN1cl9yZWFkLmxlbiA9IDA7XG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdH1cbitcdFx0c2Rpb19yZWxlYXNlX2hvc3QoYnVzLVx1MDAzZXNkaW9kZXYtXHUwMDNlZnVuYzEpO1xuK1xuK1x0XHQvKiBIb3N0IHJlbGVhc2VkOyBub3cgZG8gdGhlIHB1cmUtbWVtb3J5IGJvb2trZWVwaW5nICovXG4rXHRcdGJ1cy1cdTAwM2VjdXJfcmVhZC5sZW4gPSByZF9uZXcubGVuX254dGZybSBcdTAwM2NcdTAwM2MgNDtcbitcbitcdFx0LyogUmVtb3ZlIHN1cGVyZnJhbWUgaGVhZGVyLCByZW1lbWJlciBvZmZzZXQgKi9cbitcdFx0c2tiX3B1bGwocGZpcnN0LCByZF9uZXcuZGF0X29mZnNldCk7XG4rXHRcdG51bSA9IDA7XG4gXG4gXHRcdC8qIEJhc2ljIFNEIGZyYW1pbmcgbG9va3Mgb2sgLSBwcm9jZXNzIGVhY2ggcGFja2V0IChoZWFkZXIpICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuY1xuaW5kZXggZmM3YTVkZDJlNWQ4Ni4uM2ZkOGJkYmQzNWU1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9hbXBkdS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW1wZHUuY1xuQEAgLTUxNiwxMiArNTE2LDExIEBAIGludCBicmNtc19jX2FtcGR1X2FkZF9mcmFtZShzdHJ1Y3QgYnJjbXNfYW1wZHVfc2Vzc2lvbiAqc2Vzc2lvbixcbiBcdFx0XHRyZXR1cm4gLUVOT1NQQztcbiBcbiBcdFx0Lypcbi1cdFx0ICogV2UgYXJlbid0IHJlYWxseSBvdXQgb2Ygc3BhY2UgaWYgdGhlIG5ldyBmcmFtZSBpcyBvZlxuLVx0XHQgKiBhIGRpZmZlcmVudCBwcmlvcml0eSwgYnV0IHdlIHdhbnQgdGhlIHNhbWUgYmVoYXZpb3VyXG4tXHRcdCAqIHNvIHJldHVybiAtRU5PU1BDIGFueXdheS5cbi1cdFx0ICpcbi1cdFx0ICogWFhYOiBUaGUgb2xkIEFNUERVIGNvZGUgZGlkIHRoaXMsIGJ1dCBpcyBpdCByZWFsbHlcbi1cdFx0ICogbmVjZXNzYXJ5P1xuK1x0XHQgKiBJRUVFIDgwMi4xMW4gc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbGwgTVBEVXMgd2l0aGluIGFuXG4rXHRcdCAqIEEtTVBEVSBiZWxvbmcgdG8gdGhlIHNhbWUgVElEIChUcmFmZmljIElkZW50aWZpZXIpLlxuK1x0XHQgKiBTaW5jZSBwcmlvcml0eSBtYXBzIHRvIFRJRCwgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbWVhbnNcbitcdFx0ICogd2UgbXVzdCBjbG9zZSB0aGUgY3VycmVudCBhZ2dyZWdhdGUgYW5kIHN0YXJ0IGEgbmV3IG9uZSxcbitcdFx0ICogc28gd2UgcmV0dXJuIC1FTk9TUEMgaGVyZS5cbiBcdFx0ICovXG4gXHRcdGZpcnN0ID0gc2tiX3BlZWsoXHUwMDI2c2Vzc2lvbi1cdTAwM2Vza2JfbGlzdCk7XG4gXHRcdGlmIChwLVx1MDAzZXByaW9yaXR5ICE9IGZpcnN0LVx1MDAzZXByaW9yaXR5KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MDguNzg3MTQ0NjgzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0NjIxMjg0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBicmNtODAyMTEgUGF0Y2ggZm9yIGJyY21mbWFjKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGBicmNtODAyMTFgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBgYnJjbWZtYWNgIGFuZCBgYnJjbXNtYWNgLiBMZXQncyBicmVhayBkb3duIHRoZSBpbXBsaWNhdGlvbnMuXG5cbkZpcnN0LCBsb29raW5nIGF0IHRoZSBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgY2hhbmdlcywgdGhlIGBicmNtZl9kZWxheWAgbW9kaWZpY2F0aW9ucyBhcmUgaW50ZXJlc3RpbmcuIFN3YXBwaW5nIGBtZGVsYXlgIGZvciBgdXNsZWVwX3JhbmdlYC9gbXNsZWVwYCBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIGJlIG1vcmUgcHJlY2lzZSBvciBmbGV4aWJsZSB3aXRoIHRpbWluZywgbGlrZWx5IGFpbWVkIGF0IGF2b2lkaW5nIHBvdGVudGlhbCBidXN5LXdhaXRpbmcgaXNzdWVzIG9yIGltcHJvdmluZyBwb3dlciBtYW5hZ2VtZW50LiBUaGUgYWRkaXRpb24gb2YgYGJyY21mX3Bta3NhX3YyX29wYCBhbmQgaXRzIGludGVncmF0aW9uIHdpdGggUE1LSUQgVjIgc3VwcG9ydCBpcyBkZWZpbml0ZWx5IHNpZ25pZmljYW50LCBhbmQgcG9pbnRzIHRvIHRoZSBpbmNsdXNpb24gb2YgRklMUy1jYXBhYmxlIGZpcm13YXJlIGludGVyYWN0aW9ucy4gVGhpcyBzdWdnZXN0cyBhbiBlZmZvcnQgdG8gYWNjb21tb2RhdGUgbmV3ZXIgc2VjdXJpdHkgcHJvdG9jb2xzLiBBbmQgdGhlIGNoYW5nZSB0byBgYnJjbWZfY2ZnODAyMTFfc2V0X3Bta3NhYCwgYGJyY21mX2NmZzgwMjExX2RlbF9wbWtzYWAsIGBicmNtZl9jZmc4MDIxMV9mbHVzaF9wbWtzYWAgbWVhbnMgdGhlIG5ldyBmZWF0dXJlIGlzIGZ1bGx5IGludGVncmF0ZWQuXG5cblRoZSBpbmNsdXNpb24gb2YgYHBta19saXN0X3YyYCBpbiB0aGUgYGJyY21mX2NmZzgwMjExX2luZm9gIHN0cnVjdCBpbiBgY2ZnODAyMTEuaGAgY2xlYXJseSBjb21wbGVtZW50cyB0aGUgUE1LSUQgVjIgaW1wbGVtZW50YXRpb24uXG5cbkluIGBicmNtZm1hYy9jb3JlLmNgLCB0aGUgYWRkaXRpb24gb2YgYSByYWRpb3RhcCBoZWFkZXIgd2l0aCBSU1NJIGRhdGEgd2hlbiBgQlJDTUZfRkVBVF9NT05JVE9SX0ZNVF9IV19SWF9IRFJgIGlzIGVuYWJsZWQgbG9va3MgbGlrZSBhIGhlbHBmdWwgYWRkaXRpb24gZm9yIG1vbml0b3JpbmcgYW5kIGRlYnVnZ2luZywgYW5kIHRoaXMgbWlnaHQgYmUgc29tZXRoaW5nIGludGVyZXN0aW5nIHRvIGxvb2sgYXQgaW4gbW9yZSBkZXRhaWwuXG5cbmBicmNtZm1hYy9mbG93cmluZy5jYCBhbmQgYGZsb3dyaW5nLmhgIHNob3cgb3B0aW1pemF0aW9uIGluIHRoZSBibG9ja2luZyBsb2dpYyB3aXRoIGEgcGVyLWludGVyZmFjZSBibG9ja2VkLXJpbmcgY291bnRlciwgd2hpY2ggc2hvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UuXG5cblRoZSBjaGFuZ2VzIGluIGBicmNtZm1hYy9md3NpZ25hbC5jYCBhbmQgYGJyY21zbWFjL2FtcGR1LmNgIHNlZW0gcHVyZWx5IGNvc21ldGljLCBqdXN0IGFkZGluZyBvciByZXBsYWNpbmcgY29tbWVudHMuIE5vdCByZWxldmFudCB0byB0aGUgYW5hbHlzaXMuXG5cbmBicmNtZm1hYy9tc2didWYuY2Agc2VlcyBzb21lIHN1YnN0YW50aWFsIG1vZGlmaWNhdGlvbnMsIHdpdGggaW5jcmVhc2VzIGluIGBOUl9UWF9QS1RJRFNgLCBgQlJDTUZfTVNHQlVGX1RYX0ZMVVNIX0NOVDFgLCBhbmQgYEJSQ01GX01TR0JVRl9UWF9GTFVTSF9DTlQyYC4gVGhpcyBoaW50cyBhdCBwb3RlbnRpYWxseSBoYW5kbGluZyBoaWdoZXIgdGhyb3VnaHB1dCBvciBhIGxhcmdlciBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb25zLiBUaGUgbG9naWMgY2hhbmdlIGluIGBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhYCBpcyBhbHNvIGludGVyZXN0aW5nOyBhbHdheXMgc2NoZWR1bGluZyBhIHdvcmtlciBzZWVtcyBwb3RlbnRpYWxseSBtb3JlIHJvYnVzdC4gU2ltaWxhcmx5LCB0aGUgdGltaW5nIGNoYW5nZXMgaW4gYGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2hgIHdpdGggdGhlIGluY3JlYXNlZCBsb29wIGNvdW50IGFuZCBgdXNsZWVwX3JhbmdlYCBzdWdnZXN0cyBzb21lIHJlZmluZW1lbnQgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZS5cblxuVGhlIHBvbGxpbmcgYWRqdXN0bWVudHMgaW4gYGJyY21mbWFjL3BjaWUuY2Agd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIGFuZCB0aGUgdGltaW5nIGltcHJvdmVtZW50cyBpbiBgYnJjbWZfcGNpZV9yZWxlYXNlX2lycWAgYXJlIGZ1cnRoZXIgZXZpZGVuY2Ugb2YgYW4gZWZmb3J0IHRvIG9wdGltaXplIGNvbW11bmljYXRpb24sIHNwZWNpZmljYWxseSBvbiBQQ0llLlxuXG5JbiBgYnJjbWZtYWMvc2Rpby5jYCwgbWluaW1pemluZyBgc2Rpb19jbGFpbV9ob3N0YCBob2xkIHRpbWUgaW4gYGJyY21mX3NkaW9fcnhnbG9tYCBhbHNvIHBvaW50cyB0byB0cnlpbmcgdG8gc3BlZWQgdGhpbmdzIHVwIG9yIGltcHJvdmUgY29uY3VycmVuY3kuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBgYnJjbWZtYWNgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBhbHdheXMgcmFpc2VzIHNlY3VyaXR5IGNvbmNlcm5zLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCBmaXJtd2FyZSBvdmVyIFNESU8sIFBDSWUsIG9yIFVTQi4gR2l2ZW4gdGhhdCB0aGVyZSBhcmUgc2V2ZXJhbCBjb21tdW5pY2F0aW9ucyBwYXRocywgdGhlcmUgYXJlIG11bHRpcGxlIGF2ZW51ZXMgb2YgcG9zc2libGUgYXR0YWNrLlxuXG5JJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBzdHJhdGVnaWVzLiBJIGtub3cgSSBjYW4gZW11bGF0ZSBVU0IgaW4gUUVNVS4gQnV0IGNhbiBJIHVzZSB0aGF0IHdpdGggYGJyY21mbWFjYD8gYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIGFuZCB3b24ndCBpbnRlcmFjdCB3aXRoIGBtYWM4MDIxMV9od3NpbWAuIEkgbmVlZCBhY3R1YWwgQnJvYWRjb20gaGFyZHdhcmUgZm9yIHRoaXMgZHJpdmVyLlxuXG5XaGF0IGFib3V0IHN5emthbGxlcj8gSXQgaGFzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcywgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIFVTQiBwYXJ0IG9mIGBicmNtZm1hY2AgaXMgcmVhY2hhYmxlIG9yIHN1cHBvcnRlZC4gSSBzaG91bGQgc2VhcmNoIGZvciBgYnJjbWZfdXNiX3Byb2JlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jYCB0byBzZWUuIFRoZSBwYXRjaCBtZW50aW9ucyBubyBjaGFuZ2VzIHRvIHRoZSBVU0Igc3Vic3lzdGVtLCBidXQgSSBuZWVkIHRvIHNlZSB3aGF0J3MgcG9zc2libGUgdG8gZnV6ei5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMTYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MjAuMjQ5Mjc2MDY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzM3NDA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVxcdFxcdFxcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwNy1cXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwODpcXHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMzQxPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTM0MjpicmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTM0My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTQ0MzpcXHRyZXQgPSBicmNtZl91c2JfcHJvYmVfY2IoZGV2aW5mbywgaWQtXFx1MDAzZWRyaXZlcl9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MjQ6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTY1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBicmNtZl91c2JkcnZyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY2LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Njc6XFx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY4LVxcdC5kaXNjb25uZWN0ID0gYnJjbWZfdXNiX2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUwOjIwLjI5MzYyMDM4M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDQzNDIyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGJyY21mbWFjYCBEcml2ZXIgd2l0aCBTeXprYWxsZXI6IEluaXRpYWwgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGUgYGJyY21mbWFjYCBkcml2ZXIgaGFzIGEgVVNCIGludGVyZmFjZSwgd2hpY2ggaXMgYSBncmVhdCBzdGFydGluZyBwb2ludCBzaW5jZSBTeXprYWxsZXIgaXMgY2FwYWJsZSBvZiBmdXp6aW5nIFVTQiBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgaG93ZXZlciwgaXMgdGhlIGZpcm13YXJlIGRlcGVuZGVuY3kuIEkgcmVjYWxsIHRoYXQgYGJyY21mbWFjYCByZWxpZXMgb24gZmlybXdhcmUgbG9hZGluZyB2aWEgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgLiBJZiB0aGF0IHByb2Nlc3MgZmFpbHMsIHRoZSBwcm9iZSB3aWxsIGxpa2VseSBiYWlsIG91dCBlYXJseSwgYW5kIEknbGwgbWlzcyBhIHNpZ25pZmljYW50IHBvcnRpb24gb2YgdGhlIGRyaXZlcidzIGxvZ2ljLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjaGVjayBpZiBTeXprYWxsZXIgb2ZmZXJzIHRoZSBuZWNlc3NhcnkgZmlybXdhcmUgZm9yIGBicmNtZm1hY2Agb3IgaWYgdGhlcmUncyBhIHdheSB0byBieXBhc3MgdGhpcyByZXF1aXJlbWVudC4gQWgsIHJpZ2h0LCBgYnJjbWZtYWNgIHVzZXMgYHJlcXVlc3RfZmlybXdhcmVgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBTeXprYWxsZXIgc29tZXRpbWVzIGhhbmRsZXMgYnkgaGF2aW5nIHRoZSBmaXJtd2FyZSBhbHJlYWR5IGJha2VkIGludG8gdGhlIGltYWdlLiBCdXQgdGhhdCBtYXkgYWxzbyBmYWlsLiBJZiB0aGUgZmlybXdhcmUgbG9hZCBmYWlscywgaXMgZnV6emluZyBldmVuIHdvcnRod2hpbGU/IEV2ZW4gaWYgYSBsb3Qgb2YgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGU/XG5cbkxldCdzIGxvb2sgYXQgdGhlIGFyZWFzIG9mIGNoYW5nZSB0byBnZXQgYSBzZW5zZSBvZiB3aGVyZSB0byBmb2N1cy4gVGhlIGNvbW1pdCBsb2dzIHNob3cgY2hhbmdlcyBpbiBgY2ZnODAyMTEuY2AsIGBjb3JlLmNgLCBgZmxvd3JpbmcuY2AsIGBtc2didWYuY2AsIGBwY2llLmNgLCBhbmQgYHNkaW8uY2AuIFRoZSBgY2ZnODAyMTEuY2AgY2hhbmdlcyBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYW5kIG9wZXJhdGlvbnMsIGBjb3JlLmNgIGZvciB0aGUgcmVjZWl2ZSBwYXRoLCBhbmQgYGZsb3dyaW5nLmNgIGFuZCBgbXNnYnVmLmNgIHJlbGF0ZSB0byB0aGUgdHJhbnNtaXQgcGF0aC4gYHBjaWUuY2AgYW5kIGBzZGlvLmNgIGFyZSBQQ0llIGFuZCBTRElPIHNwZWNpZmljLiBXYWl0LiBgbXNnYnVmLmNgIGFuZCBgZmxvd3JpbmcuY2AgYXJlIHVzZWQgYnkgUENJZS4gQXJlIHRoZXkgYWxzbyB1c2VkIGJ5IFVTQj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHJvYWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2shXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTAzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUwOjI1LjYzNzk2NTE3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAyMDMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUzNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmM9NDA5PXZvaWQgYnJjbWZfZmxvd3JpbmdfZGV0YWNoKHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jLTQxOC1cXHRcXHRpZiAoZmxvdy1cXHUwMDNlcmluZ3NbZmxvd2lkXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYzo0MTk6XFx0XFx0XFx0YnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhkcnZyLCBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jLTQyMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmxvd3JpbmcuYz00MzI9dm9pZCBicmNtZl9mbG93cmluZ19jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdywgaW50IGlmaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDQ1LVxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jOjQ0NjpcXHRcXHRcXHRcXHRicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKGRydnIsIGZsb3dpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDQ3LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jPTQ1ND12b2lkIGJyY21mX2Zsb3dyaW5nX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdywgaW50IGlmaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDg0LVxcdFxcdFxcdGlmIChmbG93LVxcdTAwM2VyaW5nc1tmbG93aWRdLVxcdTAwM2VzdGF0dXMgPT0gUklOR19PUEVOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mbG93cmluZy5jOjQ4NTpcXHRcXHRcXHRcXHRicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKGRydnIsIGZsb3dpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zsb3dyaW5nLmMtNDg2LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05NC0gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5NTogKiBUUklDS0xFX1RYV09SS0VSX1RIUlMgZ292ZXJucyBob3cgb2Z0ZW4gYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05Ni0gKiBmb3JjZXMgYSB3b3JrcXVldWUgc2NoZWR1bGUgd2hlbiB0aGUgcXVldWUgZGVwdGggaXMgbm90IGEgbXVsdGlwbGUgb2ZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0yNDg9c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19mbHVzaF9yZXNwIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0yNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjI1NDpzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI1NS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHF1ZXVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTI2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MjYyOnN0cnVjdCBicmNtZl9tc2didWYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0yNjMtXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0yOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjI5NzpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqdHhfcGt0aWRzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoyOTg6XFx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnJ4X3BrdGlkcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMjk5LVxcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjMxMTpzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzEyLVxcdGF0b21pY190ICBhbGxvY2F0ZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozMTg6c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMTktXFx0dTMyIGFycmF5X3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzIxLVxcdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzIyOlxcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWQgKmFycmF5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zMjMtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozMjU6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozMjg6c3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzI5OmJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMzMwLVxcdFxcdFxcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMzMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjMzMjpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkICphcnJheTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzMzOlxcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTMzNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0zNTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozNTI6YnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MzUzOlxcdFxcdFxcdCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zNTQtXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkYXRhX29mZnNldCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0zNTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzozNTc6XFx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZCAqYXJyYXk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTM1OC1cXHR1MzIgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9Mzk5PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQwMDpicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDAxLVxcdFxcdCAgICAgICB1MzIgaWR4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00MDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0MDM6XFx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZCAqcGt0aWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQwNC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTQyNz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0Mjg6YnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0Mjk6XFx0XFx0XFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDMwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDMxOlxcdHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWQgKmFycmF5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0MzI6XFx0c3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZCAqcGt0aWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQzMy1cXHR1MzIgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo0NTM6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDU0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDU1LVxcdGlmIChtc2didWYtXFx1MDAzZXJ4X3BrdGlkcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDU2OlxcdFxcdGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KG1zZ2J1Zi1cXHUwMDNlZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ1Ny1cXHRcXHRcXHRcXHRcXHQgICBtc2didWYtXFx1MDAzZXJ4X3BrdGlkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ1OC1cXHRpZiAobXNnYnVmLVxcdTAwM2V0eF9wa3RpZHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjQ1OTpcXHRcXHRicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00NjAtXFx0XFx0XFx0XFx0XFx0ICAgbXNnYnVmLVxcdTAwM2V0eF9wa3RpZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDY0OnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDY1LVxcdFxcdFxcdFxcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNDY2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NDY3OlxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZXBkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy00NjgtXFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1MTA6c3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTExLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUxODpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUyNTpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTI2LVxcdFxcdFxcdFxcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01Mjcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1Mjg6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTUyOS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MzUtXFx0bXNnYnVmLVxcdTAwM2VjdGxfY29tcGxldGVkID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjUzNjpcXHRlcnIgPSBicmNtZl9tc2didWZfdHhfaW9jdGwoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MzctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01MzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU0MDpcXHR0aW1lb3V0ID0gYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChtc2didWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NDEtXFx0aWYgKCF0aW1lb3V0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1NDY6XFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NDctXFx0XFx0XFx0XFx0ICAgICBtc2didWYtXFx1MDAzZXJ4X3BrdGlkcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU2MzpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU2NC1cXHRcXHRcXHRcXHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU2NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU2NjpcXHRyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTY3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU3MDpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01NzEtXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NTc2OnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeHJlb3JkZXIoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9NTgwPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU4MTpicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNTgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy01OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjU5NzpzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo1OTg6YnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTU5OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjYwMDpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yayA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTYwMS1cXHR1bG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02MDUtXFx0XFx0d29yayA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNm1zZ2J1Zi1cXHUwMDNld29ya19xdWV1ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NjA2OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtLCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTYwNy1cXHRcXHRsaXN0X2RlbChcXHUwMDI2d29yay1cXHUwMDNlcXVldWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTYxNT1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjYxNjpicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjYxNzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTYxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNjQ5LVxcdFxcdGJyY21mX2NvbW1vbnJpbmdfdW5sb2NrKGNvbW1vbnJpbmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2NTA6XFx0XFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY1MS1cXHRcXHRyZXR1cm4gQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02NzUtXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkZhaWxlZCB0byB3cml0ZSBjb21tb25yaW5nXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6Njc2OlxcdFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02NzctXFx0XFx0cmV0dXJuIEJSQ01GX0ZMT1dSSU5HX0lOVkFMSURfSUQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2ODQ6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjY4NjpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjY4NzpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqY3JlYXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjY4OTpcXHRtc2didWYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGJyY21mX21zZ2J1ZiwgZmxvd3Jpbmdfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6NjkxOlxcdHdoaWxlICgoY3JlYXRlID0gYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhtc2didWYpKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo2OTI6XFx0XFx0YnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIobXNnYnVmLCBjcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02OTMtXFx0XFx0a2ZyZWUoY3JlYXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy02OTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjY5ODpzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTY5OS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03MDAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo3MDE6XFx0c3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKmNyZWF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzAyLVxcdHN0cnVjdCBldGhoZHIgKmVoID0gKHN0cnVjdCBldGhoZHIgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03MzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjczMTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtNzMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03NTgtXFx0XFx0c2tiX29ycGhhbihza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo3NTk6XFx0XFx0aWYgKGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03NjAtXFx0XFx0XFx0XFx0XFx0ICAgICBtc2didWYtXFx1MDAzZXR4X3BrdGlkcywgc2tiLCBFVEhfSExFTixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy03NjctXFx0XFx0aWYgKCFyZXRfcHRyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjc2ODpcXHRcXHRcXHRicmNtZl9tc2didWZfZ2V0X3BrdGlkKG1zZ2J1Zi1cXHUwMDNlZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTc2OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgbXNnYnVmLVxcdTAwM2V0eF9wa3RpZHMsIHBrdGlkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjgwNTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmtlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODA2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODA3OlxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODA4LVxcdHUzMiBmbG93aWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTgwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODEwOlxcdG1zZ2J1ZiA9IGNvbnRhaW5lcl9vZih3b3JrZXIsIHN0cnVjdCBicmNtZl9tc2didWYsIHR4Zmxvd193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODExLVxcdGZvcl9lYWNoX3NldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZWZsb3dfbWFwLCBtc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODEyLVxcdFxcdGNsZWFyX2JpdChmbG93aWQsIG1zZ2J1Zi1cXHUwMDNlZmxvd19tYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4MTM6XFx0XFx0YnJjbWZfbXNnYnVmX3R4Zmxvdyhtc2didWYsIGZsb3dpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTgxNC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4MTg6c3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODE5LVxcdFxcdFxcdFxcdFxcdGJvb2wgZm9yY2UpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4NTM6c3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg1NC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4NTY6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg1Ny1cXHRzdHJ1Y3QgYnJjbWZfZmxvd3JpbmcgKmZsb3cgPSBtc2didWYtXFx1MDAzZWZsb3c7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODY0LVxcdGlmIChmbG93aWQgPT0gQlJDTUZfRkxPV1JJTkdfSU5WQUxJRF9JRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4NjU6XFx0XFx0Zmxvd2lkID0gYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShtc2didWYsIGlmaWR4LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NjYtXFx0XFx0aWYgKGZsb3dpZCA9PSBCUkNNRl9GTE9XUklOR19JTlZBTElEX0lEKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtODc0LVxcdGZvcmNlID0gKChxdWV1ZV9jb3VudCAlIEJSQ01GX01TR0JVRl9UUklDS0xFX1RYV09SS0VSX1RIUlMpID09IDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4NzU6XFx0YnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShtc2didWYsIGZsb3dpZCwgZm9yY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9ODgxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg4MjpicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg4My1cXHRcXHRcXHRcXHQgZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04ODQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4ODU6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04OTE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODkyOmJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04OTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo4OTQ6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTg5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz05MDA9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTAxOmJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkwMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjkwMzpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXFx1MDAzZXByb3RvLVxcdTAwM2VwZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTA0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTkwOT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MTA6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkxMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MjE6XFx0YnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FrZShtc2didWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05MjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTI0LVxcdFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2lvY3RscmVzcGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzo5MjU6XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTkyNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9OTI5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjkzMDpicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05NDEtXFx0Zmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjk0MjpcXHRza2IgPSBicmNtZl9tc2didWZfZ2V0X3BrdGlkKG1zZ2J1Zi1cXHUwMDNlZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk0My1cXHRcXHRcXHRcXHQgICAgIG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzLCBpZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6OTU2OnN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtOTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy05OTEtXFx0XFx0cGt0bGVuID0gc2tiLVxcdTAwM2VsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjk5MjpcXHRcXHRpZiAoYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKG1zZ2J1Zi1cXHUwMDNlZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTk5My1cXHRcXHRcXHRcXHRcXHQgICAgIG1zZ2J1Zi1cXHUwMDNlcnhfcGt0aWRzLCBza2IsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTAzND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDM1OmJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMDQyLVxcdHdoaWxlIChmaWxsYnVmcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDQzOlxcdFxcdHJldGNvdW50ID0gYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChtc2didWYsIGZpbGxidWZzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA0NC1cXHRcXHRpZiAoIXJldGNvdW50KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwNTI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTA1MzpicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA1NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA1Ny1cXHRcXHRcXHRcXHQgIEJSQ01GX01TR0JVRl9SWEJVRlBPU1RfVEhSRVNIT0xEKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTA1ODpcXHRcXHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEwNTktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEwNjI9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMDYzOmJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTA2NC1cXHRcXHRcXHQgICAgIHUzMiBjb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTAxLVxcdFxcdHBrdGxlbiA9IHNrYi1cXHUwMDNlbGVuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTAyOlxcdFxcdGlmIChicmNtZl9tc2didWZfYWxsb2NfcGt0aWQobXNnYnVmLVxcdTAwM2VkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEwMy1cXHRcXHRcXHRcXHRcXHQgICAgIG1zZ2J1Zi1cXHUwMDNlcnhfcGt0aWRzLCBza2IsIDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTEzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTEzNjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTQwLVxcdGNvdW50ID0gbXNnYnVmLVxcdTAwM2VtYXhfaW9jdGxyZXNwYnVmIC0gbXNnYnVmLVxcdTAwM2VjdXJfaW9jdGxyZXNwYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTQxOlxcdGNvdW50ID0gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChtc2didWYsIGZhbHNlLCBjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDItXFx0bXNnYnVmLVxcdTAwM2VjdXJfaW9jdGxyZXNwYnVmICs9IGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNDY6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTUwLVxcdGNvdW50ID0gbXNnYnVmLVxcdTAwM2VtYXhfZXZlbnRidWYgLSBtc2didWYtXFx1MDAzZWN1cl9ldmVudGJ1ZjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE1MTpcXHRjb3VudCA9IGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3QobXNnYnVmLCB0cnVlLCBjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNTItXFx0bXNnYnVmLVxcdTAwM2VjdXJfZXZlbnRidWYgKz0gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTE1NjpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTE3MC1cXHRcXHRtc2didWYtXFx1MDAzZWN1cl9ldmVudGJ1Zi0tO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMTcxOlxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KG1zZ2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTExNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjExNzM6XFx0c2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtXFx1MDAzZWRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMTc0LVxcdFxcdFxcdFxcdCAgICAgbXNnYnVmLVxcdTAwM2VyeF9wa3RpZHMsIGlkeCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTE5OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjAwOmJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjExOlxcdGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KG1zZ2J1ZiwgMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTIxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTIxOTpcXHRza2IgPSBicmNtZl9tc2didWZfZ2V0X3BrdGlkKG1zZ2J1Zi1cXHUwMDNlZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyMjAtXFx0XFx0XFx0XFx0ICAgICBtc2didWYtXFx1MDAzZXJ4X3BrdGlkcywgaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjU3OnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2dlbl9zdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjU4LVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTI2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTI2OTpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yaW5nX3N0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNzAtXFx0XFx0XFx0XFx0XFx0ICAgICB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTI4NT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjg2OmJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjg3LVxcdFxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMwMS1cXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzAyOlxcdFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzAzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzEwOlxcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzExLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzE0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzMTU6YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzM3OlxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzM4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzQxOnN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNDktXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX0dFTl9TVEFUVVNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzUwOlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX2dlbl9zdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzUxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTMtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1JJTkdfU1RBVFVTXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM1NDpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yaW5nX3N0YXR1cyhtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM1Ny1cXHRcXHRicmNtZl9kYmcoTVNHQlVGLCBcXFwiTVNHQlVGX1RZUEVfRkxPV19SSU5HX0NSRUFURV9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNTg6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNTktXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2MS1cXHRcXHRicmNtZl9kYmcoTVNHQlVGLCBcXFwiTVNHQlVGX1RZUEVfRkxPV19SSU5HX0RFTEVURV9DTVBMVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNjI6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2OC1cXHRcXHRicmNtZl9kYmcoTVNHQlVGLCBcXFwiTVNHQlVGX1RZUEVfSU9DVExfQ01QTFRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzY5OlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX2lvY3RsX2NvbXBsZXRlKG1zZ2J1ZiwgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM3MC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzcyLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9XTF9FVkVOVFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzM6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzc0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzNzYtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1RYX1NUQVRVU1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjEzNzc6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzc4LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODAtXFx0XFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIk1TR0JVRl9UWVBFX1JYX0NNUExUXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM4MTpcXHRcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzODItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM5MDpzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzOTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDMtXFx0d2hpbGUgKGNvdW50KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MDQ6XFx0XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShtc2didWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MDUtXFx0XFx0XFx0XFx0XFx0ICAgICBidWYgKyBtc2didWYtXFx1MDAzZXJ4X2RhdGFvZmZzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE0MjI9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDI1LVxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBidXNfaWYtXFx1MDAzZWRydnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MjY6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MjctXFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQzMi1cXHRidWYgPSBtc2didWYtXFx1MDAzZWNvbW1vbnJpbmdzW0JSQ01GX0QySF9NU0dSSU5HX1JYX0NPTVBMRVRFXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQzMzpcXHRicmNtZl9tc2didWZfcHJvY2Vzc19yeChtc2didWYsIGJ1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0MzQtXFx0YnVmID0gbXNnYnVmLVxcdTAwM2Vjb21tb25yaW5nc1tCUkNNRl9EMkhfTVNHUklOR19UWF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0MzU6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDM2LVxcdGJ1ZiA9IG1zZ2J1Zi1cXHUwMDNlY29tbW9ucmluZ3NbQlJDTUZfRDJIX01TR1JJTkdfQ09OVFJPTF9DT01QTEVURV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE0Mzc6XFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcngobXNnYnVmLCBidWYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE0NDYtXFx0XFx0XFx0XFx0QlJDTUZfTVNHQlVGX1RSSUNLTEVfVFhXT1JLRVJfVEhSUykpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDQ3OlxcdFxcdFxcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDQ4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNDU0OnZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDU1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQ1NjpcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXFx1MDAzZXByb3RvLVxcdTAwM2VwZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ1Ny1cXHRzdHJ1Y3QgbXNnYnVmX3R4X2Zsb3dyaW5nX2RlbGV0ZV9yZXEgKmRlbGV0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNDgzLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJidXMgZG93biwgZmxvd3Jpbmcgd2lsbCBiZSByZW1vdmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQ4NDpcXHRcXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ4NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ5My1cXHRcXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTQ5NDpcXHRcXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTQ5NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUxNi1cXHRcXHRicGh5X2VycihkcnZyLCBcXFwiRmFpbGVkIHRvIHN1Ym1pdCBSSU5HX0RFTEVURSwgZmxvd3Jpbmcgd2lsbCBiZSByZW1vdmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTUxNzpcXHRcXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyMS0jaWZkZWYgREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTUyMjpzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zdGF0c19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTI1LVxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBidXNfaWYtXFx1MDAzZWRydnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1MjY6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1MjctXFx0c3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU2OC0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTY5OnN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3N0YXRzX3JlYWQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1NzU6c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTc3OlxcdGJyY21mX2RlYnVnZnNfYWRkX2VudHJ5KGRydnIsIFxcXCJtc2didWZfc3RhdHNcXFwiLCBicmNtZl9tc2didWZfc3RhdHNfcmVhZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTE1ODA9aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTgyLVxcdHN0cnVjdCBicmNtZl9idXNfbXNnYnVmICppZl9tc2didWY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1ODM6XFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNTg0LVxcdHU2NCBhZGRyZXNzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2MDMtXFx0fVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjA0OlxcdElOSVRfV09SSyhcXHUwMDI2bXNnYnVmLVxcdTAwM2V0eGZsb3dfd29yaywgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjA1LVxcdGNvdW50ID0gQklUU19UT19MT05HUyhpZl9tc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2MjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2MjY6XFx0ZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZWhkcnB1bGwgPSBicmNtZl9tc2didWZfaGRycHVsbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYyNzpcXHRkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcXVlcnlfZGNtZCA9IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjI4OlxcdGRydnItXFx1MDAzZXByb3RvLVxcdTAwM2VzZXRfZGNtZCA9IGJyY21mX21zZ2J1Zl9zZXRfZGNtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTYyOTpcXHRkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNldHhfcXVldWVfZGF0YSA9IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjMwOlxcdGRydnItXFx1MDAzZXByb3RvLVxcdTAwM2Vjb25maWd1cmVfYWRkcl9tb2RlID0gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2MzE6XFx0ZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZWRlbGV0ZV9wZWVyID0gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjMyOlxcdGRydnItXFx1MDAzZXByb3RvLVxcdTAwM2VhZGRfdGRsc19wZWVyID0gYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2MzM6XFx0ZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZXJ4cmVvcmRlciA9IGJyY21mX21zZ2J1Zl9yeHJlb3JkZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2MzQ6XFx0ZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZWRlYnVnZnNfY3JlYXRlID0gYnJjbWZfbXNnYnVmX2RlYnVnZnNfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjM1LVxcdGRydnItXFx1MDAzZXByb3RvLVxcdTAwM2VwZCA9IG1zZ2J1ZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xNjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjU1OlxcdG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzID0gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKE5SX1RYX1BLVElEUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY1Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIERNQV9UT19ERVZJQ0UpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE2NTgtXFx0XFx0Z290byBmYWlsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNjU5OlxcdG1zZ2J1Zi1cXHUwMDNlcnhfcGt0aWRzID0gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKE5SX1JYX1BLVElEUyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY2MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIERNQV9GUk9NX0RFVklDRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTY3NC1cXHRkbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE2NzU6XFx0XFx0YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChtc2didWYpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MDoyNS42ODM5OTAxNTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc2MzU1OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIHRoaXMgY29kZTpcblxuKipDaGVja2luZyBQQ0llL1VTQiBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG1zZ2J1Zi5jYCBhbmQgYGZsb3dyaW5nLmNgLiBUaGUgY29udGV4dCB0ZWxscyBtZSB0aGVzZSBhcmUgZGVmaW5pdGVseSBpbnZvbHZlZCBpbiBQQ0llIG9wZXJhdGlvbnMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFyZSB0aGVzZSBhbHNvIHV0aWxpemVkIGJ5IHRoZSBVU0Igc3RhY2s/XCIgSXQncyBhIHZhbGlkIHF1ZXN0aW9uLCBhcyBib3RoIFBDSWUgYW5kIFVTQiBhcmUgbWV0aG9kcyBmb3IgZGF0YSB0cmFuc2ZlciwgYW5kIHRoZXJlIGNvdWxkIGJlIG92ZXJsYXAgaW4gaG93IGJ1ZmZlcnMgYW5kIGZsb3cgY29udHJvbCBhcmUgbWFuYWdlZCBhdCBhIGxvdyBsZXZlbC4gSXQgbWFrZXMgc2Vuc2UgdG8gdmVyaWZ5IGlmIHRoZXJlJ3MgYW55IHNoYXJlZCBjb2RlLiBEZXRlcm1pbmluZyB3aGV0aGVyIFVTQiB1c2VzIHRoZXNlIGZpbGVzIHdvdWxkIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG1vcmUgZnVsbHkuIEl0IHdvdWxkIGRldGVybWluZSB0aGUgZXh0ZW50IG9mIHRoZXNlIHV0aWxpdGllcywgYW5kIGhvdyB0aGV5IHJlbGF0ZSBhY3Jvc3MgdGhlIGRpZmZlcmVudCBkZXZpY2VzIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIFVTQiBkcml2ZXIgY29kZSBhbmQgbG9vayBmb3IgYW55IHJlZmVyZW5jZXMgb3IgZGVwZW5kZW5jaWVzIG9uIHRoZXNlIHBhcnRpY3VsYXIgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUyMTQsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MDoyOS4xNjAzNDgwNzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NTk3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNTc1PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1ODA6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg9MzI9dm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzQtdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM1LVxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2OlxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MjkuMjA0MTEzMTY0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ0MzAyNjk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gdGhlIGBwcm90b190eXBlYCBVU0IgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBwcm90b190eXBlYCBVU0IgdXNlcyB1bmRlciB0aGUgaG9vZC4gSXTigJlzIGNydWNpYWwgdG8ga25vdyB0aGlzLCBiZWNhdXNlIHRoYXQgaW1wYWN0cyBldmVyeXRoaW5nIGZyb20gcG93ZXIgY29uc3VtcHRpb24gYW5kIGRhdGEgdHJhbnNmZXIgcmF0ZXMgdG8gb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlIGFuZCBkZXNpZ24gY2hvaWNlcy4gSSBuZWVkIHRvIGJlIGFibGUgdG8gYXNzZXNzIHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGFueSBkZWNpc2lvbnMgYXJvdW5kIHRoaXMgYHByb3RvX3R5cGVgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBnZXQgYSBzZW5zZSBvZiB0aGUgVVNCIHZlcnNpb24gYW5kIGZlYXR1cmVzIGl0J3MgdXNpbmcuIFRoaXMgd2lsbCBoZWxwIG1lIHBsYW4gYSBtb3JlIHRob3JvdWdoIGludmVzdGlnYXRpb24uIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiYXNlbGluZSB0byB3b3JrIGZyb20sIGJlZm9yZSBJIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIGxvd2VyIGxldmVsIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MTQ4LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MzQuNjQ3MTQyMDY3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIxNTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm90b190eXBlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI2OC1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl91c2JfYnVzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI2OTpcXHRidXMtXFx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19CQ0RDO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjcwLVxcdGJ1cy1cXHUwMDNlZnd2aWQgPSBmd3ZpZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6MzQuNjkwMzYzNTc0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMTEzNzgyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQnJvYWRjb20gV2ktRmkgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBmdXp6IHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBCcm9hZGNvbSBXaS1GaS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxvb2sgYXQgdGhlIGRpZmZlcmVudCBwcm90b2NvbCBsYXllcnMgaXQgdXNlcywgbmFtZWx5IGBCUkNNRl9QUk9UT19CQ0RDYCBmb3IgVVNCIGFuZCBgQlJDTUZfUFJPVE9fTVNHQlVGYCBmb3IgUENJZS4gQ2FuIEkgZXZlbiBnZXQgdG8gdGhlIFBDSWUgc2lkZSBmb3IgZnV6emluZz8gU3l6a2FsbGVyJ3Mgbm8gaGVscCBoZXJlLCBpdCBkb2Vzbid0IGRvIGEgZ29vZCBqb2Igb2YgZW11bGF0aW5nIEJyb2FkY29tIFBDSWUgV2ktRmkuIEl0IG9ubHkgaGFzIGdlbmVyaWMgZGV2aWNlIGVtdWxhdGlvbiwgcmlnaHQ/XG5cbkFscmlnaHQsIGxldCdzIHNlZSwgZG9lcyBRRU1VIG9mZmVyIGFueSBlbXVsYXRpb24gdGhhdCBtaWdodCBoZWxwIHdpdGggQnJvYWRjb20gUENJZSBXaS1GaT8gTm9wZS4gU28sIHRoYXQncyBhIGRlYWQgZW5kLiBTdGFuZGFyZCBRRU1VIGp1c3Qgd29uJ3QgZ2V0IG1lIHRoZXJlLiBTRElPPyBTeXprYWxsZXIgYWdhaW4gaXNuJ3QgZ29pbmcgdG8gaGVscC4gQW5kIGBtYWM4MDIxMV9od3NpbWA/IEZvcmdldCBpdCwgYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IHVzZSBgbWFjODAyMTFfaHdzaW1gLlxuXG5TbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIHJlYWNoIHRoZSBgYnJjbWZtYWNgIGNvZGUgd2l0aG91dCByZWFsIGhhcmR3YXJlP1xuXG5JZiB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgVVNCLCBpdCB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYC4gSSd2ZSBub3RpY2VkIHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgZmlsZXM6IGBjZmc4MDIxMS5jYCwgYGNvcmUuY2AsIGBmbG93cmluZy5jYCwgYG1zZ2J1Zi5jYCwgYHBjaWUuY2AsIGBzZGlvLmNgLCBhbmQgYGFtcGR1LmNgLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgYGNmZzgwMjExLmNgIGFuZCBgY29yZS5jYCBhcmUgc2hhcmVkIGJ5IGFsbCB0aGUgYnVzZXMsIFVTQiwgUENJZSwgYW5kIFNESU8uIFRoYXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuXG5cbkkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHdoZXRoZXIgSSBjYW4gc3VjY2Vzc2Z1bGx5IHByb2JlIHRoZSBgYnJjbWZtYWNgIFVTQiB3aXRob3V0IHRoZSByZWFsIGZpcm13YXJlLiBJZiBsb2FkaW5nIHRoZSBmaXJtd2FyZSBmYWlscywgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIHdpbGwgZmFpbCwgYW5kIHRoZSBkcml2ZXIgd2lsbCB1bnJlZ2lzdGVyLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NTc5LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUwOjQwLjcwMTc0NTA4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNjA4MzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl9wcm9iZV9waGFzZTJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA3LVxcdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA4OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MjQ6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6NDAuODk0MzU4MzA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjcwNTMwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYnJjbWZfdXNiX3Byb2JlX3BoYXNlMioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEknbSB0YWtpbmcgYSBsb29rIGF0IGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYCB0byBzZWUgd2hhdCdzIGhhcHBlbmluZy4gSSBleHBlY3QgdGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgVVNCLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHN0ZXBzIGZpbmFsaXplIGFmdGVyIHRoZSBpbml0aWFsIGRldmljZSBhdHRhY2htZW50LiBGaXJzdCwgSSdsbCBiZSBsb29raW5nIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uOyBtZW1vcnksIGludGVycnVwdHMsIERNQSBjaGFubmVscy4gSSdsbCB3YW50IHRvIHNlZSBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSB1bmRlcmx5aW5nIFVTQiBzdGFjaywgcHJvYmFibHkgdXNpbmcgYHVzYl9yZWdpc3Rlcl9kZXYoKWAuXG5cbkknbSBiZXR0aW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgaGVyZSwgb3IgYXQgbGVhc3QgaW5pdGlhdGVkLiBJdCdzIGxpa2VseSB1c2luZyBgdXNiX2J1bGtfbXNnYCBvciBgdXNiX2NvbnRyb2xfbXNnYCB0byB0cmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gdGhlIGRldmljZS4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGVycm9yIGhhbmRsaW5nIGFzIHdlbGwuIFdoZXJlIGFyZSB0aGUgZmFpbHVyZSBwb2ludHM/IFdoYXQncyB0aGUgcmVjb3ZlcnkgcGF0aCBpZiB0aGUgZmlybXdhcmUgbG9hZCBmYWlscywgb3IgaWYgdGhlIGRldmljZSBmYWlscyBkdXJpbmcgaW5pdGlhbGl6YXRpb24/IFxuXG5OZXh0IEknbGwgbG9vayBmb3IgZGV2aWNlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEFyZSB0aGVyZSBhbnkgdmVuZG9yLXNwZWNpZmljIHJlcXVlc3RzIG9yIFVSQiBzZXR1cD8gSSdsbCBwcm9iYWJseSBmaW5kIHNvbWUgbW9yZSBgdXNiX3NldF9pbnRmZGF0YSgpYCBjYWxscywgc2V0dGluZyB1cCBwZXItZGV2aWNlIGRhdGEuIFRoaXMgbWlnaHQgYmUgd2hlcmUgcG93ZXIgbWFuYWdlbWVudCBpcyBzZXR1cCBhcyB3ZWxsLiBJJ2xsIGNoZWNrIGhvdyBpdCBoYW5kbGVzIGRpZmZlcmVudCBVU0IgY29uZmlndXJhdGlvbnM7IGhpZ2gtc3BlZWQsIGZ1bGwtc3BlZWQsIGV0Yy4gVGhlIGNsb2NrIHNldHVwIGlzIHByb2JhYmx5IGhlcmUgdG9vLCBpZiBpdCBuZWVkcyBhIHNwZWNpZmljIGNsb2NrLlxuXG5GaW5hbGx5LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIEJSQ01GIGRyaXZlcidzIGludGVybmFsIGRhdGEgc3RydWN0dXJlcywgbGlrZSB0aGUgKmJyY21mX3B1Yiogc3RydWN0dXJlLCBhbmQgbGlua2luZyB0aGVtIHRvIHRoZSBVU0IgZGV2aWNlLiBJJ2xsIGJlIGNoZWNraW5nIHRvIHNlZSB3aGF0IGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSwgaXMgYSBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2UgY3JlYXRlZCwgYW5kIGhvdyBpdCBpcyBjb25uZWN0ZWQgdG8gdGhlIFVTQiBkZXZpY2UuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBhcHByb3ByaWF0ZSBgbmV0aWZfYCBjYWxscywgYW5kIGByZWdpc3Rlcl9uZXRkZXYoKWAsIGFuZCBpdHMgYXNzb2NpYXRlZCBjbGVhbnVwIGZ1bmN0aW9uLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MDUxLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6NDUuNDYxNDE0NDg2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE3NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE3NjpcXHRzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG4xMTc3OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4xMTc4OlxcdHtcXG4xMTc5OlxcdFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbjExODA6XFx0XFx0c3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvID0gYnVzLVxcdTAwM2VidXNfcHJpdi51c2ItXFx1MDAzZWRldmluZm87XFxuMTE4MTpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbjExODI6XFx0XFxuMTE4MzpcXHRcXHRpZiAocmV0KVxcbjExODQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTg1OlxcdFxcbjExODY6XFx0XFx0YnJjbWZfZGJnKFVTQiwgXFxcIlN0YXJ0IGZ3IGRvd25sb2FkaW5nXFxcXG5cXFwiKTtcXG4xMTg3OlxcdFxcbjExODg6XFx0XFx0ZncgPSBmd3JlcS1cXHUwMDNlaXRlbXNbQlJDTUZfVVNCX0ZXX0NPREVdLmJpbmFyeTtcXG4xMTg5OlxcdFxcdGtmcmVlKGZ3cmVxKTtcXG4xMTkwOlxcdFxcbjExOTE6XFx0XFx0cmV0ID0gY2hlY2tfZmlsZShmdy1cXHUwMDNlZGF0YSk7XFxuMTE5MjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjExOTM6XFx0XFx0XFx0YnJjbWZfZXJyKFxcXCJpbnZhbGlkIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4xMTk0OlxcdFxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xcbjExOTU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTk2OlxcdFxcdH1cXG4xMTk3OlxcdFxcbjExOTg6XFx0XFx0ZGV2aW5mby1cXHUwMDNlaW1hZ2UgPSBmdy1cXHUwMDNlZGF0YTtcXG4xMTk5OlxcdFxcdGRldmluZm8tXFx1MDAzZWltYWdlX2xlbiA9IGZ3LVxcdTAwM2VzaXplO1xcbjEyMDA6XFx0XFxuMTIwMTpcXHRcXHRyZXQgPSBicmNtZl91c2JfZndfZG93bmxvYWQoZGV2aW5mbyk7XFxuMTIwMjpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4xMjAzOlxcdFxcdGlmIChyZXQpXFxuMTIwNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDU6XFx0XFxuMTIwNjpcXHRcXHRyZXQgPSBicmNtZl9hbGxvYyhkZXZpbmZvLVxcdTAwM2VkZXYsIGRldmluZm8tXFx1MDAzZXNldHRpbmdzKTtcXG4xMjA3OlxcdFxcdGlmIChyZXQpXFxuMTIwODpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRcXHQvKiBBdHRhY2ggdG8gdGhlIGNvbW1vbiBkcml2ZXIgaW50ZXJmYWNlICovXFxuMTIxMTpcXHRcXHRyZXQgPSBicmNtZl9hdHRhY2goZGV2aW5mby1cXHUwMDNlZGV2KTtcXG4xMjEyOlxcdFxcdGlmIChyZXQpXFxuMTIxMzpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMTQ6XFx0XFxuMTIxNTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIxNjpcXHRcXHRyZXR1cm47XFxuMTIxNzpcXHRlcnJvcjpcXG4xMjE4OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcImZhaWxlZDogZGV2PSVzLCBlcnI9JWRcXFxcblxcXCIsIGRldl9uYW1lKGRldiksIHJldCk7XFxuMTIxOTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIyMDpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGV2KTtcXG4xMjIxOlxcdH1cXG4xMjIyOlxcdFxcbjEyMjM6XFx0c3RhdGljIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpcXG4xMjI0OlxcdGJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbjEyMjU6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MDo0NS40NjE1MjYyMzdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5OTU5OTcwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJyb2FkY29tIFdpLUZpIERyaXZlciBGaXJtd2FyZSBMb2FkaW5nIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGVycm9yIGhhbmRsaW5nLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJZiB0aGUgcmV0dXJuIGNvZGUsIGByZXRgLCBpcyBhbnl0aGluZyBvdGhlciB0aGFuIHplcm8g4oCTIG1lYW5pbmcgdGhlIGZpcm13YXJlIGlzbid0IGZvdW5kIOKAkyB3ZSBqdW1wIHJpZ2h0IGludG8gZXJyb3IgaGFuZGxpbmcuIFRoYXQgaW52b2x2ZXMgcmVsZWFzaW5nIHRoZSBkcml2ZXIgd2l0aCBgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldilgIGFuZCB0aGVuLCBwcmVkaWN0YWJseSwgaXQgZmFpbHMuIFN0YW5kYXJkIHN0dWZmLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBTeXprYWxsZXIgcHJvYmFibHkgZG9lc24ndCBoYXZlIHRoZSBCcm9hZGNvbSBmaXJtd2FyZSBpbWFnZXMgZm9yIGBicmNtZm1hY2AuIFNwZWNpZmljYWxseSwgdGhlIG9uZXMgbGlrZSBgYnJjbWZtYWM0MzE0My5iaW5gIG9yIGBicmNtZm1hYzQzMjM2Yi5iaW5gLCBhbmQgdGhlIGNvZGUgd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgb25lIG9mIHRoZXNlIHdlcmVuJ3QgcHJvdmlkZWQuXG5cbldhaXQsIGhvbGQgb24uIEkgbmVlZCB0byByZXRoaW5rIHRoaXMsIHNpbmNlIEkgcmVtZW1iZXIgU3l6a2FsbGVyIGhhcyBzb21lIGZpcm13YXJlIGltYWdlcy4gT2theSwgYnV0IEkgYmV0IHRoZXkncmUgbm90IEJyb2FkY29tIFdpLUZpIGZpcm13YXJlcy4gRXZlbiBpZiB0aGV5IHdlcmUsIHRoYXQgYGJyY21mX3VzYl9md19kb3dubG9hZGAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IGFuZCB3cml0ZSB0aGUgZmlybXdhcmUgdG8gdGhlIGRldmljZSB1c2luZyBVU0IgY29udHJvbCBtZXNzYWdlcy4gU2luY2UgdGhpcyBpcyBhIGR1bW15IFVTQiBkZXZpY2UsIGl0IHByb2JhYmx5IHdpbGwganVzdCBhY2NlcHQgdGhvc2UgbWVzc2FnZXMuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkZXZpY2UgaXNuJ3QgcmVhbCwgaXQgd29uJ3QgYWN0dWFsbHkgZXhlY3V0ZSB0aGUgZmlybXdhcmUgb3IgcmVzcG9uZCBjb3JyZWN0bHkuIFNvLCBpdCdzIGxpa2VseSBhIGRlYWQgZW5kLCBldmVuIGlmIHdlICpjb3VsZCogZ2V0IHRoZSByaWdodCBmaXJtd2FyZSBsb2FkZWQuXG5cbkFmdGVyIHRoYXQgZmlybXdhcmUgZG93bmxvYWQsIHdlIGdldCBgYnJjbWZfYXR0YWNoYCwgd2hpY2ggaW5pdGlhbGl6ZXMgdGhlIGNvcmUgZHJpdmVyLiBUaGF0J3MgdGhlIHJlYWwgbWVhdCBvZiB0aGUgb3BlcmF0aW9uLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgYnJjbWZfYXR0YWNoYCBpcyBhY3R1YWxseSBkb2luZy4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MjkyLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6NTAuODYxMTI4NTMyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk5MTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgYnJjbWZfYXR0YWNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTI5OT1pbnQgYnJjbWZfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXBfZGV2aWNlICpzZXR0aW5ncyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMwMC0vKiBJbmRpY2F0aW9uIGZyb20gYnVzIG1vZHVsZSByZWdhcmRpbmcgcHJlc2VuY2UvaW5zZXJ0aW9uIG9mIGRvbmdsZS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzAxOmludCBicmNtZl9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzAyLS8qIEluZGljYXRpb24gZnJvbSBidXMgbW9kdWxlIHJlZ2FyZGluZyByZW1vdmFsL2Fic2VuY2Ugb2YgZG9uZ2xlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jPTEzMDc9aW50IGJyY21mX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21wX2RldmljZSAqc2V0dGluZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTEzMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYzoxMzM2OmludCBicmNtZl9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMtMTMzNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUwOjUwLjkwNTEyNTQ4OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgwNTI0NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYSBzZWFzb25lZCBwcm9mZXNzaW9uYWwgaW4gdGhlIGZpZWxkLCBzdGFydGluZyB3aXRoIHRoZSBib2xkZWQgaGVhZGVyOlxuXG4qKkRpdmluZyBpbnRvIGBicmNtZl9hdHRhY2hgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRoZSB0YXJnZXQgaGVyZSBpcyBgYnJjbWZfYXR0YWNoYC4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQgdG8gZXhwZWN0LCBidXQgbGV0J3Mgc2VlIGhvdyB3ZWxsIGl0IG1hcHMgdG8gbXkgbWVudGFsIG1vZGVsLiBVc3VhbGx5IGluIHRoZXNlIHNvcnRzIG9mIGRyaXZlcnMsIHRoaXMgaXMgdGhlIHBpdm90YWwgZnVuY3Rpb27igJQgdGhlIGdhdGV3YXkuIEl0J3MgdGhlIHBvaW50IHdoZXJlIGEgbmV3IGRldmljZSBpbnN0YW5jZSBnZXRzIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBJ4oCZbSB0aGlua2luZyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGJpbmRpbmcgdG8gdGhlIHJlbGV2YW50IGtlcm5lbCBzdWJzeXN0ZW1zIGFyZSBhbGwgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIHRoaXMgZnVuY3Rpb24ncyByZXNwb25zaWJpbGl0aWVzLiBUaGluZ3MgbGlrZSBoYXJkd2FyZSBpZGVudGlmaWNhdGlvbiwgc2V0dGluZyB1cCBETUEgY2hhbm5lbHMsIGVzdGFibGlzaGluZyBpbnRlcnJ1cHQgaGFuZGxlcnMuLi4gSSdtIHJlYWxseSBjdXJpb3VzIHRvIHNlZSBob3cgdGhlIEJyb2FkY29tIGRyaXZlciBtYW5hZ2VzIGl0cyBkZXZpY2UgY29udGV4dCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBmaXJtd2FyZS4gSXMgdGhlcmUgYSBzZXBhcmF0ZSBmaXJtd2FyZSBsb2FkIHN0YWdlPyBIb3cgZG9lcyBpdCBoYW5kbGUgcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgYXR0YWNobWVudD8gQXJlIHRoZXJlIGFueSBjbGV2ZXIgdHJpY2tzIHRvIG9wdGltaXplIHRoZSBwcm9jZXNzLCBtYXliZSBzcGVjaWZpYyB0byB0aGVpciBjaGlwc2V0cz8gSSBrbm93IHRoZXNlIGRyaXZlcnMgY2FuIGdldCBjb252b2x1dGVkIHF1aWNrbHksIHNvIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIG9yIHVuY29udmVudGlvbmFsIGFwcHJvYWNoZXMuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDI3MywiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUwOjU0Ljc4NTY1Mzk2OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzM2LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzM2OlxcdGludCBicmNtZl9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KVxcbjEzMzc6XFx0e1xcbjEzMzg6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuMTMzOTpcXHRcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLVxcdTAwM2VkcnZyO1xcbjEzNDA6XFx0XFx0aW50IHJldCA9IDA7XFxuMTM0MTpcXHRcXHRpbnQgaTtcXG4xMzQyOlxcdFxcbjEzNDM6XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiRW50ZXJcXFxcblxcXCIpO1xcbjEzNDQ6XFx0XFxuMTM0NTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShkcnZyLVxcdTAwM2VpZjJic3MpOyBpKyspXFxuMTM0NjpcXHRcXHRcXHRkcnZyLVxcdTAwM2VpZjJic3NbaV0gPSBCUkNNRl9CU1NJRFhfSU5WQUxJRDtcXG4xMzQ3OlxcdFxcbjEzNDg6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZHJ2ci1cXHUwMDNlcHJvdG9fYmxvY2spO1xcbjEzNDk6XFx0XFxuMTM1MDpcXHRcXHQvKiBMaW5rIHRvIGJ1cyBtb2R1bGUgKi9cXG4xMzUxOlxcdFxcdGRydnItXFx1MDAzZWhkcmxlbiA9IDA7XFxuMTM1MjpcXHRcXG4xMzUzOlxcdFxcdHJldCA9IGJyY21mX2Z3dmlkX2F0dGFjaChkcnZyKTtcXG4xMzU0OlxcdFxcdGlmIChyZXQgIT0gMCkge1xcbjEzNTU6XFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImJyY21mX2Z3dmlkX2F0dGFjaCBmYWlsZWRcXFxcblxcXCIpO1xcbjEzNTY6XFx0XFx0XFx0Z290byBmYWlsO1xcbjEzNTc6XFx0XFx0fVxcbjEzNTg6XFx0XFxuMTM1OTpcXHRcXHQvKiBBdHRhY2ggYW5kIGxpbmsgaW4gdGhlIHByb3RvY29sICovXFxuMTM2MDpcXHRcXHRyZXQgPSBicmNtZl9wcm90b19hdHRhY2goZHJ2cik7XFxuMTM2MTpcXHRcXHRpZiAocmV0ICE9IDApIHtcXG4xMzYyOlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9wcm90X2F0dGFjaCBmYWlsZWRcXFxcblxcXCIpO1xcbjEzNjM6XFx0XFx0XFx0Z290byBmYWlsO1xcbjEzNjQ6XFx0XFx0fVxcbjEzNjU6XFx0XFxuMTM2NjpcXHRcXHQvKiBhdHRhY2ggZmlybXdhcmUgZXZlbnQgaGFuZGxlciAqL1xcbjEzNjc6XFx0XFx0cmV0ID0gYnJjbWZfZndlaF9hdHRhY2goZHJ2cik7XFxuMTM2ODpcXHRcXHRpZiAocmV0ICE9IDApIHtcXG4xMzY5OlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9md2VoX2F0dGFjaCBmYWlsZWRcXFxcblxcXCIpO1xcbjEzNzA6XFx0XFx0XFx0Z290byBmYWlsO1xcbjEzNzE6XFx0XFx0fVxcbjEzNzI6XFx0XFxuMTM3MzpcXHRcXHQvKiBBdHRhY2ggdG8gZXZlbnRzIGltcG9ydGFudCBmb3IgY29yZSBjb2RlICovXFxuMTM3NDpcXHRcXHRicmNtZl9md2VoX3JlZ2lzdGVyKGRydnIsIEJSQ01GX0VfUFNNX1dBVENIRE9HLFxcbjEzNzU6XFx0XFx0XFx0XFx0ICAgIGJyY21mX3BzbV93YXRjaGRvZ19ub3RpZnkpO1xcbjEzNzY6XFx0XFxuMTM3NzpcXHRcXHRicmNtZl9md3ZpZF9nZXRfY2ZnODAyMTFfb3BzKGRydnIpO1xcbjEzNzg6XFx0XFxuMTM3OTpcXHRcXHRyZXQgPSBicmNtZl9idXNfc3RhcnRlZChkcnZyLCBkcnZyLVxcdTAwM2VvcHMpO1xcbjEzODA6XFx0XFx0aWYgKHJldCAhPSAwKSB7XFxuMTM4MTpcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZG9uZ2xlIGlzIG5vdCByZXNwb25kaW5nOiBlcnI9JWRcXFxcblxcXCIsIHJldCk7XFxuMTM4MjpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuMTM4MzpcXHRcXHR9XFxuMTM4NDpcXHRcXG4xMzg1OlxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MDo1NC43ODU3Njk5MjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyODY4OTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGxpa2UgbXlzZWxmOlxuXG4qKkRpdmluZyBpbnRvIGJyY21mX2J1c19zdGFydGVkKipcblxuQWxyaWdodCwgdGhlIGBicmNtZl9idXNfc3RhcnRlZGAgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqZG9pbmcqIGF0IHRoaXMgY3JpdGljYWwganVuY3R1cmUuIEl0J3MgbGlrZWx5IHNldHRpbmcgdXAgdGhlIGluaXRpYWwgc3RhdGUgZm9yIHRoZSBCcm9hZGNvbSBXaS1GaSBidXMsIGJ1dCBJIG5lZWQgdG8gZ2V0IHRoZSBzcGVjaWZpYyBkZXRhaWxzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgZ3JhcGggYW5kIGV4YW1pbmUgaXRzIGZ1bmN0aW9uIGNhbGxzIHRvIHVuZGVyc3RhbmQgdGhlIHNldHVwIHByb2Nlc3MuIEFtIEkgZ29pbmcgdG8gYmUgZGVhbGluZyB3aXRoIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXM/IFBvd2VyIG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbj8gSW5pdGlhbGl6YXRpb24gb2YgRE1BIGNoYW5uZWxzPyBJ4oCZbSBleHBlY3RpbmcgYSBmbHVycnkgb2YgYnVzIGluaXRpYWxpemF0aW9uIGFjdGlvbnMuIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIHN0YXJ0IGlzIHN1Y2Nlc3NmdWwgb3IgaWYgYW55IGVycm9ycyBhcmUgcmV0dXJuZWQuIFRoaXMgc2hvdWxkIGdpdmUgYSBnb29kIGlkZWEgb2YgaG93IHRoZSBkcml2ZXIgb3JjaGVzdHJhdGVzIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIEJyb2FkY29tIFdpLUZpIGNoaXAsIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTM3NCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6NTguMzE0NDYyNDVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDEwNjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludCBicmNtZl9idXNfc3RhcnRlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmM9MTIwMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBidXNfcmVzZXRfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMtMTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jOjEyMDY6c3RhdGljIGludCBicmNtZl9idXNfc3RhcnRlZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYy0xMjA3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTA6NTguMzYwNDc3NzM3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDkxMTcyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiBgYnJjbWZfYnVzX3N0YXJ0ZWRgOlxuXG4qKk15IEFuYWx5c2lzIG9mIGJyY21mX2J1c19zdGFydGVkKipcblxuQWxyaWdodCwgSSdtIGdvaW5nIHRvIGV4YW1pbmUgdGhlIGBicmNtZl9idXNfc3RhcnRlZGAgZnVuY3Rpb24uIEJhc2VkIG9uIHRoZSBuYW1pbmcsIEknbSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIHRoZSBpbml0aWFsIHN0YWdlcyBvZiBicmluZ2luZyB1cCB0aGUgYnVzIGludGVyZmFjZSBmb3IgdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlci4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGhhcmR3YXJlIGlzIGluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkIGFmdGVyIHRoZSBkcml2ZXIgaGFzIGJlZW4gbG9hZGVkLCBvciBhdCBsZWFzdCBzdGFydGVkIGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqSGFyZHdhcmUgcHJvYmluZyBhbmQgaWRlbnRpZmljYXRpb246KiogSXMgdGhlcmUgYW55IGRldGVjdGlvbiBvciBpZGVudGlmaWNhdGlvbiBvZiBzcGVjaWZpYyBidXMgdHlwZXMgKFNESU8sIFBDSWUsIFVTQiwgZXRjLikgYW5kIHJlbGF0ZWQgaGFyZHdhcmU/IEknbGwgcGF5IGF0dGVudGlvbiB0byB0aGUgYnVzLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLlxuKiAgICoqUmVzb3VyY2UgYWxsb2NhdGlvbjoqKiBBcmUgbWVtb3J5IHJlZ2lvbnMsIGludGVycnVwdHMsIG9yIG90aGVyIGhhcmR3YXJlIHJlc291cmNlcyBiZWluZyByZXF1ZXN0ZWQgYW5kIG1hcHBlZCBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudC5cbiogICAqKkJ1cy1zcGVjaWZpYyBpbml0aWFsaXphdGlvbjoqKiBXaGF0IGJ1cy1zcGVjaWZpYyBvcGVyYXRpb25zIGFyZSBiZWluZyBwZXJmb3JtZWQ/IEFyZSB0aGVyZSBhbnkgbG93LWxldmVsIGhhcmR3YXJlIHJlZ2lzdGVycyBiZWluZyBwcm9ncmFtbWVkP1xuKiAgICoqRHJpdmVyIHJlZ2lzdHJhdGlvbi9hdHRhY2htZW50OioqIElzIHRoaXMgd2hlcmUgdGhlIGRyaXZlciBpdHNlbGYgaXMgYXR0YWNoaW5nIHRvIHRoZSBidXM/IEknbSB3YXRjaGluZyBmb3IgYW55IGNhbGxzIHRvIGJ1cyBkcml2ZXIgYXR0YWNobWVudCBmdW5jdGlvbnMgb3Igc29tZXRoaW5nIGxpa2UgXCJkZXZpY2UgcmVnaXN0cmF0aW9uXCIuXG4qICAgKipQb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zOioqIElzIGFueSBwb3dlciBtYW5hZ2VtZW50IGxvZ2ljIGJlaW5nIHVzZWQgaGVyZT8gQXJlIHRoZXJlIHBvd2VyLW9uIHNlcXVlbmNlcyBvciBwb3dlciBzdGF0ZSB0cmFuc2l0aW9ucyBpbnZvbHZlZD9cbiogICAqKkVycm9yIGhhbmRsaW5nOioqIFdoYXQgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIGhvdz8gVGhpcyBpcyBjcml0aWNhbCBmb3IgcmVsaWFiaWxpdHkuIEFyZSB0aGVyZSBhdHRlbXB0cyB0byBwcm9iZSBvciByZS1pbml0aWFsaXplIGlmIGl0IGZhaWxzP1xuKiAgICoqSW50ZXJydXB0IHNldHVwOioqIEFueSBpbnRlcnJ1cHQtcmVsYXRlZCBzZXQtdXAuXG4qICAgKipEZWZlcnJlZCB3b3JrOioqIElmIHRoaXMgZnVuY3Rpb24ga2lja3Mgb2ZmIGFueSBkZWZlcnJlZCB3b3JrLCBsaWtlIGEgZGVsYXllZCBwcm9iZSwgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZy5cblxuVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyIGdldHMgdGhlIGJ1cyBpbnRlcmZhY2UgcmVhZHkgZm9yIGRhdGEgdHJhbnNmZXIuIFVuZGVyc3RhbmRpbmcgdGhlIHNlcXVlbmNlIG9mIHN0ZXBzIGFuZCB0aGUgcG90ZW50aWFsIHBvaW50cyBvZiBmYWlsdXJlIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZyBhbmQgb3B0aW1pemF0aW9uLiBJdCB3aWxsIGFsc28gaGVscCBtZSB0byBpZGVudGlmeSBhbnkgYXJlYXMgb2YgY29uY2VybiBpbiB0ZXJtcyBvZiByZXNvdXJjZSBjb250ZW50aW9uIG9yIGRyaXZlciBkZXBlbmRlbmNpZXMuIEVzc2VudGlhbGx5LCBpdCdzIHRoZSBmb3VuZGF0aW9uIGZvciB0aGUgd2hvbGUgZGF0YSBwbGFuZS4gSSdtIGtlZW4gdG8gZ28gdGhyb3VnaCB0aGUgY29kZSBzdGVwLWJ5LXN0ZXAgYW5kIHNlZSBob3cgdGhlIGJ1cyBnZXRzIHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODQwLCJPdXRwdXRUb2tlbnMiOjU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTE6MDMuNjA5NTk3NjIyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMDYsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMDY6XFx0c3RhdGljIGludCBicmNtZl9idXNfc3RhcnRlZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBzdHJ1Y3QgY2ZnODAyMTFfb3BzICpvcHMpXFxuMTIwNzpcXHR7XFxuMTIwODpcXHRcXHRpbnQgcmV0ID0gLTE7XFxuMTIwOTpcXHRcXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkcnZyLVxcdTAwM2VidXNfaWY7XFxuMTIxMDpcXHRcXHRzdHJ1Y3QgYnJjbWZfaWYgKmlmcDtcXG4xMjExOlxcdFxcdHN0cnVjdCBicmNtZl9pZiAqcDJwX2lmcDtcXG4xMjEyOlxcdFxcbjEyMTM6XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiXFxcXG5cXFwiKTtcXG4xMjE0OlxcdFxcbjEyMTU6XFx0XFx0LyogYWRkIHByaW1hcnkgbmV0d29ya2luZyBpbnRlcmZhY2UgKi9cXG4xMjE2OlxcdFxcdGlmcCA9IGJyY21mX2FkZF9pZihkcnZyLCAwLCAwLCBmYWxzZSwgXFxcIndsYW4lZFxcXCIsXFxuMTIxNzpcXHRcXHRcXHRcXHQgICBpc192YWxpZF9ldGhlcl9hZGRyKGRydnItXFx1MDAzZXNldHRpbmdzLVxcdTAwM2VtYWMpID8gZHJ2ci1cXHUwMDNlc2V0dGluZ3MtXFx1MDAzZW1hYyA6IE5VTEwpO1xcbjEyMTg6XFx0XFx0aWYgKElTX0VSUihpZnApKVxcbjEyMTk6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoaWZwKTtcXG4xMjIwOlxcdFxcbjEyMjE6XFx0XFx0cDJwX2lmcCA9IE5VTEw7XFxuMTIyMjpcXHRcXG4xMjIzOlxcdFxcdC8qIHNpZ25hbCBidXMgcmVhZHkgKi9cXG4xMjI0OlxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzX2lmLCBCUkNNRl9CVVNfVVApO1xcbjEyMjU6XFx0XFxuMTIyNjpcXHRcXHQvKiBkbyBidXMgc3BlY2lmaWMgcHJlaW5pdCBoZXJlICovXFxuMTIyNzpcXHRcXHRyZXQgPSBicmNtZl9idXNfcHJlaW5pdChidXNfaWYpO1xcbjEyMjg6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTIyOTpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuMTIzMDpcXHRcXG4xMjMxOlxcdFxcdC8qIEJ1cyBpcyByZWFkeSwgZG8gYW55IGluaXRpYWxpemF0aW9uICovXFxuMTIzMjpcXHRcXHRyZXQgPSBicmNtZl9jX3ByZWluaXRfZGNtZHMoaWZwKTtcXG4xMjMzOlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjEyMzQ6XFx0XFx0XFx0Z290byBmYWlsO1xcbjEyMzU6XFx0XFxuMTIzNjpcXHRcXHRicmNtZl9mZWF0X2F0dGFjaChkcnZyKTtcXG4xMjM3OlxcdFxcbjEyMzg6XFx0XFx0cmV0ID0gYnJjbWZfcHJvdG9faW5pdF9kb25lKGRydnIpO1xcbjEyMzk6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI0MDpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuMTI0MTpcXHRcXG4xMjQyOlxcdFxcdGJyY21mX3Byb3RvX2FkZF9pZihkcnZyLCBpZnApO1xcbjEyNDM6XFx0XFxuMTI0NDpcXHRcXHRkcnZyLVxcdTAwM2Vjb25maWcgPSBicmNtZl9jZmc4MDIxMV9hdHRhY2goZHJ2ciwgb3BzLFxcbjEyNDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBkcnZyLVxcdTAwM2VzZXR0aW5ncy1cXHUwMDNlcDJwX2VuYWJsZSk7XFxuMTI0NjpcXHRcXHRpZiAoZHJ2ci1cXHUwMDNlY29uZmlnID09IE5VTEwpIHtcXG4xMjQ3OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTI0ODpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuMTI0OTpcXHRcXHR9XFxuMTI1MDpcXHRcXG4xMjUxOlxcdFxcdHJldCA9IGJyY21mX25ldF9hdHRhY2goaWZwLCBmYWxzZSk7XFxuMTI1MjpcXHRcXG4xMjUzOlxcdFxcdGlmICgoIXJldCkgXFx1MDAyNlxcdTAwMjYgKGRydnItXFx1MDAzZXNldHRpbmdzLVxcdTAwM2VwMnBfZW5hYmxlKSkge1xcbjEyNTQ6XFx0XFx0XFx0cDJwX2lmcCA9IGRydnItXFx1MDAzZWlmbGlzdFsxXTtcXG4xMjU1OlxcdFxcdFxcdGlmIChwMnBfaWZwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MTowMy42MDk3MzY2MTJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk4MTI1NjU3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYGJyY21mbWFjYCBVU0IgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gaGVyZSdzIHRoZSBicmVha2Rvd24gb2YgbXkgdGhpbmtpbmcuIFRoZSBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmdW5jdGlvbiBzZW5kcyBjb21tYW5kcyB0byB0aGUgZmlybXdhcmUuIE5vdywgaWYgdGhlIGZpcm13YXJlIGlzbid0IGFjdHVhbGx5IHJ1bm5pbmcgKGxpa2Ugd2l0aCBhIGR1bW15IFVTQiBkZXZpY2UpLCB0aG9zZSBjb21tYW5kcyBhcmUgZ29pbmcgdG8gZmFpbCBvciB0aW1lIG91dCwgd2hpY2ggY2F1c2VzIGBicmNtZl9idXNfc3RhcnRlZGAgdG8gZmFpbC4gVGhpcyBpcyB0aGUgbm9ybWFsIGluaXRpYWxpemF0aW9uIGZsb3cgYW5kIG1lYW5zIHRoZSBkcml2ZXIgd29uJ3QgY29tcGxldGUgc2V0dXAuXG5cbkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4gSWYgc3l6a2FsbGVyIGlzIGZ1enppbmcgdGhpcyBVU0IgaW50ZXJmYWNlLCBpdCBjYW4gKnByb3ZpZGUqIHRoZSByZXNwb25zZXMgdG8gdGhlIGNvbnRyb2wgbWVzc2FnZXMgYW5kIHRoZSBidWxrIGVuZHBvaW50cyB0aGF0IHRoZSBkcml2ZXIgaXMgZXhwZWN0aW5nLiBIbW0sIHRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHN5emthbGxlciBjYW4gYmFzaWNhbGx5ICplbXVsYXRlKiB0aGUgZmlybXdhcmUncyByZXNwb25zZXMhXG5cblJpZ2h0LCBJIG5lZWQgdG8gY2hlY2sgaWYgc3l6a2FsbGVyIGNhbiBlbXVsYXRlIGBicmNtZm1hY2AncyBVU0IgYmVoYXZpb3Igc3BlY2lmaWNhbGx5LiBCYXNlZCBvbiBwcmlvciBrbm93bGVkZ2UsIEkgYmVsaWV2ZSBzeXprYWxsZXIncyBgZHVtbXlfaGNkYCBjYW4gZW11bGF0ZSAqYW55KiBVU0IgZGV2aWNlLiBUaGUgZnV6emVyIGhhcyB0aGUgcG93ZXIgdG8gcHJvdmlkZSBjb21wbGV0ZWx5IGFyYml0cmFyeSByZXNwb25zZXMgdG8gYW55IGluY29taW5nIFVTQiByZXF1ZXN0LlxuXG5UaGVyZWZvcmUsIGl0J3MgdG90YWxseSBwbGF1c2libGUgZm9yIHRoZSBmdXp6ZXIgdG8gYnlwYXNzIHRoZSBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmdW5jdGlvbiBieSBnaXZpbmcgaXQgdGhlIFVTQiByZXNwb25zZXMgaXQgbmVlZHMuXG5cbkFoLCBidXQgdGhlcmUncyBtb3JlIHRvIHRoaXMuIFRoZSBgYnJjbWZtYWNgIGZpcm13YXJlIGRvd25sb2FkICppdHNlbGYqIGhhcHBlbnMgb3ZlciBVU0IuIFNvLCB0aGUgZHJpdmVyIHNlbmRzIHRoZSBmaXJtd2FyZSBpbWFnZSwgZXhwZWN0cyB0aGUgZmlybXdhcmUgdG8gYm9vdCwgYW5kIHRoZW4gcmVzcG9uZCB0byBjb21tYW5kcy4gVGhpcyBpcyBkb25lIHdpdGggYEJSQ01GX1BST1RPX0JDRENgIGZvciBVU0IuXG5cbkxldCdzIHNlZSBpZiBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBpcyBhY3R1YWxseSByZWFjaGFibGUuIElmIGl0IGlzIHJlYWNoYWJsZSwgdGhlbiB0aGVyZSdzIGEgcG9zc2liaWxpdHkgdGhhdCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGBjZmc4MDIxMS5jYCBmaWxlIGNvdWxkIGJlIGV4cGxvaXRhYmxlLCBhbmQgaXQgd291bGQgYmUgd29ydGggdGFyZ2V0aW5nLlxuXG5UaGlua2luZyBhYm91dCBpdCwgSSBuZWVkIHRvIGNoZWNrIGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgLiBUaGlzIGlzIGEgY2ZnODAyMTEgY2FsbGJhY2suIEl0IGlzIGNhbGxlZCBieSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgdG8gc2V0IHRoZSBQTUtTQS4gVGhpcyByZXF1aXJlcyB0aGUgd2lyZWxlc3MgZGV2aWNlIHRvIGJlIHJlZ2lzdGVyZWQgd2l0aCBjZmc4MDIxMSAoYHdpcGh5X3JlZ2lzdGVyYCkuIFRoYXQgZnVuY3Rpb24gaXMgbGlrZWx5IGNhbGxlZCBpbiBgYnJjbWZfY2ZnODAyMTFfYXR0YWNoYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFNvLCBuZXh0IHN0ZXAsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgYnJjbWZfY2ZnODAyMTFfYXR0YWNoYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxODcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MToxMC41OTA5OTU5ODlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjk4MjE2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3aXBoeV9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTg0MDU9c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmJyY21mX2NmZzgwMjExX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtODQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo4NDkwOlxcdGVyciA9IHdpcGh5X3JlZ2lzdGVyKHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy04NDkxLVxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy04NTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjg1MDI6XFx0LyogSWYgY2ZnODAyMTEgZGlkbid0IGRpc2FibGUgNDBNSHogSFQgQ0FQIGluIHdpcGh5X3JlZ2lzdGVyKCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtODUwMy1cXHQgKiBzZXR1cCA0ME1IeiBpbiAyR0h6IGJhbmQgYW5kIGVuYWJsZSBPQlNTIHNjYW5uaW5nLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MToxMC44Mjc5ODM5MzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3Mzk0MDc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIGNoYWxsZW5nZSBoZXJlIGlzIGdldHRpbmcgYSBmdXp6ZXIsIHNwZWNpZmljYWxseSBTeXprYWxsZXIsIHRvIHJlYWxseSBkaWcgaW50byBgYnJjbWZtYWNgIHZpYSB0aGUgVVNCIGludGVyZmFjZS4gVGhlIGNvcmUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSWYgdGhlIGZ1enplciBjYW4gZmxhd2xlc3NseSBlbXVsYXRlIHRoZSBVU0IgZGV2aWNlIHN1ZmZpY2llbnRseSB0byBtYWtlIGl0IHBhc3QgYGJyY21mX2NfcHJlaW5pdF9kY21kc2AgYW5kIGBicmNtZl9idXNfc3RhcnRlZGAsIHRoZW4gd2UncmUgaW4gYnVzaW5lc3Mg4oCTIHRoZSB3aXBoeSByZWdpc3RlcnMgYW5kIHRoZSBgY2ZnODAyMTFgIGNhbGxiYWNrcyB3aWxsIG9wZW4gdXAuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIHJlYWxpc3RpY2FsbHkgYWNoaWV2ZSB0aGF0P1xuXG5TeXprYWxsZXIgZG9lcyBoYXZlIFVTQiBkZXZpY2UgZGVzY3JpcHRpb25zLCBidXQgSSdtIGhpZ2hseSBza2VwdGljYWwgb2YgcHVyZSByYW5kb20gZnV6emluZyBzdWNjZWVkaW5nIHdpdGggY29tcGxleCBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBoYW5kc2hha2VzLiBUaGVzZSBwcm90b2NvbHMgYXJlIG9mdGVuIGludHJpY2F0ZSBhbmQgcmVxdWlyZSBzcGVjaWZpYyBrbm93bGVkZ2Ugb2YgdGhlIGV4cGVjdGVkIGRhdGEgc3RydWN0dXJlcyBhbmQgY29tbWFuZCBzZXF1ZW5jZXMuIFVubGVzcyB3ZSBoYXZlIGRlZGljYXRlZCBTeXpsYW5nIGRlc2NyaXB0aW9ucyB0YWlsb3JlZCBmb3IgdGhlIGBicmNtZm1hY2AgVVNCIHByb3RvY29sLCBJIHRoaW5rIHdlJ3JlIGdvaW5nIHRvIGhpdCBhIHdhbGwuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNoZWNrIHRvIGNvbmZpcm0gaWYgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZXhpc3QgZm9yIGBicmNtZm1hY2AsIGlmIHRoZXkgZG9uJ3Qgd2Ugd2lsbCBoYXZlIHRvIG1ha2UgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1MzAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTE6MTUuMTAxOTI3OTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDgyMjE3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZm1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvbGludXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MToxNS4xNTIwMTg2MjdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEyMzIwNTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdvcnRoaW5lc3Mgb2YgRnV6emluZyBhIFBhdGNoKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LiBUaGUgcHJvbXB0IGNsZWFybHkgc3RhdGVzIEkgY2FuJ3QgZGlyZWN0bHkgc2VhcmNoIHN5emthbGxlci1zcGVjaWZpYyBkZXNjcmlwdGlvbnMuIFRoYXQgbWVhbnMgSSBjYW4ndCB1c2UgYGdyZXBwZXJgIG9uIGBzeXMvbGludXgvYCBvciBhbnl0aGluZyB3aXRoIFwic3l6X1wiIGluIGl0LiBUaGF0J3MgYSBnb29kIHJlbWluZGVyLiBCdXQsIHRoZSBvdmVyYXJjaGluZyBnb2FsIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwYXRjaCBpcyAqd29ydGgqIGZ1enppbmcuIEFuZCBldmVuIGlmIHN5emthbGxlciBjYW4ndCBkaXJlY3RseSAqZGVzY3JpYmUqIGl0LCBkb2Vzbid0IG1lYW4gaXQgY2FuJ3QgcmVhY2ggaXQuIFNvIEkgbmVlZCB0byBrZWVwIHRoYXQgcGVyc3BlY3RpdmUuIFN5emthbGxlciBtaWdodCBzdGlsbCBiZSBhYmxlIHRvIGhpdCBpdC4gUmVhY2hhYmxlIGNvcmUvZHJpdmVyIGxvZ2ljIGlzIGFsd2F5cyB3b3J0aCBjb25zaWRlcmF0aW9uLlxuXG5BbHJpZ2h0LCB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBwcm9tcHQgb3V0bGluZXMgc29tZSBzcGVjaWZpYyBzY2VuYXJpb3Mgd2hlcmUgSSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGVzZSBhcmU6IGRvY3VtZW50YXRpb24gY2hhbmdlcywgS2NvbmZpZyBtb2RpZmljYXRpb25zLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nIChwcl9lcnIsIHByaW50aywgdHJhY2Vwb2ludHMpLCBudW1lcmljIGNvbnN0YW50IGNoYW5nZXMgKHVubGVzcyB0aGV5IGltcGFjdCBleGVjdXRpb24pLCB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gR290IGl0LiBJIG5lZWQgdG8gYmUgZGlsaWdlbnQgYWJvdXQgaWRlbnRpZnlpbmcgdGhlc2UuXG5cbk5vdywgb24gdG8gdGhlIGFjdHVhbCBwYXRjaCBJJ20gZXhhbWluaW5nLiBJJ20gbG9va2luZyBhdCBgYnJjbWZtYWNgLCBhIEJyb2FkY29tIEZ1bGxNQUMgd2lyZWxlc3MgZHJpdmVyIHRoYXQgc3VwcG9ydHMgUENJZSwgU0RJTywgYW5kIFVTQi4gSW1wb3J0YW50LiBQQ0llIGFuZCBTRElPIGFyZW4ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEhvd2V2ZXIsIFVTQiAqaXMqIGVtdWxhdGVkIHZpYSBgZHVtbXlfaGNkYCwgVVNCIGdhZGdldC4gU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBjYW4gYGJyY21mbWFjYCdzIFVTQiBwYXRoIGJlIHJlYWNoZWQ/IFRoZSBhbnN3ZXIgaXMgeWVzLCB0aHJvdWdoIHRoZSBgZHVtbXlfaGNkYC4gQnV0Li4uIHRoZSBwYXRjaCBtb2RpZmllcyBtdWx0aXBsZSBmaWxlczogYG1zZ2J1Zi5jYCwgYGZsb3dyaW5nLmNgLCBgcGNpZS5jYCwgYHNkaW8uY2AsIGBjZmc4MDIxMS5jYCwgYGNvcmUuY2AsIGFuZCBgYW1wZHUuY2AuIE5vdyBJIG5lZWQgdG8gZXhhbWluZSB0byB3aGF0IGV4dGVudCB0aGUgcGFydHMgb2YgYGJyY21mbWFjYCB3aGljaCB1c2UgVVNCIGFyZSBtb2RpZmllZC4gYHBjaWUuY2AgYW5kIGBzZGlvLmNgIGFyZSBub3QgYXBwbGljYWJsZSwgYXMgd2UganVzdCBsZWFybmVkLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93bi4gQXJlIGBtc2didWYuY2AgYW5kIGBmbG93cmluZy5jYCB1c2VkIGJ5IFVTQj8gUmVtZW1iZXIsIEknbSB0cnlpbmcgdG8gZGVjaWRlIGlmIHRoaXMgaXMgd29ydGggZnV6emluZy4gSSByZWNhbGwgdGhhdCBgQlJDTUZfUFJPVE9fQkNEQ2AgaXMgdXNlZCBmb3IgVVNCLiBUaGVyZWZvcmUsIEknbGwgbmVlZCB0byBjaGVjayBpZiBgQlJDTUZfUFJPVE9fQkNEQ2AgbWFrZXMgdXNlIG9mIGVpdGhlciBgbXNnYnVmLmNgIG9yIGBmbG93cmluZy5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmaWxlcyBhcmUgdXNlZCBieSBlYWNoIFVTQiBwcm90b2NvbCwgYW5kIGRldGVybWluZSBpZiB0aGV5J3JlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0OTY0LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUxOjIyLjI3NTIyNjUwNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyNTUyMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNTc1PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1ODA6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTU4MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg9MzI9dm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzQtdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM1LVxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2OlxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTE6MjIuMzE5NDg2MzYyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MDY3MDg1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVjb2RpbmcgdGhlIGBtc2didWYuY2AgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIHNvIHRoZSBgbXNnYnVmLmNgIGZpbGUgaXMgb25seSBwdWxsZWQgaW4gd2hlbiBgcHJvdG9fdHlwZWAgaXMgc2V0IHRvIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBTdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgdGhhdCBiZWdzIHRoZSBxdWVzdGlvbjogV2hlcmUgaXMgYEJSQ01GX1BST1RPX01TR0JVRmAgYWN0dWFsbHkgKmRlZmluZWQqIGFuZCwgY3JpdGljYWxseSwgKmhvdyogaXMgaXQgYmVpbmcgc2V0PyBXZSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gVGhlIGRlcGVuZGVuY3kgb24gYG1zZ2J1Zi5jYCBpcyBjb25kaXRpb25hbCBvbiBhIHByb3RvY29sIHR5cGUsIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBzcGVjaWZpYyBidXMgdGhhdCBjb25maWd1cmVzIGBCUkNNRl9QUk9UT19NU0dCVUZgLCBiZWNhdXNlIHRoYXQncyB3aGF0IHRyaWdnZXJzIHRoZSBpbmNsdXNpb24gb2YgYG1zZ2J1Zi5jYC4gVW5kZXJzdGFuZGluZyB0aGUgYnVzIGltcGxlbWVudGF0aW9uIHNldHRpbmcgdGhlIHNwZWNpZmljIHByb3RvY29sIHdpbGwgYmUgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmRpbmcgd2hlcmUgYG1zZ2J1Zi5jYCBpcyB1c2VkLiBUaW1lIHRvIGRpZyBpbiBhbmQgZmluZCB3aGVyZSB0aGF0IHZhcmlhYmxlIGlzIGJlaW5nIGFzc2lnbmVkLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NTksIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MToyNy4wMjYxOTc5MTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTU3OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GX1BST1RPX01TR0JVRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD01MD1lbnVtIGJyY21mX2J1c19wcm90b2NvbF90eXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtNTEtXFx0QlJDTUZfUFJPVE9fQkNEQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6NTI6XFx0QlJDTUZfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUzLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0ODk9YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTY0LVxcdGJ1cy1cXHUwMDNlb3BzID0gXFx1MDAyNmJyY21mX3BjaWVfYnVzX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1NjU6XFx0YnVzLVxcdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fTVNHQlVGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU2Ni1cXHRidXMtXFx1MDAzZWNoaXAgPSBkZXZpbmZvLVxcdTAwM2Vjb3JlaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz0yMD1pbnQgYnJjbWZfcHJvdG9fYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNC1cXHRcXHRcXHRnb3RvIGZhaWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzU6XFx0fSBlbHNlIGlmIChkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzYtXFx0XFx0aWYgKGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goZHJ2cikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz01OT12b2lkIGJyY21mX3Byb3RvX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjUtXFx0XFx0XFx0YnJjbWZfcHJvdG9fYmNkY19kZXRhY2goZHJ2cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjY6XFx0XFx0ZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02Ny1cXHRcXHRcXHRicmNtZl9wcm90b19tc2didWZfZGV0YWNoKGRydnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MToyNy4wNjkzNjUwMjhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxNTUzMDcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBSZWFjaGFibGUgQ29kZSBQYXRocyoqXG5cbk9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uIEZyb20gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSwgaXQgc2VlbXMgdGhhdCBgQlJDTUZfUFJPVE9fTVNHQlVGYCBpcyAqb25seSogdXNlZCB3aXRoaW4gdGhlIFBDSWUgY29udGV4dC4gQW5kIGBmbG93cmluZy5jYCBzZWVtcyB0byBiZSBsaW5rZWQgd2l0aCBgbXNnYnVmLmNgLiBUaGVyZWZvcmUsIGBtc2didWYuY2AsIGBmbG93cmluZy5jYCwgYW5kIGBwY2llLmNgIGFyZSBhbGwgUENJZS1zcGVjaWZpYyBtb2R1bGVzLiBCdXQgd2hhdCBhYm91dCBTRElPPyBBaCwgYHNkaW8uY2AgaXMgU0RJTy1zcGVjaWZpYy4gRmluZS4gYGNmZzgwMjExLmNgIGFuZCBgY29yZS5jYCBhcHBlYXIgdG8gYmUgc2hhcmVkIG1vZHVsZXMg4oCTIHdoaWNoIGlzIGV4cGVjdGVkLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSBgYnJjbWZtYWNgIFdpLUZpIGRyaXZlci4gSXQncyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCByZWxpZXMgb24gZmlybXdhcmUgZm9yIG9wZXJhdGlvbnMgYW5kIGNvbW1hbmQgcmVzcG9uc2VzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgd2hldGhlciB3ZSBjYW4gZ2V0IHRvIGBjZmc4MDIxMS5jYCBhbmQgYGNvcmUuY2AuIElmIHdlIGVtdWxhdGUgdGhlIFVTQiBkZXZpY2UgdmlhIGEgZnV6emVyLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBnZXQgdGhlcmUuXG5cblRoZSBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIFwiY2FuIHdlIHJlYWNoIHRoZXNlIGFyZWFzIGluIFFFTVU/XCIuIFRoZSBhbnN3ZXIsIGFzIEkgc2VlIGl0LCBpcyB5ZXMuIFdlIGNhbiByZWFjaCBgY2ZnODAyMTEuY2AgYW5kIGBjb3JlLmNgIGluIFFFTVUsIHNwZWNpZmljYWxseSBieSBVU0IgZnV6emluZy5cblxuSGFuZyBvbiwgdGhlIHByb21wdCBlbXBoYXNpemVzIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCBtZW50aW9ucyB0aGUgdXN1YWwgc3VzcGVjdHM6IGNvZGUgZGVwZW5kZW50IG9uIHNwZWNpZmljIHBoeXNpY2FsIFBDSWUgY2FyZHMgKGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGV0Yy4pLiBCdXQgYGJyY21mbWFjYCBpcyBhIFdpLUZpIGRyaXZlciwgd2l0aCBhIFVTQiBpbnRlcmZhY2UuIFRoaXMgbWVhbnMgdGhlIFVTQiBwb3J0aW9ucyBhbmQgdGhlIHNoYXJlZCBwYXJ0cyBvZiB0aGUgZHJpdmVyIChgY2ZnODAyMTEuY2AsIGBjb3JlLmNgKSBhcmUgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBnYWRnZXQgZW11bGF0aW9uLlxuXG5JIGFsc28gbmVlZCB0byBjaGVjayBzb21ldGhpbmcgZWxzZS4gYGJyY21zbWFjYCBhbHNvIGFwcGVhcnMgdG8gaGF2ZSBtb2RpZmljYXRpb25zLiBTcGVjaWZpY2FsbHksIGBhbXBkdS5jYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybS4gSXMgYGJyY21zbWFjYCBhbHNvIFBDSWUtb25seT9cblxuXG4iLCJJbnB1dFRva2VucyI6NDc4MjksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTE6MzMuMjg0ODk5MjAzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc0MzM0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jPTEzMTg9c3RhdGljIERFQ0xBUkVfV09SSyhicmNtc19kcml2ZXJfd29yaywgYnJjbXNfZHJpdmVyX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6MTMyMDpzdGF0aWMgaW50IF9faW5pdCBicmNtc19tb2R1bGVfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9MTMzNj1zdGF0aWMgdm9pZCBfX2V4aXQgYnJjbXNfbW9kdWxlX2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTEzNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6MTM0Mzptb2R1bGVfaW5pdChicmNtc19tb2R1bGVfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMTM0NC1tb2R1bGVfZXhpdChicmNtc19tb2R1bGVfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUxOjMzLjMyOTY1NDM1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjEwMDg4MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYnJjbXNfbW9kdWxlX2luaXQqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gTGV0J3Mgc3RhcnQgd2l0aCBgYnJjbXNfbW9kdWxlX2luaXRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbW9kdWxlJ3MgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBkb2luZy4gSXQncyB0aGUgZW50cnkgcG9pbnQsIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8ga25vdzogd2hhdCByZXNvdXJjZXMgaXMgaXQgZ3JhYmJpbmc/IFdoYXQgc3RydWN0dXJlcyBpcyBpdCBhbGxvY2F0aW5nIGFuZCBwb3B1bGF0aW5nPyBBbnkgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgaXQncyBraWNraW5nIG9mZj8gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgaW5pdGlhbGl6ZWQ/IEFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb3JlIGZpcm13YXJlIG9yIGRldmljZSBkcml2ZXJzPyBJcyB0aGVyZSBhbnkgaW50ZXJlc3RpbmcgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSdsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBhbnkgY2FsbHMgdG8gYHJlcXVlc3RfbWVtX3JlZ2lvbmAgb3IgYGlvcmVtYXBgLi4uIHRoYXQnbGwgZ2l2ZSBtZSBhIGhhbmRsZSBvbiBtZW1vcnkgbWFuYWdlbWVudC4gVGhlbiwgdGhlIGNhbGxzIHRvIHJlZ2lzdGVyIGRldmljZSBkcml2ZXJzLCBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCBhbnkgUENJIGNvbmZpZ3VyYXRpb24gcm91dGluZXMuIEkgbmVlZCB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBjYXJlZnVsbHksIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuLCBwYXJ0aWN1bGFybHkgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIGNvbmZsaWN0cy4gVW5kZXJzdGFuZGluZyB0aGlzIHJvdXRpbmUgaXMgZ29pbmcgdG8gYmUga2V5IHRvIGRlYnVnZ2luZyBvciBtb2RpZnlpbmcgYW55dGhpbmcgcmVsYXRlZCB0byB0aGUgQnJvYWRjb20gd2lyZWxlc3Mgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDc1LCJPdXRwdXRUb2tlbnMiOjYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTE6MzguMDUwNjY2MjY4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzIwOlxcdHN0YXRpYyBpbnQgX19pbml0IGJyY21zX21vZHVsZV9pbml0KHZvaWQpXFxuMTMyMTpcXHR7XFxuMTMyMjpcXHRcXHRicmNtc19kZWJ1Z2ZzX2luaXQoKTtcXG4xMzIzOlxcdFxcdGlmICghc2NoZWR1bGVfd29yayhcXHUwMDI2YnJjbXNfZHJpdmVyX3dvcmspKVxcbjEzMjQ6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4xMzI1OlxcdFxcbjEzMjY6XFx0XFx0cmV0dXJuIDA7XFxuMTMyNzpcXHR9XFxuMTMyODpcXHRcXG4xMzI5OlxcdC8qXFxuMTMzMDpcXHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9hZHMgdGhlIGJyY21zbWFjIGRyaXZlciBmcm9tIHRoZSBzeXN0ZW0uXFxuMTMzMTpcXHQgKlxcbjEzMzI6XFx0ICogVGhpcyBmdW5jdGlvbiB1bmNvbmRpdGlvbmFsbHkgdW5sb2FkcyB0aGUgYnJjbXNtYWMgZHJpdmVyIG1vZHVsZSBmcm9tIHRoZVxcbjEzMzM6XFx0ICogc3lzdGVtLlxcbjEzMzQ6XFx0ICpcXG4xMzM1OlxcdCAqL1xcbjEzMzY6XFx0c3RhdGljIHZvaWQgX19leGl0IGJyY21zX21vZHVsZV9leGl0KHZvaWQpXFxuMTMzNzpcXHR7XFxuMTMzODpcXHRcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZicmNtc19kcml2ZXJfd29yayk7XFxuMTMzOTpcXHRcXHRiY21hX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZicmNtc19iY21hX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUxOjM4LjA1MDc4OTg0OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzg3NzY4NTIwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIEFzc2Vzc21lbnQgZm9yIGJyY21mbWFjL2JyY21zbWFjKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGJyY21zbWFjYCByZWdpc3RlcnMgYSBgYmNtYWAgZHJpdmVyLCB3aGljaCBpcyBCcm9hZGNvbSdzIGludGVybmFsIGJ1cywgdXN1YWxseSBQQ0llIG9yIFNvQy4gQ2FuIHdlIGZ1enogYGJjbWFgPyBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgYGJjbWFgIGZ1enplciwgdGhhdCBzZWVtcyBsaWtlIGEgZGVhZCBlbmQuIEhvd2V2ZXIsIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgc28gbWF5YmUgdGhhdCdzIHRoZSBhbmdsZS5cblxuVGhpcyBzcGVjaWZpYyBwYXRjaCBtb2RpZmllcyBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgYW5kIGBicmNtZm1hYy9jb3JlLmNgLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzIGluIGBjZmc4MDIxMS5jYDogYGJyY21mX2RlbGF5YCBpcyBiZWluZyBjaGFuZ2VkLCBhbmQgYSBuZXcgZnVuY3Rpb24gYGJyY21mX3Bta3NhX3YyX29wYCBpcyBhZGRlZCwgYWxvbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgLCBgYnJjbWZfY2ZnODAyMTFfZGVsX3Bta3NhYCwgYW5kIGBicmNtZl9jZmc4MDIxMV9mbHVzaF9wbWtzYWAgdG8gdXNlIHRoYXQgbmV3IGZ1bmN0aW9uLlxuXG5DYW4gd2UgcmVhY2ggYGJyY21mX2NmZzgwMjExX3NldF9wbWtzYWA/IFllcywgdmlhIGNmZzgwMjExIG5ldGxpbmsgY29tbWFuZHMsIGxpa2UgYE5MODAyMTFfQ01EX1NFVF9QTUtTQWAuIEhvd2V2ZXIsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCB3aXRoIGNmZzgwMjExIGZpcnN0LiBBbmQgdGhhdCByZXF1aXJlcyB0aGUgZmlybXdhcmUgdG8gYmUgbG9hZGVkIGFuZCB0aGUgZGV2aWNlIHRvIHJlc3BvbmQgdG8gY29tbWFuZHMuIElmIHN5emthbGxlciBjYW4gZW11bGF0ZSB0aGUgVVNCIGRldmljZSwgdGhhdCBtYXkgd29yay5cblxuQnV0IGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZW11bGF0ZSBgYnJjbWZtYWNgIFVTQj8gIFRoZSBgZHVtbXlfaGNkYCBqdXN0IGxldHMgc3l6a2FsbGVyIGluamVjdCBVU0IgZGVzY3JpcHRvcnMgYW5kIHJlc3BvbmQgdG8gVVNCIHRyYW5zZmVycywgaXQgZG9lc24ndCBoYXZlIGEgc3BlY2lhbGl6ZWQgc3RhdGUgbWFjaGluZSBmb3IgYGJyY21mbWFjYCBmaXJtd2FyZS4gU3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSByYW5kb20gVVNCIHJlc3BvbnNlcywgYnV0IHdpbGwgdGhhdCBiZSBlbm91Z2ggdG8gcGFzcyB0aGUgZmlybXdhcmUgbG9hZGluZyBwaGFzZT8gYHJlcXVlc3RfZmlybXdhcmVgIG5lZWRzIHRvIHN1Y2NlZWQuIFN5emthbGxlciBpbWFnZXMgbWF5IG5vdCBoYXZlIEJyb2FkY29tIGZpcm13YXJlIGF2YWlsYWJsZSwgYWx0aG91Z2ggaXQgY2FuIGluamVjdCBmaXJtd2FyZSB0aHJvdWdoIGBzeXpfbW91bnRfaW1hZ2VgIG9yIGluIGAvbGliL2Zpcm13YXJlYC4gTGV0J3MgYXNzdW1lIHRoYXQgc3l6a2FsbGVyIGhhcyBzb21lIEJyb2FkY29tIGZpcm13YXJlIGF2YWlsYWJsZS5cblxuRXZlbiB3aXRoIHRoZSBmaXJtd2FyZSwgdGhlIGRyaXZlciByZWFkcyBpdCwgc2VuZHMgaXQgdmlhIFVTQiwgYW5kIGV4cGVjdHMgdGhlIGZpcm13YXJlIHRvIGJvb3QgYW5kIHJlc3BvbmQgdG8gc3BlY2lmaWMgQnJvYWRjb20gY29tbWFuZHMuIFRoZSBwcm9iYWJpbGl0eSBvZiBhIHJhbmRvbSBmdXp6ZXIgZ2VuZXJhdGluZyAqdmFsaWQqIEJyb2FkY29tIGNvbW1hbmQgcmVzcG9uc2VzIGlzIGFzdHJvbm9taWNhbGx5IGxvdy4gIFN5emthbGxlciBoYXMgYG1hYzgwMjExX2h3c2ltYCBmb3IgV2ktRmkgZnV6emluZywgYnV0IGBtYWM4MDIxMV9od3NpbWAgaXMgYSBzb2Z0d2FyZSBzaW11bGF0b3IgZm9yIGBtYWM4MDIxMWAsIGFuZCBgYnJjbWZtYWNgIGlzIGEgRnVsbE1BQyBkcml2ZXIgdGhhdCB1c2VzIGBjZmc4MDIxMWAsIG5vdCBgbWFjODAyMTFgLiBTbyB0aGF0J3Mgbm90IHJlbGV2YW50LlxuXG5JcyBgYnJjbWZtYWNgIHdvcnRoIGZ1enppbmcsIGJhc2VkIG9uIHRoaXMgcHJvbXB0PyAgVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBlc3BlY2lhbGx5IFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIGBicmNtZm1hY2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLiBJdCByZXF1aXJlcyBoYXJkd2FyZSAoQnJvYWRjb20gY2hpcHMpIG9yIGNvbXBsZXggVVNCIGVtdWxhdGlvbi5cblxuU3l6a2FsbGVyICpoYXMqIGZvdW5kIGJ1Z3MgaW4gbWFueSBVU0IgV2ktRmkgZHJpdmVycyBsaWtlIGBhdGg5a19odGNgLCBgcnR3ODhgLCBgbXQ3NmAsIGBydGw4eHh4dWAgdmlhIFVTQiBlbXVsYXRpb24sIGJ1dCB0aGF04oCZcyBkaWZmZXJlbnQgdGhhbiBnZXR0aW5nIGBicmNtZm1hY2Agd29ya2luZy4gSWYgYGJyY21mbWFjYCByZWxpZXMgb24gYHJlcXVlc3RfZmlybXdhcmVgLCBpdCBtaWdodCBmYWlsIGVhcmx5LiBIb3dldmVyLCBzeXprYWxsZXIncyBgZHVtbXlfaGNkYCBjYW4gb2Z0ZW4gaGl0IGJ1Z3MgaW4gcHJvYmUgb3IgZWFybHkgaW5pdGlhbGl6YXRpb24uIEJ1dCB0aGlzIHBhdGNoJ3MgbW9kaWZpY2F0aW9ucyBhcmUgaW4gZGF0YSBwYXRocyAoUlgvVFgpIG9yIGNmZzgwMjExIG9wZXJhdGlvbnM6XG5cbi0gICBgYnJjbWZfcG1rc2FfdjJfb3BgIChjZmc4MDIxMSBvcHMsIHJlcXVpcmVzIHJlZ2lzdGVyZWQgd2lwaHkpXG4tICAgYGJyY21mX25ldGlmX21vbl9yeGAgKHJ4IHBhdGgsIHJlcXVpcmVzIHJlZ2lzdGVyZWQgbmV0ZGV2KVxuLSAgIGBicmNtZl9mbG93cmluZ19ibG9ja2AsIGBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhYCwgYGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhYCAodHggcGF0aCwgUENJZSBzcGVjaWZpYylcbi0gICBgYnJjbWZfc2Rpb19yeGdsb21gIChTRElPIHNwZWNpZmljKVxuLSAgIGBicmNtc19jX2FtcGR1X2FkZF9mcmFtZWAgKGJyY21zbWFjLCBiY21hIGJ1cylcblxuVGhlIFBDSWUsIFNESU8gYW5kIEJDTUEgcGFydHMgYXJlIHVucmVhY2hhYmxlIGluIFFFTVUuIFRoZSBVU0IgZGF0YSBwYXRocyBhcmUgdW5saWtlbHkgdG8gYmUgaGl0IHNpbmNlIHRoZXkgcmVxdWlyZSB0aGUgZGV2aWNlIHRvIGJlIGZ1bGx5IGluaXRpYWxpemVkLlxuXG5JIHNlZSBhIGNvbW1pdCBtZXNzYWdlIHRoYXQgc2VlbXMgbGlrZSBhIHN5emthbGxlciB0cmlhZ2UsIGJ1dCB0aGlzIGlzIG1lcmVseSBhIHBhdGNoICpzdWJtaXR0ZWQqIGZvciB0ZXN0aW5nXG5cbiIsIklucHV0VG9rZW5zIjo0OTY2NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MTo1NS45Mjg0Nzc4N1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxNDAzNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcnhfZnJhbWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9Mjc5PXN0YXRpYyBpbmxpbmUgdm9pZCBicmNtZl9idXNfcmVtb3ZlKHN0cnVjdCBicmNtZl9idXMgKmJ1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0yOTMtLyogUmVjZWl2ZSBmcmFtZSBmb3IgZGVsaXZlcnkgdG8gT1MuICBDYWxsZWUgZGlzcG9zZXMgb2YgcnhwLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDoyOTQ6dm9pZCBicmNtZl9yeF9mcmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpyeHAsIGJvb2wgaGFuZGxlX2V2ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0yOTUtXFx0XFx0ICAgIGJvb2wgaW5pcnEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYz00ODk9c3RhdGljIGludCBicmNtZl9yeF9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jOjUwODp2b2lkIGJyY21mX3J4X2ZyYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBoYW5kbGVfZXZlbnQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYy01MDktXFx0XFx0ICAgIGJvb2wgaW5pcnEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jPTE1MTQ9c3RhdGljIHU4IGJyY21mX3NkaW9fcnhnbG9tKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHU4IHJ4c2VxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYy0xNzMxLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjE3MzI6XFx0XFx0XFx0XFx0YnJjbWZfcnhfZnJhbWUoYnVzLVxcdTAwM2VzZGlvZGV2LVxcdTAwM2VkZXYsIHBmaXJzdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTE3MzMtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jPTE4NzA9c3RhdGljIHVpbnQgYnJjbWZfc2Rpb19yZWFkZnJhbWVzKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHVpbnQgbWF4ZnJhbWVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYy0yMDY1LVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jOjIwNjY6XFx0XFx0XFx0YnJjbWZfcnhfZnJhbWUoYnVzLVxcdTAwM2VzZGlvZGV2LVxcdTAwM2VkZXYsIHBrdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTIwNjctXFx0XFx0XFx0XFx0ICAgICAgIGZhbHNlLCBmYWxzZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NTA3PXN0YXRpYyB2b2lkIGJyY21mX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTI3LVxcdFxcdHNrYl9wdXQoc2tiLCB1cmItXFx1MDAzZWFjdHVhbF9sZW5ndGgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1Mjg6XFx0XFx0YnJjbWZfcnhfZnJhbWUoZGV2aW5mby1cXHUwMDNlZGV2LCBza2IsIHRydWUsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01MjktXFx0XFx0YnJjbWZfdXNiX3J4X3JlZmlsbChkZXZpbmZvLCByZXEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MTo1NS45NzI2NDI1NDdaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwNzExMjE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJYIEZyYW1lIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyBob3cgZGF0YSBnZXRzIHJlY2VpdmVkIG92ZXIgVVNCIGluIHRoaXMgYGJyY21mYCBkcml2ZXIuIEkgc2VlIHRoYXQgYGJyY21mX3J4X2ZyYW1lYCBpcyB0aGUgdWx0aW1hdGUgaGFuZGxlciBmb3IgaW5jb21pbmcgZnJhbWVzLCBhbmQgaXQncyBjYWxsZWQgZnJvbSBgYnJjbWZfdXNiX3J4X2NvbXBsZXRlYC4gYGJyY21mX3VzYl9yeF9jb21wbGV0ZWAgaXMgdHJpZ2dlcmVkIHdoZW4gYSBVU0IgYnVsayBJTiB0cmFuc2ZlciBpcyBjb21wbGV0ZS4gUmlnaHQsIG1ha2VzIHNlbnNlLiBTbywgaWYgYSBmdXp6ZXIsIGZvciBleGFtcGxlLCBzZW5kcyBhIGJ1bGsgSU4gdHJhbnNmZXIgdG8gdGhlIGRldmljZSwgaXQnbGwgaGl0IGBicmNtZl91c2JfcnhfY29tcGxldGVgLCBhbmQgdGhhdCBmdW5jdGlvbiB3aWxsIGluIHR1cm4gY2FsbCBgYnJjbWZfcnhfZnJhbWVgIHRvIHByb2Nlc3MgdGhlIGRhdGEuXG5cbkhtbSwgYSBxdWVzdGlvbiBhcmlzZXMuIERvZXMgYGJyY21mX3VzYl9yeF9jb21wbGV0ZWAgaGF2ZSBhbnkgcHJlY29uZGl0aW9ucz8gU3BlY2lmaWNhbGx5LCBkb2VzIGl0IHJlcXVpcmUgdGhlIFVTQiBkZXZpY2UgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBhbmQgaW4gYSBzdGFibGUgc3RhdGUgYmVmb3JlIGl0IGNhbiBleGVjdXRlIGNvcnJlY3RseT8gVGhpcyBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIHZlcmlmeSwgYXMgaXQgaGFzIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZyBjb3ZlcmFnZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBhbmQgaG93IHRob3NlIFVTQiBVUkJzIGFyZSBzdWJtaXR0ZWQgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBnbyBiYWNrIGFuZCBleGFtaW5lIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0byBzZWUgaG93IHRoZSBkZXZpY2UgaXMgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzY5OCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MjowMC40Nzk3NTkxMDhaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTQxNzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl9yeF9yZWZpbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjA9c3RydWN0IGJyY21mX3VzYmRldl9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE2MzpzdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfcmVmaWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTY0LVxcdFxcdFxcdFxcdHN0cnVjdCBicmNtZl91c2JyZXEgICpyZXEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTUwNz1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUyOC1cXHRcXHRicmNtZl9yeF9mcmFtZShkZXZpbmZvLVxcdTAwM2VkZXYsIHNrYiwgdHJ1ZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjUyOTpcXHRcXHRicmNtZl91c2JfcnhfcmVmaWxsKGRldmluZm8sIHJlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUzMC1cXHRcXHR1c2JfbWFya19sYXN0X2J1c3kodXJiLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTM5OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9yeF9yZWZpbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NDAtXFx0XFx0XFx0XFx0c3RydWN0IGJyY21mX3VzYnJlcSAgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01NzE9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2ZpbGxfYWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzktXFx0d2hpbGUgKChyZXEgPSBicmNtZl91c2JfZGVxKGRldmluZm8sIFxcdTAwMjZkZXZpbmZvLVxcdTAwM2VyeF9mcmVlcSwgTlVMTCkpICE9IE5VTEwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjU4MDpcXHRcXHRicmNtZl91c2JfcnhfcmVmaWxsKGRldmluZm8sIHJlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUyOjAwLjUyNDcwODM2NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMwNTE3ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIGxhaWQgb3V0LCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGggb2YgYGJyY21mX3VzYl9yeF9maWxsX2FsbGAqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYGJyY21mX3VzYl9yeF9maWxsX2FsbGAgaXMgYmVpbmcgdXNlZC4gV2hlcmUgZG9lcyBpdCBmaXQgaW50byB0aGUgYnJvYWRlciBkYXRhIGZsb3cgd2l0aGluIHRoaXMgQnJvYWRjb20gVVNCIFdpLUZpIGRyaXZlcj8gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBjYWxsIHNpdGVzLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIC0gbGlrZWx5IGdyZXAgb3Igc29tZSBjb2RlIG5hdmlnYXRpb24gdG9vbHMgLSB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgaXRzIGNhbGwgZ3JhcGggaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbGx5IGRpYWdub3NpbmcgYW55IGlzc3VlcyBJIG1pZ2h0IGJlIHNlZWluZyBvciBhbnRpY2lwYXRpbmcuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgb3ZlcnZpZXcgYmVmb3JlIEkgZGVsdmUgaW50byB0aGUgZnVuY3Rpb24ncyBpbnRlcm5hbCBsb2dpYy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0ODQ4LCJPdXRwdXRUb2tlbnMiOjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6MDQuMjU1MjI4OTY0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzEyOTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcnhfZmlsbF9hbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01Mzk9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X3JlZmlsbChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1NzE6c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2ZpbGxfYWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz02NjU9c3RhdGljIGludCBicmNtZl91c2JfdXAoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY5My1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY5NDpcXHRicmNtZl91c2JfcnhfZmlsbF9hbGwoZGV2aW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY5NS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNDk4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA1LVxcdGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MDY6XFx0YnJjbWZfdXNiX3J4X2ZpbGxfYWxsKGRldmluZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA3LVxcdGRldmljZV9zZXRfd2FrZXVwX2VuYWJsZShkZXZpbmZvLVxcdTAwM2VkZXYsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6MDQuMjk4MzYzNTkyWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNTA4ODc5NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBicmNtZl91c2JfdXBgIENhbGwgU2l0ZSoqXG5cbk9rYXksIHNvIGBicmNtZl91c2JfdXBgIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBVU0IgYnVzIGl0c2VsZiBpcyBhY3RpdmF0ZWQsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBob29rIHRvIHVuZGVyc3RhbmQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBJIG5lZWQgdG8gcGlucG9pbnQgZXhhY3RseSAqd2hlcmUqIHRoYXQgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGluIHRoZSBkcml2ZXIuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdHJhY2luZyB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGJ1cy1zcGVjaWZpYyBzZXR1cCBwcm9jZXNzLiBJIG5lZWQgdG8gdHJhY2sgZG93biBhbGwgaW5zdGFuY2VzIG9mIGBicmNtZl91c2JfdXBgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBpbnZva2VkLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhlIFVTQiBpbnRlcmZhY2UgY29tZXMgdG8gbGlmZSB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjU5LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6MDkuNjQ5MjU0MzNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDc1OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl91cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTYwOD1zdGF0aWMgaW50IGJyY21mX3VzYl90eChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2NjU6c3RhdGljIGludCBicmNtZl91c2JfdXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy02NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTExNjU9c3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9idXNfb3BzIGJyY21mX3VzYl9idXNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTY2OlxcdC5wcmVpbml0ID0gYnJjbWZfdXNiX3VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTY3LVxcdC5zdG9wID0gYnJjbWZfdXNiX2Rvd24sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUyOjA5LjY5MTczNTg3N1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTEwNDY1NTg1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSB3aXRoIEZpcm13YXJlIExvYWRpbmcgYW5kIER1bW15IFVTQiBEZXZpY2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnJjbWZfdXNiX3VwYCBpcyB0aGUgYHByZWluaXRgIGNhbGxiYWNrIGZvciB0aGlzIGJ1cy4gSSByZW1lbWJlciBzZWVpbmcgZWFybGllciB0aGF0IGBicmNtZl9idXNfcHJlaW5pdGAgaXMgY2FsbGVkIGZyb20gYGJyY21mX2J1c19zdGFydGVkYCwgd2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGBicmNtZl9hdHRhY2hgLiBGdXJ0aGVyIGJhY2ssIGBicmNtZl9hdHRhY2hgIGdldHMgY2FsbGVkIGZyb20gYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgLCBhbmQgdGhhdCdzIHRyaWdnZXJlZCBhZnRlciBmaXJtd2FyZSBsb2FkaW5nLiBTbywgaWYgZmlybXdhcmUgbG9hZGluZyBnb2VzIGJlbGx5LXVwLCBgYnJjbWZfdXNiX3VwYCBuZXZlciBydW5zLiBObyBVUkJzIGdldCBzdWJtaXR0ZWQsIGFuZCB0aGVyZWZvcmUgYGJyY21mX3VzYl9yeF9jb21wbGV0ZWAgbmV2ZXIgZ2V0cyBpbnZva2VkLCB3aGljaCBtZWFucyBgYnJjbWZfbmV0aWZfbW9uX3J4YCBpcyB1bnJlYWNoYWJsZS4gU2ltcGxlIGVub3VnaC5cblxuQnV0IHdoYXQgYWJvdXQgYGJyY21mX2NmZzgwMjExX3NldF9wbWtzYWA/IFRoYXQncyBhIGNmZzgwMjExIGNhbGxiYWNrLCBhbmQgdGhvc2UgcmVxdWlyZSB0aGUgd2lwaHkgdG8gYmUgcmVnaXN0ZXJlZC4gVGhlIHdpcGh5IGdldHMgcmVnaXN0ZXJlZCBpbiBgYnJjbWZfY2ZnODAyMTFfYXR0YWNoYCwgd2hpY2ggaXMgYWxzbyBjYWxsZWQgZnJvbSBgYnJjbWZfYnVzX3N0YXJ0ZWRgLiBUaGlzIHJlaW5mb3JjZXMgdGhlIGNvbmNsdXNpb246IGlmIGZpcm13YXJlIGxvYWRpbmcgZmFpbHMsIHRoZSB3aXBoeSBkb2Vzbid0IHJlZ2lzdGVyLCBhbmQgbm8gY2ZnODAyMTEgY2FsbGJhY2tzIGFyZSBldmVyIGNhbGxlZC4gVGhlIGVudGlyZSBkcml2ZXIgbG9naWMgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB3aXRob3V0IHN1Y2Nlc3NmdWwgZmlybXdhcmUgbG9hZGluZy5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydC4gRG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKnByb3ZpZGUqIEJyb2FkY29tIGZpcm13YXJlPyBJdCB1c3VhbGx5IHVzZXMgZ2VuZXJpYyBEZWJpYW4gb3IgQnVpbGRyb290IGltYWdlcy4gVHlwaWNhbGx5LCBgbGludXgtZmlybXdhcmVgIGlzIGluY2x1ZGVkIGluIHRob3NlIERlYmlhbiBpbWFnZXMuIFNvLCB0aGVyZSdzIGEgY2hhbmNlIGBicmNtZm1hY2AgZmlybXdhcmUgKm1pZ2h0KiBiZSBwcmVzZW50LiBJZiBpdCAqaXMqIHByZXNlbnQsIGByZXF1ZXN0X2Zpcm13YXJlYCBzaG91bGQgc3VjY2VlZC4gVGhlbiwgYGJyY21mX3VzYl9md19kb3dubG9hZGAgd2lsbCB0cnkgdG8gc2VuZCB0aGUgZmlybXdhcmUgdG8gdGhlIGR1bW15IFVTQiBkZXZpY2UuIFRoaXMgZHVtbXkgZGV2aWNlIHdpbGwganVzdCBhY2NlcHQgdGhlIGNvbnRyb2wgbWVzc2FnZXMsIG9yIGZhaWwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgZnV6emVyIGlzIGJlaGF2aW5nLiBJZiB0aGUgZnV6emVyIGlzIHN1Y2Nlc3NmdWwsIGBicmNtZl91c2JfZndfZG93bmxvYWRgIGNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuXG5cblRoYXQncyB3aGVuIGBicmNtZl9hdHRhY2hgIGlzIGNhbGxlZC4gQW5kIGBicmNtZl9hdHRhY2hgLCBvZiBjb3Vyc2UsIGNhbGxzIGBicmNtZl9idXNfc3RhcnRlZGAuIFRoaXMgdGhlbiB0cmlnZ2VycyB0aGUgY2FsbGluZyBvZiBgYnJjbWZfYnVzX3ByZWluaXRgICh3aGljaCBpcyBgYnJjbWZfdXNiX3VwYCksIHdoaWNoIHN1Ym1pdHMgdGhvc2UgUlggVVJCcy4gQWZ0ZXJ3YXJkLCBpdCBjYWxscyBgYnJjbWZfY19wcmVpbml0X2RjbWRzYC4gVGhpcyBzZW5kcyB0aG9zZSBCcm9hZGNvbS1zcGVjaWZpYyBjb21tYW5kcyB0byB0aGUgZGV2aWNlIGFuZCB3YWl0cyBmb3IgdGhlIHJlc3BvbnNlcy4gU2luY2UgaXQncyBhIGR1bW15IGRldmljZSwgaXQncyBub3QgZ29pbmcgdG8gZ2VuZXJhdGUgdGhlIHJpZ2h0IEJyb2FkY29tLXNwZWNpZmljIHJlc3BvbnNlcy4gVGhlIGZ1enplciB3b3VsZCBoYXZlIHRvIGtub3cgKmV4YWN0bHkqIHdoYXQgdGhvc2UgcmVzcG9uc2VzIGxvb2sgbGlrZSAoZS5nLiwgdGhlIGZvcm1hdCBvZiB0aGUgYHN0cnVjdCBicmNtZl9kY21kYCB3aXRoIHRoZSByaWdodCBzdGF0dXMgYW5kIGRhdGEpIHRvIGdldCB0aHJvdWdoIGBicmNtZl9jX3ByZWluaXRfZGNtZHNgLiBUaGUgb2RkcyBvZiB0aGF0IGhhcHBlbmluZyBieSBhY2NpZGVudCBhcmUgaW5maW5pdGVzaW1hbGx5IHNtYWxsLiBJZiBgYnJjbWZfY19wcmVpbml0X2RjbWRzYCBmYWlscywgYGJyY21mX2J1c19zdGFydGVkYCBmYWlscywgYW5kIGBicmNtZl9hdHRhY2hgIGZhaWxzLiBJZiBgYnJjbWZfYXR0YWNoYCBmYWlscywgdGhlIGRyaXZlciBnaXZlcyB1cCBvbiBpbml0aWFsaXphdGlvbiwgYW5kIHRoZSB3aXBoeSBkb2Vzbid0IGdldCByZWdpc3RlcmVkLCB3aGljaCBtZWFucyBubyBjZmc4MDIxMSBjYWxsYmFja3MuXG5cbkJ1dCwgd2hhdCBhYm91dCB0aG9zZSBSWCBVUkJzIHRoYXQgZ290IHN1Ym1pdHRlZCBpbiBgYnJjbWZfdXNiX3VwYD8gSWYgdGhlIGZ1enplciBtYW5hZ2VzIHRvIGNvbXBsZXRlIGFuIFJYIFVSQiAqYmVmb3JlKiBgYnJjbWZfYXR0YWNoYCBmYWlscywgdGhlbiBgYnJjbWZfdXNiX3J4X2NvbXBsZXRlYCAqd2lsbCogYmUgY2FsbGVkLiBUaGlzLCBpbiB0dXJuLCBjYWxscyBgYnJjbWZfcnhfZnJhbWVgLiBOb3cgd2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBob3cgdG8gZ2V0IGBicmNtZl9yeF9mcmFtZWAgdG8gZXZlbnR1YWxseSByZWFjaCBgYnJjbWZfbmV0aWZfbW9uX3J4YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYyMjAsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6MjQuNzk2Mzk0OTIxWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjk1MzgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9uZXRpZl9tb25fcnhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jPTQzND1zdHJ1Y3QgYnJjbWZfcmFkaW90YXBfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTQzOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jOjQzOTp2b2lkIGJyY21mX25ldGlmX21vbl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jLTQ0MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5oPTIyMD12b2lkIGJyY21mX25ldGlmX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5oOjIyMTp2b2lkIGJyY21mX25ldGlmX21vbl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaC0yMjItdm9pZCBicmNtZl9uZXRfZGV0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBib29sIGxvY2tlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTIwMD1icmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMjQxOlxcdFxcdGJyY21mX25ldGlmX21vbl9yeChpZnAsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEyNDItXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MjoyNC44MzkzNTM4MjhaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2NDExMTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipQQ0llIGFuZCB0aGUgYGJyY21mX25ldGlmX21vbl9yeGAgRnVuY3Rpb246IEEgRGVlcCBEaXZlKipcblxuSG1tLCBzbyBgYnJjbWZfbmV0aWZfbW9uX3J4YC4uLiB0aGF0IGZ1bmN0aW9uJ3MgY2FsbGVkIG9ubHkgZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGVgLCByaWdodD8gQW5kIG5vdyBJIHJlbWVtYmVyLCBgbXNnYnVmLmNgLi4uIHRoYXTigJlzIHRoZSBtb2R1bGUgdGhhdCBoYW5kbGVzIHRoZSBtZXNzYWdlIGJ1ZmZlciwgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGF0J3MgZXhjbHVzaXZlIHRvIHRoZSBQQ0llIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBhbiBpbnRlcmVzdGluZyBkZXBlbmRlbmN5IHRvIGtlZXAgaW4gbWluZC4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aG91Z2guIEknbSBnb2luZyB0byBxdWlja2x5IGNyb3NzLWNoZWNrIHRoYXQgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBwb3RlbnRpYWwgY2FsbCBwYXRocy4gSnVzdCBhIHF1aWNrIGRvdWJsZS1jaGVjayBmb3IgbXkgb3duIHBlYWNlIG9mIG1pbmQsIG9mIGNvdXJzZS4gTmVlZCB0byBjb25maXJtIHRoYXQgbXkgaW5pdGlhbCBhbmFseXNpcyBpcyBzcG90IG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ1OSwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjUyOjI5LjcwMzQ2NzU3N1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwNTQyMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfbmV0aWZfbW9uX3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYz00MzQ9c3RydWN0IGJyY21mX3JhZGlvdGFwX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYy00MzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYzo0Mzk6dm9pZCBicmNtZl9uZXRpZl9tb25fcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYy00NDAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaD0yMjA9dm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaDoyMjE6dm9pZCBicmNtZl9uZXRpZl9tb25fcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmgtMjIyLXZvaWQgYnJjbWZfbmV0X2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBsb2NrZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyMDA9YnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTI0MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTI0MTpcXHRcXHRicmNtZl9uZXRpZl9tb25fcngoaWZwLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMjQyLVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6MjkuNzQ2NTI2NTc0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NTg3OTAzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgUGF0Y2ggUmVhY2hhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGJyY21mX25ldGlmX21vbl9yeGAgaXMgY2FsbGVkIGV4Y2x1c2l2ZWx5IGZyb20gYG1zZ2J1Zi5jYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIG9ubHkgdXNlZCBieSBQQ0llLiBTbywgZGVhZCBlbmQgaW4gUUVNVS4gTGlrZXdpc2UsIGBicmNtZl9mbG93cmluZ19ibG9ja2AgYW5kIGBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhYCBhcmUgYWxzbyBpbiBgbXNnYnVmLmNgLCB0aGVyZWZvcmUgUENJZS1vbmx5LiBgYnJjbWZfcGNpZV9zZW5kX21iX2RhdGFgIGxpdmVzIGluIGBwY2llLmNgLCBtYWtpbmcgaXQgUENJZS1zcGVjaWZpYy4gIGBicmNtZl9zZGlvX3J4Z2xvbWAgaXMgdGllZCB0byBgc2Rpby5jYCwgaW1wbHlpbmcgU0RJTywgdGhlcmVmb3JlIHVucmVhY2hhYmxlIHdpdGhvdXQgYW4gU0RJTyBlbXVsYXRvci4gYGJyY21zX2NfYW1wZHVfYWRkX2ZyYW1lYCBpcyB3aXRoaW4gYGJyY21zbWFjL2FtcGR1LmNgIG1lYW5pbmcgQkNNQSBvbmx5LlxuXG5XaGF0IGFib3V0IGBicmNtZl9wbWtzYV92Ml9vcGA/IFRoaXMgb25lIGlzIGNhbGxlZCBmcm9tIGBicmNtZl9jZmc4MDIxMV9zZXRfcG1rc2FgLCBhIGNmZzgwMjExIGNhbGxiYWNrLiBSZWdpc3RlcmluZyB0aGUgd2lwaHkgcmVxdWlyZXMgYGJyY21mX2NfcHJlaW5pdF9kY21kc2Agd2hpY2gsIGNvbnNpZGVyaW5nIHRoZSBuZWVkIGZvciBhIGRlZGljYXRlZCBmaXJtd2FyZSBlbXVsYXRvciwgaXMgZWZmZWN0aXZlbHkgaW1wb3NzaWJsZSBmb3IgYSBmdXp6ZXIuIFNvLCB0aG9zZSBjZmc4MDIxMSBjYWxsYmFja3MgYXJlIG91dC5cblxuU28sIGFsbCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgY29uZmluZWQgdG86XG5cbjEuICBQQ0llLXNwZWNpZmljIGNvZGUgKHVucmVhY2hhYmxlIGluIFFFTVUpLlxuMi4gIFNESU8tc3BlY2lmaWMgY29kZSAodW5yZWFjaGFibGUgaW4gUUVNVSkuXG4zLiAgQkNNQS1zcGVjaWZpYyBjb2RlICh1bnJlYWNoYWJsZSBpbiBRRU1VKS5cbjQuICBjZmc4MDIxMSBjYWxsYmFja3Mgd2l0aGluIGEgRnVsbE1BQyBkcml2ZXIgdGhhdCBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgd2l0aG91dCBhIGRlZGljYXRlZCBmaXJtd2FyZSBlbXVsYXRvciAodW5yZWFjaGFibGUgaW4gUUVNVSkuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJ1bGUgb3V0IGEgY2hhbmNlIHRoYXQgU3l6a2FsbGVyIGNvdWxkIGVtdWxhdGUgdGhlIHJlcXVpcmVkIGhhcmR3YXJlLiAgTm8gUENJZSBCcm9hZGNvbSBlbXVsYXRpb24/IE5vIFNESU8gZWl0aGVyPyBBbmQgZGVmaW5pdGVseSBubyBCQ01BPyBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0LlxuXG5UaGVyZWZvcmUsIHNpbmNlIGFsbCB0aGVzZSBwYXRocyBhcmUgYmxvY2tlZCBieSB0aGVpciBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgKFBDSWUsIFNESU8sIEJDTUEpIG9yIGEgY29tcGxleCBmaXJtd2FyZSBkZXBlbmRlbmN5LCBhbmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSwgdGhleSBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBRRU1VLiAgVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIHBhdGNoZXMgd2l0aCB0aGlzIGNoYXJhY3RlcmlzdGljLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGBicmNtZm1hY2AgYW5kIGBicmNtc21hY2AsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVycyB0aGF0IHdvdWxkIHJlcXVpcmUgc3BlY2lmaWMgZmlybXdhcmUgZW11bGF0aW9uLiBUaGlzIGlzbid0IHBvc3NpYmxlIGluIHN0YW5kYXJkIFFFTVUuXG5cbkhvbGQgb24sIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYG1hYzgwMjExX2h3c2ltYCBjYW4gcmVhY2ggYGJyY21zbWFjYC4gQWgsIGl0J3MgYSBgbWFjODAyMTFgIGRyaXZlciEgQnV0IHRoZSBxdWVzdGlvbiBpcyBob3cgaXQgaW50ZXJhY3RzLiBMb29raW5nIGF0IGBicmNtc21hYy9tYWM4MDIxMV9pZi5jYCBub3cuLi5cblxuQ29uc2lkZXJpbmcgYWxsIHRoaXMsIHRoaXMgcGF0Y2ggaXMgKipub3QqKiB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTI4MywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MjozOC43MDUzMjAyODlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzE2NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hYzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL01ha2VmaWxlPTIzPWJyY21zbWFjLXkgOj0gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9NYWtlZmlsZToyNDpcXHRtYWM4MDIxMV9pZi5vIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvTWFrZWZpbGUtMjUtXFx0dWNvZGVfbG9hZGVyLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmMtMTUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FtcGR1LmM6MTY6I2luY2x1ZGUgXFx1MDAzY25ldC9tYWM4MDIxMS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9hbXBkdS5jLTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FudHNlbC5jLTE3LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2FudHNlbC5jOjE4OiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYW50c2VsLmMtMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYnJjbXNfdHJhY2VfZXZlbnRzLmMtMTktI2lmbmRlZiBfX0NIRUNLRVJfX1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9icmNtc190cmFjZV9ldmVudHMuYzoyMDojaW5jbHVkZSBcXFwibWFjODAyMTFfaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYnJjbXNfdHJhY2VfZXZlbnRzLmMtMjEtI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYnJjbXNfdHJhY2VfZXZlbnRzLmgtMjItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvYnJjbXNfdHJhY2VfZXZlbnRzLmg6MjM6I2luY2x1ZGUgXFxcIm1hYzgwMjExX2lmLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2JyY21zX3RyYWNlX2V2ZW50cy5oLTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2NoYW5uZWwuYy0xOC0jaW5jbHVkZSBcXHUwMDNjbmV0L2NmZzgwMjExLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2NoYW5uZWwuYzoxOTojaW5jbHVkZSBcXHUwMDNjbmV0L21hYzgwMjExLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2NoYW5uZWwuYy0yMC0jaW5jbHVkZSBcXHUwMDNjbmV0L3JlZ3VsYXRvcnkuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9jaGFubmVsLmMtMjctI2luY2x1ZGUgXFxcImNoYW5uZWwuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvY2hhbm5lbC5jOjI4OiNpbmNsdWRlIFxcXCJtYWM4MDIxMV9pZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9jaGFubmVsLmMtMjktI2luY2x1ZGUgXFxcImRlYnVnLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuYy0yMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmM6MjQ6I2luY2x1ZGUgXFx1MDAzY25ldC9tYWM4MDIxMS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5jLTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmgtMjItI2luY2x1ZGUgXFx1MDAzY25ldC9jZmc4MDIxMS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oOjIzOiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZGVidWcuaC0yNC0jaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oOjI1OiNpbmNsdWRlIFxcXCJtYWM4MDIxMV9pZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmg9NDI9dm9pZCBfX2JyY21zX2RiZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBsZXZlbCwgY29uc3QgY2hhciAqZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oLTYwLSNkZWZpbmUgYnJjbXNfZGJnX2luZm8oY29yZSwgZiwgYS4uLilcXHRcXHRicmNtc19kYmcoY29yZSwgQlJDTV9ETF9JTkZPLCBmLCAjI2EpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RlYnVnLmg6NjE6I2RlZmluZSBicmNtc19kYmdfbWFjODAyMTEoY29yZSwgZiwgYS4uLilcXHRicmNtc19kYmcoY29yZSwgQlJDTV9ETF9NQUM4MDIxMSwgZiwgIyNhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kZWJ1Zy5oLTYyLSNkZWZpbmUgYnJjbXNfZGJnX3J4KGNvcmUsIGYsIGEuLi4pXFx0XFx0YnJjbXNfZGJnKGNvcmUsIEJSQ01fRExfUlgsIGYsICMjYSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9kbWEuYy0yMC0jaW5jbHVkZSBcXHUwMDNjbmV0L2NmZzgwMjExLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL2RtYS5jOjIxOiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvZG1hLmMtMjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9sZWQuYzoyOiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmMtMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvYmNtYS9iY21hX2RyaXZlcl9jaGlwY29tbW9uLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmMtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmM6ODojaW5jbHVkZSBcXFwibWFjODAyMTFfaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbGVkLmMtOS0jaW5jbHVkZSBcXFwicHViLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0yNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nX2Nob2ljZXMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoyODojaW5jbHVkZSBcXHUwMDNjbmV0L21hYzgwMjExLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMjktI2luY2x1ZGUgXFx1MDAzY2RlZnMuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTM1LSNpbmNsdWRlIFxcXCJ1Y29kZV9sb2FkZXIuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzozNjojaW5jbHVkZSBcXFwibWFjODAyMTFfaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0zNy0jaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6NDE6I2RlZmluZSBOX1RYX1FVRVVFU1xcdDQgLyogI3R4IHF1ZXVlcyBvbiBtYWM4MDIxMVxcdTAwM2MtXFx1MDAzZWRyaXZlciBpbnRlcmZhY2UgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy00Mi0jZGVmaW5lIEJSQ01TX0ZMVVNIX1RJTUVPVVRcXHQ1MDAgLyogbXNlYyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9NDAyPXN0YXRpYyB2b2lkIGJyY21zX29wc190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTQxNC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6NDE1OlxcdGlmIChicmNtc19jX3NlbmRwa3RfbWFjODAyMTEod2wtXFx1MDAzZXdsYywgc2tiLCBodykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtNDE2LVxcdFxcdHR4X2luZm8tXFx1MDAzZXJhdGVfZHJpdmVyX2RhdGFbMF0gPSBjb250cm9sLVxcdTAwM2VzdGE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYz05MDY9c3RhdGljIHZvaWQgYnJjbXNfb3BzX2ZsdXNoKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtOTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjkxODpcXHRicmNtc19kYmdfbWFjODAyMTEod2wtXFx1MDAzZXdsYy1cXHUwMDNlaHctXFx1MDAzZWQxMWNvcmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtOTE5LVxcdFxcdFxcdCAgIFxcXCJyZXQ9JWRcXFxcblxcXCIsIGppZmZpZXNfdG9fbXNlY3MocmV0KSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTIyLSNpbmNsdWRlIFxcdTAwM2NuZXQvY2ZnODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjIzOiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTI0LSNpbmNsdWRlIFxcdTAwM2NicmNtX2h3X2lkcy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0zMy0jaW5jbHVkZSBcXFwiYW1wZHUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjM0OiNpbmNsdWRlIFxcXCJtYWM4MDIxMV9pZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMzUtI2luY2x1ZGUgXFxcInVjb2RlX2xvYWRlci5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz03NDc9c3RhdGljIHZvaWQgYnJjbXNfY19zZXR4YmFuZChzdHJ1Y3QgYnJjbXNfaGFyZHdhcmUgKndsY19odywgdWludCBiYW5kdW5pdClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTc0OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo3NDk6XFx0YnJjbXNfZGJnX21hYzgwMjExKHdsY19ody1cXHUwMDNlZDExY29yZSwgXFxcIndsJWQ6IGJhbmR1bml0ICVkXFxcXG5cXFwiLCB3bGNfaHctXFx1MDAzZXVuaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy03NTAtXFx0XFx0XFx0ICAgYmFuZHVuaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz03NzI9c3RhdGljIHUzMiBicmNtc19jX3NldGJhbmRfaW5hY3Qoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCB1aW50IGJhbmR1bml0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy03NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo3Nzg6XFx0YnJjbXNfZGJnX21hYzgwMjExKHdsY19ody1cXHUwMDNlZDExY29yZSwgXFxcIndsJWRcXFxcblxcXCIsIHdsY19ody1cXHUwMDNldW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy03NzktXFx0bWFjY3RybCA9IGJjbWFfcmVhZDMyKHdsY19ody1cXHUwMDNlZDExY29yZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM9MTY1OT1zdGF0aWMgdm9pZCBicmNtc19iX2JzaW5pdChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHUxNiBjaGFuc3BlYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMTY2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjE2NjM6XFx0YnJjbXNfZGJnX21hYzgwMjExKHdsY19ody1cXHUwMDNlZDExY29yZSwgXFxcIndsJWQ6IGJhbmR1bml0ICVkXFxcXG5cXFwiLCB3bGNfaHctXFx1MDAzZXVuaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0xNjY0LVxcdFxcdFxcdCAgIHdsY19ody1cXHUwMDNlYmFuZC1cXHUwMDNlYmFuZHVuaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz0yNTk0PXZvaWQgYnJjbXNfY19zdXNwZW5kX21hY19hbmRfd2FpdChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTI1OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzoyNjAwOlxcdGJyY21zX2RiZ19tYWM4MDIxMShjb3JlLCBcXFwid2wlZDogYmFuZHVuaXQgJWRcXFxcblxcXCIsIHdsY19ody1cXHUwMDNldW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTI2MDEtXFx0XFx0XFx0ICAgd2xjX2h3LVxcdTAwM2ViYW5kLVxcdTAwM2ViYW5kdW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTI2NjI9dm9pZCBicmNtc19jX2VuYWJsZV9tYWMoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0yNjY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6MjY2ODpcXHRicmNtc19kYmdfbWFjODAyMTEoY29yZSwgXFxcIndsJWQ6IGJhbmR1bml0ICVkXFxcXG5cXFwiLCB3bGNfaHctXFx1MDAzZXVuaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0yNjY5LVxcdFxcdFxcdCAgIHdsYy1cXHUwMDNlYmFuZC1cXHUwMDNlYmFuZHVuaXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz0zNjk3PXN0YXRpYyB2b2lkIGJyY21zX2Nfc2V0X3BzX2N0cmwoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0zNzA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6MzcwNTpcXHRicmNtc19kYmdfbWFjODAyMTEod2xjLVxcdTAwM2Vody1cXHUwMDNlZDExY29yZSwgXFxcIndsJWQ6IGhwcyAlZFxcXFxuXFxcIiwgd2xjLVxcdTAwM2VwdWItXFx1MDAzZXVuaXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy0zNzA2LVxcdFxcdFxcdCAgIGhwcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTM3OTM9YnJjbXNfYl9zZXRfY2hhbnNwZWMoc3RydWN0IGJyY21zX2hhcmR3YXJlICp3bGNfaHcsIHUxNiBjaGFuc3BlYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtMzc5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjM3OTg6XFx0YnJjbXNfZGJnX21hYzgwMjExKHdsY19ody1cXHUwMDNlZDExY29yZSwgXFxcIndsJWQ6IDB4JXhcXFxcblxcXCIsIHdsY19ody1cXHUwMDNldW5pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTM3OTktXFx0XFx0XFx0ICAgY2hhbnNwZWMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz01Nzk4PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjU3OTk6bWFjODAyMTFfd2xjX3NldF9ucmF0ZShzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBicmNtc19iYW5kICpjdXJfYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTU4MDAtXFx0XFx0ICAgICAgIHUzMiBpbnRfdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01ODM1LVxcdFxcdFxcdGlmIChzdGYgIT0gUEhZX1RYQzFfTU9ERV9TRE0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjU4MzY6XFx0XFx0XFx0XFx0YnJjbXNfZGJnX21hYzgwMjExKGNvcmUsIFxcXCJ3bCVkOiBlbmFibGluZyBcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy01ODM3LVxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcXCJTRE0gbW9kZSBmb3IgbWNzICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz02MTIzPXN0YXRpYyB1MTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjYxMjQ6YnJjbXNfY19kMTFoZHJzX21hYzgwMjExKHN0cnVjdCBicmNtc19jX2luZm8gKndsYywgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02MTI1LVxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnAsIHN0cnVjdCBzY2IgKnNjYiwgdWludCBmcmFnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02MjI3LVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo2MjI4OlxcdFxcdFxcdHJzcGVjW2tdID0gbWFjODAyMTFfd2xjX3NldF9ucmF0ZSh3bGMsIHdsYy1cXHUwMDNlYmFuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTYyMjktXFx0XFx0XFx0XFx0XFx0TlJBVEVfTUNTX0lOVVNFIHwgdHhyYXRlW2tdLVxcdTAwM2VpZHgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz02NzYxPXN0YXRpYyBpbnQgYnJjbXNfY190eChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTY3NzMtXFx0XFx0LypcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjY3NzQ6XFx0XFx0ICogV2Ugc29tZXRpbWVzIGdldCBhIGZyYW1lIGZyb20gbWFjODAyMTEgYWZ0ZXIgc3RvcHBpbmdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTY3NzUtXFx0XFx0ICogdGhlIHF1ZXVlcy4gVGhpcyBvbmx5IGV2ZXIgc2VlbXMgdG8gYmUgYSBzaW5nbGUgZnJhbWVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjgxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jOjY4MTU6Ym9vbCBicmNtc19jX3NlbmRwa3RfbWFjODAyMTEoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2R1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjgxNi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmMtNjgyMS1cXHRmaWZvID0gYnJjbXNfYWNfdG9fZmlmbyhza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2R1KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo2ODIyOlxcdGJyY21zX2NfZDExaGRyc19tYWM4MDIxMSh3bGMsIGh3LCBzZHUsIHNjYiwgMCwgMSwgZmlmbywgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02ODIzLVxcdGlmICghYnJjbXNfY190eCh3bGMsIHNkdSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jPTY4MzI9YnJjbXNfY190eGZpZm8oc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCB1aW50IGZpZm8sIHN0cnVjdCBza19idWZmICpwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02ODQzLVxcdCAqIFN0b3AgcXVldWUgaWYgRE1BIHJpbmcgaXMgZnVsbC4gUmVzZXJ2ZSBzb21lIGZyZWUgZGVzY3JpcHRvcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo2ODQ0OlxcdCAqIGFzIHdlIHNvbWV0aW1lcyByZWNlaXZlIGEgZnJhbWUgZnJvbSBtYWM4MDIxMSBhZnRlciB0aGUgcXVldWVzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02ODQ1LVxcdCAqIGFyZSBzdG9wcGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz02OTYyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo2OTYzOnByZXBfbWFjODAyMTFfc3RhdHVzKHN0cnVjdCBicmNtc19jX2luZm8gKndsYywgc3RydWN0IGQxMXJ4aGRyICpyeGgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy02OTY0LVxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTcwNDItXFx0XFx0ICogYSBzdWJzZXQgb2YgdGhlIDIuNEcgcmF0ZXMuIFNlZSBiaXRyYXRlcyBmaWVsZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWluLmM6NzA0MzpcXHRcXHQgKiBvZiBicmNtc19iYW5kXzVHSHpfbnBoeSAoaW4gbWFjODAyMTFfaWYuYykuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy03MDQ0LVxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYz03MDc2PWJyY21zX2NfcmVjdmN0bChzdHJ1Y3QgYnJjbXNfY19pbmZvICp3bGMsIHN0cnVjdCBkMTFyeGhkciAqcnhoLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYy03MDgzLVxcdG1lbXNldChcXHUwMDI2cnhfc3RhdHVzLCAwLCBzaXplb2Yocnhfc3RhdHVzKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21haW4uYzo3MDg0OlxcdHByZXBfbWFjODAyMTFfc3RhdHVzKHdsYywgcnhoLCBwLCBcXHUwMDI2cnhfc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFpbi5jLTcwODUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5X3NoaW0uYy0yNC0jaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHlfc2hpbS5jOjI1OiNpbmNsdWRlIFxcdTAwM2NuZXQvbWFjODAyMTEuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5X3NoaW0uYy0yNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcGh5X3NoaW0uYy0yNy0jaW5jbHVkZSBcXFwibWFpbi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHlfc2hpbS5jOjI4OiNpbmNsdWRlIFxcXCJtYWM4MDIxMV9pZi5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9waHlfc2hpbS5jLTI5LSNpbmNsdWRlIFxcXCJwaHlfc2hpbS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3B1Yi5oPTE0ND1zdHJ1Y3QgYnJjbXNfcHViIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaC0xNDctXFx0c3RydWN0IHNjYl9hbXBkdSAqZ2xvYmFsX2FtcGR1O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaDoxNDg6XFx0dWludCBtYWM4MDIxMV9zdGF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcHViLmgtMTQ5LVxcdHVpbnQgdW5pdDtcXHRcXHQvKiBkZXZpY2UgaW5zdGFuY2UgbnVtYmVyICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvcHViLmg9Mjg1PWJvb2wgYnJjbXNfY19kcGMoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBib29sIGJvdW5kZWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaDoyODY6Ym9vbCBicmNtc19jX3NlbmRwa3RfbWFjODAyMTEoc3RydWN0IGJyY21zX2NfaW5mbyAqd2xjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2R1LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9wdWIuaC0yODctXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3NjYi5oPTQzPXN0cnVjdCBzY2JfYW1wZHUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3NjYi5oLTQ5LVxcdCAqIFRoaXMgY291bGQgZWFzaWx5IGJlIGEgaW5pW10gcG9pbnRlciBhbmQgd2Uga2VlcCB0aGlzIGluZm8gaW4gd2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvc2NiLmg6NTA6XFx0ICogaXRzZWxmIGluc3RlYWQgb2YgaGF2aW5nIG1hYzgwMjExIGhvbGQgaXQgZm9yIHVzLiBBbHNvIGNvdWxkIGJlIG1hZGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvc2NiLmgtNTEtXFx0ICogZHluYW1pYyBwZXIgdGlkIGluc3RlYWQgb2Ygc3RhdGljLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3N0Zi5jLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9zdGYuYzoxNzojaW5jbHVkZSBcXHUwMDNjbmV0L21hYzgwMjExLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL3N0Zi5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTo1MjozOC43NDkwNDUwOTdaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODQ1OTMwNzgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBQYXRjaCBVbmZ1enphYmxlIGluIEN1cnJlbnQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBicmNtZm1hY2AgYW5kIGBicmNtc21hY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGFyZSAqZGVmaW5pdGVseSogZ29pbmcgdG8gYmUgcHJvYmxlbWF0aWMgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBhbmQgYWZ0ZXIgd2Fsa2luZyB0aHJvdWdoIHRoZSByZWFzb25pbmcsIEknbSBwcmV0dHkgY29uZmlkZW50IGFib3V0IG15IGFzc2Vzc21lbnQuXG5cbkZpcnN0IG9mZiwgYGJyY21zbWFjYCBpcyBhIGBtYWM4MDIxMWAgZHJpdmVyLCBidXQgaXQncyAqbm90KiB0aGUgc29mdHdhcmUgc2ltdWxhdG9yIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG5lZWRzIGFjdHVhbCBCcm9hZGNvbSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIHRoZSBCQ01BIGJ1cy4gVGhlcmUncyBubyBCQ01BIGVtdWxhdGlvbiBpbiBRRU1VLCBzbyB0aGF0IGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gVGhhdCB0YWtlcyBgYnJjbXNtYWNgIG9mZiB0aGUgdGFibGUuXG5cblRoZW4gdGhlcmUncyBgYnJjbWZtYWNgLiBUaGlzIGlzIGEgRnVsbE1BQyBkcml2ZXIgYW5kIGlzIGV2ZW4gdHJpY2tpZXIuIEl0IHJlcXVpcmVzIGVpdGhlciB0aGUgcGh5c2ljYWwgQnJvYWRjb20gaGFyZHdhcmUgb3IgYW4gaW5jcmVkaWJseSBjb21wbGV4IFVTQiBmaXJtd2FyZSBlbXVsYXRpb24uIFdoaWxlIGl0IHN1cHBvcnRzIFVTQiwgc2ltcGx5IHRocm93aW5nIHJhbmRvbSBkYXRhIGF0IGl0IGlzbid0IGdvaW5nIHRvIHdvcmsuIFRoZSBmaXJtd2FyZSBoYW5kc2hha2UgaXMgbm90b3Jpb3VzbHkgY29tcGxleCwgYW5kIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRvIGdldCB0aHJvdWdoIHRoaXMgd2l0aCBvbmx5IHJhbmRvbSBkYXRhLiBUaGlzIGlzIGV2ZW4gbW9yZSB1bmxpa2VseSB0byBiZSBmdXp6YWJsZSwgYW5kIGlzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuXG5cblNvLCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCwgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgdGhhdCdzIHVucmVhY2hhYmxlIGluIFFFTVUuIENoZWNrISBUaGlzIHBhdGNoIGlzIG9ubHkgaW4gdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMgdGhhdCByZXF1aXJlIHJlYWwgaGFyZHdhcmUuIEluIFFFTVUsIHRoZXJlIGlzIG5vIHdheSB0byByZWFjaCB0aGUgdGFyZ2V0IGRyaXZlciBjb2RlLCBtZWFuaW5nIGl0J3MgaW1wb3NzaWJsZSB0byBmdXp6LiBHaXZlbiB0aGlzLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyBhcmUgb25seSBpbiB0aG9zZSBCcm9hZGNvbSBkcml2ZXJzLCBJIGFtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGZ1enppbmcgZWZmb3J0IGlzIGdvaW5nIHRvIGJlIHdhc3RlZC5cblxuSSBxdWlja2x5IGRvdWJsZSBjaGVja2VkIHRoZSBwYXRjaCBjb250ZW50IGFnYWluIHRvIGJlIHN1cmUsIGFuZCB5ZXAsIGl0J3MganVzdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2AuXG5cbkknbSByZWFkeSB0byBtb3ZlIG9uLiBMZXQncyB1c2UgdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBhbmQgY2xvc2UgdGhpcyBvbmUgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzY1MSwiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6NTI6NDcuMjA4MzU1ODQyWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJyY21mbWFjIGFuZCBicmNtc21hYyBCcm9hZGNvbSB3aXJlbGVzcyBkcml2ZXJzLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEJyb2FkY29tIFdpLUZpIGhhcmR3YXJlIChQQ0llLCBTRElPLCBvciBCQ01BKSB0byBpbml0aWFsaXplIGFuZCBmdW5jdGlvbi4gV2hpbGUgYnJjbWZtYWMgc3VwcG9ydHMgVVNCLCByZWFjaGluZyB0aGUgbW9kaWZpZWQgZGF0YSBwYXRocyAoUlgvVFgpIGFuZCBjZmc4MDIxMSBjYWxsYmFja3MgcmVxdWlyZXMgcGFzc2luZyBhIGNvbXBsZXggZmlybXdhcmUgbG9hZGluZyBhbmQgaW5pdGlhbGl6YXRpb24gaGFuZHNoYWtlLCB3aGljaCBpcyBpbXBvc3NpYmxlIHRvIGFjaGlldmUgdmlhIHJhbmRvbSBVU0IgZ2FkZ2V0IGZ1enppbmcgd2l0aG91dCBhIGRlZGljYXRlZCBmaXJtd2FyZSBlbXVsYXRvci4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBicmNtZm1hYyBhbmQgYnJjbXNtYWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVycy4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBCcm9hZGNvbSBXaS1GaSBoYXJkd2FyZSAoUENJZSwgU0RJTywgb3IgQkNNQSkgdG8gaW5pdGlhbGl6ZSBhbmQgZnVuY3Rpb24uIFdoaWxlIGJyY21mbWFjIHN1cHBvcnRzIFVTQiwgcmVhY2hpbmcgdGhlIG1vZGlmaWVkIGRhdGEgcGF0aHMgKFJYL1RYKSBhbmQgY2ZnODAyMTEgY2FsbGJhY2tzIHJlcXVpcmVzIHBhc3NpbmcgYSBjb21wbGV4IGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIGhhbmRzaGFrZSwgd2hpY2ggaXMgaW1wb3NzaWJsZSB0byBhY2hpZXZlIHZpYSByYW5kb20gVVNCIGdhZGdldCBmdXp6aW5nIHdpdGhvdXQgYSBkZWRpY2F0ZWQgZmlybXdhcmUgZW11bGF0b3IuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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:nil,}