ZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvQW1pZ2FPbmVHM1NFLmMgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL0FtaWdhT25lRzNTRS5jCmluZGV4IGI0NzIxNzYuLjNiYmMwOWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvQW1pZ2FPbmVHM1NFLmMKKysrIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9BbWlnYU9uZUczU0UuYwpAQCAtMTQsNyArMTQsNyBAQAogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKQEAgLTMwLDQ4ICszMCw0OCBAQAogI2luY2x1ZGUgIm1lbWlvLmgiCiAjaW5jbHVkZSAidmlhNjg2LmgiCiAKLV9fYXNtX18oIiAuZ2xvYmwgc2VuZF9rYiAgICAgICAgICAgICAgICAgICAJCSAgICBcbiAiCi0JInNlbmRfa2I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWxpcyAgICAgcjksIDB4ZmUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJCQkJCQkgICAgXG4gIgotCSIJbGkgICAgICByNCwgMHgxMCAgICAgICAgIyByZXRyaWVzICAgICAgICAgICBcbiAiCi0JIgltdGN0ciAgIHI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCQkJCQkJICAgIFxuICIKLQkiaWRsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJbGJ6ICAgICByNCwgMHg2NChyOSkgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglhbmRpLiAgIHI0LCByNCwgMHgwMiAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWJuZSAgICAgaWRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgorX19hc21fXygiIC5nbG9ibCBzZW5kX2tiCQkJCVxuICIKKwkic2VuZF9rYjoJCQkJCVxuICIKKwkiCWxpcwlyOSwgMHhmZTAwCQkJXG4gIgorCSIJCQkJCQlcbiAiCisJIglsaQlyNCwgMHgxMAkjIHJldHJpZXMJXG4gIgorCSIJbXRjdHIJcjQJCQkJXG4gIgorCSIJCQkJCQlcbiAiCisJImlkbGU6CQkJCQkJXG4gIgorCSIJbGJ6CXI0LCAweDY0KHI5KQkJCVxuICIKKwkiCWFuZGkuCXI0LCByNCwgMHgwMgkJCVxuICIKKwkiCWJuZQlpZGxlCQkJCVxuICIKIAotCSJyZWFkeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglzdGIgICAgIHIzLCAweDYwKHI5KSAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCQkJCQkJICAgIFxuICIKLQkiY2hlY2s6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJbGJ6ICAgICByNCwgMHg2NChyOSkgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglhbmRpLiAgIHI0LCByNCwgMHgwMSAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWJlcSAgICAgY2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJCQkJCQkgICAgXG4gIgotCSIJbGJ6ICAgICByNCwgMHg2MChyOSkgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIgljbXB3aSAgIHI0LCAweGZhICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWJlcSAgICAgZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgorCSJyZWFkeToJCQkJCQlcbiAiCisJIglzdGIJcjMsIDB4NjAocjkpCQkJXG4gIgorCSIJCQkJCQlcbiAiCisJImNoZWNrOgkJCQkJCVxuICIKKwkiCWxieglyNCwgMHg2NChyOSkJCQlcbiAiCisJIglhbmRpLglyNCwgcjQsIDB4MDEJCQlcbiAiCisJIgliZXEJY2hlY2sJCQkJXG4gIgorCSIJCQkJCQlcbiAiCisJIglsYnoJcjQsIDB4NjAocjkpCQkJXG4gIgorCSIJY21wd2kJcjQsIDB4ZmEJCQlcbiAiCisJIgliZXEJZG9uZQkJCQlcbiAiCiAKLQkiCWJkbnogICAgaWRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgorCSIJYmRueglpZGxlCQkJCVxuICIKIAotCSIJbGkgICAgICByMywgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglibHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKKwkiCWxpCXIzLCAwCQkJCVxuICIKKwkiCWJscgkJCQkJXG4gIgogCi0JImRvbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWxpICAgICAgcjMsIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJYmxyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCisJImRvbmU6CQkJCQkJXG4gIgorCSIJbGkJcjMsIDEJCQkJXG4gIgorCSIJYmxyCQkJCQlcbiAiCiAKLQkiLmdsb2JsIHRlc3Rfa2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSJ0ZXN0X2tiOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIgltZmxyICAgIHIxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWxpICAgICAgcjMsIDB4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJYmwgICAgICBzZW5kX2tiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglsaSAgICAgIHIzLCAweDAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICIKLQkiCWJsICAgICAgc2VuZF9rYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIgotCSIJbXRsciAgICByMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAiCi0JIglibHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKwkiLmdsb2JsIHRlc3Rfa2IJCQkJCVxuICIKKwkidGVzdF9rYjoJCQkJCVxuICIKKwkiCW1mbHIJcjEwCQkJCVxuICIKKwkiCWxpCXIzLCAweGVkCQkJXG4gIgorCSIJYmwJc2VuZF9rYgkJCQlcbiAiCisJIglsaQlyMywgMHgwMQkJCVxuICIKKwkiCWJsCXNlbmRfa2IJCQkJXG4gIgorCSIJbXRscglyMTAJCQkJXG4gIgorCSIJYmxyCQkJCQlcbiAiCiApOwogCiAKZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvZW5ldC5jIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9lbmV0LmMKaW5kZXggYWQyYmNkZS4uNWE5MGNjNSAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9lbmV0LmMKKysrIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9lbmV0LmMKQEAgLTkwLDggKzkwLDggQEAKICNkZWZpbmUgRE1BRG9uZQkJCSgxPDw4KQogI2RlZmluZSBEb3duQ29tcGxldGUJCSgxPDw5KQogI2RlZmluZSBVcENvbXBsZXRlCQkoMTw8MTApCi0jZGVmaW5lIERNQUluUHJvZ3Jlc3MJCSgxPDwxMSkJCQkvKiBETUEgY29udHJvbGxlciBpcyBzdGlsbCBidXN5LiovCi0jZGVmaW5lIENtZEluUHJvZ3Jlc3MJCSgxPDwxMikgICAgICAgICAgCS8qIEVMM19DTUQgaXMgc3RpbGwgYnVzeS4qLworI2RlZmluZSBETUFJblByb2dyZXNzCQkoMTw8MTEpCQkvKiBETUEgY29udHJvbGxlciBpcyBzdGlsbCBidXN5LiovCisjZGVmaW5lIENtZEluUHJvZ3Jlc3MJCSgxPDwxMikJCS8qIEVMM19DTUQgaXMgc3RpbGwgYnVzeS4qLwogCiAvKiBQb2xsaW5nIFJlZ2lzdGVycyAqLwogCkBAIC0xMDAsMTcgKzEwMCwxNyBAQAogCiAvKiBSZWdpc3RlciB3aW5kb3cgMCBvZmZldHMgKi8KIAotI2RlZmluZSBXbjBFZXByb21DbWQJCTEwCSAgICAgICAgIAkvKiBXaW5kb3cgMDogRUVQUk9NIGNvbW1hbmQgcmVnaXN0ZXIuICovCi0jZGVmaW5lIFduMEVlcHJvbURhdGEJCTEyICAgICAgICAgICAgCQkvKiBXaW5kb3cgMDogRUVQUk9NIHJlc3VsdHMgcmVnaXN0ZXIuICovCi0jZGVmaW5lIEludHJTdGF0dXMJCTB4MEUJICAgICAgICAgICAgICAgIC8qIFZhbGlkIGluIGFsbCB3aW5kb3dzLiAqLworI2RlZmluZSBXbjBFZXByb21DbWQJCTEwCQkvKiBXaW5kb3cgMDogRUVQUk9NIGNvbW1hbmQgcmVnaXN0ZXIuICovCisjZGVmaW5lIFduMEVlcHJvbURhdGEJCTEyCQkvKiBXaW5kb3cgMDogRUVQUk9NIHJlc3VsdHMgcmVnaXN0ZXIuICovCisjZGVmaW5lIEludHJTdGF0dXMJCTB4MEUJCS8qIFZhbGlkIGluIGFsbCB3aW5kb3dzLiAqLwogCiAvKiBSZWdpc3RlciB3aW5kb3cgMCBFRVBST00gYml0cyAqLwogCiAjZGVmaW5lIEVFUFJPTV9SZWFkCQkweDgwCiAjZGVmaW5lIEVFUFJPTV9XUklURQkJMHg0MAogI2RlZmluZSBFRVBST01fRVJBU0UJCTB4QzAKLSNkZWZpbmUgRUVQUk9NX0VXRU5CCQkweDMwICAgICAgICAgIAkJLyogRW5hYmxlIGVyYXNpbmcvd3JpdGluZyBmb3IgMTAgbXNlYy4gKi8KLSNkZWZpbmUgRUVQUk9NX0VXRElTCQkweDAwICAgICAgICAgICAJCS8qIERpc2FibGUgRVdFTkIgYmVmb3JlIDEwIG1zZWMgdGltZW91dC4gKi8KKyNkZWZpbmUgRUVQUk9NX0VXRU5CCQkweDMwCQkvKiBFbmFibGUgZXJhc2luZy93cml0aW5nIGZvciAxMCBtc2VjLiAqLworI2RlZmluZSBFRVBST01fRVdESVMJCTB4MDAJCS8qIERpc2FibGUgRVdFTkIgYmVmb3JlIDEwIG1zZWMgdGltZW91dC4gKi8KIAogLyogRUVQUk9NIGxvY2F0aW9ucy4gKi8KIApAQCAtMTM1LDcgKzEzNSw3IEBACiAjZGVmaW5lIFJ4U3RhdHVzCQkweDE4CiAjZGVmaW5lIFRpbWVyCQkJMHgxQQogI2RlZmluZSBUeFN0YXR1cwkJMHgxQgotI2RlZmluZSBUeEZyZWUJCQkweDFDCQkJLyogUmVtYWluaW5nIGZyZWUgYnl0ZXMgaW4gVHggYnVmZmVyLiAqLworI2RlZmluZSBUeEZyZWUJCQkweDFDCQkvKiBSZW1haW5pbmcgZnJlZSBieXRlcyBpbiBUeCBidWZmZXIuICovCiAKIC8qIFJlZ2lzdGVyIFdpbmRvdyAyICovCiAKQEAgLTE0MywyMyArMTQzLDIzIEBACiAKIC8qIFJlZ2lzdGVyIFdpbmRvdyAzOiBNQUMvY29uZmlnIGJpdHMgKi8KIAotI2RlZmluZSBXbjNfQ29uZmlnCQkwCQkJLyogSW50ZXJuYWwgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBXbjNfQ29uZmlnCQkwCQkvKiBJbnRlcm5hbCBDb25maWd1cmF0aW9uICovCiAjZGVmaW5lIFduM19NQUNfQ3RybAkJNgogI2RlZmluZSBXbjNfT3B0aW9ucwkJOAogCiAjZGVmaW5lIEJGRVhUKHZhbHVlLCBvZmZzZXQsIGJpdGNvdW50KQkJCQkJXAogCSgoKCh1bnNpZ25lZCBsb25nKSh2YWx1ZSkpID4+IChvZmZzZXQpKSAmICgoMSA8PCAoYml0Y291bnQpKSAtIDEpKQogCi0jZGVmaW5lIEJGSU5TKGxocywgcmhzLCBvZmZzZXQsIGJpdGNvdW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgQkZJTlMobGhzLCByaHMsIG9mZnNldCwgYml0Y291bnQpCQkJCQlcCiAJKCgobGhzKSAmIH4oKCgoMSA8PCAoYml0Y291bnQpKSAtIDEpKSA8PCAob2Zmc2V0KSkpIHwJCQlcCiAJKCgocmhzKSAmICgoMSA8PCAoYml0Y291bnQpKSAtIDEpKSA8PCAob2Zmc2V0KSkpCiAKLSNkZWZpbmUgUkFNX1NJWkUodikgICAgICAgICAgICAgQkZFWFQodiwgMCwgMykKKyNkZWZpbmUgUkFNX1NJWkUodikJCUJGRVhUKHYsIDAsIDMpCiAjZGVmaW5lIFJBTV9XSURUSCh2KQkJQkZFWFQodiwgMywgMSkKLSNkZWZpbmUgUkFNX1NQRUVEKHYpIAkgICAJQkZFWFQodiwgNCwgMikKLSNkZWZpbmUgUk9NX1NJWkUodikgICAgICAgICAgICAgQkZFWFQodiwgNiwgMikKKyNkZWZpbmUgUkFNX1NQRUVEKHYpCQlCRkVYVCh2LCA0LCAyKQorI2RlZmluZSBST01fU0laRSh2KQkJQkZFWFQodiwgNiwgMikKICNkZWZpbmUgUkFNX1NQTElUKHYpCQlCRkVYVCh2LCAxNiwgMikKLSNkZWZpbmUgWENWUih2KSAgICAgICAgICAgICAgICAgQkZFWFQodiwgMjAsIDQpCisjZGVmaW5lIFhDVlIodikJCQlCRkVYVCh2LCAyMCwgNCkKICNkZWZpbmUgQVVUT1NFTEVDVCh2KQkJQkZFWFQodiwgMjQsIDEpCiAKIC8qIFJlZ2lzdGVyIFdpbmRvdyA0OiBYY3ZyL21lZGlhIGJpdHMgKi8KQEAgLTE4NiwyMCArMTg2LDIwIEBACiAjZGVmaW5lIERvd25MaXN0UHRyCQkweDI0CiAjZGVmaW5lIEZyYWdBZGRyCQkweDI4CiAjZGVmaW5lIEZyYWdMZW4JCQkweDJjCi0jZGVmaW5lIFR4RnJlZVRocmVzaG9sZCAJMHgyZgorI2RlZmluZSBUeEZyZWVUaHJlc2hvbGQJMHgyZgogI2RlZmluZSBVcFBrdFN0YXR1cwkJMHgzMAotI2RlZmluZSBVcExpc3RQdHIgCQkweDM4CisjZGVmaW5lIFVwTGlzdFB0cgkJMHgzOAogCiAvKiBUaGUgUnggYW5kIFR4IGRlc2NyaXB0b3IgbGlzdHMuICovCiAKLSNkZWZpbmUgTEFTVF9GUkFHICAgICAgIDB4ODAwMDAwMDAgICAgICAgICAgICAgICAgICAgICAgLyogTGFzdCBBZGRyL0xlbiBwYWlyIGluIGRlc2NyaXB0b3IuICovCi0jZGVmaW5lIEROX0NPTVBMRVRFICAgICAweDAwMDEwMDAwICAgICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgcGFja2V0IGhhcyBiZWVuIGRvd25sb2FkZWQgKi8KKyNkZWZpbmUgTEFTVF9GUkFHCTB4ODAwMDAwMDAJCS8qIExhc3QgQWRkci9MZW4gcGFpciBpbiBkZXNjcmlwdG9yLiAqLworI2RlZmluZSBETl9DT01QTEVURQkweDAwMDEwMDAwCQkvKiBUaGlzIHBhY2tldCBoYXMgYmVlbiBkb3dubG9hZGVkICovCiAKIHN0cnVjdCByeF9kZXNjXzNjb20gewotCXUzMiBuZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExhc3QgZW50cnkgcG9pbnRzIHRvIDAJICAgCSovCi0JdTMyIHN0YXR1czsJCQkJCS8qIEZTSCAtPiBGcmFtZSBTdGFydCBIZWFkZXIgCQkqLwotCXUzMiBhZGRyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVwIHRvIDYzIGFkZHIvbGVuIHBhaXJzIHBvc3NpYmxlIAkqLwotCXUzMiBsZW5ndGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldCBMQVNUX0ZSQUcgdG8gaW5kaWNhdGUgbGFzdCBwYWlyCSovCisJdTMyIG5leHQ7CQkJCS8qIExhc3QgZW50cnkgcG9pbnRzIHRvIDAJCSovCisJdTMyIHN0YXR1czsJCQkJLyogRlNIIC0+IEZyYW1lIFN0YXJ0IEhlYWRlcgkJKi8KKwl1MzIgYWRkcjsJCQkJLyogVXAgdG8gNjMgYWRkci9sZW4gcGFpcnMgcG9zc2libGUJKi8KKwl1MzIgbGVuZ3RoOwkJCQkvKiBTZXQgTEFTVF9GUkFHIHRvIGluZGljYXRlIGxhc3QgcGFpcgkqLwogfTsKIAogLyogVmFsdWVzIGZvciB0aGUgUnggc3RhdHVzIGVudHJ5LiAqLwpAQCAtMjE0LDggKzIxNCw4IEBACiAjZGVmaW5lIFVEUENoa3N1bVZhbGlkCQkoMTw8MzEpCiAKIHN0cnVjdCB0eF9kZXNjXzNjb20gewotCXUzMiBuZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExhc3QgZW50cnkgcG9pbnRzIHRvIDAJCSovCi0JdTMyIHN0YXR1czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYml0cyAwOjEyIGxlbmd0aCwgb3RoZXJzIHNlZSBiZWxvdwkqLworCXUzMiBuZXh0OwkJCQkvKiBMYXN0IGVudHJ5IHBvaW50cyB0byAwCQkqLworCXUzMiBzdGF0dXM7CQkJCS8qIGJpdHMgMDoxMiBsZW5ndGgsIG90aGVycyBzZWUgYmVsb3cJKi8KIAl1MzIgYWRkcjsKIAl1MzIgbGVuZ3RoOwogfTsKQEAgLTIyNyw3ICsyMjcsNyBAQAogI2RlZmluZSBBZGRJUENoa3N1bQkJMHgwMjAwMDAwMAogI2RlZmluZSBBZGRUQ1BDaGtzdW0JCTB4MDQwMDAwMDAKICNkZWZpbmUgQWRkVURQQ2hrc3VtCQkweDA4MDAwMDAwCi0jZGVmaW5lIFR4SW50clVwbG9hZGVkCQkweDgwMDAwMDAwICAgICAgICAgICAgICAvKiBJUlEgd2hlbiBpbiBGSUZPLCBidXQgbWF5YmUgbm90IHNlbnQuICovCisjZGVmaW5lIFR4SW50clVwbG9hZGVkCQkweDgwMDAwMDAwCS8qIElSUSB3aGVuIGluIEZJRk8sIGJ1dCBtYXliZSBub3Qgc2VudC4gKi8KIAogLyogWENWUiBUeXBlcyAqLwogCkBAIC0yNDAsMTkgKzI0MCwxOSBAQAogI2RlZmluZSBYQ1ZSX01JSQkJNgogI2RlZmluZSBYQ1ZSX05XQVkJCTgKICNkZWZpbmUgWENWUl9FeHRNSUkJCTkKLSNkZWZpbmUgWENWUl9EZWZhdWx0CQkxMAkJCS8qIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBjb3JyZWN0IC0+IHNob3VsZCBoYXZlIGJlZW4gMHgxMCBpZiBBdXRvIE5lZ290aWF0ZSAqLworI2RlZmluZSBYQ1ZSX0RlZmF1bHQJCTEwCQkvKiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgY29ycmVjdCAtPiBzaG91bGQgaGF2ZSBiZWVuIDB4MTAgaWYgQXV0byBOZWdvdGlhdGUgKi8KIAotc3RydWN0IGRlc2NyaXB0b3IgewkJCSAgICAJCS8qIEEgZ2VuZXJpYyBkZXNjcmlwdG9yLiAqLwotCXUzMiBuZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExhc3QgZW50cnkgcG9pbnRzIHRvIDAJICAgCSovCi0JdTMyIHN0YXR1czsJCQkJCS8qIEZTSCAtPiBGcmFtZSBTdGFydCBIZWFkZXIgCQkqLwotCXUzMiBhZGRyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVwIHRvIDYzIGFkZHIvbGVuIHBhaXJzIHBvc3NpYmxlIAkqLwotCXUzMiBsZW5ndGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNldCBMQVNUX0ZSQUcgdG8gaW5kaWNhdGUgbGFzdCBwYWlyCSovCitzdHJ1Y3QgZGVzY3JpcHRvciB7CQkJCS8qIEEgZ2VuZXJpYyBkZXNjcmlwdG9yLiAqLworCXUzMiBuZXh0OwkJCQkvKiBMYXN0IGVudHJ5IHBvaW50cyB0byAwCQkqLworCXUzMiBzdGF0dXM7CQkJCS8qIEZTSCAtPiBGcmFtZSBTdGFydCBIZWFkZXIJCSovCisJdTMyIGFkZHI7CQkJCS8qIFVwIHRvIDYzIGFkZHIvbGVuIHBhaXJzIHBvc3NpYmxlCSovCisJdTMyIGxlbmd0aDsJCQkJLyogU2V0IExBU1RfRlJBRyB0byBpbmRpY2F0ZSBsYXN0IHBhaXIJKi8KIH07CiAKIC8qIE1pc2MuIGRlZmluaXRpb25zICovCiAKLSNkZWZpbmUgTlVNX1JYX0RFU0MgCQlQS1RCVUZTUlggKiAxMAotI2RlZmluZSBOVU1fVFhfREVTQyAJCTEgICAgICAgICAgICAvKiBOdW1iZXIgb2YgVFggZGVzY3JpcHRvcnMgICAqLworI2RlZmluZSBOVU1fUlhfREVTQwkJUEtUQlVGU1JYICogMTAKKyNkZWZpbmUgTlVNX1RYX0RFU0MJCTEJCS8qIE51bWJlciBvZiBUWCBkZXNjcmlwdG9ycyAgICovCiAKICNkZWZpbmUgVE9VVF9MT09QCQkxMDAwMDAwCiAKQEAgLTI2NiwxNyArMjY2LDE3IEBACiAjdW5kZWYgRVRIX0RFQlVHCiAKICNpZmRlZiBFVEhfREVCVUcKLSNkZWZpbmUgUFJJTlRGKGZtdCxhcmdzLi4uKSAgICAgcHJpbnRmIChmbXQgLCMjYXJncykKKyNkZWZpbmUgUFJJTlRGKGZtdCxhcmdzLi4uKQlwcmludGYgKGZtdCAsIyNhcmdzKQogI2Vsc2UKICNkZWZpbmUgUFJJTlRGKGZtdCxhcmdzLi4uKQogI2VuZGlmCiAKIAotc3RhdGljIHN0cnVjdCByeF9kZXNjXzNjb20gKnJ4X3Jpbmc7CQkgCS8qIFJYIGRlc2NyaXB0b3IgcmluZyAgICAgICAgIAkJKi8KLXN0YXRpYyBzdHJ1Y3QgdHhfZGVzY18zY29tICp0eF9yaW5nOwkJIAkvKiBUWCBkZXNjcmlwdG9yIHJpbmcgICAgICAgICAJCSovCi1zdGF0aWMgdTggcnhfYnVmZmVyW05VTV9SWF9ERVNDXVtQS1RTSVpFX0FMSUdOXTsJLyogc3RvcmFnZSBmb3IgdGhlIGluY29taW5nIG1lc3NhZ2VzIAkqLwotc3RhdGljIGludCByeF9uZXh0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgCQkvKiBSWCBkZXNjcmlwdG9yIHJpbmcgcG9pbnRlciAJCSovCi1zdGF0aWMgaW50IHR4X25leHQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAJCS8qIFRYIGRlc2NyaXB0b3IgcmluZyBwb2ludGVyIAkJKi8KK3N0YXRpYyBzdHJ1Y3QgcnhfZGVzY18zY29tICpyeF9yaW5nOwkJLyogUlggZGVzY3JpcHRvciByaW5nCQkqLworc3RhdGljIHN0cnVjdCB0eF9kZXNjXzNjb20gKnR4X3Jpbmc7CQkvKiBUWCBkZXNjcmlwdG9yIHJpbmcJCSovCitzdGF0aWMgdTggcnhfYnVmZmVyW05VTV9SWF9ERVNDXVtQS1RTSVpFX0FMSUdOXTsvKiBzdG9yYWdlIGZvciB0aGUgaW5jb21pbmcgbWVzc2FnZXMJKi8KK3N0YXRpYyBpbnQgcnhfbmV4dCA9IDA7CQkJCS8qIFJYIGRlc2NyaXB0b3IgcmluZyBwb2ludGVyCQkqLworc3RhdGljIGludCB0eF9uZXh0ID0gMDsJCQkJLyogVFggZGVzY3JpcHRvciByaW5nIHBvaW50ZXIJCSovCiBzdGF0aWMgaW50IHR4X3RocmVzaG9sZDsKIAogc3RhdGljIHZvaWQgIGluaXRfcnhfcmluZyhzdHJ1Y3QgZXRoX2RldmljZSogZGV2KTsKQEAgLTM2OSwxNzEgKzM2OSwxNjMgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogRGV0ZXJtaW5lIG5ldHdvcmsgbWVkaWEgdHlwZSBhbmQgc2V0IHVwIDNjb20gYWNjb3JkaW5nbHkgICAgICAgICAgICovCisvKiBEZXRlcm1pbmUgbmV0d29yayBtZWRpYSB0eXBlIGFuZCBzZXQgdXAgM2NvbSBhY2NvcmRpbmdseQkgICAgICAqLwogLyogSSB0aGluayBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBzb21ldGhpbmcga25vd24gZmlyc3QgbGlrZSAxMGJhc2VUICovCiAKLXN0YXRpYyBpbnQgYXV0b19uZWdvdGlhdGUoc3RydWN0IGV0aF9kZXZpY2UqIGRldikKK3N0YXRpYyBpbnQgYXV0b19uZWdvdGlhdGUgKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCiB7Ci0gICAgaW50IGk7CisJaW50IGk7CiAKLSAgICBFTDNXSU5ET1coZGV2LCAxKTsKKwlFTDNXSU5ET1cgKGRldiwgMSk7CiAKLSAgICAvKiBXYWl0IGZvciBBdXRvIG5lZ290aWF0aW9uIHRvIGNvbXBsZXRlICovCi0gICAgZm9yIChpID0gMDsgaSA8PSAxMDAwOyBpKyspCi0gICAgewotCWlmIChFVEhfSU5XKGRldiwgMikgJiAweDA0KQotCSAgICBicmVhazsKLQl1ZGVsYXkoMTAwKTsKKwkvKiBXYWl0IGZvciBBdXRvIG5lZ290aWF0aW9uIHRvIGNvbXBsZXRlICovCisJZm9yIChpID0gMDsgaSA8PSAxMDAwOyBpKyspIHsKKwkJaWYgKEVUSF9JTlcgKGRldiwgMikgJiAweDA0KQorCQkJYnJlYWs7CisJCXVkZWxheSAoMTAwKTsKIAotCWlmIChpID09IDEwMDApCi0JewotCSAgICBQUklOVEYoIkVycm9yOiBBdXRvIG5lZ290aWF0aW9uIGZhaWxlZFxuIik7Ci0JICAgIHJldHVybiAwOworCQlpZiAoaSA9PSAxMDAwKSB7CisJCQlQUklOVEYgKCJFcnJvcjogQXV0byBuZWdvdGlhdGlvbiBmYWlsZWRcbiIpOworCQkJcmV0dXJuIDA7CisJCX0KIAl9Ci0gICAgfQogCiAKLSAgICByZXR1cm4gMTsKKwlyZXR1cm4gMTsKIH0KIAotdm9pZCBldGhfaW50ZXJydXB0KHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCit2b2lkIGV0aF9pbnRlcnJ1cHQgKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCiB7Ci0gICAgdTE2IHN0YXR1cyA9IEVUSF9TVEFUVVMoZGV2KTsKKwl1MTYgc3RhdHVzID0gRVRIX1NUQVRVUyAoZGV2KTsKIAotICAgIHByaW50ZigiZXRoMDogc3RhdHVzID0gMHglMDR4XG4iLCBzdGF0dXMpOworCXByaW50ZiAoImV0aDA6IHN0YXR1cyA9IDB4JTA0eFxuIiwgc3RhdHVzKTsKIAotICAgIGlmICghKHN0YXR1cyAmIEludExhdGNoKSkKLQlyZXR1cm47CisJaWYgKCEoc3RhdHVzICYgSW50TGF0Y2gpKQorCQlyZXR1cm47CiAKLSAgICBpZiAoc3RhdHVzICYgKDE8PDYpKQotICAgIHsKLQlFVEhfQ01EKGRldiwgQWNrSW50ciB8ICgxPDw2KSk7Ci0JcHJpbnRmKCJBY2tub3dsZWRnZWQgSW50ZXJydXB0IGNvbW1hbmRcbiIpOwotICAgIH0KKwlpZiAoc3RhdHVzICYgKDEgPDwgNikpIHsKKwkJRVRIX0NNRCAoZGV2LCBBY2tJbnRyIHwgKDEgPDwgNikpOworCQlwcmludGYgKCJBY2tub3dsZWRnZWQgSW50ZXJydXB0IGNvbW1hbmRcbiIpOworCX0KIAotICAgIGlmIChzdGF0dXMgJiBEb3duQ29tcGxldGUpCi0gICAgewotCUVUSF9DTUQoZGV2LCBBY2tJbnRyIHwgRG93bkNvbXBsZXRlKTsKLQlwcmludGYoIkFja25vd2xlZGdlZCBEb3duQ29tcGxldGVcbiIpOwotICAgIH0KKwlpZiAoc3RhdHVzICYgRG93bkNvbXBsZXRlKSB7CisJCUVUSF9DTUQgKGRldiwgQWNrSW50ciB8IERvd25Db21wbGV0ZSk7CisJCXByaW50ZiAoIkFja25vd2xlZGdlZCBEb3duQ29tcGxldGVcbiIpOworCX0KIAotICAgIGlmIChzdGF0dXMgJiBVcENvbXBsZXRlKQotICAgIHsKLQlFVEhfQ01EKGRldiwgQWNrSW50ciB8IFVwQ29tcGxldGUpOwotCXByaW50ZigiQWNrbm93bGVkZ2VkIFVwQ29tcGxldGVcbiIpOwotICAgIH0KKwlpZiAoc3RhdHVzICYgVXBDb21wbGV0ZSkgeworCQlFVEhfQ01EIChkZXYsIEFja0ludHIgfCBVcENvbXBsZXRlKTsKKwkJcHJpbnRmICgiQWNrbm93bGVkZ2VkIFVwQ29tcGxldGVcbiIpOworCX0KIAotICAgIEVUSF9DTUQoZGV2LCBBY2tJbnRyIHwgSW50TGF0Y2gpOwotICAgIHByaW50ZigiQWNrbm93bGVkZ2VkIEludExhdGNoXG4iKTsKKwlFVEhfQ01EIChkZXYsIEFja0ludHIgfCBJbnRMYXRjaCk7CisJcHJpbnRmICgiQWNrbm93bGVkZ2VkIEludExhdGNoXG4iKTsKIH0KIAotaW50IGV0aF8zY29tX2luaXRpYWxpemUoYmRfdCAqYmlzKQoraW50IGV0aF8zY29tX2luaXRpYWxpemUgKGJkX3QgKiBiaXMpCiB7CiAJdTMyIGV0aF9pb2Jhc2UgPSAwLCBzdGF0dXM7CiAJaW50IGNhcmRfbnVtYmVyID0gMCwgcmV0OwotCXN0cnVjdCBldGhfZGV2aWNlKiBkZXY7CisJc3RydWN0IGV0aF9kZXZpY2UgKmRldjsKIAlwY2lfZGV2X3QgZGV2bm87CiAJY2hhciAqczsKIAotCXMgPSBnZXRlbnYoIjNjb21fYmFzZSIpOworCXMgPSBnZXRlbnYgKCIzY29tX2Jhc2UiKTsKIAogCS8qIEZpbmQgZXRoZXJuZXQgY29udHJvbGxlciBvbiB0aGUgUENJIGJ1cyAqLwogCi0JaWYgKChkZXZubyA9IHBjaV9maW5kX2RldmljZShQQ0lfVkVORE9SX0lEXzNDT00sIFBDSV9ERVZJQ0VfSURfM0NPTV8zQzkwNUMsIDApKSA8IDApCi0JewotCQlQUklOVEYoIkVycm9yOiBDYW5ub3QgZmluZCB0aGUgZXRoZXJuZXQgZGV2aWNlIG9uIHRoZSBQQ0kgYnVzXG4iKTsKKwlpZiAoKGRldm5vID0KKwkgICAgIHBjaV9maW5kX2RldmljZSAoUENJX1ZFTkRPUl9JRF8zQ09NLCBQQ0lfREVWSUNFX0lEXzNDT01fM0M5MDVDLAorCQkJICAgICAgMCkpIDwgMCkgeworCQlQUklOVEYgKCJFcnJvcjogQ2Fubm90IGZpbmQgdGhlIGV0aGVybmV0IGRldmljZSBvbiB0aGUgUENJIGJ1c1xuIik7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQlpZiAocykKLQl7Ci0JICAgIHVuc2lnbmVkIGxvbmcgYmFzZSA9IGF0b2kocyk7Ci0JICAgIHBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2bm8sIFBDSV9CQVNFX0FERFJFU1NfMCwgYmFzZSB8IDB4MDEpOworCWlmIChzKSB7CisJCXVuc2lnbmVkIGxvbmcgYmFzZSA9IGF0b2kgKHMpOworCisJCXBjaV93cml0ZV9jb25maWdfZHdvcmQgKGRldm5vLCBQQ0lfQkFTRV9BRERSRVNTXzAsCisJCQkJCWJhc2UgfCAweDAxKTsKIAl9CiAKLQlyZXQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2bm8sIFBDSV9CQVNFX0FERFJFU1NfMCwgJmV0aF9pb2Jhc2UpOworCXJldCA9IHBjaV9yZWFkX2NvbmZpZ19kd29yZCAoZGV2bm8sIFBDSV9CQVNFX0FERFJFU1NfMCwgJmV0aF9pb2Jhc2UpOwogCWV0aF9pb2Jhc2UgJj0gfjB4ZjsKIAotCVBSSU5URigiZXRoOiAzQ29tIEZvdW5kIGF0IEFkZHJlc3M6IDB4JXhcbiIsIGV0aF9pb2Jhc2UpOworCVBSSU5URiAoImV0aDogM0NvbSBGb3VuZCBhdCBBZGRyZXNzOiAweCV4XG4iLCBldGhfaW9iYXNlKTsKIAotCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2bm8sIFBDSV9DT01NQU5ELCBQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSB8IFBDSV9DT01NQU5EX01BU1RFUik7CisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZCAoZGV2bm8sIFBDSV9DT01NQU5ELAorCQkJCVBDSV9DT01NQU5EX0lPIHwgUENJX0NPTU1BTkRfTUVNT1JZIHwKKwkJCQlQQ0lfQ09NTUFORF9NQVNURVIpOwogCi0JIC8qIENoZWNrIGlmIEkvTyBhY2Nlc3NlcyBhbmQgQnVzIE1hc3RlcmluZyBhcmUgZW5hYmxlZCAqLworCS8qIENoZWNrIGlmIEkvTyBhY2Nlc3NlcyBhbmQgQnVzIE1hc3RlcmluZyBhcmUgZW5hYmxlZCAqLwogCi0JcmV0ID0gcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldm5vLCBQQ0lfQ09NTUFORCwgJnN0YXR1cyk7CisJcmV0ID0gcGNpX3JlYWRfY29uZmlnX2R3b3JkIChkZXZubywgUENJX0NPTU1BTkQsICZzdGF0dXMpOwogCi0JaWYgKCEoc3RhdHVzICYgUENJX0NPTU1BTkRfSU8pKQotCXsKLQkJcHJpbnRmKCJFcnJvcjogQ2Fubm90IGVuYWJsZSBJTyBhY2Nlc3MuXG4iKTsKKwlpZiAoIShzdGF0dXMgJiBQQ0lfQ09NTUFORF9JTykpIHsKKwkJcHJpbnRmICgiRXJyb3I6IENhbm5vdCBlbmFibGUgSU8gYWNjZXNzLlxuIik7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQlpZiAoIShzdGF0dXMgJiBQQ0lfQ09NTUFORF9NRU1PUlkpKQotCXsKLQkJcHJpbnRmKCJFcnJvcjogQ2Fubm90IGVuYWJsZSBNRU1PUlkgYWNjZXNzLlxuIik7CisJaWYgKCEoc3RhdHVzICYgUENJX0NPTU1BTkRfTUVNT1JZKSkgeworCQlwcmludGYgKCJFcnJvcjogQ2Fubm90IGVuYWJsZSBNRU1PUlkgYWNjZXNzLlxuIik7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQlpZiAoIShzdGF0dXMgJiBQQ0lfQ09NTUFORF9NQVNURVIpKQotCXsKLQkJcHJpbnRmKCJFcnJvcjogQ2Fubm90IGVuYWJsZSBCdXMgTWFzdGVyaW5nLlxuIik7CisJaWYgKCEoc3RhdHVzICYgUENJX0NPTU1BTkRfTUFTVEVSKSkgeworCQlwcmludGYgKCJFcnJvcjogQ2Fubm90IGVuYWJsZSBCdXMgTWFzdGVyaW5nLlxuIik7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQlkZXYgPSAoc3RydWN0IGV0aF9kZXZpY2UqKSBtYWxsb2Moc2l6ZW9mKCpkZXYpKTsgLypzdHJ1Y3QgZXRoX2RldmljZSkpOyAqLworCWRldiA9IChzdHJ1Y3QgZXRoX2RldmljZSAqKSBtYWxsb2MgKHNpemVvZiAoKmRldikpOwkvKnN0cnVjdCBldGhfZGV2aWNlKSk7ICovCiAKLQlzcHJpbnRmKGRldi0+bmFtZSwgIjNDb20gM2M5MjBjIyVkIiwgY2FyZF9udW1iZXIpOworCXNwcmludGYgKGRldi0+bmFtZSwgIjNDb20gM2M5MjBjIyVkIiwgY2FyZF9udW1iZXIpOwogCWRldi0+aW9iYXNlID0gZXRoX2lvYmFzZTsKLQlkZXYtPnByaXYgICA9ICh2b2lkKikgZGV2bm87Ci0JZGV2LT5pbml0ICAgPSBldGhfM2NvbV9pbml0OwotCWRldi0+aGFsdCAgID0gZXRoXzNjb21faGFsdDsKLQlkZXYtPnNlbmQgICA9IGV0aF8zY29tX3NlbmQ7Ci0JZGV2LT5yZWN2ICAgPSBldGhfM2NvbV9yZWN2OworCWRldi0+cHJpdiA9ICh2b2lkICopIGRldm5vOworCWRldi0+aW5pdCA9IGV0aF8zY29tX2luaXQ7CisJZGV2LT5oYWx0ID0gZXRoXzNjb21faGFsdDsKKwlkZXYtPnNlbmQgPSBldGhfM2NvbV9zZW5kOworCWRldi0+cmVjdiA9IGV0aF8zY29tX3JlY3Y7CiAKLQlldGhfcmVnaXN0ZXIoZGV2KTsKKwlldGhfcmVnaXN0ZXIgKGRldik7CiAKLS8qIAl7ICovCi0vKiAJICAgIGNoYXIgaW50ZXJydXB0OyAqLwotLyogCSAgICBkZXZubyA9IHBjaV9maW5kX2RldmljZShQQ0lfVkVORE9SX0lEXzNDT00sIFBDSV9ERVZJQ0VfSURfM0NPTV8zQzkwNUMsIDApOyAqLwotLyogCSAgICBwY2lfcmVhZF9jb25maWdfYnl0ZShkZXZubywgUENJX0lOVEVSUlVQVF9MSU5FLCAmaW50ZXJydXB0KTsgKi8KKy8qCXsgKi8KKy8qCSAgICBjaGFyIGludGVycnVwdDsgKi8KKy8qCSAgICBkZXZubyA9IHBjaV9maW5kX2RldmljZShQQ0lfVkVORE9SX0lEXzNDT00sIFBDSV9ERVZJQ0VfSURfM0NPTV8zQzkwNUMsIDApOyAqLworLyoJICAgIHBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldm5vLCBQQ0lfSU5URVJSVVBUX0xJTkUsICZpbnRlcnJ1cHQpOyAqLwogCi0vKiAJICAgIHByaW50ZigiSW5zdGFsbGluZyBldGgwIGludGVycnVwdCBoYW5kbGVyIHRvICVkXG4iLCBpbnRlcnJ1cHQpOyAqLwotLyogCSAgICBpcnFfaW5zdGFsbF9oYW5kbGVyKGludGVycnVwdCwgZXRoX2ludGVycnVwdCwgZGV2KTsgKi8KLS8qIAl9ICovCisvKgkgICAgcHJpbnRmKCJJbnN0YWxsaW5nIGV0aDAgaW50ZXJydXB0IGhhbmRsZXIgdG8gJWRcbiIsIGludGVycnVwdCk7ICovCisvKgkgICAgaXJxX2luc3RhbGxfaGFuZGxlcihpbnRlcnJ1cHQsIGV0aF9pbnRlcnJ1cHQsIGRldik7ICovCisvKgl9ICovCiAKIAljYXJkX251bWJlcisrOwogCiAJLyogU2V0IHRoZSBsYXRlbmN5IHRpbWVyIGZvciB2YWx1ZSAqLwotCXMgPSBnZXRlbnYoIjNjb21fbGF0ZW5jeSIpOwotCWlmIChzKQotCXsKLQkgICAgcmV0ID0gcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldm5vLCBQQ0lfTEFURU5DWV9USU1FUiwgKHVuc2lnbmVkIGNoYXIpYXRvaShzKSk7Ci0JfQotCWVsc2UgcmV0ID0gcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldm5vLCBQQ0lfTEFURU5DWV9USU1FUiwgMHgwYSk7CisJcyA9IGdldGVudiAoIjNjb21fbGF0ZW5jeSIpOworCWlmIChzKSB7CisJCXJldCA9IHBjaV93cml0ZV9jb25maWdfYnl0ZSAoZGV2bm8sIFBDSV9MQVRFTkNZX1RJTUVSLAorCQkJCQkgICAgICh1bnNpZ25lZCBjaGFyKSBhdG9pIChzKSk7CisJfSBlbHNlCisJCXJldCA9IHBjaV93cml0ZV9jb25maWdfYnl0ZSAoZGV2bm8sIFBDSV9MQVRFTkNZX1RJTUVSLCAweDBhKTsKIAotCXJlYWRfaHdfYWRkcihkZXYsIGJpcyk7IAkJCQkvKiBnZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gV2luZG93IDIqLworCXJlYWRfaHdfYWRkciAoZGV2LCBiaXMpOwkvKiBnZXQgdGhlIE1BQyBhZGRyZXNzIGZyb20gV2luZG93IDIgKi8KIAogCS8qIFJlc2V0IHRoZSBldGhlcm5ldCBjb250cm9sbGVyICovCiAKIAlQUklOVEYgKCJJc3N1aW5nIHJlc2V0IGNvbW1hbmQuLi4uXG4iKTsKLQlpZiAoIWlzc3VlX2FuZF93YWl0KGRldiwgVG90YWxSZXNldCkpCi0JewotCQlwcmludGYoIkVycm9yOiBDYW5ub3QgcmVzZXQgZXRoZXJuZXQgY29udHJvbGxlci5cbiIpOworCWlmICghaXNzdWVfYW5kX3dhaXQgKGRldiwgVG90YWxSZXNldCkpIHsKKwkJcHJpbnRmICgiRXJyb3I6IENhbm5vdCByZXNldCBldGhlcm5ldCBjb250cm9sbGVyLlxuIik7CiAJCWdvdG8gRG9uZTsKLQl9Ci0JZWxzZQorCX0gZWxzZQogCQlQUklOVEYgKCJFdGhlcm5ldCBjb250cm9sbGVyIHJlc2V0LlxuIik7CiAKIAkvKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJ4IGFuZCB0eCByaW5ncyAqLwogCi0JaWYoIShyeF9yaW5nID0gbWVtYWxpZ24oc2l6ZW9mKHN0cnVjdCByeF9kZXNjXzNjb20pICogTlVNX1JYX0RFU0MsIDE2KSkpCi0JeworCWlmICghKHJ4X3JpbmcgPSBtZW1hbGlnbiAoc2l6ZW9mIChzdHJ1Y3QgcnhfZGVzY18zY29tKSAqIE5VTV9SWF9ERVNDLCAxNikpKSB7CiAJCVBSSU5URiAoIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFJYX1JJTkcuLi4uLlxuIik7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQlpZiAoISh0eF9yaW5nID0gbWVtYWxpZ24oc2l6ZW9mKHN0cnVjdCB0eF9kZXNjXzNjb20pICogTlVNX1RYX0RFU0MsIDE2KSkpCi0JeworCWlmICghKHR4X3JpbmcgPSBtZW1hbGlnbiAoc2l6ZW9mIChzdHJ1Y3QgdHhfZGVzY18zY29tKSAqIE5VTV9UWF9ERVNDLCAxNikpKSB7CiAJCVBSSU5URiAoIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFRYX1JJTkcuLi4uLlxuIik7CiAJCWdvdG8gRG9uZTsKIAl9CkBAIC01NDMsMjE5ICs1MzUsMjA4IEBACiB9CiAKIAotc3RhdGljIGludCBldGhfM2NvbV9pbml0KHN0cnVjdCBldGhfZGV2aWNlKiBkZXYsIGJkX3QgKmJpcykKK3N0YXRpYyBpbnQgZXRoXzNjb21faW5pdCAoc3RydWN0IGV0aF9kZXZpY2UgKmRldiwgYmRfdCAqIGJpcykKIHsKIAlpbnQgaSwgc3RhdHVzID0gMDsKIAlpbnQgdHhfY3VyLCBsb29wOwogCXUxNiBzdGF0dXNfZW5hYmxlLCBpbnRyX2VuYWJsZTsKIAlzdHJ1Y3QgZGVzY3JpcHRvciAqaWFzX2NtZDsKIAotCS8qIERldGVybWluZSB3aGF0IHR5cGUgb2YgbmV0d29yayB0aGUgbWFjaGluZSBpcyBjb25uZWN0ZWQgdG8JKi8KLQkvKiBwcmVzZW50bHkgZHJvcHMgdGhlIGNvbm5lY3QgdG8gMTBNYnBzCQkJKi8KKwkvKiBEZXRlcm1pbmUgd2hhdCB0eXBlIG9mIG5ldHdvcmsgdGhlIG1hY2hpbmUgaXMgY29ubmVjdGVkIHRvICAgKi8KKwkvKiBwcmVzZW50bHkgZHJvcHMgdGhlIGNvbm5lY3QgdG8gMTBNYnBzICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotCWlmICghYXV0b19uZWdvdGlhdGUoZGV2KSkKLQl7Ci0JCXByaW50ZigiRXJyb3I6IENhbm5vdCBkZXRlcm1pbmUgbmV0d29yayBtZWRpYS5cbiIpOworCWlmICghYXV0b19uZWdvdGlhdGUgKGRldikpIHsKKwkJcHJpbnRmICgiRXJyb3I6IENhbm5vdCBkZXRlcm1pbmUgbmV0d29yayBtZWRpYS5cbiIpOwogCQlnb3RvIERvbmU7CiAJfQogCi0JaXNzdWVfYW5kX3dhaXQoZGV2LCBUeFJlc2V0KTsKLQlpc3N1ZV9hbmRfd2FpdChkZXYsIFJ4UmVzZXR8MHgwNCk7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgVHhSZXNldCk7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgUnhSZXNldCB8IDB4MDQpOwogCiAJLyogU3dpdGNoIHRvIHJlZ2lzdGVyIHNldCA3IGZvciBub3JtYWwgdXNlLiAqLwotCUVMM1dJTkRPVyhkZXYsIDcpOworCUVMM1dJTkRPVyAoZGV2LCA3KTsKIAogCS8qIEluaXRpYWxpemUgUnggYW5kIFR4IHJpbmdzICovCiAKLQlpbml0X3J4X3JpbmcoZGV2KTsKLQlwdXJnZV90eF9yaW5nKGRldik7CisJaW5pdF9yeF9yaW5nIChkZXYpOworCXB1cmdlX3R4X3JpbmcgKGRldik7CiAKLQlFVEhfQ01EKGRldiwgU2V0UnhGaWx0ZXIgfCBSeFN0YXRpb24gfCBSeEJyb2FkY2FzdCB8IFJ4UHJvbSk7CisJRVRIX0NNRCAoZGV2LCBTZXRSeEZpbHRlciB8IFJ4U3RhdGlvbiB8IFJ4QnJvYWRjYXN0IHwgUnhQcm9tKTsKIAotCWlzc3VlX2FuZF93YWl0KGRldixTZXRUeFN0YXJ0fDB4MDdmZik7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgU2V0VHhTdGFydCB8IDB4MDdmZik7CiAKIAkvKiBCZWxvdyBzZXRzIHdoaWNoIGluZGljYXRpb24gYml0cyB0byBiZSBzZWVuLiAqLwogCi0Jc3RhdHVzX2VuYWJsZSA9IFNldFN0YXR1c0VuYiB8IEhvc3RFcnJvciB8IERvd25Db21wbGV0ZSB8IFVwQ29tcGxldGUgfCAoMTw8Nik7Ci0JRVRIX0NNRChkZXYsIHN0YXR1c19lbmFibGUpOworCXN0YXR1c19lbmFibGUgPQorCQlTZXRTdGF0dXNFbmIgfCBIb3N0RXJyb3IgfCBEb3duQ29tcGxldGUgfCBVcENvbXBsZXRlIHwgKDEgPDwKKwkJCQkJCQkJCTYpOworCUVUSF9DTUQgKGRldiwgc3RhdHVzX2VuYWJsZSk7CiAKIAkvKiBCZWxvdyBzZXRzIG5vIGJpdHMgYXJlIHRvIGNhdXNlIGFuIGludGVycnVwdCBzaW5jZSB0aGlzIGlzIGp1c3QgcG9sbGluZyAqLwogCi0JaW50cl9lbmFibGUgICA9IFNldEludHJFbmI7CisJaW50cl9lbmFibGUgPSBTZXRJbnRyRW5iOwogLyoJaW50cl9lbmFibGUgPSBTZXRJbnRyRW5iIHwgKDE8PDkpIHwgKDE8PDEwKSB8ICgxPDw2KTsgKi8KLQlFVEhfQ01EKGRldiwgaW50cl9lbmFibGUpOwotCUVUSF9PVVRCKGRldiwgMTI3LCBVcFBvbGwpOworCUVUSF9DTUQgKGRldiwgaW50cl9lbmFibGUpOworCUVUSF9PVVRCIChkZXYsIDEyNywgVXBQb2xsKTsKIAogCS8qIEFjayBhbGwgcGVuZGluZyBldmVudHMsIGFuZCBzZXQgYWN0aXZlIGluZGljYXRvciBtYXNrICovCiAKLQlFVEhfQ01EKGRldiwgQWNrSW50ciB8IEludExhdGNoIHwgVHhBdmFpbGFibGUgfCBSeEVhcmx5IHwgSW50UmVxKTsKLQlFVEhfQ01EKGRldiwgaW50cl9lbmFibGUpOworCUVUSF9DTUQgKGRldiwgQWNrSW50ciB8IEludExhdGNoIHwgVHhBdmFpbGFibGUgfCBSeEVhcmx5IHwgSW50UmVxKTsKKwlFVEhfQ01EIChkZXYsIGludHJfZW5hYmxlKTsKIAogCS8qIFRlbGwgdGhlIGFkYXB0ZXIgd2hlcmUgdGhlIFJYIHJpbmcgaXMgbG9jYXRlZCAqLwogCi0JaXNzdWVfYW5kX3dhaXQoZGV2LFVwU3RhbGwpOwkJCQkvKiBTdGFsbCBhbmQgc2V0IHRoZSBVcGxpc3RQdHIgCQkqLwotCUVUSF9PVVRMKGRldiwgKHUzMikmcnhfcmluZ1tyeF9uZXh0XSwgVXBMaXN0UHRyKTsKLQlFVEhfQ01EKGRldiwgUnhFbmFibGUpOyAJCQkJLyogRW5hYmxlIHRoZSByZWNlaXZlci4gCQkqLwotCWlzc3VlX2FuZF93YWl0KGRldixVcFVuc3RhbGwpOworCWlzc3VlX2FuZF93YWl0IChkZXYsIFVwU3RhbGwpOwkvKiBTdGFsbCBhbmQgc2V0IHRoZSBVcGxpc3RQdHIgICAgICAgICAgKi8KKwlFVEhfT1VUTCAoZGV2LCAodTMyKSAmIHJ4X3JpbmdbcnhfbmV4dF0sIFVwTGlzdFB0cik7CisJRVRIX0NNRCAoZGV2LCBSeEVuYWJsZSk7CS8qIEVuYWJsZSB0aGUgcmVjZWl2ZXIuICAgICAgICAgKi8KKwlpc3N1ZV9hbmRfd2FpdCAoZGV2LCBVcFVuc3RhbGwpOwogCiAJLyogU2VuZCB0aGUgSW5kaXZpZHVhbCBBZGRyZXNzIFNldHVwIGZyYW1lICovCiAKLQl0eF9jdXIgICAgICAgPSB0eF9uZXh0OwotCXR4X25leHQgICAgICA9ICgodHhfbmV4dCsxKSAlIE5VTV9UWF9ERVNDKTsKKwl0eF9jdXIgPSB0eF9uZXh0OworCXR4X25leHQgPSAoKHR4X25leHQgKyAxKSAlIE5VTV9UWF9ERVNDKTsKIAotCWlhc19jbWQgICAgICAgICAgICAgPSAoc3RydWN0IGRlc2NyaXB0b3IgKikmdHhfcmluZ1t0eF9jdXJdOwotCWlhc19jbWQtPnN0YXR1cyAgICAgPSBjcHVfdG9fbGUzMigxPDwzMSk7CQkvKiBzZXQgRG5JbmRpY2F0ZSBiaXQuIAkJCSovCi0JaWFzX2NtZC0+bmV4dCAgICAgICA9IDA7Ci0JaWFzX2NtZC0+YWRkciAgICAgICA9IGNwdV90b19sZTMyKCh1MzIpJmJpcy0+YmlfZW5ldGFkZHJbMF0pOwotCWlhc19jbWQtPmxlbmd0aCAgICAgPSBjcHVfdG9fbGUzMig2IHwgTEFTVF9GUkFHKTsKKwlpYXNfY21kID0gKHN0cnVjdCBkZXNjcmlwdG9yICopICZ0eF9yaW5nW3R4X2N1cl07CisJaWFzX2NtZC0+c3RhdHVzID0gY3B1X3RvX2xlMzIgKDEgPDwgMzEpOwkvKiBzZXQgRG5JbmRpY2F0ZSBiaXQuICAgICAgICAgICAgICAgICAgKi8KKwlpYXNfY21kLT5uZXh0ID0gMDsKKwlpYXNfY21kLT5hZGRyID0gY3B1X3RvX2xlMzIgKCh1MzIpICYgYmlzLT5iaV9lbmV0YWRkclswXSk7CisJaWFzX2NtZC0+bGVuZ3RoID0gY3B1X3RvX2xlMzIgKDYgfCBMQVNUX0ZSQUcpOwogCiAJLyogVGVsbCB0aGUgYWRhcHRlciB3aGVyZSB0aGUgVFggcmluZyBpcyBsb2NhdGVkICovCiAKLQlFVEhfQ01EKGRldiwgVHhFbmFibGUpOyAJCQkJLyogRW5hYmxlIHRyYW5zbWl0dGVyLiAJCQkqLwotCWlzc3VlX2FuZF93YWl0KGRldiwgRG93blN0YWxsKTsJCQkJLyogU3RhbGwgYW5kIHNldCB0aGUgRG93bkxpc3RQdHIuIAkqLwotCUVUSF9PVVRMKGRldiwgKHUzMikmdHhfcmluZ1t0eF9jdXJdLCBEb3duTGlzdFB0cik7Ci0JaXNzdWVfYW5kX3dhaXQoZGV2LCBEb3duVW5zdGFsbCk7Ci0JZm9yIChpPTA7ICEoRVRIX1NUQVRVUyhkZXYpICYgRG93bkNvbXBsZXRlKTsgaSsrKQotCXsKLQkJaWYgKGkgPj0gVE9VVF9MT09QKQotCQl7Ci0JCQlQUklOVEYoIlRYIFJpbmcgc3RhdHVzIChJbml0KTogIDB4JTR4XG4iLCBsZTMyX3RvX2NwdSh0eF9yaW5nW3R4X2N1cl0uc3RhdHVzKSk7Ci0JCQlQUklOVEYoIkVUSF9TVEFUVVM6IDB4JXhcbiIsIEVUSF9TVEFUVVMoZGV2KSk7CisJRVRIX0NNRCAoZGV2LCBUeEVuYWJsZSk7CS8qIEVuYWJsZSB0cmFuc21pdHRlci4gICAgICAgICAgICAgICAgICAqLworCWlzc3VlX2FuZF93YWl0IChkZXYsIERvd25TdGFsbCk7CS8qIFN0YWxsIGFuZCBzZXQgdGhlIERvd25MaXN0UHRyLiAgICAgICAqLworCUVUSF9PVVRMIChkZXYsICh1MzIpICYgdHhfcmluZ1t0eF9jdXJdLCBEb3duTGlzdFB0cik7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgRG93blVuc3RhbGwpOworCWZvciAoaSA9IDA7ICEoRVRIX1NUQVRVUyAoZGV2KSAmIERvd25Db21wbGV0ZSk7IGkrKykgeworCQlpZiAoaSA+PSBUT1VUX0xPT1ApIHsKKwkJCVBSSU5URiAoIlRYIFJpbmcgc3RhdHVzIChJbml0KToJMHglNHhcbiIsCisJCQkJbGUzMl90b19jcHUgKHR4X3JpbmdbdHhfY3VyXS5zdGF0dXMpKTsKKwkJCVBSSU5URiAoIkVUSF9TVEFUVVM6IDB4JXhcbiIsIEVUSF9TVEFUVVMgKGRldikpOwogCQkJZ290byBEb25lOwogCQl9CiAJfQotCWlmIChFVEhfU1RBVFVTKGRldikgJiBEb3duQ29tcGxldGUpCQkJLyogSWYgRG93bkxvYWQgQ29tcGxldGUgQUNLIHRoZSBiaXQgCSovCi0JewotCQlFVEhfQ01EKGRldiwgQWNrSW50ciB8IERvd25Db21wbGV0ZSk7CQkvKiBhY2tub3dsZWRnZSB0aGUgaW5kaWNhdGlvbiBiaXQJKi8KLQkJaXNzdWVfYW5kX3dhaXQoZGV2LCBEb3duU3RhbGwpOwkJCS8qIHN0YWxsIGFuZCBjbGVhciBEb3duTGlzdFB0ciAJCSovCi0JCUVUSF9PVVRMKGRldiwgMCwgRG93bkxpc3RQdHIpOwotCQlpc3N1ZV9hbmRfd2FpdChkZXYsIERvd25VbnN0YWxsKTsKKwlpZiAoRVRIX1NUQVRVUyAoZGV2KSAmIERvd25Db21wbGV0ZSkgewkvKiBJZiBEb3duTG9hZCBDb21wbGV0ZSBBQ0sgdGhlIGJpdCAgICAgICAqLworCQlFVEhfQ01EIChkZXYsIEFja0ludHIgfCBEb3duQ29tcGxldGUpOwkvKiBhY2tub3dsZWRnZSB0aGUgaW5kaWNhdGlvbiBiaXQgICAgICAgKi8KKwkJaXNzdWVfYW5kX3dhaXQgKGRldiwgRG93blN0YWxsKTsJLyogc3RhbGwgYW5kIGNsZWFyIERvd25MaXN0UHRyICAgICAgICAgICovCisJCUVUSF9PVVRMIChkZXYsIDAsIERvd25MaXN0UHRyKTsKKwkJaXNzdWVfYW5kX3dhaXQgKGRldiwgRG93blVuc3RhbGwpOwogCX0KIAlzdGF0dXMgPSAxOwotCiBEb25lOgogCXJldHVybiBzdGF0dXM7CiB9CiAKLWludCBldGhfM2NvbV9zZW5kKHN0cnVjdCBldGhfZGV2aWNlKiBkZXYsIHZvbGF0aWxlIHZvaWQgKnBhY2tldCwgaW50IGxlbmd0aCkKK2ludCBldGhfM2NvbV9zZW5kIChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LCB2b2xhdGlsZSB2b2lkICpwYWNrZXQsIGludCBsZW5ndGgpCiB7CiAJaW50IGksIHN0YXR1cyA9IDA7CiAJaW50IHR4X2N1cjsKIAotCWlmIChsZW5ndGggPD0gMCkKLQl7Ci0JCVBSSU5URigiZXRoOiBiYWQgcGFja2V0IHNpemU6ICVkXG4iLCBsZW5ndGgpOworCWlmIChsZW5ndGggPD0gMCkgeworCQlQUklOVEYgKCJldGg6IGJhZCBwYWNrZXQgc2l6ZTogJWRcbiIsIGxlbmd0aCk7CiAJCWdvdG8gRG9uZTsKIAl9CiAKLQl0eF9jdXIgID0gdHhfbmV4dDsKLQl0eF9uZXh0ID0gKHR4X25leHQrMSkgJSBOVU1fVFhfREVTQzsKKwl0eF9jdXIgPSB0eF9uZXh0OworCXR4X25leHQgPSAodHhfbmV4dCArIDEpICUgTlVNX1RYX0RFU0M7CiAKLQl0eF9yaW5nW3R4X2N1cl0uc3RhdHVzICA9IGNwdV90b19sZTMyKDE8PDMxKTsJCS8qIHNldCBEbkluZGljYXRlIGJpdCAJCQkqLwotCXR4X3JpbmdbdHhfY3VyXS5uZXh0ICAgID0gMDsKLQl0eF9yaW5nW3R4X2N1cl0uYWRkciAgICA9IGNwdV90b19sZTMyKCgodTMyKSBwYWNrZXQpKTsKLQl0eF9yaW5nW3R4X2N1cl0ubGVuZ3RoICA9IGNwdV90b19sZTMyKGxlbmd0aCB8IExBU1RfRlJBRyk7CisJdHhfcmluZ1t0eF9jdXJdLnN0YXR1cyA9IGNwdV90b19sZTMyICgxIDw8IDMxKTsJLyogc2V0IERuSW5kaWNhdGUgYml0ICAgICAgICAgICAgICAgICAgICovCisJdHhfcmluZ1t0eF9jdXJdLm5leHQgPSAwOworCXR4X3JpbmdbdHhfY3VyXS5hZGRyID0gY3B1X3RvX2xlMzIgKCgodTMyKSBwYWNrZXQpKTsKKwl0eF9yaW5nW3R4X2N1cl0ubGVuZ3RoID0gY3B1X3RvX2xlMzIgKGxlbmd0aCB8IExBU1RfRlJBRyk7CiAKIAkvKiBTZW5kIHRoZSBwYWNrZXQgKi8KIAotCWlzc3VlX2FuZF93YWl0KGRldiwgRG93blN0YWxsKTsJCQkJLyogc3RhbGwgYW5kIHNldCB0aGUgRG93bkxpc3RQdHIgCSovCi0JRVRIX09VVEwoZGV2LCAodTMyKSAmdHhfcmluZ1t0eF9jdXJdLCBEb3duTGlzdFB0cik7Ci0JaXNzdWVfYW5kX3dhaXQoZGV2LCBEb3duVW5zdGFsbCk7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgRG93blN0YWxsKTsJLyogc3RhbGwgYW5kIHNldCB0aGUgRG93bkxpc3RQdHIgICAgICAgICovCisJRVRIX09VVEwgKGRldiwgKHUzMikgJiB0eF9yaW5nW3R4X2N1cl0sIERvd25MaXN0UHRyKTsKKwlpc3N1ZV9hbmRfd2FpdCAoZGV2LCBEb3duVW5zdGFsbCk7CiAKLQlmb3IgKGk9MDsgIShFVEhfU1RBVFVTKGRldikgJiBEb3duQ29tcGxldGUpOyBpKyspCi0JewotCQlpZiAoaSA+PSBUT1VUX0xPT1ApCi0JCXsKLQkJCVBSSU5URigiVFggUmluZyBzdGF0dXMgKHNlbmQpOiAweCU0eFxuIiwgbGUzMl90b19jcHUodHhfcmluZ1t0eF9jdXJdLnN0YXR1cykpOworCWZvciAoaSA9IDA7ICEoRVRIX1NUQVRVUyAoZGV2KSAmIERvd25Db21wbGV0ZSk7IGkrKykgeworCQlpZiAoaSA+PSBUT1VUX0xPT1ApIHsKKwkJCVBSSU5URiAoIlRYIFJpbmcgc3RhdHVzIChzZW5kKTogMHglNHhcbiIsCisJCQkJbGUzMl90b19jcHUgKHR4X3JpbmdbdHhfY3VyXS5zdGF0dXMpKTsKIAkJCWdvdG8gRG9uZTsKIAkJfQogCX0KLQlpZiAoRVRIX1NUQVRVUyhkZXYpICYgRG93bkNvbXBsZXRlKQkJCS8qIElmIERvd25Mb2FkIENvbXBsZXRlIEFDSyB0aGUgYml0IAkqLwotCXsKLQkJRVRIX0NNRChkZXYsIEFja0ludHIgfCBEb3duQ29tcGxldGUpOwkJLyogYWNrbm93bGVkZ2UgdGhlIGluZGljYXRpb24gYml0CSovCi0JCWlzc3VlX2FuZF93YWl0KGRldiwgRG93blN0YWxsKTsJCQkvKiBzdGFsbCBhbmQgY2xlYXIgRG93bkxpc3RQdHIgCQkqLwotCQlFVEhfT1VUTChkZXYsIDAsIERvd25MaXN0UHRyKTsKLQkJaXNzdWVfYW5kX3dhaXQoZGV2LCBEb3duVW5zdGFsbCk7CisJaWYgKEVUSF9TVEFUVVMgKGRldikgJiBEb3duQ29tcGxldGUpIHsJLyogSWYgRG93bkxvYWQgQ29tcGxldGUgQUNLIHRoZSBiaXQgICAgICAgKi8KKwkJRVRIX0NNRCAoZGV2LCBBY2tJbnRyIHwgRG93bkNvbXBsZXRlKTsJLyogYWNrbm93bGVkZ2UgdGhlIGluZGljYXRpb24gYml0ICAgICAgICovCisJCWlzc3VlX2FuZF93YWl0IChkZXYsIERvd25TdGFsbCk7CS8qIHN0YWxsIGFuZCBjbGVhciBEb3duTGlzdFB0ciAgICAgICAgICAqLworCQlFVEhfT1VUTCAoZGV2LCAwLCBEb3duTGlzdFB0cik7CisJCWlzc3VlX2FuZF93YWl0IChkZXYsIERvd25VbnN0YWxsKTsKIAl9Ci0Jc3RhdHVzPTE7Ci0gRG9uZToKKwlzdGF0dXMgPSAxOworRG9uZToKIAlyZXR1cm4gc3RhdHVzOwogfQogCi12b2lkIFByaW50UGFja2V0ICh1Y2hhciAqcGFja2V0LCBpbnQgbGVuZ3RoKQordm9pZCBQcmludFBhY2tldCAodWNoYXIgKiBwYWNrZXQsIGludCBsZW5ndGgpCiB7Ci1pbnQgbG9vcDsKLXVjaGFyICpwdHI7CisJaW50IGxvb3A7CisJdWNoYXIgKnB0cjsKIAogCXByaW50ZiAoIlByaW50aW5nIHBhY2tldCBvZiBsZW5ndGggJXguXG5cbiIsIGxlbmd0aCk7CiAJcHRyID0gcGFja2V0OwotCWZvciAobG9vcCA9IDE7IGxvb3AgPD0gbGVuZ3RoOyBsb29wKyspCi0JeworCWZvciAobG9vcCA9IDE7IGxvb3AgPD0gbGVuZ3RoOyBsb29wKyspIHsKIAkJcHJpbnRmICgiJTJ4ICIsICpwdHIrKyk7Ci0JCWlmICgobG9vcCAlIDQwKT09IDApCisJCWlmICgobG9vcCAlIDQwKSA9PSAwKQogCQkJcHJpbnRmICgiXG4iKTsKIAl9CiB9CiAKLWludCBldGhfM2NvbV9yZWN2KHN0cnVjdCBldGhfZGV2aWNlKiBkZXYpCitpbnQgZXRoXzNjb21fcmVjdiAoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKIHsKIAl1MTYgc3RhdCA9IDA7CiAJdTMyIHN0YXR1czsKIAlpbnQgcnhfcHJldiwgbGVuZ3RoID0gMDsKIAotCXdoaWxlICghKEVUSF9TVEFUVVMoZGV2KSAmIFVwQ29tcGxldGUpKQkJCS8qIHdhaXQgb24gcmVjZWlwdCBvZiBwYWNrZXQgCSovCisJd2hpbGUgKCEoRVRIX1NUQVRVUyAoZGV2KSAmIFVwQ29tcGxldGUpKQkvKiB3YWl0IG9uIHJlY2VpcHQgb2YgcGFja2V0ICAgICAgICAqLwogCQk7CiAKLQlzdGF0dXMgPSBsZTMyX3RvX2NwdShyeF9yaW5nW3J4X25leHRdLnN0YXR1cyk7CQkvKiBwYWNrZXQgc3RhdHVzCQkqLworCXN0YXR1cyA9IGxlMzJfdG9fY3B1IChyeF9yaW5nW3J4X25leHRdLnN0YXR1cyk7CS8qIHBhY2tldCBzdGF0dXMgICAgICAgICAgICAgICAgKi8KIAotCXdoaWxlIChzdGF0dXMgJiAoMTw8MTUpKQotCXsKKwl3aGlsZSAoc3RhdHVzICYgKDEgPDwgMTUpKSB7CiAJCS8qIEEgcGFja2V0IGhhcyBiZWVuIHJlY2VpdmVkICovCiAKLQkJaWYgKHN0YXR1cyAmICgxPDwxNSkpCi0JCXsKKwkJaWYgKHN0YXR1cyAmICgxIDw8IDE1KSkgewogCQkJLyogQSB2YWxpZCBmcmFtZSByZWNlaXZlZCAgKi8KIAotCQkJbGVuZ3RoID0gbGUzMl90b19jcHUocnhfcmluZ1tyeF9uZXh0XS5zdGF0dXMpICYgMHgxZmZmOwkJLyogbGVuZ3RoIGlzIGluIGJpdHMgMCAtIDEyIAkqLworCQkJbGVuZ3RoID0gbGUzMl90b19jcHUgKHJ4X3JpbmdbcnhfbmV4dF0uc3RhdHVzKSAmIDB4MWZmZjsJLyogbGVuZ3RoIGlzIGluIGJpdHMgMCAtIDEyICAgICAqLwogCiAJCQkvKiBQYXNzIHRoZSBwYWNrZXQgdXAgdG8gdGhlIHByb3RvY29sIGxheWVycyAqLwogCi0JCQlOZXRSZWNlaXZlKCh1Y2hhciAqKWxlMzJfdG9fY3B1KHJ4X3JpbmdbcnhfbmV4dF0uYWRkciksIGxlbmd0aCk7Ci0JCQlyeF9yaW5nW3J4X25leHRdLnN0YXR1cyA9IDA7CQkJCQkvKiBjbGVhciB0aGUgc3RhdHVzIHdvcmQgCSovCi0JCQlFVEhfQ01EKGRldiwgQWNrSW50ciB8IFVwQ29tcGxldGUpOwotCQkJaXNzdWVfYW5kX3dhaXQoZGV2LCBVcFVuc3RhbGwpOwotCQl9Ci0JCWVsc2UKLQkJaWYgKHN0YXQgJiBIb3N0RXJyb3IpCi0JCXsKKwkJCU5ldFJlY2VpdmUgKCh1Y2hhciAqKQorCQkJCSAgICBsZTMyX3RvX2NwdSAocnhfcmluZ1tyeF9uZXh0XS5hZGRyKSwKKwkJCQkgICAgbGVuZ3RoKTsKKwkJCXJ4X3JpbmdbcnhfbmV4dF0uc3RhdHVzID0gMDsJLyogY2xlYXIgdGhlIHN0YXR1cyB3b3JkICAgICAgICAqLworCQkJRVRIX0NNRCAoZGV2LCBBY2tJbnRyIHwgVXBDb21wbGV0ZSk7CisJCQlpc3N1ZV9hbmRfd2FpdCAoZGV2LCBVcFVuc3RhbGwpOworCQl9IGVsc2UgaWYgKHN0YXQgJiBIb3N0RXJyb3IpIHsKIAkJCS8qIFRoZXJlIHdhcyBhbiBlcnJvciAqLwogCi0JCQlwcmludGYoIlJ4IGVycm9yIHN0YXR1czogIDB4JTR4XG4iLCBzdGF0KTsKLQkJCWluaXRfcnhfcmluZyhkZXYpOworCQkJcHJpbnRmICgiUnggZXJyb3Igc3RhdHVzOiAgMHglNHhcbiIsIHN0YXQpOworCQkJaW5pdF9yeF9yaW5nIChkZXYpOwogCQkJZ290byBEb25lOwogCQl9CiAKIAkJcnhfcHJldiA9IHJ4X25leHQ7CiAJCXJ4X25leHQgPSAocnhfbmV4dCArIDEpICUgTlVNX1JYX0RFU0M7Ci0JCXN0YXQgPSBFVEhfU1RBVFVTKGRldik7CQkJCQkvKiByZWdpc3RlciBzdGF0dXMgCSovCi0JCXN0YXR1cyA9IGxlMzJfdG9fY3B1KHJ4X3JpbmdbcnhfbmV4dF0uc3RhdHVzKTsJCS8qIHBhY2tldCBzdGF0dXMgCSovCisJCXN0YXQgPSBFVEhfU1RBVFVTIChkZXYpOwkvKiByZWdpc3RlciBzdGF0dXMgICAgICAqLworCQlzdGF0dXMgPSBsZTMyX3RvX2NwdSAocnhfcmluZ1tyeF9uZXh0XS5zdGF0dXMpOwkvKiBwYWNrZXQgc3RhdHVzICAgICAgICAqLwogCX0KLQogRG9uZToKIAlyZXR1cm4gbGVuZ3RoOwogfQogCi12b2lkIGV0aF8zY29tX2hhbHQoc3RydWN0IGV0aF9kZXZpY2UqIGRldikKK3ZvaWQgZXRoXzNjb21faGFsdCAoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKIHsKLQlpZiAoIShkZXYtPmlvYmFzZSkpCi0JeworCWlmICghKGRldi0+aW9iYXNlKSkgewogCQlnb3RvIERvbmU7CiAJfQogCi0JaXNzdWVfYW5kX3dhaXQoZGV2LCBEb3duU3RhbGwpOwkJLyogc2h1dCBkb3duIHRyYW5zbWl0IGFuZCByZWNlaXZlICovCi0JaXNzdWVfYW5kX3dhaXQoZGV2LCBVcFN0YWxsKTsKLQlpc3N1ZV9hbmRfd2FpdChkZXYsIFJ4RGlzYWJsZSk7Ci0JaXNzdWVfYW5kX3dhaXQoZGV2LCBUeERpc2FibGUpOworCWlzc3VlX2FuZF93YWl0IChkZXYsIERvd25TdGFsbCk7CS8qIHNodXQgZG93biB0cmFuc21pdCBhbmQgcmVjZWl2ZSAqLworCWlzc3VlX2FuZF93YWl0IChkZXYsIFVwU3RhbGwpOworCWlzc3VlX2FuZF93YWl0IChkZXYsIFJ4RGlzYWJsZSk7CisJaXNzdWVfYW5kX3dhaXQgKGRldiwgVHhEaXNhYmxlKTsKIAogLyoJZnJlZSh0eF9yaW5nKTsJCQkJLyMjIyogcmVsZWFzZSBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoZSBEUEQgYW5kIFVQRCByaW5ncyAqLwogLyoJZnJlZShyeF9yaW5nKTsgKi8KQEAgLTc2NCw0MSArNzQ1LDQxIEBACiAJcmV0dXJuOwogfQogCi1zdGF0aWMgdm9pZCBpbml0X3J4X3Jpbmcoc3RydWN0IGV0aF9kZXZpY2UqIGRldikKK3N0YXRpYyB2b2lkIGluaXRfcnhfcmluZyAoc3RydWN0IGV0aF9kZXZpY2UgKmRldikKIHsKIAlpbnQgaTsKIAotCVBSSU5URigiSW5pdGlhbGl6aW5nIHJ4X3JpbmcuIHJ4X2J1ZmZlciA9ICVwXG4iLCByeF9idWZmZXIpOwotCWlzc3VlX2FuZF93YWl0KGRldiwgVXBTdGFsbCk7CisJUFJJTlRGICgiSW5pdGlhbGl6aW5nIHJ4X3JpbmcuIHJ4X2J1ZmZlciA9ICVwXG4iLCByeF9idWZmZXIpOworCWlzc3VlX2FuZF93YWl0IChkZXYsIFVwU3RhbGwpOwogCi0JZm9yIChpID0gMDsgaSA8IE5VTV9SWF9ERVNDOyBpKyspCi0JewotCQlyeF9yaW5nW2ldLm5leHQgICAgPSBjcHVfdG9fbGUzMigoKHUzMikgJnJ4X3JpbmdbKGkrMSkgJSBOVU1fUlhfREVTQ10pKTsKLQkJcnhfcmluZ1tpXS5zdGF0dXMgID0gMDsKLQkJcnhfcmluZ1tpXS5hZGRyICAgID0gY3B1X3RvX2xlMzIoKCh1MzIpICZyeF9idWZmZXJbaV1bMF0pKTsKLQkJcnhfcmluZ1tpXS5sZW5ndGggID0gY3B1X3RvX2xlMzIoUEtUU0laRV9BTElHTiB8IExBU1RfRlJBRyk7CisJZm9yIChpID0gMDsgaSA8IE5VTV9SWF9ERVNDOyBpKyspIHsKKwkJcnhfcmluZ1tpXS5uZXh0ID0KKwkJCWNwdV90b19sZTMyICgoKHUzMikgJgorCQkJCSAgICAgIHJ4X3JpbmdbKGkgKyAxKSAlIE5VTV9SWF9ERVNDXSkpOworCQlyeF9yaW5nW2ldLnN0YXR1cyA9IDA7CisJCXJ4X3JpbmdbaV0uYWRkciA9IGNwdV90b19sZTMyICgoKHUzMikgJiByeF9idWZmZXJbaV1bMF0pKTsKKwkJcnhfcmluZ1tpXS5sZW5ndGggPSBjcHVfdG9fbGUzMiAoUEtUU0laRV9BTElHTiB8IExBU1RfRlJBRyk7CiAJfQogCXJ4X25leHQgPSAwOwogfQogCi1zdGF0aWMgdm9pZCBwdXJnZV90eF9yaW5nKHN0cnVjdCBldGhfZGV2aWNlKiBkZXYpCitzdGF0aWMgdm9pZCBwdXJnZV90eF9yaW5nIChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQogewogCWludCBpOwogCi0JUFJJTlRGKCJQdXJnaW5nIHR4X3JpbmcuXG4iKTsKKwlQUklOVEYgKCJQdXJnaW5nIHR4X3JpbmcuXG4iKTsKIAotCXR4X25leHQgICAgICA9IDA7CisJdHhfbmV4dCA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgTlVNX1RYX0RFU0M7IGkrKykKLQl7Ci0JCXR4X3JpbmdbaV0ubmV4dCAgICA9IDA7Ci0JCXR4X3JpbmdbaV0uc3RhdHVzICA9IDA7Ci0JCXR4X3JpbmdbaV0uYWRkciAgICA9IDA7Ci0JCXR4X3JpbmdbaV0ubGVuZ3RoICA9IDA7CisJZm9yIChpID0gMDsgaSA8IE5VTV9UWF9ERVNDOyBpKyspIHsKKwkJdHhfcmluZ1tpXS5uZXh0ID0gMDsKKwkJdHhfcmluZ1tpXS5zdGF0dXMgPSAwOworCQl0eF9yaW5nW2ldLmFkZHIgPSAwOworCQl0eF9yaW5nW2ldLmxlbmd0aCA9IDA7CiAJfQogfQogCi1zdGF0aWMgdm9pZCByZWFkX2h3X2FkZHIoc3RydWN0IGV0aF9kZXZpY2UqIGRldiwgYmRfdCAqYmlzKQorc3RhdGljIHZvaWQgcmVhZF9od19hZGRyIChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2LCBiZF90ICogYmlzKQogewogCXU4IGh3X2FkZHJbRVRIX0FMRU5dOwogCXVuc2lnbmVkIGludCBlZXByb21bMHg0MF07CkBAIC04MDcsNzcgKzc4OCw3NyBAQAogCiAJLyogUmVhZCB0aGUgc3RhdGlvbiBhZGRyZXNzIGZyb20gdGhlIEVFUFJPTS4gKi8KIAotCUVMM1dJTkRPVyhkZXYsIDApOwotCWZvciAoaSA9IDA7IGkgPCAweDQwOyBpKyspCi0JewotCQlFVEhfT1VUVyhkZXYsIEVFUFJPTV9SZWFkICsgaSwgV24wRWVwcm9tQ21kKTsKKwlFTDNXSU5ET1cgKGRldiwgMCk7CisJZm9yIChpID0gMDsgaSA8IDB4NDA7IGkrKykgeworCQlFVEhfT1VUVyAoZGV2LCBFRVBST01fUmVhZCArIGksIFduMEVlcHJvbUNtZCk7CiAJCS8qIFBhdXNlIGZvciBhdCBsZWFzdCAxNjIgdXMuIGZvciB0aGUgcmVhZCB0byB0YWtlIHBsYWNlLiAqLwotCQlmb3IgKHRpbWVyID0gMTA7IHRpbWVyID49IDA7IHRpbWVyLS0pCi0JCXsKLQkJCXVkZWxheSgxNjIpOwotCQkJaWYgKChFVEhfSU5XKGRldiwgV24wRWVwcm9tQ21kKSAmIDB4ODAwMCkgPT0gMCkKKwkJZm9yICh0aW1lciA9IDEwOyB0aW1lciA+PSAwOyB0aW1lci0tKSB7CisJCQl1ZGVsYXkgKDE2Mik7CisJCQlpZiAoKEVUSF9JTlcgKGRldiwgV24wRWVwcm9tQ21kKSAmIDB4ODAwMCkgPT0gMCkKIAkJCQlicmVhazsKIAkJfQotCQllZXByb21baV0gPSBFVEhfSU5XKGRldiwgV24wRWVwcm9tRGF0YSk7CisJCWVlcHJvbVtpXSA9IEVUSF9JTlcgKGRldiwgV24wRWVwcm9tRGF0YSk7CiAJfQogCiAJLyogQ2hlY2tzdW0gY2FsY3VsYXRpb24uICBJJ20gbm90IHN1cmUgYWJvdXQgdGhpcyBwYXJ0IGFuZCB0aGVyZSBzZWVtcyB0byBiZSBhIGJ1ZyBvbiB0aGUgM2NvbSBzaWRlIG9mIHRoaW5ncyAqLwogCiAJZm9yIChpID0gMDsgaSA8IDB4MjE7IGkrKykKLQkJY2hlY2tzdW0gIF49IGVlcHJvbVtpXTsKKwkJY2hlY2tzdW0gXj0gZWVwcm9tW2ldOwogCWNoZWNrc3VtID0gKGNoZWNrc3VtIF4gKGNoZWNrc3VtID4+IDgpKSAmIDB4ZmY7CiAKIAlpZiAoY2hlY2tzdW0gIT0gMHhiYikKLQkJcHJpbnRmKCIgKioqIElOVkFMSUQgRUVQUk9NIENIRUNLU1VNICU0LjR4ICoqKiBcbiIsIGNoZWNrc3VtKTsKKwkJcHJpbnRmICgiICoqKiBJTlZBTElEIEVFUFJPTSBDSEVDS1NVTSAlNC40eCAqKiogXG4iLAorCQkJY2hlY2tzdW0pOwogCi0JZm9yIChpID0gMCwgaiA9IDA7IGkgPCAzOyBpKyspCi0JewotCQlod19hZGRyW2orK10gPSAodTgpKChlZXByb21baSsxMF0gPj4gOCkgJiAweGZmKTsKLQkJaHdfYWRkcltqKytdID0gKHU4KShlZXByb21baSsxMF0gJiAweGZmKTsKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IDM7IGkrKykgeworCQlod19hZGRyW2orK10gPSAodTgpICgoZWVwcm9tW2kgKyAxMF0gPj4gOCkgJiAweGZmKTsKKwkJaHdfYWRkcltqKytdID0gKHU4KSAoZWVwcm9tW2kgKyAxMF0gJiAweGZmKTsKIAl9CiAKIAkvKiAgTUFDIEFkZHJlc3MgaXMgaW4gd2luZG93IDIsIHdyaXRlIHZhbHVlIGZyb20gRUVQUk9NIHRvIHdpbmRvdyAyICovCiAKLQlFTDNXSU5ET1coZGV2LCAyKTsKKwlFTDNXSU5ET1cgKGRldiwgMik7CiAJZm9yIChpID0gMDsgaSA8IDY7IGkrKykKLQkJRVRIX09VVEIoZGV2LCBod19hZGRyW2ldLCBpKTsKKwkJRVRIX09VVEIgKGRldiwgaHdfYWRkcltpXSwgaSk7CiAKLQlmb3IgKGogPSAwOyBqIDwgRVRIX0FMRU47IGorPTIpCi0JewotCQlod19hZGRyW2pdICAgPSAodTgpKEVUSF9JTlcoZGV2LCBqKSAmIDB4ZmYpOwotCQlod19hZGRyW2orMV0gPSAodTgpKChFVEhfSU5XKGRldiwgaikgPj4gOCkgJiAweGZmKTsKKwlmb3IgKGogPSAwOyBqIDwgRVRIX0FMRU47IGogKz0gMikgeworCQlod19hZGRyW2pdID0gKHU4KSAoRVRIX0lOVyAoZGV2LCBqKSAmIDB4ZmYpOworCQlod19hZGRyW2ogKyAxXSA9ICh1OCkgKChFVEhfSU5XIChkZXYsIGopID4+IDgpICYgMHhmZik7CiAJfQogCi0JZm9yIChpPTA7aTxFVEhfQUxFTjtpKyspCi0JewotCQlpZiAoaHdfYWRkcltpXSAhPSBiaXMtPmJpX2VuZXRhZGRyW2ldKQotCQl7Ci0vKiAJCQlwcmludGYoIldhcm5pbmc6IEhXIGFkZHJlc3MgZG9uJ3QgbWF0Y2g6XG4iKTsgKi8KLS8qIAkJCXByaW50ZigiQWRkcmVzcyBpbiAzQ29tIFdpbmRvdyAyIGlzICAgICAgICAgIiAqLwotLyogCQkJICAgICAgICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwgKi8KLS8qIAkJCSAgICAgICBod19hZGRyWzBdLCBod19hZGRyWzFdLCBod19hZGRyWzJdLCAqLwotLyogCQkJICAgICAgIGh3X2FkZHJbM10sIGh3X2FkZHJbNF0sIGh3X2FkZHJbNV0pOyAqLwotLyogCQkJcHJpbnRmKCJBZGRyZXNzIHVzZWQgYnkgVS1Cb290IGlzICIgKi8KLS8qIAkJCSAgICAgICAiJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlhcbiIsICovCi0vKiAJCQkgICAgICAgYmlzLT5iaV9lbmV0YWRkclswXSwgYmlzLT5iaV9lbmV0YWRkclsxXSwgICovCi0vKiAJCQkgICAgICAgYmlzLT5iaV9lbmV0YWRkclsyXSwgYmlzLT5iaV9lbmV0YWRkclszXSwgICovCi0vKiAJCQkgICAgICAgYmlzLT5iaV9lbmV0YWRkcls0XSwgYmlzLT5iaV9lbmV0YWRkcls1XSk7ICovCi0vKiAJCQlnb3RvIERvbmU7ICovCi0JCSAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCQkgICAgaWYgKGJpcy0+YmlfZW5ldGFkZHJbMF0gPT0gMCAmJiBiaXMtPmJpX2VuZXRhZGRyWzFdID09IDAgJiYKLQkJCWJpcy0+YmlfZW5ldGFkZHJbMl0gPT0gMCAmJiBiaXMtPmJpX2VuZXRhZGRyWzNdID09IDAgJiYKLQkJCWJpcy0+YmlfZW5ldGFkZHJbNF0gPT0gMCAmJiBiaXMtPmJpX2VuZXRhZGRyWzVdID09IDApCi0JCSAgICB7CisJZm9yIChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspIHsKKwkJaWYgKGh3X2FkZHJbaV0gIT0gYmlzLT5iaV9lbmV0YWRkcltpXSkgeworLyoJCQlwcmludGYoIldhcm5pbmc6IEhXIGFkZHJlc3MgZG9uJ3QgbWF0Y2g6XG4iKTsgKi8KKy8qCQkJcHJpbnRmKCJBZGRyZXNzIGluIDNDb20gV2luZG93IDIgaXMJICAgICIgKi8KKy8qCQkJICAgICAgICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwgKi8KKy8qCQkJICAgICAgIGh3X2FkZHJbMF0sIGh3X2FkZHJbMV0sIGh3X2FkZHJbMl0sICovCisvKgkJCSAgICAgICBod19hZGRyWzNdLCBod19hZGRyWzRdLCBod19hZGRyWzVdKTsgKi8KKy8qCQkJcHJpbnRmKCJBZGRyZXNzIHVzZWQgYnkgVS1Cb290IGlzICIgKi8KKy8qCQkJICAgICAgICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIiwgKi8KKy8qCQkJICAgICAgIGJpcy0+YmlfZW5ldGFkZHJbMF0sIGJpcy0+YmlfZW5ldGFkZHJbMV0sICAqLworLyoJCQkgICAgICAgYmlzLT5iaV9lbmV0YWRkclsyXSwgYmlzLT5iaV9lbmV0YWRkclszXSwgICovCisvKgkJCSAgICAgICBiaXMtPmJpX2VuZXRhZGRyWzRdLCBiaXMtPmJpX2VuZXRhZGRyWzVdKTsgKi8KKy8qCQkJZ290byBEb25lOyAqLworCQkJY2hhciBidWZmZXJbMjU2XTsKIAotCQkJc3ByaW50ZihidWZmZXIsICIlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWCIsCi0JCQkJaHdfYWRkclswXSwgaHdfYWRkclsxXSwgaHdfYWRkclsyXSwKLQkJCQlod19hZGRyWzNdLCBod19hZGRyWzRdLCBod19hZGRyWzVdKTsKLQkJCXNldGVudigiZXRoYWRkciIsIGJ1ZmZlcik7Ci0JCSAgICB9CisJCQlpZiAoYmlzLT5iaV9lbmV0YWRkclswXSA9PSAwCisJCQkgICAgJiYgYmlzLT5iaV9lbmV0YWRkclsxXSA9PSAwCisJCQkgICAgJiYgYmlzLT5iaV9lbmV0YWRkclsyXSA9PSAwCisJCQkgICAgJiYgYmlzLT5iaV9lbmV0YWRkclszXSA9PSAwCisJCQkgICAgJiYgYmlzLT5iaV9lbmV0YWRkcls0XSA9PSAwCisJCQkgICAgJiYgYmlzLT5iaV9lbmV0YWRkcls1XSA9PSAwKSB7CisKKwkJCQlzcHJpbnRmIChidWZmZXIsCisJCQkJCSAiJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlgiLAorCQkJCQkgaHdfYWRkclswXSwgaHdfYWRkclsxXSwgaHdfYWRkclsyXSwKKwkJCQkJIGh3X2FkZHJbM10sIGh3X2FkZHJbNF0sIGh3X2FkZHJbNV0pOworCQkJCXNldGVudiAoImV0aGFkZHIiLCBidWZmZXIpOworCQkJfQogCQl9CiAJfQogCi0JZm9yKGk9MDsgaTxFVEhfQUxFTjsgaSsrKSBkZXYtPmVuZXRhZGRyW2ldID0gaHdfYWRkcltpXTsKKwlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKKwkJZGV2LT5lbmV0YWRkcltpXSA9IGh3X2FkZHJbaV07CiAKIERvbmU6CiAJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9pbnRlcnJ1cHRzLmMgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2ludGVycnVwdHMuYwppbmRleCA1YjMxNGE4Li44NmI0NDE1IDEwMDY0NAotLS0gYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2ludGVycnVwdHMuYworKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL2ludGVycnVwdHMuYwpAQCAtMTc2LDkgKzE3Niw5IEBACiAJZWxzZSB7CiAJCVBSSU5URiAoIlxuQm9ndXMgRXh0ZXJuYWwgSW50ZXJydXB0IElSUSAlZFxuIiwgaXJxKTsKIAkJLyoKLQkgCSogdHVybiBvZmYgdGhlIGJvZ3VzIGludGVycnVwdCwgb3RoZXJ3aXNlIGl0Ci0JIAkqIG1pZ2h0IHJlcGVhdCBmb3JldmVyCi0JIAkqLworCQkqIHR1cm4gb2ZmIHRoZSBib2d1cyBpbnRlcnJ1cHQsIG90aGVyd2lzZSBpdAorCQkqIG1pZ2h0IHJlcGVhdCBmb3JldmVyCisJCSovCiAJCXVubWFzayA9IDA7CiAJfQogCmRpZmYgLS1naXQgYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3BzMmtiZC5jIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS9wczJrYmQuYwppbmRleCBjZjRmNGQwLi4zOWQ4MTQ5IDEwMDY0NAotLS0gYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3BzMmtiZC5jCisrKyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvcHMya2JkLmMKQEAgLTU4LDcgKzU4LDcgQEAKICNkZWZpbmUgS0JEX1NUQVRfS09CRgkJMHgwMQogI2RlZmluZSBLQkRfU1RBVF9JQkYJCTB4MDIKICNkZWZpbmUgS0JEX1NUQVRfU1lTCQkweDA0Ci0jZGVmaW5lIEtCRF9TVEFUX0NECQkJMHgwOAorI2RlZmluZSBLQkRfU1RBVF9DRAkJMHgwOAogI2RlZmluZSBLQkRfU1RBVF9MT0NLCQkweDEwCiAjZGVmaW5lIEtCRF9TVEFUX01PQkYJCTB4MjAKICNkZWZpbmUgS0JEX1NUQVRfVElfT1VUCTB4NDAKQEAgLTcxLDUwICs3MSw1MCBAQAogICoJS2V5Ym9hcmQgQ29udHJvbGxlciBDb21tYW5kcwogICovCiAKLSNkZWZpbmUgS0JEX0NDTURfUkVBRF9NT0RFCQkJMHgyMAkvKiBSZWFkIG1vZGUgYml0cyAqLwotI2RlZmluZSBLQkRfQ0NNRF9XUklURV9NT0RFCQkJMHg2MAkvKiBXcml0ZSBtb2RlIGJpdHMgKi8KLSNkZWZpbmUgS0JEX0NDTURfR0VUX1ZFUlNJT04JCTB4QTEJLyogR2V0IGNvbnRyb2xsZXIgdmVyc2lvbiAqLworI2RlZmluZSBLQkRfQ0NNRF9SRUFEX01PREUJMHgyMAkvKiBSZWFkIG1vZGUgYml0cyAqLworI2RlZmluZSBLQkRfQ0NNRF9XUklURV9NT0RFCTB4NjAJLyogV3JpdGUgbW9kZSBiaXRzICovCisjZGVmaW5lIEtCRF9DQ01EX0dFVF9WRVJTSU9OCTB4QTEJLyogR2V0IGNvbnRyb2xsZXIgdmVyc2lvbiAqLwogI2RlZmluZSBLQkRfQ0NNRF9NT1VTRV9ESVNBQkxFCTB4QTcJLyogRGlzYWJsZSBtb3VzZSBpbnRlcmZhY2UgKi8KLSNkZWZpbmUgS0JEX0NDTURfTU9VU0VfRU5BQkxFCQkweEE4CS8qIEVuYWJsZSBtb3VzZSBpbnRlcmZhY2UgKi8KLSNkZWZpbmUgS0JEX0NDTURfVEVTVF9NT1VTRQkJCTB4QTkJLyogTW91c2UgaW50ZXJmYWNlIHRlc3QgKi8KLSNkZWZpbmUgS0JEX0NDTURfU0VMRl9URVNUCQkJMHhBQQkvKiBDb250cm9sbGVyIHNlbGYgdGVzdCAqLwotI2RlZmluZSBLQkRfQ0NNRF9LQkRfVEVTVAkJCQkweEFCCS8qIEtleWJvYXJkIGludGVyZmFjZSB0ZXN0ICovCi0jZGVmaW5lIEtCRF9DQ01EX0tCRF9ESVNBQkxFCQkweEFECS8qIEtleWJvYXJkIGludGVyZmFjZSBkaXNhYmxlICovCi0jZGVmaW5lIEtCRF9DQ01EX0tCRF9FTkFCTEUJCQkweEFFCS8qIEtleWJvYXJkIGludGVyZmFjZSBlbmFibGUgKi8KKyNkZWZpbmUgS0JEX0NDTURfTU9VU0VfRU5BQkxFCTB4QTgJLyogRW5hYmxlIG1vdXNlIGludGVyZmFjZSAqLworI2RlZmluZSBLQkRfQ0NNRF9URVNUX01PVVNFCTB4QTkJLyogTW91c2UgaW50ZXJmYWNlIHRlc3QgKi8KKyNkZWZpbmUgS0JEX0NDTURfU0VMRl9URVNUCTB4QUEJLyogQ29udHJvbGxlciBzZWxmIHRlc3QgKi8KKyNkZWZpbmUgS0JEX0NDTURfS0JEX1RFU1QJMHhBQgkvKiBLZXlib2FyZCBpbnRlcmZhY2UgdGVzdCAqLworI2RlZmluZSBLQkRfQ0NNRF9LQkRfRElTQUJMRQkweEFECS8qIEtleWJvYXJkIGludGVyZmFjZSBkaXNhYmxlICovCisjZGVmaW5lIEtCRF9DQ01EX0tCRF9FTkFCTEUJMHhBRQkvKiBLZXlib2FyZCBpbnRlcmZhY2UgZW5hYmxlICovCiAjZGVmaW5lIEtCRF9DQ01EX1dSSVRFX0FVWF9PQlVGCTB4RDMgICAgLyogV3JpdGUgdG8gb3V0cHV0IGJ1ZmZlciBhcyBpZgogCQkJCQkgICBpbml0aWF0ZWQgYnkgdGhlIGF1eGlsaWFyeSBkZXZpY2UgKi8KLSNkZWZpbmUgS0JEX0NDTURfV1JJVEVfTU9VU0UJCTB4RDQJLyogV3JpdGUgdGhlIGZvbGxvd2luZyBieXRlIHRvIHRoZSBtb3VzZSAqLworI2RlZmluZSBLQkRfQ0NNRF9XUklURV9NT1VTRQkweEQ0CS8qIFdyaXRlIHRoZSBmb2xsb3dpbmcgYnl0ZSB0byB0aGUgbW91c2UgKi8KIAogLyoKICAqCUtleWJvYXJkIENvbW1hbmRzCiAgKi8KIAotI2RlZmluZSBLQkRfQ01EX1NFVF9MRURTCQkJCTB4RUQJLyogU2V0IGtleWJvYXJkIGxlZHMgKi8KLSNkZWZpbmUgS0JEX0NNRF9TRVRfUkFURQkJCQkweEYzCS8qIFNldCB0eXBlbWF0aWMgcmF0ZSAqLwotI2RlZmluZSBLQkRfQ01EX0VOQUJMRQkJCQkJMHhGNAkvKiBFbmFibGUgc2Nhbm5pbmcgKi8KLSNkZWZpbmUgS0JEX0NNRF9ESVNBQkxFCQkJCQkweEY1CS8qIERpc2FibGUgc2Nhbm5pbmcgKi8KLSNkZWZpbmUgS0JEX0NNRF9SRVNFVAkJCQkJCTB4RkYJLyogUmVzZXQgKi8KKyNkZWZpbmUgS0JEX0NNRF9TRVRfTEVEUwkweEVECS8qIFNldCBrZXlib2FyZCBsZWRzICovCisjZGVmaW5lIEtCRF9DTURfU0VUX1JBVEUJMHhGMwkvKiBTZXQgdHlwZW1hdGljIHJhdGUgKi8KKyNkZWZpbmUgS0JEX0NNRF9FTkFCTEUJCTB4RjQJLyogRW5hYmxlIHNjYW5uaW5nICovCisjZGVmaW5lIEtCRF9DTURfRElTQUJMRQkJMHhGNQkvKiBEaXNhYmxlIHNjYW5uaW5nICovCisjZGVmaW5lIEtCRF9DTURfUkVTRVQJCTB4RkYJLyogUmVzZXQgKi8KIAogLyoKICAqCUtleWJvYXJkIFJlcGxpZXMKICAqLwogCi0jZGVmaW5lIEtCRF9SRVBMWV9QT1IJCQkJCQkweEFBCS8qIFBvd2VyIG9uIHJlc2V0ICovCi0jZGVmaW5lIEtCRF9SRVBMWV9BQ0sJCQkJCQkweEZBCS8qIENvbW1hbmQgQUNLICovCi0jZGVmaW5lIEtCRF9SRVBMWV9SRVNFTkQJCQkJMHhGRQkvKiBDb21tYW5kIE5BQ0ssIHNlbmQgdGhlIGNtZCBhZ2FpbiAqLworI2RlZmluZSBLQkRfUkVQTFlfUE9SCQkweEFBCS8qIFBvd2VyIG9uIHJlc2V0ICovCisjZGVmaW5lIEtCRF9SRVBMWV9BQ0sJCTB4RkEJLyogQ29tbWFuZCBBQ0sgKi8KKyNkZWZpbmUgS0JEX1JFUExZX1JFU0VORAkweEZFCS8qIENvbW1hbmQgTkFDSywgc2VuZCB0aGUgY21kIGFnYWluICovCiAKIC8qCiAgKglTdGF0dXMgUmVnaXN0ZXIgQml0cwogICovCiAKLSNkZWZpbmUgS0JEX1NUQVRfT0JGIAkJCQkJCTB4MDEJLyogS2V5Ym9hcmQgb3V0cHV0IGJ1ZmZlciBmdWxsICovCi0jZGVmaW5lIEtCRF9TVEFUX0lCRiAJCQkJCQkweDAyCS8qIEtleWJvYXJkIGlucHV0IGJ1ZmZlciBmdWxsICovCi0jZGVmaW5lIEtCRF9TVEFUX1NFTEZURVNUCQkJCTB4MDQJLyogU2VsZiB0ZXN0IHN1Y2Nlc3NmdWwgKi8KLSNkZWZpbmUgS0JEX1NUQVRfQ01ECQkJCQkJMHgwOAkvKiBMYXN0IHdyaXRlIHdhcyBhIGNvbW1hbmQgd3JpdGUgKDA9ZGF0YSkgKi8KLSNkZWZpbmUgS0JEX1NUQVRfVU5MT0NLRUQJCQkJMHgxMAkvKiBaZXJvIGlmIGtleWJvYXJkIGxvY2tlZCAqLwotI2RlZmluZSBLQkRfU1RBVF9NT1VTRV9PQkYJCQkweDIwCS8qIE1vdXNlIG91dHB1dCBidWZmZXIgZnVsbCAqLwotI2RlZmluZSBLQkRfU1RBVF9HVE8gCQkJCQkJMHg0MAkvKiBHZW5lcmFsIHJlY2VpdmUveG1pdCB0aW1lb3V0ICovCi0jZGVmaW5lIEtCRF9TVEFUX1BFUlIgCQkJCQkweDgwCS8qIFBhcml0eSBlcnJvciAqLworI2RlZmluZSBLQkRfU1RBVF9PQkYJCTB4MDEJLyogS2V5Ym9hcmQgb3V0cHV0IGJ1ZmZlciBmdWxsICovCisjZGVmaW5lIEtCRF9TVEFUX0lCRgkJMHgwMgkvKiBLZXlib2FyZCBpbnB1dCBidWZmZXIgZnVsbCAqLworI2RlZmluZSBLQkRfU1RBVF9TRUxGVEVTVAkweDA0CS8qIFNlbGYgdGVzdCBzdWNjZXNzZnVsICovCisjZGVmaW5lIEtCRF9TVEFUX0NNRAkJMHgwOAkvKiBMYXN0IHdyaXRlIHdhcyBhIGNvbW1hbmQgd3JpdGUgKDA9ZGF0YSkgKi8KKyNkZWZpbmUgS0JEX1NUQVRfVU5MT0NLRUQJMHgxMAkvKiBaZXJvIGlmIGtleWJvYXJkIGxvY2tlZCAqLworI2RlZmluZSBLQkRfU1RBVF9NT1VTRV9PQkYJMHgyMAkvKiBNb3VzZSBvdXRwdXQgYnVmZmVyIGZ1bGwgKi8KKyNkZWZpbmUgS0JEX1NUQVRfR1RPCQkweDQwCS8qIEdlbmVyYWwgcmVjZWl2ZS94bWl0IHRpbWVvdXQgKi8KKyNkZWZpbmUgS0JEX1NUQVRfUEVSUgkJMHg4MAkvKiBQYXJpdHkgZXJyb3IgKi8KIAogI2RlZmluZSBBVVhfU1RBVF9PQkYgKEtCRF9TVEFUX09CRiB8IEtCRF9TVEFUX01PVVNFX09CRikKIApAQCAtMTIyLDI0ICsxMjIsMjQgQEAKICAqCUNvbnRyb2xsZXIgTW9kZSBSZWdpc3RlciBCaXRzCiAgKi8KIAotI2RlZmluZSBLQkRfTU9ERV9LQkRfSU5UCQkJCTB4MDEJLyogS2V5Ym9hcmQgZGF0YSBnZW5lcmF0ZSBJUlExICovCi0jZGVmaW5lIEtCRF9NT0RFX01PVVNFX0lOVAkJCTB4MDIJLyogTW91c2UgZGF0YSBnZW5lcmF0ZSBJUlExMiAqLwotI2RlZmluZSBLQkRfTU9ERV9TWVMgCQkJCQkJMHgwNAkvKiBUaGUgc3lzdGVtIGZsYWcgKD8pICovCi0jZGVmaW5lIEtCRF9NT0RFX05PX0tFWUxPQ0sJCQkweDA4CS8qIFRoZSBrZXlsb2NrIGRvZXNuJ3QgYWZmZWN0IHRoZSBrZXlib2FyZCBpZiBzZXQgKi8KLSNkZWZpbmUgS0JEX01PREVfRElTQUJMRV9LQkQJCTB4MTAJLyogRGlzYWJsZSBrZXlib2FyZCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgS0JEX01PREVfS0JEX0lOVAkweDAxCS8qIEtleWJvYXJkIGRhdGEgZ2VuZXJhdGUgSVJRMSAqLworI2RlZmluZSBLQkRfTU9ERV9NT1VTRV9JTlQJMHgwMgkvKiBNb3VzZSBkYXRhIGdlbmVyYXRlIElSUTEyICovCisjZGVmaW5lIEtCRF9NT0RFX1NZUwkJMHgwNAkvKiBUaGUgc3lzdGVtIGZsYWcgKD8pICovCisjZGVmaW5lIEtCRF9NT0RFX05PX0tFWUxPQ0sJMHgwOAkvKiBUaGUga2V5bG9jayBkb2Vzbid0IGFmZmVjdCB0aGUga2V5Ym9hcmQgaWYgc2V0ICovCisjZGVmaW5lIEtCRF9NT0RFX0RJU0FCTEVfS0JECTB4MTAJLyogRGlzYWJsZSBrZXlib2FyZCBpbnRlcmZhY2UgKi8KICNkZWZpbmUgS0JEX01PREVfRElTQUJMRV9NT1VTRQkweDIwCS8qIERpc2FibGUgbW91c2UgaW50ZXJmYWNlICovCi0jZGVmaW5lIEtCRF9NT0RFX0tDQyAJCQkJCQkweDQwCS8qIFNjYW4gY29kZSBjb252ZXJzaW9uIHRvIFBDIGZvcm1hdCAqLwotI2RlZmluZSBLQkRfTU9ERV9SRlUJCQkJCQkweDgwCisjZGVmaW5lIEtCRF9NT0RFX0tDQwkJMHg0MAkvKiBTY2FuIGNvZGUgY29udmVyc2lvbiB0byBQQyBmb3JtYXQgKi8KKyNkZWZpbmUgS0JEX01PREVfUkZVCQkweDgwCiAKIAotI2RlZmluZSBLREJfREFUQV9QT1JUCQkJMHg2MAorI2RlZmluZSBLREJfREFUQV9QT1JUCQkweDYwCiAjZGVmaW5lIEtEQl9DT01NQU5EX1BPUlQJMHg2NAogCi0jZGVmaW5lIAlMRURfU0NSCQkweDAxCS8qIHNjcm9sbCBsb2NrIGxlZCAqLwotI2RlZmluZSAJTEVEX0NBUAkJMHgwNAkvKiBjYXBzIGxvY2sgbGVkICovCi0jZGVmaW5lIAlMRURfTlVNCQkweDAyCS8qIG51bSBsb2NrIGxlZCAqLworI2RlZmluZQlMRURfU0NSCQkJMHgwMQkvKiBzY3JvbGwgbG9jayBsZWQgKi8KKyNkZWZpbmUJTEVEX0NBUAkJCTB4MDQJLyogY2FwcyBsb2NrIGxlZCAqLworI2RlZmluZQlMRURfTlVNCQkJMHgwMgkvKiBudW0gbG9jayBsZWQgKi8KIAotI2RlZmluZSAJS0JEX0JVRkZFUl9MRU4gMHgyMCAgLyogc2l6ZSBvZiB0aGUga2V5Ym9hcmRidWZmZXIgKi8KKyNkZWZpbmUJS0JEX0JVRkZFUl9MRU4JCTB4MjAJLyogc2l6ZSBvZiB0aGUga2V5Ym9hcmRidWZmZXIgKi8KIAogCiBzdGF0aWMgdm9sYXRpbGUgY2hhciBrYmRfYnVmZmVyW0tCRF9CVUZGRVJfTEVOXTsKQEAgLTE5NCwyMSArMTk0LDIyIEBACiAgKiBJbml0CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1pbnQgaXNhX2tiZF9pbml0KHZvaWQpCitpbnQgaXNhX2tiZF9pbml0ICh2b2lkKQogewotCWNoYXIqIHJlc3VsdDsKLQlyZXN1bHQ9a2JkX2luaXRpYWxpemUoKTsKLQlpZiAocmVzdWx0ICE9IE5VTEwpCi0JewotCSAgICByZXN1bHQgPSBrYmRfaW5pdGlhbGl6ZSgpOworCWNoYXIgKnJlc3VsdDsKKworCXJlc3VsdCA9IGtiZF9pbml0aWFsaXplICgpOworCWlmIChyZXN1bHQgIT0gTlVMTCkgeworCQlyZXN1bHQgPSBrYmRfaW5pdGlhbGl6ZSAoKTsKIAl9Ci0JaWYocmVzdWx0PT1OVUxMKSB7Ci0JCXByaW50ZigiQVQgS2V5Ym9hcmQgaW5pdGlhbGl6ZWRcbiIpOwotCQlpcnFfaW5zdGFsbF9oYW5kbGVyKEtCRF9JTlRFUlJVUFQsIChpbnRlcnJ1cHRfaGFuZGxlcl90ICopa2JkX2ludGVycnVwdCwgTlVMTCk7CisJaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisJCXByaW50ZiAoIkFUIEtleWJvYXJkIGluaXRpYWxpemVkXG4iKTsKKwkJaXJxX2luc3RhbGxfaGFuZGxlciAoS0JEX0lOVEVSUlVQVCwKKwkJCQkgICAgIChpbnRlcnJ1cHRfaGFuZGxlcl90ICopIGtiZF9pbnRlcnJ1cHQsCisJCQkJICAgICBOVUxMKTsKIAkJcmV0dXJuICgxKTsKLQl9Ci0JZWxzZSB7Ci0JCXByaW50ZigiJXNcbiIscmVzdWx0KTsKKwl9IGVsc2UgeworCQlwcmludGYgKCIlc1xuIiwgcmVzdWx0KTsKIAkJcmV0dXJuICgtMSk7CiAJfQogfQpAQCAtMjI1LDIwICsyMjYsMjAgQEAKIGludCBkcnZfaXNhX2tiZF9pbml0ICh2b2lkKQogewogCWludCBlcnJvcjsKLSAgCWRldmljZV90IGtiZGRldiA7CisJZGV2aWNlX3Qga2JkZGV2IDsKIAljaGFyICpzdGRpbm5hbWUgID0gZ2V0ZW52ICgic3RkaW4iKTsKIAogCWlmKGlzYV9rYmRfaW5pdCgpPT0tMSkKIAkJcmV0dXJuIC0xOwotICAJbWVtc2V0ICgma2JkZGV2LCAwLCBzaXplb2Yoa2JkZGV2KSk7Ci0gIAlzdHJjcHkoa2JkZGV2Lm5hbWUsIERFVk5BTUUpOwotICAJa2JkZGV2LmZsYWdzID0gIERFVl9GTEFHU19JTlBVVCB8IERFVl9GTEFHU19TWVNURU07Ci0gIAlrYmRkZXYucHV0YyA9IE5VTEwgOworCW1lbXNldCAoJmtiZGRldiwgMCwgc2l6ZW9mKGtiZGRldikpOworCXN0cmNweShrYmRkZXYubmFtZSwgREVWTkFNRSk7CisJa2JkZGV2LmZsYWdzID0gIERFVl9GTEFHU19JTlBVVCB8IERFVl9GTEFHU19TWVNURU07CisJa2JkZGV2LnB1dGMgPSBOVUxMIDsKIAlrYmRkZXYucHV0cyA9IE5VTEwgOwogCWtiZGRldi5nZXRjID0ga2JkX2dldGMgOwogCWtiZGRldi50c3RjID0ga2JkX3Rlc3RjIDsKIAotIAllcnJvciA9IGRldmljZV9yZWdpc3RlciAoJmtiZGRldik7CisJZXJyb3IgPSBkZXZpY2VfcmVnaXN0ZXIgKCZrYmRkZXYpOwogCWlmKGVycm9yPT0wKSB7CiAJCS8qIGNoZWNrIGlmIHRoaXMgaXMgdGhlIHN0YW5kYXJkIGlucHV0IGRldmljZSAqLwogCQlpZihzdHJjbXAoc3RkaW5uYW1lLERFVk5BTUUpPT0wKSB7CkBAIC0zMDEsNyArMzAyLDYgQEAKIAogfQogCi0KIC8qIHNldCBMRURzICovCiAKIHZvaWQga2JkX3NldF9sZWRzKHZvaWQpCkBAIC0zMjIsMTQwICszMjIsMTM5IEBACiAJa2JkX3NlbmRfZGF0YShsZWRzKTsKIH0KIAotCi12b2lkIGhhbmRsZV9rZXlib2FyZF9ldmVudCh1bnNpZ25lZCBjaGFyIHNjYW5jb2RlKQordm9pZCBoYW5kbGVfa2V5Ym9hcmRfZXZlbnQgKHVuc2lnbmVkIGNoYXIgc2NhbmNvZGUpCiB7CiAJdW5zaWduZWQgY2hhciBrZXljb2RlOwogCiAJLyogIENvbnZlcnQgc2NhbmNvZGUgdG8ga2V5Y29kZSAqLwotCVBSSU5URigic2NhbmNvZGUgJXhcbiIsc2NhbmNvZGUpOwotCWlmKHNjYW5jb2RlPT0weGUwKSB7Ci0JCWUwPTE7IC8qIHNwZWNpYWwgY2hhcmFrdGVycyAqLworCVBSSU5URiAoInNjYW5jb2RlICV4XG4iLCBzY2FuY29kZSk7CisJaWYgKHNjYW5jb2RlID09IDB4ZTApIHsKKwkJZTAgPSAxOwkJLyogc3BlY2lhbCBjaGFyYWt0ZXJzICovCiAJCXJldHVybjsKIAl9Ci0JaWYoZTA9PTEpIHsKLQkJZTA9MDsgLyogZGVsZXRlIGZsYWcgKi8KLQkJaWYoISgJKChzY2FuY29kZSYweDdGKT09MHgzOCl8fCAvKiB0aGUgcmlnaHQgY3RybCBrZXkgKi8KLQkJCSgoc2NhbmNvZGUmMHg3Rik9PTB4MUQpfHwgLyogdGhlIHJpZ2h0IGFsdCBrZXkgKi8KLQkJCSgoc2NhbmNvZGUmMHg3Rik9PTB4MzUpfHwJLyogdGhlIHJpZ2h0ICcvJyBrZXkgKi8KLQkJCSgoc2NhbmNvZGUmMHg3Rik9PTB4MUMpfHwgIC8qIHRoZSByaWdodCBlbnRlciBrZXkgKi8KLQkJCSgoc2NhbmNvZGUpPT0weDQ4KXx8IC8qIGFycm93IHVwICovCi0JCQkoKHNjYW5jb2RlKT09MHg1MCl8fCAvKiBhcnJvdyBkb3duICovCi0JCQkoKHNjYW5jb2RlKT09MHg0Yil8fCAvKiBhcnJvdyBsZWZ0ICovCi0JCQkoKHNjYW5jb2RlKT09MHg0ZCkpKSAgLyogYXJyb3cgcmlnaHQgKi8KKwlpZiAoZTAgPT0gMSkgeworCQllMCA9IDA7CQkvKiBkZWxldGUgZmxhZyAqLworCQlpZiAoISgoKHNjYW5jb2RlICYgMHg3RikgPT0gMHgzOCkgfHwJLyogdGhlIHJpZ2h0IGN0cmwga2V5ICovCisJCSAgICAgICgoc2NhbmNvZGUgJiAweDdGKSA9PSAweDFEKSB8fAkvKiB0aGUgcmlnaHQgYWx0IGtleSAqLworCQkgICAgICAoKHNjYW5jb2RlICYgMHg3RikgPT0gMHgzNSkgfHwJLyogdGhlIHJpZ2h0ICcvJyBrZXkgKi8KKwkJICAgICAgKChzY2FuY29kZSAmIDB4N0YpID09IDB4MUMpIHx8CS8qIHRoZSByaWdodCBlbnRlciBrZXkgKi8KKwkJICAgICAgKChzY2FuY29kZSkgPT0gMHg0OCkgfHwJLyogYXJyb3cgdXAgKi8KKwkJICAgICAgKChzY2FuY29kZSkgPT0gMHg1MCkgfHwJLyogYXJyb3cgZG93biAqLworCQkgICAgICAoKHNjYW5jb2RlKSA9PSAweDRiKSB8fAkvKiBhcnJvdyBsZWZ0ICovCisJCSAgICAgICgoc2NhbmNvZGUpID09IDB4NGQpKSkKKwkJCS8qIGFycm93IHJpZ2h0ICovCiAJCQkvKiB3ZSBzd2FsbG93IHVua25vd24gZTAgY29kZXMgKi8KIAkJCXJldHVybjsKIAl9CiAJLyogc3BlY2lhbCBjbnRybCBrZXlzICovCi0Jc3dpdGNoKHNjYW5jb2RlKQotCXsKKwlzd2l0Y2ggKHNjYW5jb2RlKSB7CiAJY2FzZSAweDQ4OgotCSAgICBrYmRfcHV0X3F1ZXVlKDI3KTsKLQkgICAga2JkX3B1dF9xdWV1ZSg5MSk7Ci0JICAgIGtiZF9wdXRfcXVldWUoJ0EnKTsKLQkgICAgcmV0dXJuOworCQlrYmRfcHV0X3F1ZXVlICgyNyk7CisJCWtiZF9wdXRfcXVldWUgKDkxKTsKKwkJa2JkX3B1dF9xdWV1ZSAoJ0EnKTsKKwkJcmV0dXJuOwogCWNhc2UgMHg1MDoKLQkgICAga2JkX3B1dF9xdWV1ZSgyNyk7Ci0JICAgIGtiZF9wdXRfcXVldWUoOTEpOwotCSAgICBrYmRfcHV0X3F1ZXVlKCdCJyk7Ci0JICAgIHJldHVybjsKKwkJa2JkX3B1dF9xdWV1ZSAoMjcpOworCQlrYmRfcHV0X3F1ZXVlICg5MSk7CisJCWtiZF9wdXRfcXVldWUgKCdCJyk7CisJCXJldHVybjsKIAljYXNlIDB4NGI6Ci0JICAgIGtiZF9wdXRfcXVldWUoMjcpOwotCSAgICBrYmRfcHV0X3F1ZXVlKDkxKTsKLQkgICAga2JkX3B1dF9xdWV1ZSgnRCcpOwotCSAgICByZXR1cm47CisJCWtiZF9wdXRfcXVldWUgKDI3KTsKKwkJa2JkX3B1dF9xdWV1ZSAoOTEpOworCQlrYmRfcHV0X3F1ZXVlICgnRCcpOworCQlyZXR1cm47CiAJY2FzZSAweDREOgotCSAgICBrYmRfcHV0X3F1ZXVlKDI3KTsKLQkgICAga2JkX3B1dF9xdWV1ZSg5MSk7Ci0JICAgIGtiZF9wdXRfcXVldWUoJ0MnKTsKLQkgICAgcmV0dXJuOwotCWNhc2UgMHg1ODogLyogRjEyIGtleSAqLwotCSAgICBpZiAoY3RybCA9PSAxKQotCSAgICB7Ci0JCWV4dGVybiBpbnQgY29uc29sZV9jaGFuZ2VkOwotCQlzZXRlbnYoInN0ZGluIiwgREVWTkFNRSk7Ci0JCXNldGVudigic3Rkb3V0IiwgInZnYSIpOwotCQljb25zb2xlX2NoYW5nZWQgPSAxOwotCSAgICB9Ci0JICAgIHJldHVybjsKKwkJa2JkX3B1dF9xdWV1ZSAoMjcpOworCQlrYmRfcHV0X3F1ZXVlICg5MSk7CisJCWtiZF9wdXRfcXVldWUgKCdDJyk7CisJCXJldHVybjsKKwljYXNlIDB4NTg6CQkvKiBGMTIga2V5ICovCisJCWlmIChjdHJsID09IDEpIHsKKwkJCWV4dGVybiBpbnQgY29uc29sZV9jaGFuZ2VkOworCisJCQlzZXRlbnYgKCJzdGRpbiIsIERFVk5BTUUpOworCQkJc2V0ZW52ICgic3Rkb3V0IiwgInZnYSIpOworCQkJY29uc29sZV9jaGFuZ2VkID0gMTsKKwkJfQorCQlyZXR1cm47CiAJY2FzZSAweDJBOgotCQljYXNlIDB4MzY6IC8qIHNoaWZ0IHByZXNzZWQgKi8KLQkJCXNoaWZ0PTE7Ci0JCQlyZXR1cm47IC8qIGRvIG5vdGhpbmcgZWxzZSAqLwotCQljYXNlIDB4QUE6Ci0JCWNhc2UgMHhCNjogLyogc2hpZnQgcmVsZWFzZWQgKi8KLQkJCXNoaWZ0PTA7Ci0JCQlyZXR1cm47IC8qIGRvIG5vdGhpbmcgZWxzZSAqLwotCQljYXNlIDB4Mzg6IC8qIGFsdCBwcmVzc2VkICovCi0JCQlhbHQ9MTsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHhCODogLyogYWx0IHJlbGVhc2VkICovCi0JCQlhbHQ9MDsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHgxZDogLyogY3RybCBwcmVzc2VkICovCi0JCQljdHJsPTE7Ci0JCQlyZXR1cm47IC8qIGRvIG5vdGhpbmcgZWxzZSAqLwotCQljYXNlIDB4OWQ6IC8qIGN0cmwgcmVsZWFzZWQgKi8KLQkJCWN0cmw9MDsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHg0NjogLyogc2Nyb2xsb2NrIHByZXNzZWQgKi8KLQkJCXNjcm9sbF9sb2NrPX5zY3JvbGxfbG9jazsKLQkJCWtiZF9zZXRfbGVkcygpOwotCQkJcmV0dXJuOyAvKiBkbyBub3RoaW5nIGVsc2UgKi8KLQkJY2FzZSAweDNBOiAvKiBjYXBzbG9jayBwcmVzc2VkICovCi0JCQljYXBzX2xvY2s9fmNhcHNfbG9jazsKLQkJCWtiZF9zZXRfbGVkcygpOwotCQkJcmV0dXJuOwotCQljYXNlIDB4NDU6IC8qIG51bWxvY2sgcHJlc3NlZCAqLwotCQkJbnVtX2xvY2s9fm51bV9sb2NrOwotCQkJa2JkX3NldF9sZWRzKCk7Ci0JCQlyZXR1cm47Ci0JCWNhc2UgMHhDNjogLyogc2Nyb2xsIGxvY2sgcmVsZWFzZWQgKi8KLQkJY2FzZSAweEM1OiAvKiBudW0gbG9jayByZWxlYXNlZCAqLwotCQljYXNlIDB4QkE6IC8qIGNhcHMgbG9jayByZWxlYXNlZCAqLwotCQkJcmV0dXJuOyAvKiBqdXN0IHN3YWxsb3cgKi8KKwljYXNlIDB4MzY6CQkvKiBzaGlmdCBwcmVzc2VkICovCisJCXNoaWZ0ID0gMTsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweEFBOgorCWNhc2UgMHhCNjoJCS8qIHNoaWZ0IHJlbGVhc2VkICovCisJCXNoaWZ0ID0gMDsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweDM4OgkJLyogYWx0IHByZXNzZWQgKi8KKwkJYWx0ID0gMTsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweEI4OgkJLyogYWx0IHJlbGVhc2VkICovCisJCWFsdCA9IDA7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHgxZDoJCS8qIGN0cmwgcHJlc3NlZCAqLworCQljdHJsID0gMTsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweDlkOgkJLyogY3RybCByZWxlYXNlZCAqLworCQljdHJsID0gMDsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweDQ2OgkJLyogc2Nyb2xsb2NrIHByZXNzZWQgKi8KKwkJc2Nyb2xsX2xvY2sgPSB+c2Nyb2xsX2xvY2s7CisJCWtiZF9zZXRfbGVkcyAoKTsKKwkJcmV0dXJuOwkJLyogZG8gbm90aGluZyBlbHNlICovCisJY2FzZSAweDNBOgkJLyogY2Fwc2xvY2sgcHJlc3NlZCAqLworCQljYXBzX2xvY2sgPSB+Y2Fwc19sb2NrOworCQlrYmRfc2V0X2xlZHMgKCk7CisJCXJldHVybjsKKwljYXNlIDB4NDU6CQkvKiBudW1sb2NrIHByZXNzZWQgKi8KKwkJbnVtX2xvY2sgPSB+bnVtX2xvY2s7CisJCWtiZF9zZXRfbGVkcyAoKTsKKwkJcmV0dXJuOworCWNhc2UgMHhDNjoJCS8qIHNjcm9sbCBsb2NrIHJlbGVhc2VkICovCisJY2FzZSAweEM1OgkJLyogbnVtIGxvY2sgcmVsZWFzZWQgKi8KKwljYXNlIDB4QkE6CQkvKiBjYXBzIGxvY2sgcmVsZWFzZWQgKi8KKwkJcmV0dXJuOwkJLyoganVzdCBzd2FsbG93ICovCiAJfQotCWlmKChzY2FuY29kZSYweDgwKT09MHg4MCkgLyoga2V5IHJlbGVhc2VkICovCisJaWYgKChzY2FuY29kZSAmIDB4ODApID09IDB4ODApCS8qIGtleSByZWxlYXNlZCAqLwogCQlyZXR1cm47CiAJLyogbm93LCBkZWNpZGUgd2hpY2ggdGFibGUgd2UgbmVlZCAqLwotCWlmKHNjYW5jb2RlID4gKHNpemVvZihrYmRfcGxhaW5feGxhdGUpL3NpemVvZihrYmRfcGxhaW5feGxhdGVbMF0pKSkgeyAvKiBzY2FuY29kZSBub3QgaW4gbGlzdCAqLwotCQlQUklOVEYoInVua293biBzY2FuY29kZSAlWFxuIixzY2FuY29kZSk7Ci0JCXJldHVybjsgLyogc3dhbGxvdyBpdCAqLworCWlmIChzY2FuY29kZSA+IChzaXplb2YgKGtiZF9wbGFpbl94bGF0ZSkgLyBzaXplb2YgKGtiZF9wbGFpbl94bGF0ZVswXSkpKSB7CS8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCisJCVBSSU5URiAoInVua293biBzY2FuY29kZSAlWFxuIiwgc2NhbmNvZGUpOworCQlyZXR1cm47CQkvKiBzd2FsbG93IGl0ICovCiAJfQogCS8qIHNldHVwIHBsYWluIGNvZGUgZmlyc3QgKi8KLQlrZXljb2RlPWtiZF9wbGFpbl94bGF0ZVtzY2FuY29kZV07Ci0JaWYoY2Fwc19sb2NrPT0xKSB7IC8qIGNhcHNfbG9jayBpcyBwcmVzc2VkLCBvdmVyd3JpdGUgcGxhaW4gY29kZSAqLwotCQlpZihzY2FuY29kZSA+IChzaXplb2Yoa2JkX3NoaWZ0X3hsYXRlKS9zaXplb2Yoa2JkX3NoaWZ0X3hsYXRlWzBdKSkpIHsgLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KLQkJCVBSSU5URigidW5rb3duIGNhcHMtbG9ja2VkIHNjYW5jb2RlICVYXG4iLHNjYW5jb2RlKTsKLQkJCXJldHVybjsgLyogc3dhbGxvdyBpdCAqLworCWtleWNvZGUgPSBrYmRfcGxhaW5feGxhdGVbc2NhbmNvZGVdOworCWlmIChjYXBzX2xvY2sgPT0gMSkgewkvKiBjYXBzX2xvY2sgaXMgcHJlc3NlZCwgb3ZlcndyaXRlIHBsYWluIGNvZGUgKi8KKwkJaWYgKHNjYW5jb2RlID4gKHNpemVvZiAoa2JkX3NoaWZ0X3hsYXRlKSAvIHNpemVvZiAoa2JkX3NoaWZ0X3hsYXRlWzBdKSkpIHsJLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KKwkJCVBSSU5URiAoInVua293biBjYXBzLWxvY2tlZCBzY2FuY29kZSAlWFxuIiwgc2NhbmNvZGUpOworCQkJcmV0dXJuOwkvKiBzd2FsbG93IGl0ICovCiAJCX0KLQkJa2V5Y29kZT1rYmRfc2hpZnRfeGxhdGVbc2NhbmNvZGVdOwotCQlpZihrZXljb2RlPCdBJykgeyAvKiB3ZSBvbmx5IHdhbnQgdGhlIGFscGhhcyBjYXBpdGFsICovCi0JCQlrZXljb2RlPWtiZF9wbGFpbl94bGF0ZVtzY2FuY29kZV07CisJCWtleWNvZGUgPSBrYmRfc2hpZnRfeGxhdGVbc2NhbmNvZGVdOworCQlpZiAoa2V5Y29kZSA8ICdBJykgewkvKiB3ZSBvbmx5IHdhbnQgdGhlIGFscGhhcyBjYXBpdGFsICovCisJCQlrZXljb2RlID0ga2JkX3BsYWluX3hsYXRlW3NjYW5jb2RlXTsKIAkJfQogCX0KLQlpZihzaGlmdD09MSkgeyAvKiBzaGlmdCBvdmVyd3JpdGVzIGNhcHNfbG9jayAqLwotCQlpZihzY2FuY29kZSA+IChzaXplb2Yoa2JkX3NoaWZ0X3hsYXRlKS9zaXplb2Yoa2JkX3NoaWZ0X3hsYXRlWzBdKSkpIHsgLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KLQkJCVBSSU5URigidW5rb3duIHNoaWZ0ZWQgc2NhbmNvZGUgJVhcbiIsc2NhbmNvZGUpOwotCQkJcmV0dXJuOyAvKiBzd2FsbG93IGl0ICovCisJaWYgKHNoaWZ0ID09IDEpIHsJLyogc2hpZnQgb3ZlcndyaXRlcyBjYXBzX2xvY2sgKi8KKwkJaWYgKHNjYW5jb2RlID4gKHNpemVvZiAoa2JkX3NoaWZ0X3hsYXRlKSAvIHNpemVvZiAoa2JkX3NoaWZ0X3hsYXRlWzBdKSkpIHsJLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KKwkJCVBSSU5URiAoInVua293biBzaGlmdGVkIHNjYW5jb2RlICVYXG4iLCBzY2FuY29kZSk7CisJCQlyZXR1cm47CS8qIHN3YWxsb3cgaXQgKi8KIAkJfQotCQlrZXljb2RlPWtiZF9zaGlmdF94bGF0ZVtzY2FuY29kZV07CisJCWtleWNvZGUgPSBrYmRfc2hpZnRfeGxhdGVbc2NhbmNvZGVdOwogCX0KLQlpZihjdHJsPT0xKSB7IC8qIGN0cmwgb3ZlcndyaXRlcyBjYXBzX2xvY2sgYW5kIHNoaWZ0ICovCi0JCWlmKHNjYW5jb2RlID4gKHNpemVvZihrYmRfY3RybF94bGF0ZSkvc2l6ZW9mKGtiZF9jdHJsX3hsYXRlWzBdKSkpIHsgLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KLQkJCVBSSU5URigidW5rb3duIGN0cmwgc2NhbmNvZGUgJVhcbiIsc2NhbmNvZGUpOwotCQkJcmV0dXJuOyAvKiBzd2FsbG93IGl0ICovCisJaWYgKGN0cmwgPT0gMSkgewkvKiBjdHJsIG92ZXJ3cml0ZXMgY2Fwc19sb2NrIGFuZCBzaGlmdCAqLworCQlpZiAoc2NhbmNvZGUgPiAoc2l6ZW9mIChrYmRfY3RybF94bGF0ZSkgLyBzaXplb2YgKGtiZF9jdHJsX3hsYXRlWzBdKSkpIHsJLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KKwkJCVBSSU5URiAoInVua293biBjdHJsIHNjYW5jb2RlICVYXG4iLCBzY2FuY29kZSk7CisJCQlyZXR1cm47CS8qIHN3YWxsb3cgaXQgKi8KIAkJfQotCQlrZXljb2RlPWtiZF9jdHJsX3hsYXRlW3NjYW5jb2RlXTsKKwkJa2V5Y29kZSA9IGtiZF9jdHJsX3hsYXRlW3NjYW5jb2RlXTsKIAl9CiAJLyogY2hlY2sgaWYgdmFsaWQga2V5Y29kZSAqLwotCWlmKGtleWNvZGU9PTB4ZmYpIHsKLQkJUFJJTlRGKCJ1bmtvd24gc2NhbmNvZGUgJVhcbiIsc2NhbmNvZGUpOwotCQlyZXR1cm47IC8qIHN3YWxsb3cgdW5rbm93biBjb2RlcyAqLworCWlmIChrZXljb2RlID09IDB4ZmYpIHsKKwkJUFJJTlRGICgidW5rb3duIHNjYW5jb2RlICVYXG4iLCBzY2FuY29kZSk7CisJCXJldHVybjsJCS8qIHN3YWxsb3cgdW5rbm93biBjb2RlcyAqLwogCX0KIAotCWtiZF9wdXRfcXVldWUoa2V5Y29kZSk7Ci0JUFJJTlRGKCIleFxuIixrZXljb2RlKTsKKwlrYmRfcHV0X3F1ZXVlIChrZXljb2RlKTsKKwlQUklOVEYgKCIleFxuIiwga2V5Y29kZSk7CiB9CiAKIC8qCkBAIC00NjMsMzQgKzQ2MiwzMSBAQAogICogYXBwcm9wcmlhdGUgYWN0aW9uLgogICoKICAqLwotdW5zaWduZWQgY2hhciBoYW5kbGVfa2JkX2V2ZW50KHZvaWQpCit1bnNpZ25lZCBjaGFyIGhhbmRsZV9rYmRfZXZlbnQgKHZvaWQpCiB7Ci0JdW5zaWduZWQgY2hhciBzdGF0dXMgPSBrYmRfcmVhZF9zdGF0dXMoKTsKKwl1bnNpZ25lZCBjaGFyIHN0YXR1cyA9IGtiZF9yZWFkX3N0YXR1cyAoKTsKIAl1bnNpZ25lZCBpbnQgd29yayA9IDEwMDAwOwogCiAJd2hpbGUgKCgtLXdvcmsgPiAwKSAmJiAoc3RhdHVzICYgS0JEX1NUQVRfT0JGKSkgewogCQl1bnNpZ25lZCBjaGFyIHNjYW5jb2RlOwogCi0JCXNjYW5jb2RlID0ga2JkX3JlYWRfaW5wdXQoKTsKKwkJc2NhbmNvZGUgPSBrYmRfcmVhZF9pbnB1dCAoKTsKIAogCQkvKiBFcnJvciBieXRlcyBtdXN0IGJlIGlnbm9yZWQgdG8gbWFrZSB0aGUKIAkJICAgU3luYXB0aWNzIHRvdWNocGFkcyBjb21wYXEgdXNlIHdvcmsgKi8KIAkJLyogSWdub3JlIGVycm9yIGJ5dGVzICovCi0JCWlmICghKHN0YXR1cyAmIChLQkRfU1RBVF9HVE8gfCBLQkRfU1RBVF9QRVJSKSkpCi0JCXsKLQkJCWlmIChzdGF0dXMgJiBLQkRfU1RBVF9NT1VTRV9PQkYpCi0JCQkJOyAvKiBub3Qgc3VwcG9ydGVkOiBoYW5kbGVfbW91c2VfZXZlbnQoc2NhbmNvZGUpOyAqLworCQlpZiAoIShzdGF0dXMgJiAoS0JEX1NUQVRfR1RPIHwgS0JEX1NUQVRfUEVSUikpKSB7CisJCQlpZiAoc3RhdHVzICYgS0JEX1NUQVRfTU9VU0VfT0JGKTsJLyogbm90IHN1cHBvcnRlZDogaGFuZGxlX21vdXNlX2V2ZW50KHNjYW5jb2RlKTsgKi8KIAkJCWVsc2UKLQkJCQloYW5kbGVfa2V5Ym9hcmRfZXZlbnQoc2NhbmNvZGUpOworCQkJCWhhbmRsZV9rZXlib2FyZF9ldmVudCAoc2NhbmNvZGUpOwogCQl9Ci0JCXN0YXR1cyA9IGtiZF9yZWFkX3N0YXR1cygpOworCQlzdGF0dXMgPSBrYmRfcmVhZF9zdGF0dXMgKCk7CiAJfQogCWlmICghd29yaykKLQkJUFJJTlRGKCJwY19rZXliOiBjb250cm9sbGVyIGphbW1lZCAoMHglMDJYKS5cbiIsIHN0YXR1cyk7CisJCVBSSU5URiAoInBjX2tleWI6IGNvbnRyb2xsZXIgamFtbWVkICgweCUwMlgpLlxuIiwgc3RhdHVzKTsKIAlyZXR1cm4gc3RhdHVzOwogfQogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIExvd2xldmVsIFBhcnQgb2Yga2V5Ym9hcmQgc2VjdGlvbgogICovCkBAIC01MjksOTAgKzUyNSw5MSBAQAogCXJldHVybiB2YWw7CiB9CiAKLWludCBrYmRfd2FpdF9mb3JfaW5wdXQodm9pZCkKK2ludCBrYmRfd2FpdF9mb3JfaW5wdXQgKHZvaWQpCiB7CiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0OwogCWludCB2YWw7CiAKIAl0aW1lb3V0ID0gS0JEX1RJTUVPVVQ7Ci0JdmFsPWtiZF9yZWFkX2RhdGEoKTsKLQl3aGlsZSh2YWwgPCAwKQotCXsKLQkJaWYodGltZW91dC0tPT0wKQorCXZhbCA9IGtiZF9yZWFkX2RhdGEgKCk7CisJd2hpbGUgKHZhbCA8IDApIHsKKwkJaWYgKHRpbWVvdXQtLSA9PSAwKQogCQkJcmV0dXJuIC0xOwotCQl1ZGVsYXkoMTAwMCk7Ci0JCXZhbD1rYmRfcmVhZF9kYXRhKCk7CisJCXVkZWxheSAoMTAwMCk7CisJCXZhbCA9IGtiZF9yZWFkX2RhdGEgKCk7CiAJfQogCXJldHVybiB2YWw7CiB9CiAKIAotaW50IGtiX3dhaXQodm9pZCkKK2ludCBrYl93YWl0ICh2b2lkKQogewogCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IEtCQ19USU1FT1VUICogMTA7CiAKIAlkbyB7Ci0JCXVuc2lnbmVkIGNoYXIgc3RhdHVzID0gaGFuZGxlX2tiZF9ldmVudCgpOworCQl1bnNpZ25lZCBjaGFyIHN0YXR1cyA9IGhhbmRsZV9rYmRfZXZlbnQgKCk7CisKIAkJaWYgKCEoc3RhdHVzICYgS0JEX1NUQVRfSUJGKSkKLQkJCXJldHVybiAwOyAvKiBvayAqLwotCQl1ZGVsYXkoMTAwMCk7CisJCQlyZXR1cm4gMDsJLyogb2sgKi8KKwkJdWRlbGF5ICgxMDAwKTsKIAkJdGltZW91dC0tOwogCX0gd2hpbGUgKHRpbWVvdXQpOwogCXJldHVybiAxOwogfQogCi12b2lkIGtiZF93cml0ZV9jb21tYW5kX3coaW50IGRhdGEpCit2b2lkIGtiZF93cml0ZV9jb21tYW5kX3cgKGludCBkYXRhKQogewotCWlmKGtiX3dhaXQoKSkKLQkJUFJJTlRGKCJ0aW1lb3V0IGluIGtiZF93cml0ZV9jb21tYW5kX3dcbiIpOwotCWtiZF93cml0ZV9jb21tYW5kKGRhdGEpOworCWlmIChrYl93YWl0ICgpKQorCQlQUklOVEYgKCJ0aW1lb3V0IGluIGtiZF93cml0ZV9jb21tYW5kX3dcbiIpOworCWtiZF93cml0ZV9jb21tYW5kIChkYXRhKTsKIH0KIAotdm9pZCBrYmRfd3JpdGVfb3V0cHV0X3coaW50IGRhdGEpCit2b2lkIGtiZF93cml0ZV9vdXRwdXRfdyAoaW50IGRhdGEpCiB7Ci0JaWYoa2Jfd2FpdCgpKQotCQlQUklOVEYoInRpbWVvdXQgaW4ga2JkX3dyaXRlX291dHB1dF93XG4iKTsKLQlrYmRfd3JpdGVfb3V0cHV0KGRhdGEpOworCWlmIChrYl93YWl0ICgpKQorCQlQUklOVEYgKCJ0aW1lb3V0IGluIGtiZF93cml0ZV9vdXRwdXRfd1xuIik7CisJa2JkX3dyaXRlX291dHB1dCAoZGF0YSk7CiB9CiAKLXZvaWQga2JkX3NlbmRfZGF0YSh1bnNpZ25lZCBjaGFyIGRhdGEpCit2b2lkIGtiZF9zZW5kX2RhdGEgKHVuc2lnbmVkIGNoYXIgZGF0YSkKIHsKIAl1bnNpZ25lZCBjaGFyIHN0YXR1czsKLQlpODI1OV9tYXNrX2lycShLQkRfSU5URVJSVVBUKTsgLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8KLQlrYmRfd3JpdGVfb3V0cHV0X3coZGF0YSk7Ci0Jc3RhdHVzID0ga2JkX3dhaXRfZm9yX2lucHV0KCk7CisKKwlpODI1OV9tYXNrX2lycSAoS0JEX0lOVEVSUlVQVCk7CS8qIGRpc2FibGUgaW50ZXJydXB0ICovCisJa2JkX3dyaXRlX291dHB1dF93IChkYXRhKTsKKwlzdGF0dXMgPSBrYmRfd2FpdF9mb3JfaW5wdXQgKCk7CiAJaWYgKHN0YXR1cyA9PSBLQkRfUkVQTFlfQUNLKQotCQlpODI1OV91bm1hc2tfaXJxKEtCRF9JTlRFUlJVUFQpOyAvKiBlbmFibGUgaW50ZXJydXB0ICovCisJCWk4MjU5X3VubWFza19pcnEgKEtCRF9JTlRFUlJVUFQpOwkvKiBlbmFibGUgaW50ZXJydXB0ICovCiB9CiAKIAotY2hhciAqIGtiZF9pbml0aWFsaXplKHZvaWQpCitjaGFyICprYmRfaW5pdGlhbGl6ZSAodm9pZCkKIHsKIAlpbnQgc3RhdHVzOwogCi0JaW5fcG9pbnRlciA9IDA7IC8qIGRlbGV0ZSBpbiBCdWZmZXIgKi8KKwlpbl9wb2ludGVyID0gMDsJCS8qIGRlbGV0ZSBpbiBCdWZmZXIgKi8KIAlvdXRfcG9pbnRlciA9IDA7CiAJLyoKIAkgKiBUZXN0IHRoZSBrZXlib2FyZCBpbnRlcmZhY2UuCiAJICogVGhpcyBzZWVtcyB0byBiZSB0aGUgb25seSB3YXkgdG8gZ2V0IGl0IGdvaW5nLgogCSAqIElmIHRoZSB0ZXN0IGlzIHN1Y2Nlc3NmdWwgYSB4NTUgaXMgcGxhY2VkIGluIHRoZSBpbnB1dCBidWZmZXIuCiAJICovCi0Ja2JkX3dyaXRlX2NvbW1hbmRfdyhLQkRfQ0NNRF9TRUxGX1RFU1QpOwotCWlmIChrYmRfd2FpdF9mb3JfaW5wdXQoKSAhPSAweDU1KQorCWtiZF93cml0ZV9jb21tYW5kX3cgKEtCRF9DQ01EX1NFTEZfVEVTVCk7CisJaWYgKGtiZF93YWl0X2Zvcl9pbnB1dCAoKSAhPSAweDU1KQogCQlyZXR1cm4gIktiZDogICBmYWlsZWQgc2VsZiB0ZXN0IjsKIAkvKgogCSAqIFBlcmZvcm0gYSBrZXlib2FyZCBpbnRlcmZhY2UgdGVzdC4gIFRoaXMgY2F1c2VzIHRoZSBjb250cm9sbGVyCiAJICogdG8gdGVzdCB0aGUga2V5Ym9hcmQgY2xvY2sgYW5kIGRhdGEgbGluZXMuICBUaGUgcmVzdWx0cyBvZiB0aGUKIAkgKiB0ZXN0IGFyZSBwbGFjZWQgaW4gdGhlIGlucHV0IGJ1ZmZlci4KIAkgKi8KLQlrYmRfd3JpdGVfY29tbWFuZF93KEtCRF9DQ01EX0tCRF9URVNUKTsKLQlpZiAoa2JkX3dhaXRfZm9yX2lucHV0KCkgIT0gMHgwMCkKKwlrYmRfd3JpdGVfY29tbWFuZF93IChLQkRfQ0NNRF9LQkRfVEVTVCk7CisJaWYgKGtiZF93YWl0X2Zvcl9pbnB1dCAoKSAhPSAweDAwKQogCQlyZXR1cm4gIktiZDogICBpbnRlcmZhY2UgZmFpbGVkIHNlbGYgdGVzdCI7CiAJLyoKIAkgKiBFbmFibGUgdGhlIGtleWJvYXJkIGJ5IGFsbG93aW5nIHRoZSBrZXlib2FyZCBjbG9jayB0byBydW4uCiAJICovCi0Ja2JkX3dyaXRlX2NvbW1hbmRfdyhLQkRfQ0NNRF9LQkRfRU5BQkxFKTsKLQlzdGF0dXMgPSBrYmRfd2FpdF9mb3JfaW5wdXQoKTsKKwlrYmRfd3JpdGVfY29tbWFuZF93IChLQkRfQ0NNRF9LQkRfRU5BQkxFKTsKKwlzdGF0dXMgPSBrYmRfd2FpdF9mb3JfaW5wdXQgKCk7CiAJLyoKIAkgKiBSZXNldCBrZXlib2FyZC4gSWYgdGhlIHJlYWQgdGltZXMgb3V0CiAJICogdGhlbiB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IG5vIGtleWJvYXJkIGlzCkBAIC02MjIsMTcgKzYxOSwxNiBAQAogCSAqIFNldCB1cCB0byB0cnkgYWdhaW4gaWYgdGhlIGtleWJvYXJkIGFza3MgZm9yIFJFU0VORC4KIAkgKi8KIAlkbyB7Ci0JCWtiZF93cml0ZV9vdXRwdXRfdyhLQkRfQ01EX1JFU0VUKTsKLQkJc3RhdHVzID0ga2JkX3dhaXRfZm9yX2lucHV0KCk7CisJCWtiZF93cml0ZV9vdXRwdXRfdyAoS0JEX0NNRF9SRVNFVCk7CisJCXN0YXR1cyA9IGtiZF93YWl0X2Zvcl9pbnB1dCAoKTsKIAkJaWYgKHN0YXR1cyA9PSBLQkRfUkVQTFlfQUNLKQogCQkJYnJlYWs7Ci0JCWlmIChzdGF0dXMgIT0gS0JEX1JFUExZX1JFU0VORCkKLQkJewotCQkJUFJJTlRGKCJzdGF0dXM6ICVYXG4iLHN0YXR1cyk7CisJCWlmIChzdGF0dXMgIT0gS0JEX1JFUExZX1JFU0VORCkgeworCQkJUFJJTlRGICgic3RhdHVzOiAlWFxuIiwgc3RhdHVzKTsKIAkJCXJldHVybiAiS2JkOiAgIHJlc2V0IGZhaWxlZCwgbm8gQUNLIjsKIAkJfQogCX0gd2hpbGUgKDEpOwotCWlmIChrYmRfd2FpdF9mb3JfaW5wdXQoKSAhPSBLQkRfUkVQTFlfUE9SKQorCWlmIChrYmRfd2FpdF9mb3JfaW5wdXQgKCkgIT0gS0JEX1JFUExZX1BPUikKIAkJcmV0dXJuICJLYmQ6ICAgcmVzZXQgZmFpbGVkLCBubyBQT1IiOwogCiAJLyoKQEAgLTY0Miw0NCArNjM4LDQzIEBACiAJICogU2V0IHVwIHRvIHRyeSBhZ2FpbiBpZiB0aGUga2V5Ym9hcmQgYXNrcyBmb3IgUkVTRU5ELgogCSAqLwogCWRvIHsKLQkJa2JkX3dyaXRlX291dHB1dF93KEtCRF9DTURfRElTQUJMRSk7Ci0JCXN0YXR1cyA9IGtiZF93YWl0X2Zvcl9pbnB1dCgpOworCQlrYmRfd3JpdGVfb3V0cHV0X3cgKEtCRF9DTURfRElTQUJMRSk7CisJCXN0YXR1cyA9IGtiZF93YWl0X2Zvcl9pbnB1dCAoKTsKIAkJaWYgKHN0YXR1cyA9PSBLQkRfUkVQTFlfQUNLKQogCQkJYnJlYWs7CiAJCWlmIChzdGF0dXMgIT0gS0JEX1JFUExZX1JFU0VORCkKIAkJCXJldHVybiAiS2JkOiAgIGRpc2FibGUga2V5Ym9hcmQ6IG5vIEFDSyI7CiAJfSB3aGlsZSAoMSk7CiAKLQlrYmRfd3JpdGVfY29tbWFuZF93KEtCRF9DQ01EX1dSSVRFX01PREUpOwotCWtiZF93cml0ZV9vdXRwdXRfdyhLQkRfTU9ERV9LQkRfSU5UCi0JCQkgICAgICB8IEtCRF9NT0RFX1NZUwotCQkJICAgICAgfCBLQkRfTU9ERV9ESVNBQkxFX01PVVNFCi0JCQkgICAgICB8IEtCRF9NT0RFX0tDQyk7CisJa2JkX3dyaXRlX2NvbW1hbmRfdyAoS0JEX0NDTURfV1JJVEVfTU9ERSk7CisJa2JkX3dyaXRlX291dHB1dF93IChLQkRfTU9ERV9LQkRfSU5UCisJCQkgICAgfCBLQkRfTU9ERV9TWVMKKwkJCSAgICB8IEtCRF9NT0RFX0RJU0FCTEVfTU9VU0UgfCBLQkRfTU9ERV9LQ0MpOwogCiAJLyogQU1DQyBwb3dlcnBjIHBvcnRhYmxlcyBuZWVkIHRoaXMgdG8gdXNlIHNjYW4tY29kZSBzZXQgMSAtLSBDb3J0ICovCi0Ja2JkX3dyaXRlX2NvbW1hbmRfdyhLQkRfQ0NNRF9SRUFEX01PREUpOwotCWlmICghKGtiZF93YWl0X2Zvcl9pbnB1dCgpICYgS0JEX01PREVfS0NDKSkgeworCWtiZF93cml0ZV9jb21tYW5kX3cgKEtCRF9DQ01EX1JFQURfTU9ERSk7CisJaWYgKCEoa2JkX3dhaXRfZm9yX2lucHV0ICgpICYgS0JEX01PREVfS0NDKSkgewogCQkvKgogCQkgKiBJZiB0aGUgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnNpb24sCiAJCSAqIFNldCB0aGUga2V5Ym9hcmQgdG8gc2Nhbi1jb2RlIHNldCAxLgogCQkgKi8KLQkJa2JkX3dyaXRlX291dHB1dF93KDB4RjApOwotCQlrYmRfd2FpdF9mb3JfaW5wdXQoKTsKLQkJa2JkX3dyaXRlX291dHB1dF93KDB4MDEpOwotCQlrYmRfd2FpdF9mb3JfaW5wdXQoKTsKKwkJa2JkX3dyaXRlX291dHB1dF93ICgweEYwKTsKKwkJa2JkX3dhaXRfZm9yX2lucHV0ICgpOworCQlrYmRfd3JpdGVfb3V0cHV0X3cgKDB4MDEpOworCQlrYmRfd2FpdF9mb3JfaW5wdXQgKCk7CiAJfQotCWtiZF93cml0ZV9vdXRwdXRfdyhLQkRfQ01EX0VOQUJMRSk7Ci0JaWYgKGtiZF93YWl0X2Zvcl9pbnB1dCgpICE9IEtCRF9SRVBMWV9BQ0spCisJa2JkX3dyaXRlX291dHB1dF93IChLQkRfQ01EX0VOQUJMRSk7CisJaWYgKGtiZF93YWl0X2Zvcl9pbnB1dCAoKSAhPSBLQkRfUkVQTFlfQUNLKQogCQlyZXR1cm4gIktiZDogICBlbmFibGUga2V5Ym9hcmQ6IG5vIEFDSyI7CiAKIAkvKgogCSAqIEZpbmFsbHksIHNldCB0aGUgdHlwZW1hdGljIHJhdGUgdG8gbWF4aW11bS4KIAkgKi8KLQlrYmRfd3JpdGVfb3V0cHV0X3coS0JEX0NNRF9TRVRfUkFURSk7Ci0JaWYgKGtiZF93YWl0X2Zvcl9pbnB1dCgpICE9IEtCRF9SRVBMWV9BQ0spCisJa2JkX3dyaXRlX291dHB1dF93IChLQkRfQ01EX1NFVF9SQVRFKTsKKwlpZiAoa2JkX3dhaXRfZm9yX2lucHV0ICgpICE9IEtCRF9SRVBMWV9BQ0spCiAJCXJldHVybiAiS2JkOiAgIFNldCByYXRlOiBubyBBQ0siOwotCWtiZF93cml0ZV9vdXRwdXRfdygweDAwKTsKLQlpZiAoa2JkX3dhaXRfZm9yX2lucHV0KCkgIT0gS0JEX1JFUExZX0FDSykKKwlrYmRfd3JpdGVfb3V0cHV0X3cgKDB4MDApOworCWlmIChrYmRfd2FpdF9mb3JfaW5wdXQgKCkgIT0gS0JEX1JFUExZX0FDSykKIAkJcmV0dXJuICJLYmQ6ICAgU2V0IHJhdGU6IG5vIEFDSyI7CiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3N0YXJ0LnR4dCBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0Uvc3RhcnQudHh0CmluZGV4IGU0MjE0NjIuLjI1MjZlZDIgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0Uvc3RhcnQudHh0CisrKyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0Uvc3RhcnQudHh0CkBAIC0zOSwxMSArMzksMTEgQEAKIAogCURJTTBfVElNX0NUTF8wID0gMHg3MzdkNzM3ZCAgICAgICAgICAgICAoMHhjOSkKIAkJICAgICAgLyogRFJBTSB0aW1pbmcgY29udHJvbCBmb3IgZGltbTAgJiBkaW1tMTsgc2V0IHdhaXQgb25lIGNsb2NrCSovCi0JCSAgICAgIC8qIGN5Y2xlIGZvciBuZXh0IGRhdGEgYWNjZXNzIAkJCQkJKi8KKwkJICAgICAgLyogY3ljbGUgZm9yIG5leHQgZGF0YSBhY2Nlc3MJCQkJCSovCiAKIAlESU0yX1RJTV9DVExfMCA9IDB4NzM3ZDczN2QgICAgICAgICAgICAgKDB4Y2EpCiAJCSAgICAgIC8qIERSQU0gdGltaW5nIGNvbnRyb2wgZm9yIGRpbW0yICYgZGltbTM7IHNldCB3YWl0IG9uZSBjbG9jawkqLwotCQkgICAgICAvKiBjeWNsZSBmb3IgbmV4dCBkYXRhIGFjY2VzcyAJCQkJCSovCisJCSAgICAgIC8qIGN5Y2xlIGZvciBuZXh0IGRhdGEgYWNjZXNzCQkJCQkqLwogCiAJRElNMF9CTkswX0NUTF8wID0gQk5LMF9SQU1fU0laXzEyOE1CICAgICgweDkwKQogCQkgICAgICAvKiBzZXQgZGltbTAgYmFuazAgZm9yIDEyOCBNQgkqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS91LWJvb3QubGRzIGIvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS91LWJvb3QubGRzCmluZGV4IDExYjI4ZDcuLjczODZlYTcgMTAwNjQ0Ci0tLSBhL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvdS1ib290LmxkcworKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3UtYm9vdC5sZHMKQEAgLTQwLDExICs0MCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3VzYl91aGNpLmMgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3VzYl91aGNpLmMKaW5kZXggMTRlODA0My4uNDc5YmVlZCAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS91c2JfdWhjaS5jCisrKyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvdXNiX3VoY2kuYwpAQCAtNTIyLDcgKzUyMiw3IEBACiAJCWxpbms9c3dhcF8zMih0ZF9pbnRbaV0ubGluaykgJiAweGZmZmZmZmYwOyAvKiBuZXh0IGluIGNoYWluICovCiAJCXRkPSh1aGNpX3RkX3QgKilsaW5rOyAvKiBhc3NpZ24gaXQgKi8KIAkJLyogYWxsIGludGVycnVwdCBURHMgYXJlIGZpbmFsbHkgbGlua2VkIHRvIHRoZSB0ZF9pbnRbMF0uCi0gCQkgKiBzbyB3ZSBwcm9jZXNzIGFsbCB1bnRpbCB3ZSBmaW5kIHRoZSB0ZF9pbnRbMF0uCisJCSAqIHNvIHdlIHByb2Nlc3MgYWxsIHVudGlsIHdlIGZpbmQgdGhlIHRkX2ludFswXS4KIAkJICogaWYgaW50MCBjaGFpbiBwb2ludHMgdG8gYSBRSCwgd2UncmUgYWxzbyBkb25lCiAJICAgKi8KIAkJd2hpbGUoKChpPjApICYmIChsaW5rICE9ICh1bnNpZ25lZCBsb25nKSZ0ZF9pbnRbMF0pKSB8fApkaWZmIC0tZ2l0IGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS92aWE2ODYuYyBiL2JvYXJkL01BSS9BbWlnYU9uZUczU0UvdmlhNjg2LmMKaW5kZXggMzYwNmRiOC4uMjQyN2NlNSAxMDA2NDQKLS0tIGEvYm9hcmQvTUFJL0FtaWdhT25lRzNTRS92aWE2ODYuYworKysgYi9ib2FyZC9NQUkvQW1pZ2FPbmVHM1NFL3ZpYTY4Ni5jCkBAIC05Nyw3ICs5Nyw3IEBACiAJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4MCwgMCk7CiAJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldiwgMHg4NSwgMHgwMSk7CiAKLS8qIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUoZGV2LCAweDc3LCAweDAwKTsgKi8KKy8qCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYsIDB4NzcsIDB4MDApOyAqLwogICAgIH0KIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBACiB9CiAKIF9fYXNtICAgICAgICAgKCIgICAgLmdsb2JsIHZpYV9jYWxpYnJhdGVfdGltZV9iYXNlIFxuIgotCSAgICAgICAidmlhX2NhbGlicmF0ZV90aW1lX2Jhc2U6IAkgICBcbiIKKwkgICAgICAgInZpYV9jYWxpYnJhdGVfdGltZV9iYXNlOgkgICBcbiIKIAkgICAgICAgIiAgIGxpcyAgICAgOSwgMHhmZTAwCQkgICBcbiIKIAkgICAgICAgIiAgIGxpICAgICAgMCwgMHgwMAkJICAgXG4iCiAJICAgICAgICIgICBtdHRidSAgIDAJCQkgICBcbiIKQEAgLTI2Miw5ICsyNjIsOSBAQAogLyogICAgIHVuc2lnbmVkIGNoYXIgYyA9IGluX2J5dGUoMHg5Mik7ICovCiAKIC8qICAgICBpZiAoIXN0YXR1cykgKi8KLS8qIAlvdXRfYnl0ZSgweDkyLCBjIHwgMHhDMCk7ICovCisvKglvdXRfYnl0ZSgweDkyLCBjIHwgMHhDMCk7ICovCiAvKiAgICAgZWxzZSAqLwotLyogCW91dF9ieXRlKDB4OTIsIGMgJiB+MHhDMCk7ICovCisvKglvdXRfYnl0ZSgweDkyLCBjICYgfjB4QzApOyAqLwogfQogCiAKZGlmZiAtLWdpdCBhL2JvYXJkL01BSS9tZW51L21lbnUuaCBiL2JvYXJkL01BSS9tZW51L21lbnUuaAppbmRleCA4YWViYjdkLi4yM2Q4OWE3IDEwMDY0NAotLS0gYS9ib2FyZC9NQUkvbWVudS9tZW51LmgKKysrIGIvYm9hcmQvTUFJL21lbnUvbWVudS5oCkBAIC00LDE1ICs0LDE0IEBACiAvKiBBIHNpbmdsZSBtZW51ICovCiB0eXBlZGVmIHZvaWQgKCptZW51X2ZpbmlzaF9jYWxsYmFjaykoc3RydWN0IG1lbnVfcyAqbWVudSk7CiAKLXR5cGVkZWYgc3RydWN0IG1lbnVfcwotewotICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAgICAgLyogTWVudSBuYW1lICovCi0gICAgaW50ICBudW1fb3B0aW9uczsgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2Ygb3B0aW9ucyBpbiB0aGlzIG1lbnUgKi8KLSAgICBpbnQgIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgIC8qIFZhcmlvdXMgZmxhZ3MgLSBzZWUgYmVsb3cgKi8KLSAgICBpbnQgIG9wdGlvbl9hbGlnbjsgICAgICAgICAgICAgIC8qIEFsaWducyBvcHRpb25zIHRvIGEgZmllbGQgd2lkdGggb2YgdGhpcyBtdWNoIGNoYXJhY3RlcnMgaWYgIT0gMCAqLwordHlwZWRlZiBzdHJ1Y3QgbWVudV9zIHsKKwljaGFyICpuYW1lOwkJLyogTWVudSBuYW1lICovCisJaW50IG51bV9vcHRpb25zOwkvKiBOdW1iZXIgb2Ygb3B0aW9ucyBpbiB0aGlzIG1lbnUgKi8KKwlpbnQgZmxhZ3M7CQkvKiBWYXJpb3VzIGZsYWdzIC0gc2VlIGJlbG93ICovCisJaW50IG9wdGlvbl9hbGlnbjsJLyogQWxpZ25zIG9wdGlvbnMgdG8gYSBmaWVsZCB3aWR0aCBvZiB0aGlzIG11Y2ggY2hhcmFjdGVycyBpZiAhPSAwICovCiAKLSAgICBzdHJ1Y3QgbWVudV9vcHRpb25fcyAqKm9wdGlvbnM7IC8qIFBvaW50ZXIgdG8gdGhpcyBtZW51J3Mgb3B0aW9ucyAqLwotICAgIG1lbnVfZmluaXNoX2NhbGxiYWNrIGNhbGxiYWNrOyAgLyogQ2FsbGVkIHdoZW4gdGhlIG1lbnUgY2xvc2VzICovCisJc3RydWN0IG1lbnVfb3B0aW9uX3MgKipvcHRpb25zOwkvKiBQb2ludGVyIHRvIHRoaXMgbWVudSdzIG9wdGlvbnMgKi8KKwltZW51X2ZpbmlzaF9jYWxsYmFjayBjYWxsYmFjazsJLyogQ2FsbGVkIHdoZW4gdGhlIG1lbnUgY2xvc2VzICovCiB9IG1lbnVfdDsKIAogLyoKQEAgLTIzLDEzICsyMiwxMiBAQAogICogc3lzIDogcG9pbnRlciBmb3Igc3lzdGVtLXNwZWNpZmljIGRhdGEsIGluaXQgdG8gTlVMTCBhbmQgZG9uJ3QgdG91Y2gKICAqLwogCi0jZGVmaW5lIE9QVElPTl9QUkVBTUJMRQkJCQlcCi0gICAgaW50IHR5cGU7ICAgICAgICAgICAgICAgICAgICAgCQlcCi0gICAgY2hhciAqbmFtZTsgICAJCQkJXAotICAgIGNoYXIgKmhlbHA7ICAgCQkJCVwKLSAgICBpbnQgaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkICpzeXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQorI2RlZmluZSBPUFRJT05fUFJFQU1CTEUJCVwKKwlpbnQgdHlwZTsJCVwKKwljaGFyICpuYW1lOwkJXAorCWNoYXIgKmhlbHA7CQlcCisJaW50IGlkOwkJCVwKKwl2b2lkICpzeXM7CiAKIC8qCiAgKiBNZW51IG9wdGlvbiB0eXBlcy4KQEAgLTExMCw1OSArMTA4LDQ5IEBACiAKIAogI2RlZmluZSBNRU5VX1NFTEVDVElPTl9UWVBFIDMKLXR5cGVkZWYgc3RydWN0IG1lbnVfc2VsZWN0X29wdGlvbl9zCi17Ci0gICAgY2hhciAqbWFwX2Zyb207ICAgICAgICAgICAgICAgLyogTWFwIHRoaXMgdmFyaWFibGUgY29udGVudHMgLi4uICovCi0gICAgY2hhciAqbWFwX3RvOyAgICAgICAgICAgICAgICAgLyogLi4uIHRvIHRoaXMgbWVudSB0ZXh0IGFuZCB2aWNlIHZlcnNhICovCit0eXBlZGVmIHN0cnVjdCBtZW51X3NlbGVjdF9vcHRpb25fcyB7CisJY2hhciAqbWFwX2Zyb207CQkvKiBNYXAgdGhpcyB2YXJpYWJsZSBjb250ZW50cyAuLi4gKi8KKwljaGFyICptYXBfdG87CQkvKiAuLi4gdG8gdGhpcyBtZW51IHRleHQgYW5kIHZpY2UgdmVyc2EgKi8KIH0gbWVudV9zZWxlY3Rfb3B0aW9uX3Q7CiAKLXR5cGVkZWYgc3RydWN0IG1lbnVfc2VsZWN0X3MKLXsKLSAgICBPUFRJT05fUFJFQU1CTEUKLQotICAgIGludCBudW1fb3B0aW9uczsgICAgICAgICAgICAgLyogTnVtYmVyIG9mIG1hcHBpbmdzICovCi0gICAgbWVudV9zZWxlY3Rfb3B0aW9uX3QgKipvcHRpb25zOwotCQkJCSAvKiBPcHRpb24gbGlzdCBhcnJheSAqLwordHlwZWRlZiBzdHJ1Y3QgbWVudV9zZWxlY3RfcyB7CisJT1BUSU9OX1BSRUFNQkxFIGludCBudW1fb3B0aW9uczsJLyogTnVtYmVyIG9mIG1hcHBpbmdzICovCisJbWVudV9zZWxlY3Rfb3B0aW9uX3QgKipvcHRpb25zOworCS8qIE9wdGlvbiBsaXN0IGFycmF5ICovCiB9IG1lbnVfc2VsZWN0X3Q7CiAKIAogI2RlZmluZSBNRU5VX1JPVVRJTkVfVFlQRSA0Ci10eXBlZGVmIHZvaWQgKCptZW51X3JvdXRpbmVfY2FsbGJhY2spKHN0cnVjdCBtZW51X3JvdXRpbmVfcyAqKTsKK3R5cGVkZWYgdm9pZCAoKm1lbnVfcm91dGluZV9jYWxsYmFjaykgKHN0cnVjdCBtZW51X3JvdXRpbmVfcyAqKTsKIAotdHlwZWRlZiBzdHJ1Y3QgbWVudV9yb3V0aW5lX3MKLXsKLSAgICBPUFRJT05fUFJFQU1CTEUKLSAgICBtZW51X3JvdXRpbmVfY2FsbGJhY2sgY2FsbGJhY2s7Ci0JCQkJIC8qIHJvdXRpbmUgdG8gYmUgY2FsbGVkICovCi0gICAgdm9pZCAqdXNlcl9kYXRhOyAgICAgICAgICAgICAvKiBVc2VyIGRhdGEsIGRvbid0IGNhcmUgZm9yIHN5c3RlbSAqLwordHlwZWRlZiBzdHJ1Y3QgbWVudV9yb3V0aW5lX3MgeworCU9QVElPTl9QUkVBTUJMRSBtZW51X3JvdXRpbmVfY2FsbGJhY2sgY2FsbGJhY2s7CisJLyogcm91dGluZSB0byBiZSBjYWxsZWQgKi8KKwl2b2lkICp1c2VyX2RhdGE7CS8qIFVzZXIgZGF0YSwgZG9uJ3QgY2FyZSBmb3Igc3lzdGVtICovCiB9IG1lbnVfcm91dGluZV90OwogCiAKICNkZWZpbmUgTUVOVV9DVVNUT01fVFlQRSA1Ci10eXBlZGVmIHZvaWQgKCptZW51X2N1c3RvbV9kcmF3KShzdHJ1Y3QgbWVudV9jdXN0b21fcyAqKTsKLXR5cGVkZWYgdm9pZCAoKm1lbnVfY3VzdG9tX2tleSkoc3RydWN0IG1lbnVfY3VzdG9tX3MgKiwgaW50KTsKK3R5cGVkZWYgdm9pZCAoKm1lbnVfY3VzdG9tX2RyYXcpIChzdHJ1Y3QgbWVudV9jdXN0b21fcyAqKTsKK3R5cGVkZWYgdm9pZCAoKm1lbnVfY3VzdG9tX2tleSkgKHN0cnVjdCBtZW51X2N1c3RvbV9zICosIGludCk7CiAKLXR5cGVkZWYgc3RydWN0IG1lbnVfY3VzdG9tX3MKLXsKLSAgICBPUFRJT05fUFJFQU1CTEUKLSAgICBtZW51X2N1c3RvbV9kcmF3IGRyYXdmdW5jOwotICAgIG1lbnVfY3VzdG9tX2tleSAga2V5ZnVuYzsKLSAgICB2b2lkICp1c2VyX2RhdGE7Cit0eXBlZGVmIHN0cnVjdCBtZW51X2N1c3RvbV9zIHsKKwlPUFRJT05fUFJFQU1CTEUgbWVudV9jdXN0b21fZHJhdyBkcmF3ZnVuYzsKKwltZW51X2N1c3RvbV9rZXkga2V5ZnVuYzsKKwl2b2lkICp1c2VyX2RhdGE7CiB9IG1lbnVfY3VzdG9tX3Q7CiAKIC8qCiAgKiBUaGUgbWVudSBvcHRpb24gc3VwZXJzdHJ1Y3R1cmUKICAqLwotdHlwZWRlZiBzdHJ1Y3QgbWVudV9vcHRpb25fcwotewotICAgIHVuaW9uCi0gICAgewotCW1lbnVfc3VibWVudV90IG1fc3ViX21lbnU7Ci0JbWVudV9ib29sZWFuX3QgbV9ib29sZWFuOwotCW1lbnVfdGV4dF90ICAgIG1fdGV4dDsKLQltZW51X3NlbGVjdF90ICBtX3NlbGVjdDsKLQltZW51X3JvdXRpbmVfdCBtX3JvdXRpbmU7Ci0gICAgfTsKK3R5cGVkZWYgc3RydWN0IG1lbnVfb3B0aW9uX3MgeworCXVuaW9uIHsKKwkJbWVudV9zdWJtZW51X3QgbV9zdWJfbWVudTsKKwkJbWVudV9ib29sZWFuX3QgbV9ib29sZWFuOworCQltZW51X3RleHRfdCBtX3RleHQ7CisJCW1lbnVfc2VsZWN0X3QgbV9zZWxlY3Q7CisJCW1lbnVfcm91dGluZV90IG1fcm91dGluZTsKKwl9OwogfSBtZW51X29wdGlvbl90OwogCiAvKiBJbml0IHRoZSBtZW51IHN5c3RlbS4gUmV0dXJucyA8MCBvbiBlcnJvciAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvTWFydmVsbC9jb21tb24vYm9vdHNlcS50eHQgYi9ib2FyZC9NYXJ2ZWxsL2NvbW1vbi9ib290c2VxLnR4dAppbmRleCAzOTFkNDlhLi4yOTBhZWQ5IDEwMDY0NAotLS0gYS9ib2FyZC9NYXJ2ZWxsL2NvbW1vbi9ib290c2VxLnR4dAorKysgYi9ib2FyZC9NYXJ2ZWxsL2NvbW1vbi9ib290c2VxLnR4dApAQCAtNTYsNyArNTYsNyBAQAogICAgIHNldHVwIHN0YWNrIHBvaW50ZXIgKHIxKQogICAgIHNldHVwIEdPVAogICAgIGNhbGwgY3B1X2luaXRfZgotICAgIAlkZWJ1ZyBsZWRzCisJZGVidWcgbGVkcwogICAgIGJvYXJkX2luaXRfZjogKGNvbW1vbi9ib2FyZC5jKQogCWJvYXJkX2Vhcmx5X2luaXRfZjoKIAkgICAgcmVtYXAgZ3QgcmVncz8KQEAgLTc0LDcgKzc0LDcgQEAKIAkJZHJhbV9zaXplKCkKIAkJc2V0dXAgUENJIHNsYXZlIG1lbW9yeSBtYXBwaW5ncwogCQlzZXR1cCBTQ1MKLSAgIAlzZXR1cCBtb25pdG9yCisJc2V0dXAgbW9uaXRvcgogCWFsbG9jIGJvYXJkIGluZm8gc3RydWN0CiAJaW5pdCBiZCBzdHJ1Y3QKIAlyZWxvY2F0ZV9jb2RlOiAoY3B1L21wYzd4eHgvc3RhcnQuUykKZGlmZiAtLWdpdCBhL2JvYXJkL01hcnZlbGwvY29tbW9uL2ZsYXNoLmMgYi9ib2FyZC9NYXJ2ZWxsL2NvbW1vbi9mbGFzaC5jCmluZGV4IGE4YWRkODUuLjM2MDMzNzIgMTAwNjQ0Ci0tLSBhL2JvYXJkL01hcnZlbGwvY29tbW9uL2ZsYXNoLmMKKysrIGIvYm9hcmQvTWFydmVsbC9jb21tb24vZmxhc2guYwpAQCAtMjMsNyArMjMsNyBAQAogCiAvKgogICogZmxhc2guYyAtIGZsYXNoIHN1cHBvcnQgZm9yIHRoZSA1MTJrLCA4Yml0IGJvb3QgZmxhc2gKLSAJYW5kIHRoZSA4TUIgMzJiaXQgZXh0cmEgZmxhc2ggb24gdGhlIERCNjQzNjAKKwlhbmQgdGhlIDhNQiAzMmJpdCBleHRyYSBmbGFzaCBvbiB0aGUgREI2NDM2MAogICogICAgICAgICAgIG1vc3Qgb2YgdGhpcyBmaWxlIHdhcyBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgVS1Cb290CiAgKiAgICAgICAgICAgZmxhc2ggZHJpdmVycy4KICAqCmRpZmYgLS1naXQgYS9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXBzYy5jIGIvYm9hcmQvTWFydmVsbC9kYjY0MzYwL21wc2MuYwppbmRleCBkOGFjZDMxLi45MjNkOTU1IDEwMDY0NAotLS0gYS9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXBzYy5jCisrKyBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC9tcHNjLmMKQEAgLTQyNSw3ICs0MjUsNyBAQAogCQkJIChNVjY0MzYwX1NETUFfV0lOX0FDQ0VTU19GVUxMIDw8CiAJCQkgIChNVjY0MzYwX0NVTklUX0JBU0VfQUREUl9XSU5fMF9CSVQgKiAyKSkpOwogCi0vKiBTZXR1cCBNUFNDIGludGVybmFsIGFkZHJlc3Mgc3BhY2UgYmFzZSBhZGRyZXNzIAkqLworLyogU2V0dXAgTVBTQyBpbnRlcm5hbCBhZGRyZXNzIHNwYWNlIGJhc2UgYWRkcmVzcwkqLwogCUdUX1JFR19XUklURSAoQ1VOSVRfSU5URVJOQUxfU1BBQ0VfQkFTRV9BRERSX1JFRywgQ0ZHX0dUX1JFR1MpOwogCiAvKiBubyBoaWdoIGFkZHJlc3MgcmVtYXAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvTWFydmVsbC9kYjY0MzYwL21wc2MuaCBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC9tcHNjLmgKaW5kZXggZjk1ZjhjMC4uNGI1MzdlYSAxMDA2NDQKLS0tIGEvYm9hcmQvTWFydmVsbC9kYjY0MzYwL21wc2MuaAorKysgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXBzYy5oCkBAIC02Nyw5ICs2Nyw5IEBACiAjZGVmaW5lIFRYX1NUT1AgICAgIDB4MDAwMTAwMDAKICNkZWZpbmUgUlhfRU5BQkxFICAgMHgwMDAwMDA4MAogCi0jZGVmaW5lIFNETUFfUlhfQUJPUlQgCQkgICgxIDw8IDE1KQotI2RlZmluZSBTRE1BX1RYX0FCT1JUIAkJICAoMSA8PCAzMSkKLSNkZWZpbmUgTVBTQ19UWF9BQk9SVCAJCSAgKDEgPDwgNykKKyNkZWZpbmUgU0RNQV9SWF9BQk9SVAkJICAoMSA8PCAxNSkKKyNkZWZpbmUgU0RNQV9UWF9BQk9SVAkJICAoMSA8PCAzMSkKKyNkZWZpbmUgTVBTQ19UWF9BQk9SVAkJICAoMSA8PCA3KQogI2RlZmluZSBNUFNDX1JYX0FCT1JUICAgICAgICAgICAgICgxIDw8IDIzKQogI2RlZmluZSBNUFNDX0VOVEVSX0hVTlQgICAgICAgICAgICgxIDw8IDMxKQogCmRpZmYgLS1naXQgYS9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXZfZXRoLmMgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXZfZXRoLmMKaW5kZXggZTVhODdhZC4uZGZjMGJmNyAxMDA2NDQKLS0tIGEvYm9hcmQvTWFydmVsbC9kYjY0MzYwL212X2V0aC5jCisrKyBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC9tdl9ldGguYwpAQCAtMTM5MSw3ICsxMzkxLDcgQEAKICogICAgICAgcG9ydF9waHlfYWRkcikuCiAqCiAqIElOUFVUOgotKiAgICAgICBFVEhfUE9SVF9JTkZPIAkqcF9ldGhfcG9ydF9jdHJsICAgICAgIEV0aGVybmV0IHBvcnQgY29udHJvbCBzdHJ1Y3QKKyogICAgICAgRVRIX1BPUlRfSU5GTwkqcF9ldGhfcG9ydF9jdHJsICAgICAgIEV0aGVybmV0IHBvcnQgY29udHJvbCBzdHJ1Y3QKICoKICogT1VUUFVUOgogKiAgICAgICBTZWUgZGVzY3JpcHRpb24uCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogKiAgICAgICBldGhlcl9pbml0X3J4X2Rlc2NfcmluZyBmb3IgUnggcXVldWVzKS4KICoKICogSU5QVVQ6Ci0qICAgICAgIEVUSF9QT1JUX0lORk8gCSpwX2V0aF9wb3J0X2N0cmwgICAgICAgRXRoZXJuZXQgcG9ydCBjb250cm9sIHN0cnVjdAorKiAgICAgICBFVEhfUE9SVF9JTkZPCSpwX2V0aF9wb3J0X2N0cmwgICAgICAgRXRoZXJuZXQgcG9ydCBjb250cm9sIHN0cnVjdAogKgogKiBPVVRQVVQ6CiAqICAgICAgIEV0aGVybmV0IHBvcnQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQuCkBAIC0xNjQxLDcgKzE2NDEsNyBAQAogKiBJTlBVVDoKICoJRVRIX1BPUlQgZXRoX3BvcnRfbnVtICAgICBQb3J0IG51bWJlci4KICoJY2hhciAqICAgICAgICBwX2FkZHIJCUFkZHJlc3MgdG8gYmUgc2V0Ci0qCUVUSF9RVUVVRSAJICBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgorKglFVEhfUVVFVUUJICBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgogKgogKiBPVVRQVVQ6CiAqCVNldCBNQUMgYWRkcmVzcyBsb3cgYW5kIGhpZ2ggcmVnaXN0ZXJzLiBhbHNvIGNhbGxzIGV0aF9wb3J0X3VjX2FkZHIoKQpAQCAtMTY3OSwxMCArMTY3OSwxMCBAQAogKglwYXJhbWV0ZXJzLgogKgogKiBJTlBVVDoKLSoJRVRIX1BPUlQgCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgorKglFVEhfUE9SVAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KICoJdW5zaWduZWQgY2hhciB1Y19uaWJibGUJCVVuaWNhc3QgTUFDIEFkZHJlc3MgbGFzdCBuaWJibGUuCi0qCUVUSF9RVUVVRSAJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgotKglpbnQgCQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgorKglFVEhfUVVFVUUJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgorKglpbnQJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCiAqCiAqIE9VVFBVVDoKICoJVGhpcyBmdW5jdGlvbiBhZGQvcmVtb3ZlcyBNQUMgYWRkcmVzc2VzIGZyb20gdGhlIHBvcnQgdW5pY2FzdCBhZGRyZXNzCkBAIC0xNzYxLDEwICsxNzYxLDEwIEBACiAqCSAgIEluIHRoaXMgY2FzZSwgdGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIENSQy04Yml0IHZhbHVlIGFuZCBjYWxscwogKgkgICBldGhfcG9ydF9vbWNfYWRkcigpIHJvdXRpbmUgdG8gc2V0IHRoZSBPdGhlciBNdWx0aWNhc3QgVGFibGUuCiAqIElOUFVUOgotKglFVEhfUE9SVCAJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCi0qCXVuc2lnbmVkIGNoYXIgCSpwX2FkZHIJCVVuaWNhc3QgTUFDIEFkZHJlc3MuCi0qCUVUSF9RVUVVRSAJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgotKglpbnQgCQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgorKglFVEhfUE9SVAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KKyoJdW5zaWduZWQgY2hhcgkqcF9hZGRyCQlVbmljYXN0IE1BQyBBZGRyZXNzLgorKglFVEhfUVVFVUUJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgorKglpbnQJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCiAqCiAqIE9VVFBVVDoKICoJU2VlIGRlc2NyaXB0aW9uLgpAQCAtMTg5NSwxMCArMTg5NSwxMCBAQAogKglhY2NvcmRpbmcgdG8gdGhlIGFyZ3VtZW50IGdpdmVuLgogKgogKiBJTlBVVDoKLSoJRVRIX1BPUlQgCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgotKgl1bnNpZ25lZCBjaGFyIAltY19ieXRlCQlNdWx0aWNhc3QgYWRkciBsYXN0IGJ5dGUgKE1BQyBEQVs3OjBdIGJpdHMpLgotKglFVEhfUVVFVUUgCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KLSoJaW50IAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KKyoJRVRIX1BPUlQJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCisqCXVuc2lnbmVkIGNoYXIJbWNfYnl0ZQkJTXVsdGljYXN0IGFkZHIgbGFzdCBieXRlIChNQUMgREFbNzowXSBiaXRzKS4KKyoJRVRIX1FVRVVFCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KKyoJaW50CQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgogKgogKiBPVVRQVVQ6CiAqCVNlZSBkZXNjcmlwdGlvbi4KQEAgLTE5NTksMTAgKzE5NTksMTAgQEAKICoJQ1JDLTggYXJndW1lbnQgZ2l2ZW4uCiAqCiAqIElOUFVUOgotKglFVEhfUE9SVCAJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCi0qCXVuc2lnbmVkIGNoYXIgCSAgY3JjOAkJQSBDUkMtOGJpdCAoUG9seW5vbWlhbDogeF44K3heMit4XjErMSkuCi0qCUVUSF9RVUVVRSAJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgotKglpbnQgCQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgorKglFVEhfUE9SVAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KKyoJdW5zaWduZWQgY2hhcgkgIGNyYzgJCUEgQ1JDLThiaXQgKFBvbHlub21pYWw6IHheOCt4XjIreF4xKzEpLgorKglFVEhfUVVFVUUJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgorKglpbnQJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCiAqCiAqIE9VVFBVVDoKICoJU2VlIGRlc2NyaXB0aW9uLgpAQCAtMjIwMyw3ICsyMjAzLDcgQEAKICAqIGV0aF9wb3J0X3Jlc2V0IC0gUmVzZXQgRXRoZXJuZXQgcG9ydAogICoKICAqIERFU0NSSVBUSU9OOgotICogCVRoaXMgcm91dGluZSByZXNldHMgdGhlIGNoaXAgYnkgYWJvcnRpbmcgYW55IFNETUEgZW5naW5lIGFjdGl2aXR5IGFuZAorICoJVGhpcyByb3V0aW5lIHJlc2V0cyB0aGUgY2hpcCBieSBhYm9ydGluZyBhbnkgU0RNQSBlbmdpbmUgYWN0aXZpdHkgYW5kCiAgKiAgICAgIGNsZWFyaW5nIHRoZSBNSUIgY291bnRlcnMuIFRoZSBSZWNlaXZlciBhbmQgdGhlIFRyYW5zbWl0IHVuaXQgYXJlIGluCiAgKiAgICAgIGlkbGUgc3RhdGUgYWZ0ZXIgdGhpcyBjb21tYW5kIGlzIHBlcmZvcm1lZCBhbmQgdGhlIHBvcnQgaXMgZGlzYWJsZWQuCiAgKgpAQCAtMjU1Niw5ICsyNTU2LDkgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KLSAqICAgICAgaW50IAkJCXJ4X2Rlc2NfbnVtICAgICAgIE51bWJlciBvZiBSeCBkZXNjcmlwdG9ycwotICogICAgICBpbnQgCQkJcnhfYnVmZl9zaXplICAgICAgU2l6ZSBvZiBSeCBidWZmZXIKKyAqCUVUSF9RVUVVRQlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KKyAqICAgICAgaW50CQkJcnhfZGVzY19udW0gICAgICAgTnVtYmVyIG9mIFJ4IGRlc2NyaXB0b3JzCisgKiAgICAgIGludAkJCXJ4X2J1ZmZfc2l6ZSAgICAgIFNpemUgb2YgUnggYnVmZmVyCiAgKiAgICAgIHVuc2lnbmVkIGludCAgICByeF9kZXNjX2Jhc2VfYWRkciAgUnggZGVzY3JpcHRvcnMgbWVtb3J5IGFyZWEgYmFzZSBhZGRyLgogICogICAgICB1bnNpZ25lZCBpbnQgICAgcnhfYnVmZl9iYXNlX2FkZHIgIFJ4IGJ1ZmZlciBtZW1vcnkgYXJlYSBiYXNlIGFkZHIuCiAgKgpAQCAtMjY1MCw5ICsyNjUwLDkgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KLSAqICAgICAgaW50IAkJCXR4X2Rlc2NfbnVtICAgICAgIE51bWJlciBvZiBUeCBkZXNjcmlwdG9ycwotICogICAgICBpbnQgCQkJdHhfYnVmZl9zaXplICAgICAgU2l6ZSBvZiBUeCBidWZmZXIKKyAqCUVUSF9RVUVVRQl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KKyAqICAgICAgaW50CQkJdHhfZGVzY19udW0gICAgICAgTnVtYmVyIG9mIFR4IGRlc2NyaXB0b3JzCisgKiAgICAgIGludAkJCXR4X2J1ZmZfc2l6ZSAgICAgIFNpemUgb2YgVHggYnVmZmVyCiAgKiAgICAgIHVuc2lnbmVkIGludCAgICB0eF9kZXNjX2Jhc2VfYWRkciAgVHggZGVzY3JpcHRvcnMgbWVtb3J5IGFyZWEgYmFzZSBhZGRyLgogICogICAgICB1bnNpZ25lZCBpbnQgICAgdHhfYnVmZl9iYXNlX2FkZHIgIFR4IGJ1ZmZlciBtZW1vcnkgYXJlYSBiYXNlIGFkZHIuCiAgKgpAQCAtMjc0NSw3ICsyNzQ1LDcgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KKyAqCUVUSF9RVUVVRQl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KICAqCVBLVF9JTkZPICAgICAgICAqcF9wa3RfaW5mbyAgICAgICBVc2VyIHBhY2tldCBidWZmZXIuCiAgKgogICogT1VUUFVUOgpAQCAtMjg2MSw3ICsyODYxLDcgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KKyAqCUVUSF9RVUVVRQl0eF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBUeCBxdWV1ZS4KICAqCVBLVF9JTkZPICAgICAgICAqcF9wa3RfaW5mbyAgICAgICBVc2VyIHBhY2tldCBidWZmZXIuCiAgKgogICogT1VUUFVUOgpAQCAtMjkzMCw3ICsyOTMwLDcgQEAKICAqIGV0aF9wb3J0X3JlY2VpdmUgLSBHZXQgcmVjZWl2ZWQgaW5mb3JtYXRpb24gZnJvbSBSeCByaW5nLgogICoKICAqIERFU0NSSVBUSU9OOgotICogCVRoaXMgcm91dGluZSByZXR1cm5zIHRoZSByZWNlaXZlZCBkYXRhIHRvIHRoZSBjYWxsZXIuIFRoZXJlIGlzIG5vCisgKglUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgcmVjZWl2ZWQgZGF0YSB0byB0aGUgY2FsbGVyLiBUaGVyZSBpcyBubwogICoJZGF0YSBjb3B5aW5nIGR1cmluZyByb3V0aW5lIG9wZXJhdGlvbi4gQWxsIGluZm9ybWF0aW9uIGlzIHJldHVybmVkCiAgKgl1c2luZyBwb2ludGVyIHRvIHBhY2tldCBpbmZvcm1hdGlvbiBzdHJ1Y3QgcGFzc2VkIGZyb20gdGhlIGNhbGxlci4KICAqICAgICAgSWYgdGhlIHJvdXRpbmUgZXhoYXVzdHMJUnggcmluZyByZXNvdXJjZXMgdGhlbiB0aGUgcmVzb3VyY2UgZXJyb3IgZmxhZwpAQCAtMjkzOCw3ICsyOTM4LDcgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KKyAqCUVUSF9RVUVVRQlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KICAqCVBLVF9JTkZPICAgICAgICAqcF9wa3RfaW5mbyAgICAgICBVc2VyIHBhY2tldCBidWZmZXIuCiAgKgogICogT1VUUFVUOgpAQCAtMjk4MCw3ICsyOTgwLDcgQEAKIAogCS8qIE5vdGhpbmcgdG8gcmVjZWl2ZS4uLiAqLwogCWlmIChjb21tYW5kX3N0YXR1cyAmIChFVEhfQlVGRkVSX09XTkVEX0JZX0RNQSkpIHsKLS8qIAlEUChwcmludGYoIlJ4OiBjb21tYW5kX3N0YXR1czogJTA4eFxuIiwgY29tbWFuZF9zdGF0dXMpKTsgKi8KKy8qCURQKHByaW50ZigiUng6IGNvbW1hbmRfc3RhdHVzOiAlMDh4XG4iLCBjb21tYW5kX3N0YXR1cykpOyAqLwogCQlEX0NBQ0hFX0ZMVVNIX0xJTkUgKCh1bnNpZ25lZCBpbnQpIHBfcnhfY3Vycl9kZXNjLCAwKTsKIC8qCURQKHByaW50ZigiXG5FVEhfRU5EX09GX0pPQiAuLi5cbiIpKTsqLwogCQlyZXR1cm4gRVRIX0VORF9PRl9KT0I7CkBAIC0zMDE5LDcgKzMwMTksNyBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgorICoJRVRIX1FVRVVFCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgogICogICAgICBQS1RfSU5GTyAgICAgICAgKnBfcGt0X2luZm8gICAgICAgSW5mb3JtYXRpb24gb24gdGhlIHJldHVybmVkIGJ1ZmZlci4KICAqCiAgKiBPVVRQVVQ6CmRpZmYgLS1naXQgYS9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvdS1ib290LmxkcyBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC91LWJvb3QubGRzCmluZGV4IDI1ZTE2ZGUuLjFhOTU3NTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL01hcnZlbGwvZGI2NDM2MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC91LWJvb3QubGRzCkBAIC0zNywxMSArMzcsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvTWFydmVsbC9kYjY0NDYwL21wc2MuYyBiL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tcHNjLmMKaW5kZXggYjc4M2FmZi4uMzU5YjgzMSAxMDA2NDQKLS0tIGEvYm9hcmQvTWFydmVsbC9kYjY0NDYwL21wc2MuYworKysgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvbXBzYy5jCkBAIC00MjUsNyArNDI1LDcgQEAKIAkJCSAoTVY2NDQ2MF9TRE1BX1dJTl9BQ0NFU1NfRlVMTCA8PAogCQkJICAoTVY2NDQ2MF9DVU5JVF9CQVNFX0FERFJfV0lOXzBfQklUICogMikpKTsKIAotLyogU2V0dXAgTVBTQyBpbnRlcm5hbCBhZGRyZXNzIHNwYWNlIGJhc2UgYWRkcmVzcyAJKi8KKy8qIFNldHVwIE1QU0MgaW50ZXJuYWwgYWRkcmVzcyBzcGFjZSBiYXNlIGFkZHJlc3MJKi8KIAlHVF9SRUdfV1JJVEUgKENVTklUX0lOVEVSTkFMX1NQQUNFX0JBU0VfQUREUl9SRUcsIENGR19HVF9SRUdTKTsKIAogLyogbm8gaGlnaCBhZGRyZXNzIHJlbWFwKi8KZGlmZiAtLWdpdCBhL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tcHNjLmggYi9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvbXBzYy5oCmluZGV4IDNjYzBjMGYuLmI4NDYyY2IgMTAwNjQ0Ci0tLSBhL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tcHNjLmgKKysrIGIvYm9hcmQvTWFydmVsbC9kYjY0NDYwL21wc2MuaApAQCAtNjcsOSArNjcsOSBAQAogI2RlZmluZSBUWF9TVE9QICAgICAweDAwMDEwMDAwCiAjZGVmaW5lIFJYX0VOQUJMRSAgIDB4MDAwMDAwODAKIAotI2RlZmluZSBTRE1BX1JYX0FCT1JUIAkJICAoMSA8PCAxNSkKLSNkZWZpbmUgU0RNQV9UWF9BQk9SVCAJCSAgKDEgPDwgMzEpCi0jZGVmaW5lIE1QU0NfVFhfQUJPUlQgCQkgICgxIDw8IDcpCisjZGVmaW5lIFNETUFfUlhfQUJPUlQJCSAgKDEgPDwgMTUpCisjZGVmaW5lIFNETUFfVFhfQUJPUlQJCSAgKDEgPDwgMzEpCisjZGVmaW5lIE1QU0NfVFhfQUJPUlQJCSAgKDEgPDwgNykKICNkZWZpbmUgTVBTQ19SWF9BQk9SVCAgICAgICAgICAgICAoMSA8PCAyMykKICNkZWZpbmUgTVBTQ19FTlRFUl9IVU5UICAgICAgICAgICAoMSA8PCAzMSkKIApkaWZmIC0tZ2l0IGEvYm9hcmQvTWFydmVsbC9kYjY0NDYwL212X2V0aC5jIGIvYm9hcmQvTWFydmVsbC9kYjY0NDYwL212X2V0aC5jCmluZGV4IGIyYzc4MzUuLjA0NTgxNjQgMTAwNjQ0Ci0tLSBhL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tdl9ldGguYworKysgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvbXZfZXRoLmMKQEAgLTEzOTAsNyArMTM5MCw3IEBACiAqICAgICAgIHBvcnRfcGh5X2FkZHIpLgogKgogKiBJTlBVVDoKLSogICAgICAgRVRIX1BPUlRfSU5GTyAJKnBfZXRoX3BvcnRfY3RybCAgICAgICBFdGhlcm5ldCBwb3J0IGNvbnRyb2wgc3RydWN0CisqICAgICAgIEVUSF9QT1JUX0lORk8JKnBfZXRoX3BvcnRfY3RybCAgICAgICBFdGhlcm5ldCBwb3J0IGNvbnRyb2wgc3RydWN0CiAqCiAqIE9VVFBVVDoKICogICAgICAgU2VlIGRlc2NyaXB0aW9uLgpAQCAtMTU1MCw3ICsxNTUwLDcgQEAKICogICAgICAgZXRoZXJfaW5pdF9yeF9kZXNjX3JpbmcgZm9yIFJ4IHF1ZXVlcykuCiAqCiAqIElOUFVUOgotKiAgICAgICBFVEhfUE9SVF9JTkZPIAkqcF9ldGhfcG9ydF9jdHJsICAgICAgIEV0aGVybmV0IHBvcnQgY29udHJvbCBzdHJ1Y3QKKyogICAgICAgRVRIX1BPUlRfSU5GTwkqcF9ldGhfcG9ydF9jdHJsICAgICAgIEV0aGVybmV0IHBvcnQgY29udHJvbCBzdHJ1Y3QKICoKICogT1VUUFVUOgogKiAgICAgICBFdGhlcm5ldCBwb3J0IGlzIHJlYWR5IHRvIHJlY2VpdmUgYW5kIHRyYW5zbWl0LgpAQCAtMTY0MCw3ICsxNjQwLDcgQEAKICogSU5QVVQ6CiAqCUVUSF9QT1JUIGV0aF9wb3J0X251bSAgICAgUG9ydCBudW1iZXIuCiAqCWNoYXIgKiAgICAgICAgcF9hZGRyCQlBZGRyZXNzIHRvIGJlIHNldAotKglFVEhfUVVFVUUgCSAgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KKyoJRVRIX1FVRVVFCSAgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KICoKICogT1VUUFVUOgogKglTZXQgTUFDIGFkZHJlc3MgbG93IGFuZCBoaWdoIHJlZ2lzdGVycy4gYWxzbyBjYWxscyBldGhfcG9ydF91Y19hZGRyKCkKQEAgLTE2NzgsMTAgKzE2NzgsMTAgQEAKICoJcGFyYW1ldGVycy4KICoKICogSU5QVVQ6Ci0qCUVUSF9QT1JUIAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KKyoJRVRIX1BPUlQJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCiAqCXVuc2lnbmVkIGNoYXIgdWNfbmliYmxlCQlVbmljYXN0IE1BQyBBZGRyZXNzIGxhc3QgbmliYmxlLgotKglFVEhfUVVFVUUgCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KLSoJaW50IAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KKyoJRVRIX1FVRVVFCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KKyoJaW50CQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgogKgogKiBPVVRQVVQ6CiAqCVRoaXMgZnVuY3Rpb24gYWRkL3JlbW92ZXMgTUFDIGFkZHJlc3NlcyBmcm9tIHRoZSBwb3J0IHVuaWNhc3QgYWRkcmVzcwpAQCAtMTc2MCwxMCArMTc2MCwxMCBAQAogKgkgICBJbiB0aGlzIGNhc2UsIHRoZSBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBDUkMtOGJpdCB2YWx1ZSBhbmQgY2FsbHMKICoJICAgZXRoX3BvcnRfb21jX2FkZHIoKSByb3V0aW5lIHRvIHNldCB0aGUgT3RoZXIgTXVsdGljYXN0IFRhYmxlLgogKiBJTlBVVDoKLSoJRVRIX1BPUlQgCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgotKgl1bnNpZ25lZCBjaGFyIAkqcF9hZGRyCQlVbmljYXN0IE1BQyBBZGRyZXNzLgotKglFVEhfUVVFVUUgCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KLSoJaW50IAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KKyoJRVRIX1BPUlQJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCisqCXVuc2lnbmVkIGNoYXIJKnBfYWRkcgkJVW5pY2FzdCBNQUMgQWRkcmVzcy4KKyoJRVRIX1FVRVVFCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KKyoJaW50CQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgogKgogKiBPVVRQVVQ6CiAqCVNlZSBkZXNjcmlwdGlvbi4KQEAgLTE4OTQsMTAgKzE4OTQsMTAgQEAKICoJYWNjb3JkaW5nIHRvIHRoZSBhcmd1bWVudCBnaXZlbi4KICoKICogSU5QVVQ6Ci0qCUVUSF9QT1JUIAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KLSoJdW5zaWduZWQgY2hhciAJbWNfYnl0ZQkJTXVsdGljYXN0IGFkZHIgbGFzdCBieXRlIChNQUMgREFbNzowXSBiaXRzKS4KLSoJRVRIX1FVRVVFIAkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCi0qCWludCAJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCisqCUVUSF9QT1JUCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgorKgl1bnNpZ25lZCBjaGFyCW1jX2J5dGUJCU11bHRpY2FzdCBhZGRyIGxhc3QgYnl0ZSAoTUFDIERBWzc6MF0gYml0cykuCisqCUVUSF9RVUVVRQkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCisqCWludAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KICoKICogT1VUUFVUOgogKglTZWUgZGVzY3JpcHRpb24uCkBAIC0xOTU4LDEwICsxOTU4LDEwIEBACiAqCUNSQy04IGFyZ3VtZW50IGdpdmVuLgogKgogKiBJTlBVVDoKLSoJRVRIX1BPUlQgCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgotKgl1bnNpZ25lZCBjaGFyIAkgIGNyYzgJCUEgQ1JDLThiaXQgKFBvbHlub21pYWw6IHheOCt4XjIreF4xKzEpLgotKglFVEhfUVVFVUUgCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KLSoJaW50IAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KKyoJRVRIX1BPUlQJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCisqCXVuc2lnbmVkIGNoYXIJICBjcmM4CQlBIENSQy04Yml0IChQb2x5bm9taWFsOiB4XjgreF4yK3heMSsxKS4KKyoJRVRIX1FVRVVFCQkgcXVldWUJCVJ4IHF1ZXVlIG51bWJlciBmb3IgdGhpcyBNQUMgYWRkcmVzcy4KKyoJaW50CQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgogKgogKiBPVVRQVVQ6CiAqCVNlZSBkZXNjcmlwdGlvbi4KQEAgLTIyMDIsNyArMjIwMiw3IEBACiAgKiBldGhfcG9ydF9yZXNldCAtIFJlc2V0IEV0aGVybmV0IHBvcnQKICAqCiAgKiBERVNDUklQVElPTjoKLSAqIAlUaGlzIHJvdXRpbmUgcmVzZXRzIHRoZSBjaGlwIGJ5IGFib3J0aW5nIGFueSBTRE1BIGVuZ2luZSBhY3Rpdml0eSBhbmQKKyAqCVRoaXMgcm91dGluZSByZXNldHMgdGhlIGNoaXAgYnkgYWJvcnRpbmcgYW55IFNETUEgZW5naW5lIGFjdGl2aXR5IGFuZAogICogICAgICBjbGVhcmluZyB0aGUgTUlCIGNvdW50ZXJzLiBUaGUgUmVjZWl2ZXIgYW5kIHRoZSBUcmFuc21pdCB1bml0IGFyZSBpbgogICogICAgICBpZGxlIHN0YXRlIGFmdGVyIHRoaXMgY29tbWFuZCBpcyBwZXJmb3JtZWQgYW5kIHRoZSBwb3J0IGlzIGRpc2FibGVkLgogICoKQEAgLTI1NTUsOSArMjU1NSw5IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCi0gKiAgICAgIGludCAJCQlyeF9kZXNjX251bSAgICAgICBOdW1iZXIgb2YgUnggZGVzY3JpcHRvcnMKLSAqICAgICAgaW50IAkJCXJ4X2J1ZmZfc2l6ZSAgICAgIFNpemUgb2YgUnggYnVmZmVyCisgKglFVEhfUVVFVUUJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCisgKiAgICAgIGludAkJCXJ4X2Rlc2NfbnVtICAgICAgIE51bWJlciBvZiBSeCBkZXNjcmlwdG9ycworICogICAgICBpbnQJCQlyeF9idWZmX3NpemUgICAgICBTaXplIG9mIFJ4IGJ1ZmZlcgogICogICAgICB1bnNpZ25lZCBpbnQgICAgcnhfZGVzY19iYXNlX2FkZHIgIFJ4IGRlc2NyaXB0b3JzIG1lbW9yeSBhcmVhIGJhc2UgYWRkci4KICAqICAgICAgdW5zaWduZWQgaW50ICAgIHJ4X2J1ZmZfYmFzZV9hZGRyICBSeCBidWZmZXIgbWVtb3J5IGFyZWEgYmFzZSBhZGRyLgogICoKQEAgLTI2NDksOSArMjY0OSw5IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCi0gKiAgICAgIGludCAJCQl0eF9kZXNjX251bSAgICAgICBOdW1iZXIgb2YgVHggZGVzY3JpcHRvcnMKLSAqICAgICAgaW50IAkJCXR4X2J1ZmZfc2l6ZSAgICAgIFNpemUgb2YgVHggYnVmZmVyCisgKglFVEhfUVVFVUUJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCisgKiAgICAgIGludAkJCXR4X2Rlc2NfbnVtICAgICAgIE51bWJlciBvZiBUeCBkZXNjcmlwdG9ycworICogICAgICBpbnQJCQl0eF9idWZmX3NpemUgICAgICBTaXplIG9mIFR4IGJ1ZmZlcgogICogICAgICB1bnNpZ25lZCBpbnQgICAgdHhfZGVzY19iYXNlX2FkZHIgIFR4IGRlc2NyaXB0b3JzIG1lbW9yeSBhcmVhIGJhc2UgYWRkci4KICAqICAgICAgdW5zaWduZWQgaW50ICAgIHR4X2J1ZmZfYmFzZV9hZGRyICBUeCBidWZmZXIgbWVtb3J5IGFyZWEgYmFzZSBhZGRyLgogICoKQEAgLTI3NDQsNyArMjc0NCw3IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCisgKglFVEhfUVVFVUUJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCiAgKglQS1RfSU5GTyAgICAgICAgKnBfcGt0X2luZm8gICAgICAgVXNlciBwYWNrZXQgYnVmZmVyLgogICoKICAqIE9VVFBVVDoKQEAgLTI4NjAsNyArMjg2MCw3IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCisgKglFVEhfUVVFVUUJdHhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgVHggcXVldWUuCiAgKglQS1RfSU5GTyAgICAgICAgKnBfcGt0X2luZm8gICAgICAgVXNlciBwYWNrZXQgYnVmZmVyLgogICoKICAqIE9VVFBVVDoKQEAgLTI5MjksNyArMjkyOSw3IEBACiAgKiBldGhfcG9ydF9yZWNlaXZlIC0gR2V0IHJlY2VpdmVkIGluZm9ybWF0aW9uIGZyb20gUnggcmluZy4KICAqCiAgKiBERVNDUklQVElPTjoKLSAqIAlUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgcmVjZWl2ZWQgZGF0YSB0byB0aGUgY2FsbGVyLiBUaGVyZSBpcyBubworICoJVGhpcyByb3V0aW5lIHJldHVybnMgdGhlIHJlY2VpdmVkIGRhdGEgdG8gdGhlIGNhbGxlci4gVGhlcmUgaXMgbm8KICAqCWRhdGEgY29weWluZyBkdXJpbmcgcm91dGluZSBvcGVyYXRpb24uIEFsbCBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZAogICoJdXNpbmcgcG9pbnRlciB0byBwYWNrZXQgaW5mb3JtYXRpb24gc3RydWN0IHBhc3NlZCBmcm9tIHRoZSBjYWxsZXIuCiAgKiAgICAgIElmIHRoZSByb3V0aW5lIGV4aGF1c3RzCVJ4IHJpbmcgcmVzb3VyY2VzIHRoZW4gdGhlIHJlc291cmNlIGVycm9yIGZsYWcKQEAgLTI5MzcsNyArMjkzNyw3IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCisgKglFVEhfUVVFVUUJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCiAgKglQS1RfSU5GTyAgICAgICAgKnBfcGt0X2luZm8gICAgICAgVXNlciBwYWNrZXQgYnVmZmVyLgogICoKICAqIE9VVFBVVDoKQEAgLTI5NzksNyArMjk3OSw3IEBACiAKIAkvKiBOb3RoaW5nIHRvIHJlY2VpdmUuLi4gKi8KIAlpZiAoY29tbWFuZF9zdGF0dXMgJiAoRVRIX0JVRkZFUl9PV05FRF9CWV9ETUEpKSB7Ci0vKiAJRFAocHJpbnRmKCJSeDogY29tbWFuZF9zdGF0dXM6ICUwOHhcbiIsIGNvbW1hbmRfc3RhdHVzKSk7ICovCisvKglEUChwcmludGYoIlJ4OiBjb21tYW5kX3N0YXR1czogJTA4eFxuIiwgY29tbWFuZF9zdGF0dXMpKTsgKi8KIAkJRF9DQUNIRV9GTFVTSF9MSU5FICgodW5zaWduZWQgaW50KSBwX3J4X2N1cnJfZGVzYywgMCk7CiAvKglEUChwcmludGYoIlxuRVRIX0VORF9PRl9KT0IgLi4uXG4iKSk7Ki8KIAkJcmV0dXJuIEVUSF9FTkRfT0ZfSk9COwpAQCAtMzAxOCw3ICszMDE4LDcgQEAKICAqCiAgKiBJTlBVVDoKICAqCUVUSF9QT1JUX0lORk8gICAqcF9ldGhfcG9ydF9jdHJsICAgRXRoZXJuZXQgUG9ydCBDb250cm9sIHNydHVjdC4KLSAqCUVUSF9RVUVVRSAgIAlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KKyAqCUVUSF9RVUVVRQlyeF9xdWV1ZSAgICAgICAgIE51bWJlciBvZiBSeCBxdWV1ZS4KICAqICAgICAgUEtUX0lORk8gICAgICAgICpwX3BrdF9pbmZvICAgICAgIEluZm9ybWF0aW9uIG9uIHRoZSByZXR1cm5lZCBidWZmZXIuCiAgKgogICogT1VUUFVUOgpkaWZmIC0tZ2l0IGEvYm9hcmQvTWFydmVsbC9kYjY0NDYwL3UtYm9vdC5sZHMgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvdS1ib290LmxkcwppbmRleCAyNWUxNmRlLi4xYTk1NzU1IDEwMDY0NAotLS0gYS9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvdS1ib290LmxkcworKysgYi9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvdS1ib290LmxkcwpAQCAtMzcsMTEgKzM3LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL01pZ29SL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL01pZ29SL2xvd2xldmVsX2luaXQuUwppbmRleCAyZWM4ZTA0Li5lNDhmN2IzIDEwMDY0NAotLS0gYS9ib2FyZC9NaWdvUi9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvTWlnb1IvbG93bGV2ZWxfaW5pdC5TCkBAIC04Nyw3ICs4Nyw3IEBACiAJbW92LncJcjAsIEByMQogCiAJbW92LmwJRExMRlJRX0EsIHIxCSEgMjAwODAxMTUKLQltb3YubAlETExGUlFfRCwgcjAgCSEgMjAwODAxMTUKKwltb3YubAlETExGUlFfRCwgcjAJISAyMDA4MDExNQogCW1vdi5sCXIwLCBAcjEKIAogCW1vdi5sCUZSUUNSX0EsIHIxCQkhIDB4QTQxNTAwMDAgRnJlcXVlbmN5IGNvbnRyb2wgcmVnaXN0ZXIKQEAgLTEwMCwxMSArMTAwLDExIEBACiAKIGJzY19pbml0OgogCW1vdi5sCUNNTkNSX0EsIHIxCSEgQ01OQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDTU5DUl9ELCByMAkhIENNTkNSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDTU5DUl9ELCByMAkhIENNTkNSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENNTkNSIHNldAogCiAJbW92LmwJQ1MwQkNSX0EsIHIxCSEgQ1MwQkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubCAJQ1MwQkNSX0QsIHIwCSEgQ1MwQkNSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDUzBCQ1JfRCwgcjAJISBDUzBCQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ1MwQkNSIHNldAogCiAJbW92LmwJQ1M0QkNSX0EsIHIxCSEgQ1M0QkNSIGFkZHJlc3MgLT4gUjEKQEAgLTExMiwzNSArMTEyLDM1IEBACiAJbW92LmwJcjAsIEByMQkJISBDUzRCQ1Igc2V0CiAKIAltb3YubAlDUzVBQkNSX0EsIHIxCSEgQ1M1QUJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTNUFCQ1JfRCwgcjAJISBDUzVBQkNSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDUzVBQkNSX0QsIHIwCSEgQ1M1QUJDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzVBQkNSIHNldAogCiAJbW92LmwJQ1M1QkJDUl9BLCByMQkhIENTNUJCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzVCQkNSX0QsIHIwCSEgQ1M1QkJDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1M1QkJDUl9ELCByMAkhIENTNUJCQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ1M1QkJDUiBzZXQKIAogCW1vdi5sCUNTNkFCQ1JfQSwgcjEJISBDUzZBQkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubCAJQ1M2QUJDUl9ELCByMAkhIENTNkFCQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTNkFCQ1JfRCwgcjAJISBDUzZBQkNSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTNkFCQ1Igc2V0CiAKIAltb3YubAlDUzBXQ1JfQSwgcjEJISBDUzBXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzBXQ1JfRCwgcjAJISBDUzBXQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTMFdDUl9ELCByMAkhIENTMFdDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzBXQ1Igc2V0CiAKIAltb3YubAlDUzRXQ1JfQSwgcjEJISBDUzRXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzRXQ1JfRCwgcjAJISBDUzRXQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTNFdDUl9ELCByMAkhIENTNFdDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzRXQ1Igc2V0CiAKIAltb3YubAlDUzVBV0NSX0EsIHIxCSEgQ1M1QVdDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTNUFXQ1JfRCwgcjAJISBDUzVBV0NSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDUzVBV0NSX0QsIHIwCSEgQ1M1QVdDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzVBV0NSIHNldAogCiAJbW92LmwJQ1M1QldDUl9BLCByMQkhIENTNUJXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzVCV0NSX0QsIHIwCSEgQ1M1QldDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1M1QldDUl9ELCByMAkhIENTNUJXQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ1M1QldDUiBzZXQKIAogCW1vdi5sCUNTNkFXQ1JfQSwgcjEJISBDUzZBV0NSIGFkZHJlc3MgLT4gUjEKLQltb3YubCAJQ1M2QVdDUl9ELCByMAkhIENTNkFXQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTNkFXQ1JfRCwgcjAJISBDUzZBV0NSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTNkFXQ1Igc2V0CiAKIAkhIFNEUkFNIGluaXRpYWxpemF0aW9uCkBAIC0xNzMsNyArMTczLDcgQEAKIAltb3YubAlyMCwgQHIxCiAKIAltb3YubAlTRE1SM19BLCByMQkhIFNETVIzIGFkZHJlc3MgLT4gUjEKLQltb3YgCSMweDAwLCByMAkhIFNETVIzIGRhdGEgICAgLT4gUjAKKwltb3YJIzB4MDAsIHIwCSEgU0RNUjMgZGF0YSAgICAtPiBSMAogCW1vdi5iCXIwLCBAcjEJCSEgU0RNUjMgc2V0CiAKIAkhIEJMIGJpdCBvZmYgKGluaXQgPSBPTikgICg/IT8pCmRpZmYgLS1naXQgYS9ib2FyZC9SUFhDbGFzc2ljL3UtYm9vdC5sZHMgYi9ib2FyZC9SUFhDbGFzc2ljL3UtYm9vdC5sZHMKaW5kZXggZGJlYTkwYy4uMWY5YTE5MSAxMDA2NDQKLS0tIGEvYm9hcmQvUlBYQ2xhc3NpYy91LWJvb3QubGRzCisrKyBiL2JvYXJkL1JQWENsYXNzaWMvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL1JQWENsYXNzaWMvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL1JQWENsYXNzaWMvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA3NTM0MTFmLi5jMzM1ODFkIDEwMDY0NAotLS0gYS9ib2FyZC9SUFhDbGFzc2ljL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvUlBYQ2xhc3NpYy91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvUlBYbGl0ZS9mbGFzaC5jIGIvYm9hcmQvUlBYbGl0ZS9mbGFzaC5jCmluZGV4IDg0Njc5NGQuLjY1OWQ2MGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL1JQWGxpdGUvZmxhc2guYworKysgYi9ib2FyZC9SUFhsaXRlL2ZsYXNoLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAqIGFyZSBub3QgdGVzdGVkLgogICoKICAqICg/KSBEb2VzIGFuIFJQWExpdGUgYm9hcmQgd2hpY2gKLSAqIAlkb2VzIG5vdCB1c2UgQU0yOUxWODAwIGZsYXNoIG1lbW9yeSBleGlzdCA/CisgKglkb2VzIG5vdCB1c2UgQU0yOUxWODAwIGZsYXNoIG1lbW9yeSBleGlzdCA/CiAgKglJIGRvbid0IGtub3cuLi4KICAqLwogCmRpZmYgLS1naXQgYS9ib2FyZC9SUFhsaXRlL3UtYm9vdC5sZHMgYi9ib2FyZC9SUFhsaXRlL3UtYm9vdC5sZHMKaW5kZXggZGJlYTkwYy4uMWY5YTE5MSAxMDA2NDQKLS0tIGEvYm9hcmQvUlBYbGl0ZS91LWJvb3QubGRzCisrKyBiL2JvYXJkL1JQWGxpdGUvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL1JQWGxpdGUvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL1JQWGxpdGUvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA3NTM0MTFmLi5jMzM1ODFkIDEwMDY0NAotLS0gYS9ib2FyZC9SUFhsaXRlL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvUlBYbGl0ZS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvUlBYbGl0ZV9kdy9SUFhsaXRlX2R3LmMgYi9ib2FyZC9SUFhsaXRlX2R3L1JQWGxpdGVfZHcuYwppbmRleCAyMzdjNThhLi5kM2RjMDgxIDEwMDY0NAotLS0gYS9ib2FyZC9SUFhsaXRlX2R3L1JQWGxpdGVfZHcuYworKysgYi9ib2FyZC9SUFhsaXRlX2R3L1JQWGxpdGVfZHcuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAJbWVtY3RsLT5tZW1jX21hbXIgPSBDRkdfTUFNUl85Q09MICYgKH4oTUFNUl9QVEFFKSk7IC8qIG5vIHJlZnJlc2ggeWV0ICovCiAJLypEaXNhYmxlIFBlcmlvZGljIHRpbWVyIEEuICovCiAKLSAJdWRlbGF5KDIwMCk7CisJdWRlbGF5KDIwMCk7CiAKIAkvKiBwZXJmb3JtIFNEUkFNIGluaXRpYWxpenNhdGlvbiBzZXF1ZW5jZSAqLwogCmRpZmYgLS1naXQgYS9ib2FyZC9SUFhsaXRlX2R3L2ZsYXNoLmMgYi9ib2FyZC9SUFhsaXRlX2R3L2ZsYXNoLmMKaW5kZXggMWNiZDUzNy4uNDFjYjAzNiAxMDA2NDQKLS0tIGEvYm9hcmQvUlBYbGl0ZV9kdy9mbGFzaC5jCisrKyBiL2JvYXJkL1JQWGxpdGVfZHcvZmxhc2guYwpAQCAtMzEsNyArMzEsNyBAQAogICogYXJlIG5vdCB0ZXN0ZWQuCiAgKgogICogKD8pIERvZXMgYW4gUlBYTGl0ZSBib2FyZCB3aGljaAotICogCWRvZXMgbm90IHVzZSBBTTI5TFY4MDAgZmxhc2ggbWVtb3J5IGV4aXN0ID8KKyAqCWRvZXMgbm90IHVzZSBBTTI5TFY4MDAgZmxhc2ggbWVtb3J5IGV4aXN0ID8KICAqCUkgZG9uJ3Qga25vdy4uLgogICovCiAKQEAgLTE3OCw4ICsxNzgsOCBAQAogCiAJdmFsdWUgPSBhZGRyWzBdIDsKIAlzd2l0Y2ggKHZhbHVlICYgMHgwMEZGMDBGRikgewotCWNhc2UgQU1EX01BTlVGQUNUOiAgICAgICAgICAgICAJCS8qIEFNRF9NQU5VRkFDVD0weDAwMDEwMDAxIGluIGZsYXNoLmguICovCi0JCWluZm8tPmZsYXNoX2lkID0gRkxBU0hfTUFOX0FNRDsgLyogRkxBU0hfTUFOX0FNRD0weDAwMDAwMDAwIGluIGZsYXNoLmguKi8KKwljYXNlIEFNRF9NQU5VRkFDVDoJCQkvKiBBTURfTUFOVUZBQ1QgPTB4MDAwMTAwMDEgaW4gZmxhc2guaCAqLworCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX01BTl9BTUQ7IC8qIEZMQVNIX01BTl9BTUQ9MHgwMDAwMDAwMCBpbiBmbGFzaC5oICovCiAJCWJyZWFrOwogCWNhc2UgRlVKX01BTlVGQUNUOgogCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX01BTl9GVUo7CmRpZmYgLS1naXQgYS9ib2FyZC9SUFhsaXRlX2R3L3UtYm9vdC5sZHMgYi9ib2FyZC9SUFhsaXRlX2R3L3UtYm9vdC5sZHMKaW5kZXggNGQwZDhhNy4uMmVlMTIwNiAxMDA2NDQKLS0tIGEvYm9hcmQvUlBYbGl0ZV9kdy91LWJvb3QubGRzCisrKyBiL2JvYXJkL1JQWGxpdGVfZHcvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL1JQWGxpdGVfZHcvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL1JQWGxpdGVfZHcvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA0OTQyYzQyLi5mNmQxNTM3IDEwMDY0NAotLS0gYS9ib2FyZC9SUFhsaXRlX2R3L3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvUlBYbGl0ZV9kdy91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvUlJ2aXNpb24vdS1ib290LmxkcyBiL2JvYXJkL1JSdmlzaW9uL3UtYm9vdC5sZHMKaW5kZXggODU0OTEyZS4uOWU3NjdlZSAxMDA2NDQKLS0tIGEvYm9hcmQvUlJ2aXNpb24vdS1ib290LmxkcworKysgYi9ib2FyZC9SUnZpc2lvbi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hMzAwMC9NYWtlZmlsZSBiL2JvYXJkL2EzMDAwL01ha2VmaWxlCmluZGV4IGQzZGIxYTkuLmRjYjE5MDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2EzMDAwL01ha2VmaWxlCisrKyBiL2JvYXJkL2EzMDAwL01ha2VmaWxlCkBAIC0yNSw3ICsyNSw3IEBACiAKIExJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAotQ09CSlMgCT0gJChCT0FSRCkubyBmbGFzaC5vCitDT0JKUwk9ICQoQk9BUkQpLm8gZmxhc2gubwogCiBTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCiBPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKZGlmZiAtLWdpdCBhL2JvYXJkL2EzMDAwL2EzMDAwLmMgYi9ib2FyZC9hMzAwMC9hMzAwMC5jCmluZGV4IGFiNzA3YWUuLjczN2QzNWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2EzMDAwL2EzMDAwLmMKKysrIGIvYm9hcmQvYTMwMDAvYTMwMDAuYwpAQCAtODIsNyArODIsNyBAQAogCQkJCSAgICAgICBQQ0lfQ09NTUFORF9NRU1PUlkgfAogCQkJCSAgICAgICBQQ0lfQ09NTUFORF9NQVNURVIgfX0sCiAJeyBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELAotCSAgUENJX0FOWV9JRCwgMHgxNSwgUENJX0FOWV9JRCwgCS8qIFBDSSBzbG90MiAqLworCSAgUENJX0FOWV9JRCwgMHgxNSwgUENJX0FOWV9JRCwJCS8qIFBDSSBzbG90MiAqLwogCSAgcGNpX2NmZ2Z1bmNfY29uZmlnX2RldmljZSwgeyBQQ0lfRU5FVDJfSU9BRERSLAogCQkJCSAgICAgICBQQ0lfRU5FVDJfTUVNQUREUiwKIAkJCQkgICAgICAgUENJX0NPTU1BTkRfSU8gfApkaWZmIC0tZ2l0IGEvYm9hcmQvYWRkZXIvdS1ib290LmxkcyBiL2JvYXJkL2FkZGVyL3UtYm9vdC5sZHMKaW5kZXggZjBkNzU2Ny4uMjVhYWE3ZCAxMDA2NDQKLS0tIGEvYm9hcmQvYWRkZXIvdS1ib290LmxkcworKysgYi9ib2FyZC9hZGRlci91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hZHM1MTIxL3UtYm9vdC5sZHMgYi9ib2FyZC9hZHM1MTIxL3UtYm9vdC5sZHMKaW5kZXggMTQxODk1Mi4uZjJmNmUxNCAxMDA2NDQKLS0tIGEvYm9hcmQvYWRzNTEyMS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FkczUxMjEvdS1ib290LmxkcwpAQCAtMzAsMTEgKzMwLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvYWNhZGlhL3UtYm9vdC1uYW5kLmxkcyBiL2JvYXJkL2FtY2MvYWNhZGlhL3UtYm9vdC1uYW5kLmxkcwppbmRleCBlNWRlMjAzLi5jYmRjMGIwIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2FjYWRpYS91LWJvb3QtbmFuZC5sZHMKKysrIGIvYm9hcmQvYW1jYy9hY2FkaWEvdS1ib290LW5hbmQubGRzCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9hY2FkaWEvdS1ib290LmxkcyBiL2JvYXJkL2FtY2MvYWNhZGlhL3UtYm9vdC5sZHMKaW5kZXggZjFiN2VjNy4uZDUyYjUxYSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9hY2FkaWEvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL2FjYWRpYS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9iYW1ib28vYmFtYm9vLmMgYi9ib2FyZC9hbWNjL2JhbWJvby9iYW1ib28uYwppbmRleCBjNGVhY2U1Li41MDc3MTg3IDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2JhbWJvby9iYW1ib28uYworKysgYi9ib2FyZC9hbWNjL2JhbWJvby9iYW1ib28uYwpAQCAtMjgwLDg2ICsyODAsODYgQEAKICNkZWZpbmUgRUJDMF9CTkFQX1NNQUxMX0ZMQVNICQkJCVwKIAlFQkMwX0JOQVBfQk1FX0RJU0FCTEVECQkJfAlcCiAJRUJDMF9CTkFQX1RXVF9FTkNPREUoNikJCQl8CVwKLQlFQkMwX0JOQVBfQ1NOX0VOQ09ERSgwKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfT0VOX0VOQ09ERSgxKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfV0JOX0VOQ09ERSgxKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfV0JGX0VOQ09ERSgzKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfVEhfRU5DT0RFKDEpCSAgICAJCXwJXAotCUVCQzBfQk5BUF9SRV9FTkFCTEVECSAgICAJCXwJXAotCUVCQzBfQk5BUF9TT1JfREVMQVlFRAkgICAgCQl8CVwKLQlFQkMwX0JOQVBfQkVNX1dSSVRFT05MWQkgICAgCQl8CVwKKwlFQkMwX0JOQVBfQ1NOX0VOQ09ERSgwKQkJCXwJXAorCUVCQzBfQk5BUF9PRU5fRU5DT0RFKDEpCQkJfAlcCisJRUJDMF9CTkFQX1dCTl9FTkNPREUoMSkJCQl8CVwKKwlFQkMwX0JOQVBfV0JGX0VOQ09ERSgzKQkJCXwJXAorCUVCQzBfQk5BUF9USF9FTkNPREUoMSkJCQl8CVwKKwlFQkMwX0JOQVBfUkVfRU5BQkxFRAkJCXwJXAorCUVCQzBfQk5BUF9TT1JfREVMQVlFRAkJCXwJXAorCUVCQzBfQk5BUF9CRU1fV1JJVEVPTkxZCQkJfAlcCiAJRUJDMF9CTkFQX1BFTl9ESVNBQkxFRAogCiAjZGVmaW5lIEVCQzBfQk5DUl9TTUFMTF9GTEFTSF9DUzAJCQlcCi0JRUJDMF9CTkNSX0JBU19FTkNPREUoMHhGRkYwMDAwMCkgICAgCXwgCVwKLQlFQkMwX0JOQ1JfQlNfMU1CCQkgICAgCXwJXAotCUVCQzBfQk5DUl9CVV9SVwkJCSAgICAJfAlcCisJRUJDMF9CTkNSX0JBU19FTkNPREUoMHhGRkYwMDAwMCkJfAlcCisJRUJDMF9CTkNSX0JTXzFNQgkJCXwJXAorCUVCQzBfQk5DUl9CVV9SVwkJCQl8CVwKIAlFQkMwX0JOQ1JfQldfOEJJVAogCiAjZGVmaW5lIEVCQzBfQk5DUl9TTUFMTF9GTEFTSF9DUzQJCQlcCi0JRUJDMF9CTkNSX0JBU19FTkNPREUoMHg4N0YwMDAwMCkgICAgCXwgCVwKLQlFQkMwX0JOQ1JfQlNfMU1CCQkgICAgCXwJXAotCUVCQzBfQk5DUl9CVV9SVwkJCSAgICAJfAlcCisJRUJDMF9CTkNSX0JBU19FTkNPREUoMHg4N0YwMDAwMCkJfAlcCisJRUJDMF9CTkNSX0JTXzFNQgkJCXwJXAorCUVCQzBfQk5DUl9CVV9SVwkJCQl8CVwKIAlFQkMwX0JOQ1JfQldfOEJJVAogCiAvKiBMYXJnZSBGbGFzaCBvciBTUkFNICovCiAjZGVmaW5lIEVCQzBfQk5BUF9MQVJHRV9GTEFTSF9PUl9TUkFNCQkJXAotCUVCQzBfQk5BUF9CTUVfRElTQUJMRUQJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1RXVF9FTkNPREUoOCkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX0NTTl9FTkNPREUoMCkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX09FTl9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1dCTl9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1dCRl9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1RIX0VOQ09ERSgyKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfU09SX0RFTEFZRUQJICAgIAkJfAlcCi0JRUJDMF9CTkFQX0JFTV9SVwkgICAgCQl8CVwKKwlFQkMwX0JOQVBfQk1FX0RJU0FCTEVECQkJfAlcCisJRUJDMF9CTkFQX1RXVF9FTkNPREUoOCkJCQl8CVwKKwlFQkMwX0JOQVBfQ1NOX0VOQ09ERSgwKQkJCXwJXAorCUVCQzBfQk5BUF9PRU5fRU5DT0RFKDEpCQkJfAlcCisJRUJDMF9CTkFQX1dCTl9FTkNPREUoMSkJCQl8CVwKKwlFQkMwX0JOQVBfV0JGX0VOQ09ERSgxKQkJCXwJXAorCUVCQzBfQk5BUF9USF9FTkNPREUoMikJCQl8CVwKKwlFQkMwX0JOQVBfU09SX0RFTEFZRUQJCQl8CVwKKwlFQkMwX0JOQVBfQkVNX1JXCQkJfAlcCiAJRUJDMF9CTkFQX1BFTl9ESVNBQkxFRAogCi0jZGVmaW5lIEVCQzBfQk5DUl9MQVJHRV9GTEFTSF9PUl9TUkFNX0NTMCAgIAkJXAotCUVCQzBfQk5DUl9CQVNfRU5DT0RFKDB4RkY4MDAwMDApCXwgCVwKLQlFQkMwX0JOQ1JfQlNfOE1CCQkgICAgCXwJXAotCUVCQzBfQk5DUl9CVV9SVwkJCSAgICAJfAlcCisjZGVmaW5lIEVCQzBfQk5DUl9MQVJHRV9GTEFTSF9PUl9TUkFNX0NTMAkJXAorCUVCQzBfQk5DUl9CQVNfRU5DT0RFKDB4RkY4MDAwMDApCXwJXAorCUVCQzBfQk5DUl9CU184TUIJCQl8CVwKKwlFQkMwX0JOQ1JfQlVfUlcJCQkJfAlcCiAJRUJDMF9CTkNSX0JXXzE2QklUCiAKIAotI2RlZmluZSBFQkMwX0JOQ1JfTEFSR0VfRkxBU0hfT1JfU1JBTV9DUzQgICAJCVwKLQlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDg3ODAwMDAwKQl8IAlcCi0JRUJDMF9CTkNSX0JTXzhNQgkJICAgIAl8CVwKLQlFQkMwX0JOQ1JfQlVfUlcJCQkgICAgCXwJXAorI2RlZmluZSBFQkMwX0JOQ1JfTEFSR0VfRkxBU0hfT1JfU1JBTV9DUzQJCVwKKwlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDg3ODAwMDAwKQl8CVwKKwlFQkMwX0JOQ1JfQlNfOE1CCQkJfAlcCisJRUJDMF9CTkNSX0JVX1JXCQkJCXwJXAogCUVCQzBfQk5DUl9CV18xNkJJVAogCiAvKiBOVlJBTSAtIEZQR0EgKi8KICNkZWZpbmUgRUJDMF9CTkFQX05WUkFNX0ZQR0EJCQkJXAotCUVCQzBfQk5BUF9CTUVfRElTQUJMRUQJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1RXVF9FTkNPREUoOSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX0NTTl9FTkNPREUoMCkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX09FTl9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1dCTl9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1dCRl9FTkNPREUoMCkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1RIX0VOQ09ERSgyKQkgICAgCQl8CVwKLQlFQkMwX0JOQVBfUkVfRU5BQkxFRAkgICAgCQl8CVwKLQlFQkMwX0JOQVBfU09SX0RFTEFZRUQJICAgIAkJfAlcCi0JRUJDMF9CTkFQX0JFTV9XUklURU9OTFkJICAgIAkJfAlcCisJRUJDMF9CTkFQX0JNRV9ESVNBQkxFRAkJCXwJXAorCUVCQzBfQk5BUF9UV1RfRU5DT0RFKDkpCQkJfAlcCisJRUJDMF9CTkFQX0NTTl9FTkNPREUoMCkJCQl8CVwKKwlFQkMwX0JOQVBfT0VOX0VOQ09ERSgxKQkJCXwJXAorCUVCQzBfQk5BUF9XQk5fRU5DT0RFKDEpCQkJfAlcCisJRUJDMF9CTkFQX1dCRl9FTkNPREUoMCkJCQl8CVwKKwlFQkMwX0JOQVBfVEhfRU5DT0RFKDIpCQkJfAlcCisJRUJDMF9CTkFQX1JFX0VOQUJMRUQJCQl8CVwKKwlFQkMwX0JOQVBfU09SX0RFTEFZRUQJCQl8CVwKKwlFQkMwX0JOQVBfQkVNX1dSSVRFT05MWQkJCXwJXAogCUVCQzBfQk5BUF9QRU5fRElTQUJMRUQKIAogI2RlZmluZSBFQkMwX0JOQ1JfTlZSQU1fRlBHQV9DUzUJCQlcCi0JRUJDMF9CTkNSX0JBU19FTkNPREUoMHg4MDAwMDAwMCkgICAgCXwgCVwKLQlFQkMwX0JOQ1JfQlNfMU1CCQkgICAgCXwJXAotCUVCQzBfQk5DUl9CVV9SVwkJCSAgICAJfAlcCisJRUJDMF9CTkNSX0JBU19FTkNPREUoMHg4MDAwMDAwMCkJfAlcCisJRUJDMF9CTkNSX0JTXzFNQgkJCXwJXAorCUVCQzBfQk5DUl9CVV9SVwkJCQl8CVwKIAlFQkMwX0JOQ1JfQldfOEJJVAogCiAvKiBOYW5kIEZsYXNoICovCiAjZGVmaW5lIEVCQzBfQk5BUF9OQU5EX0ZMQVNICQkJCVwKLQlFQkMwX0JOQVBfQk1FX0RJU0FCTEVECSAgICAJCXwJXAotCUVCQzBfQk5BUF9UV1RfRU5DT0RFKDMpCSAgICAJCXwJXAotCUVCQzBfQk5BUF9DU05fRU5DT0RFKDApCSAgICAJCXwJXAotCUVCQzBfQk5BUF9PRU5fRU5DT0RFKDApCSAgICAJCXwJXAotCUVCQzBfQk5BUF9XQk5fRU5DT0RFKDApCSAgICAJCXwJXAotCUVCQzBfQk5BUF9XQkZfRU5DT0RFKDApCSAgICAJCXwJXAotCUVCQzBfQk5BUF9USF9FTkNPREUoMSkJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1JFX0VOQUJMRUQJICAgIAkJfAlcCi0JRUJDMF9CTkFQX1NPUl9OT1RfREVMQVlFRCAgIAkJfAlcCi0JRUJDMF9CTkFQX0JFTV9SVwkgICAgCQl8CVwKKwlFQkMwX0JOQVBfQk1FX0RJU0FCTEVECQkJfAlcCisJRUJDMF9CTkFQX1RXVF9FTkNPREUoMykJCQl8CVwKKwlFQkMwX0JOQVBfQ1NOX0VOQ09ERSgwKQkJCXwJXAorCUVCQzBfQk5BUF9PRU5fRU5DT0RFKDApCQkJfAlcCisJRUJDMF9CTkFQX1dCTl9FTkNPREUoMCkJCQl8CVwKKwlFQkMwX0JOQVBfV0JGX0VOQ09ERSgwKQkJCXwJXAorCUVCQzBfQk5BUF9USF9FTkNPREUoMSkJCQl8CVwKKwlFQkMwX0JOQVBfUkVfRU5BQkxFRAkJCXwJXAorCUVCQzBfQk5BUF9TT1JfTk9UX0RFTEFZRUQJCXwJXAorCUVCQzBfQk5BUF9CRU1fUlcJCQl8CVwKIAlFQkMwX0JOQVBfUEVOX0RJU0FCTEVECiAKIApAQCAtMzY3LDIyICszNjcsMjIgQEAKIAogLyogTkFORDAgKi8KICNkZWZpbmUgRUJDMF9CTkNSX05BTkRfRkxBU0hfQ1MxCQkJXAotCUVCQzBfQk5DUl9CQVNfRU5DT0RFKDB4OTAwMDAwMDApICAgIAl8IAlcCi0JRUJDMF9CTkNSX0JTXzFNQgkJICAgIAl8CVwKLQlFQkMwX0JOQ1JfQlVfUlcJCQkgICAgCXwJXAorCUVCQzBfQk5DUl9CQVNfRU5DT0RFKDB4OTAwMDAwMDApCXwJXAorCUVCQzBfQk5DUl9CU18xTUIJCQl8CVwKKwlFQkMwX0JOQ1JfQlVfUlcJCQkJfAlcCiAJRUJDMF9CTkNSX0JXXzMyQklUCiAvKiBOQU5EMSAtIEJhbmsyICovCiAjZGVmaW5lIEVCQzBfQk5DUl9OQU5EX0ZMQVNIX0NTMgkJCVwKLQlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDk0MDAwMDAwKSAgICAJfCAJXAotCUVCQzBfQk5DUl9CU18xTUIJCSAgICAJfAlcCi0JRUJDMF9CTkNSX0JVX1JXCQkJICAgIAl8CVwKKwlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDk0MDAwMDAwKQl8CVwKKwlFQkMwX0JOQ1JfQlNfMU1CCQkJfAlcCisJRUJDMF9CTkNSX0JVX1JXCQkJCXwJXAogCUVCQzBfQk5DUl9CV18zMkJJVAogCiAvKiBOQU5EMSAtIEJhbmszICovCiAjZGVmaW5lIEVCQzBfQk5DUl9OQU5EX0ZMQVNIX0NTMwkJCVwKLQlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDk0MDAwMDAwKSAgICAJfCAJXAotCUVCQzBfQk5DUl9CU18xTUIJCSAgICAJfAlcCi0JRUJDMF9CTkNSX0JVX1JXCQkJICAgIAl8CVwKKwlFQkMwX0JOQ1JfQkFTX0VOQ09ERSgweDk0MDAwMDAwKQl8CVwKKwlFQkMwX0JOQ1JfQlNfMU1CCQkJfAlcCisJRUJDMF9CTkNSX0JVX1JXCQkJCXwJXAogCUVCQzBfQk5DUl9CV18zMkJJVAogCiBpbnQgYm9hcmRfZWFybHlfaW5pdF9mKHZvaWQpCmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2JhbWJvby91LWJvb3QtbmFuZC5sZHMgYi9ib2FyZC9hbWNjL2JhbWJvby91LWJvb3QtbmFuZC5sZHMKaW5kZXggZTVkZTIwMy4uY2JkYzBiMCAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9iYW1ib28vdS1ib290LW5hbmQubGRzCisrKyBiL2JvYXJkL2FtY2MvYmFtYm9vL3UtYm9vdC1uYW5kLmxkcwpAQCAtMzEsMTEgKzMxLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvYmFtYm9vL3UtYm9vdC5sZHMgYi9ib2FyZC9hbWNjL2JhbWJvby91LWJvb3QubGRzCmluZGV4IDUzNjE3YjIuLjI1ZDkxN2EgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvYmFtYm9vL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvYW1jYy9iYW1ib28vdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvYnViaW5nYS91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy9idWJpbmdhL3UtYm9vdC5sZHMKaW5kZXggZjFiN2VjNy4uZDUyYjUxYSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9idWJpbmdhL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvYW1jYy9idWJpbmdhL3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2NhbnlvbmxhbmRzL3UtYm9vdC1uYW5kLmxkcyBiL2JvYXJkL2FtY2MvY2FueW9ubGFuZHMvdS1ib290LW5hbmQubGRzCmluZGV4IDMzMmUzYWEuLjhhNGI3ZjUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvY2FueW9ubGFuZHMvdS1ib290LW5hbmQubGRzCisrKyBiL2JvYXJkL2FtY2MvY2FueW9ubGFuZHMvdS1ib290LW5hbmQubGRzCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9jYW55b25sYW5kcy91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy9jYW55b25sYW5kcy91LWJvb3QubGRzCmluZGV4IGY0YzEzZjQuLjE3ODNiYzcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvY2FueW9ubGFuZHMvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL2NhbnlvbmxhbmRzL3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2Vib255L3UtYm9vdC5sZHMgYi9ib2FyZC9hbWNjL2Vib255L3UtYm9vdC5sZHMKaW5kZXggNTU3Y2FlNy4uNmJlNGJkMSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9lYm9ueS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtY2MvZWJvbnkvdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2Mva2F0bWFpL2thdG1haS5jIGIvYm9hcmQvYW1jYy9rYXRtYWkva2F0bWFpLmMKaW5kZXggZTQxY2FhZi4uMTkzMDgzZiAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9rYXRtYWkva2F0bWFpLmMKKysrIGIvYm9hcmQvYW1jYy9rYXRtYWkva2F0bWFpLmMKQEAgLTQ0MSwyNyArNDQxLDI3IEBACiAJCXBjaV9yZWdpc3Rlcl9ob3NlKGhvc2UpOwogCiAJCWlmIChpc19lbmRfcG9pbnQoaSkpIHsKLQkJICAgIAlwcGM0eHhfc2V0dXBfcGNpZV9lbmRwb2ludChob3NlLCBpKTsKKwkJCXBwYzR4eF9zZXR1cF9wY2llX2VuZHBvaW50KGhvc2UsIGkpOwogCQkJLyoKIAkJCSAqIFJlc29uIGZvciBubyBzY2FubmluZyBpcyBlbmRwb2ludCBjYW4gbm90IGdlbmVyYXRlCiAJCQkgKiB1cHN0cmVhbSBjb25maWd1cmF0aW9uIGFjY2Vzc2VzLgotCQkgICAgCSAqLworCQkJICovCiAJCX0gZWxzZSB7Ci0JCSAgICAJcHBjNHh4X3NldHVwX3BjaWVfcm9vdHBvaW50KGhvc2UsIGkpOworCQkJcHBjNHh4X3NldHVwX3BjaWVfcm9vdHBvaW50KGhvc2UsIGkpOwogCQkJZW52ID0gZ2V0ZW52ICgicGNpc2NhbmRlbGF5Iik7Ci0JCSAgICAJaWYgKGVudiAhPSBOVUxMKSB7Ci0JCQkgICAgCWRlbGF5ID0gc2ltcGxlX3N0cnRvdWwoZW52LCBOVUxMLCAxMCk7CisJCQlpZiAoZW52ICE9IE5VTEwpIHsKKwkJCQlkZWxheSA9IHNpbXBsZV9zdHJ0b3VsKGVudiwgTlVMTCwgMTApOwogCQkJCWlmIChkZWxheSA+IDUpCi0JCQkJICAgIAlwcmludGYoIldhcm5pbmcsIGV4cGVjdCBub3RpY2FibGUgZGVsYXkgYmVmb3JlICIKKwkJCQkJcHJpbnRmKCJXYXJuaW5nLCBleHBlY3Qgbm90aWNhYmxlIGRlbGF5IGJlZm9yZSAiCiAJCQkJCSAgICAgICAiUENJZSBzY2FuIGR1ZSB0byAncGNpc2NhbmRlbGF5JyB2YWx1ZSFcbiIpOwogCQkJCW1kZWxheShkZWxheSAqIDEwMDApOwogCQkJfQogCi0JCSAgICAJLyoKLQkJICAgICAJICogQ29uZmlnIGFjY2VzcyBjYW4gb25seSBnbyBkb3duIHN0cmVhbQotCQkgICAgIAkgKi8KLQkJICAgIAlob3NlLT5sYXN0X2J1c25vID0gcGNpX2hvc2Vfc2Nhbihob3NlKTsKLQkJICAgIAlidXMgPSBob3NlLT5sYXN0X2J1c25vICsgMTsKKwkJCS8qCisJCQkgKiBDb25maWcgYWNjZXNzIGNhbiBvbmx5IGdvIGRvd24gc3RyZWFtCisJCQkgKi8KKwkJCWhvc2UtPmxhc3RfYnVzbm8gPSBwY2lfaG9zZV9zY2FuKGhvc2UpOworCQkJYnVzID0gaG9zZS0+bGFzdF9idXNubyArIDE7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL2tpbGF1ZWEvTWFrZWZpbGUgYi9ib2FyZC9hbWNjL2tpbGF1ZWEvTWFrZWZpbGUKaW5kZXggYjhkYTI1Zi4uMzkzMjhjMiAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9raWxhdWVhL01ha2VmaWxlCisrKyBiL2JvYXJkL2FtY2Mva2lsYXVlYS9NYWtlZmlsZQpAQCAtMjgsNyArMjgsNyBAQAogQ09CSlMJPSAkKEJPQVJEKS5vIGNtZF9wbGwubyBtZW1vcnkubwogU09CSlMJPSBpbml0Lm8KIAotU1JDUyAJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKK1NSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykKIE9CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpICQoQ09CSlMpKQogCiAkKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9raWxhdWVhL2luaXQuUyBiL2JvYXJkL2FtY2Mva2lsYXVlYS9pbml0LlMKaW5kZXggMDUzZmUxOS4uOGNkNTM0YyAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9raWxhdWVhL2luaXQuUworKysgYi9ib2FyZC9hbWNjL2tpbGF1ZWEvaW5pdC5TCkBAIC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlIDxwcGNfYXNtLnRtcGw+CiAjaW5jbHVkZSA8cHBjX2RlZnMuaD4KIAotI2RlZmluZSBtdHNkcmFtX2FzKHJlZywgdmFsdWUpCSAJXAotCWFkZGkgICAgcjQsMCxyZWcJOyAgICAgCVwKKyNkZWZpbmUgbXRzZHJhbV9hcyhyZWcsIHZhbHVlKQkJXAorCWFkZGkgICAgcjQsMCxyZWcJOwlcCiAJbXRkY3IgICBtZW1jZmdhLHI0CTsJXAotCWFkZGlzICAgcjQsMCx2YWx1ZUBoIAk7CVwKKwlhZGRpcyAgIHI0LDAsdmFsdWVAaAk7CVwKIAlvcmkgICAgIHI0LHI0LHZhbHVlQGwJOwlcCiAJbXRkY3IgICBtZW1jZmdkLHI0CTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9raWxhdWVhL2tpbGF1ZWEuYyBiL2JvYXJkL2FtY2Mva2lsYXVlYS9raWxhdWVhLmMKaW5kZXggZDgwNmE0MS4uZjMwZGM4ZiAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9raWxhdWVhL2tpbGF1ZWEuYworKysgYi9ib2FyZC9hbWNjL2tpbGF1ZWEva2lsYXVlYS5jCkBAIC0zMzgsMjcgKzMzOCwyNyBAQAogCQlwY2lfcmVnaXN0ZXJfaG9zZShob3NlKTsKIAogCQlpZiAoaXNfZW5kX3BvaW50KGkpKSB7Ci0JCSAgICAJcHBjNHh4X3NldHVwX3BjaWVfZW5kcG9pbnQoaG9zZSwgaSk7CisJCQlwcGM0eHhfc2V0dXBfcGNpZV9lbmRwb2ludChob3NlLCBpKTsKIAkJCS8qCiAJCQkgKiBSZXNvbiBmb3Igbm8gc2Nhbm5pbmcgaXMgZW5kcG9pbnQgY2FuIG5vdCBnZW5lcmF0ZQogCQkJICogdXBzdHJlYW0gY29uZmlndXJhdGlvbiBhY2Nlc3Nlcy4KLQkJICAgIAkgKi8KKwkJCSAqLwogCQl9IGVsc2UgewotCQkgICAgCXBwYzR4eF9zZXR1cF9wY2llX3Jvb3Rwb2ludChob3NlLCBpKTsKKwkJCXBwYzR4eF9zZXR1cF9wY2llX3Jvb3Rwb2ludChob3NlLCBpKTsKIAkJCWVudiA9IGdldGVudiAoInBjaXNjYW5kZWxheSIpOwotCQkgICAgCWlmIChlbnYgIT0gTlVMTCkgewotCQkJICAgIAlkZWxheSA9IHNpbXBsZV9zdHJ0b3VsKGVudiwgTlVMTCwgMTApOworCQkJaWYgKGVudiAhPSBOVUxMKSB7CisJCQkJZGVsYXkgPSBzaW1wbGVfc3RydG91bChlbnYsIE5VTEwsIDEwKTsKIAkJCQlpZiAoZGVsYXkgPiA1KQotCQkJCSAgICAJcHJpbnRmKCJXYXJuaW5nLCBleHBlY3Qgbm90aWNhYmxlIGRlbGF5IGJlZm9yZSAiCisJCQkJCXByaW50ZigiV2FybmluZywgZXhwZWN0IG5vdGljYWJsZSBkZWxheSBiZWZvcmUgIgogCQkJCQkgICAgICAgIlBDSWUgc2NhbiBkdWUgdG8gJ3BjaXNjYW5kZWxheScgdmFsdWUhXG4iKTsKIAkJCQltZGVsYXkoZGVsYXkgKiAxMDAwKTsKIAkJCX0KIAotCQkgICAgCS8qCi0JCSAgICAgCSAqIENvbmZpZyBhY2Nlc3MgY2FuIG9ubHkgZ28gZG93biBzdHJlYW0KLQkJICAgICAJICovCi0JCSAgICAJaG9zZS0+bGFzdF9idXNubyA9IHBjaV9ob3NlX3NjYW4oaG9zZSk7Ci0JCSAgICAJYnVzID0gaG9zZS0+bGFzdF9idXNubyArIDE7CisJCQkvKgorCQkJICogQ29uZmlnIGFjY2VzcyBjYW4gb25seSBnbyBkb3duIHN0cmVhbQorCQkJICovCisJCQlob3NlLT5sYXN0X2J1c25vID0gcGNpX2hvc2Vfc2Nhbihob3NlKTsKKwkJCWJ1cyA9IGhvc2UtPmxhc3RfYnVzbm8gKyAxOwogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9raWxhdWVhL3UtYm9vdC1uYW5kLmxkcyBiL2JvYXJkL2FtY2Mva2lsYXVlYS91LWJvb3QtbmFuZC5sZHMKaW5kZXggZTVkZTIwMy4uY2JkYzBiMCAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9raWxhdWVhL3UtYm9vdC1uYW5kLmxkcworKysgYi9ib2FyZC9hbWNjL2tpbGF1ZWEvdS1ib290LW5hbmQubGRzCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9raWxhdWVhL3UtYm9vdC5sZHMgYi9ib2FyZC9hbWNjL2tpbGF1ZWEvdS1ib290LmxkcwppbmRleCBiNmNhM2JjLi5mZTUxY2ExIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL2tpbGF1ZWEvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL2tpbGF1ZWEvdS1ib290LmxkcwpAQCAtNDIsMTEgKzQyLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvbHVhbi91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy9sdWFuL3UtYm9vdC5sZHMKaW5kZXggMGE0NzZjZi4uNzkxMTc4NSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9sdWFuL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvYW1jYy9sdWFuL3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL21ha2FsdS9NYWtlZmlsZSBiL2JvYXJkL2FtY2MvbWFrYWx1L01ha2VmaWxlCmluZGV4IGI4ZGEyNWYuLjM5MzI4YzIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvbWFrYWx1L01ha2VmaWxlCisrKyBiL2JvYXJkL2FtY2MvbWFrYWx1L01ha2VmaWxlCkBAIC0yOCw3ICsyOCw3IEBACiBDT0JKUwk9ICQoQk9BUkQpLm8gY21kX3BsbC5vIG1lbW9yeS5vCiBTT0JKUwk9IGluaXQubwogCi1TUkNTIAk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykgJChDT0JKUykpCiAKICQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpCmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL21ha2FsdS9pbml0LlMgYi9ib2FyZC9hbWNjL21ha2FsdS9pbml0LlMKaW5kZXggNWU5YTVlMC4uMTFjNWIxOSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9tYWthbHUvaW5pdC5TCisrKyBiL2JvYXJkL2FtY2MvbWFrYWx1L2luaXQuUwpAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVkZSA8cHBjX2FzbS50bXBsPgogI2luY2x1ZGUgPHBwY19kZWZzLmg+CiAKLSNkZWZpbmUgbXRzZHJhbV9hcyhyZWcsIHZhbHVlKQkgCVwKLQlhZGRpICAgIHI0LDAscmVnCTsgICAgIAlcCisjZGVmaW5lIG10c2RyYW1fYXMocmVnLCB2YWx1ZSkJCVwKKwlhZGRpICAgIHI0LDAscmVnCTsJXAogCW10ZGNyICAgbWVtY2ZnYSxyNAk7CVwKLQlhZGRpcyAgIHI0LDAsdmFsdWVAaCAJOwlcCisJYWRkaXMgICByNCwwLHZhbHVlQGgJOwlcCiAJb3JpICAgICByNCxyNCx2YWx1ZUBsCTsJXAogCW10ZGNyICAgbWVtY2ZnZCxyNAk7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2FtY2MvbWFrYWx1L21ha2FsdS5jIGIvYm9hcmQvYW1jYy9tYWthbHUvbWFrYWx1LmMKaW5kZXggMjVkZDcxNS4uOWJhZWM5YSAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy9tYWthbHUvbWFrYWx1LmMKKysrIGIvYm9hcmQvYW1jYy9tYWthbHUvbWFrYWx1LmMKQEAgLTI5NCwyNyArMjk0LDI3IEBACiAJCXBjaV9yZWdpc3Rlcl9ob3NlKGhvc2UpOwogCiAJCWlmIChpc19lbmRfcG9pbnQoaSkpIHsKLQkJICAgIAlwcGM0eHhfc2V0dXBfcGNpZV9lbmRwb2ludChob3NlLCBpKTsKKwkJCXBwYzR4eF9zZXR1cF9wY2llX2VuZHBvaW50KGhvc2UsIGkpOwogCQkJLyoKIAkJCSAqIFJlc29uIGZvciBubyBzY2FubmluZyBpcyBlbmRwb2ludCBjYW4gbm90IGdlbmVyYXRlCiAJCQkgKiB1cHN0cmVhbSBjb25maWd1cmF0aW9uIGFjY2Vzc2VzLgotCQkgICAgCSAqLworCQkJICovCiAJCX0gZWxzZSB7Ci0JCSAgICAJcHBjNHh4X3NldHVwX3BjaWVfcm9vdHBvaW50KGhvc2UsIGkpOworCQkJcHBjNHh4X3NldHVwX3BjaWVfcm9vdHBvaW50KGhvc2UsIGkpOwogCQkJZW52ID0gZ2V0ZW52ICgicGNpc2NhbmRlbGF5Iik7Ci0JCSAgICAJaWYgKGVudiAhPSBOVUxMKSB7Ci0JCQkgICAgCWRlbGF5ID0gc2ltcGxlX3N0cnRvdWwoZW52LCBOVUxMLCAxMCk7CisJCQlpZiAoZW52ICE9IE5VTEwpIHsKKwkJCQlkZWxheSA9IHNpbXBsZV9zdHJ0b3VsKGVudiwgTlVMTCwgMTApOwogCQkJCWlmIChkZWxheSA+IDUpCi0JCQkJICAgIAlwcmludGYoIldhcm5pbmcsIGV4cGVjdCBub3RpY2FibGUgZGVsYXkgYmVmb3JlICIKKwkJCQkJcHJpbnRmKCJXYXJuaW5nLCBleHBlY3Qgbm90aWNhYmxlIGRlbGF5IGJlZm9yZSAiCiAJCQkJCSAgICAgICAiUENJZSBzY2FuIGR1ZSB0byAncGNpc2NhbmRlbGF5JyB2YWx1ZSFcbiIpOwogCQkJCW1kZWxheShkZWxheSAqIDEwMDApOwogCQkJfQogCi0JCSAgICAJLyoKLQkJICAgICAJICogQ29uZmlnIGFjY2VzcyBjYW4gb25seSBnbyBkb3duIHN0cmVhbQotCQkgICAgIAkgKi8KLQkJICAgIAlob3NlLT5sYXN0X2J1c25vID0gcGNpX2hvc2Vfc2Nhbihob3NlKTsKLQkJICAgIAlidXMgPSBob3NlLT5sYXN0X2J1c25vICsgMTsKKwkJCS8qCisJCQkgKiBDb25maWcgYWNjZXNzIGNhbiBvbmx5IGdvIGRvd24gc3RyZWFtCisJCQkgKi8KKwkJCWhvc2UtPmxhc3RfYnVzbm8gPSBwY2lfaG9zZV9zY2FuKGhvc2UpOworCQkJYnVzID0gaG9zZS0+bGFzdF9idXNubyArIDE7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL21ha2FsdS91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy9tYWthbHUvdS1ib290LmxkcwppbmRleCBiNmNhM2JjLi5mZTUxY2ExIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL21ha2FsdS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtY2MvbWFrYWx1L3UtYm9vdC5sZHMKQEAgLTQyLDExICs0MiwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL29jb3RlYS91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy9vY290ZWEvdS1ib290LmxkcwppbmRleCA3NmQxYWVmLi4yOThhYmE4IDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL29jb3RlYS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtY2Mvb2NvdGVhL3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL3NlcXVvaWEvdS1ib290LW5hbmQubGRzIGIvYm9hcmQvYW1jYy9zZXF1b2lhL3UtYm9vdC1uYW5kLmxkcwppbmRleCA5NGRkNzU0Li5hZTJlMThkIDEwMDY0NAotLS0gYS9ib2FyZC9hbWNjL3NlcXVvaWEvdS1ib290LW5hbmQubGRzCisrKyBiL2JvYXJkL2FtY2Mvc2VxdW9pYS91LWJvb3QtbmFuZC5sZHMKQEAgLTMxLDExICszMSwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL3NlcXVvaWEvdS1ib290LmxkcyBiL2JvYXJkL2FtY2Mvc2VxdW9pYS91LWJvb3QubGRzCmluZGV4IGRhMmE0MDAuLmIyMGZiMWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2Mvc2VxdW9pYS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtY2Mvc2VxdW9pYS91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy90YWlodS91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy90YWlodS91LWJvb3QubGRzCmluZGV4IGYxYjdlYzcuLmQ1MmI1MWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvdGFpaHUvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL3RhaWh1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL3RhaXNoYW4vdS1ib290LmxkcyBiL2JvYXJkL2FtY2MvdGFpc2hhbi91LWJvb3QubGRzCmluZGV4IGEwZTllOTYuLjg1ZDM3NTkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvdGFpc2hhbi91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtY2MvdGFpc2hhbi91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy93YWxudXQvdS1ib290LmxkcyBiL2JvYXJkL2FtY2Mvd2FsbnV0L3UtYm9vdC5sZHMKaW5kZXggYzM2MzQ2YS4uNWQwN2U0NCAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy93YWxudXQvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL3dhbG51dC91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy95b3NlbWl0ZS91LWJvb3QubGRzIGIvYm9hcmQvYW1jYy95b3NlbWl0ZS91LWJvb3QubGRzCmluZGV4IDkyY2YxNzcuLmMxMmFhZDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MveW9zZW1pdGUvdS1ib290LmxkcworKysgYi9ib2FyZC9hbWNjL3lvc2VtaXRlL3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWNjL3l1Y2NhL3l1Y2NhLmMgYi9ib2FyZC9hbWNjL3l1Y2NhL3l1Y2NhLmMKaW5kZXggNTI0ODZjYy4uMTFkMTc0MyAxMDA2NDQKLS0tIGEvYm9hcmQvYW1jYy95dWNjYS95dWNjYS5jCisrKyBiL2JvYXJkL2FtY2MveXVjY2EveXVjY2EuYwpAQCAtNzM3LDI3ICs3MzcsMjcgQEAKIAljYXNlIDA6CiAJCXJvb3Rwb2ludCAgID0gRlBHQV9SRUcxQ19QRTBfUk9PVFBPSU5UOwogCQllbmRwb2ludCAgICA9IDA7Ci0JCXBvd2VyIAkgICAgPSBGUEdBX1JFRzFBX1BFMF9QV1JPTjsKKwkJcG93ZXIJICAgID0gRlBHQV9SRUcxQV9QRTBfUFdST047CiAJCWdyZWVuX2xlZCAgID0gRlBHQV9SRUcxQV9QRTBfR0xFRDsKLQkJY2xvY2sgCSAgICA9IEZQR0FfUkVHMUFfUEUwX1JFRkNMS19FTkFCTEU7CisJCWNsb2NrCSAgICA9IEZQR0FfUkVHMUFfUEUwX1JFRkNMS19FTkFCTEU7CiAJCXllbGxvd19sZWQgID0gRlBHQV9SRUcxQV9QRTBfWUxFRDsKIAkJcmVzZXRfb2ZmICAgPSBGUEdBX1JFRzFDX1BFMF9QRVJTVDsKIAkJYnJlYWs7CiAJY2FzZSAxOgogCQlyb290cG9pbnQgICA9IDA7CiAJCWVuZHBvaW50ICAgID0gRlBHQV9SRUcxQ19QRTFfRU5EUE9JTlQ7Ci0JCXBvd2VyIAkgICAgPSBGUEdBX1JFRzFBX1BFMV9QV1JPTjsKKwkJcG93ZXIJICAgID0gRlBHQV9SRUcxQV9QRTFfUFdST047CiAJCWdyZWVuX2xlZCAgID0gRlBHQV9SRUcxQV9QRTFfR0xFRDsKLQkJY2xvY2sgCSAgICA9IEZQR0FfUkVHMUFfUEUxX1JFRkNMS19FTkFCTEU7CisJCWNsb2NrCSAgICA9IEZQR0FfUkVHMUFfUEUxX1JFRkNMS19FTkFCTEU7CiAJCXllbGxvd19sZWQgID0gRlBHQV9SRUcxQV9QRTFfWUxFRDsKIAkJcmVzZXRfb2ZmICAgPSBGUEdBX1JFRzFDX1BFMV9QRVJTVDsKIAkJYnJlYWs7CiAJY2FzZSAyOgogCQlyb290cG9pbnQgICA9IDA7CiAJCWVuZHBvaW50ICAgID0gRlBHQV9SRUcxQ19QRTJfRU5EUE9JTlQ7Ci0JCXBvd2VyIAkgICAgPSBGUEdBX1JFRzFBX1BFMl9QV1JPTjsKKwkJcG93ZXIJICAgID0gRlBHQV9SRUcxQV9QRTJfUFdST047CiAJCWdyZWVuX2xlZCAgID0gRlBHQV9SRUcxQV9QRTJfR0xFRDsKLQkJY2xvY2sgCSAgICA9IEZQR0FfUkVHMUFfUEUyX1JFRkNMS19FTkFCTEU7CisJCWNsb2NrCSAgICA9IEZQR0FfUkVHMUFfUEUyX1JFRkNMS19FTkFCTEU7CiAJCXllbGxvd19sZWQgID0gRlBHQV9SRUcxQV9QRTJfWUxFRDsKIAkJcmVzZXRfb2ZmICAgPSBGUEdBX1JFRzFDX1BFMl9QRVJTVDsKIAkJYnJlYWs7CkBAIC03OTQsMjcgKzc5NCwyNyBAQAogCWNhc2UgMDoKIAkJcm9vdHBvaW50ICAgPSBGUEdBX1JFRzFDX1BFMF9ST09UUE9JTlQ7CiAJCWVuZHBvaW50ICAgID0gMDsKLQkJcG93ZXIgCSAgICA9IEZQR0FfUkVHMUFfUEUwX1BXUk9OOworCQlwb3dlcgkgICAgPSBGUEdBX1JFRzFBX1BFMF9QV1JPTjsKIAkJZ3JlZW5fbGVkICAgPSBGUEdBX1JFRzFBX1BFMF9HTEVEOwotCQljbG9jayAJICAgID0gRlBHQV9SRUcxQV9QRTBfUkVGQ0xLX0VOQUJMRTsKKwkJY2xvY2sJICAgID0gRlBHQV9SRUcxQV9QRTBfUkVGQ0xLX0VOQUJMRTsKIAkJeWVsbG93X2xlZCAgPSBGUEdBX1JFRzFBX1BFMF9ZTEVEOwogCQlyZXNldF9vZmYgICA9IEZQR0FfUkVHMUNfUEUwX1BFUlNUOwogCQlicmVhazsKIAljYXNlIDE6CiAJCXJvb3Rwb2ludCAgID0gMDsKIAkJZW5kcG9pbnQgICAgPSBGUEdBX1JFRzFDX1BFMV9FTkRQT0lOVDsKLQkJcG93ZXIgCSAgICA9IEZQR0FfUkVHMUFfUEUxX1BXUk9OOworCQlwb3dlcgkgICAgPSBGUEdBX1JFRzFBX1BFMV9QV1JPTjsKIAkJZ3JlZW5fbGVkICAgPSBGUEdBX1JFRzFBX1BFMV9HTEVEOwotCQljbG9jayAJICAgID0gRlBHQV9SRUcxQV9QRTFfUkVGQ0xLX0VOQUJMRTsKKwkJY2xvY2sJICAgID0gRlBHQV9SRUcxQV9QRTFfUkVGQ0xLX0VOQUJMRTsKIAkJeWVsbG93X2xlZCAgPSBGUEdBX1JFRzFBX1BFMV9ZTEVEOwogCQlyZXNldF9vZmYgICA9IEZQR0FfUkVHMUNfUEUxX1BFUlNUOwogCQlicmVhazsKIAljYXNlIDI6CiAJCXJvb3Rwb2ludCAgID0gMDsKIAkJZW5kcG9pbnQgICAgPSBGUEdBX1JFRzFDX1BFMl9FTkRQT0lOVDsKLQkJcG93ZXIgCSAgICA9IEZQR0FfUkVHMUFfUEUyX1BXUk9OOworCQlwb3dlcgkgICAgPSBGUEdBX1JFRzFBX1BFMl9QV1JPTjsKIAkJZ3JlZW5fbGVkICAgPSBGUEdBX1JFRzFBX1BFMl9HTEVEOwotCQljbG9jayAJICAgID0gRlBHQV9SRUcxQV9QRTJfUkVGQ0xLX0VOQUJMRTsKKwkJY2xvY2sJICAgID0gRlBHQV9SRUcxQV9QRTJfUkVGQ0xLX0VOQUJMRTsKIAkJeWVsbG93X2xlZCAgPSBGUEdBX1JFRzFBX1BFMl9ZTEVEOwogCQlyZXNldF9vZmYgICA9IEZQR0FfUkVHMUNfUEUyX1BFUlNUOwogCQlicmVhazsKQEAgLTg4NCwyMSArODg0LDIxIEBACiAJCQkvKgogCQkJICogUmVzb24gZm9yIG5vIHNjYW5uaW5nIGlzIGVuZHBvaW50IGNhbiBub3QgZ2VuZXJhdGUKIAkJCSAqIHVwc3RyZWFtIGNvbmZpZ3VyYXRpb24gYWNjZXNzZXMuCi0JCSAJICovCisJCQkgKi8KIAkJfSBlbHNlIHsKIAkJCXBwYzR4eF9zZXR1cF9wY2llX3Jvb3Rwb2ludChob3NlLCBpKTsKIAkJCWVudiA9IGdldGVudigicGNpc2NhbmRlbGF5Iik7CiAJCQlpZiAoZW52ICE9IE5VTEwpIHsKIAkJCQlkZWxheSA9IHNpbXBsZV9zdHJ0b3VsKGVudiwgTlVMTCwgMTApOwogCQkJCWlmIChkZWxheSA+IDUpCi0JCQkJICAgIAlwcmludGYoIldhcm5pbmcsIGV4cGVjdCBub3RpY2FibGUgZGVsYXkgYmVmb3JlICIKKwkJCQkJcHJpbnRmKCJXYXJuaW5nLCBleHBlY3Qgbm90aWNhYmxlIGRlbGF5IGJlZm9yZSAiCiAJCQkJCSAgICAgICAiUENJZSBzY2FuIGR1ZSB0byAncGNpc2NhbmRlbGF5JyB2YWx1ZSFcbiIpOwogCQkJCW1kZWxheShkZWxheSAqIDEwMDApOwogCQkJfQogCiAJCQkvKgogCQkJICogQ29uZmlnIGFjY2VzcyBjYW4gb25seSBnbyBkb3duIHN0cmVhbQotCQkgCSAqLworCQkJICovCiAJCQlob3NlLT5sYXN0X2J1c25vID0gcGNpX2hvc2Vfc2Nhbihob3NlKTsKIAkJCWJ1cyA9IGhvc2UtPmxhc3RfYnVzbm8gKyAxOwogCQl9CmRpZmYgLS1naXQgYS9ib2FyZC9hbWlyaXgvYXAxMDAwL3UtYm9vdC5sZHMgYi9ib2FyZC9hbWlyaXgvYXAxMDAwL3UtYm9vdC5sZHMKaW5kZXggNzY2ZTJiYi4uYTkzOWUwMyAxMDA2NDQKLS0tIGEvYm9hcmQvYW1pcml4L2FwMTAwMC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2FtaXJpeC9hcDEwMDAvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2Fwb2xsb24vYXBvbGxvbi5jIGIvYm9hcmQvYXBvbGxvbi9hcG9sbG9uLmMKaW5kZXggMzgzYjA2NC4uN2UzOTgxNyAxMDA2NDQKLS0tIGEvYm9hcmQvYXBvbGxvbi9hcG9sbG9uLmMKKysrIGIvYm9hcmQvYXBvbGxvbi9hcG9sbG9uLmMKQEAgLTE0MCw3ICsxNDAsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFJvdXRpbmU6ZXRoZXJfaW5pdAogICogRGVzY3JpcHRpb246IHRha2UgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgb3V0IG9mIHJlc2V0IGFuZCB3YWl0Ci0gKiAgCQkgICBmb3IgdGhlIEVFUFJPTSBsb2FkIHRvIGNvbXBsZXRlLgorICoJCSAgIGZvciB0aGUgRUVQUk9NIGxvYWQgdG8gY29tcGxldGUuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdm9pZCBldGhlcl9pbml0KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC9hcm1hZGlsbG8vbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvYXJtYWRpbGxvL2xvd2xldmVsX2luaXQuUwppbmRleCA2Y2Y2NDI2Li5lN2QzNzNkIDEwMDY0NAotLS0gYS9ib2FyZC9hcm1hZGlsbG8vbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL2FybWFkaWxsby9sb3dsZXZlbF9pbml0LlMKQEAgLTI5LDggKzI5LDggQEAKIAogLyogc29tZSBwYXJhbWV0ZXJzIGZvciB0aGUgYm9hcmQgKi8KIC8qIHNldHRpbmcgdXAgdGhlIG1lbW9yeSAqLwotI2RlZmluZSAJU1JBTV9TVEFSVCAJMHg2MDAwMDAwMAotI2RlZmluZSAJU1JBTV9TSVpFCTB4MDAwMGMwMDAKKyNkZWZpbmUJU1JBTV9TVEFSVAkweDYwMDAwMDAwCisjZGVmaW5lCVNSQU1fU0laRQkweDAwMDBjMDAwCiAKIC5nbG9ibCBsb3dsZXZlbF9pbml0CiBsb3dsZXZlbF9pbml0OgpkaWZmIC0tZ2l0IGEvYm9hcmQvYXNzYWJldC9hc3NhYmV0LmMgYi9ib2FyZC9hc3NhYmV0L2Fzc2FiZXQuYwppbmRleCA0Zjg0YTU4Li42ZjAyZGIyIDEwMDY0NAotLS0gYS9ib2FyZC9hc3NhYmV0L2Fzc2FiZXQuYworKysgYi9ib2FyZC9hc3NhYmV0L2Fzc2FiZXQuYwpAQCAtNDYsNyArNDYsNyBAQAogI2RlZmluZSBFQ1NSX1BXUkRXTgkJMHgwNAogI2RlZmluZSBFQ1NSX0lOVAkJMHgwMgogI2RlZmluZSBTTUNfSU9fU0hJRlQJCTIKLSNkZWZpbmUgTkNSXzAgICAgICAgICAgIAkoKigodm9sYXRpbGUgdV9jaGFyICopKDB4MTAwMDAwYTApKSkKKyNkZWZpbmUgTkNSXzAJCQkoKigodm9sYXRpbGUgdV9jaGFyICopKDB4MTAwMDAwYTApKSkKICNkZWZpbmUgTkNSX0VORVRfT1NDX0VOCQkoMTw8MykKIAogc3RhdGljIGlubGluZSB1OApkaWZmIC0tZ2l0IGEvYm9hcmQvYXRtZWwvYXQ5MXNhbTkyNjBlay9hdDkxc2FtOTI2MGVrLmMgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYwppbmRleCAyMTQ3OWFjLi5iMzBhYWQ4IDEwMDY0NAotLS0gYS9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYworKysgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOTI2MGVrL2F0OTFzYW05MjYwZWsuYwpAQCAtMTI2LDcgKzEyNiw3IEBACiAJLyoKIAkgKiBEaXNhYmxlIHB1bGwtdXAgb246CiAJICoJUlhEViAoUEExNykgPT4gUEhZIG5vcm1hbCBtb2RlIChub3QgVGVzdCBtb2RlKQotCSAqIAlFUlgwIChQQTE0KSA9PiBQSFkgQUREUjAKKwkgKglFUlgwIChQQTE0KSA9PiBQSFkgQUREUjAKIAkgKglFUlgxIChQQTE1KSA9PiBQSFkgQUREUjEKIAkgKglFUlgyIChQQTI1KSA9PiBQSFkgQUREUjIKIAkgKglFUlgzIChQQTI2KSA9PiBQSFkgQUREUjMKZGlmZiAtLWdpdCBhL2JvYXJkL2F0dW04NTQ4L3UtYm9vdC5sZHMgYi9ib2FyZC9hdHVtODU0OC91LWJvb3QubGRzCmluZGV4IGRkNTM3NWIuLjQ2YzQ1ZDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2F0dW04NTQ4L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvYXR1bTg1NDgvdS1ib290LmxkcwpAQCAtNDIsMTEgKzQyLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2JhcmNvL3NwZWVkLmggYi9ib2FyZC9iYXJjby9zcGVlZC5oCmluZGV4IDQ2ODYwZTguLmU4ODNkZmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JhcmNvL3NwZWVkLmgKKysrIGIvYm9hcmQvYmFyY28vc3BlZWQuaApAQCAtNTIsMTAgKzUyLDEwIEBACiAgKiBTUEVFRF9UTVIzX1BTID0gKEdDTEsgLyAoMTYgKiBTUEVFRF9GQ09VTlQzKSkgLSAxCiAgKgogICogU1BFRURfRkNPVU5UMgl0aW1lciAyIGNvdW50aW5nIGZyZXF1ZW5jeQotICogR0NMSwkgICAgICAJCUNQVSBjbG9jaworICogR0NMSwkJCUNQVSBjbG9jawogICogU1BFRURfVE1SMl9QUwlwcmVzY2FsZXIKICAqLwotI2RlZmluZSBTUEVFRF9UTVIyX1BTICAJKDI1MCAtIDEpCS8qIGRpdmlkZSBieSAyNTAJKi8KKyNkZWZpbmUgU1BFRURfVE1SMl9QUwkoMjUwIC0gMSkJLyogZGl2aWRlIGJ5IDI1MAkqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaW1lciB2YWx1ZSBmb3IgUElUCmRpZmYgLS1naXQgYS9ib2FyZC9iYzM0NTAvY21kX2JjMzQ1MC5jIGIvYm9hcmQvYmMzNDUwL2NtZF9iYzM0NTAuYwppbmRleCAxNDU1OTUzLi5mN2YwMDEzIDEwMDY0NAotLS0gYS9ib2FyZC9iYzM0NTAvY21kX2JjMzQ1MC5jCisrKyBiL2JvYXJkL2JjMzQ1MC9jbWRfYmMzNDUwLmMKQEAgLTY5LDcgKzY5LDcgQEAKICNkZWZpbmUgU001MDFfUE9XRVJfTU9ERTBfR0FURQkJMHgwMDAwMDA0MFVMCiAjZGVmaW5lIFNNNTAxX1BPV0VSX01PREUxX0dBVEUJCTB4MDAwMDAwNDhVTAogI2RlZmluZSBQT1dFUl9NT0RFX0dBVEVfR1BJT19QV01fSTJDCTB4MDAwMDAwNDBVTAotI2RlZmluZSBTTTUwMV9HUElPX0RBVEFfTE9XIAkJMHgwMDAxMDAwMFVMCisjZGVmaW5lIFNNNTAxX0dQSU9fREFUQV9MT1cJCTB4MDAwMTAwMDBVTAogI2RlZmluZSBTTTUwMV9HUElPX0RBVEFfSElHSAkJMHgwMDAxMDAwNFVMCiAjZGVmaW5lIFNNNTAxX0dQSU9fREFUQV9ESVJfTE9XCQkweDAwMDEwMDA4VUwKICNkZWZpbmUgU001MDFfR1BJT19EQVRBX0RJUl9ISUdICTB4MDAwMTAwMENVTApkaWZmIC0tZ2l0IGEvYm9hcmQvYmY1MzMtZXpraXQvZmxhc2gtZGVmaW5lcy5oIGIvYm9hcmQvYmY1MzMtZXpraXQvZmxhc2gtZGVmaW5lcy5oCmluZGV4IGJkOWU4NTkuLjRlMDQzZTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2JmNTMzLWV6a2l0L2ZsYXNoLWRlZmluZXMuaAorKysgYi9ib2FyZC9iZjUzMy1lemtpdC9mbGFzaC1kZWZpbmVzLmgKQEAgLTQ0LDExICs0NCwxMSBAQAogI2RlZmluZSBFUkFTRV9TRUNUCQk2CiAjZGVmaW5lIFJFQUQJCQk3CiAjZGVmaW5lIEdFVF9TRUNUTlVNCQk4Ci0jZGVmaW5lIEZMQVNIX1NUQVJUX0wgCQkweDAwMDAKLSNkZWZpbmUgRkxBU0hfU1RBUlRfSCAJCTB4MjAwMAorI2RlZmluZSBGTEFTSF9TVEFSVF9MCQkweDAwMDAKKyNkZWZpbmUgRkxBU0hfU1RBUlRfSAkJMHgyMDAwCiAjZGVmaW5lIEZMQVNIX1RPVF9TRUNUCQk0MAotI2RlZmluZSBGTEFTSF9TSVpFIAkJMHgyMjAwMDAKLSNkZWZpbmUgRkxBU0hfTUFOX1NUIAkJMgorI2RlZmluZSBGTEFTSF9TSVpFCQkweDIyMDAwMAorI2RlZmluZSBGTEFTSF9NQU5fU1QJCTIKICNkZWZpbmUgQ0ZHX0ZMQVNIMF9CQVNFCQkweDIwMDAwMDAwCiAjZGVmaW5lIFJFU0VUX1ZBTAkJMHhGMAogCmRpZmYgLS1naXQgYS9ib2FyZC9iZjUzMy1zdGFtcC9iZjUzMy1zdGFtcC5oIGIvYm9hcmQvYmY1MzMtc3RhbXAvYmY1MzMtc3RhbXAuaAppbmRleCAxZTU4ZTQ3Li4zYjBkNjIwIDEwMDY0NAotLS0gYS9ib2FyZC9iZjUzMy1zdGFtcC9iZjUzMy1zdGFtcC5oCisrKyBiL2JvYXJkL2JmNTMzLXN0YW1wL2JmNTMzLXN0YW1wLmgKQEAgLTM4LDEzICszOCwxMyBAQAogZXh0ZXJuIHZvaWQgc2VyaWFsX3NldGJyZyh2b2lkKTsKIAogLyogRGVmaW5pdGlvbnMgdXNlZCBpbiAgQ29tcGFjdCBGbGFzaCBCb290IHN1cHBvcnQgKi8KLSNkZWZpbmUgRklPX0VER0VfQ0ZfQklUUyAJMHgwMDAwCi0jZGVmaW5lIEZJT19QT0xBUl9DRl9CSVRTIAkweDAwMDAKLSNkZWZpbmUJRklPX0VER0VfQklUUyAgCQkweDFFMAotI2RlZmluZQlGSU9fUE9MQVJfQklUUyAgCTB4MTYwCisjZGVmaW5lIEZJT19FREdFX0NGX0JJVFMJMHgwMDAwCisjZGVmaW5lIEZJT19QT0xBUl9DRl9CSVRTCTB4MDAwMAorI2RlZmluZQlGSU9fRURHRV9CSVRTCQkweDFFMAorI2RlZmluZQlGSU9fUE9MQVJfQklUUwkJMHgxNjAKIAogLyogQ29tcGFjdCBmbGFzaCBzdGF0dXMgYml0cyBpbiBzdGF0dXMgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQ0ZfU1RBVF9CSVRTIAkJMHgwMDAwMDA2MAorI2RlZmluZSBDRl9TVEFUX0JJVFMJCTB4MDAwMDAwNjAKIAogLyogQ0YgRmxhZ3MgdXNlZCB0byBzd2l0Y2ggYmV0d2VlbiBleHBhbnNpb24gYW5kIGV4dGVybmFsCiAgKiBtZW1vcnkgYmFua3MKZGlmZiAtLWdpdCBhL2JvYXJkL2Jtdy9SRUFETUUgYi9ib2FyZC9ibXcvUkVBRE1FCmluZGV4IDcwYmM4MTMuLjFmMDRiMWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2Jtdy9SRUFETUUKKysrIGIvYm9hcmQvYm13L1JFQURNRQpAQCAtODksNyArODksNyBAQAogQk1XIHVzZXMgTVBDODI0NSBkaXNjcmV0ZSBtb2RlIGludGVycnVwdHMuIFdpdGggdGhlIGZvbGxvd2luZwogaGFyZHdpcmVkIG1hcHBpbmdzOgogCi1CQ001NzAxIDEwLzEwMC8xMDAwIEV0aGVybmV0IAkJSVJRMQorQkNNNTcwMSAxMC8xMDAvMTAwMCBFdGhlcm5ldAkJSVJRMQogQ29tcGFjdFBDSSBJbnRlcnJ1cHQgQQkJCUlSUTIKIFJUQy9XYXRjaGRvZyBJbnRlcnJ1cHQJCQlJUlEzCiBJbnRlcm5hbCBOUzE2NTUyIFVBUlQJCQlJUlE0CmRpZmYgLS1naXQgYS9ib2FyZC9ibXcvZWFybHlfaW5pdC5TIGIvYm9hcmQvYm13L2Vhcmx5X2luaXQuUwppbmRleCBlNjQwMGMzLi41N2EwNmE5IDEwMDY0NAotLS0gYS9ib2FyZC9ibXcvZWFybHlfaW5pdC5TCisrKyBiL2JvYXJkL2Jtdy9lYXJseV9pbml0LlMKQEAgLTI0Niw3ICsyNDYsNyBAQAogI2lmIDEJLyogVHVybiBvZmYgZmxvYXRpbmcgcG9pbnQgKHJlbW92ZSB0byBrZWVwIEZQIG9uKSAqLwogCWFuZGkuCXIzLCByMywgMAogCXN5bmMKLQltdG1zciAJcjMKKwltdG1zcglyMwogCWlzeW5jCiAjZW5kaWYKIApAQCAtMTEzNyw3ICsxMTM3LDcgQEAKIAkvKiBkZWxheSAqLwogCWxpcyAgICAgcjcsIDEKIAltdGN0ciAgIHI3Ci1sYWJlbDE6IAliZG56ICAgIGxhYmVsMQorbGFiZWwxOgliZG56ICAgIGxhYmVsMQogCiAJLyogU2V0IG1lbWdvIGJpdCAqLwogCS8qIE1DQ1IxICovCkBAIC0xMTUxLDcgKzExNTEsNyBAQAogCS8qIGRlbGF5IGFnYWluICovCiAJbGlzICAgICByNywgMQogCW10Y3RyICAgcjcKLWxhYmVsMjogCWJkbnogICAgbGFiZWwyCitsYWJlbDI6CWJkbnogICAgbGFiZWwyCiAjaWYgMAogLyogREVCVUc6IEluZmluaXRlIGxvb3AsIHdyaXRlIHRoZW4gcmVhZCAqLwogbG9vcDoKZGlmZiAtLWdpdCBhL2JvYXJkL2MybW9uL3BjbWNpYS5jIGIvYm9hcmQvYzJtb24vcGNtY2lhLmMKaW5kZXggYzM4OWM2Ny4uNTc4NDZiMSAxMDA2NDQKLS0tIGEvYm9hcmQvYzJtb24vcGNtY2lhLmMKKysrIGIvYm9hcmQvYzJtb24vcGNtY2lhLmMKQEAgLTIzNSwxNCArMjM1LDE0IEBACiAJc3JlZyB8PSBUUFMyMjExX1ZQUEQwIHwgVFBTMjIxMV9WUFBEMTsJCS8qIFZBVlBQIGFsd2F5cyBIaS1aICovCiAKIAlzd2l0Y2godmNjKSB7Ci0JCWNhc2UgIDA6IAkJCWJyZWFrOwkvKiBTd2l0Y2ggb2ZmCQkqLworCQljYXNlICAwOgkJCWJyZWFrOwkvKiBTd2l0Y2ggb2ZmCQkqLwogCQljYXNlIDMzOiBzcmVnIHw9ICBUUFMyMjExX1ZDQ0QwOwkvKiBTd2l0Y2ggb24gMy4zVgkqLwogCQlzcmVnICY9IH5UUFMyMjExX1ZDQ0QxOwogCQlicmVhazsKIAkJY2FzZSA1MDogc3JlZyAmPSB+VFBTMjIxMV9WQ0NEMDsJLyogU3dpdGNoIG9uIDUuMFYJKi8KIAkJc3JlZyB8PSAgVFBTMjIxMV9WQ0NEMTsKIAkJYnJlYWs7Ci0JCWRlZmF1bHQ6IAkJCWdvdG8gZG9uZTsKKwkJZGVmYXVsdDoJCQlnb3RvIGRvbmU7CiAJfQogCiAJLyogQ2hlY2tpbmcgc3VwcG9ydGVkIHZvbHRhZ2VzICovCmRpZmYgLS1naXQgYS9ib2FyZC9jMm1vbi91LWJvb3QubGRzIGIvYm9hcmQvYzJtb24vdS1ib290LmxkcwppbmRleCBlZTU5OGMyLi4xMGIzOGVjIDEwMDY0NAotLS0gYS9ib2FyZC9jMm1vbi91LWJvb3QubGRzCisrKyBiL2JvYXJkL2MybW9uL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9jMm1vbi91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvYzJtb24vdS1ib290Lmxkcy5kZWJ1ZwppbmRleCAxYTI1YTk4Li44NTA3MmZlIDEwMDY0NAotLS0gYS9ib2FyZC9jMm1vbi91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2MybW9uL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9jZXJmMjUwL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2NlcmYyNTAvbG93bGV2ZWxfaW5pdC5TCmluZGV4IGM5YjY4ZDcuLmFkM2M1OWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NlcmYyNTAvbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL2NlcmYyNTAvbG93bGV2ZWxfaW5pdC5TCkBAIC00MCw3ICs0MCw3IEBACiAKIAogLyoKLSAqIAlNZW1vcnkgc2V0dXAKKyAqCU1lbW9yeSBzZXR1cAogICovCiAKIC5nbG9ibCBsb3dsZXZlbF9pbml0CkBAIC00OCw2OSArNDgsNjkgQEAKIAogCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotCWxkcgkJcjAsCT1HUFNSMAotCWxkcgkJcjEsCT1DRkdfR1BTUjBfVkFMCi0Jc3RyCQlyMSwJW3IwXQorCWxkcglyMCwgPUdQU1IwCisJbGRyCXIxLCA9Q0ZHX0dQU1IwX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdQU1IxCi0JbGRyCQlyMSwJPUNGR19HUFNSMV9WQUwKLQlzdHIJCXIxLCAgW3IwXQorCWxkcglyMCwgPUdQU1IxCisJbGRyCXIxLCA9Q0ZHX0dQU1IxX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdQU1IyCi0JbGRyCQlyMSwJPUNGR19HUFNSMl9WQUwKLQlzdHIJCXIxLAlbcjBdCisJbGRyCXIwLCA9R1BTUjIKKwlsZHIJcjEsID1DRkdfR1BTUjJfVkFMCisJc3RyCXIxLCBbcjBdCiAKLQlsZHIJCXIwLAk9R1BDUjAKLQlsZHIJCXIxLAk9Q0ZHX0dQQ1IwX1ZBTAotCXN0cgkJcjEsCVtyMF0KKwlsZHIJcjAsID1HUENSMAorCWxkcglyMSwgPUNGR19HUENSMF9WQUwKKwlzdHIJcjEsIFtyMF0KIAotCWxkcgkJcjAsCT1HUENSMQotCWxkcgkJcjEsCT1DRkdfR1BDUjFfVkFMCi0Jc3RyCQlyMSwJW3IwXQorCWxkcglyMCwgPUdQQ1IxCisJbGRyCXIxLCA9Q0ZHX0dQQ1IxX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdQQ1IyCi0JbGRyCQlyMSwJPUNGR19HUENSMl9WQUwKLQlzdHIJCXIxLAlbcjBdCisJbGRyCXIwLCA9R1BDUjIKKwlsZHIJcjEsID1DRkdfR1BDUjJfVkFMCisJc3RyCXIxLCBbcjBdCiAKLQlsZHIJCXIwLAk9R1BEUjAKLQlsZHIJCXIxLAk9Q0ZHX0dQRFIwX1ZBTAotCXN0cgkJcjEsCVtyMF0KKwlsZHIJcjAsID1HUERSMAorCWxkcglyMSwgPUNGR19HUERSMF9WQUwKKwlzdHIJcjEsIFtyMF0KIAotCWxkcgkJcjAsCT1HUERSMQotCWxkcgkJcjEsCT1DRkdfR1BEUjFfVkFMCi0Jc3RyCQlyMSwJW3IwXQorCWxkcglyMCwgPUdQRFIxCisJbGRyCXIxLCA9Q0ZHX0dQRFIxX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdQRFIyCi0JbGRyCQlyMSwJPUNGR19HUERSMl9WQUwKLQlzdHIJCXIxLAlbcjBdCisJbGRyCXIwLCA9R1BEUjIKKwlsZHIJcjEsID1DRkdfR1BEUjJfVkFMCisJc3RyCXIxLCBbcjBdCiAKLQlsZHIJCXIwLAk9R0FGUjBfTAotCWxkcgkJcjEsCT1DRkdfR0FGUjBfTF9WQUwKLQlzdHIJCXIxLAlbcjBdCisJbGRyCXIwLCA9R0FGUjBfTAorCWxkcglyMSwgPUNGR19HQUZSMF9MX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdBRlIwX1UKLQlsZHIJCXIxLAk9Q0ZHX0dBRlIwX1VfVkFMCi0Jc3RyCQlyMSwJW3IwXQorCWxkcglyMCwgPUdBRlIwX1UKKwlsZHIJcjEsID1DRkdfR0FGUjBfVV9WQUwKKwlzdHIJcjEsIFtyMF0KIAotCWxkcgkJcjAsCT1HQUZSMV9MCi0JbGRyCQlyMSwJPUNGR19HQUZSMV9MX1ZBTAotCXN0cgkJcjEsCVtyMF0KKwlsZHIJcjAsID1HQUZSMV9MCisJbGRyCXIxLCA9Q0ZHX0dBRlIxX0xfVkFMCisJc3RyCXIxLCBbcjBdCiAKLQlsZHIJCXIwLAk9R0FGUjFfVQotCWxkcgkJcjEsCT1DRkdfR0FGUjFfVV9WQUwKLQlzdHIJCXIxLAlbcjBdCisJbGRyCXIwLCA9R0FGUjFfVQorCWxkcglyMSwgPUNGR19HQUZSMV9VX1ZBTAorCXN0cglyMSwgW3IwXQogCi0JbGRyCQlyMCwJPUdBRlIyX0wKLQlsZHIJCXIxLAk9Q0ZHX0dBRlIyX0xfVkFMCi0Jc3RyCQlyMSwJW3IwXQorCWxkcglyMCwgPUdBRlIyX0wKKwlsZHIJcjEsID1DRkdfR0FGUjJfTF9WQUwKKwlzdHIJcjEsIFtyMF0KIAotCWxkcgkJcjAsCT1HQUZSMl9VCi0JbGRyCQlyMSwJPUNGR19HQUZSMl9VX1ZBTAotCXN0cgkJcjEsCVtyMF0KKwlsZHIJcjAsID1HQUZSMl9VCisJbGRyCXIxLCA9Q0ZHX0dBRlIyX1VfVkFMCisJc3RyCXIxLCBbcjBdCiAKLQlsZHIJCXIwLAk9UFNTUgkJCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCi0JbGRyCQlyMSwJPUNGR19QU1NSX1ZBTAotCXN0cgkJcjEsCVtyMF0KKwlsZHIJcjAsID1QU1NSCQkJLyogZW5hYmxlIEdQSU8gcGlucyAqLworCWxkcglyMSwgPUNGR19QU1NSX1ZBTAorCXN0cglyMSwgW3IwXQogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTEyNiwxOSArMTI2LDE5IEBACiAJLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotCWxkcgkJcjMsCT1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgCXIyLAkjMAotCXN0ciAJcjIsCVtyM10KLQlsZHIgCXI0LAk9MHgzMDAJCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KLQkJCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLworCWxkcglyMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLworCW1vdglyMiwgIzAKKwlzdHIJcjIsIFtyM10KKwlsZHIJcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCisJCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwogMToKLQlsZHIgCXIyLAlbcjNdCi0JY21wIAlyNCwJcjIKLQliZ3QgCTFiCisJbGRyCXIyLCBbcjNdCisJY21wCXI0LCByMgorCWJndAkxYgogCiBtZW1faW5pdDoKIAotCWxkciAgCXIxLAk9TUVNQ19CQVNFCQkvKiBnZXQgbWVtb3J5IGNvbnRyb2xsZXIgYmFzZSBhZGRyLiAqLworCWxkcglyMSwgPU1FTUNfQkFTRQkJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAJLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyICAgICAgICAqLwpAQCAtMTQ3LDU4ICsxNDcsNTggQEAKIAkvKiBNU0MgcmVnaXN0ZXJzOiB0aW1pbmcsIGJ1cyB3aWR0aCwgbWVtIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICovCiAKIAkvKiBNU0MwOiBuQ1MoMCwxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAJcjIsCT1DRkdfTVNDMF9WQUwKLQlzdHIgIAlyMiwJW3IxLCAjTVNDMF9PRkZTRVRdCi0JbGRyICAJcjIsCVtyMSwgI01TQzBfT0ZGU0VUXQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlICAgICAgKi8KKwlsZHIJcjIsID1DRkdfTVNDMF9WQUwKKwlzdHIJcjIsIFtyMSwgI01TQzBfT0ZGU0VUXQorCWxkcglyMiwgW3IxLCAjTVNDMF9PRkZTRVRdCQkvKiByZWFkIGJhY2sgdG8gZW5zdXJlICAgICAgKi8KIAkJCQkJCS8qIHRoYXQgZGF0YSBsYXRjaGVzICAgICAgICAqLwogCS8qIE1TQzE6IG5DUygyLDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgIAlyMiwJPUNGR19NU0MxX1ZBTAotCXN0ciAgCXIyLAlbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIgIAlyMiwJW3IxLCAjTVNDMV9PRkZTRVRdCisJbGRyCXIyLCA9Q0ZHX01TQzFfVkFMCisJc3RyCXIyLCBbcjEsICNNU0MxX09GRlNFVF0KKwlsZHIJcjIsIFtyMSwgI01TQzFfT0ZGU0VUXQogCiAJLyogTVNDMjogbkNTKDQsNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgCXIyLAk9Q0ZHX01TQzJfVkFMCi0Jc3RyICAJcjIsCVtyMSwgI01TQzJfT0ZGU0VUXQotCWxkciAgCXIyLAlbcjEsICNNU0MyX09GRlNFVF0KKwlsZHIJcjIsID1DRkdfTVNDMl9WQUwKKwlzdHIJcjIsIFtyMSwgI01TQzJfT0ZGU0VUXQorCWxkcglyMiwgW3IxLCAjTVNDMl9PRkZTRVRdCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAJLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogCS8qIE1FQ1I6IE1lbW9yeSBFeHBhbnNpb24gQ2FyZCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgIAlyMiwJPUNGR19NRUNSX1ZBTAotCXN0ciAgCXIyLAlbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJIAlyMiwJW3IxLCAjTUVDUl9PRkZTRVRdCisJbGRyCXIyLCA9Q0ZHX01FQ1JfVkFMCisJc3RyCXIyLCBbcjEsICNNRUNSX09GRlNFVF0KKwlsZHIJcjIsIFtyMSwgI01FQ1JfT0ZGU0VUXQogCiAJLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgCXIyLAk9Q0ZHX01DTUVNMF9WQUwKLQlzdHIgIAlyMiwJW3IxLCAjTUNNRU0wX09GRlNFVF0KLQlsZHIJIAlyMiwJW3IxLCAjTUNNRU0wX09GRlNFVF0KKwlsZHIJcjIsID1DRkdfTUNNRU0wX1ZBTAorCXN0cglyMiwgW3IxLCAjTUNNRU0wX09GRlNFVF0KKwlsZHIJcjIsIFtyMSwgI01DTUVNMF9PRkZTRVRdCiAKIAkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAJcjIsCT1DRkdfTUNNRU0xX1ZBTAotCXN0ciAgCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQotCWxkcgkgCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQorCWxkcglyMiwgPUNGR19NQ01FTTFfVkFMCisJc3RyCXIyLCBbcjEsICNNQ01FTTFfT0ZGU0VUXQorCWxkcglyMiwgW3IxLCAjTUNNRU0xX09GRlNFVF0KIAogCS8qIE1DQVRUMDogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgKi8KLQlsZHIgIAlyMiwJPUNGR19NQ0FUVDBfVkFMCi0Jc3RyICAJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCSAJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCisJbGRyCXIyLCA9Q0ZHX01DQVRUMF9WQUwKKwlzdHIJcjIsIFtyMSwgI01DQVRUMF9PRkZTRVRdCisJbGRyCXIyLCBbcjEsICNNQ0FUVDBfT0ZGU0VUXQogCiAJLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLwotCWxkciAgCXIyLCA9Q0ZHX01DQVRUMV9WQUwKLQlzdHIgIAlyMiwgW3IxLCAjTUNBVFQxX09GRlNFVF0KLQlsZHIJIAlyMiwJW3IxLCAjTUNBVFQxX09GRlNFVF0KKwlsZHIJcjIsID1DRkdfTUNBVFQxX1ZBTAorCXN0cglyMiwgW3IxLCAjTUNBVFQxX09GRlNFVF0KKwlsZHIJcjIsIFtyMSwgI01DQVRUMV9PRkZTRVRdCiAKIAkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAJcjIsID1DRkdfTUNJTzBfVkFMCi0Jc3RyICAJcjIsIFtyMSwgI01DSU8wX09GRlNFVF0KLQlsZHIJIAlyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQorCWxkcglyMiwgPUNGR19NQ0lPMF9WQUwKKwlzdHIJcjIsIFtyMSwgI01DSU8wX09GRlNFVF0KKwlsZHIJcjIsIFtyMSwgI01DSU8wX09GRlNFVF0KIAogCS8qIE1DSU8xOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAgICAgICAgKi8KLQlsZHIgIAlyMiwgPUNGR19NQ0lPMV9WQUwKLQlzdHIgIAlyMiwgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcgkgCXIyLAlbcjEsICNNQ0lPMV9PRkZTRVRdCisJbGRyCXIyLCA9Q0ZHX01DSU8xX1ZBTAorCXN0cglyMiwgW3IxLCAjTUNJTzFfT0ZGU0VUXQorCWxkcglyMiwgW3IxLCAjTUNJTzFfT0ZGU0VUXQogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PyAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTIxMiwxNiArMjEyLDE2IEBACiAJLyogQmVmb3JlIGFjY2Vzc2luZyBNRFJFRlIgd2UgbmVlZCBhIHZhbGlkIERSSSBmaWVsZCwgc28gd2Ugc2V0ICAgICAqLwogCS8qIHRoaXMgdG8gcG93ZXIgb24gZGVmYXVsdHMgKyBEUkkgZmllbGQsIHNldCBTRFJBTSBjbG9ja3MgZnJlZSBydW5uaW5nICovCiAKLQlsZHIgIAlyMywgPUNGR19NRFJFRlJfVkFMCi0JbGRyICAJcjIsID0weEZGRgotCWFuZCAgCXIzLCByMywgIHIyCisJbGRyCXIzLCA9Q0ZHX01EUkVGUl9WQUwKKwlsZHIJcjIsID0weEZGRgorCWFuZAlyMywgcjMsICByMgogCi0JbGRyCSAJcjAsCVtyMSwgI01EUkVGUl9PRkZTRVRdCi0JYmljCSAJcjAsIHIwLCByMgotCWJpYwkgCXIwLCByMCwgIyhNRFJFRlJfSzBGUkVFfE1EUkVGUl9LMUZSRUV8TURSRUZSX0syRlJFRSkKLQlvcnIJIAlyMCwgcjAsIHIzCisJbGRyCXIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWJpYwlyMCwgcjAsIHIyCisJYmljCXIwLCByMCwgIyhNRFJFRlJfSzBGUkVFfE1EUkVGUl9LMUZSRUV8TURSRUZSX0syRlJFRSkKKwlvcnIJcjAsIHIwLCByMwogCi0Jc3RyCQlyMCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCisJc3RyCXIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMjQ0LDE4ICsyNDQsMTggQEAKIAkvKiBzZXQgTURSRUZSIGFjY29yZGluZyB0byB1c2VyIGRlZmluZSB3aXRoIGV4Y2VwdGlvbiBvZiBhIGZldyBiaXRzICovCiAKIAlsZHIgICAgIHI0LCA9Q0ZHX01EUkVGUl9WQUwKLQlsZHIJCXIyLCA9KE1EUkVGUl9LMFJVTnxNRFJFRlJfSzBEQjJ8TURSRUZSX0sxUlVOfE1EUkVGUl9LMURCMnxcCisJbGRyCXIyLCA9KE1EUkVGUl9LMFJVTnxNRFJFRlJfSzBEQjJ8TURSRUZSX0sxUlVOfE1EUkVGUl9LMURCMnxcCiAJCQkJCU1EUkVGUl9LMlJVTiB8TURSRUZSX0syREIyKQotCWFuZAkJcjQsIHI0LCByMgotCWJpYwkJcjAsCXIwLAlyMgotCW9ycgkJcjAsIHIwLCByNAorCWFuZAlyNCwgcjQsIHIyCisJYmljCXIwLCByMCwgcjIKKwlvcnIJcjAsIHIwLCByNAogCiAJc3RyICAgICByMCwgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCiAJbGRyICAgICByMCwgW3IxLCAjTURSRUZSX09GRlNFVF0KIAogCS8qIFN0ZXAgNGI6IGRlLWFzc2VydCBNRFJFRlI6U0xGUlNILiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotCWJpYwkJcjAsIHIwLAkjKE1EUkVGUl9TTEZSU0gpCisJYmljCXIwLCByMCwgIyhNRFJFRlJfU0xGUlNIKQogCXN0ciAgICAgcjAsIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwogCWxkciAgICAgcjAsIFtyMSwgI01EUkVGUl9PRkZTRVRdCiAKQEAgLTI2MywxMCArMjYzLDEwIEBACiAJLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gYXMgZGVzaXJlZCwgc2V0IEtYRlJFRSAgKi8KIAogCWxkciAgICAgcjQsID1DRkdfTURSRUZSX1ZBTAotCWxkcgkJcjIsID0oTURSRUZSX0UwUElOfE1EUkVGUl9FMVBJTnxNRFJFRlJfSzBGUkVFfCBcCi0JCQkJCU1EUkVGUl9LMUZSRUUgfCBNRFJFRlJfSzJGUkVFKQotCWFuZAkJcjQsIHI0LCByMgotCW9ycgkJcjAsIHIwLCByNAorCWxkcglyMiwgPShNRFJFRlJfRTBQSU58TURSRUZSX0UxUElOfE1EUkVGUl9LMEZSRUV8IFwKKwkJCU1EUkVGUl9LMUZSRUUgfCBNRFJFRlJfSzJGUkVFKQorCWFuZAlyNCwgcjQsIHIyCisJb3JyCXIwLCByMCwgcjQKIAlzdHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KIAlsZHIgICAgIHIwLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQogCkBAIC0yNzQsOSArMjc0LDkgQEAKIAkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCiAJLyogICAgICAgICAgY29uZmlndXJlIGJ1dCBub3QgZW5hYmxlIGVhY2ggU0RSQU0gcGFydGl0aW9uIHBhaXIuICAgICAqLwogCi0JbGRyCQlyNCwJPUNGR19NRENORkdfVkFMCi0JYmljCQlyNCwJcjQsCSMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCWJpYwkJcjQsIHI0LAkjKE1EQ05GR19ERTJ8TURDTkZHX0RFMykKKwlsZHIJcjQsID1DRkdfTURDTkZHX1ZBTAorCWJpYwlyNCwgcjQsICMoTURDTkZHX0RFMHxNRENORkdfREUxKQorCWJpYwlyNCwgcjQsICMoTURDTkZHX0RFMnxNRENORkdfREUzKQogCXN0ciAgICAgcjQsIFtyMSwgI01EQ05GR19PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURDTkZHICAgICAgICAqLwogCWxkciAgICAgcjQsIFtyMSwgI01EQ05GR19PRkZTRVRdCiAKQEAgLTI4NCwxNSArMjg0LDE1IEBACiAJLyogU3RlcCA0ZTogV2FpdCBmb3IgdGhlIGNsb2NrIHRvIHRoZSBTRFJBTXMgdG8gc3RhYmlsaXplLCAgICAgICAgICAqLwogCS8qICAgICAgICAgIDEwMC4uMjAwILVzZWMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotCWxkciAJcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgCXIyLCAjMAotCXN0ciAJcjIsIFtyM10KLQlsZHIgCXI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLworCWxkcglyMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLworCW1vdglyMiwgIzAKKwlzdHIJcjIsIFtyM10KKwlsZHIJcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCiAJCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwogMToKLQlsZHIgCXIyLCBbcjNdCi0JY21wIAlyNCwgcjIKLQliZ3QgCTFiCisJbGRyCXIyLCBbcjNdCisJY21wCXI0LCByMgorCWJndAkxYgogCiAKIAkvKiBTdGVwIDRmOiBUcmlnZ2VyIGEgbnVtYmVyICh1c3VhbGx5IDgpIHJlZnJlc2ggY3ljbGVzIGJ5ICAgICAgICAgICovCkBAIC0zMDEsMTYgKzMwMSwxNiBAQAogCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KIAkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCiAKLQlsZHIJCXIzLAk9Q0ZHX0RSQU1fQkFTRQorCWxkcglyMywgPUNGR19EUkFNX0JBU0UKIC5yZXB0IDgKLQlzdHIJCXIyLAlbcjNdCisJc3RyCXIyLCBbcjNdCiAuZW5kcgogCiAJLyogU3RlcCA0ZzogV3JpdGUgTURDTkZHIHdpdGggZW5hYmxlIGJpdHMgYXNzZXJ0ZWQgICAgICAgICAgICAgICAgICAqLwogCS8qICAgICAgICAgIChNRENORkc6REV4IHNldCB0byAxKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogCWxkciAgICAgcjMsIFtyMSwgI01EQ05GR19PRkZTRVRdCi0Jb3JyCXIzLAlyMywJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCisJb3JyCXIzLCByMywgIyhNRENORkdfREUwfE1EQ05GR19ERTEpCiAJc3RyICAgICByMywgW3IxLCAjTURDTkZHX09GRlNFVF0KIAogCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTM3OCwyNyArMzc4LDI3IEBACiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAJLyogU2F2ZSBTRFJBTSBzaXplICovCi0gICAgbGRyICAgICByMSwgPURSQU1fU0laRQotCXN0ciAgIAlyOCwgW3IxXQorCWxkciAgICAgcjEsID1EUkFNX1NJWkUKKwlzdHIJcjgsIFtyMV0KIAogCS8qIEludGVycnVwdCBpbml0OiBNYXNrIGFsbCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBsZHIJCXIwLAk9SUNNUiAvKiBlbmFibGUgbm8gc291cmNlcyAqLwotCW1vdiAJcjEsCSMwCi0gICAgc3RyIAlyMSwJW3IwXQorCWxkcglyMCwgPUlDTVIgLyogZW5hYmxlIG5vIHNvdXJjZXMgKi8KKwltb3YJcjEsICMwCisJc3RyCXIxLCBbcjBdCiAKIAkvKiBGSVhNRSAqLwogCiAjZGVmaW5lIE5PREVCVUcKICNpZmRlZiBOT0RFQlVHCiAJLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CQlyMCwjMAotCW1jcgkJcDE1LDAscjAsYzE0LGM4LDAgIC8qIGliY3IwICovCi0JbWNyCQlwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLworCW1vdglyMCwjMAorCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCisJbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLwogCiAJLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KLQltb3YJCXIwLCMweDgwMDAwMDAwCi0JbWNyCQlwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLworCW1vdglyMCwjMHg4MDAwMDAwMAorCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwogCiAjZW5kaWYKIApAQCAtNDA4LDQgKzQwOCw0IEBACiAKIGVuZGxvd2xldmVsX2luaXQ6CiAKLSAgICBtb3YgICAgIHBjLAlscgorCW1vdiAgICAgcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9jbTUyMDAvdS1ib290LmxkcyBiL2JvYXJkL2NtNTIwMC91LWJvb3QubGRzCmluZGV4IDVkMmVmYWQuLjg3ZjM3ZGUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NtNTIwMC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2NtNTIwMC91LWJvb3QubGRzCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvY21jX3B1Mi9jbWNfcHUyLmMgYi9ib2FyZC9jbWNfcHUyL2NtY19wdTIuYwppbmRleCAzNzRjZDA3Li4zYWQ3NTZkIDEwMDY0NAotLS0gYS9ib2FyZC9jbWNfcHUyL2NtY19wdTIuYworKysgYi9ib2FyZC9jbWNfcHUyL2NtY19wdTIuYwpAQCAtNzMsNyArNzMsNyBAQAogCXBpb2MtPlBJT19QUFVEUiA9IEFUOTFDX1BJT19QQzAgfCBBVDkxQ19QSU9fUEMxIHwKIAkJCUFUOTFDX1BJT19QQzIgfCBBVDkxQ19QSU9fUEMzOwogCXBpb2MtPlBJT19QRVIgPSBBVDkxQ19QSU9fUEMwIHwgQVQ5MUNfUElPX1BDMSB8Ci0JICAgICAgICAJQVQ5MUNfUElPX1BDMiB8IEFUOTFDX1BJT19QQzM7CisJCQlBVDkxQ19QSU9fUEMyIHwgQVQ5MUNfUElPX1BDMzsKIAogCS8qCiAJICogT24gQ01DLVBVMiBib2FyZCBjb25maWd1cmUgUEIzLVBCNiB0byBpbnB1dCB3aXRob3V0IHB1bGwgdXBzIHRvCmRpZmYgLS1naXQgYS9ib2FyZC9jbWkvZmxhc2guYyBiL2JvYXJkL2NtaS9mbGFzaC5jCmluZGV4IGY3YzI1ZjQuLmY1N2Q4ZWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NtaS9mbGFzaC5jCisrKyBiL2JvYXJkL2NtaS9mbGFzaC5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiBGaWxlOgkJZmxhc2guYwogICoKICAqIERpc2NyaXB0aW9uOgkJVGhpcyBEcml2ZXIgaXMgZm9yIDI4RjMyMEozQSwgMjhGNjQwSjNBIGFuZAotICogCQkJMjhGMTI4SjNBIEludGVsIGZsYXNocyB3b3JraW5nIGluIDE2IEJpdCBtb2RlLgorICoJCQkyOEYxMjhKM0EgSW50ZWwgZmxhc2hzIHdvcmtpbmcgaW4gMTYgQml0IG1vZGUuCiAgKgkJCVRoZXkgYXJlIHNpbmdsZSBiYW5rIGZsYXNocy4KICAqCiAgKgkJCU1vc3Qgb2YgdGhpcyBjb2RlIGlzIHRha2VuIGZyb20gZXhpc3RpbmcgdS1ib290CkBAIC02Nyw5ICs2Nyw5IEBACiAvKgogICogTG9jYWwgZnVuY3Rpb24gcHJvdG90eXBlcwogICovCi1zdGF0aWMgdWxvbmcgCWZsYXNoX2dldF9zaXplIAkJKHZ1X3Nob3J0ICphZGRyLCBmbGFzaF9pbmZvX3QgKmluZm8pOwotc3RhdGljIGludCAJd3JpdGVfc2hvcnQgCQkoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSk7Ci1zdGF0aWMgdm9pZCAJZmxhc2hfZ2V0X29mZnNldHMgCSh1bG9uZyBiYXNlLCBmbGFzaF9pbmZvX3QgKmluZm8pOworc3RhdGljIHVsb25nCWZsYXNoX2dldF9zaXplCQkodnVfc2hvcnQgKmFkZHIsIGZsYXNoX2luZm9fdCAqaW5mbyk7CitzdGF0aWMgaW50CXdyaXRlX3Nob3J0CQkoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSk7CitzdGF0aWMgdm9pZAlmbGFzaF9nZXRfb2Zmc2V0cwkodWxvbmcgYmFzZSwgZmxhc2hfaW5mb190ICppbmZvKTsKIAogLyoKICAqIEluaXRpYWxpemUgZmxhc2gKZGlmZiAtLWdpdCBhL2JvYXJkL2NvYnJhNTI3Mi91LWJvb3QubGRzIGIvYm9hcmQvY29icmE1MjcyL3UtYm9vdC5sZHMKaW5kZXggOGY3MTllYS4uZjk5YTIzNiAxMDA2NDQKLS0tIGEvYm9hcmQvY29icmE1MjcyL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvY29icmE1MjcyL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9jb2dlbnQvbGNkLmggYi9ib2FyZC9jb2dlbnQvbGNkLmgKaW5kZXggMTA1NmVlYS4uOWU2MTU3ZSAxMDA2NDQKLS0tIGEvYm9hcmQvY29nZW50L2xjZC5oCisrKyBiL2JvYXJkL2NvZ2VudC9sY2QuaApAQCAtNzAsNyArNzAsNyBAQAogCiAvKiBMQ0Qgc3RhdHVzIHZhbHVlcyAqLwogI2RlZmluZSBMQ0RfT0sJCTB4MDAKLSNkZWZpbmUgTENEX0VSUiAJMHgwMQorI2RlZmluZSBMQ0RfRVJSCQkweDAxCiAKICNkZWZpbmUgTENEX0xJTkUwCTB4MDAKICNkZWZpbmUgTENEX0xJTkUxCTB4NDAKZGlmZiAtLWdpdCBhL2JvYXJkL2NvZ2VudC91LWJvb3QubGRzIGIvYm9hcmQvY29nZW50L3UtYm9vdC5sZHMKaW5kZXggOGQ5YzA4ZS4uNTlkNjJlMSAxMDA2NDQKLS0tIGEvYm9hcmQvY29nZW50L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvY29nZW50L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9jb2dlbnQvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2NvZ2VudC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDc1MzQxMWYuLmMzMzU4MWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NvZ2VudC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2NvZ2VudC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvY3BjNDUvcGx4OTAzMC5jIGIvYm9hcmQvY3BjNDUvcGx4OTAzMC5jCmluZGV4IDk5ZWMzOWEuLjM3MTFjY2IgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NwYzQ1L3BseDkwMzAuYworKysgYi9ib2FyZC9jcGM0NS9wbHg5MDMwLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAogLyogUExYOTAzMCByZWdpc3RlciBvZmZzZXRzICAqLwogI2RlZmluZQlQOTAzMF9MQVMwUlIJMHgwMAotI2RlZmluZQlQOTAzMF9MQVMxUlIgCTB4MDQKKyNkZWZpbmUJUDkwMzBfTEFTMVJSCTB4MDQKICNkZWZpbmUJUDkwMzBfTEFTMlJSCTB4MDgKICNkZWZpbmUJUDkwMzBfTEFTM1JSCTB4MGMKICNkZWZpbmUJUDkwMzBfRVJPTVJSCTB4MTAKQEAgLTcyLDggKzcyLDggQEAKICNkZWZpbmUJUDkwMzBfQ1MxQkFTRQkweDQwCiAjZGVmaW5lCVA5MDMwX0NTMkJBU0UJMHg0NAogI2RlZmluZQlQOTAzMF9DUzNCQVNFCTB4NDgKLSNkZWZpbmUJUDkwMzBfSU5UQ1NSIAkweDRjCi0jZGVmaW5lCVA5MDMwX0NOVFJMICAJMHg1MAorI2RlZmluZQlQOTAzMF9JTlRDU1IJMHg0YworI2RlZmluZQlQOTAzMF9DTlRSTAkweDUwCiAjZGVmaW5lCVA5MDMwX0dQSU9DCTB4NTQKIAogLyogdHlwZWRlZnMgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2NyYXkvTDEvTDEuaCBiL2JvYXJkL2NyYXkvTDEvTDEuaAppbmRleCAxYjQxODI0Li5jM2EwYjhmIDEwMDY0NAotLS0gYS9ib2FyZC9jcmF5L0wxL0wxLmgKKysrIGIvYm9hcmQvY3JheS9MMS9MMS5oCkBAIC0yNiw3ICsyNiw3IEBACiAgKgogICogICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IEFkZHJlc3MgICAgTGVuZ3RoCiAgKiArKysrKysrKysrKysrKysrKysrKysrKysrIDB4RkZDMF8wMDAwICAgICBTdGFydCBvZiBGbGFzaCAtLS0tLS0tLS0tLS0tLS0tLQotICogfCBGYWlsc2FmZSBMaW51eCBJbWFnZSAgfCAJKDFNKQorICogfCBGYWlsc2FmZSBMaW51eCBJbWFnZSAgfAkoMU0pCiAgKiArPT09PT09PT09PT09PT09PT09PT09PT0rIDB4RkZEMF8wMDAwCiAgKiB8IChSZXNlcnZlZCBGbGFzaEZpbGVzKSB8CSgxTSkKICAqICs9PT09PT09PT09PT09PT09PT09PT09PSsgMHhGRkUwXzAwMDAKQEAgLTM2LDcgKzM2LDcgQEAKICAqIHwgVSBOIFUgUyBFIEQgICAgICAgICAgIHwKICAqIHwgICAgICAgICAgICAgICAgICAgICAgIHwKICAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMHhGRkZEXzAwMDAJVS1Cb290IGltYWdlIGhlYWRlciAoNjQgYnl0ZXMpCi0gKiB8IGVudmlyb25tZW50IHNldHRpbmdzICB8IAkoNjRrKQorICogfCBlbnZpcm9ubWVudCBzZXR0aW5ncyAgfAkoNjRrKQogICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAweEZGRkVfMDAwMAlVLUJvb3QgaW1hZ2UgaGVhZGVyICg2NCBieXRlcykKICAqIHwgVS1Cb290ICAgICAgICAgICAgICAgIHwgMHhGRkZFXzAwNDAgICAgX3N0YXJ0IG9mIFUtQm9vdAogICogfCAgICAgICAgICAgICAgICAgICAgICAgfCAweEZGRkVfRkZGQyAgICByZXNldCB2ZWN0b3IgLSBicmFuY2ggdG8gX3N0YXJ0CmRpZmYgLS1naXQgYS9ib2FyZC9jcmF5L0wxL3UtYm9vdC5sZHMgYi9ib2FyZC9jcmF5L0wxL3UtYm9vdC5sZHMKaW5kZXggNTZjNmNkYi4uYTZiYmVmMyAxMDA2NDQKLS0tIGEvYm9hcmQvY3JheS9MMS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2NyYXkvTDEvdS1ib290LmxkcwpAQCAtMzksMTEgKzM5LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2NyYXkvTDEvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2NyYXkvTDEvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA4OGRjYWY5Li4wNTUyOTk0IDEwMDY0NAotLS0gYS9ib2FyZC9jcmF5L0wxL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvY3JheS9MMS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvY3NiMjI2L2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2NzYjIyNi9sb3dsZXZlbF9pbml0LlMKaW5kZXggYWE5ZGNiYS4uNGM5ZjEwZiAxMDA2NDQKLS0tIGEvYm9hcmQvY3NiMjI2L2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9jc2IyMjYvbG93bGV2ZWxfaW5pdC5TCkBAIC00Myw3ICs0Myw3IEBACiAKIAogLyoKLSAqIAlNZW1vcnkgc2V0dXAKKyAqCU1lbW9yeSBzZXR1cAogICovCiAKIC5nbG9ibCBsb3dsZXZlbF9pbml0CkBAIC0xMjksOCArMTI5LDggQEAKIC8qbG9vcDogKi8KIC8qICovCiAvKiAgIGxkcglyMCwgPTB4QjAwNzAwMDEgKi8KLS8qICAgbGRyICAgIAlyMSwgPV9MRUQgKi8KLS8qICAgc3RyICAgIAlyMCwgW3IxXQkJLyAgaGV4IGRpc3BsYXkgKi8KKy8qICAgbGRyCXIxLCA9X0xFRCAqLworLyogICBzdHIJcjAsIFtyMV0JCS8gIGhleCBkaXNwbGF5ICovCiAKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTIzOSw3ICsyMzksNyBAQAogCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldCAgICAgKi8KIAkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLQlsZHIgCXIzLCAJPUNGR19NRFJFRlJfVkFMCisJbGRyCXIzLAk9Q0ZHX01EUkVGUl9WQUwKIAlsZHIJcjIsCT0weEZGRgogCWFuZAlyMywJcjMsIHIyCiAJbGRyCXI0LAk9MHgwM2NhNDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvY3NiMjcyL3UtYm9vdC5sZHMgYi9ib2FyZC9jc2IyNzIvdS1ib290LmxkcwppbmRleCA0NGFmNzBlLi45NDdmYmQ2IDEwMDY0NAotLS0gYS9ib2FyZC9jc2IyNzIvdS1ib290LmxkcworKysgYi9ib2FyZC9jc2IyNzIvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2NzYjQ3Mi91LWJvb3QubGRzIGIvYm9hcmQvY3NiNDcyL3UtYm9vdC5sZHMKaW5kZXggMDAyMTkxOC4uZGUzNjQzZSAxMDA2NDQKLS0tIGEvYm9hcmQvY3NiNDcyL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvY3NiNDcyL3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9kYXZlL0IyL0IyLmMgYi9ib2FyZC9kYXZlL0IyL0IyLmMKaW5kZXggNjRmZTk0OC4uZWM3NDJhZCAxMDA2NDQKLS0tIGEvYm9hcmQvZGF2ZS9CMi9CMi5jCisrKyBiL2JvYXJkL2RhdmUvQjIvQjIuYwpAQCAtNzgsMTYgKzc4LDE2IEBACiAJSU5UQ09OID0gMHgwNTsKIAogICAgIC8qCi0gICAgCUNvbmZpZ3VyZSBjaGlwIGV0aGVybmV0IGludGVycnVwdCBhcyBIaWdoIGxldmVsCi0gICAgCVBvcnQgRyBFSU5UIDAtNyBFSU5UMCAtPiBDSElQIEVUSEVSTkVUCisJQ29uZmlndXJlIGNoaXAgZXRoZXJuZXQgaW50ZXJydXB0IGFzIEhpZ2ggbGV2ZWwKKwlQb3J0IEcgRUlOVCAwLTcgRUlOVDAgLT4gQ0hJUCBFVEhFUk5FVAogICAgICovCiAJdGVtcCA9IEVYVElOVDsKLSAgIAl0ZW1wICY9IH4weDc7CisJdGVtcCAmPSB+MHg3OwogICAgIHRlbXAgfD0gMHgxOyAvKkxFVkVMX0hJR0gqLwogCUVYVElOVCA9IHRlbXA7CiAKICAgICAvKgotICAgIAlSZXNldCBTTVNDIExBTjkxQzk2IGNoaXAKKwlSZXNldCBTTVNDIExBTjkxQzk2IGNoaXAKICAgICAqLwogICAgIHRlbXA9IFBDT05GOwogICAgIHRlbXAgfD0gMHgwMDAwMDA0MDsKZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvdS1ib290LmxkcyBiL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvdS1ib290LmxkcwppbmRleCAyODliZmYyLi4zMDM3YTA0IDEwMDY0NAotLS0gYS9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZGF2aW5jaS9kdi1ldm0vZHZfYm9hcmQuYyBiL2JvYXJkL2RhdmluY2kvZHYtZXZtL2R2X2JvYXJkLmMKaW5kZXggZGNlODIxYi4uODhiMWU1NyAxMDA2NDQKLS0tIGEvYm9hcmQvZGF2aW5jaS9kdi1ldm0vZHZfYm9hcmQuYworKysgYi9ib2FyZC9kYXZpbmNpL2R2LWV2bS9kdl9ib2FyZC5jCkBAIC03Myw3ICs3Myw3IEBACiAJCShpZCA9PSBEQVZJTkNJX0xQU0NfTWNCU1ApIHx8CiAJCShpZCA9PSBEQVZJTkNJX0xQU0NfR1BJTykKIAkgICApCi0JICAgCSptZGN0bCB8PSAweDIwMDsKKwkJKm1kY3RsIHw9IDB4MjAwOwogCiAJUkVHKFBTQ19QVENNRCkgPSAweDAxOwogCmRpZmYgLS1naXQgYS9ib2FyZC9kYXZpbmNpL3NjaG1vb2dpZS9kdl9ib2FyZC5jIGIvYm9hcmQvZGF2aW5jaS9zY2htb29naWUvZHZfYm9hcmQuYwppbmRleCAwYTA3NTIzLi4xM2QyMTk1IDEwMDY0NAotLS0gYS9ib2FyZC9kYXZpbmNpL3NjaG1vb2dpZS9kdl9ib2FyZC5jCisrKyBiL2JvYXJkL2RhdmluY2kvc2NobW9vZ2llL2R2X2JvYXJkLmMKQEAgLTczLDcgKzczLDcgQEAKIAkJKGlkID09IERBVklOQ0lfTFBTQ19NY0JTUCkgfHwKIAkJKGlkID09IERBVklOQ0lfTFBTQ19HUElPKQogCSAgICkKLQkgICAJKm1kY3RsIHw9IDB4MjAwOworCQkqbWRjdGwgfD0gMHgyMDA7CiAKIAlSRUcoUFNDX1BUQ01EKSA9IDB4MDE7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmluY2kvc29uYXRhL2R2X2JvYXJkLmMgYi9ib2FyZC9kYXZpbmNpL3NvbmF0YS9kdl9ib2FyZC5jCmluZGV4IGNkMmRhYzYuLmU4NjY1ZTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2RhdmluY2kvc29uYXRhL2R2X2JvYXJkLmMKKysrIGIvYm9hcmQvZGF2aW5jaS9zb25hdGEvZHZfYm9hcmQuYwpAQCAtNzMsNyArNzMsNyBAQAogCQkoaWQgPT0gREFWSU5DSV9MUFNDX01jQlNQKSB8fAogCQkoaWQgPT0gREFWSU5DSV9MUFNDX0dQSU8pCiAJICAgKQotCSAgIAkqbWRjdGwgfD0gMHgyMDA7CisJCSptZGN0bCB8PSAweDIwMDsKIAogCVJFRyhQU0NfUFRDTUQpID0gMHgwMTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZWx0ZWMvYmFiN3h4L3UtYm9vdC5sZHMgYi9ib2FyZC9lbHRlYy9iYWI3eHgvdS1ib290LmxkcwppbmRleCAyNWUxNmRlLi4xYTk1NzU1IDEwMDY0NAotLS0gYS9ib2FyZC9lbHRlYy9iYWI3eHgvdS1ib290LmxkcworKysgYi9ib2FyZC9lbHRlYy9iYWI3eHgvdS1ib290LmxkcwpAQCAtMzcsMTEgKzM3LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VsdGVjL2VscHBjL3UtYm9vdC5sZHMgYi9ib2FyZC9lbHRlYy9lbHBwYy91LWJvb3QubGRzCmluZGV4IDI1ZTE2ZGUuLjFhOTU3NTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VsdGVjL2VscHBjL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZWx0ZWMvZWxwcGMvdS1ib290LmxkcwpAQCAtMzcsMTEgKzM3LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VsdGVjL21ocGMvdS1ib290LmxkcyBiL2JvYXJkL2VsdGVjL21ocGMvdS1ib290LmxkcwppbmRleCA5NGFiNzQ1Li44NTExN2FhIDEwMDY0NAotLS0gYS9ib2FyZC9lbHRlYy9taHBjL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZWx0ZWMvbWhwYy91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZWx0ZWMvbWhwYy91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvZWx0ZWMvbWhwYy91LWJvb3QubGRzLmRlYnVnCmluZGV4IDFhMjVhOTguLjg1MDcyZmUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VsdGVjL21ocGMvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9lbHRlYy9taHBjL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lbWsvdG9wODYwL3UtYm9vdC5sZHMgYi9ib2FyZC9lbWsvdG9wODYwL3UtYm9vdC5sZHMKaW5kZXggMjE2ODA4Ny4uOTdlZjg5YSAxMDA2NDQKLS0tIGEvYm9hcmQvZW1rL3RvcDg2MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2Vtay90b3A4NjAvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2Vtay90b3A4NjAvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2Vtay90b3A4NjAvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCAyNWJiZDI2Li41ZDk3MDk1IDEwMDY0NAotLS0gYS9ib2FyZC9lbWsvdG9wODYwL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvZW1rL3RvcDg2MC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXA4MjYwL2ZsYXNoLmMgYi9ib2FyZC9lcDgyNjAvZmxhc2guYwppbmRleCAyNzhkNjA2Li45NjZhMzQ1IDEwMDY0NAotLS0gYS9ib2FyZC9lcDgyNjAvZmxhc2guYworKysgYi9ib2FyZC9lcDgyNjAvZmxhc2guYwpAQCAtNzIsNyArNzIsNyBAQAogCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047CiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDA7CiAJCWluZm8tPnNpemUgPSAwOwotCQlyZXR1cm4gKDApOyAgCQkJCS8qIG5vIG9yIHVua25vd24gZmxhc2gJICAgKi8KKwkJcmV0dXJuICgwKTsJCQkJLyogbm8gb3IgdW5rbm93biBmbGFzaAkgICAqLwogCX0KIAogCWZsYXNodGVzdF9oID0gVl9VTE9ORyhiYXNlYWRkciArIDgpOwkgICAgICAgIC8qIGRldmljZSBJRAkJICAgKi8KQEAgLTkxLDExICs5MSwxMSBAQAogCWNhc2UgQU1EX0lEX0xWNjQwVToJLyogQU1ETFY2NDAgYW5kIEFNRExWNjQxIGhhdmUgc2FtZSBJRCAqLwogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTUxWNjQwVTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTI4OwotCQlpbmZvLT5zaXplID0gMHgwMjAwMDAwMDsgCS8qIDQgKiA4IE1CID0gMzIgTUIJKi8KKwkJaW5mby0+c2l6ZSA9IDB4MDIwMDAwMDA7CS8qIDQgKiA4IE1CID0gMzIgTUIJKi8KIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwotCQlyZXR1cm4oMCk7ICAJCQkgCS8qIG5vIG9yIHVua25vd24gZmxhc2gJICAgKi8KKwkJcmV0dXJuKDApOwkJCQkvKiBubyBvciB1bmtub3duIGZsYXNoCSAgICovCiAJfQogCiAJaWYoZmxhc2h0ZXN0X2ggPT0gQU1EX0lEX0xWNjQwVSkgewpkaWZmIC0tZ2l0IGEvYm9hcmQvZXA4Mnh4bS9lcDgyeHhtLmMgYi9ib2FyZC9lcDgyeHhtL2VwODJ4eG0uYwppbmRleCBmZTNmNzhlLi4yNzQ0M2QzIDEwMDY0NAotLS0gYS9ib2FyZC9lcDgyeHhtL2VwODJ4eG0uYworKysgYi9ib2FyZC9lcDgyeHhtL2VwODJ4eG0uYwpAQCAtNDYsMTQ2ICs0NiwxNDYgQEAKIAogICAgIC8qIFBvcnQgQSAqLwogICAgIHsJLyoJICAgICBjb25mICAgICAgcHBhciBwc29yIHBkaXIgcG9kciBwZGF0ICovCi0JLyogUEEzMSAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTMxCSAgICAgKi8KLQkvKiBQQTMwICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMzAJICAgICAqLwotCS8qIFBBMjkgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEEyOQkgICAgICovCi0JLyogUEEyOCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTI4CSAgICAgKi8KLQkvKiBQQTI3ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMjcJICAgICAqLwotCS8qIFBBMjYgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEEyNgkgICAgICovCi0JLyogUEEyNSAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTI1ICAgICAgICAgICAgKi8KLQkvKiBQQTI0ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMjQgICAgICAgICAgICAqLwotCS8qIFBBMjMgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEEyMyAgICAgICAgICAgICovCi0JLyogUEEyMiAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQTIyICAgICAgICAgICAgKi8KLQkvKiBQQTIxICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMjEJICAgICAqLwotCS8qIFBBMjAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEEyMCAJICAgICAqLwotCS8qIFBBMTkgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEExOQkgICAgICovCi0JLyogUEExOCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTE4CSAgICAgKi8KLQkvKiBQQTE3ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMTcgIAkgICAgICovCi0JLyogUEExNiAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTE2CSAgICAgKi8KLQkvKiBQQTE1ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMTUJICAgICAqLwotCS8qIFBBMTQgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEExNAkgICAgICovCi0JLyogUEExMyAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTEzICAgICAgICAgICAgKi8KLQkvKiBQQTEyICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMTIgICAgICAgICAgICAqLwotCS8qIFBBMTEgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEExMSAgICAgICAgICAgICovCi0JLyogUEExMCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTEwICAgICAgICAgICAgKi8KLQkvKiBQQTkgICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDEsICAgMCwgICAxIH0sIC8qIFNNQzIgVHhEICAgICAgICAqLwotCS8qIFBBOCAgKi8geyAxLCAgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogU01DMiBSeEQgICAgICAgICovCi0JLyogUEE3ICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTcgICAgICAgICAgICAgKi8KLQkvKiBQQTYgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBNiAgICAgICAgICAgICAqLwotCS8qIFBBNSAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEE1ICAgICAgICAgICAgICovCi0JLyogUEE0ICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTQgICAgICAgICAgICAgKi8KLQkvKiBQQTMgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBBMyAgICAgICAgICAgICAqLwotCS8qIFBBMiAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEEyICAgICAgICAgICAgICovCi0JLyogUEExICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQQTEgICAgICAgICAgICAgKi8KLQkvKiBQQTAgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0gIC8qIFBBMCAgICAgICAgICAgICAqLworCS8qIFBBMzEgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEEzMQkgICAgICovCisJLyogUEEzMCAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTMwCSAgICAgKi8KKwkvKiBQQTI5ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMjkJICAgICAqLworCS8qIFBBMjggKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEEyOAkgICAgICovCisJLyogUEEyNyAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTI3CSAgICAgKi8KKwkvKiBQQTI2ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMjYJICAgICAqLworCS8qIFBBMjUgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEEyNQkgICAgICovCisJLyogUEEyNCAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTI0CSAgICAgKi8KKwkvKiBQQTIzICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMjMJICAgICAqLworCS8qIFBBMjIgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogUEEyMgkgICAgICovCisJLyogUEEyMSAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTIxCSAgICAgKi8KKwkvKiBQQTIwICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMjAJICAgICAqLworCS8qIFBBMTkgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEExOQkgICAgICovCisJLyogUEExOCAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTE4CSAgICAgKi8KKwkvKiBQQTE3ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMTcJICAgICAqLworCS8qIFBBMTYgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEExNgkgICAgICovCisJLyogUEExNSAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTE1CSAgICAgKi8KKwkvKiBQQTE0ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMTQJICAgICAqLworCS8qIFBBMTMgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEExMwkgICAgICovCisJLyogUEExMiAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTEyCSAgICAgKi8KKwkvKiBQQTExICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBBMTEJICAgICAqLworCS8qIFBBMTAgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEExMAkgICAgICovCisJLyogUEE5CSovIHsgMSwJCSAxLCAgIDAsICAgMSwJMCwgICAxIH0sIC8qIFNNQzIgVHhECSAgICAgKi8KKwkvKiBQQTgJKi8geyAxLAkJIDEsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogU01DMiBSeEQJICAgICAqLworCS8qIFBBNwkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTcJICAgICAqLworCS8qIFBBNgkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTYJICAgICAqLworCS8qIFBBNQkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTUJICAgICAqLworCS8qIFBBNAkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTQJICAgICAqLworCS8qIFBBMwkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTMJICAgICAqLworCS8qIFBBMgkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTIJICAgICAqLworCS8qIFBBMQkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQQTEJICAgICAqLworCS8qIFBBMAkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9ICAvKiBQQTAJICAgICAqLwogICAgIH0sCiAKICAgICAvKiBQb3J0IEIgKi8KLSAgICB7ICAgLyoJICAgICBjb25mICAgICAgIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCAqLwotCS8qIFBCMzEgKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogRkNDMiBNSUkgVFhfRVIgICovCi0JLyogUEIzMCAqLyB7IENGR19GQ0MyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MyIE1JSSBSWF9EViAgKi8KLQkvKiBQQjI5ICovIHsgQ0ZHX0ZDQzIsICAgMSwgICAxLCAgIDEsICAgMCwgICAwIH0sIC8qIEZDQzIgTUlJIFRYX0VOICAqLwotCS8qIFBCMjggKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMiBNSUkgUlhfRVIgICovCi0JLyogUEIyNyAqLyB7IENGR19GQ0MyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MyIE1JSSBDT0wgICAgKi8KLQkvKiBQQjI2ICovIHsgQ0ZHX0ZDQzIsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIEZDQzIgTUlJIENSUyAgICAqLwotCS8qIFBCMjUgKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogRkNDMiBNSUkgVHhEWzNdICovCi0JLyogUEIyNCAqLyB7IENGR19GQ0MyLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBGQ0MyIE1JSSBUeERbMl0gKi8KLQkvKiBQQjIzICovIHsgQ0ZHX0ZDQzIsICAgMSwgICAwLCAgIDEsICAgMCwgICAwIH0sIC8qIEZDQzIgTUlJIFR4RFsxXSAqLwotCS8qIFBCMjIgKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogRkNDMiBNSUkgVHhEWzBdICovCi0JLyogUEIyMSAqLyB7IENGR19GQ0MyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MyIE1JSSBSeERbMF0gKi8KLQkvKiBQQjIwICovIHsgQ0ZHX0ZDQzIsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIEZDQzIgTUlJIFJ4RFsxXSAqLwotCS8qIFBCMTkgKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMiBNSUkgUnhEWzJdICovCi0JLyogUEIxOCAqLyB7IENGR19GQ0MyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MyIE1JSSBSeERbM10gKi8KLQkvKiBQQjE3ICovIHsgQ0ZHX0ZDQzMsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIEZDQzM6UlhfRElWICAgICAqLwotCS8qIFBCMTYgKi8geyBDRkdfRkNDMywgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMzpSWF9FUlIgICAgICovCi0JLyogUEIxNSAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBGQ0MzOlRYX0VSUiAgICAgKi8KLQkvKiBQQjE0ICovIHsgQ0ZHX0ZDQzMsICAgMSwgICAwLCAgIDEsICAgMCwgICAwIH0sIC8qIEZDQzM6VFhfRU4gICAgICAqLwotCS8qIFBCMTMgKi8geyBDRkdfRkNDMywgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMzpDT0wJICAgICAqLwotCS8qIFBCMTIgKi8geyBDRkdfRkNDMywgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMzpDUlMgICAgICAgICovCi0JLyogUEIxMSAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MzOlJYRCAgICAgICAgKi8KLQkvKiBQQjEwICovIHsgQ0ZHX0ZDQzMsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIEZDQzM6UlhEICAgICAgICAqLwotCS8qIFBCOSAgKi8geyBDRkdfRkNDMywgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogRkNDMzpSWEQgICAgICAgICovCi0JLyogUEI4ICAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBGQ0MzOlJYRCAgICAgICAgKi8KLQkvKiBQQjcgICovIHsgMCwJCSAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEI3ICAgICAgICAgICAgICovCi0JLyogUEI2ICAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBGQ0MzOlRYRCAgICAgICAgKi8KLQkvKiBQQjUgICovIHsgQ0ZHX0ZDQzMsICAgMSwgICAwLCAgIDEsICAgMCwgICAwIH0sIC8qIEZDQzM6VFhEICAgICAgICAqLwotCS8qIFBCNCAgKi8geyBDRkdfRkNDMywgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogRkNDMzpUWEQgICAgICAgICovCi0JLyogUEIzICAqLyB7IDAsICAgICAgICAJIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBub24tZXhpc3RlbnQgICAgKi8KLQkvKiBQQjIgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIG5vbi1leGlzdGVudCAgICAqLwotCS8qIFBCMSAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogbm9uLWV4aXN0ZW50ICAgICovCi0JLyogUEIwICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9ICAvKiBub24tZXhpc3RlbnQgICAgKi8KKyAgICB7CS8qCSAgICAgY29uZglwcGFyIHBzb3IgcGRpciBwb2RyIHBkYXQgKi8KKwkvKiBQQjMxICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMSwJMCwgICAwIH0sIC8qIEZDQzIgTUlJIFRYX0VSICAqLworCS8qIFBCMzAgKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogRkNDMiBNSUkgUlhfRFYgICovCisJLyogUEIyOSAqLyB7IENGR19GQ0MyLAkgMSwgICAxLCAgIDEsCTAsICAgMCB9LCAvKiBGQ0MyIE1JSSBUWF9FTiAgKi8KKwkvKiBQQjI4ICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzIgTUlJIFJYX0VSICAqLworCS8qIFBCMjcgKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogRkNDMiBNSUkgQ09MICAgICovCisJLyogUEIyNiAqLyB7IENGR19GQ0MyLAkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBGQ0MyIE1JSSBDUlMgICAgKi8KKwkvKiBQQjI1ICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMSwJMCwgICAwIH0sIC8qIEZDQzIgTUlJIFR4RFszXSAqLworCS8qIFBCMjQgKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogRkNDMiBNSUkgVHhEWzJdICovCisJLyogUEIyMyAqLyB7IENGR19GQ0MyLAkgMSwgICAwLCAgIDEsCTAsICAgMCB9LCAvKiBGQ0MyIE1JSSBUeERbMV0gKi8KKwkvKiBQQjIyICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMSwJMCwgICAwIH0sIC8qIEZDQzIgTUlJIFR4RFswXSAqLworCS8qIFBCMjEgKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogRkNDMiBNSUkgUnhEWzBdICovCisJLyogUEIyMCAqLyB7IENGR19GQ0MyLAkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBGQ0MyIE1JSSBSeERbMV0gKi8KKwkvKiBQQjE5ICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzIgTUlJIFJ4RFsyXSAqLworCS8qIFBCMTggKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogRkNDMiBNSUkgUnhEWzNdICovCisJLyogUEIxNyAqLyB7IENGR19GQ0MzLAkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBGQ0MzOlJYX0RJViAgICAgKi8KKwkvKiBQQjE2ICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzM6UlhfRVJSICAgICAqLworCS8qIFBCMTUgKi8geyBDRkdfRkNDMywJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogRkNDMzpUWF9FUlIgICAgICovCisJLyogUEIxNCAqLyB7IENGR19GQ0MzLAkgMSwgICAwLCAgIDEsCTAsICAgMCB9LCAvKiBGQ0MzOlRYX0VOICAgICAgKi8KKwkvKiBQQjEzICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzM6Q09MCSAgICAgKi8KKwkvKiBQQjEyICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzM6Q1JTCSAgICAgKi8KKwkvKiBQQjExICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzM6UlhECSAgICAgKi8KKwkvKiBQQjEwICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIEZDQzM6UlhECSAgICAgKi8KKwkvKiBQQjkJKi8geyBDRkdfRkNDMywJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogRkNDMzpSWEQJICAgICAqLworCS8qIFBCOAkqLyB7IENGR19GQ0MzLAkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBGQ0MzOlJYRAkgICAgICovCisJLyogUEI3CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBCNwkgICAgICovCisJLyogUEI2CSovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMSwJMCwgICAwIH0sIC8qIEZDQzM6VFhECSAgICAgKi8KKwkvKiBQQjUJKi8geyBDRkdfRkNDMywJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogRkNDMzpUWEQJICAgICAqLworCS8qIFBCNAkqLyB7IENGR19GQ0MzLAkgMSwgICAwLCAgIDEsCTAsICAgMCB9LCAvKiBGQ0MzOlRYRAkgICAgICovCisJLyogUEIzCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIG5vbi1leGlzdGVudCAgICAqLworCS8qIFBCMgkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBub24tZXhpc3RlbnQgICAgKi8KKwkvKiBQQjEJKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogbm9uLWV4aXN0ZW50ICAgICovCisJLyogUEIwCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0gIC8qIG5vbi1leGlzdGVudCAgICAqLwogICAgIH0sCiAKICAgICAvKiBQb3J0IEMgKi8KLSAgICB7ICAgLyoJICAgICBjb25mCXBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCAqLwotCS8qIFBDMzEgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMzMSAgICAgICAgICAgICovCi0JLyogUEMzMCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzMwICAgICAgICAgICAgKi8KLQkvKiBQQzI5ICovIHsgMSwgICAgICAgICAgMSwgICAxLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzEgQ1RTIyAgICAgICAqLwotCS8qIFBDMjggKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMyOCAgICAgICAgICAgICovCi0JLyogUEMyNyAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBGQ0MzOiBUWERbMF0gICAgKi8KLQkvKiBQQzI2ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFBDMjYgICAgICAgICAgICAqLwotCS8qIFBDMjUgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMyNSAgICAgICAgICAgICovCi0JLyogUEMyNCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzI0ICAgICAgICAgICAgKi8KLQkvKiBQQzIzICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFBDMjMgICAgICAgICAgICAqLwotCS8qIFBDMjIgKi8geyAwLCAgCSAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMyMgkgICAgICovCi0JLyogUEMyMSAqLyB7IDAsICAgCSAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMyMQkgICAgICovCi0JLyogUEMyMCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzIwICAgICAgICAgICAgKi8KLQkvKiBQQzE5ICovIHsgQ0ZHX0ZDQzIsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFJ4Q2xrIChDTEsxMykgICAqLwotCS8qIFBDMTggKi8geyBDRkdfRkNDMiwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogVHhDbGsgKENMSzE0KSAgICovCi0JLyogUEMxNyAqLyB7IENGR19GQ0MzLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBSeENsayAoQ0xLMTUpICAgKi8KLQkvKiBQQzE2ICovIHsgQ0ZHX0ZDQzMsICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFR4Q2xrIChDTEsxNikgICAqLwotCS8qIFBDMTUgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMxNSAgICAgICAgICAgICovCi0JLyogUEMxNCAqLyB7IDEsICAgICAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBTQ0MxIENEIyAgICAgICAgKi8KLQkvKiBQQzEzICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzIgQ1RTIyAgICAgICAqLwotCS8qIFBDMTIgKi8geyAxLCAgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogU0NDMiBDRCMgICAgICAgICovCi0JLyogUEMxMSAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzExICAgICAgICAgICAgKi8KLQkvKiBQQzEwICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzMgQ0QjICAgICAgICAqLwotCS8qIFBDOSAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEM5ICAgICAgICAgICAgICovCi0JLyogUEM4ICAqLyB7IDEsICAgICAgICAgIDEsICAgMSwgICAwLCAgIDAsICAgMCB9LCAvKiBTQ0MzIENUUyMgICAgICAgKi8KLQkvKiBQQzcgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFBDNyAgICAgICAgICAgICAqLwotCS8qIFBDNiAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEM2ICAgICAgICAgICAgICovCi0JLyogUEM1ICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzUgICAgICAgICAgICAgKi8KLQkvKiBQQzQgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFBDNCAgICAgICAgICAgICAqLwotCS8qIFBDMyAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMzICAgICAgICAgICAgICovCi0JLyogUEMyICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBQQzIgICAgICAgICAgICAgKi8KLQkvKiBQQzEgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFBDMSAgICAgICAgICAgICAqLwotCS8qIFBDMCAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogUEMwICAgICAgICAgICAgICovCisgICAgewkvKgkgICAgIGNvbmYJcHBhciBwc29yIHBkaXIgcG9kciBwZGF0ICovCisJLyogUEMzMSAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBQQzMxCSAgICAgKi8KKwkvKiBQQzMwICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMzAJICAgICAqLworCS8qIFBDMjkgKi8geyAxLAkJIDEsICAgMSwgICAwLAkwLCAgIDAgfSwgLyogU0NDMSBDVFMjCSAgICAgKi8KKwkvKiBQQzI4ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMjgJICAgICAqLworCS8qIFBDMjcgKi8geyBDRkdfRkNDMywJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogRkNDMzogVFhEWzBdICAgICovCisJLyogUEMyNiAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBQQzI2CSAgICAgKi8KKwkvKiBQQzI1ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMjUJICAgICAqLworCS8qIFBDMjQgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogUEMyNAkgICAgICovCisJLyogUEMyMyAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBQQzIzCSAgICAgKi8KKwkvKiBQQzIyICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMjIJICAgICAqLworCS8qIFBDMjEgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogUEMyMQkgICAgICovCisJLyogUEMyMCAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBQQzIwCSAgICAgKi8KKwkvKiBQQzE5ICovIHsgQ0ZHX0ZDQzIsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFJ4Q2xrIChDTEsxMykgICAqLworCS8qIFBDMTggKi8geyBDRkdfRkNDMiwJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogVHhDbGsgKENMSzE0KSAgICovCisJLyogUEMxNyAqLyB7IENGR19GQ0MzLAkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBSeENsayAoQ0xLMTUpICAgKi8KKwkvKiBQQzE2ICovIHsgQ0ZHX0ZDQzMsCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFR4Q2xrIChDTEsxNikgICAqLworCS8qIFBDMTUgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogUEMxNQkgICAgICovCisJLyogUEMxNCAqLyB7IDEsCQkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBTQ0MxIENEIwkgICAgICovCisJLyogUEMxMyAqLyB7IDEsCQkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBTQ0MyIENUUyMJICAgICAqLworCS8qIFBDMTIgKi8geyAxLAkJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogU0NDMiBDRCMJICAgICAqLworCS8qIFBDMTEgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogUEMxMQkgICAgICovCisJLyogUEMxMCAqLyB7IDEsCQkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBTQ0MzIENEIwkgICAgICovCisJLyogUEM5CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDOQkgICAgICovCisJLyogUEM4CSovIHsgMSwJCSAxLCAgIDEsICAgMCwJMCwgICAwIH0sIC8qIFNDQzMgQ1RTIwkgICAgICovCisJLyogUEM3CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDNwkgICAgICovCisJLyogUEM2CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDNgkgICAgICovCisJLyogUEM1CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDNQkgICAgICovCisJLyogUEM0CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDNAkgICAgICovCisJLyogUEMzCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMwkgICAgICovCisJLyogUEMyCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMgkgICAgICovCisJLyogUEMxCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMQkgICAgICovCisJLyogUEMwCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFBDMAkgICAgICovCiAgICAgfSwKIAogICAgIC8qIFBvcnQgRCAqLwotICAgIHsgICAvKgkgICAgIGNvbmYgICAgICBwcGFyIHBzb3IgcGRpciBwb2RyIHBkYXQgKi8KLQkvKiBQRDMxICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzEgUlhEICAgICAgICAqLwotCS8qIFBEMzAgKi8geyAxLCAgICAgICAgICAxLCAgIDEsICAgMSwgICAwLCAgIDEgfSwgLyogU0NDMSBUWEQgICAgICAgICovCi0JLyogUEQyOSAqLyB7IDEsICAgICAgICAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBTQ0MxIFJUUyMgICAgICAgKi8KLQkvKiBQRDI4ICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzIgUlhEICAgICAgICAqLwotCS8qIFBEMjcgKi8geyAxLCAgICAgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogU0NDMiBUWEQgICAgICAgICovCi0JLyogUEQyNiAqLyB7IDEsICAgICAgICAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBTQ0MyIFJUUyMgICAgICAgKi8KLQkvKiBQRDI1ICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIFNDQzMgUlhEICAgICAgICAqLwotCS8qIFBEMjQgKi8geyAxLCAgICAgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAgfSwgLyogU0NDMyBUWEQgICAgICAgICovCi0JLyogUEQyMyAqLyB7IDEsICAgICAgICAgIDEsICAgMCwgICAxLCAgIDAsICAgMCB9LCAvKiBTQ0MzIFJUUyMgICAgICAgKi8KLQkvKiBQRDIyICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBEMjIgICAgICAgICAgICAqLwotCS8qIFBEMjEgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEQyMSAgICAgICAgICAgICovCi0JLyogUEQyMCAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQRDIwICAgICAgICAgICAgKi8KLQkvKiBQRDE5ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBEMTkgICAgICAgICAgICAqLwotCS8qIFBEMTggKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEQxOCAgICAgICAgICAgICovCi0JLyogUEQxNyAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQRDE3ICAgICAgICAgICAgKi8KLQkvKiBQRDE2ICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBEMTYgICAgICAgICAgICAqLwotCS8qIFBEMTUgKi8geyAxLCAgICAgICAgICAxLCAgIDEsICAgMCwgICAxLCAgIDEgfSwgLyogSTJDIFNEQSAgICAgICAgICovCi0JLyogUEQxNCAqLyB7IDEsICAgICAgICAgIDEsICAgMSwgICAwLCAgIDEsICAgMSB9LCAvKiBJMkMgU0NMICAgICAgICAgKi8KLQkvKiBQRDEzICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBEMTMgICAgICAgICAgICAqLwotCS8qIFBEMTIgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEQxMiAgICAgICAgICAgICovCi0JLyogUEQxMSAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQRDExICAgICAgICAgICAgKi8KLQkvKiBQRDEwICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBEMTAgICAgICAgICAgICAqLwotCS8qIFBEOSAgKi8geyAxLCAgICAgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDEgfSwgLyogU01DMSBUeEQgICAgICAgICovCi0JLyogUEQ4ICAqLyB7IDEsICAgICAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBTTUMxIFJ4RCAgICAgICAgKi8KLQkvKiBQRDcgICovIHsgMSwgICAgICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFNNQzEgU01TWU4gICAgICAqLwotCS8qIFBENiAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEgfSwgLyogUEQ2ICAgICAgICAgICAgICovCi0JLyogUEQ1ICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSB9LCAvKiBQRDUgICAgICAgICAgICAgKi8KLQkvKiBQRDQgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxIH0sIC8qIFBENCAgICAgICAgICAgICAqLwotCS8qIFBEMyAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogbm9uLWV4aXN0ZW50ICAgICovCi0JLyogUEQyICAqLyB7IDAsICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKiBub24tZXhpc3RlbnQgICAgKi8KLQkvKiBQRDEgICovIHsgMCwgICAgICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIG5vbi1leGlzdGVudCAgICAqLwotCS8qIFBEMCAgKi8geyAwLCAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSAgLyogbm9uLWV4aXN0ZW50ICAgICovCisgICAgewkvKgkgICAgIGNvbmYgICAgICBwcGFyIHBzb3IgcGRpciBwb2RyIHBkYXQgKi8KKwkvKiBQRDMxICovIHsgMSwJCSAxLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIFNDQzEgUlhECSAgICAgKi8KKwkvKiBQRDMwICovIHsgMSwJCSAxLCAgIDEsICAgMSwJMCwgICAxIH0sIC8qIFNDQzEgVFhECSAgICAgKi8KKwkvKiBQRDI5ICovIHsgMSwJCSAxLCAgIDAsICAgMSwJMCwgICAwIH0sIC8qIFNDQzEgUlRTIwkgICAgICovCisJLyogUEQyOCAqLyB7IDEsCQkgMSwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBTQ0MyIFJYRAkgICAgICovCisJLyogUEQyNyAqLyB7IDEsCQkgMSwgICAwLCAgIDEsCTAsICAgMCB9LCAvKiBTQ0MyIFRYRAkgICAgICovCisJLyogUEQyNiAqLyB7IDEsCQkgMSwgICAwLCAgIDEsCTAsICAgMCB9LCAvKiBTQ0MyIFJUUyMJICAgICAqLworCS8qIFBEMjUgKi8geyAxLAkJIDEsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogU0NDMyBSWEQJICAgICAqLworCS8qIFBEMjQgKi8geyAxLAkJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogU0NDMyBUWEQJICAgICAqLworCS8qIFBEMjMgKi8geyAxLAkJIDEsICAgMCwgICAxLAkwLCAgIDAgfSwgLyogU0NDMyBSVFMjCSAgICAgKi8KKwkvKiBQRDIyICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBEMjIJICAgICAqLworCS8qIFBEMjEgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEQyMQkgICAgICovCisJLyogUEQyMCAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQRDIwCSAgICAgKi8KKwkvKiBQRDE5ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBEMTkJICAgICAqLworCS8qIFBEMTggKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEQxOAkgICAgICovCisJLyogUEQxNyAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQRDE3CSAgICAgKi8KKwkvKiBQRDE2ICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBEMTYJICAgICAqLworCS8qIFBEMTUgKi8geyAxLAkJIDEsICAgMSwgICAwLAkxLCAgIDEgfSwgLyogSTJDIFNEQQkgICAgICovCisJLyogUEQxNCAqLyB7IDEsCQkgMSwgICAxLCAgIDAsCTEsICAgMSB9LCAvKiBJMkMgU0NMCSAgICAgKi8KKwkvKiBQRDEzICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBEMTMJICAgICAqLworCS8qIFBEMTIgKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogUEQxMgkgICAgICovCisJLyogUEQxMSAqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMSB9LCAvKiBQRDExCSAgICAgKi8KKwkvKiBQRDEwICovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBEMTAJICAgICAqLworCS8qIFBEOQkqLyB7IDEsCQkgMSwgICAwLCAgIDEsCTAsICAgMSB9LCAvKiBTTUMxIFR4RAkgICAgICovCisJLyogUEQ4CSovIHsgMSwJCSAxLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFNNQzEgUnhECSAgICAgKi8KKwkvKiBQRDcJKi8geyAxLAkJIDEsICAgMCwgICAwLAkwLCAgIDEgfSwgLyogU01DMSBTTVNZTiAgICAgICovCisJLyogUEQ2CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBENgkgICAgICovCisJLyogUEQ1CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBENQkgICAgICovCisJLyogUEQ0CSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAxIH0sIC8qIFBENAkgICAgICovCisJLyogUEQzCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0sIC8qIG5vbi1leGlzdGVudCAgICAqLworCS8qIFBEMgkqLyB7IDAsCQkgMCwgICAwLCAgIDAsCTAsICAgMCB9LCAvKiBub24tZXhpc3RlbnQgICAgKi8KKwkvKiBQRDEJKi8geyAwLAkJIDAsICAgMCwgICAwLAkwLCAgIDAgfSwgLyogbm9uLWV4aXN0ZW50ICAgICovCisJLyogUEQwCSovIHsgMCwJCSAwLCAgIDAsICAgMCwJMCwgICAwIH0gIC8qIG5vbi1leGlzdGVudCAgICAqLwogICAgIH0KIH07CiAKQEAgLTIzMCw4ICsyMzAsOCBAQAogCXVpbnQgcHNkbXIgPSBDRkdfUFNETVI7CiAJaW50IGk7CiAKLQl1bnNpZ25lZCBjaGFyICAgICAgICAgICByYW10bXA7Ci0gICAgCXVuc2lnbmVkIGNoYXIgICAgICAgICAgICpyYW1wdHIxID0gKHVuc2lnbmVkIGNoYXIgKikweDAwMDAwMTEwOworCXVuc2lnbmVkIGNoYXIJcmFtdG1wOworCXVuc2lnbmVkIGNoYXIJKnJhbXB0cjEgPSAodW5zaWduZWQgY2hhciAqKTB4MDAwMDAxMTA7CiAKIAltZW1jdGwtPm1lbWNfbXB0cHIgPSBDRkdfTVBUUFI7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VwODh4L3UtYm9vdC5sZHMgYi9ib2FyZC9lcDg4eC91LWJvb3QubGRzCmluZGV4IDJhNzYzYWQuLjM1NDUxNDIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VwODh4L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXA4OHgvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXJpYy9mbGFzaC5jIGIvYm9hcmQvZXJpYy9mbGFzaC5jCmluZGV4IGMwOGE3NjAuLjJjN2QyYTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VyaWMvZmxhc2guYworKysgYi9ib2FyZC9lcmljL2ZsYXNoLmMKQEAgLTU2NCwxNyArNTY0LDE3IEBACiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjMyMEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzI7CiAJCWluZm8tPnNpemUgPSAweDAwNDAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gMzIgTUJpdCAgCSovCisJCWJyZWFrOwkJCQkvKiA9PiAzMiBNQml0CSovCiAJY2FzZSAoSU5URUxfSURfMjhGNjQwSjNBICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjY0MEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gNjQ7CiAJCWluZm8tPnNpemUgPSAweDAwODAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gNjQgTUJpdCAgCSovCisJCWJyZWFrOwkJCQkvKiA9PiA2NCBNQml0CSovCiAJY2FzZSAoSU5URUxfSURfMjhGMTI4SjNBICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjEyOEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTI4OwogCQlpbmZvLT5zaXplID0gMHgwMTAwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDEyOCBNQml0ICAJKi8KKwkJYnJlYWs7CQkJCS8qID0+IDEyOCBNQml0CSovCiAKIAlkZWZhdWx0OgogCQkvKiBGSVhNRSovCkBAIC05ODEsMTQ4ICs5ODEsMTUxIEBACiAgKiAyIC0gRmxhc2ggbm90IGVyYXNlZAogICovCiAjaWZuZGVmIENGR19GTEFTSF8xNkJJVAotc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCitzdGF0aWMgaW50IHdyaXRlX3dvcmQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpCiB7Ci0JdnVfbG9uZyAqYWRkciA9ICh2dV9sb25nKikoaW5mby0+c3RhcnRbMF0pOwotCXVsb25nIHN0YXJ0LGJhcmY7CisJdnVfbG9uZyAqYWRkciA9ICh2dV9sb25nICopIChpbmZvLT5zdGFydFswXSk7CisJdWxvbmcgc3RhcnQsIGJhcmY7CiAJaW50IGZsYWc7CiAKIAogCS8qIENoZWNrIGlmIEZsYXNoIGlzIChzdWZmaWNpZW50bHkpIGVyYXNlZCAqLwotCWlmICgoKigodnVfbG9uZyAqKWRlc3QpICYgZGF0YSkgIT0gZGF0YSkgeworCWlmICgoKigodnVfbG9uZyAqKSBkZXN0KSAmIGRhdGEpICE9IGRhdGEpIHsKIAkJcmV0dXJuICgyKTsKIAl9CiAKIAkvKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0IGhlcmUgKi8KLQlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzKCk7CisJZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cyAoKTsKIAotICAgICBpZihpbmZvLT5mbGFzaF9pZCA+IEZMQVNIX0FNRF9DT01QKSB7Ci0JLyogQU1EIHN0dWZmICovCi0JYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKLQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBMDAwQTA7Ci0gICAgIH0gZWxzZSB7Ci0JLyogaW50ZWwgc3R1ZmYgKi8KLQkqYWRkciA9IDB4MDA0MDAwNDA7Ci0gICAgIH0KLQkqKCh2dV9sb25nICopZGVzdCkgPSBkYXRhOworCWlmIChpbmZvLT5mbGFzaF9pZCA+IEZMQVNIX0FNRF9DT01QKSB7CisJCS8qIEFNRCBzdHVmZiAqLworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUEwMEFBOworCQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OworCQlhZGRyWzB4MDU1NV0gPSAweDAwQTAwMEEwOworCX0gZWxzZSB7CisJCS8qIGludGVsIHN0dWZmICovCisJCSphZGRyID0gMHgwMDQwMDA0MDsKKwl9CisJKigodnVfbG9uZyAqKSBkZXN0KSA9IGRhdGE7CiAKIAkvKiByZS1lbmFibGUgaW50ZXJydXB0cyBpZiBuZWNlc3NhcnkgKi8KIAlpZiAoZmxhZykKLQkJZW5hYmxlX2ludGVycnVwdHMoKTsKKwkJZW5hYmxlX2ludGVycnVwdHMgKCk7CiAKIAkvKiBkYXRhIHBvbGxpbmcgZm9yIEQ3ICovCiAJc3RhcnQgPSBnZXRfdGltZXIgKDApOwogCi0gICAgIGlmKGluZm8tPmZsYXNoX2lkID4gRkxBU0hfQU1EX0NPTVApIHsKKwlpZiAoaW5mby0+Zmxhc2hfaWQgPiBGTEFTSF9BTURfQ09NUCkgewogCi0Jd2hpbGUgKCgqKCh2dV9sb25nICopZGVzdCkgJiAweDAwODAwMDgwKSAhPSAoZGF0YSAmIDB4MDA4MDAwODApKSB7Ci0JCWlmIChnZXRfdGltZXIoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKLQkJCXJldHVybiAoMSk7CisJCXdoaWxlICgoKigodnVfbG9uZyAqKSBkZXN0KSAmIDB4MDA4MDAwODApICE9CisJCSAgICAgICAoZGF0YSAmIDB4MDA4MDAwODApKSB7CisJCQlpZiAoZ2V0X3RpbWVyIChzdGFydCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkgeworCQkJCXJldHVybiAoMSk7CisJCQl9CiAJCX0KLQl9CiAKLSAgICAgfSBlbHNlIHsKKwl9IGVsc2UgewogCi0Jd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwMDA4MCkpeyAgCS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSB7Ci0JCQlyZXR1cm4gKDEpOwotCX0KKwkJd2hpbGUgKCEoYWRkclswXSAmIDB4MDA4MDAwODApKSB7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKKwkJCQlyZXR1cm4gKDEpOworCQkJfQogCi0JaWYoIGFkZHJbMF0gJiAweDAwM0EwMDNBKSB7CS8qIGNoZWNrIGZvciBlcnJvciAqLwotCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTAwMDA7Ci0JCWlmKCBiYXJmICkgewotCQkJYmFyZiA+Pj0xNjsKLQkJfSBlbHNlIHsKLQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDAwMDAzQTsKKwkJCWlmIChhZGRyWzBdICYgMHgwMDNBMDAzQSkgewkvKiBjaGVjayBmb3IgZXJyb3IgKi8KKwkJCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTAwMDA7CisJCQkJaWYgKGJhcmYpIHsKKwkJCQkJYmFyZiA+Pj0gMTY7CisJCQkJfSBlbHNlIHsKKwkJCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwMDAwMDNBOworCQkJCX0KKwkJCQlwcmludGYgKCJcbkZsYXNoIHdyaXRlIGVycm9yIGF0IGFkZHJlc3MgJWx4XG4iLAorCQkJCQkodW5zaWduZWQgbG9uZykgZGVzdCk7CisJCQkJaWYgKGJhcmYgJiAweDAwMDIpCisJCQkJCXByaW50ZiAoIkJsb2NrIGxvY2tlZCwgbm90IGVyYXNlZC5cbiIpOworCQkJCWlmIChiYXJmICYgMHgwMDEwKQorCQkJCQlwcmludGYgKCJQcm9ncmFtbWluZyBlcnJvci5cbiIpOworCQkJCWlmIChiYXJmICYgMHgwMDA4KQorCQkJCQlwcmludGYgKCJWcHAgTG93IGVycm9yLlxuIik7CisJCQkJcmV0dXJuICgyKTsKKwkJCX0KKworCiAJCX0KLQkJcHJpbnRmKCJcbkZsYXNoIHdyaXRlIGVycm9yIGF0IGFkZHJlc3MgJWx4XG4iLCh1bnNpZ25lZCBsb25nKWRlc3QpOwotCQlpZihiYXJmICYgMHgwMDAyKSBwcmludGYoIkJsb2NrIGxvY2tlZCwgbm90IGVyYXNlZC5cbiIpOwotCQlpZihiYXJmICYgMHgwMDEwKSBwcmludGYoIlByb2dyYW1taW5nIGVycm9yLlxuIik7Ci0JCWlmKGJhcmYgJiAweDAwMDgpIHByaW50ZigiVnBwIExvdyBlcnJvci5cbiIpOwotCQlyZXR1cm4oMik7CisKKwkJcmV0dXJuICgwKTsKKwogCX0KIAotCi0gICAgIH0KLQotCXJldHVybiAoMCk7Ci0KLX0KLQogI2Vsc2UKIAotc3RhdGljIGludCB3cml0ZV9zaG9ydCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSkKK3N0YXRpYyBpbnQgd3JpdGVfc2hvcnQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVzaG9ydCBkYXRhKQogewotCXZ1X3Nob3J0ICphZGRyID0gKHZ1X3Nob3J0KikoaW5mby0+c3RhcnRbMF0pOwotCXVsb25nIHN0YXJ0LGJhcmY7CisJdnVfc2hvcnQgKmFkZHIgPSAodnVfc2hvcnQgKikgKGluZm8tPnN0YXJ0WzBdKTsKKwl1bG9uZyBzdGFydCwgYmFyZjsKIAlpbnQgZmxhZzsKIAogCS8qIENoZWNrIGlmIEZsYXNoIGlzIChzdWZmaWNpZW50bHkpIGVyYXNlZCAqLwotCWlmICgoKigodnVfc2hvcnQgKilkZXN0KSAmIGRhdGEpICE9IGRhdGEpIHsKKwlpZiAoKCooKHZ1X3Nob3J0ICopIGRlc3QpICYgZGF0YSkgIT0gZGF0YSkgewogCQlyZXR1cm4gKDIpOwogCX0KIAogCS8qIERpc2FibGUgaW50ZXJydXB0cyB3aGljaCBtaWdodCBjYXVzZSBhIHRpbWVvdXQgaGVyZSAqLwotCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMoKTsKKwlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzICgpOwogCi0gICAgIGlmKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKLQkvKiBBTUQgc3R1ZmYgKi8KLQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1OwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBMDsKLSAgICAgfSBlbHNlIHsKLQkvKiBpbnRlbCBzdHVmZiAqLwotCSphZGRyID0gMHgwMEQwOwotCSphZGRyID0gMHgwMDQwOwotICAgICB9Ci0JKigodnVfc2hvcnQgKilkZXN0KSA9IGRhdGE7CisJaWYgKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKKwkJLyogQU1EIHN0dWZmICovCisJCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTsKKwkJYWRkclsweDAyQUFdID0gMHgwMDU1OworCQlhZGRyWzB4MDU1NV0gPSAweDAwQTA7CisJfSBlbHNlIHsKKwkJLyogaW50ZWwgc3R1ZmYgKi8KKwkJKmFkZHIgPSAweDAwRDA7CisJCSphZGRyID0gMHgwMDQwOworCX0KKwkqKCh2dV9zaG9ydCAqKSBkZXN0KSA9IGRhdGE7CiAKIAkvKiByZS1lbmFibGUgaW50ZXJydXB0cyBpZiBuZWNlc3NhcnkgKi8KIAlpZiAoZmxhZykKLQkJZW5hYmxlX2ludGVycnVwdHMoKTsKKwkJZW5hYmxlX2ludGVycnVwdHMgKCk7CiAKIAkvKiBkYXRhIHBvbGxpbmcgZm9yIEQ3ICovCiAJc3RhcnQgPSBnZXRfdGltZXIgKDApOwogCi0gICAgIGlmKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKLQkgIC8qIEFNRCBzdHVmZiAqLwotCXdoaWxlICgoKigodnVfc2hvcnQgKilkZXN0KSAmIDB4MDA4MCkgIT0gKGRhdGEgJiAweDAwODApKSB7Ci0JCWlmIChnZXRfdGltZXIoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKLQkJCXJldHVybiAoMSk7CisJaWYgKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKKwkJLyogQU1EIHN0dWZmICovCisJCXdoaWxlICgoKigodnVfc2hvcnQgKikgZGVzdCkgJiAweDAwODApICE9IChkYXRhICYgMHgwMDgwKSkgeworCQkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKKwkJCQlyZXR1cm4gKDEpOworCQkJfQogCQl9CisKKwl9IGVsc2UgeworCQkvKiBpbnRlbCBzdHVmZiAqLworCQl3aGlsZSAoIShhZGRyWzBdICYgMHgwMDgwKSkgewkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KKwkJCWlmIChnZXRfdGltZXIgKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKQorCQkJCXJldHVybiAoMSk7CisJCX0KKworCQlpZiAoYWRkclswXSAmIDB4MDAzQSkgewkvKiBjaGVjayBmb3IgZXJyb3IgKi8KKwkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDNBOworCQkJcHJpbnRmICgiXG5GbGFzaCB3cml0ZSBlcnJvciBhdCBhZGRyZXNzICVseFxuIiwKKwkJCQkodW5zaWduZWQgbG9uZykgZGVzdCk7CisJCQlpZiAoYmFyZiAmIDB4MDAwMikKKwkJCQlwcmludGYgKCJCbG9jayBsb2NrZWQsIG5vdCBlcmFzZWQuXG4iKTsKKwkJCWlmIChiYXJmICYgMHgwMDEwKQorCQkJCXByaW50ZiAoIlByb2dyYW1taW5nIGVycm9yLlxuIik7CisJCQlpZiAoYmFyZiAmIDB4MDAwOCkKKwkJCQlwcmludGYgKCJWcHAgTG93IGVycm9yLlxuIik7CisJCQlyZXR1cm4gKDIpOworCQl9CisJCSphZGRyID0gMHgwMEIwOworCQkqYWRkciA9IDB4MDA3MDsKKwkJd2hpbGUgKCEoYWRkclswXSAmIDB4MDA4MCkpIHsJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCisJCQlpZiAoZ2V0X3RpbWVyIChzdGFydCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkKKwkJCQlyZXR1cm4gKDEpOworCQl9CisJCSphZGRyID0gMHgwMEZGOwogCX0KLQotICAgICB9IGVsc2UgewotCS8qIGludGVsIHN0dWZmICovCi0Jd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwKSl7ICAJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCi0JCWlmIChnZXRfdGltZXIoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHJldHVybiAoMSk7Ci0JfQotCi0JaWYoIGFkZHJbMF0gJiAweDAwM0EpIHsJLyogY2hlY2sgZm9yIGVycm9yICovCi0JCWJhcmYgPSBhZGRyWzBdICYgMHgwMDNBOwotCQlwcmludGYoIlxuRmxhc2ggd3JpdGUgZXJyb3IgYXQgYWRkcmVzcyAlbHhcbiIsKHVuc2lnbmVkIGxvbmcpZGVzdCk7Ci0JCWlmKGJhcmYgJiAweDAwMDIpIHByaW50ZigiQmxvY2sgbG9ja2VkLCBub3QgZXJhc2VkLlxuIik7Ci0JCWlmKGJhcmYgJiAweDAwMTApIHByaW50ZigiUHJvZ3JhbW1pbmcgZXJyb3IuXG4iKTsKLQkJaWYoYmFyZiAmIDB4MDAwOCkgcHJpbnRmKCJWcHAgTG93IGVycm9yLlxuIik7Ci0JCXJldHVybigyKTsKLQl9Ci0JKmFkZHIgPSAweDAwQjA7Ci0JKmFkZHIgPSAweDAwNzA7Ci0Jd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwKSl7ICAJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCi0JCWlmIChnZXRfdGltZXIoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHJldHVybiAoMSk7Ci0JfQotCi0JKmFkZHIgPSAweDAwRkY7Ci0KLSAgICAgfQotCiAJcmV0dXJuICgwKTsKLQogfQotCi0KICNlbmRpZgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXJpYy91LWJvb3QubGRzIGIvYm9hcmQvZXJpYy91LWJvb3QubGRzCmluZGV4IDc5OTAwMmYuLjAwZTM1YTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VyaWMvdS1ib290LmxkcworKysgYi9ib2FyZC9lcmljL3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvYWRjaW9wL3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvYWRjaW9wL3UtYm9vdC5sZHMKaW5kZXggNTAyNTBiMS4uZGI2NWZlNiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2FkY2lvcC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9hZGNpb3AvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9hcGM0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9hcGM0MDUvdS1ib290LmxkcwppbmRleCBmNWRhYWVmLi4yMTU0N2FjIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvYXBjNDA1L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL2FwYzQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2FyNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvYXI0MDUvdS1ib290LmxkcwppbmRleCBmNGI1ZTNhLi5iMDcyYmJiIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvYXI0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvYXI0MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9hc2g0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9hc2g0MDUvdS1ib290LmxkcwppbmRleCAxYzVkODkxLi42NDQxNzRhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvYXNoNDA1L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL2FzaDQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NhbmJ0L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvY2FuYnQvdS1ib290LmxkcwppbmRleCAwN2U4MTEwLi5lNjZkYjVkIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY2FuYnQvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvY2FuYnQvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jbXM3MDAvY21zNzAwLmMgYi9ib2FyZC9lc2QvY21zNzAwL2NtczcwMC5jCmluZGV4IDJjZGQ3YmUuLjNkNGYyMzcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jbXM3MDAvY21zNzAwLmMKKysrIGIvYm9hcmQvZXNkL2NtczcwMC9jbXM3MDAuYwpAQCAtOTIsNyArOTIsNyBAQAogCWdkLT5iZC0+YmlfZmxhc2hzdGFydCA9IDAgLSBnZC0+YmQtPmJpX2ZsYXNoc2l6ZTsKIAlnZC0+YmQtPmJpX2ZsYXNob2Zmc2V0ID0gMDsKIAotIAkvKgorCS8qCiAJICogU2V0dXAgYW5kIGVuYWJsZSBFRVBST00gd3JpdGUgcHJvdGVjdGlvbgogCSAqLwogCW91dF9iZTMyKCh2b2lkICopR1BJTzBfT1IsIGluX2JlMzIoKHZvaWQgKilHUElPMF9PUikgfCBDRkdfRUVQUk9NX1dQKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jbXM3MDAvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9jbXM3MDAvdS1ib290LmxkcwppbmRleCBmNWRhYWVmLi4yMTU0N2FjIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY21zNzAwL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL2NtczcwMC91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2kyZHAvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9jcGNpMmRwL3UtYm9vdC5sZHMKaW5kZXggZjVkYWFlZi4uMjE1NDdhYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2kyZHAvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvY3BjaTJkcC91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9jcGNpNDA1L3UtYm9vdC5sZHMKaW5kZXggZjVkYWFlZi4uMjE1NDdhYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2k0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvY3BjaTQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k1MjAwL01ha2VmaWxlIGIvYm9hcmQvZXNkL2NwY2k1MjAwL01ha2VmaWxlCmluZGV4IDI3NmVhYmIuLjY3M2E1YjkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNTIwMC9NYWtlZmlsZQorKysgYi9ib2FyZC9lc2QvY3BjaTUyMDAvTWFrZWZpbGUKQEAgLTMwLDggKzMwLDggQEAKIAogIyBPYmplY3RzIGZvciBYaWxpbnggSlRBRyBwcm9ncmFtbWluZyAoQ1BMRCkKICMgQ1BMRCAgPSAuLi9jb21tb24veGlsaW54X2p0YWcvbGVudmFsLm8gXAotIyAJICAuLi9jb21tb24veGlsaW54X2p0YWcvbWljcm8ubyBcCi0jIAkgIC4uL2NvbW1vbi94aWxpbnhfanRhZy9wb3J0cy5vCisjCSAgLi4vY29tbW9uL3hpbGlueF9qdGFnL21pY3JvLm8gXAorIwkgIC4uL2NvbW1vbi94aWxpbnhfanRhZy9wb3J0cy5vCiAKICMgQ09CSlMJPSAkKEJPQVJEKS5vIGZsYXNoLm8gJChDUExEKQogQ09CSlMJPSAkKEJPQVJEKS5vIHN0cmF0YWZsYXNoLm8KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpNzUwL21wc2MuYyBiL2JvYXJkL2VzZC9jcGNpNzUwL21wc2MuYwppbmRleCAyNWMxMGUwLi5mYThkM2JkIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTc1MC9tcHNjLmMKKysrIGIvYm9hcmQvZXNkL2NwY2k3NTAvbXBzYy5jCkBAIC00MjYsNyArNDI2LDcgQEAKIAkJCSAoTVY2NDM2MF9TRE1BX1dJTl9BQ0NFU1NfRlVMTCA8PAogCQkJICAoTVY2NDM2MF9DVU5JVF9CQVNFX0FERFJfV0lOXzBfQklUICogMikpKTsKIAotLyogU2V0dXAgTVBTQyBpbnRlcm5hbCBhZGRyZXNzIHNwYWNlIGJhc2UgYWRkcmVzcyAJKi8KKy8qIFNldHVwIE1QU0MgaW50ZXJuYWwgYWRkcmVzcyBzcGFjZSBiYXNlIGFkZHJlc3MJKi8KIAlHVF9SRUdfV1JJVEUgKENVTklUX0lOVEVSTkFMX1NQQUNFX0JBU0VfQUREUl9SRUcsIENGR19HVF9SRUdTKTsKIAogLyogbm8gaGlnaCBhZGRyZXNzIHJlbWFwKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpNzUwL21wc2MuaCBiL2JvYXJkL2VzZC9jcGNpNzUwL21wc2MuaAppbmRleCBhMDNkMWNjLi5hYTBmODYyIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTc1MC9tcHNjLmgKKysrIGIvYm9hcmQvZXNkL2NwY2k3NTAvbXBzYy5oCkBAIC02Nyw5ICs2Nyw5IEBACiAjZGVmaW5lIFRYX1NUT1AgICAgIDB4MDAwMTAwMDAKICNkZWZpbmUgUlhfRU5BQkxFICAgMHgwMDAwMDA4MAogCi0jZGVmaW5lIFNETUFfUlhfQUJPUlQgCQkgICgxIDw8IDE1KQotI2RlZmluZSBTRE1BX1RYX0FCT1JUIAkJICAoMSA8PCAzMSkKLSNkZWZpbmUgTVBTQ19UWF9BQk9SVCAJCSAgKDEgPDwgNykKKyNkZWZpbmUgU0RNQV9SWF9BQk9SVAkJICAoMSA8PCAxNSkKKyNkZWZpbmUgU0RNQV9UWF9BQk9SVAkJICAoMSA8PCAzMSkKKyNkZWZpbmUgTVBTQ19UWF9BQk9SVAkJICAoMSA8PCA3KQogI2RlZmluZSBNUFNDX1JYX0FCT1JUICAgICAgICAgICAgICgxIDw8IDIzKQogI2RlZmluZSBNUFNDX0VOVEVSX0hVTlQgICAgICAgICAgICgxIDw8IDMxKQogCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC9tdl9ldGguYyBiL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCmluZGV4IGJjODRlZjAuLjFjMjE1MjcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCkBAIC0xMzkyLDcgKzEzOTIsNyBAQAogKiAgICAgICBwb3J0X3BoeV9hZGRyKS4KICoKICogSU5QVVQ6Ci0qICAgICAgIEVUSF9QT1JUX0lORk8gCSpwX2V0aF9wb3J0X2N0cmwgICAgICAgRXRoZXJuZXQgcG9ydCBjb250cm9sIHN0cnVjdAorKiAgICAgICBFVEhfUE9SVF9JTkZPCSpwX2V0aF9wb3J0X2N0cmwgICAgICAgRXRoZXJuZXQgcG9ydCBjb250cm9sIHN0cnVjdAogKgogKiBPVVRQVVQ6CiAqICAgICAgIFNlZSBkZXNjcmlwdGlvbi4KQEAgLTE1NTIsNyArMTU1Miw3IEBACiAqICAgICAgIGV0aGVyX2luaXRfcnhfZGVzY19yaW5nIGZvciBSeCBxdWV1ZXMpLgogKgogKiBJTlBVVDoKLSogICAgICAgRVRIX1BPUlRfSU5GTyAJKnBfZXRoX3BvcnRfY3RybCAgICAgICBFdGhlcm5ldCBwb3J0IGNvbnRyb2wgc3RydWN0CisqICAgICAgIEVUSF9QT1JUX0lORk8JKnBfZXRoX3BvcnRfY3RybCAgICAgICBFdGhlcm5ldCBwb3J0IGNvbnRyb2wgc3RydWN0CiAqCiAqIE9VVFBVVDoKICogICAgICAgRXRoZXJuZXQgcG9ydCBpcyByZWFkeSB0byByZWNlaXZlIGFuZCB0cmFuc21pdC4KQEAgLTE2NDIsNyArMTY0Miw3IEBACiAqIElOUFVUOgogKglFVEhfUE9SVCBldGhfcG9ydF9udW0gICAgIFBvcnQgbnVtYmVyLgogKgljaGFyICogICAgICAgIHBfYWRkcgkJQWRkcmVzcyB0byBiZSBzZXQKLSoJRVRIX1FVRVVFIAkgIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCisqCUVUSF9RVUVVRQkgIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCiAqCiAqIE9VVFBVVDoKICoJU2V0IE1BQyBhZGRyZXNzIGxvdyBhbmQgaGlnaCByZWdpc3RlcnMuIGFsc28gY2FsbHMgZXRoX3BvcnRfdWNfYWRkcigpCkBAIC0xNjgwLDEwICsxNjgwLDEwIEBACiAqCXBhcmFtZXRlcnMuCiAqCiAqIElOUFVUOgotKglFVEhfUE9SVCAJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCisqCUVUSF9QT1JUCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgogKgl1bnNpZ25lZCBjaGFyIHVjX25pYmJsZQkJVW5pY2FzdCBNQUMgQWRkcmVzcyBsYXN0IG5pYmJsZS4KLSoJRVRIX1FVRVVFIAkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCi0qCWludCAJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCisqCUVUSF9RVUVVRQkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCisqCWludAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KICoKICogT1VUUFVUOgogKglUaGlzIGZ1bmN0aW9uIGFkZC9yZW1vdmVzIE1BQyBhZGRyZXNzZXMgZnJvbSB0aGUgcG9ydCB1bmljYXN0IGFkZHJlc3MKQEAgLTE3NjIsMTAgKzE3NjIsMTAgQEAKICoJICAgSW4gdGhpcyBjYXNlLCB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgQ1JDLThiaXQgdmFsdWUgYW5kIGNhbGxzCiAqCSAgIGV0aF9wb3J0X29tY19hZGRyKCkgcm91dGluZSB0byBzZXQgdGhlIE90aGVyIE11bHRpY2FzdCBUYWJsZS4KICogSU5QVVQ6Ci0qCUVUSF9QT1JUIAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KLSoJdW5zaWduZWQgY2hhciAJKnBfYWRkcgkJVW5pY2FzdCBNQUMgQWRkcmVzcy4KLSoJRVRIX1FVRVVFIAkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCi0qCWludCAJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCisqCUVUSF9QT1JUCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgorKgl1bnNpZ25lZCBjaGFyCSpwX2FkZHIJCVVuaWNhc3QgTUFDIEFkZHJlc3MuCisqCUVUSF9RVUVVRQkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCisqCWludAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KICoKICogT1VUUFVUOgogKglTZWUgZGVzY3JpcHRpb24uCkBAIC0xODk2LDEwICsxODk2LDEwIEBACiAqCWFjY29yZGluZyB0byB0aGUgYXJndW1lbnQgZ2l2ZW4uCiAqCiAqIElOUFVUOgotKglFVEhfUE9SVCAJZXRoX3BvcnRfbnVtICAgICAgUG9ydCBudW1iZXIuCi0qCXVuc2lnbmVkIGNoYXIgCW1jX2J5dGUJCU11bHRpY2FzdCBhZGRyIGxhc3QgYnl0ZSAoTUFDIERBWzc6MF0gYml0cykuCi0qCUVUSF9RVUVVRSAJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgotKglpbnQgCQkJb3B0aW9uICAgICAgMCA9IEFkZCwgMSA9IHJlbW92ZSBhZGRyZXNzLgorKglFVEhfUE9SVAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KKyoJdW5zaWduZWQgY2hhcgltY19ieXRlCQlNdWx0aWNhc3QgYWRkciBsYXN0IGJ5dGUgKE1BQyBEQVs3OjBdIGJpdHMpLgorKglFVEhfUVVFVUUJCSBxdWV1ZQkJUnggcXVldWUgbnVtYmVyIGZvciB0aGlzIE1BQyBhZGRyZXNzLgorKglpbnQJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCiAqCiAqIE9VVFBVVDoKICoJU2VlIGRlc2NyaXB0aW9uLgpAQCAtMTk2MCwxMCArMTk2MCwxMCBAQAogKglDUkMtOCBhcmd1bWVudCBnaXZlbi4KICoKICogSU5QVVQ6Ci0qCUVUSF9QT1JUIAlldGhfcG9ydF9udW0gICAgICBQb3J0IG51bWJlci4KLSoJdW5zaWduZWQgY2hhciAJICBjcmM4CQlBIENSQy04Yml0IChQb2x5bm9taWFsOiB4XjgreF4yK3heMSsxKS4KLSoJRVRIX1FVRVVFIAkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCi0qCWludCAJCQlvcHRpb24gICAgICAwID0gQWRkLCAxID0gcmVtb3ZlIGFkZHJlc3MuCisqCUVUSF9QT1JUCWV0aF9wb3J0X251bSAgICAgIFBvcnQgbnVtYmVyLgorKgl1bnNpZ25lZCBjaGFyCSAgY3JjOAkJQSBDUkMtOGJpdCAoUG9seW5vbWlhbDogeF44K3heMit4XjErMSkuCisqCUVUSF9RVUVVRQkJIHF1ZXVlCQlSeCBxdWV1ZSBudW1iZXIgZm9yIHRoaXMgTUFDIGFkZHJlc3MuCisqCWludAkJCW9wdGlvbiAgICAgIDAgPSBBZGQsIDEgPSByZW1vdmUgYWRkcmVzcy4KICoKICogT1VUUFVUOgogKglTZWUgZGVzY3JpcHRpb24uCkBAIC0yMjA0LDcgKzIyMDQsNyBAQAogICogZXRoX3BvcnRfcmVzZXQgLSBSZXNldCBFdGhlcm5ldCBwb3J0CiAgKgogICogREVTQ1JJUFRJT046Ci0gKiAJVGhpcyByb3V0aW5lIHJlc2V0cyB0aGUgY2hpcCBieSBhYm9ydGluZyBhbnkgU0RNQSBlbmdpbmUgYWN0aXZpdHkgYW5kCisgKglUaGlzIHJvdXRpbmUgcmVzZXRzIHRoZSBjaGlwIGJ5IGFib3J0aW5nIGFueSBTRE1BIGVuZ2luZSBhY3Rpdml0eSBhbmQKICAqICAgICAgY2xlYXJpbmcgdGhlIE1JQiBjb3VudGVycy4gVGhlIFJlY2VpdmVyIGFuZCB0aGUgVHJhbnNtaXQgdW5pdCBhcmUgaW4KICAqICAgICAgaWRsZSBzdGF0ZSBhZnRlciB0aGlzIGNvbW1hbmQgaXMgcGVyZm9ybWVkIGFuZCB0aGUgcG9ydCBpcyBkaXNhYmxlZC4KICAqCkBAIC0yNTU3LDkgKzI1NTcsOSBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgotICogICAgICBpbnQgCQkJcnhfZGVzY19udW0gICAgICAgTnVtYmVyIG9mIFJ4IGRlc2NyaXB0b3JzCi0gKiAgICAgIGludCAJCQlyeF9idWZmX3NpemUgICAgICBTaXplIG9mIFJ4IGJ1ZmZlcgorICoJRVRIX1FVRVVFCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgorICogICAgICBpbnQJCQlyeF9kZXNjX251bSAgICAgICBOdW1iZXIgb2YgUnggZGVzY3JpcHRvcnMKKyAqICAgICAgaW50CQkJcnhfYnVmZl9zaXplICAgICAgU2l6ZSBvZiBSeCBidWZmZXIKICAqICAgICAgdW5zaWduZWQgaW50ICAgIHJ4X2Rlc2NfYmFzZV9hZGRyICBSeCBkZXNjcmlwdG9ycyBtZW1vcnkgYXJlYSBiYXNlIGFkZHIuCiAgKiAgICAgIHVuc2lnbmVkIGludCAgICByeF9idWZmX2Jhc2VfYWRkciAgUnggYnVmZmVyIG1lbW9yeSBhcmVhIGJhc2UgYWRkci4KICAqCkBAIC0yNjUxLDkgKzI2NTEsOSBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgotICogICAgICBpbnQgCQkJdHhfZGVzY19udW0gICAgICAgTnVtYmVyIG9mIFR4IGRlc2NyaXB0b3JzCi0gKiAgICAgIGludCAJCQl0eF9idWZmX3NpemUgICAgICBTaXplIG9mIFR4IGJ1ZmZlcgorICoJRVRIX1FVRVVFCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgorICogICAgICBpbnQJCQl0eF9kZXNjX251bSAgICAgICBOdW1iZXIgb2YgVHggZGVzY3JpcHRvcnMKKyAqICAgICAgaW50CQkJdHhfYnVmZl9zaXplICAgICAgU2l6ZSBvZiBUeCBidWZmZXIKICAqICAgICAgdW5zaWduZWQgaW50ICAgIHR4X2Rlc2NfYmFzZV9hZGRyICBUeCBkZXNjcmlwdG9ycyBtZW1vcnkgYXJlYSBiYXNlIGFkZHIuCiAgKiAgICAgIHVuc2lnbmVkIGludCAgICB0eF9idWZmX2Jhc2VfYWRkciAgVHggYnVmZmVyIG1lbW9yeSBhcmVhIGJhc2UgYWRkci4KICAqCkBAIC0yNzQ2LDcgKzI3NDYsNyBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgorICoJRVRIX1FVRVVFCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgogICoJUEtUX0lORk8gICAgICAgICpwX3BrdF9pbmZvICAgICAgIFVzZXIgcGFja2V0IGJ1ZmZlci4KICAqCiAgKiBPVVRQVVQ6CkBAIC0yODYyLDcgKzI4NjIsNyBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgorICoJRVRIX1FVRVVFCXR4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFR4IHF1ZXVlLgogICoJUEtUX0lORk8gICAgICAgICpwX3BrdF9pbmZvICAgICAgIFVzZXIgcGFja2V0IGJ1ZmZlci4KICAqCiAgKiBPVVRQVVQ6CkBAIC0yOTMxLDcgKzI5MzEsNyBAQAogICogZXRoX3BvcnRfcmVjZWl2ZSAtIEdldCByZWNlaXZlZCBpbmZvcm1hdGlvbiBmcm9tIFJ4IHJpbmcuCiAgKgogICogREVTQ1JJUFRJT046Ci0gKiAJVGhpcyByb3V0aW5lIHJldHVybnMgdGhlIHJlY2VpdmVkIGRhdGEgdG8gdGhlIGNhbGxlci4gVGhlcmUgaXMgbm8KKyAqCVRoaXMgcm91dGluZSByZXR1cm5zIHRoZSByZWNlaXZlZCBkYXRhIHRvIHRoZSBjYWxsZXIuIFRoZXJlIGlzIG5vCiAgKglkYXRhIGNvcHlpbmcgZHVyaW5nIHJvdXRpbmUgb3BlcmF0aW9uLiBBbGwgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQKICAqCXVzaW5nIHBvaW50ZXIgdG8gcGFja2V0IGluZm9ybWF0aW9uIHN0cnVjdCBwYXNzZWQgZnJvbSB0aGUgY2FsbGVyLgogICogICAgICBJZiB0aGUgcm91dGluZSBleGhhdXN0cwlSeCByaW5nIHJlc291cmNlcyB0aGVuIHRoZSByZXNvdXJjZSBlcnJvciBmbGFnCkBAIC0yOTM5LDcgKzI5MzksNyBAQAogICoKICAqIElOUFVUOgogICoJRVRIX1BPUlRfSU5GTyAgICpwX2V0aF9wb3J0X2N0cmwgICBFdGhlcm5ldCBQb3J0IENvbnRyb2wgc3J0dWN0LgotICoJRVRIX1FVRVVFICAgCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgorICoJRVRIX1FVRVVFCXJ4X3F1ZXVlICAgICAgICAgTnVtYmVyIG9mIFJ4IHF1ZXVlLgogICoJUEtUX0lORk8gICAgICAgICpwX3BrdF9pbmZvICAgICAgIFVzZXIgcGFja2V0IGJ1ZmZlci4KICAqCiAgKiBPVVRQVVQ6CkBAIC0yOTgxLDcgKzI5ODEsNyBAQAogCiAJLyogTm90aGluZyB0byByZWNlaXZlLi4uICovCiAJaWYgKGNvbW1hbmRfc3RhdHVzICYgKEVUSF9CVUZGRVJfT1dORURfQllfRE1BKSkgewotLyogCURQKHByaW50ZigiUng6IGNvbW1hbmRfc3RhdHVzOiAlMDh4XG4iLCBjb21tYW5kX3N0YXR1cykpOyAqLworLyoJRFAocHJpbnRmKCJSeDogY29tbWFuZF9zdGF0dXM6ICUwOHhcbiIsIGNvbW1hbmRfc3RhdHVzKSk7ICovCiAJCURfQ0FDSEVfRkxVU0hfTElORSAoKHVuc2lnbmVkIGludCkgcF9yeF9jdXJyX2Rlc2MsIDApOwogLyoJRFAocHJpbnRmKCJcbkVUSF9FTkRfT0ZfSk9CIC4uLlxuIikpOyovCiAJCXJldHVybiBFVEhfRU5EX09GX0pPQjsKQEAgLTMwMjAsNyArMzAyMCw3IEBACiAgKgogICogSU5QVVQ6CiAgKglFVEhfUE9SVF9JTkZPICAgKnBfZXRoX3BvcnRfY3RybCAgIEV0aGVybmV0IFBvcnQgQ29udHJvbCBzcnR1Y3QuCi0gKglFVEhfUVVFVUUgICAJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCisgKglFVEhfUVVFVUUJcnhfcXVldWUgICAgICAgICBOdW1iZXIgb2YgUnggcXVldWUuCiAgKiAgICAgIFBLVF9JTkZPICAgICAgICAqcF9wa3RfaW5mbyAgICAgICBJbmZvcm1hdGlvbiBvbiB0aGUgcmV0dXJuZWQgYnVmZmVyLgogICoKICAqIE9VVFBVVDoKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpNzUwL3NkcmFtX2luaXQuYyBiL2JvYXJkL2VzZC9jcGNpNzUwL3NkcmFtX2luaXQuYwppbmRleCA3OGQxODgwLi5mNDNlODNmIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTc1MC9zZHJhbV9pbml0LmMKKysrIGIvYm9hcmQvZXNkL2NwY2k3NTAvc2RyYW1faW5pdC5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotI2RlZmluZSBHQiAgICAgICAgICgxIDw8IDMwKQorI2RlZmluZSBHQgkgICAoMSA8PCAzMCkKIAogLyogbXVjaCBvZiB0aGlzIGNvZGUgaXMgYmFzZWQgb24gKG9yIGlzKSB0aGUgY29kZSBpbiB0aGUgcGlwNDA1IHBvcnQgKi8KIC8qIHRoYW5rcyBnbyB0byB0aGUgYXV0aG9ycyBvZiBzYWlkIHBvcnQgLSBKb3NoICovCkBAIC0xMzQsODYgKzEzNCw4NSBAQAogCiAKIC8qIFNEUkFNL0REUiBpbmZvcm1hdGlvbiBzdHJ1Y3QgKi8KLXR5cGVkZWYgc3RydWN0IF9ndE1lbW9yeURpbW1JbmZvCi17Ci0gICAgTUVNT1JZX1RZUEUgICAgICAgICAgbWVtb3J5VHlwZTsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBudW1PZlJvd0FkZHJlc3NlczsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBudW1PZkNvbEFkZHJlc3NlczsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBudW1PZk1vZHVsZUJhbmtzOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIGRhdGFXaWR0aDsKLSAgICBWT0xUQUdFX0lOVEVSRkFDRSAgICB2b2x0YWdlSW50ZXJmYWNlOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIGVycm9yQ2hlY2tUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRUNDICwgUEFSSVRZLi4qLwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIHNkcmFtV2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNCw4LDE2IG9yIDMyICovOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIGVycm9yQ2hlY2tEYXRhV2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMCAtIG5vLCAxIC0gWWVzICovCi0gICAgdW5zaWduZWQgaW50ICAgICAgICAgbWluQ2xrRGVsYXk7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgYnVyc3RMZW5ndGhTdXBwb3J0ZWQ7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgbnVtT2ZCYW5rc09uRWFjaERldmljZTsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBzdXBvcnRlZENhc0xhdGVuY2llczsKLSAgICB1bnNpZ25lZCBpbnQgICAgIAkgUmVmcmVzaEludGVydmFsOwotICAgIHVuc2lnbmVkIGludCAgIAkgbWF4Q0FTbGF0ZW5jeVN1cHBvcnRlZF9Mb1A7CQkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLwotICAgIHVuc2lnbmVkIGludCAgIAkgbWF4Q0FTbGF0ZW5jeVN1cHBvcnRlZF9Sb1A7CQkJLyogUm9QIHJpZ2h0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykqLwotICAgIE1BWF9DTF9TVVBQT1JURURfRERSIG1heENsU3VwcG9ydGVkX0REUjsKLSAgICBNQVhfQ0xfU1VQUE9SVEVEX1NEICBtYXhDbFN1cHBvcnRlZF9TRDsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBtb2R1bGVCYW5rRGVuc2l0eTsKLSAgICAvKiBtb2R1bGUgYXR0cmlidXRlcyAodHJ1ZSBmb3IgeWVzKSAqLwotICAgIGJvb2wgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkQWRkckFuZENvbnRyb2xJbnB1dHM7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZEFkZHJBbmRDb250cm9sSW5wdXRzOwotICAgIGJvb2wgICAgICAgICAgICAgICAgIG9uQ2FyZFBMTDsKLSAgICBib29sICAgICAgICAgICAgICAgICBidWZmZXJlZERRTUJpbnB1dHM7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZERRTUJpbnB1dHM7Ci0gICAgYm9vbAkgICAgICAgICBkaWZmZXJlbnRpYWxDbG9ja0lucHV0OwotICAgIGJvb2wgICAgICAgICAgICAgICAgIHJlZHVuZGFudFJvd0FkZHJlc3Npbmc7Cit0eXBlZGVmIHN0cnVjdCBfZ3RNZW1vcnlEaW1tSW5mbyB7CisJTUVNT1JZX1RZUEUgbWVtb3J5VHlwZTsKKwl1bnNpZ25lZCBpbnQgbnVtT2ZSb3dBZGRyZXNzZXM7CisJdW5zaWduZWQgaW50IG51bU9mQ29sQWRkcmVzc2VzOworCXVuc2lnbmVkIGludCBudW1PZk1vZHVsZUJhbmtzOworCXVuc2lnbmVkIGludCBkYXRhV2lkdGg7CisJVk9MVEFHRV9JTlRFUkZBQ0Ugdm9sdGFnZUludGVyZmFjZTsKKwl1bnNpZ25lZCBpbnQgZXJyb3JDaGVja1R5cGU7CQkJLyogRUNDICwgUEFSSVRZLi4gKi8KKwl1bnNpZ25lZCBpbnQgc2RyYW1XaWR0aDsJCQkvKiA0LDgsMTYgb3IgMzIgKi8gOworCXVuc2lnbmVkIGludCBlcnJvckNoZWNrRGF0YVdpZHRoOwkJLyogMCAtIG5vLCAxIC0gWWVzICovCisJdW5zaWduZWQgaW50IG1pbkNsa0RlbGF5OworCXVuc2lnbmVkIGludCBidXJzdExlbmd0aFN1cHBvcnRlZDsKKwl1bnNpZ25lZCBpbnQgbnVtT2ZCYW5rc09uRWFjaERldmljZTsKKwl1bnNpZ25lZCBpbnQgc3Vwb3J0ZWRDYXNMYXRlbmNpZXM7CisJdW5zaWduZWQgaW50IFJlZnJlc2hJbnRlcnZhbDsKKwl1bnNpZ25lZCBpbnQgbWF4Q0FTbGF0ZW5jeVN1cHBvcnRlZF9Mb1A7CS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KKwl1bnNpZ25lZCBpbnQgbWF4Q0FTbGF0ZW5jeVN1cHBvcnRlZF9Sb1A7CS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCisJTUFYX0NMX1NVUFBPUlRFRF9ERFIgbWF4Q2xTdXBwb3J0ZWRfRERSOworCU1BWF9DTF9TVVBQT1JURURfU0QgbWF4Q2xTdXBwb3J0ZWRfU0Q7CisJdW5zaWduZWQgaW50IG1vZHVsZUJhbmtEZW5zaXR5OworCS8qIG1vZHVsZSBhdHRyaWJ1dGVzICh0cnVlIGZvciB5ZXMpICovCisJYm9vbCBidWZmZXJlZEFkZHJBbmRDb250cm9sSW5wdXRzOworCWJvb2wgcmVnaXN0ZXJlZEFkZHJBbmRDb250cm9sSW5wdXRzOworCWJvb2wgb25DYXJkUExMOworCWJvb2wgYnVmZmVyZWREUU1CaW5wdXRzOworCWJvb2wgcmVnaXN0ZXJlZERRTUJpbnB1dHM7CisJYm9vbCBkaWZmZXJlbnRpYWxDbG9ja0lucHV0OworCWJvb2wgcmVkdW5kYW50Um93QWRkcmVzc2luZzsKIAotICAgIC8qIG1vZHVsZSBnZW5lcmFsIGF0dHJpYnV0ZXMgKi8KLSAgICBib29sICAgICAgICAgICAgICAgICBzdXBvcnRlZEF1dG9QcmVDaGFyZ2U7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgc3Vwb3J0ZWRQcmVDaGFyZ2VBbGw7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgc3Vwb3J0ZWRFYXJseVJhc1ByZUNoYXJnZTsKLSAgICBib29sICAgICAgICAgICAgICAgICBzdXBvcnRlZFdyaXRlMVJlYWRCdXJzdDsKLSAgICBib29sICAgICAgICAgICAgICAgICBzdXBvcnRlZDVQZXJjZW50TG93VkNDOwotICAgIGJvb2wgICAgICAgICAgICAgICAgIHN1cG9ydGVkNVBlcmNlbnRVcHBlclZDQzsKLSAgICAvKiBtb2R1bGUgdGltaW5nIHBhcmFtZXRlcnMgKi8KLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBtaW5SYXNUb0Nhc0RlbGF5OwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIG1pblJvd0FjdGl2ZVJvd0FjdGl2ZURlbGF5OwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIG1pblJhc1B1bHNlV2lkdGg7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgbWluUm93UHJlY2hhcmdlVGltZTsgICAJCQkvKiBtZWFzdXJlZCBpbiBucyAqLworCS8qIG1vZHVsZSBnZW5lcmFsIGF0dHJpYnV0ZXMgKi8KKwlib29sIHN1cG9ydGVkQXV0b1ByZUNoYXJnZTsKKwlib29sIHN1cG9ydGVkUHJlQ2hhcmdlQWxsOworCWJvb2wgc3Vwb3J0ZWRFYXJseVJhc1ByZUNoYXJnZTsKKwlib29sIHN1cG9ydGVkV3JpdGUxUmVhZEJ1cnN0OworCWJvb2wgc3Vwb3J0ZWQ1UGVyY2VudExvd1ZDQzsKKwlib29sIHN1cG9ydGVkNVBlcmNlbnRVcHBlclZDQzsKKwkvKiBtb2R1bGUgdGltaW5nIHBhcmFtZXRlcnMgKi8KKwl1bnNpZ25lZCBpbnQgbWluUmFzVG9DYXNEZWxheTsKKwl1bnNpZ25lZCBpbnQgbWluUm93QWN0aXZlUm93QWN0aXZlRGVsYXk7CisJdW5zaWduZWQgaW50IG1pblJhc1B1bHNlV2lkdGg7CisJdW5zaWduZWQgaW50IG1pblJvd1ByZWNoYXJnZVRpbWU7CQkvKiBtZWFzdXJlZCBpbiBucyAqLwogCi0gICAgaW50ICAgCSAgICAgICAgIGFkZHJBbmRDb21tYW5kSG9sZFRpbWU7CQkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLwotICAgIGludCAgIAkgICAgICAgICBhZGRyQW5kQ29tbWFuZFNldHVwVGltZTsJCQkJLyogKG1lYXN1cmVkIGluIG5zLzEwMCkgKi8KLSAgICBpbnQgICAJICAgICAgICAgZGF0YUlucHV0U2V0dXBUaW1lOwkJCQkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCi0gICAgaW50ICAgCSAgICAgICAgIGRhdGFJbnB1dEhvbGRUaW1lOwkJCQkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCisJaW50IGFkZHJBbmRDb21tYW5kSG9sZFRpbWU7CQkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLworCWludCBhZGRyQW5kQ29tbWFuZFNldHVwVGltZTsJCQkvKiAobWVhc3VyZWQgaW4gbnMvMTAwKSAqLworCWludCBkYXRhSW5wdXRTZXR1cFRpbWU7CQkJCS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KKwlpbnQgZGF0YUlucHV0SG9sZFRpbWU7CQkJCS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KIC8qIHRBQyB0aW1lcyBmb3IgaGlnaGVzdCAybmQgYW5kIDNyZCBoaWdoZXN0IENBUyBMYXRlbmN5IHZhbHVlcyAqLwotICAgIHVuc2lnbmVkIGludCAgIAkgY2xvY2tUb0RhdGFPdXRfTG9QOwkJCQkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCi0gICAgdW5zaWduZWQgaW50ICAgCSBjbG9ja1RvRGF0YU91dF9Sb1A7CQkJCS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpKi8KLSAgICB1bnNpZ25lZCBpbnQgICAJIGNsb2NrVG9EYXRhT3V0TWludXMxX0xvUDsJCQkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLwotICAgIHVuc2lnbmVkIGludCAgIAkgY2xvY2tUb0RhdGFPdXRNaW51czFfUm9QOwkJCS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpKi8KLSAgICB1bnNpZ25lZCBpbnQgICAJIGNsb2NrVG9EYXRhT3V0TWludXMyX0xvUDsJCQkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLwotICAgIHVuc2lnbmVkIGludCAgIAkgY2xvY2tUb0RhdGFPdXRNaW51czJfUm9QOwkJCS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpKi8KKwl1bnNpZ25lZCBpbnQgY2xvY2tUb0RhdGFPdXRfTG9QOwkJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLworCXVuc2lnbmVkIGludCBjbG9ja1RvRGF0YU91dF9Sb1A7CQkvKiBSb1AgcmlnaHQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLworCXVuc2lnbmVkIGludCBjbG9ja1RvRGF0YU91dE1pbnVzMV9Mb1A7CQkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCisJdW5zaWduZWQgaW50IGNsb2NrVG9EYXRhT3V0TWludXMxX1JvUDsJCS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCisJdW5zaWduZWQgaW50IGNsb2NrVG9EYXRhT3V0TWludXMyX0xvUDsJCS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KKwl1bnNpZ25lZCBpbnQgY2xvY2tUb0RhdGFPdXRNaW51czJfUm9QOwkJLyogUm9QIHJpZ2h0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KIAotICAgIHVuc2lnbmVkIGludCAgIAkgbWluaW11bUN5Y2xlVGltZUF0TWF4Q2FzTGF0YW5jeV9Mb1A7CQkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCi0gICAgdW5zaWduZWQgaW50ICAgCSBtaW5pbXVtQ3ljbGVUaW1lQXRNYXhDYXNMYXRhbmN5X1JvUDsJCS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpKi8KKwl1bnNpZ25lZCBpbnQgbWluaW11bUN5Y2xlVGltZUF0TWF4Q2FzTGF0YW5jeV9Mb1A7CS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KKwl1bnNpZ25lZCBpbnQgbWluaW11bUN5Y2xlVGltZUF0TWF4Q2FzTGF0YW5jeV9Sb1A7CS8qIFJvUCByaWdodCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCiAKLSAgICB1bnNpZ25lZCBpbnQgICAJIG1pbmltdW1DeWNsZVRpbWVBdE1heENhc0xhdGFuY3lNaW51czFfTG9QOwkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCi0gICAgdW5zaWduZWQgaW50ICAgCSBtaW5pbXVtQ3ljbGVUaW1lQXRNYXhDYXNMYXRhbmN5TWludXMxX1JvUDsJLyogUm9QIHJpZ2h0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykqLworCXVuc2lnbmVkIGludCBtaW5pbXVtQ3ljbGVUaW1lQXRNYXhDYXNMYXRhbmN5TWludXMxX0xvUDsJLyogTG9QIGxlZnQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLworCXVuc2lnbmVkIGludCBtaW5pbXVtQ3ljbGVUaW1lQXRNYXhDYXNMYXRhbmN5TWludXMxX1JvUDsJLyogUm9QIHJpZ2h0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KIAotICAgIHVuc2lnbmVkIGludCAgIAkgbWluaW11bUN5Y2xlVGltZUF0TWF4Q2FzTGF0YW5jeU1pbnVzMl9Mb1A7CS8qIExvUCBsZWZ0IG9mIHBvaW50IChtZWFzdXJlZCBpbiBucykgKi8KLSAgICB1bnNpZ25lZCBpbnQgICAJIG1pbmltdW1DeWNsZVRpbWVBdE1heENhc0xhdGFuY3lNaW51czJfUm9QOwkvKiBSb1AgcmlnaHQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSovCisJdW5zaWduZWQgaW50IG1pbmltdW1DeWNsZVRpbWVBdE1heENhc0xhdGFuY3lNaW51czJfTG9QOwkvKiBMb1AgbGVmdCBvZiBwb2ludCAobWVhc3VyZWQgaW4gbnMpICovCisJdW5zaWduZWQgaW50IG1pbmltdW1DeWNsZVRpbWVBdE1heENhc0xhdGFuY3lNaW51czJfUm9QOwkvKiBSb1AgcmlnaHQgb2YgcG9pbnQgKG1lYXN1cmVkIGluIG5zKSAqLwogCi0gICAgLyogUGFyYW1ldGVycyBjYWxjdWxhdGVkIGZyb20KLSAgICAgICB0aGUgZXh0cmFjdGVkIERJTU0gaW5mb3JtYXRpb24gKi8KLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBzaXplOwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIGRldmljZURlbnNpdHk7ICAgICAgICAgICAJCSAgICAgICAJLyogMTYsNjQsMTI4LDI1NiBvciA1MTIgTWJpdCAqLwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIG51bWJlck9mRGV2aWNlczsKLSAgICB1Y2hhciAJCSBkcmJfc2l6ZTsJCQkJICAgICAgIAkvKiBEUkFNIHNpemUgaW4gbio2NE1iaXQgKi8KLSAgICB1Y2hhciAJCSBzbG90OwkJCQkJCS8qIFNsb3QgTnVtYmVyIHRoaXMgbW9kdWxlIGlzIGluc2VydGVkIGluICovCi0gICAgdWNoYXIgCQkgc3BkX3Jhd19kYXRhWzEyOF07CQkJICAgICAgIAkvKiBDb250ZW50IG9mIFNQRC1FRVBST00gY29waWVkIDE6MSAqLworCS8qIFBhcmFtZXRlcnMgY2FsY3VsYXRlZCBmcm9tCisJICAgdGhlIGV4dHJhY3RlZCBESU1NIGluZm9ybWF0aW9uICovCisJdW5zaWduZWQgaW50IHNpemU7CisJdW5zaWduZWQgaW50IGRldmljZURlbnNpdHk7CQkJLyogMTYsNjQsMTI4LDI1NiBvciA1MTIgTWJpdCAqLworCXVuc2lnbmVkIGludCBudW1iZXJPZkRldmljZXM7CisJdWNoYXIgZHJiX3NpemU7CQkJCQkvKiBEUkFNIHNpemUgaW4gbio2NE1iaXQgKi8KKwl1Y2hhciBzbG90OwkJCQkJLyogU2xvdCBOdW1iZXIgdGhpcyBtb2R1bGUgaXMgaW5zZXJ0ZWQgaW4gKi8KKwl1Y2hhciBzcGRfcmF3X2RhdGFbMTI4XTsJCQkvKiBDb250ZW50IG9mIFNQRC1FRVBST00gY29waWVkIDE6MSAqLwogI2lmZGVmIERFQlVHCi0gICAgdWNoYXIgCQkgbWFudWZhY3R1cmFbOF07CQkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDY0LTcxICovCi0gICAgdWNoYXIgCQkgbW9kdWxfaWRbMThdOwkJCQkJLyogQ29udGVudCBvZiBTUEQtRUVQUk9NIEJ5dGUgNzMtOTAgKi8KLSAgICB1Y2hhciAJCSB2ZW5kb3JfZGF0YVsyN107CQkJICAgICAgIAkvKiBDb250ZW50IG9mIFNQRC1FRVBST00gQnl0ZSA5OS0xMjUgKi8KLSAgICB1bnNpZ25lZCBsb25nCSBtb2R1bF9zZXJpYWxfbm87CQkJICAgICAgIAkvKiBDb250ZW50IG9mIFNQRC1FRVBST00gQnl0ZSA5NS05OCAqLwotICAgIHVuc2lnbmVkIGludCAgICAgICAgIG1hbnVmYWNfZGF0ZTsJCQkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDkzLTk0ICovCi0gICAgdW5zaWduZWQgaW50ICAgICAgICAgbW9kdWxfcmV2aXNpb247CQkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDkxLTkyICovCi0gICAgdWNoYXIgCQkgbWFudWZhY19wbGFjZTsJCQkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDcyICovCisJdWNoYXIgbWFudWZhY3R1cmFbOF07CQkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDY0LTcxICovCisJdWNoYXIgbW9kdWxfaWRbMThdOwkJCQkvKiBDb250ZW50IG9mIFNQRC1FRVBST00gQnl0ZSA3My05MCAqLworCXVjaGFyIHZlbmRvcl9kYXRhWzI3XTsJCQkJLyogQ29udGVudCBvZiBTUEQtRUVQUk9NIEJ5dGUgOTktMTI1ICovCisJdW5zaWduZWQgbG9uZyBtb2R1bF9zZXJpYWxfbm87CQkJLyogQ29udGVudCBvZiBTUEQtRUVQUk9NIEJ5dGUgOTUtOTggKi8KKwl1bnNpZ25lZCBpbnQgbWFudWZhY19kYXRlOwkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDkzLTk0ICovCisJdW5zaWduZWQgaW50IG1vZHVsX3JldmlzaW9uOwkJCS8qIENvbnRlbnQgb2YgU1BELUVFUFJPTSBCeXRlIDkxLTkyICovCisJdWNoYXIgbWFudWZhY19wbGFjZTsJCQkJLyogQ29udGVudCBvZiBTUEQtRUVQUk9NIEJ5dGUgNzIgKi8KIAogI2VuZGlmCiB9IEFVWF9NRU1fRElNTV9JTkZPOwpAQCAtMzY0LDMxICszNjMsMzEgQEAKIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChkaW1tSW5mby0+bWFudWZhY3R1cmEpOyBpKyspIHsKIAkJZGltbUluZm8tPm1hbnVmYWN0dXJhW2ldID0gZGF0YVs2NCArIGldOwogCX0KLQlwcmludGYgKCJcblRoaXMgUkFNLU1vZHVsZSBpcyBwcm9kdWNlZCBieTogCQklc1xuIiwKKwlwcmludGYgKCJcblRoaXMgUkFNLU1vZHVsZSBpcyBwcm9kdWNlZCBieToJCSVzXG4iLAogCQlkaW1tSW5mby0+bWFudWZhY3R1cmEpOwogCiAJLyogZmluZCBNYW51bC1JRCBvZiBEaW1tIE1vZHVsZSAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGRpbW1JbmZvLT5tb2R1bF9pZCk7IGkrKykgewogCQlkaW1tSW5mby0+bW9kdWxfaWRbaV0gPSBkYXRhWzczICsgaV07CiAJfQotCXByaW50ZiAoIlRoZSBNb2R1bGUtSUQgb2YgdGhpcyBSQU0tTW9kdWxlIGlzOiAJCSVzXG4iLAorCXByaW50ZiAoIlRoZSBNb2R1bGUtSUQgb2YgdGhpcyBSQU0tTW9kdWxlIGlzOgkJJXNcbiIsCiAJCWRpbW1JbmZvLT5tb2R1bF9pZCk7CiAKIAkvKiBmaW5kIFZlbmRvci1EYXRhIG9mIERpbW0gTW9kdWxlICovCiAJZm9yIChpID0gMDsgaSA8IHNpemVvZiAoZGltbUluZm8tPnZlbmRvcl9kYXRhKTsgaSsrKSB7CiAJCWRpbW1JbmZvLT52ZW5kb3JfZGF0YVtpXSA9IGRhdGFbOTkgKyBpXTsKIAl9Ci0JcHJpbnRmICgiVmVuZG9yIERhdGEgb2YgdGhpcyBSQU0tTW9kdWxlIGlzOiAJCSVzXG4iLAorCXByaW50ZiAoIlZlbmRvciBEYXRhIG9mIHRoaXMgUkFNLU1vZHVsZSBpczoJCSVzXG4iLAogCQlkaW1tSW5mby0+dmVuZG9yX2RhdGEpOwogCiAJLyogZmluZCBtb2R1bF9zZXJpYWxfbm8gb2YgRGltbSBNb2R1bGUgKi8KIAlkaW1tSW5mby0+bW9kdWxfc2VyaWFsX25vID0gKCooKHVuc2lnbmVkIGxvbmcgKikgKCZkYXRhWzk1XSkpKTsKLQlwcmludGYgKCJTZXJpYWwgTm8uIG9mIHRoaXMgUkFNLU1vZHVsZSBpczogCQklbGQgKCVseClcbiIsCisJcHJpbnRmICgiU2VyaWFsIE5vLiBvZiB0aGlzIFJBTS1Nb2R1bGUgaXM6CQklbGQgKCVseClcbiIsCiAJCWRpbW1JbmZvLT5tb2R1bF9zZXJpYWxfbm8sIGRpbW1JbmZvLT5tb2R1bF9zZXJpYWxfbm8pOwogCiAJLyogZmluZCBNYW51ZmFjLURhdGEgb2YgRGltbSBNb2R1bGUgKi8KIAlkaW1tSW5mby0+bWFudWZhY19kYXRlID0gKCooKHVuc2lnbmVkIGludCAqKSAoJmRhdGFbOTNdKSkpOwotCXByaW50ZiAoIk1hbnVmYWN0b3JpbmcgRGF0ZSBvZiB0aGlzIFJBTS1Nb2R1bGUgaXM6IAklZC4lZFxuIiwgZGF0YVs5M10sIGRhdGFbOTRdKTsJLypkaW1tSW5mby0+bWFudWZhY19kYXRlICovCisJcHJpbnRmICgiTWFudWZhY3RvcmluZyBEYXRlIG9mIHRoaXMgUkFNLU1vZHVsZSBpczoJJWQuJWRcbiIsIGRhdGFbOTNdLCBkYXRhWzk0XSk7CS8qZGltbUluZm8tPm1hbnVmYWNfZGF0ZSAqLwogCiAJLyogZmluZCBtb2R1bF9yZXZpc2lvbiBvZiBEaW1tIE1vZHVsZSAqLwogCWRpbW1JbmZvLT5tb2R1bF9yZXZpc2lvbiA9ICgqKCh1bnNpZ25lZCBpbnQgKikgKCZkYXRhWzkxXSkpKTsKQEAgLTM5Niw3ICszOTUsNyBAQAogCiAJLyogZmluZCBtYW51ZmFjX3BsYWNlIG9mIERpbW0gTW9kdWxlICovCiAJZGltbUluZm8tPm1hbnVmYWNfcGxhY2UgPSAoKigodW5zaWduZWQgY2hhciAqKSAoJmRhdGFbNzJdKSkpOwotCXByaW50ZiAoIm1hbnVmYWNfcGxhY2Ugb2YgdGhpcyBSQU0tTW9kdWxlIGlzOiAJCSVkXG4iLAorCXByaW50ZiAoIm1hbnVmYWNfcGxhY2Ugb2YgdGhpcyBSQU0tTW9kdWxlIGlzOgkJJWRcbiIsCiAJCWRpbW1JbmZvLT5tYW51ZmFjX3BsYWNlKTsKIAogI2VuZGlmCkBAIC00MjYsMTEgKzQyNSwxMSBAQAogI2lmZGVmIERFQlVHCiAJCQlpZiAoZGltbUluZm8tPm1lbW9yeVR5cGUgPT0gMCkKIAkJCQlEUCAocHJpbnRmCi0JCQkJICAgICgiRHJhbV90eXBlIGluIHNsb3QgJWQgaXM6IAkJCVNEUkFNXG4iLAorCQkJCSAgICAoIkRyYW1fdHlwZSBpbiBzbG90ICVkIGlzOgkJCVNEUkFNXG4iLAogCQkJCSAgICAgZGltbUluZm8tPnNsb3QpKTsKIAkJCWlmIChkaW1tSW5mby0+bWVtb3J5VHlwZSA9PSAxKQogCQkJCURQIChwcmludGYKLQkJCQkgICAgKCJEcmFtX3R5cGUgaW4gc2xvdCAlZCBpczogCQkJRERSQU1cbiIsCisJCQkJICAgICgiRHJhbV90eXBlIGluIHNsb3QgJWQgaXM6CQkJRERSQU1cbiIsCiAJCQkJICAgICBkaW1tSW5mby0+c2xvdCkpOwogI2VuZGlmCiAJCQlicmVhazsKQEAgLTQzOSw3ICs0MzgsNyBAQAogCQljYXNlIDM6CS8qIE51bWJlciBPZiBSb3cgQWRkcmVzc2VzICovCiAJCQlkaW1tSW5mby0+bnVtT2ZSb3dBZGRyZXNzZXMgPSBkYXRhW2ldOwogCQkJRFAgKHByaW50ZgotCQkJICAgICgiTW9kdWxlIE51bWJlciBvZiByb3cgYWRkcmVzc2VzOiAJCSVkXG4iLAorCQkJICAgICgiTW9kdWxlIE51bWJlciBvZiByb3cgYWRkcmVzc2VzOgkJJWRcbiIsCiAJCQkgICAgIGRpbW1JbmZvLT5udW1PZlJvd0FkZHJlc3NlcykpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00NDcsNyArNDQ2LDcgQEAKIAkJY2FzZSA0OgkvKiBOdW1iZXIgT2YgQ29sdW1uIEFkZHJlc3NlcyAqLwogCQkJZGltbUluZm8tPm51bU9mQ29sQWRkcmVzc2VzID0gZGF0YVtpXTsKIAkJCURQIChwcmludGYKLQkJCSAgICAoIk1vZHVsZSBOdW1iZXIgb2YgY29sIGFkZHJlc3NlczogCQklZFxuIiwKKwkJCSAgICAoIk1vZHVsZSBOdW1iZXIgb2YgY29sIGFkZHJlc3NlczoJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+bnVtT2ZDb2xBZGRyZXNzZXMpKTsKIAkJCWJyZWFrOwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNDYzLDcgKzQ2Miw3IEBACiAJCWNhc2UgNjoJLyogRGF0YSBXaWR0aCAqLwogCQkJZGltbUluZm8tPmRhdGFXaWR0aCA9IGRhdGFbaV07CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJNb2R1bGUgRGF0YSBXaWR0aDogCQkJCSVkXG4iLAorCQkJICAgICgiTW9kdWxlIERhdGEgV2lkdGg6CQkJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+ZGF0YVdpZHRoKSk7CiAJCQlicmVhazsKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTUxOCw3ICs1MTcsNyBAQAogCQkJZGltbUluZm8tPm1pbmltdW1DeWNsZVRpbWVBdE1heENhc0xhdGFuY3lfUm9QID0KIAkJCQlyaWdodE9mUG9pbnQ7CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJNaW5pbXVtIEN5Y2xlIFRpbWUgQXQgTWF4IENhc0xhdGFuY3k6IAkJJWQuJWQgW25zXVxuIiwKKwkJCSAgICAoIk1pbmltdW0gQ3ljbGUgVGltZSBBdCBNYXggQ2FzTGF0YW5jeToJCSVkLiVkIFtuc11cbiIsCiAJCQkgICAgIGxlZnRPZlBvaW50LCByaWdodE9mUG9pbnQpKTsKIAkJCWJyZWFrOwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNTMzLDcgKzUzMiw3IEBACiAJCQlkaW1tSW5mby0+Y2xvY2tUb0RhdGFPdXRfTG9QID0gbGVmdE9mUG9pbnQ7CiAJCQlkaW1tSW5mby0+Y2xvY2tUb0RhdGFPdXRfUm9QID0gcmlnaHRPZlBvaW50OwogCQkJRFAgKHByaW50ZgotCQkJICAgICgiQ2xvY2sgVG8gRGF0YSBPdXQ6IAkJCQklZC4lMmQgW25zXVxuIiwKKwkJCSAgICAoIkNsb2NrIFRvIERhdGEgT3V0OgkJCQklZC4lMmQgW25zXVxuIiwKIAkJCSAgICAgbGVmdE9mUG9pbnQsIHJpZ2h0T2ZQb2ludCkpOwogCQkJLypkaW1tSW5mby0+Y2xvY2tUb0RhdGFPdXQgKi8KIAkJCWJyZWFrOwpAQCAtNTQzLDcgKzU0Miw3IEBACiAJCWNhc2UgMTE6CS8qIEVycm9yIENoZWNrIFR5cGUgKi8KIAkJCWRpbW1JbmZvLT5lcnJvckNoZWNrVHlwZSA9IGRhdGFbaV07CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJFcnJvciBDaGVjayBUeXBlICgwPU5PTkUpOiAJCQklZFxuIiwKKwkJCSAgICAoIkVycm9yIENoZWNrIFR5cGUgKDA9Tk9ORSk6CQkJJWRcbiIsCiAJCQkgICAgIGRpbW1JbmZvLT5lcnJvckNoZWNrVHlwZSkpOwogCQkJYnJlYWs7CiAjZW5kaWYKQEAgLTU2MCw3ICs1NTksNyBAQAogCQljYXNlIDEzOgkvKiBTZHJhbSBXaWR0aCAqLwogCQkJZGltbUluZm8tPnNkcmFtV2lkdGggPSBkYXRhW2ldOwogCQkJRFAgKHByaW50ZgotCQkJICAgICgiU2RyYW0gV2lkdGg6IAkJCQkJJWRcbiIsCisJCQkgICAgKCJTZHJhbSBXaWR0aDoJCQkJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+c2RyYW1XaWR0aCkpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01NjgsNyArNTY3LDcgQEAKIAkJY2FzZSAxNDoJLyogRXJyb3IgQ2hlY2sgRGF0YSBXaWR0aCAqLwogCQkJZGltbUluZm8tPmVycm9yQ2hlY2tEYXRhV2lkdGggPSBkYXRhW2ldOwogCQkJRFAgKHByaW50ZgotCQkJICAgICgiRXJyb3IgQ2hlY2sgRGF0YSBXaWR0aDogCQkJJWRcbiIsCisJCQkgICAgKCJFcnJvciBDaGVjayBEYXRhIFdpZHRoOgkJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+ZXJyb3JDaGVja0RhdGFXaWR0aCkpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01NzYsNyArNTc1LDcgQEAKIAkJY2FzZSAxNToJLyogTWluaW11bSBDbG9jayBEZWxheSAqLwogCQkJZGltbUluZm8tPm1pbkNsa0RlbGF5ID0gZGF0YVtpXTsKIAkJCURQIChwcmludGYKLQkJCSAgICAoIk1pbmltdW0gQ2xvY2sgRGVsYXk6IAkJCQklZFxuIiwKKwkJCSAgICAoIk1pbmltdW0gQ2xvY2sgRGVsYXk6CQkJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+bWluQ2xrRGVsYXkpKTsKIAkJCWJyZWFrOwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNTg1LDcgKzU4NCw3IEBACiAJCQkgICAvKioqKioqLSoqKioqKi0qKioqKiotKioqKioqKgogCQkJICAgKiBiaXQzIHwgYml0MiB8IGJpdDEgfCBiaXQwICoKIAkJCSAgICoqKioqKiotKioqKioqLSoqKioqKi0qKioqKioqCi0JICAgIGJ1cnN0IGxlbmd0aCA9ICogIDggICB8ICA0ICAgfCAgIDIgIHwgICAxICAqCisJICAgIGJ1cnN0IGxlbmd0aCA9ICogIDggICB8ICA0CSB8ICAgMgl8ICAgMSAgKgogCQkJICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogCSAgICBJZiBmb3IgZXhhbXBsZSBiaXQwIGFuZCBiaXQyIGFyZSBzZXQsIHRoZSBidXJzdApAQCAtNTk0LDcgKzU5Myw3IEBACiAJCQlkaW1tSW5mby0+YnVyc3RMZW5ndGhTdXBwb3J0ZWQgPSBkYXRhW2ldOwogI2lmZGVmIERFQlVHCiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJCdXJzdCBMZW5ndGggU3VwcG9ydGVkOiAJCQkiKSk7CisJCQkgICAgKCJCdXJzdCBMZW5ndGggU3VwcG9ydGVkOgkJCSIpKTsKIAkJCWlmIChkaW1tSW5mby0+YnVyc3RMZW5ndGhTdXBwb3J0ZWQgJiAweDAxKQogCQkJCURQIChwcmludGYgKCIxLCAiKSk7CiAJCQlpZiAoZGltbUluZm8tPmJ1cnN0TGVuZ3RoU3VwcG9ydGVkICYgMHgwMikKQEAgLTYxMSw3ICs2MTAsNyBAQAogCQljYXNlIDE3OgkvKiBOdW1iZXIgT2YgQmFua3MgT24gRWFjaCBEZXZpY2UgKi8KIAkJCWRpbW1JbmZvLT5udW1PZkJhbmtzT25FYWNoRGV2aWNlID0gZGF0YVtpXTsKIAkJCURQIChwcmludGYKLQkJCSAgICAoIk51bWJlciBPZiBCYW5rcyBPbiBFYWNoIENoaXA6IAkJCSVkXG4iLAorCQkJICAgICgiTnVtYmVyIE9mIEJhbmtzIE9uIEVhY2ggQ2hpcDoJCQklZFxuIiwKIAkJCSAgICAgZGltbUluZm8tPm51bU9mQmFua3NPbkVhY2hEZXZpY2UpKTsKIAkJCWJyZWFrOwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNjIyLDI0ICs2MjEsMjQgQEAKIAkJCSAqKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKioKIAkJCSAqIGJpdDcgfCBiaXQ2IHwgYml0NSB8IGJpdDQgfCBiaXQzIHwgYml0MiB8IGJpdDEgfCBiaXQwICoKIAkJCSAqKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKioKLQkJCSBDQVMgPSAgICogVEJEICB8IFRCRCAgfCAzLjUgIHwgICAzICB8IDIuNSAgfCAgMiAgIHwgMS41ICB8ICAgMSAgKgorCQkJIENBUyA9CSAqIFRCRAl8IFRCRCAgfCAzLjUgIHwgICAzICB8IDIuNSAgfCAgMiAgIHwgMS41ICB8ICAgMSAgKgogCQkJICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJIFNEUkFNOgogCQkJICoqKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqKgogCQkJICogYml0NyB8IGJpdDYgfCBiaXQ1IHwgYml0NCB8IGJpdDMgfCBiaXQyIHwgYml0MSB8IGJpdDAgKgogCQkJICoqKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqLSoqKioqKi0qKioqKiotKioqKioqKgotCQkJIENBUyA9ICAgKiBUQkQgIHwgIDcgICB8ICA2ICAgfCAgNSAgIHwgIDQgICB8ICAzICAgfCAgIDIgIHwgICAxICAqCisJCQkgQ0FTID0JICogVEJECXwgIDcgICB8ICA2ICAgfCAgNSAgIHwJNCAgIHwgIDMgICB8ICAgMiAgfCAgIDEgICoKIAkJCSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAkJCWRpbW1JbmZvLT5zdXBvcnRlZENhc0xhdGVuY2llcyA9IGRhdGFbaV07CiAjaWZkZWYgREVCVUcKIAkJCURQIChwcmludGYKLQkJCSAgICAoIlN1cG9ydGVkIENhcyBMYXRlbmNpZXM6IChDTCkgCQkJIikpOworCQkJICAgICgiU3Vwb3J0ZWQgQ2FzIExhdGVuY2llczogKENMKQkJCSIpKTsKIAkJCWlmIChkaW1tSW5mby0+bWVtb3J5VHlwZSA9PSAwKSB7CS8qIFNEUkFNICovCiAJCQkJZm9yIChrID0gMDsgayA8PSA3OyBrKyspIHsKIAkJCQkJaWYgKGRpbW1JbmZvLT4KIAkJCQkJICAgIHN1cG9ydGVkQ2FzTGF0ZW5jaWVzICYgKDEgPDwgaykpCiAJCQkJCQlEUCAocHJpbnRmCi0JCQkJCQkgICAgKCIlZCwgCQkJIiwKKwkJCQkJCSAgICAoIiVkLAkJCSIsCiAJCQkJCQkgICAgIGsgKyAxKSk7CiAJCQkJfQogCkBAIC03MzgsNyArNzM3LDcgQEAKIAkJCQkJCQkJbWF4Q0FTbGF0ZW5jeVN1cHBvcnRlZF9Sb1AKIAkJCQkJCQkJPSAwOwogCQkJCQkJRFAgKHByaW50ZgotCQkJCQkJICAgICgiTWF4LiBDYXMgTGF0ZW5jaWVzIChERFIgTG9QLlJvUCBOb3RhdGlvbik6IAklZC4lZCBcbiIsCisJCQkJCQkgICAgKCJNYXguIENhcyBMYXRlbmNpZXMgKEREUiBMb1AuUm9QIE5vdGF0aW9uKToJJWQuJWQgXG4iLAogCQkJCQkJICAgICBkaW1tSW5mby0+CiAJCQkJCQkgICAgIG1heENBU2xhdGVuY3lTdXBwb3J0ZWRfTG9QLAogCQkJCQkJICAgICBkaW1tSW5mby0+CkBAIC03NDYsNyArNzQ1LDcgQEAKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFNEUkFNOgogCQkJCQkJLyogQ0FTIGxhdGVuY3kgMSwgMiwgMywgNCwgNSwgNiwgNyAqLwotCQkJCQkJZGltbUluZm8tPm1heENsU3VwcG9ydGVkX1NEID0gajsJLyogIENhcyBMYXRlbmN5IEREUi1SQU0gQ29kZWQgICAgICAgICAgICAgICAgICAgKi8KKwkJCQkJCWRpbW1JbmZvLT5tYXhDbFN1cHBvcnRlZF9TRCA9IGo7CS8qICBDYXMgTGF0ZW5jeSBERFItUkFNIENvZGVkCQkJKi8KIAkJCQkJCURQIChwcmludGYKIAkJCQkJCSAgICAoIk1heC4gQ2FzIExhdGVuY2llcyAoU0QpOiAlZFxuIiwKIAkJCQkJCSAgICAgZGltbUluZm8tPgpAQCAtODg2LDcgKzg4NSw3IEBACiAJCQkJICAgICgiIC0gbG93ZXIgVkNDIHRvbGVyYW5jZToJCQk1IFBlcmNlbnQgXG4iKSk7CiAJCQllbHNlCiAJCQkJRFAgKHByaW50ZgotCQkJCSAgICAoIiAgLSBsb3dlciBWQ0MgdG9sZXJhbmNlOgkJCTEwIFBlcmNlbnQgXG4iKSk7CisJCQkJICAgICgiCS0gbG93ZXIgVkNDIHRvbGVyYW5jZToJCQkxMCBQZXJjZW50IFxuIikpOwogCiAJCQlpZiAoZGltbUluZm8tPnN1cG9ydGVkNVBlcmNlbnRVcHBlclZDQyA9PSAxKQogCQkJCURQIChwcmludGYKQEAgLTk4Niw3ICs5ODUsNyBAQAogCQkJICAgICgiKioqIDEgY2xvY2sgY3ljbGUgPSAlbGQgIDEwcHMgaW50ZXJ2YWxscyA9ICVsZC4lbGQgbnMqKioqXG4iLAogCQkJICAgICB0bWVtY2xrLCB0bWVtY2xrIC8gMTAwLCB0bWVtY2xrICUgMTAwKSk7CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJNaW5pbXVtIFJvdyBQcmVjaGFyZ2UgVGltZSBbbnNdOiAJCSVkLiUyZCA9IGluIENsayBjeWNsZXMgJWRcbiIsCisJCQkgICAgKCJNaW5pbXVtIFJvdyBQcmVjaGFyZ2UgVGltZSBbbnNdOgkJJWQuJTJkID0gaW4gQ2xrIGN5Y2xlcyAlZFxuIiwKIAkJCSAgICAgbGVmdE9mUG9pbnQsIHJpZ2h0T2ZQb2ludCwgdHJwX2Nsb2NrcykpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMDA1LDcgKzEwMDQsNyBAQAogCQkJCShkaW1tSW5mby0+bWluUm93QWN0aXZlUm93QWN0aXZlRGVsYXkgKwogCQkJCSAodG1lbWNsayAtIDEpKSAvIHRtZW1jbGs7CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJNaW5pbXVtIFJvdyBBY3RpdmUgLVRvLSBSb3cgQWN0aXZlIERlbGF5IFtuc106IAklZC4lMmQgPSBpbiBDbGsgY3ljbGVzICVkXG4iLAorCQkJICAgICgiTWluaW11bSBSb3cgQWN0aXZlIC1Uby0gUm93IEFjdGl2ZSBEZWxheSBbbnNdOgklZC4lMmQgPSBpbiBDbGsgY3ljbGVzICVkXG4iLAogCQkJICAgICBsZWZ0T2ZQb2ludCwgcmlnaHRPZlBvaW50LCB0cnBfY2xvY2tzKSk7CiAJCQlicmVhazsKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTEwMjQsNyArMTAyMyw3IEBACiAJCQkJKGRpbW1JbmZvLT5taW5Sb3dBY3RpdmVSb3dBY3RpdmVEZWxheSArCiAJCQkJICh0bWVtY2xrIC0gMSkpIC8gdG1lbWNsazsKIAkJCURQIChwcmludGYKLQkJCSAgICAoIk1pbmltdW0gUmFzLVRvLUNhcyBEZWxheSBbbnNdOiAJCQklZC4lMmQgPSBpbiBDbGsgY3ljbGVzICVkXG4iLAorCQkJICAgICgiTWluaW11bSBSYXMtVG8tQ2FzIERlbGF5IFtuc106CQkJJWQuJTJkID0gaW4gQ2xrIGN5Y2xlcyAlZFxuIiwKIAkJCSAgICAgbGVmdE9mUG9pbnQsIHJpZ2h0T2ZQb2ludCwgdHJwX2Nsb2NrcykpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMDM1LDcgKzEwMzQsNyBAQAogCQkJCShOU3RvMTBQUyAoZGF0YVtpXSkgKwogCQkJCSAodG1lbWNsayAtIDEpKSAvIHRtZW1jbGs7CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJNaW5pbXVtIFJhcyBQdWxzZSBXaWR0aCBbbnNdOiAJCQklZCA9IGluIENsayBjeWNsZXMgJWRcbiIsCisJCQkgICAgKCJNaW5pbXVtIFJhcyBQdWxzZSBXaWR0aCBbbnNdOgkJCSVkID0gaW4gQ2xrIGN5Y2xlcyAlZFxuIiwKIAkJCSAgICAgZGltbUluZm8tPm1pblJhc1B1bHNlV2lkdGgsIHRyYXNfY2xvY2tzKSk7CiAKIAkJCWJyZWFrOwpAQCAtMTA0NCw3ICsxMDQzLDcgQEAKIAkJY2FzZSAzMToJLyogTW9kdWxlIEJhbmsgRGVuc2l0eSAqLwogCQkJZGltbUluZm8tPm1vZHVsZUJhbmtEZW5zaXR5ID0gZGF0YVtpXTsKIAkJCURQIChwcmludGYKLQkJCSAgICAoIk1vZHVsZSBCYW5rIERlbnNpdHk6IAkJCQklZFxuIiwKKwkJCSAgICAoIk1vZHVsZSBCYW5rIERlbnNpdHk6CQkJCSVkXG4iLAogCQkJICAgICBkaW1tSW5mby0+bW9kdWxlQmFua0RlbnNpdHkpKTsKICNpZmRlZiBERUJVRwogCQkJRFAgKHByaW50ZgpAQCAtMTA5NSw3ICsxMDk0LDcgQEAKIAkJCWRpbW1JbmZvLT5hZGRyQW5kQ29tbWFuZFNldHVwVGltZSA9CiAJCQkJKGxlZnRPZlBvaW50ICogMTAwICsgcmlnaHRPZlBvaW50KSAqIHNpZ247CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJBZGRyZXNzIEFuZCBDb21tYW5kIFNldHVwIFRpbWUgW25zXTogCQklZC4lZFxuIiwKKwkJCSAgICAoIkFkZHJlc3MgQW5kIENvbW1hbmQgU2V0dXAgVGltZSBbbnNdOgkJJWQuJWRcbiIsCiAJCQkgICAgIHNpZ24gKiBsZWZ0T2ZQb2ludCwgcmlnaHRPZlBvaW50KSk7CiAJCQlicmVhazsKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTExMjIsNyArMTEyMSw3IEBACiAJCQlkaW1tSW5mby0+YWRkckFuZENvbW1hbmRIb2xkVGltZSA9CiAJCQkJKGxlZnRPZlBvaW50ICogMTAwICsgcmlnaHRPZlBvaW50KSAqIHNpZ247CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJBZGRyZXNzIEFuZCBDb21tYW5kIEhvbGQgVGltZSBbbnNdOiAJCSVkLiVkXG4iLAorCQkJICAgICgiQWRkcmVzcyBBbmQgQ29tbWFuZCBIb2xkIFRpbWUgW25zXToJCSVkLiVkXG4iLAogCQkJICAgICBzaWduICogbGVmdE9mUG9pbnQsIHJpZ2h0T2ZQb2ludCkpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMTQ5LDcgKzExNDgsNyBAQAogCQkJZGltbUluZm8tPmRhdGFJbnB1dFNldHVwVGltZSA9CiAJCQkJKGxlZnRPZlBvaW50ICogMTAwICsgcmlnaHRPZlBvaW50KSAqIHNpZ247CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJEYXRhIElucHV0IFNldHVwIFRpbWUgW25zXTogCQkJJWQuJWRcbiIsCisJCQkgICAgKCJEYXRhIElucHV0IFNldHVwIFRpbWUgW25zXToJCQklZC4lZFxuIiwKIAkJCSAgICAgc2lnbiAqIGxlZnRPZlBvaW50LCByaWdodE9mUG9pbnQpKTsKIAkJCWJyZWFrOwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTE3Niw3ICsxMTc1LDcgQEAKIAkJCWRpbW1JbmZvLT5kYXRhSW5wdXRIb2xkVGltZSA9CiAJCQkJKGxlZnRPZlBvaW50ICogMTAwICsgcmlnaHRPZlBvaW50KSAqIHNpZ247CiAJCQlEUCAocHJpbnRmCi0JCQkgICAgKCJEYXRhIElucHV0IEhvbGQgVGltZSBbbnNdOiAJCQklZC4lZFxuXG4iLAorCQkJICAgICgiRGF0YSBJbnB1dCBIb2xkIFRpbWUgW25zXToJCQklZC4lZFxuXG4iLAogCQkJICAgICBzaWduICogbGVmdE9mUG9pbnQsIHJpZ2h0T2ZQb2ludCkpOwogCQkJYnJlYWs7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMjEyLDcgKzEyMTEsNyBAQAogCSAgICAgICAoZGltbUluZm8tPm51bU9mUm93QWRkcmVzc2VzICsgZGltbUluZm8tPm51bU9mQ29sQWRkcmVzc2VzKSk7CiAJdG1wICo9IGRpbW1JbmZvLT5udW1PZk1vZHVsZUJhbmtzOwogCXRtcCAqPSBkaW1tSW5mby0+c2RyYW1XaWR0aDsKLQl0bXAgPSB0bXAgPj4gMjQ7CS8qIGRpdiBieSAweDQwMDAwMDAgKDY0TSkgICAgICAgKi8KKwl0bXAgPSB0bXAgPj4gMjQ7CS8qIGRpdiBieSAweDQwMDAwMDAgKDY0TSkJKi8KIAlkaW1tSW5mby0+ZHJiX3NpemUgPSAodWNoYXIpIHRtcDsKIAlEUCAocHJpbnRmICgiTW9kdWxlIERSQiBzaXplIChuKjY0TWJpdCk6ICVkXG4iLCBkaW1tSW5mby0+ZHJiX3NpemUpKTsKIApAQCAtMTMyOCw3ICsxMzI3LDcgQEAKIAkJCQlEUCAocHJpbnRmCiAJCQkJICAgICgiTWF4LiBDTCBpcyAyLDVzIENMS3MgMHgxNDFjPSAlMDhseCwgMHgxNDA0ID0gJTA4bHhcbiIsCiAJCQkJICAgICB0bXBfc2RyYW1fbW9kZSwgdG1wX2R1bml0X2NvbnRyb2xfbG93KSk7Ci0JCQl9IGVsc2UgewkvKiBjbGsgc3luYy4gYnlwYXNzZWQgICAgICovCisJCQl9IGVsc2UgewkvKiBjbGsgc3luYy4gYnlwYXNzZWQJICAqLwogCiAJCQkJdG1wX2R1bml0X2NvbnRyb2xfbG93ID0gMHgwMzAwMDAwMDsJLyogUmVhZC1EYXRhIHNhbXBsZWQgb24gcmlzaW5nIGVkZ2Ugb2YgQ2xrICovCiAJCQkJdG1wX3NkcmFtX21vZGUgPSAweDYyOwkvKiBDTD0yLDUgQnVyc3RsZW5ndGggPSA0ICovCkBAIC0xMzQ1LDcgKzEzNDQsNyBAQAogCQkJCURQIChwcmludGYKIAkJCQkgICAgKCJNYXguIENMIGlzIDJzIENMS3MgMHgxNDFjPSAlMDhseCwgMHgxNDA0ID0gJTA4bHhcbiIsCiAJCQkJICAgICB0bXBfc2RyYW1fbW9kZSwgdG1wX2R1bml0X2NvbnRyb2xfbG93KSk7Ci0JCQl9IGVsc2UgewkvKiBOb3Qgc3luYy4gICAgICAqLworCQkJfSBlbHNlIHsJLyogTm90IHN5bmMuCSAgKi8KIAogCQkJCXRtcF9kdW5pdF9jb250cm9sX2xvdyA9IDB4M2IwMDAwMDA7CS8qIFJlYWQtRGF0YSBzYW1wbGVkIG9uIHJpc2luZyBlZGdlIG9mIENsayAqLwogCQkJCXRtcF9zZHJhbV9tb2RlID0gMHgyMjsJLyogQ0w9MiBCdXJzdGxlbmd0aCA9IDQgKi8KQEAgLTE1MDQsNyArMTUwMyw3IEBACiAKIC8qCWZvciAoaSA9IGluZm8tPnNsb3QgKiAyOyBpIDwgKChpbmZvLT5zbG90ICogMikgKyBpbmZvLT5iYW5rcyk7IGkrKykgKi8KIAl7Ci0JICAgICAgICBpbnQgbCwgbDE7CisJCWludCBsLCBsMTsKIAogCQlpID0gaW5mby0+c2xvdDsKIAkJRFAgKHByaW50ZgpAQCAtMTUxOCwzMSArMTUxNywzMSBAQAogCQlHVF9SRUdfV1JJVEUgKEVYVEVOREVEX0RSQU1fTU9ERSwgMHgwKTsKIAkJR1RfUkVHX1dSSVRFIChTRFJBTV9PUEVSQVRJT04sIDB4NCk7CiAJCXdoaWxlIChHVFJFR1JFQUQgKFNEUkFNX09QRVJBVElPTikgIT0gMCkgewotCQkgICAgICAgIERQIChwcmludGYKKwkJCURQIChwcmludGYKIAkJCSAgICAoIlxuKioqIFNEUkFNX09QRVJBVElPTiAxNDE4IGFmdGVyIFNEUkFNX01PREU6IE1vZHVsZSBzdGlsbCBidXN5IC4uLiBwbGVhc2Ugd2FpdC4uLiAqKipcbiIpKTsKIAkJfQogCiAJCUdUX1JFR19XUklURSAoU0RSQU1fTU9ERSwgdG1wIHwgMHg4MCk7CiAJCUdUX1JFR19XUklURSAoU0RSQU1fT1BFUkFUSU9OLCAweDMpOwogCQl3aGlsZSAoR1RSRUdSRUFEIChTRFJBTV9PUEVSQVRJT04pICE9IDApIHsKLQkJICAgICAgICBEUCAocHJpbnRmCisJCQlEUCAocHJpbnRmCiAJCQkgICAgKCJcbioqKiBTRFJBTV9PUEVSQVRJT04gMTQxOCBhZnRlciBTRFJBTV9NT0RFOiBNb2R1bGUgc3RpbGwgYnVzeSAuLi4gcGxlYXNlIHdhaXQuLi4gKioqXG4iKSk7CiAJCX0KIAkJbDEgPSAwOwogCQlmb3IgKGw9MDtsPDIwMDtsKyspCi0JCSAgICAgICAgbDEgKz0gR1RSRUdSRUFEIChTRFJBTV9PUEVSQVRJT04pOworCQkJbDEgKz0gR1RSRUdSRUFEIChTRFJBTV9PUEVSQVRJT04pOwogCiAJCUdUX1JFR19XUklURSAoU0RSQU1fTU9ERSwgdG1wKTsKIAkJR1RfUkVHX1dSSVRFIChTRFJBTV9PUEVSQVRJT04sIDB4Myk7CiAJCXdoaWxlIChHVFJFR1JFQUQgKFNEUkFNX09QRVJBVElPTikgIT0gMCkgewotCQkgICAgICAgIERQIChwcmludGYKKwkJCURQIChwcmludGYKIAkJCSAgICAoIlxuKioqIFNEUkFNX09QRVJBVElPTiAxNDE4IGFmdGVyIFNEUkFNX01PREU6IE1vZHVsZSBzdGlsbCBidXN5IC4uLiBwbGVhc2Ugd2FpdC4uLiAqKipcbiIpKTsKIAkJfQogCiAJCS8qIHN3aXRjaCBiYWNrIHRvIG5vcm1hbCBvcGVyYXRpb24gbW9kZSAqLwogCQlHVF9SRUdfV1JJVEUgKFNEUkFNX09QRVJBVElPTiwgMHg1KTsKIAkJd2hpbGUgKEdUUkVHUkVBRCAoU0RSQU1fT1BFUkFUSU9OKSAhPSAwKSB7Ci0JCSAgICAgICAgRFAgKHByaW50ZgorCQkJRFAgKHByaW50ZgogCQkJICAgICgiXG4qKiogU0RSQU1fT1BFUkFUSU9OIDE0MTggYWZ0ZXIgU0RSQU1fTU9ERTogTW9kdWxlIHN0aWxsIGJ1c3kgLi4uIHBsZWFzZSB3YWl0Li4uICoqKlxuIikpOwogCQl9CiAKQEAgLTE2NzcsMTYgKzE2NzYsMTYgQEAKIH0KIAogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0hICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNEUkFNIElOSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotISAqICBUaGlzIHByb2NlZHVyZSBkZXRlY3QgYWxsIFNkcmFtIHR5cGVzOiA2NCwgMTI4LCAyNTYsIDUxMiBNYml0LCAxR2JpdCBhbmQgMkdiICAgICAgICoKLSEgKiAgICAgICAgICAgICAgIFRoaXMgcHJvY2VkdXJlIGZpdHMgb25seSB0aGUgQXRsYW50aXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSEgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCishICoJCQkJU0RSQU0gSU5JVAkJCQkJCSoKKyEgKiAgVGhpcyBwcm9jZWR1cmUgZGV0ZWN0IGFsbCBTZHJhbSB0eXBlczogNjQsIDEyOCwgMjU2LCA1MTIgTWJpdCwgMUdiaXQgYW5kIDJHYgkqCishICoJCSAgVGhpcyBwcm9jZWR1cmUgZml0cyBvbmx5IHRoZSBBdGxhbnRpcwkJCQkgICAgICAgKgorISAqCQkJCQkJCQkJCQkqCiAhICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogCiAKIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotISAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERkNETCBpbml0aWFsaXplIE1WNjQzeHggRGVzaWduIENvbnNpZGVyYXRpb25zICAgICAgICAgICAgICoKLSEgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCishICoJCQkJREZDREwgaW5pdGlhbGl6ZSBNVjY0M3h4IERlc2lnbiBDb25zaWRlcmF0aW9ucwkJICAgKgorISAqCQkJCQkJCQkJCQkqCiAhICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogaW50IHNldF9kZmNkbEluaXQgKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC91LWJvb3QubGRzIGIvYm9hcmQvZXNkL2NwY2k3NTAvdS1ib290LmxkcwppbmRleCAyNWUxNmRlLi4xYTk1NzU1IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTc1MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL3UtYm9vdC5sZHMKQEAgLTM3LDExICszNywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaWlzZXI0L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvY3BjaWlzZXI0L3UtYm9vdC5sZHMKaW5kZXggZjVkYWFlZi4uMjE1NDdhYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2lpc2VyNC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9jcGNpaXNlcjQvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9kYXNhX3NpbS91LWJvb3QubGRzIGIvYm9hcmQvZXNkL2Rhc2Ffc2ltL3UtYm9vdC5sZHMKaW5kZXggMmI1ZTMzZC4uNjdkNzJmNyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2Rhc2Ffc2ltL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL2Rhc2Ffc2ltL3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvZHA0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9kcDQwNS91LWJvb3QubGRzCmluZGV4IDE5NmY4OGMuLmQ3MGQzNzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9kcDQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9kcDQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2R1NDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvZHU0MDUvdS1ib290LmxkcwppbmRleCA3MWFiNjNkLi40NmVmN2U3IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvZHU0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvZHU0MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9kdTQ0MC91LWJvb3QubGRzIGIvYm9hcmQvZXNkL2R1NDQwL3UtYm9vdC5sZHMKaW5kZXggZGEyYTQwMC4uYjIwZmIxYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2R1NDQwL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL2R1NDQwL3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaGg0MDUvaGg0MDUuYyBiL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCmluZGV4IDY3YjVkNTQuLjI3OWQ5MjEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCisrKyBiL2JvYXJkL2VzZC9oaDQwNS9oaDQwNS5jCkBAIC00NzEsNyArNDcxLDcgQEAKIAkgKi8KIAkqZnBnYV9jdHJsIHw9IGdkLT5ib2FyZF90eXBlICYgMHgwMDAzOwogCi0gCS8qCisJLyoKIAkgKiBTZXR1cCBhbmQgZW5hYmxlIEVFUFJPTSB3cml0ZSBwcm90ZWN0aW9uCiAJICovCiAJb3V0MzIoR1BJTzBfT1IsIGluMzIoR1BJTzBfT1IpIHwgQ0ZHX0VFUFJPTV9XUCk7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaGg0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9oaDQwNS91LWJvb3QubGRzCmluZGV4IGY1ZGFhZWYuLjIxNTQ3YWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9oaDQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9oaDQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2h1YjQwNS91LWJvb3QubGRzIGIvYm9hcmQvZXNkL2h1YjQwNS91LWJvb3QubGRzCmluZGV4IDQ2ZThmM2UuLmYyMWM3YWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9odWI0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvaHViNDA1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2Qvb2NydGMvdS1ib290LmxkcyBiL2JvYXJkL2VzZC9vY3J0Yy91LWJvb3QubGRzCmluZGV4IGVjYTcyMGMuLjVmYjk2OTkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9vY3J0Yy91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9vY3J0Yy91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BjaTQwNS9jbWRfcGNpNDA1LmMgYi9ib2FyZC9lc2QvcGNpNDA1L2NtZF9wY2k0MDUuYwppbmRleCA5YTBiZjFlLi41YzcxN2UyNSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BjaTQwNS9jbWRfcGNpNDA1LmMKKysrIGIvYm9hcmQvZXNkL3BjaTQwNS9jbWRfcGNpNDA1LmMKQEAgLTczNSw3ICs3MzUsNyBAQAogKTsKIAogCi0jZGVmaW5lIFNFQ1RPUl9TSVpFIAkzMgkJLyogMzIgYnl0ZSBjYWNoZSBsaW5lICovCisjZGVmaW5lIFNFQ1RPUl9TSVpFCTMyCQkvKiAzMiBieXRlIGNhY2hlIGxpbmUgKi8KICNkZWZpbmUgU0VDVE9SX01BU0sJMHgxRgogCiB2b2lkIG15X2ZsdXNoX2RjYWNoZSh1bG9uZyBsY2xfYWRkciwgdWxvbmcgY291bnQpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcGNpNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvcGNpNDA1L3UtYm9vdC5sZHMKaW5kZXggZjVkYWFlZi4uMjE1NDdhYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BjaTQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9wY2k0MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9wZjUyMDAvTWFrZWZpbGUgYi9ib2FyZC9lc2QvcGY1MjAwL01ha2VmaWxlCmluZGV4IGE0N2NkM2QuLjJlNTQzMTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9wZjUyMDAvTWFrZWZpbGUKKysrIGIvYm9hcmQvZXNkL3BmNTIwMC9NYWtlZmlsZQpAQCAtMzEsOCArMzEsOCBAQAogCiAjIE9iamVjdHMgZm9yIFhpbGlueCBKVEFHIHByb2dyYW1taW5nIChDUExEKQogIyBDUExEICA9IC4uL2NvbW1vbi94aWxpbnhfanRhZy9sZW52YWwubyBcCi0jIAkgIC4uL2NvbW1vbi94aWxpbnhfanRhZy9taWNyby5vIFwKLSMgCSAgLi4vY29tbW9uL3hpbGlueF9qdGFnL3BvcnRzLm8KKyMJICAuLi9jb21tb24veGlsaW54X2p0YWcvbWljcm8ubyBcCisjCSAgLi4vY29tbW9uL3hpbGlueF9qdGFnL3BvcnRzLm8KIAogIyBDT0JKUwk9ICQoQk9BUkQpLm8gZmxhc2gubyAkKENQTEQpCiBDT0JKUwk9ICQoQk9BUkQpLm8gZmxhc2gubwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BsdTQwNS91LWJvb3QubGRzIGIvYm9hcmQvZXNkL3BsdTQwNS91LWJvb3QubGRzCmluZGV4IDE5NmY4OGMuLmQ3MGQzNzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9wbHU0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2QvcGx1NDA1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcG1jNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvcG1jNDA1L3UtYm9vdC5sZHMKaW5kZXggNWI5MzIxZS4uODFlZTYxNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BtYzQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9wbWM0MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9wbWM0NDAvdS1ib290LW5hbmQubGRzIGIvYm9hcmQvZXNkL3BtYzQ0MC91LWJvb3QtbmFuZC5sZHMKaW5kZXggOTRkZDc1NC4uYWUyZTE4ZCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BtYzQ0MC91LWJvb3QtbmFuZC5sZHMKKysrIGIvYm9hcmQvZXNkL3BtYzQ0MC91LWJvb3QtbmFuZC5sZHMKQEAgLTMxLDExICszMSwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcG1jNDQwL3UtYm9vdC5sZHMgYi9ib2FyZC9lc2QvcG1jNDQwL3UtYm9vdC5sZHMKaW5kZXggZGEyYTQwMC4uYjIwZmIxYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BtYzQ0MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC9wbWM0NDAvdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC90YXNyZWcvdS1ib290LmxkcyBiL2JvYXJkL2VzZC90YXNyZWcvdS1ib290LmxkcwppbmRleCBkMjFlY2Q0Li5hZmRiNzIwIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvdGFzcmVnL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL3Rhc3JlZy91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3ZvaDQwNS91LWJvb3QubGRzIGIvYm9hcmQvZXNkL3ZvaDQwNS91LWJvb3QubGRzCmluZGV4IDE5NmY4OGMuLmQ3MGQzNzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC92b2g0MDUvdS1ib290LmxkcworKysgYi9ib2FyZC9lc2Qvdm9oNDA1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9lc2Qvdm9tNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9lc2Qvdm9tNDA1L3UtYm9vdC5sZHMKaW5kZXggZjVkYWFlZi4uMjE1NDdhYyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3ZvbTQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2VzZC92b200MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC93dWg0MDUvdS1ib290LmxkcyBiL2JvYXJkL2VzZC93dWg0MDUvdS1ib290LmxkcwppbmRleCAxYzVkODkxLi42NDQxNzRhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2Qvd3VoNDA1L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXNkL3d1aDQwNS91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXN0ZWVtMTkyZS9mbGFzaC5jIGIvYm9hcmQvZXN0ZWVtMTkyZS9mbGFzaC5jCmluZGV4IDU0NjVkZWEuLmQ1ZWIyMDEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzdGVlbTE5MmUvZmxhc2guYworKysgYi9ib2FyZC9lc3RlZW0xOTJlL2ZsYXNoLmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxtcGM4eHguaD4KIAotZmxhc2hfaW5mb190CWZsYXNoX2luZm9bQ0ZHX01BWF9GTEFTSF9CQU5LU107IC8qIGluZm8gZm9yIEZMQVNIIGNoaXBzCSovCitmbGFzaF9pbmZvX3QgZmxhc2hfaW5mb1tDRkdfTUFYX0ZMQVNIX0JBTktTXTsJLyogaW5mbyBmb3IgRkxBU0ggY2hpcHMgICAgICAgICovCiAKICNpZmRlZiBDT05GSUdfRkxBU0hfMTZCSVQKICNkZWZpbmUgRkxBU0hfV09SRF9TSVpFCXVuc2lnbmVkIHNob3J0CkBAIC0zOCw5NyArMzgsMTAxIEBACiAgKiBGdW5jdGlvbnMKICAqLwogCi11bG9uZyBmbGFzaF9nZXRfc2l6ZSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICphZGRyLCBmbGFzaF9pbmZvX3QgKmluZm8pOwordWxvbmcgZmxhc2hfZ2V0X3NpemUgKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqIGFkZHIsIGZsYXNoX2luZm9fdCAqIGluZm8pOworCiAjaWZuZGVmIENPTkZJR19GTEFTSF8xNkJJVAotc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIHVsb25nIGRhdGEpOworc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKTsKICNlbHNlCi1zdGF0aWMgaW50IHdyaXRlX3Nob3J0IChmbGFzaF9pbmZvX3QgKmluZm8sIHVsb25nIGRlc3QsIHVzaG9ydCBkYXRhKTsKK3N0YXRpYyBpbnQgd3JpdGVfc2hvcnQgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVsb25nIGRlc3QsIHVzaG9ydCBkYXRhKTsKICNlbmRpZgogLyppbnQgZmxhc2hfd3JpdGUgKHVjaGFyICosIHVsb25nLCB1bG9uZyk7ICovCiAvKmZsYXNoX2luZm9fdCAqYWRkcjJpbmZvICh1bG9uZyk7ICAgKi8KIAotc3RhdGljIHZvaWQgZmxhc2hfZ2V0X29mZnNldHMgKHVsb25nIGJhc2UsIGZsYXNoX2luZm9fdCAqaW5mbyk7CitzdGF0aWMgdm9pZCBmbGFzaF9nZXRfb2Zmc2V0cyAodWxvbmcgYmFzZSwgZmxhc2hfaW5mb190ICogaW5mbyk7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdW5zaWduZWQgbG9uZyBmbGFzaF9pbml0ICh2b2lkKQogewotCXZvbGF0aWxlIGltbWFwX3QgICAgICppbW1hcCAgPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CiAJdm9sYXRpbGUgbWVtY3RsOHh4X3QgKm1lbWN0bCA9ICZpbW1hcC0+aW1fbWVtY3RsOwogCXVuc2lnbmVkIGxvbmcgc2l6ZV9iMCwgc2l6ZV9iMTsKIAlpbnQgaTsKIAogCS8qIEluaXQ6IG5vIEZMQVNIZXMga25vd24gKi8KLQlmb3IgKGk9MDsgaTxDRkdfTUFYX0ZMQVNIX0JBTktTOyArK2kpIHsKKwlmb3IgKGkgPSAwOyBpIDwgQ0ZHX01BWF9GTEFTSF9CQU5LUzsgKytpKSB7CiAJCWZsYXNoX2luZm9baV0uZmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwogCX0KIAogCS8qIFN0YXRpYyBGTEFTSCBCYW5rIGNvbmZpZ3VyYXRpb24gaGVyZSAtIEZJWE1FIFhYWCAqLwogCi0Jc2l6ZV9iMCA9IGZsYXNoX2dldF9zaXplKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKilGTEFTSF9CQVNFMF9QUkVMSU0sCi0JCQkJICZmbGFzaF9pbmZvWzBdKTsKKwlzaXplX2IwID0KKwkJZmxhc2hfZ2V0X3NpemUgKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKikKKwkJCQlGTEFTSF9CQVNFMF9QUkVMSU0sICZmbGFzaF9pbmZvWzBdKTsKIAlpZiAoZmxhc2hfaW5mb1swXS5mbGFzaF9pZCA9PSBGTEFTSF9VTktOT1dOKSB7Ci0JCXByaW50ZiAoIiMjIFVua25vd24gRkxBU0ggb24gQmFuayAwIC0gU2l6ZSA9IDB4JTA4bHggPSAlbGQgTUJcbiIsCi0JCQlzaXplX2IwLCBzaXplX2IwPDwyMCk7CisJCXByaW50ZiAoIiMjIFVua25vd24gRkxBU0ggb24gQmFuayAwIC0gU2l6ZSA9IDB4JTA4bHggPSAlbGQgTUJcbiIsIHNpemVfYjAsIHNpemVfYjAgPDwgMjApOwogCX0KIAotCXNpemVfYjEgPSBmbGFzaF9nZXRfc2l6ZSgodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopRkxBU0hfQkFTRTFfUFJFTElNLAotCQkJCSAmZmxhc2hfaW5mb1sxXSk7CisJc2l6ZV9iMSA9CisJCWZsYXNoX2dldF9zaXplICgodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopCisJCQkJRkxBU0hfQkFTRTFfUFJFTElNLCAmZmxhc2hfaW5mb1sxXSk7CiAKIAlpZiAoc2l6ZV9iMSA+IHNpemVfYjApIHsKIAkJcHJpbnRmICgiIyMgRVJST1I6ICIKIAkJCSJCYW5rIDEgKDB4JTA4bHggPSAlbGQgTUIpID4gQmFuayAwICgweCUwOGx4ID0gJWxkIE1CKVxuIiwKLQkJCXNpemVfYjEsIHNpemVfYjE8PDIwLAotCQkJc2l6ZV9iMCwgc2l6ZV9iMDw8MjAKLQkJKTsKLQkJZmxhc2hfaW5mb1swXS5mbGFzaF9pZAk9IEZMQVNIX1VOS05PV047Ci0JCWZsYXNoX2luZm9bMV0uZmxhc2hfaWQJPSBGTEFTSF9VTktOT1dOOwotCQlmbGFzaF9pbmZvWzBdLnNlY3Rvcl9jb3VudAk9IC0xOwotCQlmbGFzaF9pbmZvWzFdLnNlY3Rvcl9jb3VudAk9IC0xOwotCQlmbGFzaF9pbmZvWzBdLnNpemUJCT0gMDsKLQkJZmxhc2hfaW5mb1sxXS5zaXplCQk9IDA7CisJCQlzaXplX2IxLCBzaXplX2IxIDw8IDIwLCBzaXplX2IwLCBzaXplX2IwIDw8IDIwKTsKKwkJZmxhc2hfaW5mb1swXS5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047CisJCWZsYXNoX2luZm9bMV0uZmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOworCQlmbGFzaF9pbmZvWzBdLnNlY3Rvcl9jb3VudCA9IC0xOworCQlmbGFzaF9pbmZvWzFdLnNlY3Rvcl9jb3VudCA9IC0xOworCQlmbGFzaF9pbmZvWzBdLnNpemUgPSAwOworCQlmbGFzaF9pbmZvWzFdLnNpemUgPSAwOwogCQlyZXR1cm4gKDApOwogCX0KIAogCS8qIFJlbWFwIEZMQVNIIGFjY29yZGluZyB0byByZWFsIHNpemUgKi8KIAltZW1jdGwtPm1lbWNfb3IwID0gQ0ZHX09SX1RJTUlOR19GTEFTSCB8ICgtc2l6ZV9iMCAmIDB4RkZGRjgwMDApOwotCW1lbWN0bC0+bWVtY19icjAgPSBDRkdfRkxBU0hfQkFTRSB8IDB4MDAwMDA4MDE7IC8qICAoQ0ZHX0ZMQVNIX0JBU0UgJiBCUl9CQV9NU0spIHwgQlJfTVNfR1BDTSB8IEJSX1Y7Ki8KKwltZW1jdGwtPm1lbWNfYnIwID0gQ0ZHX0ZMQVNIX0JBU0UgfCAweDAwMDAwODAxOwkvKiAgKENGR19GTEFTSF9CQVNFICYgQlJfQkFfTVNLKSB8IEJSX01TX0dQQ00gfCBCUl9WOyAqLwogCiAJLyogUmUtZG8gc2l6aW5nIHRvIGdldCBmdWxsIGNvcnJlY3QgaW5mbyAqLwogCi0Jc2l6ZV9iMCA9IGZsYXNoX2dldF9zaXplKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKilDRkdfRkxBU0hfQkFTRSwKLQkJCQkgJmZsYXNoX2luZm9bMF0pOworCXNpemVfYjAgPSBmbGFzaF9nZXRfc2l6ZSAoKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSBDRkdfRkxBU0hfQkFTRSwKKwkJCQkgICZmbGFzaF9pbmZvWzBdKTsKIAlmbGFzaF9nZXRfb2Zmc2V0cyAoQ0ZHX0ZMQVNIX0JBU0UsICZmbGFzaF9pbmZvWzBdKTsKIAogI2lmIENGR19NT05JVE9SX0JBU0UgPj0gQ0ZHX0ZMQVNIX0JBU0UKIAkvKiBtb25pdG9yIHByb3RlY3Rpb24gT04gYnkgZGVmYXVsdCAqLwotCSh2b2lkKWZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKLQkJCSAgICBDRkdfTU9OSVRPUl9CQVNFLAotCQkJICAgIENGR19NT05JVE9SX0JBU0UrbW9uaXRvcl9mbGFzaF9sZW4tMSwKLQkJCSAgICAmZmxhc2hfaW5mb1swXSk7CisJKHZvaWQpIGZsYXNoX3Byb3RlY3QgKEZMQUdfUFJPVEVDVF9TRVQsCisJCQkgICAgICBDRkdfTU9OSVRPUl9CQVNFLAorCQkJICAgICAgQ0ZHX01PTklUT1JfQkFTRSArIG1vbml0b3JfZmxhc2hfbGVuIC0gMSwKKwkJCSAgICAgICZmbGFzaF9pbmZvWzBdKTsKICNlbmRpZgogCiAJaWYgKHNpemVfYjEpIHsKLQkJbWVtY3RsLT5tZW1jX29yMSA9IENGR19PUl9USU1JTkdfRkxBU0ggfCAoLXNpemVfYjEgJiAweEZGRkY4MDAwKTsKLQkJbWVtY3RsLT5tZW1jX2JyMSA9IChDRkdfRkxBU0hfQkFTRSB8IDB4MDAwMDA4MDEpICsgKHNpemVfYjAgJiBCUl9CQV9NU0spOwotCQkJICAgICAgLyooKENGR19GTEFTSF9CQVNFICsgc2l6ZV9iMCkgJiBCUl9CQV9NU0spIHwKLQkJCQkgICAgQlJfTVNfR1BDTSB8IEJSX1Y7Ki8KKwkJbWVtY3RsLT5tZW1jX29yMSA9CisJCQlDRkdfT1JfVElNSU5HX0ZMQVNIIHwgKC1zaXplX2IxICYgMHhGRkZGODAwMCk7CisJCW1lbWN0bC0+bWVtY19icjEgPQorCQkJKENGR19GTEFTSF9CQVNFIHwgMHgwMDAwMDgwMSkgKyAoc2l6ZV9iMCAmIEJSX0JBX01TSyk7CisJCS8qKChDRkdfRkxBU0hfQkFTRSArIHNpemVfYjApICYgQlJfQkFfTVNLKSB8CisJCSAgIEJSX01TX0dQQ00gfCBCUl9WOyAqLwogCiAJCS8qIFJlLWRvIHNpemluZyB0byBnZXQgZnVsbCBjb3JyZWN0IGluZm8gKi8KLQkJc2l6ZV9iMSA9IGZsYXNoX2dldF9zaXplKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKikoQ0ZHX0ZMQVNIX0JBU0UgKyBzaXplX2IwKSwKLQkJCQkJICAmZmxhc2hfaW5mb1sxXSk7CisJCXNpemVfYjEgPQorCQkJZmxhc2hfZ2V0X3NpemUgKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUKKwkJCQkJICopIChDRkdfRkxBU0hfQkFTRSArIHNpemVfYjApLAorCQkJCQkmZmxhc2hfaW5mb1sxXSk7CiAKIAkJZmxhc2hfZ2V0X29mZnNldHMgKENGR19GTEFTSF9CQVNFICsgc2l6ZV9iMCwgJmZsYXNoX2luZm9bMV0pOwogCiAjaWYgQ0ZHX01PTklUT1JfQkFTRSA+PSBDRkdfRkxBU0hfQkFTRQogCQkvKiBtb25pdG9yIHByb3RlY3Rpb24gT04gYnkgZGVmYXVsdCAqLwotCQkodm9pZClmbGFzaF9wcm90ZWN0KEZMQUdfUFJPVEVDVF9TRVQsCi0JCQkJICAgIENGR19NT05JVE9SX0JBU0UsCi0JCQkJICAgIENGR19NT05JVE9SX0JBU0UrbW9uaXRvcl9mbGFzaF9sZW4tMSwKLQkJCQkgICAgJmZsYXNoX2luZm9bMV0pOworCQkodm9pZCkgZmxhc2hfcHJvdGVjdCAoRkxBR19QUk9URUNUX1NFVCwKKwkJCQkgICAgICBDRkdfTU9OSVRPUl9CQVNFLAorCQkJCSAgICAgIENGR19NT05JVE9SX0JBU0UgKyBtb25pdG9yX2ZsYXNoX2xlbiAtCisJCQkJICAgICAgMSwgJmZsYXNoX2luZm9bMV0pOwogI2VuZGlmCiAJfSBlbHNlIHsKLQkJbWVtY3RsLT5tZW1jX2JyMSA9IDA7CQkvKiBpbnZhbGlkYXRlIGJhbmsgKi8KKwkJbWVtY3RsLT5tZW1jX2JyMSA9IDA7CS8qIGludmFsaWRhdGUgYmFuayAqLwogCiAJCWZsYXNoX2luZm9bMV0uZmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwogCQlmbGFzaF9pbmZvWzFdLnNlY3Rvcl9jb3VudCA9IC0xOwpAQCAtMTQyLDExMCArMTQ2LDExMiBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLXN0YXRpYyB2b2lkIGZsYXNoX2dldF9vZmZzZXRzICh1bG9uZyBiYXNlLCBmbGFzaF9pbmZvX3QgKmluZm8pCitzdGF0aWMgdm9pZCBmbGFzaF9nZXRfb2Zmc2V0cyAodWxvbmcgYmFzZSwgZmxhc2hfaW5mb190ICogaW5mbykKIHsKIAlpbnQgaTsKIAogCS8qIHNldCB1cCBzZWN0b3Igc3RhcnQgYWRyZXNzIHRhYmxlICovCiAJaWYgKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfQlRZUEUpIHsKLQkgICAgIGlmICgoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgPT0gRkxBU0hfTUFOX0lOVEVMKSB7CisJCWlmICgoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgPT0gRkxBU0hfTUFOX0lOVEVMKSB7CiAKICNpZm5kZWYgQ09ORklHX0ZMQVNIXzE2QklUCi0JCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZQkqLwotCQlpbmZvLT5zdGFydFswXSA9IGJhc2UgKyAweDAwMDAwMDAwOwotCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDA0MDAwOwotCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDA4MDAwOwotCQlpbmZvLT5zdGFydFszXSA9IGJhc2UgKyAweDAwMDBDMDAwOwotCQlpbmZvLT5zdGFydFs0XSA9IGJhc2UgKyAweDAwMDEwMDAwOwotCQlpbmZvLT5zdGFydFs1XSA9IGJhc2UgKyAweDAwMDE0MDAwOwotCQlpbmZvLT5zdGFydFs2XSA9IGJhc2UgKyAweDAwMDE4MDAwOwotCQlpbmZvLT5zdGFydFs3XSA9IGJhc2UgKyAweDAwMDFDMDAwOwotCQlmb3IgKGkgPSA4OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIChpICogMHgwMDAyMDAwMCkgLSAweDAwMEUwMDAwOworCQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlICAgICAgICAqLworCQkJaW5mby0+c3RhcnRbMF0gPSBiYXNlICsgMHgwMDAwMDAwMDsKKwkJCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDQwMDA7CisJCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDA4MDAwOworCQkJaW5mby0+c3RhcnRbM10gPSBiYXNlICsgMHgwMDAwQzAwMDsKKwkJCWluZm8tPnN0YXJ0WzRdID0gYmFzZSArIDB4MDAwMTAwMDA7CisJCQlpbmZvLT5zdGFydFs1XSA9IGJhc2UgKyAweDAwMDE0MDAwOworCQkJaW5mby0+c3RhcnRbNl0gPSBiYXNlICsgMHgwMDAxODAwMDsKKwkJCWluZm8tPnN0YXJ0WzddID0gYmFzZSArIDB4MDAwMUMwMDA7CisJCQlmb3IgKGkgPSA4OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9CisJCQkJCWJhc2UgKyAoaSAqIDB4MDAwMjAwMDApIC0gMHgwMDBFMDAwMDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZSAgICAgICAgKi8KKwkJCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7CisJCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDA4MDAwOworCQkJaW5mby0+c3RhcnRbMl0gPSBiYXNlICsgMHgwMDAwQzAwMDsKKwkJCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMTAwMDA7CisJCQlmb3IgKGkgPSA0OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9CisJCQkJCWJhc2UgKyAoaSAqIDB4MDAwMjAwMDApIC0gMHgwMDA2MDAwMDsKKwkJCX0KIAkJfQotCSAgICAgICB9Ci0JICAgICBlbHNlIHsKLQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlCSovCi0JCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7Ci0JCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDgwMDA7Ci0JCWluZm8tPnN0YXJ0WzJdID0gYmFzZSArIDB4MDAwMEMwMDA7Ci0JCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMTAwMDA7Ci0JCWZvciAoaSA9IDQ7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgKGkgKiAweDAwMDIwMDAwKSAtIDB4MDAwNjAwMDA7Ci0JCX0KLQkgICAgICAgfQogI2Vsc2UKLQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlCSovCi0JCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7Ci0JCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDIwMDA7Ci0JCWluZm8tPnN0YXJ0WzJdID0gYmFzZSArIDB4MDAwMDQwMDA7Ci0JCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMDYwMDA7Ci0JCWluZm8tPnN0YXJ0WzRdID0gYmFzZSArIDB4MDAwMDgwMDA7Ci0JCWluZm8tPnN0YXJ0WzVdID0gYmFzZSArIDB4MDAwMEEwMDA7Ci0JCWluZm8tPnN0YXJ0WzZdID0gYmFzZSArIDB4MDAwMEMwMDA7Ci0JCWluZm8tPnN0YXJ0WzddID0gYmFzZSArIDB4MDAwMEUwMDA7Ci0JCWZvciAoaSA9IDg7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgKGkgKiAweDAwMDEwMDAwKSAtIDB4MDAwNzAwMDA7CisJCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIGJvdHRvbSBib290IGJsb2NrIHR5cGUgICAgICAgICovCisJCQlpbmZvLT5zdGFydFswXSA9IGJhc2UgKyAweDAwMDAwMDAwOworCQkJaW5mby0+c3RhcnRbMV0gPSBiYXNlICsgMHgwMDAwMjAwMDsKKwkJCWluZm8tPnN0YXJ0WzJdID0gYmFzZSArIDB4MDAwMDQwMDA7CisJCQlpbmZvLT5zdGFydFszXSA9IGJhc2UgKyAweDAwMDA2MDAwOworCQkJaW5mby0+c3RhcnRbNF0gPSBiYXNlICsgMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0WzVdID0gYmFzZSArIDB4MDAwMEEwMDA7CisJCQlpbmZvLT5zdGFydFs2XSA9IGJhc2UgKyAweDAwMDBDMDAwOworCQkJaW5mby0+c3RhcnRbN10gPSBiYXNlICsgMHgwMDAwRTAwMDsKKwkJCWZvciAoaSA9IDg7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgeworCQkJCWluZm8tPnN0YXJ0W2ldID0KKwkJCQkJYmFzZSArIChpICogMHgwMDAxMDAwMCkgLSAweDAwMDcwMDAwOworCQkJfQorCQl9IGVsc2UgeworCQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlICAgICAgICAqLworCQkJaW5mby0+c3RhcnRbMF0gPSBiYXNlICsgMHgwMDAwMDAwMDsKKwkJCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDQwMDA7CisJCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDA2MDAwOworCQkJaW5mby0+c3RhcnRbM10gPSBiYXNlICsgMHgwMDAwODAwMDsKKwkJCWZvciAoaSA9IDQ7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgeworCQkJCWluZm8tPnN0YXJ0W2ldID0KKwkJCQkJYmFzZSArIChpICogMHgwMDAxMDAwMCkgLSAweDAwMDMwMDAwOworCQkJfQogCQl9Ci0JICAgICAgIH0KLQkgICAgIGVsc2UgewotCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIGJvdHRvbSBib290IGJsb2NrIHR5cGUJKi8KLQkJaW5mby0+c3RhcnRbMF0gPSBiYXNlICsgMHgwMDAwMDAwMDsKLQkJaW5mby0+c3RhcnRbMV0gPSBiYXNlICsgMHgwMDAwNDAwMDsKLQkJaW5mby0+c3RhcnRbMl0gPSBiYXNlICsgMHgwMDAwNjAwMDsKLQkJaW5mby0+c3RhcnRbM10gPSBiYXNlICsgMHgwMDAwODAwMDsKLQkJZm9yIChpID0gNDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyAoaSAqIDB4MDAwMTAwMDApIC0gMHgwMDAzMDAwMDsKLQkJfQotCSAgICAgICB9CiAjZW5kaWYKIAl9IGVsc2UgewotCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIHRvcCBib290IGJsb2NrIHR5cGUJCSovCisJCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgdG9wIGJvb3QgYmxvY2sgdHlwZSAgICAgICAgICAgKi8KIAkJaSA9IGluZm8tPnNlY3Rvcl9jb3VudCAtIDE7Ci0JICAgICBpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spID09IEZMQVNIX01BTl9JTlRFTCkgeworCQlpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spID09IEZMQVNIX01BTl9JTlRFTCkgewogCiAjaWZuZGVmIENPTkZJR19GTEFTSF8xNkJJVAotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA0MDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA4MDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBDMDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDEwMDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDE0MDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDE4MDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDFDMDAwOwotCQlmb3IgKDsgaSA+PSAwOyBpLS0pIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDIwMDAwOwotCQl9CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEMwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDEwMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxNDAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMTgwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDFDMDAwOworCQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7CisJCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgaSAqIDB4MDAwMjAwMDA7CisJCQl9CiAKLQkgICAgICAgfSBlbHNlIHsKKwkJfSBlbHNlIHsKIAotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA4MDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBDMDAwOwotCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDEwMDAwOwotCQlmb3IgKDsgaSA+PSAwOyBpLS0pIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDIwMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEMwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDEwMDAwOworCQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7CisJCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgaSAqIDB4MDAwMjAwMDA7CisJCQl9CiAJCX0KLQkgICAgICAgfQogI2Vsc2UKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwMjAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNDAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNjAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwQTAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwQzAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwRTAwMDsKLQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAxMDAwMDsKLQkJfQorCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwMjAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDQwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA2MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEEwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBDMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwRTAwMDsKKwkJCWZvciAoOyBpID49IDA7IGktLSkgeworCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDEwMDAwOworCQkJfQogCi0JICAgICAgIH0gZWxzZSB7CisJCX0gZWxzZSB7CiAKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNDAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNjAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKLQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAxMDAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDQwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA2MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKKwkJCWZvciAoOyBpID49IDA7IGktLSkgeworCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDEwMDAwOworCQkJfQogCQl9Ci0JICAgICAgIH0KICNlbmRpZgogCX0KIApAQCAtMjU0LDEyICsyNjAsMTIgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCi12b2lkIGZsYXNoX3ByaW50X2luZm8gIChmbGFzaF9pbmZvX3QgKmluZm8pCit2b2lkIGZsYXNoX3ByaW50X2luZm8gKGZsYXNoX2luZm9fdCAqIGluZm8pCiB7CiAJaW50IGk7CiAJdWNoYXIgKmJvb3R0eXBlOwotCXVjaGFyIGJvdGJvb3RbXT0iLCBib3R0b20gYm9vdCBzZWN0KVxuIjsKLQl1Y2hhciB0b3Bib290W109IiwgdG9wIGJvb3Qgc2VjdG9yKVxuIjsKKwl1Y2hhciBib3Rib290W10gPSAiLCBib3R0b20gYm9vdCBzZWN0KVxuIjsKKwl1Y2hhciB0b3Bib290W10gPSAiLCB0b3AgYm9vdCBzZWN0b3IpXG4iOwogCiAJaWYgKGluZm8tPmZsYXNoX2lkID09IEZMQVNIX1VOS05PV04pIHsKIAkJcHJpbnRmICgibWlzc2luZyBvciB1bmtub3duIEZMQVNIIHR5cGVcbiIpOwpAQCAtMjY3LDczICsyNzMsMTAwIEBACiAJfQogCiAJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSB7Ci0JY2FzZSBGTEFTSF9NQU5fQU1EOglwcmludGYgKCJBTUQgIik7CQlicmVhazsKLQljYXNlIEZMQVNIX01BTl9GVUo6CXByaW50ZiAoIkZVSklUU1UgIik7CQlicmVhazsKLQljYXNlIEZMQVNIX01BTl9TU1Q6CXByaW50ZiAoIlNTVCAiKTsJCWJyZWFrOwotCWNhc2UgRkxBU0hfTUFOX1NUTToJcHJpbnRmICgiU1RNICIpOwkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9NQU5fSU5URUw6CXByaW50ZiAoIklOVEVMICIpOwkJYnJlYWs7Ci0JZGVmYXVsdDoJCXByaW50ZiAoIlVua25vd24gVmVuZG9yICIpOwlicmVhazsKKwljYXNlIEZMQVNIX01BTl9BTUQ6CisJCXByaW50ZiAoIkFNRCAiKTsKKwkJYnJlYWs7CisJY2FzZSBGTEFTSF9NQU5fRlVKOgorCQlwcmludGYgKCJGVUpJVFNVICIpOworCQlicmVhazsKKwljYXNlIEZMQVNIX01BTl9TU1Q6CisJCXByaW50ZiAoIlNTVCAiKTsKKwkJYnJlYWs7CisJY2FzZSBGTEFTSF9NQU5fU1RNOgorCQlwcmludGYgKCJTVE0gIik7CisJCWJyZWFrOworCWNhc2UgRkxBU0hfTUFOX0lOVEVMOgorCQlwcmludGYgKCJJTlRFTCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmICgiVW5rbm93biBWZW5kb3IgIik7CisJCWJyZWFrOwogCX0KIAotCWlmIChpbmZvLT5mbGFzaF9pZCAmIDB4MDAwMSApIHsKLQlib290dHlwZSA9IGJvdGJvb3Q7CisJaWYgKGluZm8tPmZsYXNoX2lkICYgMHgwMDAxKSB7CisJCWJvb3R0eXBlID0gYm90Ym9vdDsKIAl9IGVsc2UgewotCWJvb3R0eXBlID0gdG9wYm9vdDsKKwkJYm9vdHR5cGUgPSB0b3Bib290OwogCX0KIAogCXN3aXRjaCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9UWVBFTUFTSykgewotCWNhc2UgRkxBU0hfQU00MDBCOglwcmludGYgKCJBTTI5TFY0MDBCICg0IE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfQU00MDBUOglwcmludGYgKCJBTTI5TFY0MDBUICg0IE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfQU04MDBCOglwcmludGYgKCJBTTI5TFY4MDBCICg4IE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfQU04MDBUOglwcmludGYgKCJBTTI5TFY4MDBUICg4IE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfQU0xNjBCOglwcmludGYgKCJBTTI5TFYxNjBCICgxNiBNYml0JXMiLGJvb3R0eXBlKTsKLQkJCQlicmVhazsKLQljYXNlIEZMQVNIX0FNMTYwVDoJcHJpbnRmICgiQU0yOUxWMTYwVCAoMTYgTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9BTTMyMEI6CXByaW50ZiAoIkFNMjlMVjMyMEIgKDMyIE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfQU0zMjBUOglwcmludGYgKCJBTTI5TFYzMjBUICgzMiBNYml0JXMiLGJvb3R0eXBlKTsKLQkJCQlicmVhazsKLQljYXNlIEZMQVNIX0lOVEVMODAwQjoJcHJpbnRmICgiSU5URUwyOEY4MDBCICg4IE1iaXQlcyIsYm9vdHR5cGUpOwotCQkJCWJyZWFrOwotCWNhc2UgRkxBU0hfSU5URUw4MDBUOglwcmludGYgKCJJTlRFTDI4RjgwMFQgKDggTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9JTlRFTDE2MEI6CXByaW50ZiAoIklOVEVMMjhGMTYwQiAoMTYgTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9JTlRFTDE2MFQ6CXByaW50ZiAoIklOVEVMMjhGMTYwVCAoMTYgTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9JTlRFTDMyMEI6CXByaW50ZiAoIklOVEVMMjhGMzIwQiAoMzIgTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7Ci0JY2FzZSBGTEFTSF9JTlRFTDMyMFQ6CXByaW50ZiAoIklOVEVMMjhGMzIwVCAoMzIgTWJpdCVzIixib290dHlwZSk7Ci0JCQkJYnJlYWs7CisJY2FzZSBGTEFTSF9BTTQwMEI6CisJCXByaW50ZiAoIkFNMjlMVjQwMEIgKDQgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0FNNDAwVDoKKwkJcHJpbnRmICgiQU0yOUxWNDAwVCAoNCBNYml0JXMiLCBib290dHlwZSk7CisJCWJyZWFrOworCWNhc2UgRkxBU0hfQU04MDBCOgorCQlwcmludGYgKCJBTTI5TFY4MDBCICg4IE1iaXQlcyIsIGJvb3R0eXBlKTsKKwkJYnJlYWs7CisJY2FzZSBGTEFTSF9BTTgwMFQ6CisJCXByaW50ZiAoIkFNMjlMVjgwMFQgKDggTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0FNMTYwQjoKKwkJcHJpbnRmICgiQU0yOUxWMTYwQiAoMTYgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0FNMTYwVDoKKwkJcHJpbnRmICgiQU0yOUxWMTYwVCAoMTYgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0FNMzIwQjoKKwkJcHJpbnRmICgiQU0yOUxWMzIwQiAoMzIgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0FNMzIwVDoKKwkJcHJpbnRmICgiQU0yOUxWMzIwVCAoMzIgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0lOVEVMODAwQjoKKwkJcHJpbnRmICgiSU5URUwyOEY4MDBCICg4IE1iaXQlcyIsIGJvb3R0eXBlKTsKKwkJYnJlYWs7CisJY2FzZSBGTEFTSF9JTlRFTDgwMFQ6CisJCXByaW50ZiAoIklOVEVMMjhGODAwVCAoOCBNYml0JXMiLCBib290dHlwZSk7CisJCWJyZWFrOworCWNhc2UgRkxBU0hfSU5URUwxNjBCOgorCQlwcmludGYgKCJJTlRFTDI4RjE2MEIgKDE2IE1iaXQlcyIsIGJvb3R0eXBlKTsKKwkJYnJlYWs7CisJY2FzZSBGTEFTSF9JTlRFTDE2MFQ6CisJCXByaW50ZiAoIklOVEVMMjhGMTYwVCAoMTYgTWJpdCVzIiwgYm9vdHR5cGUpOworCQlicmVhazsKKwljYXNlIEZMQVNIX0lOVEVMMzIwQjoKKwkJcHJpbnRmICgiSU5URUwyOEYzMjBCICgzMiBNYml0JXMiLCBib290dHlwZSk7CisJCWJyZWFrOworCWNhc2UgRkxBU0hfSU5URUwzMjBUOgorCQlwcmludGYgKCJJTlRFTDI4RjMyMFQgKDMyIE1iaXQlcyIsIGJvb3R0eXBlKTsKKwkJYnJlYWs7CiAKLSNpZiAwIC8qIGVuYWJsZSB3aGVuIGRldmljZXMgYXJlIGF2YWlsYWJsZSAqLworI2lmIDAJCQkJLyogZW5hYmxlIHdoZW4gZGV2aWNlcyBhcmUgYXZhaWxhYmxlICovCiAKLQljYXNlIEZMQVNIX0lOVEVMNjQwQjoJcHJpbnRmICgiSU5URUwyOEY2NDBCICg2NCBNYml0JXMiLGJvb3R0eXBlKTsKLQkJCQlicmVhazsKLQljYXNlIEZMQVNIX0lOVEVMNjQwVDoJcHJpbnRmICgiSU5URUwyOEY2NDBUICg2NCBNYml0JXMiLGJvb3R0eXBlKTsKLQkJCQlicmVhazsKKwljYXNlIEZMQVNIX0lOVEVMNjQwQjoKKwkJcHJpbnRmICgiSU5URUwyOEY2NDBCICg2NCBNYml0JXMiLCBib290dHlwZSk7CisJCWJyZWFrOworCWNhc2UgRkxBU0hfSU5URUw2NDBUOgorCQlwcmludGYgKCJJTlRFTDI4RjY0MFQgKDY0IE1iaXQlcyIsIGJvb3R0eXBlKTsKKwkJYnJlYWs7CiAjZW5kaWYKIAotCWRlZmF1bHQ6CQlwcmludGYgKCJVbmtub3duIENoaXAgVHlwZVxuIik7Ci0JCQkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmICgiVW5rbm93biBDaGlwIFR5cGVcbiIpOworCQlicmVhazsKIAl9CiAKIAlwcmludGYgKCIgIFNpemU6ICVsZCBNQiBpbiAlZCBTZWN0b3JzXG4iLAogCQlpbmZvLT5zaXplID4+IDIwLCBpbmZvLT5zZWN0b3JfY291bnQpOwogCiAJcHJpbnRmICgiICBTZWN0b3IgU3RhcnQgQWRkcmVzc2VzOiIpOwotCWZvciAoaT0wOyBpPGluZm8tPnNlY3Rvcl9jb3VudDsgKytpKSB7CisJZm9yIChpID0gMDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgKytpKSB7CiAJCWlmICgoaSAlIDUpID09IDApCiAJCQlwcmludGYgKCJcbiAgICIpOwogCQlwcmludGYgKCIgJTA4bFglcyIsCi0JCQlpbmZvLT5zdGFydFtpXSwKLQkJCWluZm8tPnByb3RlY3RbaV0gPyAiIChSTykiIDogIiAgICAgIgotCQkpOworCQkJaW5mby0+c3RhcnRbaV0sIGluZm8tPnByb3RlY3RbaV0gPyAiIChSTykiIDogIiAgICAgIik7CiAJfQogCXByaW50ZiAoIlxuIik7CiAJcmV0dXJuOwpAQCAtMzQ5LDEwICszODIsMTAgQEAKIC8qCiAgKiBUaGUgZm9sbG93aW5nIGNvZGUgY2Fubm90IGJlIHJ1biBmcm9tIEZMQVNIIQogICovCi11bG9uZyBmbGFzaF9nZXRfc2l6ZSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICphZGRyLCBmbGFzaF9pbmZvX3QgKmluZm8pCit1bG9uZyBmbGFzaF9nZXRfc2l6ZSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICogYWRkciwgZmxhc2hfaW5mb190ICogaW5mbykKIHsKIAlzaG9ydCBpOwotCXVsb25nIGJhc2UgPSAodWxvbmcpYWRkcjsKKwl1bG9uZyBiYXNlID0gKHVsb25nKSBhZGRyOwogCUZMQVNIX1dPUkRfU0laRSB2YWx1ZTsKIAogCS8qIFdyaXRlIGF1dG8gc2VsZWN0IGNvbW1hbmQ6IHJlYWQgTWFudWZhY3R1cmVyIElEICovCkBAIC0zNjcsNyArNDAwLDcgQEAKIAkgKi8KIAogCWFkZHJbMHgwMDAwXSA9IDB4MDA5MDAwOTA7Ci0JaWYoYWRkclsweDAwMDBdICE9IDB4MDA4OTAwODkpeworCWlmIChhZGRyWzB4MDAwMF0gIT0gMHgwMDg5MDA4OSkgewogCQlhZGRyWzB4MDU1NV0gPSAweDAwQUEwMEFBOwogCQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OwogCQlhZGRyWzB4MDU1NV0gPSAweDAwOTAwMDkwOwpAQCAtMzgxLDcgKzQxNCw3IEBACiAKIAlhZGRyWzB4MDAwMF0gPSAweDAwOTA7CiAKLQlpZihhZGRyWzB4MDAwMF0gIT0gMHgwMDg5KXsKKwlpZiAoYWRkclsweDAwMDBdICE9IDB4MDA4OSkgewogCQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7CiAJCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKIAkJYWRkclsweDA1NTVdID0gMHgwMDkwOwpAQCAtNDA5LDExICs0NDIsMTEgQEAKIAkJaW5mby0+Zmxhc2hfaWQgPSBGTEFTSF9VTktOT1dOOwogCQlpbmZvLT5zZWN0b3JfY291bnQgPSAwOwogCQlpbmZvLT5zaXplID0gMDsKLQkJcmV0dXJuICgwKTsJCQkvKiBubyBvciB1bmtub3duIGZsYXNoCSovCisJCXJldHVybiAoMCk7CS8qIG5vIG9yIHVua25vd24gZmxhc2ggICovCiAKIAl9CiAKLQl2YWx1ZSA9IGFkZHJbMV07CQkJLyogZGV2aWNlIElECQkqLworCXZhbHVlID0gYWRkclsxXTsJLyogZGV2aWNlIElEICAgICAgICAgICAgKi8KIAogCXN3aXRjaCAodmFsdWUpIHsKIApAQCAtNDIxLDIwNiArNDU0LDIwOCBAQAogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTTQwMFQ7CiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDExOwogCQlpbmZvLT5zaXplID0gMHgwMDEwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDEgTUIJCSovCisJCWJyZWFrOwkJLyogPT4gMSBNQiAgICAgICAgICAgICAgKi8KIAogCWNhc2UgKEFNRF9JRF9MVjQwMEIgJiBGTEFTSF9JRF9NQVNLKToKIAkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfQU00MDBCOwogCQlpbmZvLT5zZWN0b3JfY291bnQgPSAxMTsKIAkJaW5mby0+c2l6ZSA9IDB4MDAxMDAwMDA7Ci0JCWJyZWFrOwkJCQkvKiA9PiAxIE1CCQkqLworCQlicmVhazsJCS8qID0+IDEgTUIgICAgICAgICAgICAgICovCiAKIAljYXNlIChBTURfSURfTFY4MDBUICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0FNODAwVDsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTk7CiAJCWluZm8tPnNpemUgPSAweDAwMjAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gMiBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiAyIE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoQU1EX0lEX0xWODAwQiAmIEZMQVNIX0lEX01BU0spOgogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTTgwMEI7CiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDE5OwogCQlpbmZvLT5zaXplID0gMHgwMDIwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDIgTUIJCSovCisJCWJyZWFrOwkJLyogPT4gMiBNQiAgICAgICAgICAgICAgKi8KIAogCWNhc2UgKEFNRF9JRF9MVjE2MFQgJiBGTEFTSF9JRF9NQVNLKToKIAkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfQU0xNjBUOwogCQlpbmZvLT5zZWN0b3JfY291bnQgPSAzNTsKIAkJaW5mby0+c2l6ZSA9IDB4MDA0MDAwMDA7Ci0JCWJyZWFrOwkJCQkvKiA9PiA0IE1CCQkqLworCQlicmVhazsJCS8qID0+IDQgTUIgICAgICAgICAgICAgICovCiAKIAljYXNlIChBTURfSURfTFYxNjBCICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0FNMTYwQjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzU7CiAJCWluZm8tPnNpemUgPSAweDAwNDAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gNCBNQgkJKi8KLSNpZiAwCS8qIGVuYWJsZSB3aGVuIGRldmljZSBJRHMgYXJlIGF2YWlsYWJsZSAqLworCQlicmVhazsJCS8qID0+IDQgTUIgICAgICAgICAgICAgICovCisjaWYgMAkJCQkvKiBlbmFibGUgd2hlbiBkZXZpY2UgSURzIGFyZSBhdmFpbGFibGUgKi8KIAljYXNlIChBTURfSURfTFYzMjBUICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0FNMzIwVDsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gNjc7CiAJCWluZm8tPnNpemUgPSAweDAwODAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gOCBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiA4IE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoQU1EX0lEX0xWMzIwQiAmIEZMQVNIX0lEX01BU0spOgogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTTMyMEI7CiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDY3OwogCQlpbmZvLT5zaXplID0gMHgwMDgwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDggTUIJCSovCisJCWJyZWFrOwkJLyogPT4gOCBNQiAgICAgICAgICAgICAgKi8KICNlbmRpZgogCiAJY2FzZSAoSU5URUxfSURfMjhGODAwQjNUICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0lOVEVMODAwVDsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMjM7CiAJCWluZm8tPnNpemUgPSAweDAwMjAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gMiBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiAyIE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGODAwQjNCICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0lOVEVMODAwQjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMjM7CiAJCWluZm8tPnNpemUgPSAweDAwMjAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gMiBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiAyIE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGMTYwQjNUICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0lOVEVMMTYwVDsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzk7CiAJCWluZm8tPnNpemUgPSAweDAwNDAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gNCBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiA0IE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGMTYwQjNCICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0lOVEVMMTYwQjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzk7CiAJCWluZm8tPnNpemUgPSAweDAwNDAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gNCBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiA0IE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGMzIwQjNUICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0lOVEVMMzIwVDsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gNzE7CiAJCWluZm8tPnNpemUgPSAweDAwODAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gOCBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiA4IE1CICAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGMzIwQjNCICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0FNMzIwQjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gNzE7CiAJCWluZm8tPnNpemUgPSAweDAwODAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gOCBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiA4IE1CICAgICAgICAgICAgICAqLwogCi0jaWYgMCAvKiBlbmFibGUgd2hlbiBkZXZpY2VzIGFyZSBhdmFpbGFibGUgKi8KKyNpZiAwCQkJCS8qIGVuYWJsZSB3aGVuIGRldmljZXMgYXJlIGF2YWlsYWJsZSAqLwogCWNhc2UgKElOVEVMX0lEXzI4RjMyMEIzVCAmIEZMQVNIX0lEX01BU0spOgogCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9JTlRFTDMyMFQ7CiAJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDEzNTsKIAkJaW5mby0+c2l6ZSA9IDB4MDEwMDAwMDA7Ci0JCWJyZWFrOwkJCQkvKiA9PiAxNiBNQgkJKi8KKwkJYnJlYWs7CQkvKiA9PiAxNiBNQiAgICAgICAgICAgICAqLwogCiAJY2FzZSAoSU5URUxfSURfMjhGMzIwQjNCICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIX0FNMzIwQjsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTM1OwogCQlpbmZvLT5zaXplID0gMHgwMTAwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDE2IE1CCQkqLworCQlicmVhazsJCS8qID0+IDE2IE1CICAgICAgICAgICAgICovCiAjZW5kaWYKIAlkZWZhdWx0OgogCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047Ci0JCXJldHVybiAoMCk7CQkJLyogPT4gbm8gb3IgdW5rbm93biBmbGFzaCAqLworCQlyZXR1cm4gKDApOwkvKiA9PiBubyBvciB1bmtub3duIGZsYXNoICovCiAKIAl9CiAKIAkvKiBzZXQgdXAgc2VjdG9yIHN0YXJ0IGFkcmVzcyB0YWJsZSAqLwogCWlmIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX0JUWVBFKSB7Ci0JICAgICBpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spID09IEZMQVNIX01BTl9JTlRFTCkgeworCQlpZiAoKGluZm8tPmZsYXNoX2lkICYgRkxBU0hfVkVORE1BU0spID09IEZMQVNIX01BTl9JTlRFTCkgewogCiAjaWZuZGVmIENPTkZJR19GTEFTSF8xNkJJVAotCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIGJvdHRvbSBib290IGJsb2NrIHR5cGUJKi8KLQkJaW5mby0+c3RhcnRbMF0gPSBiYXNlICsgMHgwMDAwMDAwMDsKLQkJaW5mby0+c3RhcnRbMV0gPSBiYXNlICsgMHgwMDAwNDAwMDsKLQkJaW5mby0+c3RhcnRbMl0gPSBiYXNlICsgMHgwMDAwODAwMDsKLQkJaW5mby0+c3RhcnRbM10gPSBiYXNlICsgMHgwMDAwQzAwMDsKLQkJaW5mby0+c3RhcnRbNF0gPSBiYXNlICsgMHgwMDAxMDAwMDsKLQkJaW5mby0+c3RhcnRbNV0gPSBiYXNlICsgMHgwMDAxNDAwMDsKLQkJaW5mby0+c3RhcnRbNl0gPSBiYXNlICsgMHgwMDAxODAwMDsKLQkJaW5mby0+c3RhcnRbN10gPSBiYXNlICsgMHgwMDAxQzAwMDsKLQkJZm9yIChpID0gODsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyAoaSAqIDB4MDAwMjAwMDApIC0gMHgwMDBFMDAwMDsKKwkJCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZSAgICAgICAgKi8KKwkJCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7CisJCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbMl0gPSBiYXNlICsgMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMEMwMDA7CisJCQlpbmZvLT5zdGFydFs0XSA9IGJhc2UgKyAweDAwMDEwMDAwOworCQkJaW5mby0+c3RhcnRbNV0gPSBiYXNlICsgMHgwMDAxNDAwMDsKKwkJCWluZm8tPnN0YXJ0WzZdID0gYmFzZSArIDB4MDAwMTgwMDA7CisJCQlpbmZvLT5zdGFydFs3XSA9IGJhc2UgKyAweDAwMDFDMDAwOworCQkJZm9yIChpID0gODsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7CisJCQkJaW5mby0+c3RhcnRbaV0gPQorCQkJCQliYXNlICsgKGkgKiAweDAwMDIwMDAwKSAtIDB4MDAwRTAwMDA7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIGJvdHRvbSBib290IGJsb2NrIHR5cGUgICAgICAgICovCisJCQlpbmZvLT5zdGFydFswXSA9IGJhc2UgKyAweDAwMDAwMDAwOworCQkJaW5mby0+c3RhcnRbMV0gPSBiYXNlICsgMHgwMDAwODAwMDsKKwkJCWluZm8tPnN0YXJ0WzJdID0gYmFzZSArIDB4MDAwMEMwMDA7CisJCQlpbmZvLT5zdGFydFszXSA9IGJhc2UgKyAweDAwMDEwMDAwOworCQkJZm9yIChpID0gNDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7CisJCQkJaW5mby0+c3RhcnRbaV0gPQorCQkJCQliYXNlICsgKGkgKiAweDAwMDIwMDAwKSAtIDB4MDAwNjAwMDA7CisJCQl9CiAJCX0KLQkgICAgICAgfQotCSAgICAgZWxzZSB7Ci0JCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZQkqLwotCQlpbmZvLT5zdGFydFswXSA9IGJhc2UgKyAweDAwMDAwMDAwOwotCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDA4MDAwOwotCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDBDMDAwOwotCQlpbmZvLT5zdGFydFszXSA9IGJhc2UgKyAweDAwMDEwMDAwOwotCQlmb3IgKGkgPSA0OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIChpICogMHgwMDAyMDAwMCkgLSAweDAwMDYwMDAwOwotCQl9Ci0JICAgICAgIH0KICNlbHNlCi0JCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZQkqLwotCQlpbmZvLT5zdGFydFswXSA9IGJhc2UgKyAweDAwMDAwMDAwOwotCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDAyMDAwOwotCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDA0MDAwOwotCQlpbmZvLT5zdGFydFszXSA9IGJhc2UgKyAweDAwMDA2MDAwOwotCQlpbmZvLT5zdGFydFs0XSA9IGJhc2UgKyAweDAwMDA4MDAwOwotCQlpbmZvLT5zdGFydFs1XSA9IGJhc2UgKyAweDAwMDBBMDAwOwotCQlpbmZvLT5zdGFydFs2XSA9IGJhc2UgKyAweDAwMDBDMDAwOwotCQlpbmZvLT5zdGFydFs3XSA9IGJhc2UgKyAweDAwMDBFMDAwOwotCQlmb3IgKGkgPSA4OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKLQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIChpICogMHgwMDAxMDAwMCkgLSAweDAwMDcwMDAwOworCQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlICAgICAgICAqLworCQkJaW5mby0+c3RhcnRbMF0gPSBiYXNlICsgMHgwMDAwMDAwMDsKKwkJCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDIwMDA7CisJCQlpbmZvLT5zdGFydFsyXSA9IGJhc2UgKyAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbM10gPSBiYXNlICsgMHgwMDAwNjAwMDsKKwkJCWluZm8tPnN0YXJ0WzRdID0gYmFzZSArIDB4MDAwMDgwMDA7CisJCQlpbmZvLT5zdGFydFs1XSA9IGJhc2UgKyAweDAwMDBBMDAwOworCQkJaW5mby0+c3RhcnRbNl0gPSBiYXNlICsgMHgwMDAwQzAwMDsKKwkJCWluZm8tPnN0YXJ0WzddID0gYmFzZSArIDB4MDAwMEUwMDA7CisJCQlmb3IgKGkgPSA4OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9CisJCQkJCWJhc2UgKyAoaSAqIDB4MDAwMTAwMDApIC0gMHgwMDA3MDAwMDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCS8qIHNldCBzZWN0b3Igb2Zmc2V0cyBmb3IgYm90dG9tIGJvb3QgYmxvY2sgdHlwZSAgICAgICAgKi8KKwkJCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7CisJCQlpbmZvLT5zdGFydFsxXSA9IGJhc2UgKyAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbMl0gPSBiYXNlICsgMHgwMDAwNjAwMDsKKwkJCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMDgwMDA7CisJCQlmb3IgKGkgPSA0OyBpIDwgaW5mby0+c2VjdG9yX2NvdW50OyBpKyspIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9CisJCQkJCWJhc2UgKyAoaSAqIDB4MDAwMTAwMDApIC0gMHgwMDAzMDAwMDsKKwkJCX0KIAkJfQotCSAgICAgICB9Ci0JICAgICBlbHNlIHsKLQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciBib3R0b20gYm9vdCBibG9jayB0eXBlCSovCi0JCWluZm8tPnN0YXJ0WzBdID0gYmFzZSArIDB4MDAwMDAwMDA7Ci0JCWluZm8tPnN0YXJ0WzFdID0gYmFzZSArIDB4MDAwMDQwMDA7Ci0JCWluZm8tPnN0YXJ0WzJdID0gYmFzZSArIDB4MDAwMDYwMDA7Ci0JCWluZm8tPnN0YXJ0WzNdID0gYmFzZSArIDB4MDAwMDgwMDA7Ci0JCWZvciAoaSA9IDQ7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewotCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgKGkgKiAweDAwMDEwMDAwKSAtIDB4MDAwMzAwMDA7Ci0JCX0KLQkgICAgICAgfQogI2VuZGlmCiAJfSBlbHNlIHsKLQkJLyogc2V0IHNlY3RvciBvZmZzZXRzIGZvciB0b3AgYm9vdCBibG9jayB0eXBlCQkqLworCQkvKiBzZXQgc2VjdG9yIG9mZnNldHMgZm9yIHRvcCBib290IGJsb2NrIHR5cGUgICAgICAgICAgICovCiAJCWkgPSBpbmZvLT5zZWN0b3JfY291bnQgLSAxOwotCSAgICAgaWYgKChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSA9PSBGTEFTSF9NQU5fSU5URUwpIHsKKwkJaWYgKChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSA9PSBGTEFTSF9NQU5fSU5URUwpIHsKIAogI2lmbmRlZiBDT05GSUdfRkxBU0hfMTZCSVQKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNDAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwQzAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxMDAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxNDAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxODAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxQzAwMDsKLQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAyMDAwMDsKLQkJfQorCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNDAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBDMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxMDAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMTQwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDE4MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxQzAwMDsKKwkJCWZvciAoOyBpID49IDA7IGktLSkgeworCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDIwMDAwOworCQkJfQogCi0JICAgICAgIH0gZWxzZSB7CisJCX0gZWxzZSB7CiAKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwODAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwQzAwMDsKLQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxMDAwMDsKLQkJZm9yICg7IGkgPj0gMDsgaS0tKSB7Ci0JCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAyMDAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBDMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAxMDAwMDsKKwkJCWZvciAoOyBpID49IDA7IGktLSkgeworCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZSArIGkgKiAweDAwMDIwMDAwOworCQkJfQogCQl9Ci0JICAgICAgIH0KICNlbHNlCi0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDIwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDQwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDYwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEEwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEMwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEUwMDA7Ci0JCWZvciAoOyBpID49IDA7IGktLSkgewotCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgaSAqIDB4MDAwMTAwMDA7Ci0JCX0KKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDIwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNjAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDBBMDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwQzAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMEUwMDA7CisJCQlmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAxMDAwMDsKKwkJCX0KIAotCSAgICAgICB9IGVsc2UgeworCQl9IGVsc2UgewogCi0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDQwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDYwMDA7Ci0JCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7Ci0JCWZvciAoOyBpID49IDA7IGktLSkgewotCQkJaW5mby0+c3RhcnRbaV0gPSBiYXNlICsgaSAqIDB4MDAwMTAwMDA7CisJCQlpbmZvLT5zdGFydFtpLS1dID0gYmFzZSArIGluZm8tPnNpemUgLSAweDAwMDA0MDAwOworCQkJaW5mby0+c3RhcnRbaS0tXSA9IGJhc2UgKyBpbmZvLT5zaXplIC0gMHgwMDAwNjAwMDsKKwkJCWluZm8tPnN0YXJ0W2ktLV0gPSBiYXNlICsgaW5mby0+c2l6ZSAtIDB4MDAwMDgwMDA7CisJCQlmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKwkJCQlpbmZvLT5zdGFydFtpXSA9IGJhc2UgKyBpICogMHgwMDAxMDAwMDsKKwkJCX0KIAkJfQotCSAgICAgICB9CiAjZW5kaWYKIAl9CiAKQEAgLTYyOCw3ICs2NjMsNyBAQAogCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewogCQkvKiByZWFkIHNlY3RvciBwcm90ZWN0aW9uIGF0IHNlY3RvciBhZGRyZXNzLCAoQTcgLi4gQTApID0gMHgwMiAqLwogCQkvKiBEMCA9IDEgaWYgcHJvdGVjdGVkICovCi0JCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopKGluZm8tPnN0YXJ0W2ldKTsKKwkJYWRkciA9ICh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKikgKGluZm8tPnN0YXJ0W2ldKTsKIAkJaW5mby0+cHJvdGVjdFtpXSA9IGFkZHJbMl0gJiAxOwogCX0KIApAQCAtNjM2LDExICs2NzEsMTEgQEAKIAkgKiBQcmV2ZW50IHdyaXRlcyB0byB1bmluaXRpYWxpemVkIEZMQVNILgogCSAqLwogCWlmIChpbmZvLT5mbGFzaF9pZCAhPSBGTEFTSF9VTktOT1dOKSB7Ci0JCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopaW5mby0+c3RhcnRbMF07Ci0JCWlmKCAoaW5mby0+Zmxhc2hfaWQgJiAweEZGMDApID09IEZMQVNIX01BTl9JTlRFTCl7Ci0JCSAgICphZGRyID0gKDB4MDBGMDAwRjAgJiBGTEFTSF9JRF9NQVNLKTsJLyogcmVzZXQgYmFuayAqLworCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSBpbmZvLT5zdGFydFswXTsKKwkJaWYgKChpbmZvLT5mbGFzaF9pZCAmIDB4RkYwMCkgPT0gRkxBU0hfTUFOX0lOVEVMKSB7CisJCQkqYWRkciA9ICgweDAwRjAwMEYwICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KIAkJfSBlbHNlIHsKLQkJICAgKmFkZHIgPSAoMHgwMEZGMDBGRiAmIEZMQVNIX0lEX01BU0spOwkvKiByZXNldCBiYW5rICovCisJCQkqYWRkciA9ICgweDAwRkYwMEZGICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KIAkJfQogCX0KIApAQCAtNjUxLDEwICs2ODYsMTEgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCi1pbnQJZmxhc2hfZXJhc2UgKGZsYXNoX2luZm9fdCAqaW5mbywgaW50IHNfZmlyc3QsIGludCBzX2xhc3QpCitpbnQgZmxhc2hfZXJhc2UgKGZsYXNoX2luZm9fdCAqIGluZm8sIGludCBzX2ZpcnN0LCBpbnQgc19sYXN0KQogewogCi0Jdm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICphZGRyPSh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUqKShpbmZvLT5zdGFydFswXSk7CisJdm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICphZGRyID0KKwkJKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSAoaW5mby0+c3RhcnRbMF0pOwogCWludCBmbGFnLCBwcm90LCBzZWN0LCBsX3NlY3QsIGJhcmY7CiAJdWxvbmcgc3RhcnQsIG5vdywgbGFzdDsKIAlpbnQgcmNvZGUgPSAwOwpAQCAtNjcwLDIxICs3MDYsMjAgQEAKIAogCWlmICgoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgfHwKIAkgICAgKChpbmZvLT5mbGFzaF9pZCA+IEZMQVNIX0FNRF9DT01QKSAmJgotCSAgICAgKCAoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgIT0gRkxBU0hfTUFOX0lOVEVMICkgKSApeworCSAgICAgKChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSAhPSBGTEFTSF9NQU5fSU5URUwpKSkgewogCQlwcmludGYgKCJDYW4ndCBlcmFzZSB1bmtub3duIGZsYXNoIHR5cGUgLSBhYm9ydGVkXG4iKTsKIAkJcmV0dXJuIDE7CiAJfQogCiAJcHJvdCA9IDA7Ci0JZm9yIChzZWN0PXNfZmlyc3Q7IHNlY3Q8PXNfbGFzdDsgKytzZWN0KSB7CisJZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdCA8PSBzX2xhc3Q7ICsrc2VjdCkgewogCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSkgewogCQkJcHJvdCsrOwogCQl9CiAJfQogCiAJaWYgKHByb3QpIHsKLQkJcHJpbnRmICgiLSBXYXJuaW5nOiAlZCBwcm90ZWN0ZWQgc2VjdG9ycyB3aWxsIG5vdCBiZSBlcmFzZWQhXG4iLAotCQkJcHJvdCk7CisJCXByaW50ZiAoIi0gV2FybmluZzogJWQgcHJvdGVjdGVkIHNlY3RvcnMgd2lsbCBub3QgYmUgZXJhc2VkIVxuIiwgcHJvdCk7CiAJfSBlbHNlIHsKIAkJcHJpbnRmICgiXG4iKTsKIAl9CkBAIC02OTIsMTA5ICs3MjcsMTExIEBACiAJbF9zZWN0ID0gLTE7CiAKIAkvKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0IGhlcmUgKi8KLQlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzKCk7Ci0gICAgaWYoaW5mby0+Zmxhc2hfaWQgPCBGTEFTSF9BTURfQ09NUCkgeworCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMgKCk7CisJaWYgKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKICNpZm5kZWYgQ09ORklHX0ZMQVNIXzE2QklUCi0JYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKLQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OwotCWFkZHJbMHgwNTU1XSA9IDB4MDA4MDAwODA7Ci0JYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKLQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUEwMEFBOworCQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OworCQlhZGRyWzB4MDU1NV0gPSAweDAwODAwMDgwOworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUEwMEFBOworCQlhZGRyWzB4MDJBQV0gPSAweDAwNTUwMDU1OwogI2Vsc2UKLQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1OwotCWFkZHJbMHgwNTU1XSA9IDB4MDA4MDsKLQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1OworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7CisJCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMDgwOworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7CisJCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKICNlbmRpZgotCS8qIFN0YXJ0IGVyYXNlIG9uIHVucHJvdGVjdGVkIHNlY3RvcnMgKi8KLQlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7IHNlY3QrKykgewotCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSA9PSAwKSB7CS8qIG5vdCBwcm90ZWN0ZWQgKi8KLQkJCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopKGluZm8tPnN0YXJ0W3NlY3RdKTsKLQkJCWFkZHJbMF0gPSAoMHgwMDMwMDAzMCAmIEZMQVNIX0lEX01BU0spOwotCQkJbF9zZWN0ID0gc2VjdDsKLQkJfQotCX0KLQotCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChmbGFnKQotCQllbmFibGVfaW50ZXJydXB0cygpOwotCi0JLyogd2FpdCBhdCBsZWFzdCA4MHVzIC0gbGV0J3Mgd2FpdCAxIG1zICovCi0JdWRlbGF5ICgxMDAwKTsKLQotCS8qCi0JICogV2Ugd2FpdCBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNlY3RvcgotCSAqLwotCWlmIChsX3NlY3QgPCAwKQotCQlnb3RvIERPTkU7Ci0KLQlzdGFydCA9IGdldF90aW1lciAoMCk7Ci0JbGFzdCAgPSBzdGFydDsKLQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSopKGluZm8tPnN0YXJ0W2xfc2VjdF0pOwotCXdoaWxlICgoYWRkclswXSAmICgweDAwODAwMDgwJkZMQVNIX0lEX01BU0spKSAhPQotCQkJICAoMHgwMDgwMDA4MCZGTEFTSF9JRF9NQVNLKSAgKQotCXsKLQkJaWYgKChub3cgPSBnZXRfdGltZXIoc3RhcnQpKSA+IENGR19GTEFTSF9FUkFTRV9UT1VUKSB7Ci0JCQlwcmludGYgKCJUaW1lb3V0XG4iKTsKLQkJCXJldHVybiAxOwotCQl9Ci0JCS8qIHNob3cgdGhhdCB3ZSdyZSB3YWl0aW5nICovCi0JCWlmICgobm93IC0gbGFzdCkgPiAxMDAwKSB7CS8qIGV2ZXJ5IHNlY29uZCAqLwotCQkJc2VyaWFsX3B1dGMgKCcuJyk7Ci0JCQlsYXN0ID0gbm93OwotCQl9Ci0JfQotCi1ET05FOgotCS8qIHJlc2V0IHRvIHJlYWQgbW9kZSAqLwotCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopaW5mby0+c3RhcnRbMF07Ci0JYWRkclswXSA9ICgweDAwRjAwMEYwICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KLSAgICB9IGVsc2UgewotCi0KLQlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7IHNlY3QrKykgewotCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSA9PSAwKSB7CS8qIG5vdCBwcm90ZWN0ZWQgKi8KLQkJCWJhcmYgPSAwOwotI2lmbmRlZiBDT05GSUdfRkxBU0hfMTZCSVQKLQkJCWFkZHIgPSAodnVfbG9uZyopKGluZm8tPnN0YXJ0W3NlY3RdKTsKLQkJCWFkZHJbMF0gPSAweDAwMjAwMDIwOwotCQkJYWRkclswXSA9IDB4MDBEMDAwRDA7Ci0JCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODAwMDgwKSk7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwotCQkJaWYoIGFkZHJbMF0gJiAweDAwM0EwMDNBKSB7CS8qIGNoZWNrIGZvciBlcnJvciAqLwotCQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDNBMDAwMDsKLQkJCQlpZiggYmFyZiApIHsKLQkJCQkJYmFyZiA+Pj0xNjsKLQkJCQl9IGVsc2UgewotCQkJCQliYXJmID0gYWRkclswXSAmIDB4MDAwMDAwM0E7Ci0JCQkJfQorCQkvKiBTdGFydCBlcmFzZSBvbiB1bnByb3RlY3RlZCBzZWN0b3JzICovCisJCWZvciAoc2VjdCA9IHNfZmlyc3Q7IHNlY3QgPD0gc19sYXN0OyBzZWN0KyspIHsKKwkJCWlmIChpbmZvLT5wcm90ZWN0W3NlY3RdID09IDApIHsJLyogbm90IHByb3RlY3RlZCAqLworCQkJCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopIChpbmZvLT5zdGFydFtzZWN0XSk7CisJCQkJYWRkclswXSA9ICgweDAwMzAwMDMwICYgRkxBU0hfSURfTUFTSyk7CisJCQkJbF9zZWN0ID0gc2VjdDsKIAkJCX0KLSNlbHNlCi0JCQlhZGRyID0gKHZ1X3Nob3J0KikoaW5mby0+c3RhcnRbc2VjdF0pOwotCQkJYWRkclswXSA9IDB4MDAyMDsKLQkJCWFkZHJbMF0gPSAweDAwRDA7Ci0JCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODApKTsJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCi0JCQlpZiggYWRkclswXSAmIDB4MDAzQSkJLyogY2hlY2sgZm9yIGVycm9yICovCi0JCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwM0E7Ci0jZW5kaWYKLQkJCWlmKGJhcmYpIHsKLQkJCQlwcmludGYoIlxuRmxhc2ggZXJyb3IgaW4gc2VjdG9yIGF0ICVseFxuIiwodW5zaWduZWQgbG9uZylhZGRyKTsKLQkJCQlpZihiYXJmICYgMHgwMDAyKSBwcmludGYoIkJsb2NrIGxvY2tlZCwgbm90IGVyYXNlZC5cbiIpOwotCQkJCWlmKChiYXJmICYgMHgwMDMwKSA9PSAweDAwMzApCi0JCQkJCXByaW50ZigiQ29tbWFuZCBTZXF1ZW5jZSBlcnJvci5cbiIpOwotCQkJCWlmKChiYXJmICYgMHgwMDMwKSA9PSAweDAwMjApCi0JCQkJCXByaW50ZigiQmxvY2sgRXJhc2UgZXJyb3IuXG4iKTsKLQkJCQlpZihiYXJmICYgMHgwMDA4KSBwcmludGYoIlZwcCBMb3cgZXJyb3IuXG4iKTsKLQkJCQlyY29kZSA9IDE7Ci0JCQl9IGVsc2UgcHJpbnRmKCIuIik7Ci0JCQlsX3NlY3QgPSBzZWN0OwogCQl9Ci0JYWRkciA9ICh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKilpbmZvLT5zdGFydFswXTsKLQlhZGRyWzBdID0gKDB4MDBGRjAwRkYgJiBGTEFTSF9JRF9NQVNLKTsJLyogcmVzZXQgYmFuayAqLworCisJCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIG5lY2Vzc2FyeSAqLworCQlpZiAoZmxhZykKKwkJCWVuYWJsZV9pbnRlcnJ1cHRzICgpOworCisJCS8qIHdhaXQgYXQgbGVhc3QgODB1cyAtIGxldCdzIHdhaXQgMSBtcyAqLworCQl1ZGVsYXkgKDEwMDApOworCisJCS8qCisJCSAqIFdlIHdhaXQgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzZWN0b3IKKwkJICovCisJCWlmIChsX3NlY3QgPCAwKQorCQkJZ290byBET05FOworCisJCXN0YXJ0ID0gZ2V0X3RpbWVyICgwKTsKKwkJbGFzdCA9IHN0YXJ0OworCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSAoaW5mby0+c3RhcnRbbF9zZWN0XSk7CisJCXdoaWxlICgoYWRkclswXSAmICgweDAwODAwMDgwICYgRkxBU0hfSURfTUFTSykpICE9CisJCSAgICAgICAoMHgwMDgwMDA4MCAmIEZMQVNIX0lEX01BU0spKSB7CisJCQlpZiAoKG5vdyA9IGdldF90aW1lciAoc3RhcnQpKSA+IENGR19GTEFTSF9FUkFTRV9UT1VUKSB7CisJCQkJcHJpbnRmICgiVGltZW91dFxuIik7CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCQkvKiBzaG93IHRoYXQgd2UncmUgd2FpdGluZyAqLworCQkJaWYgKChub3cgLSBsYXN0KSA+IDEwMDApIHsJLyogZXZlcnkgc2Vjb25kICovCisJCQkJc2VyaWFsX3B1dGMgKCcuJyk7CisJCQkJbGFzdCA9IG5vdzsKKwkJCX0KKwkJfQorCisJICAgICAgRE9ORToKKwkJLyogcmVzZXQgdG8gcmVhZCBtb2RlICovCisJCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopIGluZm8tPnN0YXJ0WzBdOworCQlhZGRyWzBdID0gKDB4MDBGMDAwRjAgJiBGTEFTSF9JRF9NQVNLKTsJLyogcmVzZXQgYmFuayAqLworCX0gZWxzZSB7CisKKworCQlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0IDw9IHNfbGFzdDsgc2VjdCsrKSB7CisJCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSA9PSAwKSB7CS8qIG5vdCBwcm90ZWN0ZWQgKi8KKwkJCQliYXJmID0gMDsKKyNpZm5kZWYgQ09ORklHX0ZMQVNIXzE2QklUCisJCQkJYWRkciA9ICh2dV9sb25nICopIChpbmZvLT5zdGFydFtzZWN0XSk7CisJCQkJYWRkclswXSA9IDB4MDAyMDAwMjA7CisJCQkJYWRkclswXSA9IDB4MDBEMDAwRDA7CisJCQkJd2hpbGUgKCEoYWRkclswXSAmIDB4MDA4MDAwODApKTsJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCisJCQkJaWYgKGFkZHJbMF0gJiAweDAwM0EwMDNBKSB7CS8qIGNoZWNrIGZvciBlcnJvciAqLworCQkJCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTAwMDA7CisJCQkJCWlmIChiYXJmKSB7CisJCQkJCQliYXJmID4+PSAxNjsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDAwMDAzQTsKKwkJCQkJfQorCQkJCX0KKyNlbHNlCisJCQkJYWRkciA9ICh2dV9zaG9ydCAqKSAoaW5mby0+c3RhcnRbc2VjdF0pOworCQkJCWFkZHJbMF0gPSAweDAwMjA7CisJCQkJYWRkclswXSA9IDB4MDBEMDsKKwkJCQl3aGlsZSAoIShhZGRyWzBdICYgMHgwMDgwKSk7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQkJCWlmIChhZGRyWzBdICYgMHgwMDNBKQkvKiBjaGVjayBmb3IgZXJyb3IgKi8KKwkJCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwM0E7CisjZW5kaWYKKwkJCQlpZiAoYmFyZikgeworCQkJCQlwcmludGYgKCJcbkZsYXNoIGVycm9yIGluIHNlY3RvciBhdCAlbHhcbiIsICh1bnNpZ25lZCBsb25nKSBhZGRyKTsKKwkJCQkJaWYgKGJhcmYgJiAweDAwMDIpCisJCQkJCQlwcmludGYgKCJCbG9jayBsb2NrZWQsIG5vdCBlcmFzZWQuXG4iKTsKKwkJCQkJaWYgKChiYXJmICYgMHgwMDMwKSA9PSAweDAwMzApCisJCQkJCQlwcmludGYgKCJDb21tYW5kIFNlcXVlbmNlIGVycm9yLlxuIik7CisJCQkJCWlmICgoYmFyZiAmIDB4MDAzMCkgPT0gMHgwMDIwKQorCQkJCQkJcHJpbnRmICgiQmxvY2sgRXJhc2UgZXJyb3IuXG4iKTsKKwkJCQkJaWYgKGJhcmYgJiAweDAwMDgpCisJCQkJCQlwcmludGYgKCJWcHAgTG93IGVycm9yLlxuIik7CisJCQkJCXJjb2RlID0gMTsKKwkJCQl9IGVsc2UKKwkJCQkJcHJpbnRmICgiLiIpOworCQkJCWxfc2VjdCA9IHNlY3Q7CisJCQl9CisJCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSBpbmZvLT5zdGFydFswXTsKKwkJCWFkZHJbMF0gPSAoMHgwMEZGMDBGRiAmIEZMQVNIX0lEX01BU0spOwkvKiByZXNldCBiYW5rICovCisKKwkJfQogCiAJfQotCi0gICAgfQogCXByaW50ZiAoIiBkb25lXG4iKTsKIAlyZXR1cm4gcmNvZGU7CiB9CkBAIC04MDksNyArODQ2LDcgQEAKICAqIDIgLSBGbGFzaCBub3QgZXJhc2VkCiAgKi8KIAotaW50IHdyaXRlX2J1ZmYgKGZsYXNoX2luZm9fdCAqaW5mbywgdWNoYXIgKnNyYywgdWxvbmcgYWRkciwgdWxvbmcgY250KQoraW50IHdyaXRlX2J1ZmYgKGZsYXNoX2luZm9fdCAqIGluZm8sIHVjaGFyICogc3JjLCB1bG9uZyBhZGRyLCB1bG9uZyBjbnQpCiB7CiAjaWZuZGVmIENPTkZJR19GTEFTSF8xNkJJVAogCXVsb25nIGNwLCB3cCwgZGF0YTsKQEAgLTgzMCwxOSArODY3LDE5IEBACiAJICovCiAJaWYgKChsID0gYWRkciAtIHdwKSAhPSAwKSB7CiAJCWRhdGEgPSAwOwotCQlmb3IgKGk9MCwgY3A9d3A7IGk8bDsgKytpLCArK2NwKSB7Ci0JCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAoKih1Y2hhciAqKWNwKTsKKwkJZm9yIChpID0gMCwgY3AgPSB3cDsgaSA8IGw7ICsraSwgKytjcCkgeworCQkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKCoodWNoYXIgKikgY3ApOwogCQl9Ci0JCWZvciAoOyBpPDQgJiYgY250PjA7ICsraSkgeworCQlmb3IgKDsgaSA8IDQgJiYgY250ID4gMDsgKytpKSB7CiAJCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAqc3JjKys7CiAJCQktLWNudDsKIAkJCSsrY3A7CiAJCX0KLQkJZm9yICg7IGNudD09MCAmJiBpPDQ7ICsraSwgKytjcCkgewotCQkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKCoodWNoYXIgKiljcCk7CisJCWZvciAoOyBjbnQgPT0gMCAmJiBpIDwgNDsgKytpLCArK2NwKSB7CisJCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAoKih1Y2hhciAqKSBjcCk7CiAJCX0KIAotCQlpZiAoKHJjID0gd3JpdGVfd29yZChpbmZvLCB3cCwgZGF0YSkpICE9IDApIHsKKwkJaWYgKChyYyA9IHdyaXRlX3dvcmQgKGluZm8sIHdwLCBkYXRhKSkgIT0gMCkgewogCQkJcmV0dXJuIChyYyk7CiAJCX0KIAkJd3AgKz0gNDsKQEAgLTg1MywxMyArODkwLDEzIEBACiAJICovCiAJd2hpbGUgKGNudCA+PSA0KSB7CiAJCWRhdGEgPSAwOwotCQlmb3IgKGk9MDsgaTw0OyArK2kpIHsKKwkJZm9yIChpID0gMDsgaSA8IDQ7ICsraSkgewogCQkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKnNyYysrOwogCQl9Ci0JCWlmICgocmMgPSB3cml0ZV93b3JkKGluZm8sIHdwLCBkYXRhKSkgIT0gMCkgeworCQlpZiAoKHJjID0gd3JpdGVfd29yZCAoaW5mbywgd3AsIGRhdGEpKSAhPSAwKSB7CiAJCQlyZXR1cm4gKHJjKTsKIAkJfQotCQl3cCAgKz0gNDsKKwkJd3AgKz0gNDsKIAkJY250IC09IDQ7CiAJfQogCkBAIC04NzEsMTUgKzkwOCwxNSBAQAogCSAqIGhhbmRsZSB1bmFsaWduZWQgdGFpbCBieXRlcwogCSAqLwogCWRhdGEgPSAwOwotCWZvciAoaT0wLCBjcD13cDsgaTw0ICYmIGNudD4wOyArK2ksICsrY3ApIHsKKwlmb3IgKGkgPSAwLCBjcCA9IHdwOyBpIDwgNCAmJiBjbnQgPiAwOyArK2ksICsrY3ApIHsKIAkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKnNyYysrOwogCQktLWNudDsKIAl9Ci0JZm9yICg7IGk8NDsgKytpLCArK2NwKSB7Ci0JCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICgqKHVjaGFyICopY3ApOworCWZvciAoOyBpIDwgNDsgKytpLCArK2NwKSB7CisJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICgqKHVjaGFyICopIGNwKTsKIAl9CiAKLQlyZXR1cm4gKHdyaXRlX3dvcmQoaW5mbywgd3AsIGRhdGEpKTsKKwlyZXR1cm4gKHdyaXRlX3dvcmQgKGluZm8sIHdwLCBkYXRhKSk7CiAKICNlbHNlCiAJd3AgPSAoYWRkciAmIH4xKTsJLyogZ2V0IGxvd2VyIHdvcmQgYWxpZ25lZCBhZGRyZXNzICovCkBAIC04OTEsNyArOTI4LDcgQEAKIAkJZGF0YSA9IDA7CiAJCWRhdGEgPSAoZGF0YSA8PCA4KSB8ICpzcmMrKzsKIAkJLS1jbnQ7Ci0JCWlmICgocmMgPSB3cml0ZV9zaG9ydChpbmZvLCB3cCwgZGF0YSkpICE9IDApIHsKKwkJaWYgKChyYyA9IHdyaXRlX3Nob3J0IChpbmZvLCB3cCwgZGF0YSkpICE9IDApIHsKIAkJCXJldHVybiAocmMpOwogCQl9CiAJCXdwICs9IDI7CkBAIC05MDMsNyArOTQwLDcgQEAKIC8qCWwgPSAwOyB1c2VkIGZvciBkZWJ1Z2luZyAgKi8KIAl3aGlsZSAoY250ID49IDIpIHsKIAkJZGF0YSA9IDA7Ci0JCWZvciAoaT0wOyBpPDI7ICsraSkgeworCQlmb3IgKGkgPSAwOyBpIDwgMjsgKytpKSB7CiAJCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAqc3JjKys7CiAJCX0KIApAQCAtOTEyLDEwICs5NDksMTAgQEAKIAkJCWwgPSAxOwogCQl9ICB1c2VkIGZvciBkZWJ1Z2luZyAqLwogCi0JCWlmICgocmMgPSB3cml0ZV9zaG9ydChpbmZvLCB3cCwgZGF0YSkpICE9IDApIHsKKwkJaWYgKChyYyA9IHdyaXRlX3Nob3J0IChpbmZvLCB3cCwgZGF0YSkpICE9IDApIHsKIAkJCXJldHVybiAocmMpOwogCQl9Ci0JCXdwICArPSAyOworCQl3cCArPSAyOwogCQljbnQgLT0gMjsKIAl9CiAKQEAgLTkyNywxNSArOTY0LDE1IEBACiAJICogaGFuZGxlIHVuYWxpZ25lZCB0YWlsIGJ5dGVzCiAJICovCiAJZGF0YSA9IDA7Ci0JZm9yIChpPTAsIGNwPXdwOyBpPDIgJiYgY250PjA7ICsraSwgKytjcCkgeworCWZvciAoaSA9IDAsIGNwID0gd3A7IGkgPCAyICYmIGNudCA+IDA7ICsraSwgKytjcCkgewogCQlkYXRhID0gKGRhdGEgPDwgOCkgfCAqc3JjKys7CiAJCS0tY250OwogCX0KLQlmb3IgKDsgaTwyOyArK2ksICsrY3ApIHsKLQkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKCoodWNoYXIgKiljcCk7CisJZm9yICg7IGkgPCAyOyArK2ksICsrY3ApIHsKKwkJZGF0YSA9IChkYXRhIDw8IDgpIHwgKCoodWNoYXIgKikgY3ApOwogCX0KIAotCXJldHVybiAod3JpdGVfc2hvcnQoaW5mbywgd3AsIGRhdGEpKTsKKwlyZXR1cm4gKHdyaXRlX3Nob3J0IChpbmZvLCB3cCwgZGF0YSkpOwogCiAKICNlbmRpZgpAQCAtOTQ4LDE0OCArOTg1LDE1MSBAQAogICogMiAtIEZsYXNoIG5vdCBlcmFzZWQKICAqLwogI2lmbmRlZiBDT05GSUdfRkxBU0hfMTZCSVQKLXN0YXRpYyBpbnQgd3JpdGVfd29yZCAoZmxhc2hfaW5mb190ICppbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQorc3RhdGljIGludCB3cml0ZV93b3JkIChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1bG9uZyBkYXRhKQogewotCXZ1X2xvbmcgKmFkZHIgPSAodnVfbG9uZyopKGluZm8tPnN0YXJ0WzBdKTsKLQl1bG9uZyBzdGFydCxiYXJmOworCXZ1X2xvbmcgKmFkZHIgPSAodnVfbG9uZyAqKSAoaW5mby0+c3RhcnRbMF0pOworCXVsb25nIHN0YXJ0LCBiYXJmOwogCWludCBmbGFnOwogCiAKIAkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KLQlpZiAoKCooKHZ1X2xvbmcgKilkZXN0KSAmIGRhdGEpICE9IGRhdGEpIHsKKwlpZiAoKCooKHZ1X2xvbmcgKikgZGVzdCkgJiBkYXRhKSAhPSBkYXRhKSB7CiAJCXJldHVybiAoMik7CiAJfQogCiAJLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCi0JZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cygpOworCWZsYWcgPSBkaXNhYmxlX2ludGVycnVwdHMgKCk7CiAKLSAgICAgaWYoaW5mby0+Zmxhc2hfaWQgPiBGTEFTSF9BTURfQ09NUCkgewotCS8qIEFNRCBzdHVmZiAqLwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKLQlhZGRyWzB4MDU1NV0gPSAweDAwQTAwMEEwOwotICAgICB9IGVsc2UgewotCS8qIGludGVsIHN0dWZmICovCi0JKmFkZHIgPSAweDAwNDAwMDQwOwotICAgICB9Ci0JKigodnVfbG9uZyAqKWRlc3QpID0gZGF0YTsKKwlpZiAoaW5mby0+Zmxhc2hfaWQgPiBGTEFTSF9BTURfQ09NUCkgeworCQkvKiBBTUQgc3R1ZmYgKi8KKwkJYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKKwkJYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMEEwMDBBMDsKKwl9IGVsc2UgeworCQkvKiBpbnRlbCBzdHVmZiAqLworCQkqYWRkciA9IDB4MDA0MDAwNDA7CisJfQorCSooKHZ1X2xvbmcgKikgZGVzdCkgPSBkYXRhOwogCiAJLyogcmUtZW5hYmxlIGludGVycnVwdHMgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKGZsYWcpCi0JCWVuYWJsZV9pbnRlcnJ1cHRzKCk7CisJCWVuYWJsZV9pbnRlcnJ1cHRzICgpOwogCiAJLyogZGF0YSBwb2xsaW5nIGZvciBENyAqLwogCXN0YXJ0ID0gZ2V0X3RpbWVyICgwKTsKIAotICAgICBpZihpbmZvLT5mbGFzaF9pZCA+IEZMQVNIX0FNRF9DT01QKSB7CisJaWYgKGluZm8tPmZsYXNoX2lkID4gRkxBU0hfQU1EX0NPTVApIHsKIAotCXdoaWxlICgoKigodnVfbG9uZyAqKWRlc3QpICYgMHgwMDgwMDA4MCkgIT0gKGRhdGEgJiAweDAwODAwMDgwKSkgewotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSB7Ci0JCQlyZXR1cm4gKDEpOworCQl3aGlsZSAoKCooKHZ1X2xvbmcgKikgZGVzdCkgJiAweDAwODAwMDgwKSAhPQorCQkgICAgICAgKGRhdGEgJiAweDAwODAwMDgwKSkgeworCQkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKKwkJCQlyZXR1cm4gKDEpOworCQkJfQogCQl9Ci0JfQogCi0gICAgIH0gZWxzZSB7CisJfSBlbHNlIHsKIAotCXdoaWxlKCEoYWRkclswXSAmIDB4MDA4MDAwODApKXsgIAkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KLQkJaWYgKGdldF90aW1lcihzdGFydCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkgewotCQkJcmV0dXJuICgxKTsKLQl9CisJCXdoaWxlICghKGFkZHJbMF0gJiAweDAwODAwMDgwKSkgewkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KKwkJCWlmIChnZXRfdGltZXIgKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSB7CisJCQkJcmV0dXJuICgxKTsKKwkJCX0KIAotCWlmKCBhZGRyWzBdICYgMHgwMDNBMDAzQSkgewkvKiBjaGVjayBmb3IgZXJyb3IgKi8KLQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwM0EwMDAwOwotCQlpZiggYmFyZiApIHsKLQkJCWJhcmYgPj49MTY7Ci0JCX0gZWxzZSB7Ci0JCQliYXJmID0gYWRkclswXSAmIDB4MDAwMDAwM0E7CisJCQlpZiAoYWRkclswXSAmIDB4MDAzQTAwM0EpIHsJLyogY2hlY2sgZm9yIGVycm9yICovCisJCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwM0EwMDAwOworCQkJCWlmIChiYXJmKSB7CisJCQkJCWJhcmYgPj49IDE2OworCQkJCX0gZWxzZSB7CisJCQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDAwMDAzQTsKKwkJCQl9CisJCQkJcHJpbnRmICgiXG5GbGFzaCB3cml0ZSBlcnJvciBhdCBhZGRyZXNzICVseFxuIiwgKHVuc2lnbmVkIGxvbmcpIGRlc3QpOworCQkJCWlmIChiYXJmICYgMHgwMDAyKQorCQkJCQlwcmludGYgKCJCbG9jayBsb2NrZWQsIG5vdCBlcmFzZWQuXG4iKTsKKwkJCQlpZiAoYmFyZiAmIDB4MDAxMCkKKwkJCQkJcHJpbnRmICgiUHJvZ3JhbW1pbmcgZXJyb3IuXG4iKTsKKwkJCQlpZiAoYmFyZiAmIDB4MDAwOCkKKwkJCQkJcHJpbnRmICgiVnBwIExvdyBlcnJvci5cbiIpOworCQkJCXJldHVybiAoMik7CisJCQl9CisKKwogCQl9Ci0JCXByaW50ZigiXG5GbGFzaCB3cml0ZSBlcnJvciBhdCBhZGRyZXNzICVseFxuIiwodW5zaWduZWQgbG9uZylkZXN0KTsKLQkJaWYoYmFyZiAmIDB4MDAwMikgcHJpbnRmKCJCbG9jayBsb2NrZWQsIG5vdCBlcmFzZWQuXG4iKTsKLQkJaWYoYmFyZiAmIDB4MDAxMCkgcHJpbnRmKCJQcm9ncmFtbWluZyBlcnJvci5cbiIpOwotCQlpZihiYXJmICYgMHgwMDA4KSBwcmludGYoIlZwcCBMb3cgZXJyb3IuXG4iKTsKLQkJcmV0dXJuKDIpOworCisJCXJldHVybiAoMCk7CisKIAl9CiAKLQotICAgICB9Ci0KLQlyZXR1cm4gKDApOwotCi19Ci0KICNlbHNlCiAKLXN0YXRpYyBpbnQgd3JpdGVfc2hvcnQgKGZsYXNoX2luZm9fdCAqaW5mbywgdWxvbmcgZGVzdCwgdXNob3J0IGRhdGEpCitzdGF0aWMgaW50IHdyaXRlX3Nob3J0IChmbGFzaF9pbmZvX3QgKiBpbmZvLCB1bG9uZyBkZXN0LCB1c2hvcnQgZGF0YSkKIHsKLQl2dV9zaG9ydCAqYWRkciA9ICh2dV9zaG9ydCopKGluZm8tPnN0YXJ0WzBdKTsKLQl1bG9uZyBzdGFydCxiYXJmOworCXZ1X3Nob3J0ICphZGRyID0gKHZ1X3Nob3J0ICopIChpbmZvLT5zdGFydFswXSk7CisJdWxvbmcgc3RhcnQsIGJhcmY7CiAJaW50IGZsYWc7CiAKIAkvKiBDaGVjayBpZiBGbGFzaCBpcyAoc3VmZmljaWVudGx5KSBlcmFzZWQgKi8KLQlpZiAoKCooKHZ1X3Nob3J0ICopZGVzdCkgJiBkYXRhKSAhPSBkYXRhKSB7CisJaWYgKCgqKCh2dV9zaG9ydCAqKSBkZXN0KSAmIGRhdGEpICE9IGRhdGEpIHsKIAkJcmV0dXJuICgyKTsKIAl9CiAKIAkvKiBEaXNhYmxlIGludGVycnVwdHMgd2hpY2ggbWlnaHQgY2F1c2UgYSB0aW1lb3V0IGhlcmUgKi8KLQlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzKCk7CisJZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cyAoKTsKIAotICAgICBpZihpbmZvLT5mbGFzaF9pZCA8IEZMQVNIX0FNRF9DT01QKSB7Ci0JLyogQU1EIHN0dWZmICovCi0JYWRkclsweDA1NTVdID0gMHgwMEFBOwotCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKLQlhZGRyWzB4MDU1NV0gPSAweDAwQTA7Ci0gICAgIH0gZWxzZSB7Ci0JLyogaW50ZWwgc3R1ZmYgKi8KLQkqYWRkciA9IDB4MDBEMDsKLQkqYWRkciA9IDB4MDA0MDsKLSAgICAgfQotCSooKHZ1X3Nob3J0ICopZGVzdCkgPSBkYXRhOworCWlmIChpbmZvLT5mbGFzaF9pZCA8IEZMQVNIX0FNRF9DT01QKSB7CisJCS8qIEFNRCBzdHVmZiAqLworCQlhZGRyWzB4MDU1NV0gPSAweDAwQUE7CisJCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMEEwOworCX0gZWxzZSB7CisJCS8qIGludGVsIHN0dWZmICovCisJCSphZGRyID0gMHgwMEQwOworCQkqYWRkciA9IDB4MDA0MDsKKwl9CisJKigodnVfc2hvcnQgKikgZGVzdCkgPSBkYXRhOwogCiAJLyogcmUtZW5hYmxlIGludGVycnVwdHMgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKGZsYWcpCi0JCWVuYWJsZV9pbnRlcnJ1cHRzKCk7CisJCWVuYWJsZV9pbnRlcnJ1cHRzICgpOwogCiAJLyogZGF0YSBwb2xsaW5nIGZvciBENyAqLwogCXN0YXJ0ID0gZ2V0X3RpbWVyICgwKTsKIAotICAgICBpZihpbmZvLT5mbGFzaF9pZCA8IEZMQVNIX0FNRF9DT01QKSB7Ci0JICAvKiBBTUQgc3R1ZmYgKi8KLQl3aGlsZSAoKCooKHZ1X3Nob3J0ICopZGVzdCkgJiAweDAwODApICE9IChkYXRhICYgMHgwMDgwKSkgewotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSB7Ci0JCQlyZXR1cm4gKDEpOworCWlmIChpbmZvLT5mbGFzaF9pZCA8IEZMQVNIX0FNRF9DT01QKSB7CisJCS8qIEFNRCBzdHVmZiAqLworCQl3aGlsZSAoKCooKHZ1X3Nob3J0ICopIGRlc3QpICYgMHgwMDgwKSAhPSAoZGF0YSAmIDB4MDA4MCkpIHsKKwkJCWlmIChnZXRfdGltZXIgKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSB7CisJCQkJcmV0dXJuICgxKTsKKwkJCX0KIAkJfQorCisJfSBlbHNlIHsKKwkJLyogaW50ZWwgc3R1ZmYgKi8KKwkJd2hpbGUgKCEoYWRkclswXSAmIDB4MDA4MCkpIHsJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCisJCQlpZiAoZ2V0X3RpbWVyIChzdGFydCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkKKwkJCQlyZXR1cm4gKDEpOworCQl9CisKKwkJaWYgKGFkZHJbMF0gJiAweDAwM0EpIHsJLyogY2hlY2sgZm9yIGVycm9yICovCisJCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTsKKwkJCXByaW50ZiAoIlxuRmxhc2ggd3JpdGUgZXJyb3IgYXQgYWRkcmVzcyAlbHhcbiIsCisJCQkJKHVuc2lnbmVkIGxvbmcpIGRlc3QpOworCQkJaWYgKGJhcmYgJiAweDAwMDIpCisJCQkJcHJpbnRmICgiQmxvY2sgbG9ja2VkLCBub3QgZXJhc2VkLlxuIik7CisJCQlpZiAoYmFyZiAmIDB4MDAxMCkKKwkJCQlwcmludGYgKCJQcm9ncmFtbWluZyBlcnJvci5cbiIpOworCQkJaWYgKGJhcmYgJiAweDAwMDgpCisJCQkJcHJpbnRmICgiVnBwIExvdyBlcnJvci5cbiIpOworCQkJcmV0dXJuICgyKTsKKwkJfQorCQkqYWRkciA9IDB4MDBCMDsKKwkJKmFkZHIgPSAweDAwNzA7CisJCXdoaWxlICghKGFkZHJbMF0gJiAweDAwODApKSB7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQkJaWYgKGdldF90aW1lciAoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpCisJCQkJcmV0dXJuICgxKTsKKwkJfQorCQkqYWRkciA9IDB4MDBGRjsKIAl9Ci0KLSAgICAgfSBlbHNlIHsKLQkvKiBpbnRlbCBzdHVmZiAqLwotCXdoaWxlKCEoYWRkclswXSAmIDB4MDA4MCkpeyAgCS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSByZXR1cm4gKDEpOwotCX0KLQotCWlmKCBhZGRyWzBdICYgMHgwMDNBKSB7CS8qIGNoZWNrIGZvciBlcnJvciAqLwotCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTsKLQkJcHJpbnRmKCJcbkZsYXNoIHdyaXRlIGVycm9yIGF0IGFkZHJlc3MgJWx4XG4iLCh1bnNpZ25lZCBsb25nKWRlc3QpOwotCQlpZihiYXJmICYgMHgwMDAyKSBwcmludGYoIkJsb2NrIGxvY2tlZCwgbm90IGVyYXNlZC5cbiIpOwotCQlpZihiYXJmICYgMHgwMDEwKSBwcmludGYoIlByb2dyYW1taW5nIGVycm9yLlxuIik7Ci0JCWlmKGJhcmYgJiAweDAwMDgpIHByaW50ZigiVnBwIExvdyBlcnJvci5cbiIpOwotCQlyZXR1cm4oMik7Ci0JfQotCSphZGRyID0gMHgwMEIwOwotCSphZGRyID0gMHgwMDcwOwotCXdoaWxlKCEoYWRkclswXSAmIDB4MDA4MCkpeyAgCS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwotCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSByZXR1cm4gKDEpOwotCX0KLQotCSphZGRyID0gMHgwMEZGOwotCi0gICAgIH0KLQogCXJldHVybiAoMCk7Ci0KIH0KIAotCiAjZW5kaWYKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2VzdGVlbTE5MmUvdS1ib290LmxkcyBiL2JvYXJkL2VzdGVlbTE5MmUvdS1ib290LmxkcwppbmRleCAyYThkOWUyLi5hY2FmNGUzIDEwMDY0NAotLS0gYS9ib2FyZC9lc3RlZW0xOTJlL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXN0ZWVtMTkyZS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXRpbi9kZWJyaXMvZGVicmlzLmMgYi9ib2FyZC9ldGluL2RlYnJpcy9kZWJyaXMuYwppbmRleCAwOGVkNjM1Li42NzM3NWU5IDEwMDY0NAotLS0gYS9ib2FyZC9ldGluL2RlYnJpcy9kZWJyaXMuYworKysgYi9ib2FyZC9ldGluL2RlYnJpcy9kZWJyaXMuYwpAQCAtNDMsNyArNDMsNyBAQAogCXJldHVybiAwOwogfQogCi0jaWYgMCAJLyogTk9UIFVTRUQgKi8KKyNpZiAwCS8qIE5PVCBVU0VEICovCiBpbnQgY2hlY2tmbGFzaCAodm9pZCkKIHsKIAkvKiBUT0RPOiBYWFggWFhYIFhYWCAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXRpbi9kZWJyaXMvc3BlZWQuaCBiL2JvYXJkL2V0aW4vZGVicmlzL3NwZWVkLmgKaW5kZXggYjY2MzkzYi4uM2YzMmExNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXRpbi9kZWJyaXMvc3BlZWQuaAorKysgYi9ib2FyZC9ldGluL2RlYnJpcy9zcGVlZC5oCkBAIC0yOCwxMCArMjgsMTAgQEAKICAqIFNQRUVEX1RNUjNfUFMgPSAoR0NMSyAvICgxNiAqIFNQRUVEX0ZDT1VOVDMpKSAtIDEKICAqCiAgKiBTUEVFRF9GQ09VTlQyCXRpbWVyIDIgY291bnRpbmcgZnJlcXVlbmN5Ci0gKiBHQ0xLCSAgICAgIAkJQ1BVIGNsb2NrCisgKiBHQ0xLCQkJQ1BVIGNsb2NrCiAgKiBTUEVFRF9UTVIyX1BTCXByZXNjYWxlcgogICovCi0jZGVmaW5lIFNQRUVEX1RNUjJfUFMgIAkoMjUwIC0gMSkJLyogZGl2aWRlIGJ5IDI1MAkqLworI2RlZmluZSBTUEVFRF9UTVIyX1BTCSgyNTAgLSAxKQkvKiBkaXZpZGUgYnkgMjUwCSovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRpbWVyIHZhbHVlIGZvciBQSVQKZGlmZiAtLWdpdCBhL2JvYXJkL2V0eDA5NC91LWJvb3QubGRzIGIvYm9hcmQvZXR4MDk0L3UtYm9vdC5sZHMKaW5kZXggMGU3YmQzNy4uNTMxM2JkNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXR4MDk0L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXR4MDk0L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9ldHgwOTQvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2V0eDA5NC91LWJvb3QubGRzLmRlYnVnCmluZGV4IGEwMTIxY2UuLjA2MTE1ZWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2V0eDA5NC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2V0eDA5NC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXZiNjQyNjAvYm9vdHNlcS50eHQgYi9ib2FyZC9ldmI2NDI2MC9ib290c2VxLnR4dAppbmRleCAzOTFkNDlhLi4yOTBhZWQ5IDEwMDY0NAotLS0gYS9ib2FyZC9ldmI2NDI2MC9ib290c2VxLnR4dAorKysgYi9ib2FyZC9ldmI2NDI2MC9ib290c2VxLnR4dApAQCAtNTYsNyArNTYsNyBAQAogICAgIHNldHVwIHN0YWNrIHBvaW50ZXIgKHIxKQogICAgIHNldHVwIEdPVAogICAgIGNhbGwgY3B1X2luaXRfZgotICAgIAlkZWJ1ZyBsZWRzCisJZGVidWcgbGVkcwogICAgIGJvYXJkX2luaXRfZjogKGNvbW1vbi9ib2FyZC5jKQogCWJvYXJkX2Vhcmx5X2luaXRfZjoKIAkgICAgcmVtYXAgZ3QgcmVncz8KQEAgLTc0LDcgKzc0LDcgQEAKIAkJZHJhbV9zaXplKCkKIAkJc2V0dXAgUENJIHNsYXZlIG1lbW9yeSBtYXBwaW5ncwogCQlzZXR1cCBTQ1MKLSAgIAlzZXR1cCBtb25pdG9yCisJc2V0dXAgbW9uaXRvcgogCWFsbG9jIGJvYXJkIGluZm8gc3RydWN0CiAJaW5pdCBiZCBzdHJ1Y3QKIAlyZWxvY2F0ZV9jb2RlOiAoY3B1L21wYzd4eHgvc3RhcnQuUykKZGlmZiAtLWdpdCBhL2JvYXJkL2V2YjY0MjYwL2V0aC5jIGIvYm9hcmQvZXZiNjQyNjAvZXRoLmMKaW5kZXggYWRkMmIzZC4uNjE4YWY2ZiAxMDA2NDQKLS0tIGEvYm9hcmQvZXZiNjQyNjAvZXRoLmMKKysrIGIvYm9hcmQvZXZiNjQyNjAvZXRoLmMKQEAgLTUyOSw3ICs1MjksNyBAQAogI2VuZGlmCiAKIAkvKiAzMSAgMjggMjcgIDI0IDIzICAyMCAxOSAgMTYKLQkgKiAgMDAwMCAgIDAwMDAgICAwMDAwICAgMDAwMCAJWzAwMDRdCisJICogIDAwMDAgICAwMDAwICAgMDAwMCAgIDAwMDAJWzAwMDRdCiAJICogMTUgIDEyIDExICA4ICAgNyAgNCAgIDMgIDAKIAkgKiAgMTAwMCAgIDExMDEgICAwMDAwICAgMDAwMAlbNGQwMF0KIAkgKiAgICAyMCAtIDA9TUlJIDE9Uk1JSQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXZiNjQyNjAvbXBzYy5jIGIvYm9hcmQvZXZiNjQyNjAvbXBzYy5jCmluZGV4IDk4YWM3ZjYuLjllOGJmZTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2V2YjY0MjYwL21wc2MuYworKysgYi9ib2FyZC9ldmI2NDI2MC9tcHNjLmMKQEAgLTMwOSw5ICszMDksOSBAQAogCiAJLyogQ09NTV9NUFNDIENPTkZJRyAqLwogI2lmZGVmIFNPRlRXQVJFX0NBQ0hFX01BTkFHRU1FTlQKLQlnYWxtcHNjX3NldF9zbm9vcChDSEFOTkVMLCAwKTsgICAgIAkJCQkvKiBkaXNhYmxlIHNub29wICovCisJZ2FsbXBzY19zZXRfc25vb3AoQ0hBTk5FTCwgMCk7CQkJCS8qIGRpc2FibGUgc25vb3AgKi8KICNlbHNlCi0JZ2FsbXBzY19zZXRfc25vb3AoQ0hBTk5FTCwgMSk7ICAgICAJCQkJLyogZW5hYmxlIHNub29wICovCisJZ2FsbXBzY19zZXRfc25vb3AoQ0hBTk5FTCwgMSk7CQkJCS8qIGVuYWJsZSBzbm9vcCAqLwogI2VuZGlmCiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2JvYXJkL2V2YjY0MjYwL21wc2MuaCBiL2JvYXJkL2V2YjY0MjYwL21wc2MuaAppbmRleCA1NGI2NDJhLi5jNzEyNThjIDEwMDY0NAotLS0gYS9ib2FyZC9ldmI2NDI2MC9tcHNjLmgKKysrIGIvYm9hcmQvZXZiNjQyNjAvbXBzYy5oCkBAIC01NSw5ICs1NSw5IEBACiAjZGVmaW5lIFRYX1NUT1AgICAgIDB4MDAwMTAwMDAKICNkZWZpbmUgUlhfRU5BQkxFICAgMHgwMDAwMDA4MAogCi0jZGVmaW5lIFNETUFfUlhfQUJPUlQgCQkgICgxIDw8IDE1KQotI2RlZmluZSBTRE1BX1RYX0FCT1JUIAkJICAoMSA8PCAzMSkKLSNkZWZpbmUgTVBTQ19UWF9BQk9SVCAJCSAgKDEgPDwgNykKKyNkZWZpbmUgU0RNQV9SWF9BQk9SVAkJICAoMSA8PCAxNSkKKyNkZWZpbmUgU0RNQV9UWF9BQk9SVAkJICAoMSA8PCAzMSkKKyNkZWZpbmUgTVBTQ19UWF9BQk9SVAkJICAoMSA8PCA3KQogI2RlZmluZSBNUFNDX1JYX0FCT1JUICAgICAgICAgICAgICgxIDw8IDIzKQogI2RlZmluZSBNUFNDX0VOVEVSX0hVTlQgICAgICAgICAgICgxIDw8IDMxKQogCmRpZmYgLS1naXQgYS9ib2FyZC9ldmI2NDI2MC91LWJvb3QubGRzIGIvYm9hcmQvZXZiNjQyNjAvdS1ib290LmxkcwppbmRleCAyNWUxNmRlLi4xYTk1NzU1IDEwMDY0NAotLS0gYS9ib2FyZC9ldmI2NDI2MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2V2YjY0MjYwL3UtYm9vdC5sZHMKQEAgLTM3LDExICszNywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9ldmI2NDI2MC96dW1hX3BiYl9tYm94LmMgYi9ib2FyZC9ldmI2NDI2MC96dW1hX3BiYl9tYm94LmMKaW5kZXggMmI5YTQ2OS4uNmY1ZGY2ZSAxMDA2NDQKLS0tIGEvYm9hcmQvZXZiNjQyNjAvenVtYV9wYmJfbWJveC5jCisrKyBiL2JvYXJkL2V2YjY0MjYwL3p1bWFfcGJiX21ib3guYwpAQCAtMTQ4LDcgKzE0OCw3IEBACiB9CiAKIC8qKgotICogCXp1bWFfbWJveF9pbml0OgorICoJenVtYV9tYm94X2luaXQ6CiAgKi8KIAogaW50IHp1bWFfbWJveF9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9ib2FyZC9leGJpdGdlbi9leGJpdGdlbi5oIGIvYm9hcmQvZXhiaXRnZW4vZXhiaXRnZW4uaAppbmRleCAwNThhZDQ4Li5kY2VhZjZkIDEwMDY0NAotLS0gYS9ib2FyZC9leGJpdGdlbi9leGJpdGdlbi5oCisrKyBiL2JvYXJkL2V4Yml0Z2VuL2V4Yml0Z2VuLmgKQEAgLTI1LDE1ICsyNSwxNSBAQAogCiAKICNkZWZpbmUgQ1BMRF9CQVNFCQkweDEwMDAwMDAwCQkvKiB0LmIubS4gKi8KLSNkZWZpbmUgREVCVUdfTEVEU19BRERSIAlDUExEX0JBU0UgKyAweDAxCi0jZGVmaW5lIEhXX0lEX0FERFIgICAgICAJQ1BMRF9CQVNFICsgMHgwMgotI2RlZmluZSBESVBfU1dJVENIX0FERFIgCUNQTERfQkFTRSArIDB4MDQKLSNkZWZpbmUgUEhZX0NUUkxfQUREUiAgIAlDUExEX0JBU0UgKyAweDA1Ci0jZGVmaW5lIFNQSV9PVVRfQUREUiAgICAJQ1BMRF9CQVNFICsgMHgwNwotI2RlZmluZSBTUElfSU5fQUREUiAgICAgCUNQTERfQkFTRSArIDB4MDgKLSNkZWZpbmUgTURJT19PVVRfQUREUiAgIAlDUExEX0JBU0UgKyAweDA5Ci0jZGVmaW5lIE1ESU9fSU5fQUREUiAgICAJQ1BMRF9CQVNFICsgMHgwQQotI2RlZmluZSBNSVNDX09VVF9BRERSICAgCUNQTERfQkFTRSArIDB4MEIKKyNkZWZpbmUgREVCVUdfTEVEU19BRERSCQlDUExEX0JBU0UgKyAweDAxCisjZGVmaW5lIEhXX0lEX0FERFIJCUNQTERfQkFTRSArIDB4MDIKKyNkZWZpbmUgRElQX1NXSVRDSF9BRERSCQlDUExEX0JBU0UgKyAweDA0CisjZGVmaW5lIFBIWV9DVFJMX0FERFIJCUNQTERfQkFTRSArIDB4MDUKKyNkZWZpbmUgU1BJX09VVF9BRERSCQlDUExEX0JBU0UgKyAweDA3CisjZGVmaW5lIFNQSV9JTl9BRERSCQlDUExEX0JBU0UgKyAweDA4CisjZGVmaW5lIE1ESU9fT1VUX0FERFIJCUNQTERfQkFTRSArIDB4MDkKKyNkZWZpbmUgTURJT19JTl9BRERSCQlDUExEX0JBU0UgKyAweDBBCisjZGVmaW5lIE1JU0NfT1VUX0FERFIJCUNQTERfQkFTRSArIDB4MEIKIAogLyogQWRkcmVzc2VzIHVzZWQgb24gSTJDIGJ1cyAqLwogI2RlZmluZSBMTTc1X0NISVBfQUREUgkJMHg5QwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXhiaXRnZW4vaW5pdC5TIGIvYm9hcmQvZXhiaXRnZW4vaW5pdC5TCmluZGV4IDBlNmNkMDQuLjcxYWVmYjkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2V4Yml0Z2VuL2luaXQuUworKysgYi9ib2FyZC9leGJpdGdlbi9pbml0LlMKQEAgLTE4NCwxMSArMTg0LDExIEBACiAJb3JpCXIzLCByMywgSFdfSURfQUREUkBsCiAJbGJ6ICAgICByMywweDAwMDAocjMpCiAJY21waQkwLCByMywgMSAgICAgICAgICAvKiBpZiAoSFdfSUQ9PTEpICovCi0JYmVxIAlzZXR1cF9oMmV2YWxib2FyZCAvKiB0aGVuIGp1bXAgKi8KKwliZXEJc2V0dXBfaDJldmFsYm9hcmQgLyogdGhlbiBqdW1wICovCiAJY21waQkwLCByMywgMiAgICAgICAgICAvKiBpZiAoSFdfSUQ9PTIpICovCi0JYmVxIAlzZXR1cF9nZW5pZWJvYXJkICAvKiB0aGVuIGp1bXAgKi8KKwliZXEJc2V0dXBfZ2VuaWVib2FyZCAgLyogdGhlbiBqdW1wICovCiAJY21waQkwLCByMywgMyAgICAgICAgICAvKiBpZiAoSFdfSUQ9PTMpICovCi0JYmVxIAlzZXR1cF9nZW5pZWJvYXJkICAvKiB0aGVuIGp1bXAgKi8KKwliZXEJc2V0dXBfZ2VuaWVib2FyZCAgLyogdGhlbiBqdW1wICovCiAKIHNldHVwX2dlbmllYm9hcmQ6CiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2V4Yml0Z2VuL3UtYm9vdC5sZHMgYi9ib2FyZC9leGJpdGdlbi91LWJvb3QubGRzCmluZGV4IDk5MDY4ZTcuLmU0ZmFhNDQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2V4Yml0Z2VuL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZXhiaXRnZW4vdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZhZHMvZmFkcy5oIGIvYm9hcmQvZmFkcy9mYWRzLmgKaW5kZXggZmZhNzJjYi4uMGE4Yjk4MyAxMDA2NDQKLS0tIGEvYm9hcmQvZmFkcy9mYWRzLmgKKysrIGIvYm9hcmQvZmFkcy9mYWRzLmgKQEAgLTE0Myw3ICsxNDMsNyBAQAogI2RlZmluZQlDRkdfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCiAjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCiAKLSNkZWZpbmUgQ0ZHX0xPQURfQUREUgkgCTB4MDAxMDAwMDAKKyNkZWZpbmUgQ0ZHX0xPQURfQUREUgkJMHgwMDEwMDAwMAogCiAjZGVmaW5lCUNGR19IWgkJICAgICAgICAxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KIApAQCAtMTc2LDcgKzE3Niw3IEBACiAgKi8KICNkZWZpbmUJQ0ZHX1NEUkFNX0JBU0UJCTB4MDAwMDAwMDAKICNpZiBkZWZpbmVkKENPTkZJR19NUEM4NnhBRFMpIHx8IGRlZmluZWQoQ09ORklHX01QQzg4NUFEUykgLyogTmV3IEFEUyBvciBEdWV0ICovCi0jZGVmaW5lCUNGR19TRFJBTV9TSVpFCQkweDAwODAwMDAwICAgICAgCS8qIDggTWJ5dGUgKi8KKyNkZWZpbmUJQ0ZHX1NEUkFNX1NJWkUJCTB4MDA4MDAwMDAJLyogOCBNYnl0ZSAqLwogLyoKICAqIDIwNDgJU0RSQU0gcm93cwogICogMTAwMAlmYWN0b3IgcyAtPiBtcwpAQCAtMTk1LDcgKzE5NSw3IEBACiAjaWYgKENGR19TRFJBTV9TSVpFKQogI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCUNGR19TRFJBTV9TSVpFCS8qIDEgLi4uIFNEUkFNX1NJWkUJKi8KICNlbHNlCi0jZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwNDAwMDAwICAgICAJLyogMSAuLi4gNCBNQiBpbiBEUkFNCSovCisjZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwNDAwMDAwCS8qIDEgLi4uIDQgTUIgaW4gRFJBTQkqLwogI2VuZGlmIC8qIENGR19TRFJBTV9TSVpFICovCiAKIC8qCmRpZmYgLS1naXQgYS9ib2FyZC9mYWRzL3BjbWNpYS5jIGIvYm9hcmQvZmFkcy9wY21jaWEuYwppbmRleCA1N2EyNDU0Li45OWZlMGI0IDEwMDY0NAotLS0gYS9ib2FyZC9mYWRzL3BjbWNpYS5jCisrKyBiL2JvYXJkL2ZhZHMvcGNtY2lhLmMKQEAgLTYyLDcgKzYyLDcgQEAKIAkqKCh1aW50ICopQkNTUjEpIHw9IHJlZzsKICNlbmRpZgogCi0gCSooKHVpbnQgKilCQ1NSMSkgfD0gcmVnIDw8IDIwOworCSooKHVpbnQgKilCQ1NSMSkgfD0gcmVnIDw8IDIwOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9mYWRzL3UtYm9vdC5sZHMgYi9ib2FyZC9mYWRzL3UtYm9vdC5sZHMKaW5kZXggNTFkYjQ5MC4uYzc1NzFlNCAxMDA2NDQKLS0tIGEvYm9hcmQvZmFkcy91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ZhZHMvdS1ib290LmxkcwpAQCAtMzEsMTEgKzMxLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZmFkcy91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvZmFkcy91LWJvb3QubGRzLmRlYnVnCmluZGV4IDk2YzRlMjIuLmZkMjI0NWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZhZHMvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9mYWRzL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mbGFnYWRtL3UtYm9vdC5sZHMgYi9ib2FyZC9mbGFnYWRtL3UtYm9vdC5sZHMKaW5kZXggY2E4ZmZiMC4uZjA5ODQxMiAxMDA2NDQKLS0tIGEvYm9hcmQvZmxhZ2FkbS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ZsYWdhZG0vdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZsYWdhZG0vdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2ZsYWdhZG0vdS1ib290Lmxkcy5kZWJ1ZwppbmRleCAxYTI1YTk4Li44NTA3MmZlIDEwMDY0NAotLS0gYS9ib2FyZC9mbGFnYWRtL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvZmxhZ2FkbS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9mc2xfZGl1X2ZiLmMgYi9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL2ZzbF9kaXVfZmIuYwppbmRleCAyMzM2ZjZiLi42MTg5ZWM5IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL2ZzbF9kaXVfZmIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL2ZzbF9kaXVfZmIuYwpAQCAtMTYwLDcgKzE2MCw3IEBACiAKIHN0cnVjdCBkaXVfYWRkciB7CiAJdW5zaWduZWQgY2hhciAgKiAgcGFkZHI7CS8qIFZpcnR1YWwgYWRkcmVzcyAqLwotCXVuc2lnbmVkIGludCAJICAgb2Zmc2V0OworCXVuc2lnbmVkIGludAkgICBvZmZzZXQ7CiB9OwogCiAjZGVmaW5lIEZTTF9ESVVfQkFTRV9PRkZTRVQJMHgyQzAwMAkvKiBPZmZzZXQgb2YgRGlzcGxheSBJbnRlcmZhY2UgVW5pdCAqLwpAQCAtMjg2LDcgKzI4Niw3IEBACiAJYWQtPnNyY19zaXplX2dfYWxwaGEKIAkJCT0gY3B1X3RvX2xlMzIoKHZhci0+eXJlcyA8PCAxMikgfCB2YXItPnhyZXMpOwogCS8qIGZpeCBtZS4gQU9JIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIGRpc3BsYXkgc2l6ZSAqLwotCWFkLT5hb2lfc2l6ZSAJPSBjcHVfdG9fbGUzMigoIHZhci0+eXJlcyA8PCAxNikgfCAgdmFyLT54cmVzKTsKKwlhZC0+YW9pX3NpemUJPSBjcHVfdG9fbGUzMigoIHZhci0+eXJlcyA8PCAxNikgfCAgdmFyLT54cmVzKTsKIAlhZC0+b2Zmc2V0X3h5aSA9IDA7CiAJYWQtPm9mZnNldF94eWQgPSAwOwogCkBAIC0zMjUsNyArMzI1LDcgQEAKIAlody0+Z2FtbWEgPSAodW5zaWduZWQgaW50KSBnYW1tYS5wYWRkcjsKIAlody0+Y3Vyc29yPSAodW5zaWduZWQgaW50KSBjdXJzb3IucGFkZHI7CiAJaHctPmJnbmQgPSAweDAwN0Y3RjdGOwkJCQkvKiBCR05EICovCi0JaHctPmJnbmRfd2IgPSAwOyAJCQkJLyogQkdORF9XQiAqLworCWh3LT5iZ25kX3diID0gMDsJCQkJLyogQkdORF9XQiAqLwogCWh3LT5kaXNwX3NpemUgPSB2YXItPnlyZXMgPDwgMTYgfCB2YXItPnhyZXM7CS8qIERJU1AgU0laRSAqLwogCWh3LT53Yl9zaXplID0gMDsJCQkJLyogV0IgU0laRSAqLwogCWh3LT53Yl9tZW1fYWRkciA9IDA7CQkJCS8qIFdCIE1FTSBBRERSICovCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL3BpeGlzLmMgYi9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL3BpeGlzLmMKaW5kZXggYmZmNmE4Mi4uNjRlMmUwOCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9waXhpcy5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb21tb24vcGl4aXMuYwpAQCAtMzk3LDcgKzM5Nyw3IEBACiAJICogQ2hlY2sgdGhhdCBjZiBoYXMgYWxsIHJlcXVpcmVkIHBhcm1zCiAJICovCiAJaWYgKChwX2NmICYmICEocF9jZl9zeXNjbGsgJiYgcF9jZl9jb3JlcGxsICYmIHBfY2ZfbXB4cGxsKSkKLQkgICAgfHwgCXVua25vd25fcGFyYW0pIHsKKwkgICAgfHwJdW5rbm93bl9wYXJhbSkgewogCQlwdXRzKGNtZHRwLT5oZWxwKTsKIAkJcmV0dXJuIDE7CiAJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9zeXNfZWVwcm9tLmMgYi9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL3N5c19lZXByb20uYwppbmRleCBjOGUxN2QwLi44YjEzZDA2IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL3N5c19lZXByb20uYworKysgYi9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL3N5c19lZXByb20uYwpAQCAtMzIsMTUgKzMyLDE1IEBACiAJdTggc25bMTJdOwkJLyogMHgwMDA0IC0gMHgwMDBGIFNlcmlhbCBOdW1iZXIgKi8KIAl1OCBlcnJhdGFbNV07CQkvKiAweDAwMTAgLSAweDAwMTQgRXJyYXRhIExldmVsICovCiAJdTggZGF0ZVs2XTsJCS8qIDB4MDAxNSAtIDB4MDAxYSBCdWlsZCBEYXRlICovCi0JdTggcmVzXzA7CQkvKiAweDAwMWIgCSAgIFJlc2VydmVkICovCisJdTggcmVzXzA7CQkvKiAweDAwMWIJICAgUmVzZXJ2ZWQgKi8KIAl1OCB2ZXJzaW9uWzRdOwkJLyogMHgwMDFjIC0gMHgwMDFmIFZlcnNpb24gKi8KIAl1OCB0ZW1wY2FsWzhdOwkJLyogMHgwMDIwIC0gMHgwMDI3IFRlbXBlcmF0dXJlIENhbGlicmF0aW9uIEZhY3RvcnMqLwotCXU4IHRlbXBjYWxzeXNbMl07IAkvKiAweDAwMjggLSAweDAwMjkgU3lzdGVtIFRlbXBlcmF0dXJlIENhbGlicmF0aW9uIEZhY3RvcnMqLworCXU4IHRlbXBjYWxzeXNbMl07CS8qIDB4MDAyOCAtIDB4MDAyOSBTeXN0ZW0gVGVtcGVyYXR1cmUgQ2FsaWJyYXRpb24gRmFjdG9ycyovCiAJdTggcmVzXzFbMjJdOwkJLyogMHgwMDIwIC0gMHgwMDNmIFJlc2VydmVkICovCi0JdTggbWFjX3NpemU7CQkvKiAweDAwNDAgCSAgIE1hYyB0YWJsZSBzaXplICovCi0JdTggbWFjX2ZsYWc7CQkvKiAweDAwNDEgCSAgIE1hYyB0YWJsZSBmbGFncyAqLworCXU4IG1hY19zaXplOwkJLyogMHgwMDQwCSAgIE1hYyB0YWJsZSBzaXplICovCisJdTggbWFjX2ZsYWc7CQkvKiAweDAwNDEJICAgTWFjIHRhYmxlIGZsYWdzICovCiAJdTggbWFjWzhdWzZdOwkJLyogMHgwMDQyIC0gMHgwMDcxIE1hYyBhZGRyZXNzZXMgKi8KLQl1MzIgY3JjOwkJLyogMHgwMDcyIAkgICBjcmMzMiBjaGVja3N1bSAqLworCXUzMiBjcmM7CQkvKiAweDAwNzIJICAgY3JjMzIgY2hlY2tzdW0gKi8KIH0gRUVQUk9NX2RhdGE7CiAKIHN0YXRpYyBFRVBST01fZGF0YSBtYWNfZGF0YTsKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTIyNzdldmIvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTIyNzdldmIvdS1ib290LmxkcwppbmRleCA5ZmRhMGNhLi4wOThlOWQzIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTUyMjc3ZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201MjI3N2V2Yi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL3UtYm9vdC4xNiBiL2JvYXJkL2ZyZWVzY2FsZS9tNTIzNWV2Yi91LWJvb3QuMTYKaW5kZXggYzhjMjE1Yy4uNGNhMDI2ZiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL3UtYm9vdC4xNgorKysgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvdS1ib290LjE2CkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL3UtYm9vdC4zMiBiL2JvYXJkL2ZyZWVzY2FsZS9tNTIzNWV2Yi91LWJvb3QuMzIKaW5kZXggOTViMTBjNy4uZWVmZmRmYiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL3UtYm9vdC4zMgorKysgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvdS1ib290LjMyCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201MjM1ZXZiL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvdS1ib290LmxkcwppbmRleCBiYTA3NDI2Li4zMzEzM2EwIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbTUyMzVldmIvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTI0OWV2Yi91LWJvb3QubGRzIGIvYm9hcmQvZnJlZXNjYWxlL201MjQ5ZXZiL3UtYm9vdC5sZHMKaW5kZXggZDIxZWNkNC4uYWZkYjcyMCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201MjQ5ZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201MjQ5ZXZiL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbTUyNTNldmJlL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbTUyNTNldmJlL3UtYm9vdC5sZHMKaW5kZXggMDg5ZGMxMC4uNmQyMjVmNSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201MjUzZXZiZS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTI1M2V2YmUvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201Mjc1ZXZiL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbTUyNzVldmIvdS1ib290LmxkcwppbmRleCA1MWMwMDhmLi5kODEwZWJjIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTUyNzVldmIvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbTUyNzVldmIvdS1ib290LmxkcwpAQCAtNDksNyArNDksNyBAQAogICAucmVsLnBsdCAgICAgICA6IHsgKigucmVsLnBsdCkJfQogICAucmVsYS5wbHQgICAgICA6IHsgKigucmVsYS5wbHQpCX0KICAgLmluaXQgICAgICAgICAgOiB7ICooLmluaXQpCQl9Ci0gIC5wbHQgICAgICAgICAgIDogeyAqKC5wbHQpIAkJfQorICAucGx0ICAgICAgICAgICA6IHsgKigucGx0KQkJfQogICAudGV4dCAgICAgIDoKICAgewogICAgIC8qIFdBUk5JTkcgLSB0aGUgZm9sbG93aW5nIGlzIGhhbmQtb3B0aW1pemVkIHRvIGZpdCB3aXRoaW4JKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTMyOWV2Yi91LWJvb3QubGRzIGIvYm9hcmQvZnJlZXNjYWxlL201MzI5ZXZiL3UtYm9vdC5sZHMKaW5kZXggY2Y5NzMwZC4uMWRkZmJjNCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201MzI5ZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201MzI5ZXZiL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbTUzNzNldmIvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTM3M2V2Yi91LWJvb3QubGRzCmluZGV4IDQ3ZTFmNjcuLmQzMGE0MDEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tNTM3M2V2Yi91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTM3M2V2Yi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi91LWJvb3QuYXRtIGIvYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi91LWJvb3QuYXRtCmluZGV4IDY1NjJmZDEuLjIyYzYwNDggMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tNTQ0NTVldmIvdS1ib290LmF0bQorKysgYi9ib2FyZC9mcmVlc2NhbGUvbTU0NDU1ZXZiL3UtYm9vdC5hdG0KQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbTU0NDU1ZXZiL3UtYm9vdC5pbnQgYi9ib2FyZC9mcmVlc2NhbGUvbTU0NDU1ZXZiL3UtYm9vdC5pbnQKaW5kZXggNzBjYjdlMi4uNGQ1MDRhMiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi91LWJvb3QuaW50CisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTQ0NTVldmIvdS1ib290LmludApAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTQ0NTVldmIvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tNTQ0NTVldmIvdS1ib290LmxkcwppbmRleCBjMGNhNDUxLi4xYWE1M2MyIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTU0NDU1ZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL201NDd4ZXZiL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbTU0N3hldmIvdS1ib290LmxkcwppbmRleCBmODdlNGJlLi5jYzdmM2ViIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbTU0N3hldmIvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbTU0N3hldmIvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tNTQ4eGV2Yi91LWJvb3QubGRzIGIvYm9hcmQvZnJlZXNjYWxlL201NDh4ZXZiL3UtYm9vdC5sZHMKaW5kZXggZjg3ZTRiZS4uY2M3ZjNlYiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL201NDh4ZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL201NDh4ZXZiL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjNzQ0OGhwYzIvYXNtX2luaXQuUyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi9hc21faW5pdC5TCmluZGV4IGE3YTQwYTEuLjUyMTMwMWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi9hc21faW5pdC5TCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi9hc21faW5pdC5TCkBAIC00MTUsNyArNDE1LDcgQEAKICNpZmRlZiBTRENfQVVUT1BSRUNIX0VOCiAJb3JpcwlyNSxyNSwweDAwMDEJCS8qIHNldCBhdXRvIHByZWNoYXJnZSBFTiBiaXQgKi8KICNlbmRpZgotCXN0dyAJcjUsU0RfRDBfQ1RSTChyNCkKKwlzdHcJcjUsU0RfRDBfQ1RSTChyNCkKIAlMT0FEX1UzMihyNSxWQUxfU0RfRDBfQkFSKQogCXN0dwlyNSxTRF9EMF9CQVIocjQpCiAJc3luYwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzc0NDhocGMyL3RzaTEwOF9pbml0LmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjNzQ0OGhwYzIvdHNpMTA4X2luaXQuYwppbmRleCAzMGFlMTdkLi5lZmE5NTJjIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjNzQ0OGhwYzIvdHNpMTA4X2luaXQuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjNzQ0OGhwYzIvdHNpMTA4X2luaXQuYwpAQCAtNjE2LDcgKzYxNiw3IEBACiAJCTB4ODAyZTAwNDQpOwkvKiBEPTAuMjUlICovCiAJb3V0MzIgKENGR19UU0kxMDhfQ1NSX0JBU0UgKwogCQlUU0kxMDhfQ0xLX1JFR19PRkZTRVQgKyBDR19QTEwwX0NUUkwwLAotCSAJMHg4MDAwMDAwMCB8IHBsbDBfY29uZmlnW2ldLmN0cmwwKTsKKwkJMHg4MDAwMDAwMCB8IHBsbDBfY29uZmlnW2ldLmN0cmwwKTsKICNlbmRpZgkvKiBDRkdfQ0xLX1NQUkVBRCAqLwogCiAjaWZkZWYgQ0ZHX0wyCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjNzQ0OGhwYzIvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi91LWJvb3QubGRzCmluZGV4IDc3ZGZhZDYuLjZiMjI4ZjcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM3NDQ4aHBjMi91LWJvb3QubGRzCkBAIC0zNywxMSArMzcsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzgyNjBhZHMvbXBjODI2MGFkcy5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgyNjBhZHMvbXBjODI2MGFkcy5jCmluZGV4IDkzNTUwZTIuLjU0OGQ4MTMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MjYwYWRzL21wYzgyNjBhZHMuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODI2MGFkcy9tcGM4MjYwYWRzLmMKQEAgLTM0MCw3ICszNDAsNyBAQAogI2lmIENPTkZJR19BRFNUWVBFID09IENGR19QUTJGQURTIC8qIENTMyAqLwogCQltZW1jdGwtPm1lbWNfb3IzICAgPSAweEZGODAzMjgwOwogCQltZW1jdGwtPm1lbWNfYnIzICAgPSBDRkdfTFNEUkFNX0JBU0UgfCAweDAwMDAxODYxOwotI2Vsc2UgIAkJCQkgIC8qIENTNCAqLworI2Vsc2UJCQkJICAvKiBDUzQgKi8KIAkJbWVtY3RsLT5tZW1jX29yNCAgID0gMHhGRkMwMTQ4MDsKIAkJbWVtY3RsLT5tZW1jX2JyNCAgID0gQ0ZHX0xTRFJBTV9CQVNFIHwgMHgwMDAwMTg2MTsKICNlbmRpZiAvKiBDT05GSUdfQURTVFlQRSA9PSBDRkdfUFEyRkFEUyAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzNDllbWRzL3BjaS5jIGIvYm9hcmQvZnJlZXNjYWxlL21wYzgzNDllbWRzL3BjaS5jCmluZGV4IDU2NGU0MzYuLmVjYzY3YjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzQ5ZW1kcy9wY2kuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM0OWVtZHMvcGNpLmMKQEAgLTQzLDcgKzQzLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGNpX2NvbmZpZ190YWJsZSBwY2lfbXBjODM0OWVtZHNfY29uZmlnX3RhYmxlW10gPSB7CiAJe1BDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsCiAJIFBDSV9JRFNFTF9OVU1CRVIsIFBDSV9BTllfSUQsCi0gCSBwY2lfY2ZnZnVuY19jb25maWdfZGV2aWNlLCB7UENJX0VORVQwX0lPQUREUiwKKwkgcGNpX2NmZ2Z1bmNfY29uZmlnX2RldmljZSwge1BDSV9FTkVUMF9JT0FERFIsCiAJCQkJICAgICBQQ0lfRU5FVDBfTUVNQUREUiwKIAkJCQkgICAgIFBDSV9DT01NQU5EX01FTU9SWSB8IFBDSV9DT01NQU5EX01BU1RFUgogCQl9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODM0OWl0eC9tcGM4MzQ5aXR4LmMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODM0OWl0eC9tcGM4MzQ5aXR4LmMKaW5kZXggNzA0Zjk2My4uMDMxN2JmZSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzgzNDlpdHgvbXBjODM0OWl0eC5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzQ5aXR4L21wYzgzNDlpdHguYwpAQCAtMjczLDEzICsyNzMsMTMgQEAKIAlzdGF0aWMgdTggZWVwcm9tX2RhdGFbXSA9CS8qIEhSQ1cgZGF0YSAqLwogCXsKIAkJMHhBQSwgMHg1NSwgMHhBQSwgICAgICAgLyogUHJlYW1ibGUgKi8KLQkJMHg3QywgCQkgICAgICAgIC8qIEFDUz0wLCBCWVRFX0VOPTExMTEsIENPTlQ9MSAqLwotCQkweDAyLCAweDQwLCAJICAgICAgICAvKiBSQ1dMIEFERFI9MHgwXzA5MDAgKi8KKwkJMHg3QywJCSAgICAgICAgLyogQUNTPTAsIEJZVEVfRU49MTExMSwgQ09OVD0xICovCisJCTB4MDIsIDB4NDAsCSAgICAgICAgLyogUkNXTCBBRERSPTB4MF8wOTAwICovCiAJCShDRkdfSFJDV19MT1cgPj4gMjQpICYgMHhGRiwKIAkJKENGR19IUkNXX0xPVyA+PiAxNikgJiAweEZGLAogCQkoQ0ZHX0hSQ1dfTE9XID4+IDgpICYgMHhGRiwKIAkJQ0ZHX0hSQ1dfTE9XICYgMHhGRiwKLQkJMHg3QywgCQkgICAgICAgIC8qIEFDUz0wLCBCWVRFX0VOPTExMTEsIENPTlQ9MSAqLworCQkweDdDLAkJICAgICAgICAvKiBBQ1M9MCwgQllURV9FTj0xMTExLCBDT05UPTEgKi8KIAkJMHgwMiwgMHg0MSwJICAgICAgICAvKiBSQ1dIIEFERFI9MHgwXzA5MDQgKi8KIAkJKENGR19IUkNXX0hJR0ggPj4gMjQpICYgMHhGRiwKIAkJKENGR19IUkNXX0hJR0ggPj4gMTYpICYgMHhGRiwKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MGFkcy91LWJvb3QubGRzCmluZGV4IDA3NWQ4ZjMuLmYyMDA4MTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQwYWRzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDBhZHMvdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQxY2RzL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0MWNkcy91LWJvb3QubGRzCmluZGV4IGQwYmE0M2MuLjVmNGRjZjAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQxY2RzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDFjZHMvdS1ib290LmxkcwpAQCAtNDIsMTEgKzQyLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ0ZHMvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ0ZHMvdS1ib290LmxkcwppbmRleCBiNTUxMzM5Li43ODVhMDA2IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU0NGRzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDRkcy91LWJvb3QubGRzCkBAIC00MiwxMSArNDIsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTQ4Y2RzL3UtYm9vdC5sZHMKaW5kZXggMDNmNjJiOC4uZWJhN2U4YSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NDhjZHMvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU0OGNkcy91LWJvb3QubGRzCkBAIC00MiwxMSArNDIsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NTVjZHMvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTU1Y2RzL3UtYm9vdC5sZHMKaW5kZXggZDBiYTQzYy4uNWY0ZGNmMCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NTVjZHMvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU1NWNkcy91LWJvb3QubGRzCkBAIC00MiwxMSArNDIsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTYwYWRzL3UtYm9vdC5sZHMKaW5kZXggMzE0MTJlMy4uY2IzMGVhOSAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjBhZHMvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2MGFkcy91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvYmNzci5oIGIvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvYmNzci5oCmluZGV4IGY3ZjcwYmMuLjA0NjAyNWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL2Jjc3IuaAorKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OG1kcy9iY3NyLmgKQEAgLTMyLDggKzMyLDggQEAKIAk3CWNmZyBib290IHNlcQogCiAJKiBCQ1NSIDEgKgotCTA6MiAJY2ZnIHJvbSBsb2NrCi0JMzo1IAljZmcgaG9zdCBhZ2VudAorCTA6MgljZmcgcm9tIGxvY2sKKwkzOjUJY2ZnIGhvc3QgYWdlbnQKIAk2CVBDSSBJTwogCTcJY2ZnIFJJTyBzaXplCiAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAkwCVRTRUMxIHJlZHVjZQogCTEJVFNFQzIgcmVkdWNlCiAJMjozCVRTRUMxIHByb3RvY29sCi0JNDo1IAlUU0VDMiBwcm90b2NvbAorCTQ6NQlUU0VDMiBwcm90b2NvbAogCTYJUEhZMSBzbGF2ZQogCTcJUEhZMiBzbGF2ZQogCkBAIC03MCw5ICs3MCw5IEBACiAJNwlQb3dlciBvbiByZXNldAogCiAJKiBCQ1NSIDcgKgotCTIgCWJvYXJkIGhvc3QgbW9kZSBpbmRpY2F0aW9uCi0JNSAJZW5hYmxlIFRTRUMxIFBIWQotCTYgCWVuYWJsZSBUU0VDMiBQSFkKKwkyCWJvYXJkIGhvc3QgbW9kZSBpbmRpY2F0aW9uCisJNQllbmFibGUgVFNFQzEgUEhZCisJNgllbmFibGUgVFNFQzIgUEhZCiAKIAkqIEJDU1IgOCAqCiAJMAlVQ0MgR0VUSDEgZW5hYmxlCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OG1kcy90bGIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL3RsYi5jCmluZGV4IGE4NjZjNTIuLjc1NjUxNzYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL3RsYi5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL3RsYi5jCkBAIC02Miw3ICs2Miw3IEBACiAJLyoKIAkgKiBUTEJlIDI6CTFHCU5vbi1jYWNoZWFibGUsIGd1YXJkZWQKIAkgKiAweDgwMDAwMDAwCTUxMk0JUENJMSBNRU0KLQkgKiAweGEwMDAwMDAwIAk1MTJNCVBDSWUgTUVNCisJICogMHhhMDAwMDAwMAk1MTJNCVBDSWUgTUVNCiAJICovCiAJU0VUX1RMQl9FTlRSWSgxLCBDRkdfUENJMV9NRU1fUEhZUywgQ0ZHX1BDSTFfTUVNX1BIWVMsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLApkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvdS1ib290LmxkcyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NTY4bWRzL3UtYm9vdC5sZHMKaW5kZXggNDBmNmQzYi4uMWI4MzgzNCAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL21wYzg1NjhtZHMvdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODU2OG1kcy91LWJvb3QubGRzCkBAIC00NSwxMSArNDUsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL21wYzg2NDFocGNuL3UtYm9vdC5sZHMgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vdS1ib290LmxkcwppbmRleCAwNmQ0OTFiLi40Zjg4NGY5IDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vdS1ib290LmxkcworKysgYi9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vdS1ib290LmxkcwpAQCAtMzEsMTEgKzMxLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2cyMDAwL3UtYm9vdC5sZHMgYi9ib2FyZC9nMjAwMC91LWJvb3QubGRzCmluZGV4IDE5NmY4OGMuLmQ3MGQzNzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2cyMDAwL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZzIwMDAvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvUkVBRE1FIGIvYm9hcmQvZ2VuODYwdC9SRUFETUUKaW5kZXggNzIwNWFmYi4uZTIwNjgwZCAxMDA2NDQKLS0tIGEvYm9hcmQvZ2VuODYwdC9SRUFETUUKKysrIGIvYm9hcmQvZ2VuODYwdC9SRUFETUUKQEAgLTE0Miw1ICsxNDIsMyBAQAogTWljcm92aXNpb24sIEluYy4KIDxrZWl0aF9vdXR3YXRlckBtdmlzLmNvbT4KIDxvdXR3YXRlckBlc2tpbW8uY29tPgotCi12aW06IHNldCB0cz00IHN3PTQgdHc9Nzg6CmRpZmYgLS1naXQgYS9ib2FyZC9nZW44NjB0L2JlZXBlci5jIGIvYm9hcmQvZ2VuODYwdC9iZWVwZXIuYwppbmRleCA0NmZlNjZiLi5iNGMyYzg5IDEwMDY0NAotLS0gYS9ib2FyZC9nZW44NjB0L2JlZXBlci5jCisrKyBiL2JvYXJkL2dlbjg2MHQvYmVlcGVyLmMKQEAgLTM0LDcgKzM0LDYgQEAKICAqIGRyaXZlcyB0aGUgYW1wbGlmaWVyIGlucHV0LgogICovCiAKLQogLyoKICAqIEluaXRpYWxpemUgYmVlcGVyLXJlbGF0ZWQgaGFyZHdhcmUuIEluaXRpYWxpemUgdGltZXIgMSBmb3IgdXNlIHdpdGgKICAqIHRoZSBiZWVwZXIuIFVzZSA2NiBNaHogaW50ZXJuYWwgY2xvY2sgd2l0aCBwcmVzY2FsZSBvZiAzMyB0byBnZXQKQEAgLTQyLDY2ICs0MSw1OSBAQAogICogRklYTUU6IHdlIHNob3VsZCByZWFsbHkgY29tcHV0ZSB0aGUgcHJlc2NhbGUgYmFzZWQgb24gdGhlIHJlcG9ydGVkCiAgKiBjb3JlIGNsb2NrIGZyZXF1ZW5jeS4KICAqLwotdm9pZAotaW5pdF9iZWVwZXIodm9pZCkKK3ZvaWQgaW5pdF9iZWVwZXIgKHZvaWQpCiB7Ci0gICAgdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgID0gKGltbWFwX3QgKilDRkdfSU1NUjsKKwl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENGR19JTU1SOwogCiAJaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdGdjciAmPSB+VEdDUl9SU1QxIHwgVEdDUl9TVFAxOwogCWltbWFwLT5pbV9jcG10aW1lci5jcG10X3RtcjEgPSAoKDMzIDw8IFRNUl9QU19TSElGVCkgJiBUTVJfUFNfTVNLKQotCQkJCQkJCQkgfCBUTVJfT00gfCBUTVJfRlJSIHwgVE1SX0lDTEtfSU5fR0VOOworCQl8IFRNUl9PTSB8IFRNUl9GUlIgfCBUTVJfSUNMS19JTl9HRU47CiAJaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdGNuMSA9IDA7CiAJaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdGVyMSA9IDB4ZmZmZjsKIAlpbW1hcC0+aW1fY3BtdGltZXIuY3BtdF90Z2NyIHw9IFRHQ1JfUlNUMTsKIH0KIAotCiAvKgogICogU2V0IGJlZXBlciBmcmVxdWVuY3kuICBNYXggYWxsb3dlZCBmcmVxdWVuY3kgaXMgMi41IEtIei4gIFRoaXMgbGltaXQKICAqIGlzIG1vc3RseSBhcmJpdHJhcnksIGJ1dCB0aGUgYmVlcGVyIGlzbid0IHJlYWxseSBtdWNoIGdvb2QgYmV5b25kIHRoaXMKICAqIGZyZXF1ZW5jeS4KICAqLwotdm9pZAotc2V0X2JlZXBlcl9mcmVxdWVuY3kodWludCBmcmVxdWVuY3kpCit2b2lkIHNldF9iZWVwZXJfZnJlcXVlbmN5ICh1aW50IGZyZXF1ZW5jeSkKIHsKICNkZWZpbmUgRlJFUV9MSU1JVAkyNTAwCiAKLSAgICB2b2xhdGlsZSBpbW1hcF90ICppbW1hcCAgPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CiAKIAkvKgogCSAqIENvbXB1dGUgdGltZXIgdGlja3MgZ2l2ZW4gZGVzaXJlZCBmcmVxdWVuY3kuICBUaGUgdGltZXIgaXMgc2V0IHVwCiAJICogdG8gY291bnQgMC41IHVTIHBlciB0aWNrIGFuZCBpdCB0YWtlcyB0d28gdGlja3MgcGVyIGN5Y2xlIChIeikuCiAJICovCi0JaWYgKGZyZXF1ZW5jeSA+IEZSRVFfTElNSVQpIGZyZXF1ZW5jeSA9IEZSRVFfTElNSVQ7Ci0JZnJlcXVlbmN5ID0gMTAwMDAwMC9mcmVxdWVuY3k7Ci0JaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdHJyMSA9ICh1c2hvcnQpZnJlcXVlbmN5OworCWlmIChmcmVxdWVuY3kgPiBGUkVRX0xJTUlUKQorCQlmcmVxdWVuY3kgPSBGUkVRX0xJTUlUOworCWZyZXF1ZW5jeSA9IDEwMDAwMDAgLyBmcmVxdWVuY3k7CisJaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdHJyMSA9ICh1c2hvcnQpIGZyZXF1ZW5jeTsKIH0KIAotCiAvKgogICogVHVybiB0aGUgYmVlcGVyIG9uCiAgKi8KLXZvaWQKLWJlZXBlcl9vbih2b2lkKQordm9pZCBiZWVwZXJfb24gKHZvaWQpCiB7Ci0gICAgdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgID0gKGltbWFwX3QgKilDRkdfSU1NUjsKKwl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENGR19JTU1SOwogCiAJaW1tYXAtPmltX2NwbXRpbWVyLmNwbXRfdGdjciAmPSB+VEdDUl9TVFAxOwogfQogCi0KIC8qCiAgKiBUdXJuIHRoZSBiZWVwZXIgb2ZmCiAgKi8KLXZvaWQKLWJlZXBlcl9vZmYodm9pZCkKK3ZvaWQgYmVlcGVyX29mZiAodm9pZCkKIHsKLSAgICB2b2xhdGlsZSBpbW1hcF90ICppbW1hcCAgPSAoaW1tYXBfdCAqKUNGR19JTU1SOworCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ0ZHX0lNTVI7CiAKIAlpbW1hcC0+aW1fY3BtdGltZXIuY3BtdF90Z2NyIHw9IFRHQ1JfU1RQMTsKIH0KIAotCiAvKgogICogSW5jcmVhc2Ugb3IgZGVjcmVhc2UgdGhlIGJlZXBlciB2b2x1bWUuICBWb2x1bWUgY2FuIGJlIHNldAogICogZnJvbSBvZmYgdG8gZnVsbCBpbiA2NCBzdGVwcy4gIFRvIGluY3JlYXNlIHZvbHVtZSwgdGhlIG91dHB1dApAQCAtMTEwLDc1ICsxMDIsNzEgQEAKICAqIGNoYW5nZSBwaW4gbW9kZSB0byB0cmlzdGF0ZSkgdGhlbiBvdXRwdXQgYSBoaWdoIHRvIGdvIGJhY2sgdG8KICAqIHRyaXN0YXRlLgogICovCi12b2lkCi1zZXRfYmVlcGVyX3ZvbHVtZShpbnQgc3RlcHMpCit2b2lkIHNldF9iZWVwZXJfdm9sdW1lIChpbnQgc3RlcHMpCiB7Ci0gICAgdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgID0gKGltbWFwX3QgKilDRkdfSU1NUjsKKwl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENGR19JTU1SOwogCWludCBpOwogCiAJaWYgKHN0ZXBzID49IDApIHsKIAkJZm9yIChpID0gMDsgaSA8IChzdGVwcyA+PSA2NCA/IDY0IDogc3RlcHMpOyBpKyspIHsKIAkJCWltbWFwLT5pbV9jcG0uY3BfcGJvZHIgJj0gfigweDgwMDAwMDAwID4+IDE5KTsKLQkJCXVkZWxheSgxKTsKKwkJCXVkZWxheSAoMSk7CiAJCQlpbW1hcC0+aW1fY3BtLmNwX3Bib2RyIHw9ICgweDgwMDAwMDAwID4+IDE5KTsKLQkJCXVkZWxheSgxKTsKKwkJCXVkZWxheSAoMSk7CiAJCX0KLQl9Ci0JZWxzZSB7CisJfSBlbHNlIHsKIAkJZm9yIChpID0gMDsgaSA+IChzdGVwcyA8PSAtNjQgPyAtNjQgOiBzdGVwcyk7IGktLSkgewogCQkJaW1tYXAtPmltX2NwbS5jcF9wYmRhdCAmPSB+KDB4ODAwMDAwMDAgPj4gMTkpOwotCQkJdWRlbGF5KDEpOworCQkJdWRlbGF5ICgxKTsKIAkJCWltbWFwLT5pbV9jcG0uY3BfcGJkYXQgfD0gKDB4ODAwMDAwMDAgPj4gMTkpOwotCQkJdWRlbGF5KDEpOworCQkJdWRlbGF5ICgxKTsKIAkJfQogCX0KIH0KIAotCiAvKgogICogQ2hlY2sgdGhlIGVudmlyb25tZW50IHRvIHNlZSBpZiB0aGUgYmVlcGVyIG5lZWRzIGJlZXBpbmcuCiAgKiBDb250cm9sbGVkIGJ5IGEgc2VxdWVuY2Ugb2YgdGhlIGZvcm06CiAgKiBmcmVxL2RlbHRhIHZvbHVtZS9vbiB0aW1lL29mZiB0aW1lOy4uLiB3aGVyZToKLSAqIGZyZXEgCQk9IGZyZXF1ZW5jeSBpbiBIeiAoMCAtIDI1MDApCisgKiBmcmVxCQkJPSBmcmVxdWVuY3kgaW4gSHogKDAgLSAyNTAwKQogICogZGVsdGEgdm9sdW1lID0gdm9sdW1lIHN0ZXBzIHVwIG9yIGRvd24gKC02NCA8PSB2b2wgPD0gNjQpCiAgKiBvbiB0aW1lCQk9IHRpbWUgaW4gbVMKICAqIG9mZiB0aW1lCQk9IHRpbWUgaW4gbVMKICAqCiAgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUKICAqLwotaW50Ci1kb19iZWVwZXIoY2hhciAqc2VxdWVuY2UpCitpbnQgZG9fYmVlcGVyIChjaGFyICpzZXF1ZW5jZSkKIHsKICNkZWZpbmUgREVMSU1JVEVSCSc7JwogCi1pbnQgYXJnc1s0XTsKLWludCBpOwotaW50IHZhbDsKLWNoYXIgKnAgPSBzZXF1ZW5jZTsKLWNoYXIgKnRwOworCWludCBhcmdzWzRdOworCWludCBpOworCWludCB2YWw7CisJY2hhciAqcCA9IHNlcXVlbmNlOworCWNoYXIgKnRwOwogCiAJLyoKIAkgKiBQYXJzZSB0aGUgY29udHJvbCBzZXF1ZW5jZS4gIFRoaXMgaXMgYSByZWFsbHkgc2ltcGxlIHBhcnNlcgogCSAqIHdpdGhvdXQgYW55IHJlYWwgZXJyb3IgY2hlY2tpbmcuICBZb3UgY2FuIHByb2JhYmx5IGJsb3cgaXQKIAkgKiB1cCByZWFsbHkgZWFzaWx5LgogCSAqLwotCWlmICgqcCA9PSAnXDAnIHx8ICFpc2RpZ2l0KCpwKSkgewotCQlwcmludGYoIiVzOiVkOiBudWxsIG9yIGludmFsaWQgc3RyaW5nICglcylcbiIsCi0JCQkJX19GSUxFX18sIF9fTElORV9fLCBwKTsKKwlpZiAoKnAgPT0gJ1wwJyB8fCAhaXNkaWdpdCAoKnApKSB7CisJCXByaW50ZiAoIiVzOiVkOiBudWxsIG9yIGludmFsaWQgc3RyaW5nICglcylcbiIsCisJCQlfX0ZJTEVfXywgX19MSU5FX18sIHApOwogCQlyZXR1cm4gMDsKIAl9CiAKIAlpID0gMDsKIAl3aGlsZSAoKnAgIT0gJ1wwJykgewogCQl3aGlsZSAoKnAgIT0gREVMSU1JVEVSKSB7Ci0JCQlpZiAoaSA+IDMpIGkgPSAwOwotCQkJdmFsID0gKGludCkgc2ltcGxlX3N0cnRvbChwLCAmdHAsIDApOworCQkJaWYgKGkgPiAzKQorCQkJCWkgPSAwOworCQkJdmFsID0gKGludCkgc2ltcGxlX3N0cnRvbCAocCwgJnRwLCAwKTsKIAkJCWlmICh0cCA9PSBwKSB7Ci0JCQkJcHJpbnRmKCIlczolZDogbm8gZGlnaXRzIG9yIGJhZCBmb3JtYXRcbiIsCi0JCQkJCQkJCV9fRklMRV9fLF9fTElORV9fKTsKKwkJCQlwcmludGYgKCIlczolZDogbm8gZGlnaXRzIG9yIGJhZCBmb3JtYXRcbiIsCisJCQkJCV9fRklMRV9fLCBfX0xJTkVfXyk7CiAJCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCQllbHNlIHsKKwkJCX0gZWxzZSB7CiAJCQkJYXJnc1tpXSA9IHZhbDsKIAkJCX0KIApAQCAtMTk1LDE5ICsxODMsMTcgQEAKIAkJICovCiAjaWYgMAogCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0JCQlwcmludGYoIiVzOiVkOmFyZyAlZCA9ICVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGksIGFyZ3NbaV0pOworCQkJcHJpbnRmICgiJXM6JWQ6YXJnICVkID0gJWRcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgaSwKKwkJCQlhcmdzW2ldKTsKIAkJfQotCQlwcmludGYoIlxuIik7CisJCXByaW50ZiAoIlxuIik7CiAjZW5kaWYKLQotCQlzZXRfYmVlcGVyX2ZyZXF1ZW5jeShhcmdzWzBdKTsKLQkJc2V0X2JlZXBlcl92b2x1bWUoYXJnc1sxXSk7Ci0JCWJlZXBlcl9vbigpOwotCQl1ZGVsYXkoMTAwMCAqIGFyZ3NbMl0pOwotCQliZWVwZXJfb2ZmKCk7Ci0JCXVkZWxheSgxMDAwICogYXJnc1szXSk7CisJCXNldF9iZWVwZXJfZnJlcXVlbmN5IChhcmdzWzBdKTsKKwkJc2V0X2JlZXBlcl92b2x1bWUgKGFyZ3NbMV0pOworCQliZWVwZXJfb24gKCk7CisJCXVkZWxheSAoMTAwMCAqIGFyZ3NbMl0pOworCQliZWVwZXJfb2ZmICgpOworCQl1ZGVsYXkgKDEwMDAgKiBhcmdzWzNdKTsKIAl9CiAJcmV0dXJuIDE7CiB9Ci0KLS8qIHZpbTogc2V0IHRzPTQgc3c9NCB0dz03ODogKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvYmVlcGVyLmggYi9ib2FyZC9nZW44NjB0L2JlZXBlci5oCmluZGV4IDUzNWVlNmMuLjEyNWI5MGYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2dlbjg2MHQvYmVlcGVyLmgKKysrIGIvYm9hcmQvZ2VuODYwdC9iZWVwZXIuaApAQCAtMjcsNSArMjcsMyBAQAogdm9pZCBiZWVwZXJfb2ZmKHZvaWQpOwogdm9pZCBzZXRfYmVlcGVyX3ZvbHVtZShpbnQgc3RlcHMpOwogaW50IGRvX2JlZXBlcihjaGFyICpzZXF1ZW5jZSk7Ci0KLS8qIHZpbTogc2V0IHRzPTQgdHc9Nzggc3c9NDogKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvZmxhc2guYyBiL2JvYXJkL2dlbjg2MHQvZmxhc2guYwppbmRleCBlYzMyZDA3Li4xM2ZhYWYzIDEwMDY0NAotLS0gYS9ib2FyZC9nZW44NjB0L2ZsYXNoLmMKKysrIGIvYm9hcmQvZ2VuODYwdC9mbGFzaC5jCkBAIC0xNTYsOSArMTU2LDkgQEAKIAkgKiBNb25pdG9yIHByb3RlY3Rpb24gaXMgT04gYnkgZGVmYXVsdAogCSAqLwogCWZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKLQkJICAgICAgCSAgQ0ZHX01PTklUT1JfQkFTRSwKLQkJICAgICAgCSAgQ0ZHX01PTklUT1JfQkFTRSArIG1vbml0b3JfZmxhc2hfbGVuIC0gMSwKLQkJICAgICAgCSAgJmZsYXNoX2luZm9bMF0pOworCQkJICBDRkdfTU9OSVRPUl9CQVNFLAorCQkJICBDRkdfTU9OSVRPUl9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gLSAxLAorCQkJICAmZmxhc2hfaW5mb1swXSk7CiAjZW5kaWYKIAogI2lmZGVmCUNGR19FTlZfSVNfSU5fRkxBU0gKQEAgLTE2Niw5ICsxNjYsOSBAQAogCSAqIEVudmlyb25tZW50IHByb3RlY3Rpb24gT04gYnkgZGVmYXVsdAogCSAqLwogCWZsYXNoX3Byb3RlY3QoRkxBR19QUk9URUNUX1NFVCwKLQkJICAgICAgCSAgQ0ZHX0VOVl9BRERSLAotCQkgICAgICAJICBDRkdfRU5WX0FERFIgKyBDRkdfRU5WX1NFQ1RfU0laRSAtIDEsCi0JCSAgICAgIAkgICZmbGFzaF9pbmZvWzBdKTsKKwkJCSAgQ0ZHX0VOVl9BRERSLAorCQkJICBDRkdfRU5WX0FERFIgKyBDRkdfRU5WX1NFQ1RfU0laRSAtIDEsCisJCQkgICZmbGFzaF9pbmZvWzBdKTsKICNlbmRpZgogCiAJUFJJTlRGKCIjIyBGaW5hbCBGbGFzaCBiYW5rIHNpemU6IDB4JTA4bHhcbiIsc2l6ZV9iMCk7CkBAIC0xOTAsMTQgKzE5MCwxNCBAQAogCiAJc3dpdGNoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSB7CiAJCWNhc2UgRkxBU0hfTUFOX0lOVEVMOgotCSAgICAJZm9yIChpID0gMDsgaSA8IGluZm8tPnNlY3Rvcl9jb3VudDsgaSsrKSB7CisJCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5zZWN0b3JfY291bnQ7IGkrKykgewogCQkJCWluZm8tPnN0YXJ0W2ldID0gYmFzZTsKIAkJCQliYXNlICs9IDEwMjQgKiAxMjg7Ci0JICAgIAl9Ci0JICAgIAlyZXR1cm47CisJCX0KKwkJcmV0dXJuOwogCiAJCWRlZmF1bHQ6Ci0JICAgCQlwcmludGYgKCJEb24ndCBrbm93IHNlY3RvciBvZmZzZXRzIGZvciBGTEFTSCIKKwkJCXByaW50ZiAoIkRvbid0IGtub3cgc2VjdG9yIG9mZnNldHMgZm9yIEZMQVNIIgogCQkJICAgICAgICAiIHR5cGUgMHglbHhcbiIsIGluZm8tPmZsYXNoX2lkKTsKIAkgICAgcmV0dXJuOwogCX0KQEAgLTQzNiw3ICs0MzYsNyBAQAogCSAqIFdlIGFzc3VtZSB0aGF0IHRoZSBibG9jayBkb2VzIG5vdCBjcm9zcyBhIGJvdW5kYXJ5ICh3ZSdsbCBjaGVjayBiZWZvcmUKIAkgKiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24pLgogCSAqLwotIAlmb3IgKGkgPSAwOyBpIDwgaW5mb19wLT5zZWN0b3JfY291bnQ7ICsraSkgeworCWZvciAoaSA9IDA7IGkgPCBpbmZvX3AtPnNlY3Rvcl9jb3VudDsgKytpKSB7CiAJCWlmICggKCh1bG9uZylkZXN0X3AgPj0gaW5mb19wLT5zdGFydFtpXSkgJiYKIAkJICAgICgodWxvbmcpZGVzdF9wIDwgKGluZm9fcC0+c3RhcnRbaV0gKyBibG9ja3NpemUpKSApIHsKIAkJCVBSSU5URigiJXM6JWQ6IERlc3QgYWRkciAweCVwIGlzIGluIGJsb2NrICVkIEAgMHglLjhseFxuIiwKZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvZnBnYS5jIGIvYm9hcmQvZ2VuODYwdC9mcGdhLmMKaW5kZXggMzgxNmU1Mi4uMWU2YmRmMSAxMDA2NDQKLS0tIGEvYm9hcmQvZ2VuODYwdC9mcGdhLmMKKysrIGIvYm9hcmQvZ2VuODYwdC9mcGdhLmMKQEAgLTM3Niw1ICszNzYsMyBAQAogCXJldHVybiAwOwogfQogI2VuZGlmCi0KLS8qIHZpbTogc2V0IHRzPTQgdHc9Nzggc3c9NDogKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvZnBnYS5oIGIvYm9hcmQvZ2VuODYwdC9mcGdhLmgKaW5kZXggMDE5NjdhNC4uMThkZWI3MyAxMDA2NDQKLS0tIGEvYm9hcmQvZ2VuODYwdC9mcGdhLmgKKysrIGIvYm9hcmQvZ2VuODYwdC9mcGdhLmgKQEAgLTQxLDUgKzQxLDMgQEAKIGV4dGVybiBpbnQgZnBnYV9hYm9ydF9mbihpbnQgY29va2llICk7CiBleHRlcm4gaW50IGZwZ2FfcHJlX2NvbmZpZ19mbihpbnQgY29va2llICk7CiBleHRlcm4gaW50IGZwZ2FfcG9zdF9jb25maWdfZm4oaW50IGNvb2tpZSApOwotCi0vKiB2aW06IHNldCB0cz00IHN3PTQgdHc9Nzg6ICovCmRpZmYgLS1naXQgYS9ib2FyZC9nZW44NjB0L2lvcG9ydC5jIGIvYm9hcmQvZ2VuODYwdC9pb3BvcnQuYwppbmRleCAxZmM5NTQ1Li5kOGMzMDA2IDEwMDY0NAotLS0gYS9ib2FyZC9nZW44NjB0L2lvcG9ydC5jCisrKyBiL2JvYXJkL2dlbjg2MHQvaW9wb3J0LmMKQEAgLTQzLDEwICs0MywxMCBAQAogICAgIC8qCiAJICogUG9ydCBBIGNvbmZpZ3VyYXRpb24KIAkgKiBQaW4JU2lnbmFsCQkJCQlUeXBlCUFjdGl2ZQlJbml0aWFsIHN0YXRlCi0JICogUEE3IAlmcGdhUHJvZ3JhbUxvd091dAkJT3V0CQlMb3cJCQlIaWdoCi0JICogUEExIAlmcGdhQ29yZVZvbHRhZ2VGYWlsTG93CUluCQlMb3cJCQlOL0EKKwkgKiBQQTcJZnBnYVByb2dyYW1Mb3dPdXQJCU91dAkJTG93CQkJSGlnaAorCSAqIFBBMQlmcGdhQ29yZVZvbHRhZ2VGYWlsTG93CUluCQlMb3cJCQlOL0EKIAkgKi8KLSAgICB7CS8qCSAgICBjb25mIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCBwaW50CSAgIGZ1bmN0aW9uIAkJKi8KKyAgICB7CS8qCSAgICBjb25mIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCBwaW50CSAgIGZ1bmN0aW9uCQkqLwogCS8qIE4vQSAgKi8geyAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIE5vIHBpbgkJCSovCiAJLyogTi9BICAqLyB7IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogTm8gcGluCQkJKi8KIAkvKiBQQTE1ICovIHsgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKgkqLwpAQCAtODMsNyArODMsNyBAQAogCSAqIFBCMjMJCWJhdHRlcnlPa1NpZwlJbgkJCUhpZ2gJCVgKIAkgKiBQQjMxCQlwdWxzZUNhdGNoZXJDbHIJT3V0CQkJSGlnaAkJMAogCSAqLwotCXsJLyoJICAgIGNvbmYgcHBhciBwc29yIHBkaXIgcG9kciBwZGF0IHBpbnQgCSAgZnVuY3Rpb24JCQkqLworCXsJLyoJICAgIGNvbmYgcHBhciBwc29yIHBkaXIgcG9kciBwZGF0IHBpbnQJICBmdW5jdGlvbgkJCSovCiAjaWYgIWRlZmluZWQoQ09ORklHX1NDKQogCS8qIFBCMzEgKi8geyAwLAkgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qCSovCiAjZWxzZQpAQCAtMTE2LDcgKzExNiw3IEBACiAjaWYgIWRlZmluZWQoQ09ORklHX1NDKQogCS8qIFBCMTQgKi8geyAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0gIC8qIGRvY0J1c3lMb3cJCSovCiAjZWxzZQotCS8qIFBCMTQgKi8geyAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0gIC8qIAkqLworCS8qIFBCMTQgKi8geyAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0gIC8qCSovCiAjZW5kaWYKIAl9LAogCkBAIC0xMzIsNyArMTMyLDcgQEAKIAkgKiBQQzEyCQlzeXN0ZW1CaXRPa0luCQlJbgkJSGlnaAkJWAogCSAqIFBDMTUJCXNlbGZEcmVxTG93CQkJSW4JCUxvdwkJCVgKIAkgKi8KLQl7CS8qCSAgICBjb25mIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCBwaW50IAkgIGZ1bmN0aW9uCQkJKi8KKwl7CS8qCSAgICBjb25mIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCBwaW50CSAgZnVuY3Rpb24JCQkqLwogCS8qIE4vQQkqLyB7IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyoJKi8KIAkvKiBOL0EJKi8geyAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qCSovCiAJLyogUEMxNSAqLyB7IDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogc2VsZkRyZXFMb3dJbgkqLwpAQCAtMTQxLDcgKzE0MSw3IEBACiAjaWYgIWRlZmluZWQoQ09ORklHX1NDKQogCS8qIFBDMTIgKi8geyAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qIHN5c3RlbUJpdE9rSW4JKi8KICNlbHNlCi0JLyogUEMxMiAqLyB7IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyogCSovCisJLyogUEMxMiAqLyB7IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyoJKi8KICNlbmRpZgogCS8qIFBDMTEgKi8geyAxLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMSwgICAwIH0sIC8qIGZwZ2FSZXNldExvd091dAkqLwogI2lmICFkZWZpbmVkKENPTkZJR19TQykKQEAgLTE3Myw3ICsxNzMsNyBAQAogCS8qCiAJICogUG9ydCBEIGNvbmZpZ3VyYXRpb24KIAkgKi8KLQl7CS8qCSAgICBjb25mIHBwYXIgcHNvciBwZGlyIHBvZHIgcGRhdCBwaW50IAkgICBmdW5jdGlvbgkJCSovCisJewkvKgkgICAgY29uZiBwcGFyIHBzb3IgcGRpciBwb2RyIHBkYXQgcGludAkgICBmdW5jdGlvbgkJCSovCiAJLyogTi9BICAqLyB7IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAgfSwgLyoJKi8KIAkvKiBOL0EgICovIHsgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCB9LCAvKgkqLwogCS8qIFBEMTUgKi8geyAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwIH0sIC8qCSovCmRpZmYgLS1naXQgYS9ib2FyZC9nZW44NjB0L2lvcG9ydC5oIGIvYm9hcmQvZ2VuODYwdC9pb3BvcnQuaAppbmRleCAzNGEyZDdiLi4zYWYwYmM5IDEwMDY0NAotLS0gYS9ib2FyZC9nZW44NjB0L2lvcG9ydC5oCisrKyBiL2JvYXJkL2dlbjg2MHQvaW9wb3J0LmgKQEAgLTQwLDUgKzQwLDMgQEAKIH0gbXBjOHh4X2lvcF9jb25mX3Q7CiAKIGV4dGVybiB2b2lkIGNvbmZpZ19tcGM4eHhfaW9wb3J0cyh2b2xhdGlsZSBpbW1hcF90ICppbW1yKTsKLQotLyogdmltOiBzZXQgdHM9NCB0dz03OCBzdz00OiAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZ2VuODYwdC91LWJvb3QtZmxhc2hlbnYubGRzIGIvYm9hcmQvZ2VuODYwdC91LWJvb3QtZmxhc2hlbnYubGRzCmluZGV4IGFhMTI0ZjkuLmJiMDNkM2EgMTAwNjQ0Ci0tLSBhL2JvYXJkL2dlbjg2MHQvdS1ib290LWZsYXNoZW52LmxkcworKysgYi9ib2FyZC9nZW44NjB0L3UtYm9vdC1mbGFzaGVudi5sZHMKQEAgLTM2LDExICszNiwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbjg2MHQvdS1ib290LmxkcyBiL2JvYXJkL2dlbjg2MHQvdS1ib290LmxkcwppbmRleCBjZTFmZmUwLi5kMzNhYTJlIDEwMDY0NAotLS0gYS9ib2FyZC9nZW44NjB0L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvZ2VuODYwdC91LWJvb3QubGRzCkBAIC0zNSwxMSArMzUsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9nZW5pZXR2L2ZsYXNoLmMgYi9ib2FyZC9nZW5pZXR2L2ZsYXNoLmMKaW5kZXggMWMxNzI4Yi4uNzI5MmM5YyAxMDA2NDQKLS0tIGEvYm9hcmQvZ2VuaWV0di9mbGFzaC5jCisrKyBiL2JvYXJkL2dlbmlldHYvZmxhc2guYwpAQCAtMTMxLDExICsxMzEsMTEgQEAKIAogCWlmIChpbmZvLT5zaXplID4+IDIwKSB7CiAJICAgIHByaW50ZiAoIiAgU2l6ZTogJWxkIE1CIGluICVkIFNlY3RvcnNcbiIsCi0JICAgIAlpbmZvLT5zaXplID4+IDIwLAorCQlpbmZvLT5zaXplID4+IDIwLAogCQlpbmZvLT5zZWN0b3JfY291bnQpOwogCX0gZWxzZSB7CiAJICAgIHByaW50ZiAoIiAgU2l6ZTogJWxkIEtCIGluICVkIFNlY3RvcnNcbiIsCi0JICAgIAlpbmZvLT5zaXplID4+IDEwLAorCQlpbmZvLT5zaXplID4+IDEwLAogCQlpbmZvLT5zZWN0b3JfY291bnQpOwogCX0KIApAQCAtMjEzLDcgKzIxMyw3IEBACiAJCQlpbmZvLT5mbGFzaF9pZCArPSBGTEFTSF9BTTA0MDsKIAkJCWluZm8tPnNlY3Rvcl9jb3VudCA9IDg7CiAJCQlpbmZvLT5zaXplID0gMHgwMDA4MDAwMDsKLQkJCWJyZWFrOwkJCQkvKiA9PiA1MTJLYiAJCSovCisJCQlicmVhazsJCQkJLyogPT4gNTEyS2IJCSovCiAKIAkJZGVmYXVsdDoKIAkJCWluZm8tPmZsYXNoX2lkID0gRkxBU0hfVU5LTk9XTjsKQEAgLTQ0OCw3ICs0NDgsNyBAQAogCiAJICAgIC8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIG5lY2Vzc2FyeSAqLwogCSAgICBpZiAoZmxhZykKLQkgICAgCWVuYWJsZV9pbnRlcnJ1cHRzKCk7CisJCWVuYWJsZV9pbnRlcnJ1cHRzKCk7CiAKIAkgICAgLyogZGF0YSBwb2xsaW5nIGZvciBENyAqLwogCSAgICBzdGFydCA9IGdldF90aW1lciAoMCk7CmRpZmYgLS1naXQgYS9ib2FyZC9nZW5pZXR2L3UtYm9vdC5sZHMgYi9ib2FyZC9nZW5pZXR2L3UtYm9vdC5sZHMKaW5kZXggMGM2NDE3Zi4uMzU3MzYwOCAxMDA2NDQKLS0tIGEvYm9hcmQvZ2VuaWV0di91LWJvb3QubGRzCisrKyBiL2JvYXJkL2dlbmlldHYvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2dlbmlldHYvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2dlbmlldHYvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCAzMjUxZWMzLi44ZGVkYmE4IDEwMDY0NAotLS0gYS9ib2FyZC9nZW5pZXR2L3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvZ2VuaWV0di91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZ3RoL2ZsYXNoLmMgYi9ib2FyZC9ndGgvZmxhc2guYwppbmRleCA0MWE1YzUwLi4xMWUxMDVlIDEwMDY0NAotLS0gYS9ib2FyZC9ndGgvZmxhc2guYworKysgYi9ib2FyZC9ndGgvZmxhc2guYwpAQCAtNzUsNyArNzUsNyBAQAogCiAJICBpZiAoc2l6ZV9iMSA+IHNpemVfYjApIHsKIAkgICAgcHJpbnRmICgiIyMgRVJST1I6IEJhbmsgMSAoMHglMDhseCA9ICVsZCBNQikgPiBCYW5rIDAgKDB4JTA4bHggPSAlbGQgTUIpXG4iLAotCSAgICAJc2l6ZV9iMSwgc2l6ZV9iMTw8MjAsc2l6ZV9iMCwgc2l6ZV9iMDw8MjApOworCQlzaXplX2IxLCBzaXplX2IxPDwyMCxzaXplX2IwLCBzaXplX2IwPDwyMCk7CiAKIAkgICAgZmxhc2hfaW5mb1swXS5mbGFzaF9pZAk9IEZMQVNIX1VOS05PV047CiAJICAgIGZsYXNoX2luZm9bMV0uZmxhc2hfaWQJPSBGTEFTSF9VTktOT1dOOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZ3RoL3UtYm9vdC5sZHMgYi9ib2FyZC9ndGgvdS1ib290LmxkcwppbmRleCBmYWNiODhhLi45NWY5NDQ1IDEwMDY0NAotLS0gYS9ib2FyZC9ndGgvdS1ib290LmxkcworKysgYi9ib2FyZC9ndGgvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2hlcm1lcy91LWJvb3QubGRzIGIvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKaW5kZXggNDVlODEyYy4uNWY1ZmIwZCAxMDA2NDQKLS0tIGEvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvaGVybWVzL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9oZXJtZXMvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2hlcm1lcy91LWJvb3QubGRzLmRlYnVnCmluZGV4IGY4N2JkMDcuLjQxZDYwM2YgMTAwNjQ0Ci0tLSBhL2JvYXJkL2hlcm1lcy91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2hlcm1lcy91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvaGlkZGVuX2RyYWdvbi9zcGVlZC5oIGIvYm9hcmQvaGlkZGVuX2RyYWdvbi9zcGVlZC5oCmluZGV4IGI2NjM5M2IuLjNmMzJhMTQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2hpZGRlbl9kcmFnb24vc3BlZWQuaAorKysgYi9ib2FyZC9oaWRkZW5fZHJhZ29uL3NwZWVkLmgKQEAgLTI4LDEwICsyOCwxMCBAQAogICogU1BFRURfVE1SM19QUyA9IChHQ0xLIC8gKDE2ICogU1BFRURfRkNPVU5UMykpIC0gMQogICoKICAqIFNQRUVEX0ZDT1VOVDIJdGltZXIgMiBjb3VudGluZyBmcmVxdWVuY3kKLSAqIEdDTEsJICAgICAgCQlDUFUgY2xvY2sKKyAqIEdDTEsJCQlDUFUgY2xvY2sKICAqIFNQRUVEX1RNUjJfUFMJcHJlc2NhbGVyCiAgKi8KLSNkZWZpbmUgU1BFRURfVE1SMl9QUyAgCSgyNTAgLSAxKQkvKiBkaXZpZGUgYnkgMjUwCSovCisjZGVmaW5lIFNQRUVEX1RNUjJfUFMJKDI1MCAtIDEpCS8qIGRpdmlkZSBieSAyNTAJKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGltZXIgdmFsdWUgZm9yIFBJVApkaWZmIC0tZ2l0IGEvYm9hcmQvaHltb2QvaHltb2QuYyBiL2JvYXJkL2h5bW9kL2h5bW9kLmMKaW5kZXggNWU5OGU5ZS4uMTNlNjBlMiAxMDA2NDQKLS0tIGEvYm9hcmQvaHltb2QvaHltb2QuYworKysgYi9ib2FyZC9oeW1vZC9oeW1vZC5jCkBAIC04Niw3ICs4Niw3IEBACiAJCXsgICAxLCAgMCwgIDAsICAxLCAgMCwgIDAgICB9LAkvKiBQQTAzOiBWTSBFTkFCTEUgKi8KIAkJeyAgIDEsICAwLCAgMCwgIDAsICAxLCAgMCAgIH0sCS8qIFBBMDI6IFZNIERPTkUgKi8KIAkJeyAgIDEsICAwLCAgMCwgIDEsICAxLCAgMCAgIH0sCS8qIFBBMDE6IFZNIElOSVQgKi8KLQkJeyAgIDEsICAwLCAgMCwgIDEsICAwLCAgMCAgIH0gCS8qIFBBMDA6IFZNIH5QUk9HICovCisJCXsgICAxLCAgMCwgIDAsICAxLCAgMCwgIDAgICB9CS8qIFBBMDA6IFZNIH5QUk9HICovCiAJfSwKIAogCS8qIFBvcnQgQiBjb25maWd1cmF0aW9uICovCkBAIC00MTQsMTAgKzQxNCwxMCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBtaXNjZWxsYW5lb3VzIGluaXRpYWxpc2F0aW9ucyBhZnRlciByZWxvY2F0aW9uIGludG8gcmFtIChtaXNjX2luaXRfcikgICAgICovCi0vKiAJCQkJCQkJCQkgICAgICovCisvKgkJCQkJCQkJCSAgICAgKi8KIC8qIGxvYWRzIHRoZSBkYXRhIGluIHRoZSBtYWluIGJvYXJkIGFuZCBtZXp6YW5pbmUgYm9hcmQgZWVwcm9tcyBpbnRvCSAgICAgKi8KIC8qIHRoZSBoeW1vZCBjb25maWd1cmF0aW9uIHN0cnVjdCBzdG9yZWQgaW4gdGhlIGJvYXJkIGluZm9ybWF0aW9uIGFyZWEuCSAgICAgKi8KLS8qIAkJCQkJCQkJCSAgICAgKi8KKy8qCQkJCQkJCQkJICAgICAqLwogLyogaWYgdGhlIGNvbnRlbnRzIG9mIGVpdGhlciBlZXByb20gaXMgaW52YWxpZCwgcHJvbXB0cyBmb3IgYSBzZXJpYWwJICAgICAqLwogLyogbnVtYmVyIChhbmQgYW4gZXRoZXJuZXQgYWRkcmVzcyBpZiByZXF1aXJlZCkgdGhlbiBmZXRjaGVzIGEgZmlsZQkgICAgICovCiAvKiBjb250YWluaW5nIGluZm9ybWF0aW9uIHRvIGJlIHN0b3JlZCBpbiB0aGUgZWVwcm9tIGZyb20gdGhlIHRmdHAgc2VydmVyICAgICovCmRpZmYgLS1naXQgYS9ib2FyZC9oeW1vZC91LWJvb3QubGRzIGIvYm9hcmQvaHltb2QvdS1ib290LmxkcwppbmRleCA2MTg5MTQ5Li5jYjdiNGVhIDEwMDY0NAotLS0gYS9ib2FyZC9oeW1vZC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2h5bW9kL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9oeW1vZC91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvaHltb2QvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA3NTM0MTFmLi5jMzM1ODFkIDEwMDY0NAotLS0gYS9ib2FyZC9oeW1vZC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2h5bW9kL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9pY3U4NjIvcGNtY2lhLmMgYi9ib2FyZC9pY3U4NjIvcGNtY2lhLmMKaW5kZXggMTFkZTE4My4uMjA5MjJkOCAxMDA2NDQKLS0tIGEvYm9hcmQvaWN1ODYyL3BjbWNpYS5jCisrKyBiL2JvYXJkL2ljdTg2Mi9wY21jaWEuYwpAQCAtMjIzLDEwICsyMjMsMTAgQEAKIAlyZWcgID0gY3AtPmNwX3BiZGF0OwogCiAJc3dpdGNoKHZjYykgewotCQljYXNlICAwOiAJCQlicmVhazsJLyogU3dpdGNoIG9mZgkJKi8KKwkJY2FzZSAgMDoJCQlicmVhazsJLyogU3dpdGNoIG9mZgkJKi8KIAkJY2FzZSAzMzogcmVnICY9IH5UUFMyMjA1X1ZDQzM7CWJyZWFrOwkvKiBTd2l0Y2ggb24gMy4zVgkqLwogCQljYXNlIDUwOiByZWcgJj0gflRQUzIyMDVfVkNDNTsJYnJlYWs7CS8qIFN3aXRjaCBvbiA1LjBWCSovCi0JCWRlZmF1bHQ6IAkJCWdvdG8gZG9uZTsKKwkJZGVmYXVsdDoJCQlnb3RvIGRvbmU7CiAJfQogCiAJLyogQ2hlY2tpbmcgc3VwcG9ydGVkIHZvbHRhZ2VzICovCmRpZmYgLS1naXQgYS9ib2FyZC9pY3U4NjIvdS1ib290LmxkcyBiL2JvYXJkL2ljdTg2Mi91LWJvb3QubGRzCmluZGV4IGNkMzg4ZDAuLmJlNGJmNzIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ljdTg2Mi91LWJvb3QubGRzCisrKyBiL2JvYXJkL2ljdTg2Mi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvaWN1ODYyL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9pY3U4NjIvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA0NTJjNmMwLi43YTdhNDBjIDEwMDY0NAotLS0gYS9ib2FyZC9pY3U4NjIvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9pY3U4NjIvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2lkbXIvdS1ib290LmxkcyBiL2JvYXJkL2lkbXIvdS1ib290LmxkcwppbmRleCBiYzgzNTM0Li5jMDdkMDIzIDEwMDY0NAotLS0gYS9ib2FyZC9pZG1yL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvaWRtci91LWJvb3QubGRzCkBAIC0zNCwxMSArMzQsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvaW14MzFfbGl0ZWtpdC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9pbXgzMV9saXRla2l0L2xvd2xldmVsX2luaXQuUwppbmRleCA4OGI1MjYxLi45ZDk2ZGI4IDEwMDY0NAotLS0gYS9ib2FyZC9pbXgzMV9saXRla2l0L2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9pbXgzMV9saXRla2l0L2xvd2xldmVsX2luaXQuUwpAQCAtNjIsOSArNjIsOSBAQAogCVJFRwkweDQzRkFDMjZDLCAwIC8qIFNEQ0xLICovCiAJUkVHCTB4NDNGQUMyNzAsIDAgLyogQ0FTICovCiAJUkVHCTB4NDNGQUMyNzQsIDAgLyogUkFTICovCi0JUkVHCTB4NDNGQUMyN0MsIDB4MTAwMCAvKiBDUzIgCUNTRDApICovCisJUkVHCTB4NDNGQUMyN0MsIDB4MTAwMCAvKiBDUzIJQ1NEMCkgKi8KIAlSRUcJMHg0M0ZBQzI4NCwgMCAvKiBEUU0zICovCi0JUkVHCTB4NDNGQUMyODgsIDAgLyogRFFNMiwgRFFNMSwgRFFNMCwgU0QzMS1TRDAsIEEyNS1BMCwgTUExMCAJMHgyODguLjB4MkRDKSAqLworCVJFRwkweDQzRkFDMjg4LCAwIC8qIERRTTIsIERRTTEsIERRTTAsIFNEMzEtU0QwLCBBMjUtQTAsIE1BMTAJMHgyODguLjB4MkRDKSAqLwogCVJFRwkweDQzRkFDMjhDLCAwCiAJUkVHCTB4NDNGQUMyOTAsIDAKIAlSRUcJMHg0M0ZBQzI5NCwgMApkaWZmIC0tZ2l0IGEvYm9hcmQvaW14MzFfcGh5Y29yZS9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9pbXgzMV9waHljb3JlL2xvd2xldmVsX2luaXQuUwppbmRleCA0ODk1YjZhLi43MGYzMGMwIDEwMDY0NAotLS0gYS9ib2FyZC9pbXgzMV9waHljb3JlL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9pbXgzMV9waHljb3JlL2xvd2xldmVsX2luaXQuUwpAQCAtNjMsOSArNjMsOSBAQAogCVJFRwkweDQzRkFDMjZDLCAwIC8qIFNEQ0xLICovCiAJUkVHCTB4NDNGQUMyNzAsIDAgLyogQ0FTICovCiAJUkVHCTB4NDNGQUMyNzQsIDAgLyogUkFTICovCi0JUkVHCTB4NDNGQUMyN0MsIDB4MTAwMCAvKiBDUzIgCUNTRDApICovCisJUkVHCTB4NDNGQUMyN0MsIDB4MTAwMCAvKiBDUzIJQ1NEMCkgKi8KIAlSRUcJMHg0M0ZBQzI4NCwgMCAvKiBEUU0zICovCi0JUkVHCTB4NDNGQUMyODgsIDAgLyogRFFNMiwgRFFNMSwgRFFNMCwgU0QzMS1TRDAsIEEyNS1BMCwgTUExMCAJMHgyODguLjB4MkRDKSAqLworCVJFRwkweDQzRkFDMjg4LCAwIC8qIERRTTIsIERRTTEsIERRTTAsIFNEMzEtU0QwLCBBMjUtQTAsIE1BMTAJMHgyODguLjB4MkRDKSAqLwogCVJFRwkweDQzRkFDMjhDLCAwCiAJUkVHCTB4NDNGQUMyOTAsIDAKIAlSRUcJMHg0M0ZBQzI5NCwgMApkaWZmIC0tZ2l0IGEvYm9hcmQvaW5ub2tvbS9mbGFzaC5jIGIvYm9hcmQvaW5ub2tvbS9mbGFzaC5jCmluZGV4IDI5OGFjYzguLjhmYzZlNWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2lubm9rb20vZmxhc2guYworKysgYi9ib2FyZC9pbm5va29tL2ZsYXNoLmMKQEAgLTg4LDggKzg4LDggQEAKIAlmb3IgKGkgPSAwOyBpIDwgQ0ZHX01BWF9GTEFTSF9CQU5LUzsgaSsrKSB7CiAJCXVsb25nIGZsYXNoYmFzZSA9IDA7CiAJCWZsYXNoX2luZm9baV0uZmxhc2hfaWQgPQotCSAgCQkoSU5URUxfTUFOVUZBQ1QgJiBGTEFTSF9WRU5ETUFTSykgfAotCSAgCQkoSU5URUxfSURfMjhGMTI4SjMgJiBGTEFTSF9UWVBFTUFTSyk7CisJCQkoSU5URUxfTUFOVUZBQ1QgJiBGTEFTSF9WRU5ETUFTSykgfAorCQkJKElOVEVMX0lEXzI4RjEyOEozICYgRkxBU0hfVFlQRU1BU0spOwogCQlmbGFzaF9pbmZvW2ldLnNpemUgPSBGTEFTSF9CQU5LX1NJWkU7CiAJCWZsYXNoX2luZm9baV0uc2VjdG9yX2NvdW50ID0gQ0ZHX01BWF9GTEFTSF9TRUNUOwogCQltZW1zZXQoZmxhc2hfaW5mb1tpXS5wcm90ZWN0LCAwLCBDRkdfTUFYX0ZMQVNIX1NFQ1QpOwpAQCAtMzUwLDcgKzM1MCw3IEBACiAgKiBAcGFyYW0gaW5mbzoKICAqIEBwYXJhbSBzcmM6CXNvdXJjZSBvZiBjb3B5IHRyYW5zYWN0aW9uCiAgKiBAcGFyYW0gYWRkcjoJd2hlcmUgdG8gY29weSB0bwotICogQHBhcmFtIGNudDogCW51bWJlciBvZiBieXRlcyB0byBjb3B5CisgKiBAcGFyYW0gY250OgludW1iZXIgb2YgYnl0ZXMgdG8gY29weQogICoKICAqIEByZXR1cm4JZXJyb3IgY29kZQogICovCmRpZmYgLS1naXQgYS9ib2FyZC9pbm5va29tL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TCmluZGV4IGFhOWRjYmEuLjRjOWYxMGYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TCkBAIC00Myw3ICs0Myw3IEBACiAKIAogLyoKLSAqIAlNZW1vcnkgc2V0dXAKKyAqCU1lbW9yeSBzZXR1cAogICovCiAKIC5nbG9ibCBsb3dsZXZlbF9pbml0CkBAIC0xMjksOCArMTI5LDggQEAKIC8qbG9vcDogKi8KIC8qICovCiAvKiAgIGxkcglyMCwgPTB4QjAwNzAwMDEgKi8KLS8qICAgbGRyICAgIAlyMSwgPV9MRUQgKi8KLS8qICAgc3RyICAgIAlyMCwgW3IxXQkJLyAgaGV4IGRpc3BsYXkgKi8KKy8qICAgbGRyCXIxLCA9X0xFRCAqLworLyogICBzdHIJcjAsIFtyMV0JCS8gIGhleCBkaXNwbGF5ICovCiAKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTIzOSw3ICsyMzksNyBAQAogCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldCAgICAgKi8KIAkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLQlsZHIgCXIzLCAJPUNGR19NRFJFRlJfVkFMCisJbGRyCXIzLAk9Q0ZHX01EUkVGUl9WQUwKIAlsZHIJcjIsCT0weEZGRgogCWFuZAlyMywJcjMsIHIyCiAJbGRyCXI0LAk9MHgwM2NhNDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvaW50ZWdyYXRvcmFwL21lbXNldHVwLlMgYi9ib2FyZC9pbnRlZ3JhdG9yYXAvbWVtc2V0dXAuUwppbmRleCBkZmRjNzg0Li5kYTQzY2I2IDEwMDY0NAotLS0gYS9ib2FyZC9pbnRlZ3JhdG9yYXAvbWVtc2V0dXAuUworKysgYi9ib2FyZC9pbnRlZ3JhdG9yYXAvbWVtc2V0dXAuUwpAQCAtMjAsNyArMjAsNyBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogLyoKLSAqIAlNZW1vcnkgc2V0dXAKKyAqCU1lbW9yeSBzZXR1cAogICogICAgICAtIHRoZSByZXNldCBkZWZhdWx0cyBhcmUgYXNzdW1lZCBzdWZmaWNpZW50CiAgKi8KIApkaWZmIC0tZ2l0IGEvYm9hcmQvaW50ZWdyYXRvcmFwL3NwbGl0X2J5X3ZhcmlhbnQuc2ggYi9ib2FyZC9pbnRlZ3JhdG9yYXAvc3BsaXRfYnlfdmFyaWFudC5zaAppbmRleCA0Yjk0ZDhmLi44YzU0MjUwIDEwMDc1NQotLS0gYS9ib2FyZC9pbnRlZ3JhdG9yYXAvc3BsaXRfYnlfdmFyaWFudC5zaAorKysgYi9ib2FyZC9pbnRlZ3JhdG9yYXAvc3BsaXRfYnlfdmFyaWFudC5zaApAQCAtMyw3ICszLDcgQEAKICMgU2V0IHRoZSBwbGF0Zm9ybSBkZWZpbmVzCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZWNobyAtbgkiLyogSW50ZWdyYXRvciBjb25maWd1cmF0aW9uIGltcGxpZWQgIgkgPiB0bXAuZmlsCi1lY2hvCSIgYnkgTWFrZWZpbGUgdGFyZ2V0ICovIgkgCT4+IHRtcC5maWwKK2VjaG8JIiBieSBNYWtlZmlsZSB0YXJnZXQgKi8iCQk+PiB0bXAuZmlsCiBlY2hvIC1uCSIjZGVmaW5lIENPTkZJR19JTlRFR1JBVE9SIgkJPj4gdG1wLmZpbAogZWNobwkiIC8qIEludGVncmF0b3IgYm9hcmQgKi8iCQk+PiB0bXAuZmlsCiBlY2hvIC1uCSIjZGVmaW5lIENPTkZJR19BUkNIX0lOVEVHUkFUT1IiCT4+IHRtcC5maWwKQEAgLTQyLDIyICs0MiwyMiBAQAogCiAJYXA3MjB0X2NvbmZpZykKIAljcHU9ImFybTcyMHQiCi0JZWNobyAtbgkiI2RlZmluZSBDT05GSUdfQ003MjBUIgkJPj4gdG1wLmZpbAotCWVjaG8JIiAxIC8qIENQVSBjb3JlIGlzIEFSTTcyMFQgKi8gIgk+PiB0bXAuZmlsCisJZWNobyAtbgkiI2RlZmluZSBDT05GSUdfQ003MjBUIgkJCT4+IHRtcC5maWwKKwllY2hvCSIgMSAvKiBDUFUgY29yZSBpcyBBUk03MjBUICovICIJCT4+IHRtcC5maWwKIAl2YXJpYW50PSJDb3JlIG1vZHVsZSBDTTcyMFQiCiAJOzsKIAogCWFwOTIyX1hBMTBfY29uZmlnKQogCWNwdT0iYXJtX2ludGNtIgogCXZhcmlhbnQ9InVucG9ydGVkIGNvcmUgbW9kdWxlIENNOTIyVF9YQTEwIgotCWVjaG8gLW4JIiNkZWZpbmUgQ09ORklHX0NNOTIyVF9YQTEwIiAJCT4+IHRtcC5maWwKLQllY2hvCSIgMSAvKiBDUFUgY29yZSBpcyBBUk05MjJUX1hBMTAgKi8iIAk+PiB0bXAuZmlsCisJZWNobyAtbgkiI2RlZmluZSBDT05GSUdfQ005MjJUX1hBMTAiCQk+PiB0bXAuZmlsCisJZWNobwkiIDEgLyogQ1BVIGNvcmUgaXMgQVJNOTIyVF9YQTEwICovIgk+PiB0bXAuZmlsCiAJOzsKIAogCWFwOTIwdF9jb25maWcpCiAJY3B1PSJhcm05MjB0IgogCXZhcmlhbnQ9IkNvcmUgbW9kdWxlIENNOTIwVCIKLQllY2hvIC1uCSIjZGVmaW5lIENPTkZJR19DTTkyMFQiIAkJPj4gdG1wLmZpbAorCWVjaG8gLW4JIiNkZWZpbmUgQ09ORklHX0NNOTIwVCIJCQk+PiB0bXAuZmlsCiAJZWNobwkiIDEgLyogQ1BVIGNvcmUgaXMgQVJNOTIwVCAqLyIJCT4+IHRtcC5maWwKIAk7OwogCkBAIC04OSwxOSArODksMTkgQEAKIAllY2hvICIvKiBDb3JlIG1vZHVsZSB1bmRlZmluZWQvbm90IHBvcnRlZCAqLyIJPj4gdG1wLmZpbAogCWVjaG8gIiNkZWZpbmUgQ09ORklHX0FSTV9JTlRDTSAxIgkJPj4gdG1wLmZpbAogCWVjaG8gLW4JIiN1bmRlZiBDT05GSUdfQ01fTVVMVElQTEVfU1NSQU0iCT4+IHRtcC5maWwKLQllY2hvIC1uCSIJLyogQ00gbWF5IG5vdCBoYXZlICIgCQk+PiB0bXAuZmlsCisJZWNobyAtbgkiCS8qIENNIG1heSBub3QgaGF2ZSAiCQk+PiB0bXAuZmlsCiAJZWNobwkibXVsdGlwbGUgU1NSQU0gbWFwcGluZyAqLyIJCT4+IHRtcC5maWwKLQllY2hvIC1uCSIjdW5kZWYgQ09ORklHX0NNX1NQRF9ERVRFQ1QgIiAJCT4+IHRtcC5maWwKLQllY2hvIC1uCSIgLyogQ00gbWF5IG5vdCBzdXBwb3J0IFNQRCAiIAkJPj4gdG1wLmZpbAorCWVjaG8gLW4JIiN1bmRlZiBDT05GSUdfQ01fU1BEX0RFVEVDVCAiCQk+PiB0bXAuZmlsCisJZWNobyAtbgkiIC8qIENNIG1heSBub3Qgc3VwcG9ydCBTUEQgIgkJPj4gdG1wLmZpbAogCWVjaG8JInF1ZXJ5ICovIgkJCQk+PiB0bXAuZmlsCi0JZWNobyAtbgkiI3VuZGVmIENPTkZJR19DTV9SRU1BUAkiIAkJPj4gdG1wLmZpbAorCWVjaG8gLW4JIiN1bmRlZiBDT05GSUdfQ01fUkVNQVAJIgkJPj4gdG1wLmZpbAogCWVjaG8gLW4JIiAvKiBDTSBtYXkgbm90IHN1cHBvcnQgIgkJPj4gdG1wLmZpbAotCWVjaG8JInJlbWFwcGluZyAqLyIJIAkJCT4+IHRtcC5maWwKLQllY2hvIC1uCSIjdW5kZWYgQ09ORklHX0NNX0lOSVQJIiAJCT4+IHRtcC5maWwKKwllY2hvCSJyZW1hcHBpbmcgKi8iCQkJCT4+IHRtcC5maWwKKwllY2hvIC1uCSIjdW5kZWYgQ09ORklHX0NNX0lOSVQJIgkJPj4gdG1wLmZpbAogCWVjaG8gLW4JIiAvKiBDTSBtYXkgbm90IGhhdmUJIgkJPj4gdG1wLmZpbAogCWVjaG8JImluaXRpYWxpemF0aW9uIHJlZyAqLyIJCQk+PiB0bXAuZmlsCi0JZWNobyAtbgkiI3VuZGVmIENPTkZJR19DTV9UQ1JBTQkiIAkJPj4gdG1wLmZpbAotCWVjaG8JIiAvKiBDTSBtYXkgbm90IGhhdmUgVENSQU0gKi8iIAkJPj4gdG1wLmZpbAorCWVjaG8gLW4JIiN1bmRlZiBDT05GSUdfQ01fVENSQU0JIgkJPj4gdG1wLmZpbAorCWVjaG8JIiAvKiBDTSBtYXkgbm90IGhhdmUgVENSQU0gKi8iCQk+PiB0bXAuZmlsCiBmaQogCiBta2RpciAtcCAke29ian1pbmNsdWRlCmRpZmYgLS1naXQgYS9ib2FyZC9pbnRlZ3JhdG9yY3AvZmxhc2guYyBiL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCmluZGV4IDRkNmVmZjAuLmI2NTNjMDUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCisrKyBiL2JvYXJkL2ludGVncmF0b3JjcC9mbGFzaC5jCkBAIC03Myw3ICs3Myw3IEBACiB9OwogCiAvKiBDUCBjb250cm9sIHJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAqLwotI2RlZmluZSBDUENSX0JBU0UgICAgICAJCTB4Q0IwMDAwMDAKKyNkZWZpbmUgQ1BDUl9CQVNFCQkweENCMDAwMDAwCiAjZGVmaW5lIENQQ1JfRVhUUkFCQU5LCQkweDgKICNkZWZpbmUgQ1BDUl9GTEFTSFNJWkUJCTB4NAogI2RlZmluZSBDUENSX0ZMV1JFTgkJMHgyCmRpZmYgLS1naXQgYS9ib2FyZC9pbnRlZ3JhdG9yY3AvbWVtc2V0dXAuUyBiL2JvYXJkL2ludGVncmF0b3JjcC9tZW1zZXR1cC5TCmluZGV4IGRmZGM3ODQuLmRhNDNjYjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ludGVncmF0b3JjcC9tZW1zZXR1cC5TCisrKyBiL2JvYXJkL2ludGVncmF0b3JjcC9tZW1zZXR1cC5TCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAvKgotICogCU1lbW9yeSBzZXR1cAorICoJTWVtb3J5IHNldHVwCiAgKiAgICAgIC0gdGhlIHJlc2V0IGRlZmF1bHRzIGFyZSBhc3N1bWVkIHN1ZmZpY2llbnQKICAqLwogCmRpZmYgLS1naXQgYS9ib2FyZC9pbnRlZ3JhdG9yY3Avc3BsaXRfYnlfdmFyaWFudC5zaCBiL2JvYXJkL2ludGVncmF0b3JjcC9zcGxpdF9ieV92YXJpYW50LnNoCmluZGV4IDc5YTZhOWQuLjNmMGE0NDcgMTAwNzU1Ci0tLSBhL2JvYXJkL2ludGVncmF0b3JjcC9zcGxpdF9ieV92YXJpYW50LnNoCisrKyBiL2JvYXJkL2ludGVncmF0b3JjcC9zcGxpdF9ieV92YXJpYW50LnNoCkBAIC0zLDExICszLDExIEBACiAjIFNldCB0aGUgcGxhdGZvcm0gZGVmaW5lcwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVjaG8gLW4gIi8qIEludGVncmF0b3IgY29uZmlndXJhdGlvbiBpbXBsaWVkICIgICA+IHRtcC5maWwKLWVjaG8gICAgIiBieSBNYWtlZmlsZSB0YXJnZXQgKi8iICAgCQk+PiB0bXAuZmlsCi1lY2hvIC1uICIjZGVmaW5lIENPTkZJR19JTlRFR1JBVE9SIiAgCQk+PiB0bXAuZmlsCi1lY2hvCSAiIC8qIEludGVncmF0b3IgYm9hcmQgKi8iICAJCT4+IHRtcC5maWwKK2VjaG8gICAgIiBieSBNYWtlZmlsZSB0YXJnZXQgKi8iCQk+PiB0bXAuZmlsCitlY2hvIC1uICIjZGVmaW5lIENPTkZJR19JTlRFR1JBVE9SIgkJPj4gdG1wLmZpbAorZWNobwkgIiAvKiBJbnRlZ3JhdG9yIGJvYXJkICovIgkJPj4gdG1wLmZpbAogZWNobyAtbiAiI2RlZmluZSBDT05GSUdfQVJDSF9DSU5URUdSQVRPUiIJPj4gdG1wLmZpbAotZWNobyAgICAgIiAxIC8qIEludGVncmF0b3IvQ1AgICAqLyIgIAkJPj4gdG1wLmZpbAorZWNobyAgICAgIiAxIC8qIEludGVncmF0b3IvQ1AgICAqLyIJCT4+IHRtcC5maWwKIAogY3B1PSJhcm1faW50Y20iCiB2YXJpYW50PSJ1bmtub3duIGNvcmUgbW9kdWxlIgpAQCAtMzYsMTQgKzM2LDE0IEBACiAJY3A5MjJfWEExMF9jb25maWcpCiAJY3B1PSJhcm1faW50Y20iCiAJdmFyaWFudD0idW5wb3J0ZWQgY29yZSBtb2R1bGUgQ005MjJUX1hBMTAiCi0JZWNobyAtbiAiI2RlZmluZSBDT05GSUdfQ005MjJUX1hBMTAiIAkJPj4gdG1wLmZpbAotCWVjaG8gICAgIiAxIC8qIENQVSBjb3JlIGlzIEFSTTkyMlRfWEExMCAqLyIgCT4+IHRtcC5maWwKKwllY2hvIC1uICIjZGVmaW5lIENPTkZJR19DTTkyMlRfWEExMCIJCT4+IHRtcC5maWwKKwllY2hvICAgICIgMSAvKiBDUFUgY29yZSBpcyBBUk05MjJUX1hBMTAgKi8iCT4+IHRtcC5maWwKIAk7OwogCiAJY3A5MjB0X2NvbmZpZykKIAljcHU9ImFybTkyMHQiCiAJdmFyaWFudD0iQ29yZSBtb2R1bGUgQ005MjBUIgotCWVjaG8gLW4gIiNkZWZpbmUgQ09ORklHX0NNOTIwVCIgCQk+PiB0bXAuZmlsCisJZWNobyAtbiAiI2RlZmluZSBDT05GSUdfQ005MjBUIgkJCT4+IHRtcC5maWwKIAllY2hvICAgICIgMSAvKiBDUFUgY29yZSBpcyBBUk05MjBUICovIgkJPj4gdG1wLmZpbAogCTs7CiAKQEAgLTgyLDIxICs4MiwyMSBAQAogaWYgWyAiJGNwdSIgPSAiYXJtX2ludGNtIiBdCiB0aGVuCiAJZWNobyAiLyogQ29yZSBtb2R1bGUgdW5kZWZpbmVkL25vdCBwb3J0ZWQgKi8iCT4+IHRtcC5maWwKLQllY2hvICIjZGVmaW5lIENPTkZJR19BUk1fSU5UQ00gMSIgIAkJPj4gdG1wLmZpbAorCWVjaG8gIiNkZWZpbmUgQ09ORklHX0FSTV9JTlRDTSAxIgkJPj4gdG1wLmZpbAogCWVjaG8gLW4gIiN1bmRlZiBDT05GSUdfQ01fTVVMVElQTEVfU1NSQU0iCT4+IHRtcC5maWwKLQllY2hvIC1uICIgIC8qIENNIG1heSBub3QgaGF2ZSAiIAkJPj4gdG1wLmZpbAotCWVjaG8gICAgIm11bHRpcGxlIFNTUkFNIG1hcHBpbmcgKi8iICAJCT4+IHRtcC5maWwKLQllY2hvIC1uICIjdW5kZWYgQ09ORklHX0NNX1NQRF9ERVRFQ1QgIiAJCT4+IHRtcC5maWwKLQllY2hvIC1uICIgLyogQ00gbWF5IG5vdCBzdXBwb3J0IFNQRCAiIAkJPj4gdG1wLmZpbAotCWVjaG8gICAgInF1ZXJ5ICovIiAgICAJCQkJPj4gdG1wLmZpbAotCWVjaG8gLW4gIiN1bmRlZiBDT05GSUdfQ01fUkVNQVAgICIgCQk+PiB0bXAuZmlsCi0JZWNobyAtbiAiIC8qIENNIG1heSBub3Qgc3VwcG9ydCAiICAJCT4+IHRtcC5maWwKLQllY2hvICAgICJyZW1hcHBpbmcgKi8iICAgCQkJPj4gdG1wLmZpbAotCWVjaG8gLW4gIiN1bmRlZiBDT05GSUdfQ01fSU5JVCAgIiAJCT4+IHRtcC5maWwKLQllY2hvIC1uICIgLyogQ00gbWF5IG5vdCBoYXZlICAiICAJCT4+IHRtcC5maWwKLQllY2hvICAgICJpbml0aWFsaXphdGlvbiByZWcgKi8iICAJCT4+IHRtcC5maWwKLQllY2hvIC1uICIjdW5kZWYgQ09ORklHX0NNX1RDUkFNICAiIAkJPj4gdG1wLmZpbAotCWVjaG8gICAgIiAvKiBDTSBtYXkgbm90IGhhdmUgVENSQU0gKi8iIAkJPj4gdG1wLmZpbAorCWVjaG8gLW4gIiAgLyogQ00gbWF5IG5vdCBoYXZlICIJCQk+PiB0bXAuZmlsCisJZWNobyAgICAibXVsdGlwbGUgU1NSQU0gbWFwcGluZyAqLyIJCT4+IHRtcC5maWwKKwllY2hvIC1uICIjdW5kZWYgQ09ORklHX0NNX1NQRF9ERVRFQ1QgIgkJPj4gdG1wLmZpbAorCWVjaG8gLW4gIiAvKiBDTSBtYXkgbm90IHN1cHBvcnQgU1BEICIJCT4+IHRtcC5maWwKKwllY2hvICAgICJxdWVyeSAqLyIJCQkJPj4gdG1wLmZpbAorCWVjaG8gLW4gIiN1bmRlZiBDT05GSUdfQ01fUkVNQVAgICIJCT4+IHRtcC5maWwKKwllY2hvIC1uICIgLyogQ00gbWF5IG5vdCBzdXBwb3J0ICIJCT4+IHRtcC5maWwKKwllY2hvICAgICJyZW1hcHBpbmcgKi8iCQkJCT4+IHRtcC5maWwKKwllY2hvIC1uICIjdW5kZWYgQ09ORklHX0NNX0lOSVQgICIJCT4+IHRtcC5maWwKKwllY2hvIC1uICIgLyogQ00gbWF5IG5vdCBoYXZlICAiCQkJPj4gdG1wLmZpbAorCWVjaG8gICAgImluaXRpYWxpemF0aW9uIHJlZyAqLyIJCQk+PiB0bXAuZmlsCisJZWNobyAtbiAiI3VuZGVmIENPTkZJR19DTV9UQ1JBTSAgIgkJPj4gdG1wLmZpbAorCWVjaG8gICAgIiAvKiBDTSBtYXkgbm90IGhhdmUgVENSQU0gKi8iCQk+PiB0bXAuZmlsCiBmaQogCiBta2RpciAtcCAke29ian1pbmNsdWRlCmRpZmYgLS1naXQgYS9ib2FyZC9pcDg2MC91LWJvb3QubGRzIGIvYm9hcmQvaXA4NjAvdS1ib290LmxkcwppbmRleCA2NTU2ZWQ1Li5lZjg4Mjk3IDEwMDY0NAotLS0gYS9ib2FyZC9pcDg2MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL2lwODYwL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9pcDg2MC91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvaXA4NjAvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCBmNTcxMzUwLi5hZDY4NWU2IDEwMDY0NAotLS0gYS9ib2FyZC9pcDg2MC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2lwODYwL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9pdm0vdS1ib290LmxkcyBiL2JvYXJkL2l2bS91LWJvb3QubGRzCmluZGV4IGJiZDkzZWUuLmQ3ZjM2MGYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2l2bS91LWJvb3QubGRzCisrKyBiL2JvYXJkL2l2bS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9pdm0vdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2l2bS91LWJvb3QubGRzLmRlYnVnCmluZGV4IGM2ZjJhZDUuLjk5NWZjODMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2l2bS91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2l2bS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9peGRwNDI1L2ZsYXNoLmMgYi9ib2FyZC9peGRwNDI1L2ZsYXNoLmMKaW5kZXggMWQ5NThjOC4uNzA0ZGVhOCAxMDA2NDQKLS0tIGEvYm9hcmQvaXhkcDQyNS9mbGFzaC5jCisrKyBiL2JvYXJkL2l4ZHA0MjUvZmxhc2guYwpAQCAtMzUsMTkgKzM1LDE5IEBACiAjZGVmaW5lIEZMQVNIX1BPUlRfV0lEVEgxNgogCiAjaWZkZWYgRkxBU0hfUE9SVF9XSURUSDE2Ci0jZGVmaW5lIEZMQVNIX1BPUlRfV0lEVEgJCXVzaG9ydAotI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgkJdnVfc2hvcnQKLSNkZWZpbmUgU1dBUCh4KSAgICAgICAgICAgICAgIAkJeAorI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRICXVzaG9ydAorI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgl2dV9zaG9ydAorI2RlZmluZSBTV0FQKHgpCQkJeAogI2Vsc2UKLSNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSAkJdWxvbmcKLSNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSFYJCXZ1X2xvbmcKLSNkZWZpbmUgU1dBUCh4KSAgICAgICAgICAgICAgIAkJX19zd2FiMzIoeCkKKyNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSAl1bG9uZworI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgl2dV9sb25nCisjZGVmaW5lIFNXQVAoeCkJCQlfX3N3YWIzMih4KQogI2VuZGlmCiAKLSNkZWZpbmUgRlBXCSAgIEZMQVNIX1BPUlRfV0lEVEgKLSNkZWZpbmUgRlBXViAgIEZMQVNIX1BPUlRfV0lEVEhWCisjZGVmaW5lIEZQVwlGTEFTSF9QT1JUX1dJRFRICisjZGVmaW5lIEZQV1YJRkxBU0hfUE9SVF9XSURUSFYKIAotI2RlZmluZSBtYigpIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUgbWIoKQlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOiA6IDogIm1lbW9yeSIpCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvYm9hcmQvanNlL3UtYm9vdC5sZHMgYi9ib2FyZC9qc2UvdS1ib290LmxkcwppbmRleCA5NjEwMWVjLi43ZTA2MGNiIDEwMDY0NAotLS0gYS9ib2FyZC9qc2UvdS1ib290LmxkcworKysgYi9ib2FyZC9qc2UvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2tvcmF0L3UtYm9vdC1GN0ZDLmxkcyBiL2JvYXJkL2tvcmF0L3UtYm9vdC1GN0ZDLmxkcwppbmRleCAxNzQwNjBlLi42ZGNjZjk1IDEwMDY0NAotLS0gYS9ib2FyZC9rb3JhdC91LWJvb3QtRjdGQy5sZHMKKysrIGIvYm9hcmQva29yYXQvdS1ib290LUY3RkMubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQva29yYXQvdS1ib290LmxkcyBiL2JvYXJkL2tvcmF0L3UtYm9vdC5sZHMKaW5kZXggZGEyYTQwMC4uYjIwZmIxYyAxMDA2NDQKLS0tIGEvYm9hcmQva29yYXQvdS1ib290LmxkcworKysgYi9ib2FyZC9rb3JhdC91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2NvbW1vbi9wY21jaWEuYyBiL2JvYXJkL2t1cC9jb21tb24vcGNtY2lhLmMKaW5kZXggZGVmMzhmMS4uOGYwY2YxNyAxMDA2NDQKLS0tIGEvYm9hcmQva3VwL2NvbW1vbi9wY21jaWEuYworKysgYi9ib2FyZC9rdXAvY29tbW9uL3BjbWNpYS5jCkBAIC0xODgsNyArMTg4LDcgQEAKIAljcC0+Y3BfcGJkYXQgfD0gIEtVUDRLX1BDTUNJQV9CXzNWMzsgLyogYWN0aXZlIGxvdyAqLwogCiAJc3dpdGNoKHZjYykgewotCQljYXNlICAwOiAJCWJyZWFrOworCQljYXNlICAwOgkJYnJlYWs7CiAJCWNhc2UgMzM6CiAJCQljcC0+Y3BfcGJkYXQgJj0gfktVUDRLX1BDTUNJQV9CXzNWMzsKIAkJCWRlYnVnICgiUENNQ0lBIHBvd2VyZWQgYXQgMy4zVlxuIik7CmRpZmYgLS1naXQgYS9ib2FyZC9rdXAva3VwNGsvdS1ib290LmxkcyBiL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzCmluZGV4IGUwYWUyMjQuLjJlOTE2OWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzCisrKyBiL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9rdXAva3VwNGsvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzLmRlYnVnCmluZGV4IDQ5NDJjNDIuLmY2ZDE1MzcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2t1cC9rdXA0ay91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2t1cDR4L3UtYm9vdC5sZHMgYi9ib2FyZC9rdXAva3VwNHgvdS1ib290LmxkcwppbmRleCBlMGFlMjI0Li4yZTkxNjljIDEwMDY0NAotLS0gYS9ib2FyZC9rdXAva3VwNHgvdS1ib290LmxkcworKysgYi9ib2FyZC9rdXAva3VwNHgvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2t1cDR4L3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9rdXAva3VwNHgvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA0OTQyYzQyLi5mNmQxNTM3IDEwMDY0NAotLS0gYS9ib2FyZC9rdXAva3VwNHgvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9rdXAva3VwNHgvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2xhbnRlYy91LWJvb3QubGRzIGIvYm9hcmQvbGFudGVjL3UtYm9vdC5sZHMKaW5kZXggNjg4ODQ2Yi4uMmQyNjY0MyAxMDA2NDQKLS0tIGEvYm9hcmQvbGFudGVjL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbGFudGVjL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9sYW50ZWMvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL2xhbnRlYy91LWJvb3QubGRzLmRlYnVnCmluZGV4IGEzOWVlOWQuLjdkYzQ0MDggMTAwNjQ0Ci0tLSBhL2JvYXJkL2xhbnRlYy91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2xhbnRlYy91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbGlua3N0YXRpb24vYXZyLmMgYi9ib2FyZC9saW5rc3RhdGlvbi9hdnIuYwppbmRleCA2OGJjNTQ1Li5hNjg5YzYzIDEwMDY0NAotLS0gYS9ib2FyZC9saW5rc3RhdGlvbi9hdnIuYworKysgYi9ib2FyZC9saW5rc3RhdGlvbi9hdnIuYwpAQCAtMzUsNyArMzUsNyBAQAogLyogTEVEIGNvbW1hbmRzICovCiAjZGVmaW5lIFBXUkJMSU5LU1RSVAkJJ1snCQkvKiBCbGluayBwb3dlciBMRUQJKi8KICNkZWZpbmUgUFdSQkxJTktTVE9QCQknWicJCS8qIFNvbGlkIHBvd2VyIExFRAkqLwotI2RlZmluZSBIRERMRURPTgkJJ1cnCQkvKiBIREQgTEVEIG9uIAkJKi8KKyNkZWZpbmUgSERETEVET04JCSdXJwkJLyogSEREIExFRCBvbgkJKi8KICNkZWZpbmUgSERETEVET0ZGCQknVicJCS8qIEhERCBMRUQgb2ZmCQkqLwogI2RlZmluZSBIRERCTElOS1NUUlQJCSdZJwkJLyogSEREIExFRCBzdGFydCBibGluawkqLwogI2RlZmluZSBIRERCTElOS1NUT1AJCSdYJwkJLyogSEREIExFRCBzdG9wIGJsaW5rCSovCkBAIC01Nyw3ICs1Nyw3IEBACiAJIm5jIiwKICNlbmRpZgogfTsKLSNkZWZpbmUgTUFYX0NPTlNfQ0hPSUNFIAkoc2l6ZW9mKGNvbnNvbGVzKS9zaXplb2YoY2hhciAqKSkKKyNkZWZpbmUgTUFYX0NPTlNfQ0hPSUNFCQkoc2l6ZW9mKGNvbnNvbGVzKS9zaXplb2YoY2hhciAqKSkKIAogI2lmICFkZWZpbmVkKENPTkZJR19ORVRDT05TT0xFKQogI2RlZmluZSBERUZfQ09OU19DSE9JQ0UJCTAKZGlmZiAtLWdpdCBhL2JvYXJkL2xvZ29kbC9mbGFzaC5jIGIvYm9hcmQvbG9nb2RsL2ZsYXNoLmMKaW5kZXggYTk0NzczMS4uMDgwN2I4MCAxMDA2NDQKLS0tIGEvYm9hcmQvbG9nb2RsL2ZsYXNoLmMKKysrIGIvYm9hcmQvbG9nb2RsL2ZsYXNoLmMKQEAgLTU5Myw3ICs1OTMsNyBAQAogICogQHBhcmFtIGluZm86CiAgKiBAcGFyYW0gc3JjOglzb3VyY2Ugb2YgY29weSB0cmFuc2FjdGlvbgogICogQHBhcmFtIGFkZHI6CXdoZXJlIHRvIGNvcHkgdG8KLSAqIEBwYXJhbSBjbnQ6IAludW1iZXIgb2YgYnl0ZXMgdG8gY29weQorICogQHBhcmFtIGNudDoJbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkKICAqCiAgKiBAcmV0dXJuCWVycm9yIGNvZGUKICAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbG9nb2RsL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2xvZ29kbC9sb3dsZXZlbF9pbml0LlMKaW5kZXggYWE5ZGNiYS4uNGM5ZjEwZiAxMDA2NDQKLS0tIGEvYm9hcmQvbG9nb2RsL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9sb2dvZGwvbG93bGV2ZWxfaW5pdC5TCkBAIC00Myw3ICs0Myw3IEBACiAKIAogLyoKLSAqIAlNZW1vcnkgc2V0dXAKKyAqCU1lbW9yeSBzZXR1cAogICovCiAKIC5nbG9ibCBsb3dsZXZlbF9pbml0CkBAIC0xMjksOCArMTI5LDggQEAKIC8qbG9vcDogKi8KIC8qICovCiAvKiAgIGxkcglyMCwgPTB4QjAwNzAwMDEgKi8KLS8qICAgbGRyICAgIAlyMSwgPV9MRUQgKi8KLS8qICAgc3RyICAgIAlyMCwgW3IxXQkJLyAgaGV4IGRpc3BsYXkgKi8KKy8qICAgbGRyCXIxLCA9X0xFRCAqLworLyogICBzdHIJcjAsIFtyMV0JCS8gIGhleCBkaXNwbGF5ICovCiAKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTIzOSw3ICsyMzksNyBAQAogCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldCAgICAgKi8KIAkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLQlsZHIgCXIzLCAJPUNGR19NRFJFRlJfVkFMCisJbGRyCXIzLAk9Q0ZHX01EUkVGUl9WQUwKIAlsZHIJcjIsCT0weEZGRgogCWFuZAlyMywJcjMsIHIyCiAJbGRyCXI0LAk9MHgwM2NhNDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvbHBjMjI5MnNvZGltbS9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9scGMyMjkyc29kaW1tL2xvd2xldmVsX2luaXQuUwppbmRleCBhMGU5NzQ3Li40ZThlYjg5IDEwMDY0NAotLS0gYS9ib2FyZC9scGMyMjkyc29kaW1tL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9scGMyMjkyc29kaW1tL2xvd2xldmVsX2luaXQuUwpAQCAtMjMsMTkgKzIzLDE5IEBACiAKIC8qIHNvbWUgcGFyYW1ldGVycyBmb3IgdGhlIGJvYXJkICovCiAvKiBzZXR0aW5nIHVwIHRoZSBtZW1vcnkgKi8KLSNkZWZpbmUgCVNSQU1fU1RBUlQgCTB4NDAwMDAwMDAKLSNkZWZpbmUgCVNSQU1fU0laRQkweDAwMDA0MDAwCi0jZGVmaW5lICAgQkNGRzBfVkFMVUUgMHgxMDAwZmZlZgotI2RlZmluZSAgIEJDRkcxX1ZBTFVFIDB4MTAwMDFDNjEKKyNkZWZpbmUJU1JBTV9TVEFSVAkweDQwMDAwMDAwCisjZGVmaW5lCVNSQU1fU0laRQkweDAwMDA0MDAwCisjZGVmaW5lIEJDRkcwX1ZBTFVFCTB4MTAwMGZmZWYKKyNkZWZpbmUgQkNGRzFfVkFMVUUJMHgxMDAwMUM2MQogCiBfVEVYVF9CQVNFOgogCS53b3JkCVRFWFRfQkFTRQogTUVNTUFQX0FEUjoKIAkud29yZAlNRU1NQVAKIEJDRkcwX0FEUjoKLSAgLndvcmQgQkNGRzAKKwkud29yZAlCQ0ZHMAogX0JDRkcwX1ZBTFVFOgotICAud29yZCBCQ0ZHMF9WQUxVRQorCS53b3JkCUJDRkcwX1ZBTFVFCiBCQ0ZHMV9BRFI6CiAJLndvcmQJQkNGRzEKIF9CQ0ZHMV9WQUxVRToKZGlmZiAtLWdpdCBhL2JvYXJkL2xwZDdhNDB4L2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL2xwZDdhNDB4L2xvd2xldmVsX2luaXQuUwppbmRleCBiM2VkNTVjLi43ODBiOTMxIDEwMDY0NAotLS0gYS9ib2FyZC9scGQ3YTQweC9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvbHBkN2E0MHgvbG93bGV2ZWxfaW5pdC5TCkBAIC0zOCw3ICszOCw3IEBACiAjZGVmaW5lIEJDUlhfSURDWV9TSElGVAkoMCkKIAogLyogQmFuazAgQXN5bmMgRmxhc2ggKi8KLSNkZWZpbmUgQkNSMAkgICAJKDB4ODAwMDIwMDApCisjZGVmaW5lIEJDUjAJCSgweDgwMDAyMDAwKQogI2RlZmluZSBCQ1IwX0ZMQVNICShCQ1JYX01XXzMyIHwgKDB4MDg8PEJDUlhfV1NUMl9TSElGVCkgfCAoMHgwRTw8QkNSWF9XU1QxX1NISUZUKSkKIAogLyogQmFuazEgT3BlbiAqLwpAQCAtNTUsNyArNTUsNyBAQAogLyogQmFuazUgUEMgQ2FyZDIgKi8KIAogLyogQmFuazYgQ1BMRCBJTyBDb250cm9sbGVyIFBlcmlwaGVyYWxzIChzbG93KSAqLwotI2RlZmluZSBCQ1I2CSAJKDB4ODAwMDIwMTgpCisjZGVmaW5lIEJDUjYJCSgweDgwMDAyMDE4KQogI2RlZmluZSBCQ1I2X0NQTERfU0xPVwkoQkNSWF9ERUZBVUxUIHwgQkNSWF9NV18xNikKIAogLyogQmFuazcgQ1BMRCBJTyBDb250cm9sbGVyIFBlcmlwaGVyYWxzIChmYXN0KSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbHViYm9jay9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9sdWJib2NrL2xvd2xldmVsX2luaXQuUwppbmRleCAxNTI3NmU4Li4yYTliY2JmIDEwMDY0NAotLS0gYS9ib2FyZC9sdWJib2NrL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9sdWJib2NrL2xvd2xldmVsX2luaXQuUwpAQCAtNDAsNyArNDAsNyBAQAogCiAKIC8qCi0gKiAJTWVtb3J5IHNldHVwCisgKglNZW1vcnkgc2V0dXAKICAqLwogCiAuZ2xvYmwgbG93bGV2ZWxfaW5pdApkaWZmIC0tZ2l0IGEvYm9hcmQvbHdtb24vcGNtY2lhLmMgYi9ib2FyZC9sd21vbi9wY21jaWEuYwppbmRleCBlYmNhN2EyLi44ODI1YmQ5IDEwMDY0NAotLS0gYS9ib2FyZC9sd21vbi9wY21jaWEuYworKysgYi9ib2FyZC9sd21vbi9wY21jaWEuYwpAQCAtMjA0LDEwICsyMDQsMTAgQEAKIAogCXZhbCA9IDA7CiAJc3dpdGNoKHZjYykgewotCWNhc2UgIDA6IAkJCWJyZWFrOworCWNhc2UgIDA6CQkJYnJlYWs7CiAJY2FzZSAzMzogdmFsID0gTUFYMTYwNF9WQ0NfMzU7CWJyZWFrOwotCWNhc2UgNTA6IAkJCWJyZWFrOwotCWRlZmF1bHQ6IAkJCWdvdG8gZG9uZTsKKwljYXNlIDUwOgkJCWJyZWFrOworCWRlZmF1bHQ6CQkJZ290byBkb25lOwogCX0KIAogCS8qIENoZWNraW5nIHN1cHBvcnRlZCB2b2x0YWdlcyAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbHdtb24vdS1ib290LmxkcyBiL2JvYXJkL2x3bW9uL3UtYm9vdC5sZHMKaW5kZXggOTMwMTU3MS4uYmMxZWE3MyAxMDA2NDQKLS0tIGEvYm9hcmQvbHdtb24vdS1ib290LmxkcworKysgYi9ib2FyZC9sd21vbi91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9sd21vbi91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvbHdtb24vdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA0NGJhZTcwLi4yZWU4MjM3IDEwMDY0NAotLS0gYS9ib2FyZC9sd21vbi91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL2x3bW9uL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2x3bW9uNS91LWJvb3QubGRzIGIvYm9hcmQvbHdtb241L3UtYm9vdC5sZHMKaW5kZXggZGEyYTQwMC4uYjIwZmIxYyAxMDA2NDQKLS0tIGEvYm9hcmQvbHdtb241L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbHdtb241L3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9tNTI3MWV2Yi91LWJvb3QubGRzIGIvYm9hcmQvbTUyNzFldmIvdS1ib290LmxkcwppbmRleCBiYzgzNTM0Li5jMDdkMDIzIDEwMDY0NAotLS0gYS9ib2FyZC9tNTI3MWV2Yi91LWJvb3QubGRzCisrKyBiL2JvYXJkL201MjcxZXZiL3UtYm9vdC5sZHMKQEAgLTM0LDExICszNCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9tNTI3MmMzL3UtYm9vdC5sZHMgYi9ib2FyZC9tNTI3MmMzL3UtYm9vdC5sZHMKaW5kZXggODg0ZmYyZC4uODQyMGM5MSAxMDA2NDQKLS0tIGEvYm9hcmQvbTUyNzJjMy91LWJvb3QubGRzCisrKyBiL2JvYXJkL201MjcyYzMvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL201MjgyZXZiL3UtYm9vdC5sZHMgYi9ib2FyZC9tNTI4MmV2Yi91LWJvb3QubGRzCmluZGV4IGVlYTMyMzAuLmRkMjY2NmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL201MjgyZXZiL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbTUyODJldmIvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL21ieDh4eC91LWJvb3QubGRzIGIvYm9hcmQvbWJ4OHh4L3UtYm9vdC5sZHMKaW5kZXggM2NjZGQzMy4uMjk5OGU4MyAxMDA2NDQKLS0tIGEvYm9hcmQvbWJ4OHh4L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbWJ4OHh4L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9tYng4eHgvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL21ieDh4eC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDk2YzRlMjIuLmZkMjI0NWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL21ieDh4eC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL21ieDh4eC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbWdzdXZkL3UtYm9vdC5sZHMgYi9ib2FyZC9tZ3N1dmQvdS1ib290LmxkcwppbmRleCA3YWIyOWVmLi44YzQ2ZTQ2IDEwMDY0NAotLS0gYS9ib2FyZC9tZ3N1dmQvdS1ib290LmxkcworKysgYi9ib2FyZC9tZ3N1dmQvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbWwyL3UtYm9vdC5sZHMgYi9ib2FyZC9tbDIvdS1ib290LmxkcwppbmRleCA5YTA1YTYxLi5jOTQwNmFkIDEwMDY0NAotLS0gYS9ib2FyZC9tbDIvdS1ib290LmxkcworKysgYi9ib2FyZC9tbDIvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL21sMi91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvbWwyL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggODhkY2FmOS4uMDU1Mjk5NCAxMDA2NDQKLS0tIGEvYm9hcmQvbWwyL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvbWwyL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9tb3Vzc2UvdS1ib290LmxkcyBiL2JvYXJkL21vdXNzZS91LWJvb3QubGRzCmluZGV4IDRlM2I4OWQuLjg2YTFkODUgMTAwNjQ0Ci0tLSBhL2JvYXJkL21vdXNzZS91LWJvb3QubGRzCisrKyBiL2JvYXJkL21vdXNzZS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbW91c3NlL3UtYm9vdC5sZHMucmFtIGIvYm9hcmQvbW91c3NlL3UtYm9vdC5sZHMucmFtCmluZGV4IDY4YzRjY2EuLjQ2Yjk4YTAgMTAwNjQ0Ci0tLSBhL2JvYXJkL21vdXNzZS91LWJvb3QubGRzLnJhbQorKysgYi9ib2FyZC9tb3Vzc2UvdS1ib290Lmxkcy5yYW0KQEAgLTI0LDkgKzI0LDkgQEAKIE9VVFBVVF9BUkNIKHBvd2VycGMpCiAKIE1FTU9SWSB7Ci0gCXJhbSAgKCFyeCkgOiBvcmcgPSAweDAwMDAwMDAwICwgTEVOR1RIID0gOE0KLSAJY29kZSAoIXJ4KSA6IG9yZyA9IDB4MDAwMDIwMDAgLCBMRU5HVEggPSAoNE0gLSAweDIwMDApCi0gCXJvbSAgIChyeCkgOiBvcmcgPSAweGZmZjAwMDAwICwgTEVOR1RIID0gNTEySworCXJhbSAgKCFyeCkgOiBvcmcgPSAweDAwMDAwMDAwICwgTEVOR1RIID0gOE0KKwljb2RlICghcngpIDogb3JnID0gMHgwMDAwMjAwMCAsIExFTkdUSCA9ICg0TSAtIDB4MjAwMCkKKwlyb20gICAocngpIDogb3JnID0gMHhmZmYwMDAwMCAsIExFTkdUSCA9IDUxMksKIH0KIAogU0VDVElPTlMKZGlmZiAtLWdpdCBhL2JvYXJkL21vdXNzZS91LWJvb3QubGRzLnJvbSBiL2JvYXJkL21vdXNzZS91LWJvb3QubGRzLnJvbQppbmRleCA5NTJiZjAxLi4zYmE3YzNjIDEwMDY0NAotLS0gYS9ib2FyZC9tb3Vzc2UvdS1ib290Lmxkcy5yb20KKysrIGIvYm9hcmQvbW91c3NlL3UtYm9vdC5sZHMucm9tCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBjODU0MGV2YWwvdS1ib290LmxkcyBiL2JvYXJkL21wYzg1NDBldmFsL3UtYm9vdC5sZHMKaW5kZXggZWY0ZWE5Ny4uZGFkZmM3ZCAxMDA2NDQKLS0tIGEvYm9hcmQvbXBjODU0MGV2YWwvdS1ib290LmxkcworKysgYi9ib2FyZC9tcGM4NTQwZXZhbC91LWJvb3QubGRzCkBAIC0zNSwxMSArMzUsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5jIGIvYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5jCmluZGV4IDc4NWQyMDQuLjExZDQzNDUgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9jb21tb24vY29tbW9uX3V0aWwuYworKysgYi9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmMKQEAgLTIxOSw3ICsyMTksNyBAQAogCQl1Y2hhciAqYnVmOwogCQkvKiByZXNlcnZlIHNwYWNlIGZvciB1bmNvbXByZXNzZWQgaW1hZ2UgKi8KIAkJaWYgKChidWYgPSBtYWxsb2MoSU1BR0VfU0laRSkpID09IE5VTEwpIHsKLQkJICAgIAlwdXRzKCJJbnN1ZmZpY2llbnQgc3BhY2UgZm9yIGRlY29tcHJlc3Npb25cbiIpOworCQkJcHV0cygiSW5zdWZmaWNpZW50IHNwYWNlIGZvciBkZWNvbXByZXNzaW9uXG4iKTsKIAkJCXJldHVybiAxOwogCQl9CiAKQEAgLTQ2MSw3ICs0NjEsNyBAQAogCiBpbnQgZG9fbXBsY29tbW9uKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotIAl1bG9uZyBzaXplLHNyYyxsZF9hZGRyOworCXVsb25nIHNpemUsc3JjLGxkX2FkZHI7CiAJaW50IHJlc3VsdDsKICNpZiAhZGVmaW5lZChDT05GSUdfUEFUSSkKIAliYWNrdXBfdCBiYWNrOwpAQCAtNDczLDExICs0NzMsMTEgQEAKIAl7CiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0ZEQykKIAkJaWYgKHN0cmNtcChhcmd2WzJdLCAiZmxvcHB5IikgPT0gMCkgewotIAkJCWNoYXIgKmxvY2FsX2FyZ3NbM107CisJCQljaGFyICpsb2NhbF9hcmdzWzNdOwogCQkJZXh0ZXJuIGludCBkb19mZGNib290IChjbWRfdGJsX3QgKiwgaW50LCBpbnQsIGNoYXIgKltdKTsKIAkJCXB1dHMoIlxudXBkYXRpbmcgYm9vdGxvYWRlciBpbWFnZSBmcm9tIGZsb3BweVxuIik7CiAJCQlsb2NhbF9hcmdzWzBdID0gYXJndlswXTsKLQkgICAgCQlpZihhcmdjPT00KSB7CisJCQlpZihhcmdjPT00KSB7CiAJCQkJbG9jYWxfYXJnc1sxXSA9IGFyZ3ZbM107CiAJCQkJbG9jYWxfYXJnc1syXSA9IE5VTEw7CiAJCQkJbGRfYWRkcj1zaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CkBAIC00OTMsNyArNDkzLDcgQEAKIAkJfQogI2VuZGlmCiAJCWlmIChzdHJjbXAoYXJndlsyXSwgIm1lbSIpID09IDApIHsKLQkgICAgCQlpZihhcmdjPT00KSB7CisJCQlpZihhcmdjPT00KSB7CiAJCQkJbGRfYWRkcj1zaW1wbGVfc3RydG91bChhcmd2WzNdLCBOVUxMLCAxNik7CiAJCQl9CiAJCQllbHNlIHsKQEAgLTUyNCw3ICs1MjQsNyBAQAogCSAgICBzcmMmPTB4ZmZmMDAwMDA7CiAJICAgIHNpemU9MDsKIAkgICAgZG8gewotCSAgICAJc2l6ZSsrOworCQlzaXplKys7CiAJCQlwcmludGYoIlxuXG5QYXNzICVsZFxuIixzaXplKTsKIAkJCW1lbV90ZXN0KENGR19NRU1URVNUX1NUQVJULHNyYywxKTsKIAkJCWlmKGN0cmxjKCkpCkBAIC01MzgsNyArNTM4LDcgQEAKICNpZiAhZGVmaW5lZChDT05GSUdfUEFUSSkKIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICJjbGVhcmVudnZhbHVlcyIpID09IDApCiAJewotIAkJaWYgKHN0cmNtcChhcmd2WzJdLCAieWVzIikgPT0gMCkKKwkJaWYgKHN0cmNtcChhcmd2WzJdLCAieWVzIikgPT0gMCkKIAkJewogCQkJY2xlYXJfZW52X3ZhbHVlcygpOwogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmggYi9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmgKaW5kZXggZDRiMWY2OC4uNDY1NzNkYSAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5oCisrKyBiL2JvYXJkL21wbC9jb21tb24vY29tbW9uX3V0aWwuaApAQCAtMjYsNyArMjYsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAJY2hhciBzaWduYXR1cmVbNF07Ci0JY2hhciBzZXJpYWxfbmFtZVsxN107IAkvKiAiTUlQNDA1XzEwMDB4eHh4eCIgKi8KKwljaGFyIHNlcmlhbF9uYW1lWzE3XTsJLyogIk1JUDQwNV8xMDAweHh4eHgiICovCiAJY2hhciBldGhfYWRkclsyMV07CS8qICIwMDo2MDpDMjowYTowMDowMCIgKi8KIH0gYmFja3VwX3Q7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9jb21tb24vZmxhc2guYyBiL2JvYXJkL21wbC9jb21tb24vZmxhc2guYwppbmRleCA2ZjUzMTkyLi5hNDM3ZGFiIDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvY29tbW9uL2ZsYXNoLmMKKysrIGIvYm9hcmQvbXBsL2NvbW1vbi9mbGFzaC5jCkBAIC0zOTgsNyArMzk4LDcgQEAKIAkJcmV0dXJuICgwKTsJCQkvKiBubyBvciB1bmtub3duIGZsYXNoCSovCiAJfQogCXZhbHVlID0gYWRkcjJbMV07CQkJLyogZGV2aWNlIElECQkqLwotCS8qCXByaW50ZigiRGV2aWNlIHZhbHVlICV4XG4iLHZhbHVlKTsgCQkgICAgKi8KKwkvKglwcmludGYoIkRldmljZSB2YWx1ZSAleFxuIix2YWx1ZSk7CQkgICAgKi8KIAlzd2l0Y2ggKHZhbHVlKSB7CiAJY2FzZSAoRkxBU0hfV09SRF9TSVpFKUFNRF9JRF9GMDQwQjoKIAkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfQU0wNDA7CmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvY29tbW9uL2tiZC5jIGIvYm9hcmQvbXBsL2NvbW1vbi9rYmQuYwppbmRleCA3NzI0ZTI0Li45MzFlZDQzIDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvY29tbW9uL2tiZC5jCisrKyBiL2JvYXJkL21wbC9jb21tb24va2JkLmMKQEAgLTUzLDYzICs1Myw2MyBAQAogI2RlZmluZSBLQkRfU1RBVF9LT0JGCQkweDAxCiAjZGVmaW5lIEtCRF9TVEFUX0lCRgkJMHgwMgogI2RlZmluZSBLQkRfU1RBVF9TWVMJCTB4MDQKLSNkZWZpbmUgS0JEX1NUQVRfQ0QJCQkweDA4CisjZGVmaW5lIEtCRF9TVEFUX0NECQkweDA4CiAjZGVmaW5lIEtCRF9TVEFUX0xPQ0sJCTB4MTAKICNkZWZpbmUgS0JEX1NUQVRfTU9CRgkJMHgyMAotI2RlZmluZSBLQkRfU1RBVF9USV9PVVQJMHg0MAotI2RlZmluZSBLQkRfU1RBVF9QQVJFUlIJMHg4MAorI2RlZmluZSBLQkRfU1RBVF9USV9PVVQJCTB4NDAKKyNkZWZpbmUgS0JEX1NUQVRfUEFSRVJSCQkweDgwCiAKLSNkZWZpbmUgS0JEX0lOSVRfVElNRU9VVCAxMDAwCQkvKiBUaW1lb3V0IGluIG1zIGZvciBpbml0aWFsaXppbmcgdGhlIGtleWJvYXJkICovCi0jZGVmaW5lIEtCQ19USU1FT1VUIDI1MAkJCS8qIFRpbWVvdXQgaW4gbXMgZm9yIHNlbmRpbmcgdG8ga2V5Ym9hcmQgY29udHJvbGxlciAqLwotI2RlZmluZSBLQkRfVElNRU9VVCAyMDAwCQkvKiBUaW1lb3V0IGluIG1zIGZvciBrZXlib2FyZCBjb21tYW5kIGFja25vd2xlZGdlICovCisjZGVmaW5lIEtCRF9JTklUX1RJTUVPVVQJMTAwMAkvKiBUaW1lb3V0IGluIG1zIGZvciBpbml0aWFsaXppbmcgdGhlIGtleWJvYXJkICovCisjZGVmaW5lIEtCQ19USU1FT1VUCQkyNTAJLyogVGltZW91dCBpbiBtcyBmb3Igc2VuZGluZyB0byBrZXlib2FyZCBjb250cm9sbGVyICovCisjZGVmaW5lIEtCRF9USU1FT1VUCQkyMDAwCS8qIFRpbWVvdXQgaW4gbXMgZm9yIGtleWJvYXJkIGNvbW1hbmQgYWNrbm93bGVkZ2UgKi8KIC8qCiAgKglLZXlib2FyZCBDb250cm9sbGVyIENvbW1hbmRzCiAgKi8KIAotI2RlZmluZSBLQkRfQ0NNRF9SRUFEX01PREUJCQkweDIwCS8qIFJlYWQgbW9kZSBiaXRzICovCi0jZGVmaW5lIEtCRF9DQ01EX1dSSVRFX01PREUJCQkweDYwCS8qIFdyaXRlIG1vZGUgYml0cyAqLwotI2RlZmluZSBLQkRfQ0NNRF9HRVRfVkVSU0lPTgkJMHhBMQkvKiBHZXQgY29udHJvbGxlciB2ZXJzaW9uICovCisjZGVmaW5lIEtCRF9DQ01EX1JFQURfTU9ERQkweDIwCS8qIFJlYWQgbW9kZSBiaXRzICovCisjZGVmaW5lIEtCRF9DQ01EX1dSSVRFX01PREUJMHg2MAkvKiBXcml0ZSBtb2RlIGJpdHMgKi8KKyNkZWZpbmUgS0JEX0NDTURfR0VUX1ZFUlNJT04JMHhBMQkvKiBHZXQgY29udHJvbGxlciB2ZXJzaW9uICovCiAjZGVmaW5lIEtCRF9DQ01EX01PVVNFX0RJU0FCTEUJMHhBNwkvKiBEaXNhYmxlIG1vdXNlIGludGVyZmFjZSAqLwotI2RlZmluZSBLQkRfQ0NNRF9NT1VTRV9FTkFCTEUJCTB4QTgJLyogRW5hYmxlIG1vdXNlIGludGVyZmFjZSAqLwotI2RlZmluZSBLQkRfQ0NNRF9URVNUX01PVVNFCQkJMHhBOQkvKiBNb3VzZSBpbnRlcmZhY2UgdGVzdCAqLwotI2RlZmluZSBLQkRfQ0NNRF9TRUxGX1RFU1QJCQkweEFBCS8qIENvbnRyb2xsZXIgc2VsZiB0ZXN0ICovCi0jZGVmaW5lIEtCRF9DQ01EX0tCRF9URVNUCQkJCTB4QUIJLyogS2V5Ym9hcmQgaW50ZXJmYWNlIHRlc3QgKi8KLSNkZWZpbmUgS0JEX0NDTURfS0JEX0RJU0FCTEUJCTB4QUQJLyogS2V5Ym9hcmQgaW50ZXJmYWNlIGRpc2FibGUgKi8KLSNkZWZpbmUgS0JEX0NDTURfS0JEX0VOQUJMRQkJCTB4QUUJLyogS2V5Ym9hcmQgaW50ZXJmYWNlIGVuYWJsZSAqLworI2RlZmluZSBLQkRfQ0NNRF9NT1VTRV9FTkFCTEUJMHhBOAkvKiBFbmFibGUgbW91c2UgaW50ZXJmYWNlICovCisjZGVmaW5lIEtCRF9DQ01EX1RFU1RfTU9VU0UJMHhBOQkvKiBNb3VzZSBpbnRlcmZhY2UgdGVzdCAqLworI2RlZmluZSBLQkRfQ0NNRF9TRUxGX1RFU1QJMHhBQQkvKiBDb250cm9sbGVyIHNlbGYgdGVzdCAqLworI2RlZmluZSBLQkRfQ0NNRF9LQkRfVEVTVAkweEFCCS8qIEtleWJvYXJkIGludGVyZmFjZSB0ZXN0ICovCisjZGVmaW5lIEtCRF9DQ01EX0tCRF9ESVNBQkxFCTB4QUQJLyogS2V5Ym9hcmQgaW50ZXJmYWNlIGRpc2FibGUgKi8KKyNkZWZpbmUgS0JEX0NDTURfS0JEX0VOQUJMRQkweEFFCS8qIEtleWJvYXJkIGludGVyZmFjZSBlbmFibGUgKi8KICNkZWZpbmUgS0JEX0NDTURfV1JJVEVfQVVYX09CVUYJMHhEMyAgICAvKiBXcml0ZSB0byBvdXRwdXQgYnVmZmVyIGFzIGlmCiAJCQkJCSAgIGluaXRpYXRlZCBieSB0aGUgYXV4aWxpYXJ5IGRldmljZSAqLwotI2RlZmluZSBLQkRfQ0NNRF9XUklURV9NT1VTRQkJMHhENAkvKiBXcml0ZSB0aGUgZm9sbG93aW5nIGJ5dGUgdG8gdGhlIG1vdXNlICovCisjZGVmaW5lIEtCRF9DQ01EX1dSSVRFX01PVVNFCTB4RDQJLyogV3JpdGUgdGhlIGZvbGxvd2luZyBieXRlIHRvIHRoZSBtb3VzZSAqLwogCiAvKgogICoJS2V5Ym9hcmQgQ29tbWFuZHMKICAqLwogCi0jZGVmaW5lIEtCRF9DTURfU0VUX0xFRFMJCQkJMHhFRAkvKiBTZXQga2V5Ym9hcmQgbGVkcyAqLwotI2RlZmluZSBLQkRfQ01EX1NFVF9SQVRFCQkJCTB4RjMJLyogU2V0IHR5cGVtYXRpYyByYXRlICovCi0jZGVmaW5lIEtCRF9DTURfRU5BQkxFCQkJCQkweEY0CS8qIEVuYWJsZSBzY2FubmluZyAqLwotI2RlZmluZSBLQkRfQ01EX0RJU0FCTEUJCQkJCTB4RjUJLyogRGlzYWJsZSBzY2FubmluZyAqLwotI2RlZmluZSBLQkRfQ01EX1JFU0VUCQkJCQkJMHhGRgkvKiBSZXNldCAqLworI2RlZmluZSBLQkRfQ01EX1NFVF9MRURTCTB4RUQJLyogU2V0IGtleWJvYXJkIGxlZHMgKi8KKyNkZWZpbmUgS0JEX0NNRF9TRVRfUkFURQkweEYzCS8qIFNldCB0eXBlbWF0aWMgcmF0ZSAqLworI2RlZmluZSBLQkRfQ01EX0VOQUJMRQkJMHhGNAkvKiBFbmFibGUgc2Nhbm5pbmcgKi8KKyNkZWZpbmUgS0JEX0NNRF9ESVNBQkxFCQkweEY1CS8qIERpc2FibGUgc2Nhbm5pbmcgKi8KKyNkZWZpbmUgS0JEX0NNRF9SRVNFVAkJMHhGRgkvKiBSZXNldCAqLwogCiAvKgogICoJS2V5Ym9hcmQgUmVwbGllcwogICovCiAKLSNkZWZpbmUgS0JEX1JFUExZX1BPUgkJCQkJCTB4QUEJLyogUG93ZXIgb24gcmVzZXQgKi8KLSNkZWZpbmUgS0JEX1JFUExZX0FDSwkJCQkJCTB4RkEJLyogQ29tbWFuZCBBQ0sgKi8KLSNkZWZpbmUgS0JEX1JFUExZX1JFU0VORAkJCQkweEZFCS8qIENvbW1hbmQgTkFDSywgc2VuZCB0aGUgY21kIGFnYWluICovCisjZGVmaW5lIEtCRF9SRVBMWV9QT1IJCTB4QUEJLyogUG93ZXIgb24gcmVzZXQgKi8KKyNkZWZpbmUgS0JEX1JFUExZX0FDSwkJMHhGQQkvKiBDb21tYW5kIEFDSyAqLworI2RlZmluZSBLQkRfUkVQTFlfUkVTRU5ECTB4RkUJLyogQ29tbWFuZCBOQUNLLCBzZW5kIHRoZSBjbWQgYWdhaW4gKi8KIAogLyoKICAqCVN0YXR1cyBSZWdpc3RlciBCaXRzCiAgKi8KIAotI2RlZmluZSBLQkRfU1RBVF9PQkYgCQkJCQkJMHgwMQkvKiBLZXlib2FyZCBvdXRwdXQgYnVmZmVyIGZ1bGwgKi8KLSNkZWZpbmUgS0JEX1NUQVRfSUJGIAkJCQkJCTB4MDIJLyogS2V5Ym9hcmQgaW5wdXQgYnVmZmVyIGZ1bGwgKi8KLSNkZWZpbmUgS0JEX1NUQVRfU0VMRlRFU1QJCQkJMHgwNAkvKiBTZWxmIHRlc3Qgc3VjY2Vzc2Z1bCAqLwotI2RlZmluZSBLQkRfU1RBVF9DTUQJCQkJCQkweDA4CS8qIExhc3Qgd3JpdGUgd2FzIGEgY29tbWFuZCB3cml0ZSAoMD1kYXRhKSAqLwotI2RlZmluZSBLQkRfU1RBVF9VTkxPQ0tFRAkJCQkweDEwCS8qIFplcm8gaWYga2V5Ym9hcmQgbG9ja2VkICovCi0jZGVmaW5lIEtCRF9TVEFUX01PVVNFX09CRgkJCTB4MjAJLyogTW91c2Ugb3V0cHV0IGJ1ZmZlciBmdWxsICovCi0jZGVmaW5lIEtCRF9TVEFUX0dUTyAJCQkJCQkweDQwCS8qIEdlbmVyYWwgcmVjZWl2ZS94bWl0IHRpbWVvdXQgKi8KLSNkZWZpbmUgS0JEX1NUQVRfUEVSUiAJCQkJCTB4ODAJLyogUGFyaXR5IGVycm9yICovCisjZGVmaW5lIEtCRF9TVEFUX09CRgkJMHgwMQkvKiBLZXlib2FyZCBvdXRwdXQgYnVmZmVyIGZ1bGwgKi8KKyNkZWZpbmUgS0JEX1NUQVRfSUJGCQkweDAyCS8qIEtleWJvYXJkIGlucHV0IGJ1ZmZlciBmdWxsICovCisjZGVmaW5lIEtCRF9TVEFUX1NFTEZURVNUCTB4MDQJLyogU2VsZiB0ZXN0IHN1Y2Nlc3NmdWwgKi8KKyNkZWZpbmUgS0JEX1NUQVRfQ01ECQkweDA4CS8qIExhc3Qgd3JpdGUgd2FzIGEgY29tbWFuZCB3cml0ZSAoMD1kYXRhKSAqLworI2RlZmluZSBLQkRfU1RBVF9VTkxPQ0tFRAkweDEwCS8qIFplcm8gaWYga2V5Ym9hcmQgbG9ja2VkICovCisjZGVmaW5lIEtCRF9TVEFUX01PVVNFX09CRgkweDIwCS8qIE1vdXNlIG91dHB1dCBidWZmZXIgZnVsbCAqLworI2RlZmluZSBLQkRfU1RBVF9HVE8JCTB4NDAJLyogR2VuZXJhbCByZWNlaXZlL3htaXQgdGltZW91dCAqLworI2RlZmluZSBLQkRfU1RBVF9QRVJSCQkweDgwCS8qIFBhcml0eSBlcnJvciAqLwogCiAjZGVmaW5lIEFVWF9TVEFUX09CRiAoS0JEX1NUQVRfT0JGIHwgS0JEX1NUQVRfTU9VU0VfT0JGKQogCkBAIC0xMTcsMjQgKzExNywyNCBAQAogICoJQ29udHJvbGxlciBNb2RlIFJlZ2lzdGVyIEJpdHMKICAqLwogCi0jZGVmaW5lIEtCRF9NT0RFX0tCRF9JTlQJCQkJMHgwMQkvKiBLZXlib2FyZCBkYXRhIGdlbmVyYXRlIElSUTEgKi8KLSNkZWZpbmUgS0JEX01PREVfTU9VU0VfSU5UCQkJMHgwMgkvKiBNb3VzZSBkYXRhIGdlbmVyYXRlIElSUTEyICovCi0jZGVmaW5lIEtCRF9NT0RFX1NZUyAJCQkJCQkweDA0CS8qIFRoZSBzeXN0ZW0gZmxhZyAoPykgKi8KLSNkZWZpbmUgS0JEX01PREVfTk9fS0VZTE9DSwkJCTB4MDgJLyogVGhlIGtleWxvY2sgZG9lc24ndCBhZmZlY3QgdGhlIGtleWJvYXJkIGlmIHNldCAqLwotI2RlZmluZSBLQkRfTU9ERV9ESVNBQkxFX0tCRAkJMHgxMAkvKiBEaXNhYmxlIGtleWJvYXJkIGludGVyZmFjZSAqLworI2RlZmluZSBLQkRfTU9ERV9LQkRfSU5UCTB4MDEJLyogS2V5Ym9hcmQgZGF0YSBnZW5lcmF0ZSBJUlExICovCisjZGVmaW5lIEtCRF9NT0RFX01PVVNFX0lOVAkweDAyCS8qIE1vdXNlIGRhdGEgZ2VuZXJhdGUgSVJRMTIgKi8KKyNkZWZpbmUgS0JEX01PREVfU1lTCQkweDA0CS8qIFRoZSBzeXN0ZW0gZmxhZyAoPykgKi8KKyNkZWZpbmUgS0JEX01PREVfTk9fS0VZTE9DSwkweDA4CS8qIFRoZSBrZXlsb2NrIGRvZXNuJ3QgYWZmZWN0IHRoZSBrZXlib2FyZCBpZiBzZXQgKi8KKyNkZWZpbmUgS0JEX01PREVfRElTQUJMRV9LQkQJMHgxMAkvKiBEaXNhYmxlIGtleWJvYXJkIGludGVyZmFjZSAqLwogI2RlZmluZSBLQkRfTU9ERV9ESVNBQkxFX01PVVNFCTB4MjAJLyogRGlzYWJsZSBtb3VzZSBpbnRlcmZhY2UgKi8KLSNkZWZpbmUgS0JEX01PREVfS0NDIAkJCQkJCTB4NDAJLyogU2NhbiBjb2RlIGNvbnZlcnNpb24gdG8gUEMgZm9ybWF0ICovCi0jZGVmaW5lIEtCRF9NT0RFX1JGVQkJCQkJCTB4ODAKKyNkZWZpbmUgS0JEX01PREVfS0NDCQkweDQwCS8qIFNjYW4gY29kZSBjb252ZXJzaW9uIHRvIFBDIGZvcm1hdCAqLworI2RlZmluZSBLQkRfTU9ERV9SRlUJCTB4ODAKIAogCi0jZGVmaW5lIEtEQl9EQVRBX1BPUlQJCQkweDYwCisjZGVmaW5lIEtEQl9EQVRBX1BPUlQJCTB4NjAKICNkZWZpbmUgS0RCX0NPTU1BTkRfUE9SVAkweDY0CiAKLSNkZWZpbmUgCUxFRF9TQ1IJCTB4MDEJLyogc2Nyb2xsIGxvY2sgbGVkICovCi0jZGVmaW5lIAlMRURfQ0FQCQkweDA0CS8qIGNhcHMgbG9jayBsZWQgKi8KLSNkZWZpbmUgCUxFRF9OVU0JCTB4MDIJLyogbnVtIGxvY2sgbGVkICovCisjZGVmaW5lCUxFRF9TQ1IJCQkweDAxCS8qIHNjcm9sbCBsb2NrIGxlZCAqLworI2RlZmluZQlMRURfQ0FQCQkJMHgwNAkvKiBjYXBzIGxvY2sgbGVkICovCisjZGVmaW5lCUxFRF9OVU0JCQkweDAyCS8qIG51bSBsb2NrIGxlZCAqLwogCi0jZGVmaW5lIAlLQkRfQlVGRkVSX0xFTiAweDIwICAvKiBzaXplIG9mIHRoZSBrZXlib2FyZGJ1ZmZlciAqLworI2RlZmluZQlLQkRfQlVGRkVSX0xFTgkJMHgyMAkvKiBzaXplIG9mIHRoZSBrZXlib2FyZGJ1ZmZlciAqLwogCiAKIHN0YXRpYyB2b2xhdGlsZSBjaGFyIGtiZF9idWZmZXJbS0JEX0JVRkZFUl9MRU5dOwpAQCAtMTk3LDggKzE5Nyw3IEBACiAJCWlycV9pbnN0YWxsX2hhbmRsZXIoMjUsIChpbnRlcnJ1cHRfaGFuZGxlcl90ICopaGFuZGxlX2lzYV9pbnQsIE5VTEwpOwogCQlpc2FfaXJxX2luc3RhbGxfaGFuZGxlcihLQkRfSU5URVJSVVBULCAoaW50ZXJydXB0X2hhbmRsZXJfdCAqKWtiZF9pbnRlcnJ1cHQsIE5VTEwpOwogCQlyZXR1cm4gKDEpOwotCX0KLQllbHNlIHsKKwl9IGVsc2UgewogCQlwcmludGYoIiVzXG4iLHJlc3VsdCk7CiAJCXJldHVybiAoLTEpOwogCX0KQEAgLTIxNiwyMCArMjE1LDIwIEBACiBpbnQgZHJ2X2lzYV9rYmRfaW5pdCAodm9pZCkKIHsKIAlpbnQgZXJyb3I7Ci0gIAlkZXZpY2VfdCBrYmRkZXYgOworCWRldmljZV90IGtiZGRldiA7CiAJY2hhciAqc3RkaW5uYW1lICA9IGdldGVudiAoInN0ZGluIik7CiAKIAlpZihpc2Ffa2JkX2luaXQoKT09LTEpCiAJCXJldHVybiAtMTsKLSAgCW1lbXNldCAoJmtiZGRldiwgMCwgc2l6ZW9mKGtiZGRldikpOwotICAJc3RyY3B5KGtiZGRldi5uYW1lLCBERVZOQU1FKTsKLSAgCWtiZGRldi5mbGFncyA9ICBERVZfRkxBR1NfSU5QVVQgfCBERVZfRkxBR1NfU1lTVEVNOwotICAJa2JkZGV2LnB1dGMgPSBOVUxMIDsKKwltZW1zZXQgKCZrYmRkZXYsIDAsIHNpemVvZihrYmRkZXYpKTsKKwlzdHJjcHkoa2JkZGV2Lm5hbWUsIERFVk5BTUUpOworCWtiZGRldi5mbGFncyA9ICBERVZfRkxBR1NfSU5QVVQgfCBERVZfRkxBR1NfU1lTVEVNOworCWtiZGRldi5wdXRjID0gTlVMTCA7CiAJa2JkZGV2LnB1dHMgPSBOVUxMIDsKIAlrYmRkZXYuZ2V0YyA9IGtiZF9nZXRjIDsKIAlrYmRkZXYudHN0YyA9IGtiZF90ZXN0YyA7CiAKLSAJZXJyb3IgPSBkZXZpY2VfcmVnaXN0ZXIgKCZrYmRkZXYpOworCWVycm9yID0gZGV2aWNlX3JlZ2lzdGVyICgma2JkZGV2KTsKIAlpZihlcnJvcj09MCkgewogCQkvKiBjaGVjayBpZiB0aGlzIGlzIHRoZSBzdGFuZGFyZCBpbnB1dCBkZXZpY2UgKi8KIAkJaWYoc3RyY21wKHN0ZGlubmFtZSxERVZOQU1FKT09MCkgewpAQCAtMzEzLDEwNiArMzEyLDEwNiBAQAogfQogCiAKLXZvaWQgaGFuZGxlX2tleWJvYXJkX2V2ZW50KHVuc2lnbmVkIGNoYXIgc2NhbmNvZGUpCit2b2lkIGhhbmRsZV9rZXlib2FyZF9ldmVudCAodW5zaWduZWQgY2hhciBzY2FuY29kZSkKIHsKIAl1bnNpZ25lZCBjaGFyIGtleWNvZGU7CiAKIAkvKiAgQ29udmVydCBzY2FuY29kZSB0byBrZXljb2RlICovCi0JUFJJTlRGKCJzY2FuY29kZSAleFxuIixzY2FuY29kZSk7Ci0JaWYoc2NhbmNvZGU9PTB4ZTApIHsKLQkJZTA9MTsgLyogc3BlY2lhbCBjaGFyYWt0ZXJzICovCisJUFJJTlRGICgic2NhbmNvZGUgJXhcbiIsIHNjYW5jb2RlKTsKKwlpZiAoc2NhbmNvZGUgPT0gMHhlMCkgeworCQllMCA9IDE7CQkvKiBzcGVjaWFsIGNoYXJha3RlcnMgKi8KIAkJcmV0dXJuOwogCX0KLQlpZihlMD09MSkgewotCQllMD0wOyAvKiBkZWxldGUgZmxhZyAqLwotCQlpZighKAkoKHNjYW5jb2RlJjB4N0YpPT0weDM4KXx8IC8qIHRoZSByaWdodCBjdHJsIGtleSAqLwotCQkJCQkoKHNjYW5jb2RlJjB4N0YpPT0weDFEKXx8IC8qIHRoZSByaWdodCBhbHQga2V5ICovCi0JCQkJCSgoc2NhbmNvZGUmMHg3Rik9PTB4MzUpfHwJLyogdGhlIHJpZ2h0ICcvJyBrZXkgKi8KLQkJCQkJKChzY2FuY29kZSYweDdGKT09MHgxQykgKSkgIC8qIHRoZSByaWdodCBlbnRlciBrZXkgKi8KKwlpZiAoZTAgPT0gMSkgeworCQllMCA9IDA7CQkvKiBkZWxldGUgZmxhZyAqLworCQlpZiAoISgoKHNjYW5jb2RlICYgMHg3RikgPT0gMHgzOCkgfHwJLyogdGhlIHJpZ2h0IGN0cmwga2V5ICovCisJCSAgICAgICgoc2NhbmNvZGUgJiAweDdGKSA9PSAweDFEKSB8fAkvKiB0aGUgcmlnaHQgYWx0IGtleSAqLworCQkgICAgICAoKHNjYW5jb2RlICYgMHg3RikgPT0gMHgzNSkgfHwJLyogdGhlIHJpZ2h0ICcvJyBrZXkgKi8KKwkJICAgICAgKChzY2FuY29kZSAmIDB4N0YpID09IDB4MUMpKSkKKwkJCS8qIHRoZSByaWdodCBlbnRlciBrZXkgKi8KIAkJCS8qIHdlIHN3YWxsb3cgdW5rbm93biBlMCBjb2RlcyAqLwogCQkJcmV0dXJuOwogCX0KIAkvKiBzcGVjaWFsIGNudHJsIGtleXMgKi8KLQlzd2l0Y2goc2NhbmNvZGUpCi0JewotCQljYXNlIDB4MkE6Ci0JCWNhc2UgMHgzNjogLyogc2hpZnQgcHJlc3NlZCAqLwotCQkJc2hpZnQ9MTsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHhBQToKLQkJY2FzZSAweEI2OiAvKiBzaGlmdCByZWxlYXNlZCAqLwotCQkJc2hpZnQ9MDsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHgzODogLyogYWx0IHByZXNzZWQgKi8KLQkJCWFsdD0xOwotCQkJcmV0dXJuOyAvKiBkbyBub3RoaW5nIGVsc2UgKi8KLQkJY2FzZSAweEI4OiAvKiBhbHQgcmVsZWFzZWQgKi8KLQkJCWFsdD0wOwotCQkJcmV0dXJuOyAvKiBkbyBub3RoaW5nIGVsc2UgKi8KLQkJY2FzZSAweDFkOiAvKiBjdHJsIHByZXNzZWQgKi8KLQkJCWN0cmw9MTsKLQkJCXJldHVybjsgLyogZG8gbm90aGluZyBlbHNlICovCi0JCWNhc2UgMHg5ZDogLyogY3RybCByZWxlYXNlZCAqLwotCQkJY3RybD0wOwotCQkJcmV0dXJuOyAvKiBkbyBub3RoaW5nIGVsc2UgKi8KLQkJY2FzZSAweDQ2OiAvKiBzY3JvbGxvY2sgcHJlc3NlZCAqLwotCQkJc2Nyb2xsX2xvY2s9fnNjcm9sbF9sb2NrOwotCQkJa2JkX3NldF9sZWRzKCk7Ci0JCQlyZXR1cm47IC8qIGRvIG5vdGhpbmcgZWxzZSAqLwotCQljYXNlIDB4M0E6IC8qIGNhcHNsb2NrIHByZXNzZWQgKi8KLQkJCWNhcHNfbG9jaz1+Y2Fwc19sb2NrOwotCQkJa2JkX3NldF9sZWRzKCk7Ci0JCQlyZXR1cm47Ci0JCWNhc2UgMHg0NTogLyogbnVtbG9jayBwcmVzc2VkICovCi0JCQludW1fbG9jaz1+bnVtX2xvY2s7Ci0JCQlrYmRfc2V0X2xlZHMoKTsKLQkJCXJldHVybjsKLQkJY2FzZSAweEM2OiAvKiBzY3JvbGwgbG9jayByZWxlYXNlZCAqLwotCQljYXNlIDB4QzU6IC8qIG51bSBsb2NrIHJlbGVhc2VkICovCi0JCWNhc2UgMHhCQTogLyogY2FwcyBsb2NrIHJlbGVhc2VkICovCi0JCQlyZXR1cm47IC8qIGp1c3Qgc3dhbGxvdyAqLworCXN3aXRjaCAoc2NhbmNvZGUpIHsKKwljYXNlIDB4MkE6CisJY2FzZSAweDM2OgkJLyogc2hpZnQgcHJlc3NlZCAqLworCQlzaGlmdCA9IDE7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHhBQToKKwljYXNlIDB4QjY6CQkvKiBzaGlmdCByZWxlYXNlZCAqLworCQlzaGlmdCA9IDA7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHgzODoJCS8qIGFsdCBwcmVzc2VkICovCisJCWFsdCA9IDE7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHhCODoJCS8qIGFsdCByZWxlYXNlZCAqLworCQlhbHQgPSAwOworCQlyZXR1cm47CQkvKiBkbyBub3RoaW5nIGVsc2UgKi8KKwljYXNlIDB4MWQ6CQkvKiBjdHJsIHByZXNzZWQgKi8KKwkJY3RybCA9IDE7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHg5ZDoJCS8qIGN0cmwgcmVsZWFzZWQgKi8KKwkJY3RybCA9IDA7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHg0NjoJCS8qIHNjcm9sbG9jayBwcmVzc2VkICovCisJCXNjcm9sbF9sb2NrID0gfnNjcm9sbF9sb2NrOworCQlrYmRfc2V0X2xlZHMgKCk7CisJCXJldHVybjsJCS8qIGRvIG5vdGhpbmcgZWxzZSAqLworCWNhc2UgMHgzQToJCS8qIGNhcHNsb2NrIHByZXNzZWQgKi8KKwkJY2Fwc19sb2NrID0gfmNhcHNfbG9jazsKKwkJa2JkX3NldF9sZWRzICgpOworCQlyZXR1cm47CisJY2FzZSAweDQ1OgkJLyogbnVtbG9jayBwcmVzc2VkICovCisJCW51bV9sb2NrID0gfm51bV9sb2NrOworCQlrYmRfc2V0X2xlZHMgKCk7CisJCXJldHVybjsKKwljYXNlIDB4QzY6CQkvKiBzY3JvbGwgbG9jayByZWxlYXNlZCAqLworCWNhc2UgMHhDNToJCS8qIG51bSBsb2NrIHJlbGVhc2VkICovCisJY2FzZSAweEJBOgkJLyogY2FwcyBsb2NrIHJlbGVhc2VkICovCisJCXJldHVybjsJCS8qIGp1c3Qgc3dhbGxvdyAqLwogCX0KLQlpZigoc2NhbmNvZGUmMHg4MCk9PTB4ODApIC8qIGtleSByZWxlYXNlZCAqLworCWlmICgoc2NhbmNvZGUgJiAweDgwKSA9PSAweDgwKQkvKiBrZXkgcmVsZWFzZWQgKi8KIAkJcmV0dXJuOwogCS8qIG5vdywgZGVjaWRlIHdoaWNoIHRhYmxlIHdlIG5lZWQgKi8KLQlpZihzY2FuY29kZSA+IChzaXplb2Yoa2JkX3BsYWluX3hsYXRlKS9zaXplb2Yoa2JkX3BsYWluX3hsYXRlWzBdKSkpIHsgLyogc2NhbmNvZGUgbm90IGluIGxpc3QgKi8KLQkJUFJJTlRGKCJ1bmtvd24gc2NhbmNvZGUgJVhcbiIsc2NhbmNvZGUpOwotCQlyZXR1cm47IC8qIHN3YWxsb3cgaXQgKi8KKwlpZiAoc2NhbmNvZGUgPiAoc2l6ZW9mIChrYmRfcGxhaW5feGxhdGUpIC8gc2l6ZW9mIChrYmRfcGxhaW5feGxhdGVbMF0pKSkgewkvKiBzY2FuY29kZSBub3QgaW4gbGlzdCAqLworCQlQUklOVEYgKCJ1bmtvd24gc2NhbmNvZGUgJVhcbiIsIHNjYW5jb2RlKTsKKwkJcmV0dXJuOwkJLyogc3dhbGxvdyBpdCAqLwogCX0KIAkvKiBzZXR1cCBwbGFpbiBjb2RlIGZpcnN0ICovCi0Ja2V5Y29kZT1rYmRfcGxhaW5feGxhdGVbc2NhbmNvZGVdOwotCWlmKGNhcHNfbG9jaz09MSkgeyAvKiBjYXBzX2xvY2sgaXMgcHJlc3NlZCwgb3ZlcndyaXRlIHBsYWluIGNvZGUgKi8KLQkJaWYoc2NhbmNvZGUgPiAoc2l6ZW9mKGtiZF9zaGlmdF94bGF0ZSkvc2l6ZW9mKGtiZF9zaGlmdF94bGF0ZVswXSkpKSB7IC8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCi0JCQlQUklOVEYoInVua293biBjYXBzLWxvY2tlZCBzY2FuY29kZSAlWFxuIixzY2FuY29kZSk7Ci0JCQlyZXR1cm47IC8qIHN3YWxsb3cgaXQgKi8KKwlrZXljb2RlID0ga2JkX3BsYWluX3hsYXRlW3NjYW5jb2RlXTsKKwlpZiAoY2Fwc19sb2NrID09IDEpIHsJLyogY2Fwc19sb2NrIGlzIHByZXNzZWQsIG92ZXJ3cml0ZSBwbGFpbiBjb2RlICovCisJCWlmIChzY2FuY29kZSA+IChzaXplb2YgKGtiZF9zaGlmdF94bGF0ZSkgLyBzaXplb2YgKGtiZF9zaGlmdF94bGF0ZVswXSkpKSB7CS8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCisJCQlQUklOVEYgKCJ1bmtvd24gY2Fwcy1sb2NrZWQgc2NhbmNvZGUgJVhcbiIsIHNjYW5jb2RlKTsKKwkJCXJldHVybjsJLyogc3dhbGxvdyBpdCAqLwogCQl9Ci0JCWtleWNvZGU9a2JkX3NoaWZ0X3hsYXRlW3NjYW5jb2RlXTsKLQkJaWYoa2V5Y29kZTwnQScpIHsgLyogd2Ugb25seSB3YW50IHRoZSBhbHBoYXMgY2FwaXRhbCAqLwotCQkJa2V5Y29kZT1rYmRfcGxhaW5feGxhdGVbc2NhbmNvZGVdOworCQlrZXljb2RlID0ga2JkX3NoaWZ0X3hsYXRlW3NjYW5jb2RlXTsKKwkJaWYgKGtleWNvZGUgPCAnQScpIHsJLyogd2Ugb25seSB3YW50IHRoZSBhbHBoYXMgY2FwaXRhbCAqLworCQkJa2V5Y29kZSA9IGtiZF9wbGFpbl94bGF0ZVtzY2FuY29kZV07CiAJCX0KIAl9Ci0JaWYoc2hpZnQ9PTEpIHsgLyogc2hpZnQgb3ZlcndyaXRlcyBjYXBzX2xvY2sgKi8KLQkJaWYoc2NhbmNvZGUgPiAoc2l6ZW9mKGtiZF9zaGlmdF94bGF0ZSkvc2l6ZW9mKGtiZF9zaGlmdF94bGF0ZVswXSkpKSB7IC8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCi0JCQlQUklOVEYoInVua293biBzaGlmdGVkIHNjYW5jb2RlICVYXG4iLHNjYW5jb2RlKTsKLQkJCXJldHVybjsgLyogc3dhbGxvdyBpdCAqLworCWlmIChzaGlmdCA9PSAxKSB7CS8qIHNoaWZ0IG92ZXJ3cml0ZXMgY2Fwc19sb2NrICovCisJCWlmIChzY2FuY29kZSA+IChzaXplb2YgKGtiZF9zaGlmdF94bGF0ZSkgLyBzaXplb2YgKGtiZF9zaGlmdF94bGF0ZVswXSkpKSB7CS8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCisJCQlQUklOVEYgKCJ1bmtvd24gc2hpZnRlZCBzY2FuY29kZSAlWFxuIiwgc2NhbmNvZGUpOworCQkJcmV0dXJuOwkvKiBzd2FsbG93IGl0ICovCiAJCX0KLQkJa2V5Y29kZT1rYmRfc2hpZnRfeGxhdGVbc2NhbmNvZGVdOworCQlrZXljb2RlID0ga2JkX3NoaWZ0X3hsYXRlW3NjYW5jb2RlXTsKIAl9Ci0JaWYoY3RybD09MSkgeyAvKiBjdHJsIG92ZXJ3cml0ZXMgY2Fwc19sb2NrIGFuZCBzaGlmdCAqLwotCQlpZihzY2FuY29kZSA+IChzaXplb2Yoa2JkX2N0cmxfeGxhdGUpL3NpemVvZihrYmRfY3RybF94bGF0ZVswXSkpKSB7IC8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCi0JCQlQUklOVEYoInVua293biBjdHJsIHNjYW5jb2RlICVYXG4iLHNjYW5jb2RlKTsKLQkJCXJldHVybjsgLyogc3dhbGxvdyBpdCAqLworCWlmIChjdHJsID09IDEpIHsJLyogY3RybCBvdmVyd3JpdGVzIGNhcHNfbG9jayBhbmQgc2hpZnQgKi8KKwkJaWYgKHNjYW5jb2RlID4gKHNpemVvZiAoa2JkX2N0cmxfeGxhdGUpIC8gc2l6ZW9mIChrYmRfY3RybF94bGF0ZVswXSkpKSB7CS8qIHNjYW5jb2RlIG5vdCBpbiBsaXN0ICovCisJCQlQUklOVEYgKCJ1bmtvd24gY3RybCBzY2FuY29kZSAlWFxuIiwgc2NhbmNvZGUpOworCQkJcmV0dXJuOwkvKiBzd2FsbG93IGl0ICovCiAJCX0KLQkJa2V5Y29kZT1rYmRfY3RybF94bGF0ZVtzY2FuY29kZV07CisJCWtleWNvZGUgPSBrYmRfY3RybF94bGF0ZVtzY2FuY29kZV07CiAJfQogCS8qIGNoZWNrIGlmIHZhbGlkIGtleWNvZGUgKi8KLQlpZihrZXljb2RlPT0weGZmKSB7Ci0JCVBSSU5URigidW5rb3duIHNjYW5jb2RlICVYXG4iLHNjYW5jb2RlKTsKLQkJcmV0dXJuOyAvKiBzd2FsbG93IHVua25vd24gY29kZXMgKi8KKwlpZiAoa2V5Y29kZSA9PSAweGZmKSB7CisJCVBSSU5URiAoInVua293biBzY2FuY29kZSAlWFxuIiwgc2NhbmNvZGUpOworCQlyZXR1cm47CQkvKiBzd2FsbG93IHVua25vd24gY29kZXMgKi8KIAl9CiAKLQlrYmRfcHV0X3F1ZXVlKGtleWNvZGUpOwotCVBSSU5URigiJXhcbiIsa2V5Y29kZSk7CisJa2JkX3B1dF9xdWV1ZSAoa2V5Y29kZSk7CisJUFJJTlRGICgiJXhcbiIsIGtleWNvZGUpOwogfQogCiAvKgpAQCAtNTgzLDggKzU4Miw3IEBACiAJCXN0YXR1cyA9IGtiZF93YWl0X2Zvcl9pbnB1dCgpOwogCQlpZiAoc3RhdHVzID09IEtCRF9SRVBMWV9BQ0spCiAJCQlicmVhazsKLQkJaWYgKHN0YXR1cyAhPSBLQkRfUkVQTFlfUkVTRU5EKQotCQl7CisJCWlmIChzdGF0dXMgIT0gS0JEX1JFUExZX1JFU0VORCkgewogCQkJUFJJTlRGKCJzdGF0dXM6ICVYXG4iLHN0YXR1cyk7CiAJCQlyZXR1cm4gIktiZDogICByZXNldCBmYWlsZWQsIG5vIEFDSyI7CiAJCX0KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9jb21tb24vbWVtdHN0LmMgYi9ib2FyZC9tcGwvY29tbW9uL21lbXRzdC5jCmluZGV4IDFkMjg1MTMuLjEzOTNlYTEgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9jb21tb24vbWVtdHN0LmMKKysrIGIvYm9hcmQvbXBsL2NvbW1vbi9tZW10c3QuYwpAQCAtNTUsOSArNTUsOSBAQAogI2RlZmluZSBGQUxTRSAgICAgICAgICAgMAogI2RlZmluZSBUUlVFICAgICAgICAgICAgMQogCi0jZGVmaW5lIFRFU1RfUVVJRVQgCTgKLSNkZWZpbmUgVEVTVF9TSE9XX1BST0cgCTQKLSNkZWZpbmUgVEVTVF9TSE9XX0VSUiAJMgorI2RlZmluZSBURVNUX1FVSUVUCTgKKyNkZWZpbmUgVEVTVF9TSE9XX1BST0cJNAorI2RlZmluZSBURVNUX1NIT1dfRVJSCTIKICNkZWZpbmUgVEVTVF9TSE9XX0FMTAkxCiAKICNkZWZpbmUgVEVTVFBBVDEgMHhBQTU1QUE1NQpAQCAtNDczLDE5ICs0NzMsMTkgQEAKIAl1bnNpZ25lZCBsb25nIGFkZHI7CiAJaW50IGk7CiAJZm9yIChpPTA7IGk8IFRFU1RfU1RBR0VTOyBpKyspIHsKLSAJCWFkZHIgPSAodWxvbmcpICh0ZXN0X3N0YWdlW2ldLnRlc3Rfd3JpdGUpICsgZ2QtPnJlbG9jX29mZjsKKwkJYWRkciA9ICh1bG9uZykgKHRlc3Rfc3RhZ2VbaV0udGVzdF93cml0ZSkgKyBnZC0+cmVsb2Nfb2ZmOwogCQl0ZXN0X3N0YWdlW2ldLnRlc3Rfd3JpdGU9CiAJCQkodm9pZCAoKikgKHVuc2lnbmVkIGxvbmcgc3RhcnRhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUsCiAJCQkJCQl1bnNpZ25lZCBsb25nICpwYXQpKWFkZHI7Ci0gCQlhZGRyID0gKHVsb25nKSAodGVzdF9zdGFnZVtpXS50ZXN0X3dyaXRlX2Rlc2MpICsgZ2QtPnJlbG9jX29mZjsKKwkJYWRkciA9ICh1bG9uZykgKHRlc3Rfc3RhZ2VbaV0udGVzdF93cml0ZV9kZXNjKSArIGdkLT5yZWxvY19vZmY7CiAJCXRlc3Rfc3RhZ2VbaV0udGVzdF93cml0ZV9kZXNjPShjaGFyICopYWRkcjsKLSAJCWlmKHRlc3Rfc3RhZ2VbaV0udGVzdF9jaGVjazEpIHsKKwkJaWYodGVzdF9zdGFnZVtpXS50ZXN0X2NoZWNrMSkgewogCQkJYWRkciA9ICh1bG9uZykgKHRlc3Rfc3RhZ2VbaV0udGVzdF9jaGVjazEpICsgZ2QtPnJlbG9jX29mZjsKIAkJCXRlc3Rfc3RhZ2VbaV0udGVzdF9jaGVjazE9CiAJCQkJKHZvaWQgKigqKSAoaW50IG1vZGUsIHVuc2lnbmVkIGxvbmcgc3RhcnRhZGRyLAogCQkJCSB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgKnBhdCkpYWRkcjsKIAkJfQotIAkJaWYodGVzdF9zdGFnZVtpXS50ZXN0X2NoZWNrMikgeworCQlpZih0ZXN0X3N0YWdlW2ldLnRlc3RfY2hlY2syKSB7CiAJCQlhZGRyID0gKHVsb25nKSAodGVzdF9zdGFnZVtpXS50ZXN0X2NoZWNrMikgKyBnZC0+cmVsb2Nfb2ZmOwogCQkJdGVzdF9zdGFnZVtpXS50ZXN0X2NoZWNrMj0KIAkJCQkodm9pZCAqKCopIChpbnQgbW9kZSwgdW5zaWduZWQgbG9uZyBzdGFydGFkZHIsCmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvY29tbW9uL3BjaS5jIGIvYm9hcmQvbXBsL2NvbW1vbi9wY2kuYwppbmRleCBiZGUxNGJlLi5iZmQ2NDI4IDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvY29tbW9uL3BjaS5jCisrKyBiL2JvYXJkL21wbC9jb21tb24vcGNpLmMKQEAgLTk3LDcgKzk3LDcgQEAKIAl1bnNpZ25lZCBsb25nIGFkZHI7CiAKIAlmb3IgKDsgdGFibGUgJiYgdGFibGUtPnZlbmRvcjsgdGFibGUrKykgewotIAkJYWRkciA9ICh1bG9uZykgKHRhYmxlLT5jb25maWdfZGV2aWNlKSArIGdkLT5yZWxvY19vZmY7CisJCWFkZHIgPSAodWxvbmcpICh0YWJsZS0+Y29uZmlnX2RldmljZSkgKyBnZC0+cmVsb2Nfb2ZmOwogI2lmZGVmIERFQlVHCiAJCXByaW50ZiAoImRldmljZSBcIiVkXCI6IDB4JTA4bHggPT4gMHglMDhseFxuIiwKIAkJCQl0YWJsZS0+ZGV2aWNlLCAodWxvbmcpICh0YWJsZS0+Y29uZmlnX2RldmljZSksIGFkZHIpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL2NvbW1vbi9wY2lfcGFydHMuaCBiL2JvYXJkL21wbC9jb21tb24vcGNpX3BhcnRzLmgKaW5kZXggNjAwMDhlMi4uN2JjYTk2MSAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL2NvbW1vbi9wY2lfcGFydHMuaAorKysgYi9ib2FyZC9tcGwvY29tbW9uL3BjaV9wYXJ0cy5oCkBAIC04MCw5ICs4MCw5IEBACiAgKi8KIAogc3RydWN0IHBjaV9waXA0MDVfY29uZmlnX2VudHJ5IHsKLQlpbnQgCQlpbmRleDsgCS8qIGFkZHJlc3MgKi8KLQl1bnNpZ25lZCBsb25nIAl2YWw7CS8qIHZhbHVlICovCi0JaW50IAkJd2lkdGg7CS8qIGRhdGEgc2l6ZSAqLworCWludAkJaW5kZXg7CS8qIGFkZHJlc3MgKi8KKwl1bnNpZ25lZCBsb25nCXZhbDsJLyogdmFsdWUgKi8KKwlpbnQJCXdpZHRoOwkvKiBkYXRhIHNpemUgKi8KIH07CiAKIGV4dGVybiB2b2lkIHBjaV9waXA0MDVfd3JpdGVfcmVncyhzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKiwKQEAgLTk1LDM3ICs5NSwzNyBAQAogCXtQQ0lfQ0ZHX1BJSVg0X0dFTkNGRywJMHgwMDAxODA0MSwJNH0sIC8qIGVuYWJsZSBTRVJJUlFzLCBJU0EsIFBOUCwgR1BJMTEgKi8KIAl7UENJX0NGR19QSUlYNF9UT00sCTB4RkUsCQkxfSwgLyogVG9wIG9mIE1lbW9yeQkJKi8KIAl7UENJX0NGR19QSUlYNF9YQkNTLAkweDAyQzQsCQkyfSwgLyogZGlzYWJsZSBhbGwgcGVyaSBDUwkqLwotCXtQQ0lfQ0ZHX1BJSVg0X1JUQ0NGRywJMHgyMSwJCTF9LCAvKiBlbmFibGUgUlRDCSAgIAkqLworCXtQQ0lfQ0ZHX1BJSVg0X1JUQ0NGRywJMHgyMSwJCTF9LCAvKiBlbmFibGUgUlRDCQkqLwogI2lmIGRlZmluZWQoQ09ORklHX1BJUDQwNSkKLQl7UENJX0NGR19QSUlYNF9NQkRNQSwJMHg4MiwJCTF9LCAvKiBzZXQgTUJETUEwIHRvIERNQSAyICAgCSovCi0Je1BDSV9DRkdfUElJWDRfTUJETUErMSwJMHg4MywJCTF9LCAvKiBzZXQgTUJETUExIHRvIERNQSAzICAgCSovCisJe1BDSV9DRkdfUElJWDRfTUJETUEsCTB4ODIsCQkxfSwgLyogc2V0IE1CRE1BMCB0byBETUEgMgkqLworCXtQQ0lfQ0ZHX1BJSVg0X01CRE1BKzEsCTB4ODMsCQkxfSwgLyogc2V0IE1CRE1BMSB0byBETUEgMwkqLwogI2VuZGlmCiAJe1BDSV9DRkdfUElJWDRfRExDLAkweDAsCQkxfSwgLyogZGlzYWJsZSBwYXNzaXZlIHJlbGVhc2UgZmVhdHVyZSAqLwotCXsgfQkJCQkgICAgCSAgICAvKiBlbmQgb2YgZGV2aWNlIHRhYmxlCSovCisJeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZQkqLwogfTsKIAogLyogUElJWDQgSURFIENvbnRyb2xsZXIgRnVuY3Rpb24gMSAqLwogc3RhdGljIHN0cnVjdCBwY2lfcGlwNDA1X2NvbmZpZ19lbnRyeSBwaWl4NF9pZGVfY250cmxfZjFbXSA9IHsKIAl7UENJX0NGR19QSUlYNF9CTUlCQSwJMHgwMDAxMDAwLAk0fSwgLyogc2V0IEJNSSB0byBhIHZhbGlkIGFkZHJlc3MgKi8KLQl7UENJX0NPTU1BTkQsCQkweDAwMDEsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcyAJKi8KKwl7UENJX0NPTU1BTkQsCQkweDAwMDEsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcwkqLwogI2lmICFkZWZpbmVkKENPTkZJR19NSVA0MDVUKQogCXtQQ0lfQ0ZHX1BJSVg0X0lERVRJTSwJMHg4MDAwODAwMCwJNH0sIC8qIGVuYWJsZSBCb3RoIElERSBjaGFubmVscwkqLwogI2Vsc2UKIAl7UENJX0NGR19QSUlYNF9JREVUSU0sCTB4MDAwMDgwMDAsCTR9LCAvKiBlbmFibGUgSURFIGNoYW5uZWwwCSovCiAjZW5kaWYKLQl7IH0JCQkJCSAgICAvKiBlbmQgb2YgZGV2aWNlIHRhYmxlIAkqLworCXsgfQkJCQkJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUJKi8KIH07CiAKIC8qIFBJSVg0IFVTQiBDb250cm9sbGVyIEZ1bmN0aW9uIDIgKi8KIHN0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgcGlpeDRfdXNiX2NudHJsX2YyW10gPSB7CiAjaWYgIWRlZmluZWQoQ09ORklHX01JUDQwNVQpCi0Je1BDSV9JTlRFUlJVUFRfTElORSwJMzEsCQkxfSwgLyogSW50IHZlY3RvciA9IDMxIAkJKi8KKwl7UENJX0lOVEVSUlVQVF9MSU5FLAkzMSwJCTF9LCAvKiBJbnQgdmVjdG9yID0gMzEJCSovCiAJe1BDSV9CQVNFX0FERFJFU1NfNCwJMHgwMDAwRTAwMSwJNH0sIC8qIFNldCBJTyBBZGRyZXNzIHRvIDB4ZTAwMCB0byAweGUwMUYgKi8KLQl7UENJX0xBVEVOQ1lfVElNRVIsCTB4ODAsCQkxfSwgLyogTGF0ZW5jeSBUaW1lciAweDgwIAkqLwotCXsweEMwLAkJCTB4MjAwMCwJCTJ9LCAvKiBMZWdhY3kgc3VwcG9ydCAJCSovCisJe1BDSV9MQVRFTkNZX1RJTUVSLAkweDgwLAkJMX0sIC8qIExhdGVuY3kgVGltZXIgMHg4MAkqLworCXsweEMwLAkJCTB4MjAwMCwJCTJ9LCAvKiBMZWdhY3kgc3VwcG9ydAkJKi8KIAl7UENJX0NPTU1BTkQsCQkweDAwMDUsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcyBhbmQgTWFzdGVyICovCiAjZW5kaWYKLQl7IH0JCQkJCSAgICAvKiBlbmQgb2YgZGV2aWNlIHRhYmxlIAkqLworCXsgfQkJCQkJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUJKi8KIH07CiAKIC8qIFBJSVg0IFBvd2VyIE1hbmFnZW1lbnQgRnVuY3Rpb24gMyAqLwpAQCAtMTMzLDEyICsxMzMsMTIgQEAKIAl7UENJX0NGR19QSUlYNF9QTUJBLAkweDAwMDA0MDAwLAk0fSwgLyogc2V0IFBNQkEgdG8gInZhbGlkIiB2YWx1ZSAqLwogCXtQQ0lfQ0ZHX1BJSVg0X1NNQkJBLAkweDAwMDA1MDAwLAk0fSwgLyogc2V0IFNNQkJBIHRvICJ2YWxpZCIgdmFsdWUgKi8KIAl7UENJX0NGR19QSUlYNF9QTU1JU0MsCTB4MDEsCQkxfSwgLyogZW5hYmxlIFBNQkEgSU8gYWNjZXNzCSovCi0Je1BDSV9DT01NQU5ELAkJMHgwMDAxLAkJMn0sIC8qIGVuYWJsZSBJTyBhY2Nlc3MgCSovCi0JeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZSAJKi8KKwl7UENJX0NPTU1BTkQsCQkweDAwMDEsCQkyfSwgLyogZW5hYmxlIElPIGFjY2VzcwkqLworCXsgfQkJCQkJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUJKi8KIH07CiAvKiBQUEM0MDUgRHVtbXkgb25seSB1c2VkIHRvIHByZXZlbnQgYXV0b3NldHVwIG9uIHRoaXMgaG9zdCBicmlkZ2UgKi8KIHN0YXRpYyBzdHJ1Y3QgcGNpX3BpcDQwNV9jb25maWdfZW50cnkgcHBjNDA1X2R1bW15W10gPSB7Ci0JeyB9CQkJCSAgICAJICAgIC8qIGVuZCBvZiBkZXZpY2UgdGFibGUgCSovCisJeyB9CQkJCQkgICAgLyogZW5kIG9mIGRldmljZSB0YWJsZQkqLwogfTsKIAogdm9pZCBwY2lfNDA1Z3Bfc2V0dXBfdmdhKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwgcGNpX2Rldl90IGRldiwKQEAgLTE0NiwxMyArMTQ2LDEzIEBACiAKIAogc3RhdGljIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlIHBjaV9waXA0MDVfY29uZmlnX3RhYmxlW109ewotCXtQQ0lfVkVORE9SX0lEX0lCTSwgCQkJLyogNDA1IGR1bW15ICovCisJe1BDSV9WRU5ET1JfSURfSUJNLAkJCS8qIDQwNSBkdW1teSAqLwogCSBQQ0lfREVWSUNFX0lEX0lCTV80MDVHUCwKIAkgUENJX0FOWV9JRCwKIAkgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwKIAkgcGNpX3BpcDQwNV93cml0ZV9yZWdzLCB7KHVuc2lnbmVkIGxvbmcpIHBwYzQwNV9kdW1teX19LAogCi0Je1BDSV9WRU5ET1JfSURfSU5URUwsIAkJCS8qIFBJSVg0IElTQSBCcmlkZ2UgRnVuY3Rpb24gMCAqLworCXtQQ0lfVkVORE9SX0lEX0lOVEVMLAkJCS8qIFBJSVg0IElTQSBCcmlkZ2UgRnVuY3Rpb24gMCAqLwogCSBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyMzcxQUJfMCwKIAkgUENJX0FOWV9JRCwKIAkgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9jb21tb24vdXNiX3VoY2kuYyBiL2JvYXJkL21wbC9jb21tb24vdXNiX3VoY2kuYwppbmRleCA4NGM5MWM0Li42Nzc4ZTQwIDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvY29tbW9uL3VzYl91aGNpLmMKKysrIGIvYm9hcmQvbXBsL2NvbW1vbi91c2JfdWhjaS5jCkBAIC01NDAsNyArNTQwLDcgQEAKIAkJbGluaz1zd2FwXzMyKHRkX2ludFtpXS5saW5rKSAmIDB4ZmZmZmZmZjA7IC8qIG5leHQgaW4gY2hhaW4gKi8KIAkJdGQ9KHVoY2lfdGRfdCAqKWxpbms7IC8qIGFzc2lnbiBpdCAqLwogCQkvKiBhbGwgaW50ZXJydXB0IFREcyBhcmUgZmluYWxseSBsaW5rZWQgdG8gdGhlIHRkX2ludFswXS4KLSAJCSAqIHNvIHdlIHByb2Nlc3MgYWxsIHVudGlsIHdlIGZpbmQgdGhlIHRkX2ludFswXS4KKwkJICogc28gd2UgcHJvY2VzcyBhbGwgdW50aWwgd2UgZmluZCB0aGUgdGRfaW50WzBdLgogCQkgKiBpZiBpbnQwIGNoYWluIHBvaW50cyB0byBhIFFILCB3ZSdyZSBhbHNvIGRvbmUKIAkgICAqLwogCQl3aGlsZSgoKGk+MCkgJiYgKGxpbmsgIT0gKHVuc2lnbmVkIGxvbmcpJnRkX2ludFswXSkpIHx8CmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvbWlwNDA1L2NtZF9taXA0MDUuYyBiL2JvYXJkL21wbC9taXA0MDUvY21kX21pcDQwNS5jCmluZGV4IDZmYmM1ODUuLjZhZDk1YjUgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9taXA0MDUvY21kX21pcDQwNS5jCisrKyBiL2JvYXJkL21wbC9taXA0MDUvY21kX21pcDQwNS5jCkBAIC0zOCwxOSArMzgsMTkgQEAKIGludCBkb19taXA0MDUoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAKLSAJdWxvbmcgbGVkX29uOworCXVsb25nIGxlZF9vbjsKIAogCWlmIChzdHJjbXAoYXJndlsxXSwgImluZm8iKSA9PSAwKQogCXsKIAkJcHJpbnRfbWlwNDA1X2luZm8oKTsKLQkgCXJldHVybiAwOwotICAgCX0KLSAJaWYgKHN0cmNtcChhcmd2WzFdLCAibGVkIikgPT0gMCkKKwkJcmV0dXJuIDA7CisJfQorCWlmIChzdHJjbXAoYXJndlsxXSwgImxlZCIpID09IDApCiAJewogCQlsZWRfb24gPSAodWxvbmcpc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTApOwogCQl1c2VyX2xlZDAobGVkX29uKTsKIAkJcmV0dXJuIDA7Ci0gICAJfQorCX0KIAlyZXR1cm4gKGRvX21wbGNvbW1vbihjbWR0cCwgZmxhZywgYXJnYywgYXJndikpOwogfQogVV9CT09UX0NNRCgKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmMgYi9ib2FyZC9tcGwvbWlwNDA1L21pcDQwNS5jCmluZGV4IDRiMWMxYzAuLjllOGY5YmIgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmMKKysrIGIvYm9hcmQvbXBsL21pcDQwNS9taXA0MDUuYwpAQCAtODksMTIgKzg5LDEyIEBACiAjZW5kaWYKIAogCi0jZGVmaW5lIFBMRF9QQVJUX1JFRyAJCVBFUl9QTERfQUREUiArIDAKLSNkZWZpbmUgUExEX1ZFUlNfUkVHIAkJUEVSX1BMRF9BRERSICsgMQotI2RlZmluZSBQTERfQk9BUkRfQ0ZHX1JFRyAJUEVSX1BMRF9BRERSICsgMgotI2RlZmluZSBQTERfSVJRX1JFRyAJCVBFUl9QTERfQUREUiArIDMKLSNkZWZpbmUgUExEX0NPTV9NT0RFX1JFRyAJUEVSX1BMRF9BRERSICsgNAotI2RlZmluZSBQTERfRVhUX0NPTkZfUkVHIAlQRVJfUExEX0FERFIgKyA1CisjZGVmaW5lIFBMRF9QQVJUX1JFRwkJUEVSX1BMRF9BRERSICsgMAorI2RlZmluZSBQTERfVkVSU19SRUcJCVBFUl9QTERfQUREUiArIDEKKyNkZWZpbmUgUExEX0JPQVJEX0NGR19SRUcJUEVSX1BMRF9BRERSICsgMgorI2RlZmluZSBQTERfSVJRX1JFRwkJUEVSX1BMRF9BRERSICsgMworI2RlZmluZSBQTERfQ09NX01PREVfUkVHCVBFUl9QTERfQUREUiArIDQKKyNkZWZpbmUgUExEX0VYVF9DT05GX1JFRwlQRVJfUExEX0FERFIgKyA1CiAKICNkZWZpbmUgTUVHQV9CWVRFICgxMDI0KjEwMjQpCiAKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmggYi9ib2FyZC9tcGwvbWlwNDA1L21pcDQwNS5oCmluZGV4IGIxZDkxZGUuLmZkN2U3OGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmgKKysrIGIvYm9hcmQvbXBsL21pcDQwNS9taXA0MDUuaApAQCAtMzUsNyArMzUsNyBAQAogI2VuZGlmCiAvKiB0aW1pbmdzICovCiAvKiBQTEQgKENTNykgKi8KLSNkZWZpbmUgUExEX0JNRQkwIAkvKiBCdXJzdCBkaXNhYmxlICovCisjZGVmaW5lIFBMRF9CTUUJMAkvKiBCdXJzdCBkaXNhYmxlICovCiAjZGVmaW5lIFBMRF9UV0UJNQkvKiA1ICogMzBucyAxMjBucyBXYWl0c3RhdGVzIChhY2Nlc3M9VFdUKzErVEgpICovCiAjZGVmaW5lIFBMRF9DU04JMQkvKiBDaGlwc2VsZWN0IGlzIGRyaXZlbiBpbmFjdGl2ZSBmb3IgMSBDeWNsZSBCVFcgdHJhbnNmZXJzICovCiAjZGVmaW5lIFBMRF9PRU4JMQkvKiBDeWNsZXMgZnJvbSBDUyBsb3cgdG8gT0UgbG93ICAgKi8KQEAgLTQ2LDcgKzQ2LDcgQEAKICNkZWZpbmUgUExEX1NPUgkxCS8qIFNhbXBsZSBvbiBSZWFkeSBkaXNhYmxlZCAqLwogI2RlZmluZSBQTERfQkVNCTAJLyogQnl0ZSBXcml0ZSBvbmx5IGFjdGl2ZSBvbiBXcml0ZSBjeWNsZXMgKi8KICNkZWZpbmUgUExEX1BFTgkwCS8qIFBhcml0eSBkaXNhYmxlICovCi0jZGVmaW5lIFBMRF9BUCAJKChQTERfQk1FIDw8IDMxKSArIChQTERfVFdFIDw8IDIzKSArIChQTERfQ1NOIDw8IDE4KSArIChQTERfT0VOIDw8IDE2KSArIChQTERfV0JOIDw8IDE0KSArIFwKKyNkZWZpbmUgUExEX0FQCSgoUExEX0JNRSA8PCAzMSkgKyAoUExEX1RXRSA8PCAyMykgKyAoUExEX0NTTiA8PCAxOCkgKyAoUExEX09FTiA8PCAxNikgKyAoUExEX1dCTiA8PCAxNCkgKyBcCiAJCQkJCShQTERfV0JGIDw8IDEyKSArIChQTERfVEggPDwgOSkgKyAoUExEX1JFIDw8IDgpICsgKFBMRF9TT1IgPDwgNykgKyAoUExEX0JFTSA8PCA2KSArIChQTERfUEVOIDw8IDUpKQogCiAvKiBTaXplOiAwPTFNQiwgMT0yTUIsIDI9NE1CLCAzPThNQiwgND0xNk1CLCA1PTMyTUIsIDY9NjRNQiwgNz0xMjhNQiAqLwpAQCAtNjIsNyArNjIsNyBAQAogCiAjZGVmaW5lIFBFUl9CT0FSRF9BRERSIChQRVJfVUFSVDFfQUREUisoMTAyNCoxMDI0KSkKIC8qIER1bW15IENTIHRvIGdldCB0aGUgYm9hcmQgcmV2aXNpb24gKi8KLSNkZWZpbmUgQk9BUkRfQk1FCTAgCS8qIEJ1cnN0IGRpc2FibGUgKi8KKyNkZWZpbmUgQk9BUkRfQk1FCTAJLyogQnVyc3QgZGlzYWJsZSAqLwogI2RlZmluZSBCT0FSRF9UV0UJMjU1CS8qIDI1NSAqIDMwbnMgMTIwbnMgV2FpdHN0YXRlcyAoYWNjZXNzPVRXVCsxK1RIKSAqLwogI2RlZmluZSBCT0FSRF9DU04JMQkvKiBDaGlwc2VsZWN0IGlzIGRyaXZlbiBpbmFjdGl2ZSBmb3IgMSBDeWNsZSBCVFcgdHJhbnNmZXJzICovCiAjZGVmaW5lIEJPQVJEX09FTgkxCS8qIEN5Y2xlcyBmcm9tIENTIGxvdyB0byBPRSBsb3cgICAqLwpAQCAtNzMsNyArNzMsNyBAQAogI2RlZmluZSBCT0FSRF9TT1IJMQkvKiBTYW1wbGUgb24gUmVhZHkgZGlzYWJsZWQgKi8KICNkZWZpbmUgQk9BUkRfQkVNCTAJLyogQnl0ZSBXcml0ZSBvbmx5IGFjdGl2ZSBvbiBXcml0ZSBjeWNsZXMgKi8KICNkZWZpbmUgQk9BUkRfUEVOCTAJLyogUGFyaXR5IGRpc2FibGUgKi8KLSNkZWZpbmUgQk9BUkRfQVAgCSgoQk9BUkRfQk1FIDw8IDMxKSArIChCT0FSRF9UV0UgPDwgMjMpICsgKEJPQVJEX0NTTiA8PCAxOCkgKyAoQk9BUkRfT0VOIDw8IDE2KSArIChCT0FSRF9XQk4gPDwgMTQpICsgXAorI2RlZmluZSBCT0FSRF9BUAkoKEJPQVJEX0JNRSA8PCAzMSkgKyAoQk9BUkRfVFdFIDw8IDIzKSArIChCT0FSRF9DU04gPDwgMTgpICsgKEJPQVJEX09FTiA8PCAxNikgKyAoQk9BUkRfV0JOIDw8IDE0KSArIFwKIAkJCQkJKEJPQVJEX1dCRiA8PCAxMikgKyAoQk9BUkRfVEggPDwgOSkgKyAoQk9BUkRfUkUgPDwgOCkgKyAoQk9BUkRfU09SIDw8IDcpICsgKEJPQVJEX0JFTSA8PCA2KSArIChCT0FSRF9QRU4gPDwgNSkpCiAKIC8qIFNpemU6IDA9MU1CLCAxPTJNQiwgMj00TUIsIDM9OE1CLCA0PTE2TUIsIDU9MzJNQiwgNj02NE1CLCA3PTEyOE1CICovCkBAIC04Niw3ICs4Niw3IEBACiAKIAogLyogVUFSVDAgQ1MyICovCi0jZGVmaW5lIFVBUlQwX0JNRQkwIAkvKiBCdXJzdCBkaXNhYmxlICovCisjZGVmaW5lIFVBUlQwX0JNRQkwCS8qIEJ1cnN0IGRpc2FibGUgKi8KICNkZWZpbmUgVUFSVDBfVFdFCTcJLyogNyAqIDMwbnMgMjEwbnMgV2FpdHN0YXRlcyAoYWNjZXNzPVRXVCsxK1RIKSAqLwogI2RlZmluZSBVQVJUMF9DU04JMQkvKiBDaGlwc2VsZWN0IGlzIGRyaXZlbiBpbmFjdGl2ZSBmb3IgMSBDeWNsZSBCVFcgdHJhbnNmZXJzICovCiAjZGVmaW5lIFVBUlQwX09FTgkxCS8qIEN5Y2xlcyBmcm9tIENTIGxvdyB0byBPRSBsb3cgICAqLwpAQCAtOTcsNyArOTcsNyBAQAogI2RlZmluZSBVQVJUMF9TT1IJMQkvKiBTYW1wbGUgb24gUmVhZHkgZGlzYWJsZWQgKi8KICNkZWZpbmUgVUFSVDBfQkVNCTAJLyogQnl0ZSBXcml0ZSBvbmx5IGFjdGl2ZSBvbiBXcml0ZSBjeWNsZXMgKi8KICNkZWZpbmUgVUFSVDBfUEVOCTAJLyogUGFyaXR5IGRpc2FibGUgKi8KLSNkZWZpbmUgVUFSVDBfQVAgCSgoVUFSVDBfQk1FIDw8IDMxKSArIChVQVJUMF9UV0UgPDwgMjMpICsgKFVBUlQwX0NTTiA8PCAxOCkgKyAoVUFSVDBfT0VOIDw8IDE2KSArIChVQVJUMF9XQk4gPDwgMTQpICsgXAorI2RlZmluZSBVQVJUMF9BUAkoKFVBUlQwX0JNRSA8PCAzMSkgKyAoVUFSVDBfVFdFIDw8IDIzKSArIChVQVJUMF9DU04gPDwgMTgpICsgKFVBUlQwX09FTiA8PCAxNikgKyAoVUFSVDBfV0JOIDw8IDE0KSArIFwKIAkJCQkJKFVBUlQwX1dCRiA8PCAxMikgKyAoVUFSVDBfVEggPDwgOSkgKyAoVUFSVDBfUkUgPDwgOCkgKyAoVUFSVDBfU09SIDw8IDcpICsgKFVBUlQwX0JFTSA8PCA2KSArIChVQVJUMF9QRU4gPDwgNSkpCiAKIC8qIFNpemU6IDA9MU1CLCAxPTJNQiwgMj00TUIsIDM9OE1CLCA0PTE2TUIsIDU9MzJNQiwgNj02NE1CLCA3PTEyOE1CICovCkBAIC0xMTUsMTAgKzExNSwxMCBAQAogCiAvKiBGbGFzaCBDUzAgb3IgQ1MgMSAqLwogLyogMHg3RjhGRkU4MCBzbG93ZXN0IHRpbWluZyBhdCBhbGwuLi4gKi8KLSNkZWZpbmUgRkxBU0hfQk1FX0IJMSAJLyogQnVyc3QgZW5hYmxlICovCisjZGVmaW5lIEZMQVNIX0JNRV9CCTEJLyogQnVyc3QgZW5hYmxlICovCiAjZGVmaW5lIEZMQVNIX0ZXVF9CCTB4NgkvKiA2ICogMzBucyAyMTBucyBGaXJzdCBXYWl0IEFjY2VzcyAqLwogI2RlZmluZSBGTEFTSF9CV1RfQgkweDYJLyogNiAqIDMwbnMgMjEwbnMgQnVyc3QgV2FpdCBBY2Nlc3MgKi8KLSNkZWZpbmUgRkxBU0hfQk1FCTAgCS8qIEJ1cnN0IGRpc2FibGUgKi8KKyNkZWZpbmUgRkxBU0hfQk1FCTAJLyogQnVyc3QgZGlzYWJsZSAqLwogI2RlZmluZSBGTEFTSF9UV0UJMHhiLyogMTEgKiAzMG5zIDMzMG5zIFdhaXRzdGF0ZXMgKGFjY2Vzcz1UV1QrMStUSCkgKi8KICNkZWZpbmUgRkxBU0hfQ1NOCTAJLyogQ2hpcHNlbGVjdCBpcyBkcml2ZW4gaW5hY3RpdmUgZm9yIDEgQ3ljbGUgQlRXIHRyYW5zZmVycyAqLwogI2RlZmluZSBGTEFTSF9PRU4JMQkvKiBDeWNsZXMgZnJvbSBDUyBsb3cgdG8gT0UgbG93ICAgKi8KQEAgLTEzMCwxMCArMTMwLDEwIEBACiAjZGVmaW5lIEZMQVNIX0JFTQkwCS8qIEJ5dGUgV3JpdGUgb25seSBhY3RpdmUgb24gV3JpdGUgY3ljbGVzICovCiAjZGVmaW5lIEZMQVNIX1BFTgkwCS8qIFBhcml0eSBkaXNhYmxlICovCiAvKiBBY2Nlc3MgUGFyYW1ldGVyIFJlZ2lzdGVyIGZvciBub24gQm9vdCAqLwotI2RlZmluZSBGTEFTSF9BUCAJKChGTEFTSF9CTUUgPDwgMzEpICsgKEZMQVNIX1RXRSA8PCAyMykgKyAoRkxBU0hfQ1NOIDw8IDE4KSArIChGTEFTSF9PRU4gPDwgMTYpICsgKEZMQVNIX1dCTiA8PCAxNCkgKyBcCisjZGVmaW5lIEZMQVNIX0FQCSgoRkxBU0hfQk1FIDw8IDMxKSArIChGTEFTSF9UV0UgPDwgMjMpICsgKEZMQVNIX0NTTiA8PCAxOCkgKyAoRkxBU0hfT0VOIDw8IDE2KSArIChGTEFTSF9XQk4gPDwgMTQpICsgXAogCQkJCQkoRkxBU0hfV0JGIDw8IDEyKSArIChGTEFTSF9USCA8PCA5KSArIChGTEFTSF9SRSA8PCA4KSArIChGTEFTSF9TT1IgPDwgNykgKyAoRkxBU0hfQkVNIDw8IDYpICsgKEZMQVNIX1BFTiA8PCA1KSkKIC8qIEFjY2VzcyBQYXJhbWV0ZXIgUmVnaXN0ZXIgZm9yIEJvb3QgKi8KLSNkZWZpbmUgRkxBU0hfQVBfQiAJKChGTEFTSF9CTUVfQiA8PCAzMSkgKyAoRkxBU0hfRldUX0IgPDwgMjYpICsgKEZMQVNIX0JXVF9CIDw8IDIzKSArIChGTEFTSF9DU04gPDwgMTgpICsgKEZMQVNIX09FTiA8PCAxNikgKyAoRkxBU0hfV0JOIDw8IDE0KSArIFwKKyNkZWZpbmUgRkxBU0hfQVBfQgkoKEZMQVNIX0JNRV9CIDw8IDMxKSArIChGTEFTSF9GV1RfQiA8PCAyNikgKyAoRkxBU0hfQldUX0IgPDwgMjMpICsgKEZMQVNIX0NTTiA8PCAxOCkgKyAoRkxBU0hfT0VOIDw8IDE2KSArIChGTEFTSF9XQk4gPDwgMTQpICsgXAogCQkJCQkoRkxBU0hfV0JGIDw8IDEyKSArIChGTEFTSF9USCA8PCA5KSArIChGTEFTSF9SRSA8PCA4KSArIChGTEFTSF9TT1IgPDwgNykgKyAoRkxBU0hfQkVNIDw8IDYpICsgKEZMQVNIX1BFTiA8PCA1KSkKIAogLyogU2l6ZTogMD0xTUIsIDE9Mk1CLCAyPTRNQiwgMz04TUIsIDQ9MTZNQiwgNT0zMk1CLCA2PTY0TUIsIDc9MTI4TUIgKi8KQEAgLTE0OSwxMCArMTQ5LDEwIEBACiAKIC8qIE1QUyBDUzEgb3IgQ1MwICovCiAvKiBCb290IENTOiAqLwotI2RlZmluZSBNUFNfQk1FX0IJMSAJLyogQnVyc3QgZW5hYmxlICovCisjZGVmaW5lIE1QU19CTUVfQgkxCS8qIEJ1cnN0IGVuYWJsZSAqLwogI2RlZmluZSBNUFNfRldUX0IJMHg2LyogNiAqIDMwbnMgMjEwbnMgRmlyc3QgV2FpdCBBY2Nlc3MgKi8KICNkZWZpbmUgTVBTX0JXVF9CCTB4NgkvKiA2ICogMzBucyAyMTBucyBCdXJzdCBXYWl0IEFjY2VzcyAqLwotI2RlZmluZSBNUFNfQk1FCQkwIAkvKiBCdXJzdCBkaXNhYmxlICovCisjZGVmaW5lIE1QU19CTUUJCTAJLyogQnVyc3QgZGlzYWJsZSAqLwogI2RlZmluZSBNUFNfVFdFCQkweGIvKiAxMSAqIDMwbnMgMzMwbnMgV2FpdHN0YXRlcyAoYWNjZXNzPVRXVCsxK1RIKSAqLwogI2RlZmluZSBNUFNfQ1NOCQkwCS8qIENoaXBzZWxlY3QgaXMgZHJpdmVuIGluYWN0aXZlIGZvciAxIEN5Y2xlIEJUVyB0cmFuc2ZlcnMgKi8KICNkZWZpbmUgTVBTX09FTgkJMQkvKiBDeWNsZXMgZnJvbSBDUyBsb3cgdG8gT0UgbG93ICAgKi8KQEAgLTE2NCwxMCArMTY0LDEwIEBACiAjZGVmaW5lIE1QU19CRU0JCTAJLyogQnl0ZSBXcml0ZSBvbmx5IGFjdGl2ZSBvbiBXcml0ZSBjeWNsZXMgKi8KICNkZWZpbmUgTVBTX1BFTgkJMAkvKiBQYXJpdHkgZGlzYWJsZSAqLwogLyogQWNjZXNzIFBhcmFtZXRlciBSZWdpc3RlciBmb3Igbm9uIEJvb3QgKi8KLSNkZWZpbmUgTVBTX0FQIAkJKChNUFNfQk1FIDw8IDMxKSArIChNUFNfVFdFIDw8IDIzKSArIChNUFNfQ1NOIDw8IDE4KSArIChNUFNfT0VOIDw8IDE2KSArIChNUFNfV0JOIDw8IDE0KSArIFwKKyNkZWZpbmUgTVBTX0FQCQkoKE1QU19CTUUgPDwgMzEpICsgKE1QU19UV0UgPDwgMjMpICsgKE1QU19DU04gPDwgMTgpICsgKE1QU19PRU4gPDwgMTYpICsgKE1QU19XQk4gPDwgMTQpICsgXAogCQkJCQkoTVBTX1dCRiA8PCAxMikgKyAoTVBTX1RIIDw8IDkpICsgKE1QU19SRSA8PCA4KSArIChNUFNfU09SIDw8IDcpICsgKE1QU19CRU0gPDwgNikgKyAoTVBTX1BFTiA8PCA1KSkKIC8qIEFjY2VzcyBQYXJhbWV0ZXIgUmVnaXN0ZXIgZm9yIEJvb3QgKi8KLSNkZWZpbmUgTVBTX0FQX0IgCQkoKE1QU19CTUVfQiA8PCAzMSkgKyAoTVBTX0ZXVF9CIDw8IDI2KSArIChNUFNfQldUX0IgPDwgMjMpICsgKE1QU19DU04gPDwgMTgpICsgKE1QU19PRU4gPDwgMTYpICsgKE1QU19XQk4gPDwgMTQpICsgXAorI2RlZmluZSBNUFNfQVBfQgkJKChNUFNfQk1FX0IgPDwgMzEpICsgKE1QU19GV1RfQiA8PCAyNikgKyAoTVBTX0JXVF9CIDw8IDIzKSArIChNUFNfQ1NOIDw8IDE4KSArIChNUFNfT0VOIDw8IDE2KSArIChNUFNfV0JOIDw8IDE0KSArIFwKIAkJCQkJKE1QU19XQkYgPDwgMTIpICsgKE1QU19USCA8PCA5KSArIChNUFNfUkUgPDwgOCkgKyAoTVBTX1NPUiA8PCA3KSArIChNUFNfQkVNIDw8IDYpICsgKE1QU19QRU4gPDwgNSkpCiAKIC8qIFNpemU6IDA9MU1CLCAxPTJNQiwgMj00TUIsIDM9OE1CLCA0PTE2TUIsIDU9MzJNQiwgNj02NE1CLCA3PTEyOE1CICovCmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvbWlwNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9tcGwvbWlwNDA1L3UtYm9vdC5sZHMKaW5kZXggZmZkZjQ2Ny4uNzkzMmI5ZiAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL21pcDQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL21wbC9taXA0MDUvdS1ib290LmxkcwpAQCAtNDIsMTEgKzQyLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9wYXRpL2NtZF9wYXRpLmMgYi9ib2FyZC9tcGwvcGF0aS9jbWRfcGF0aS5jCmluZGV4IDk4NDI5YzAuLjkxNjgzYTMgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9wYXRpL2NtZF9wYXRpLmMKKysrIGIvYm9hcmQvbXBsL3BhdGkvY21kX3BhdGkuYwpAQCAtMzYwLDEyICszNjAsMTIgQEAKIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICJpbmZvIikgPT0gMCkKIAl7CiAJCXNob3dfcGxkX3JlZ3MoKTsKLQkgCXJldHVybiAwOworCQlyZXR1cm4gMDsKIAl9CiAJaWYgKHN0cmNtcChhcmd2WzFdLCAicGNpIikgPT0gMCkKIAl7CiAJCWRpc3BsYXlfcGNpX3JlZ3MoKTsKLQkgCXJldHVybiAwOworCQlyZXR1cm4gMDsKIAl9CiAJaWYgKHN0cmNtcChhcmd2WzFdLCAibGVkIikgPT0gMCkKIAl7CkBAIC0zNzcsNyArMzc3LDcgQEAKIAkJZWxzZQogCQkJdXNlcl9sZWQxKGxlZF9vbik7CiAJCXJldHVybiAwOwotICAgCX0KKwl9CiAjaWYgZGVmaW5lZChDRkdfUENJX0NPTl9ERVZJQ0UpCiAJaWYgKHN0cmNtcChhcmd2WzFdLCAiY29uIikgPT0gMCkgewogCQlwY2lfY29uX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9wYXRpL3BhdGkuYyBiL2JvYXJkL21wbC9wYXRpL3BhdGkuYwppbmRleCAwMzU1YjY1Li43ODkzZDYxIDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvcGF0aS9wYXRpLmMKKysrIGIvYm9hcmQvbXBsL3BhdGkvcGF0aS5jCkBAIC00ODQsNyArNDg0LDcgQEAKIAllbHNlCiAJCWRpZmY9cl9wdHItd19wdHI7CiAJaWYoKGRpZmY8KFJFQ19CVUZGRVJfU0laRS00KSkgJiYgYnVmZl9mdWxsKSB7Ci0gICAJCS8qIGNsZWFyIE1haWwgYm94ICovCisJCS8qIGNsZWFyIE1haWwgYm94ICovCiAJCQlidWZmX2Z1bGw9MDsKIAkJCVBDSUNPTl9TRVRfUkVHKFBDSUNPTl9SRUNFSVZFX1JFRywwTCk7CiAJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3BhdGkvcGF0aS5oIGIvYm9hcmQvbXBsL3BhdGkvcGF0aS5oCmluZGV4IGQ1MjE3NzIuLjg2YzdhNDEgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9wYXRpL3BhdGkuaAorKysgYi9ib2FyZC9tcGwvcGF0aS9wYXRpLmgKQEAgLTg5LDcgKzg5LDcgQEAKICNkZWZpbmUgU0RSQU1fQ0FMCTkKICNkZWZpbmUgU0RSQU1fUkNECTEwCiAjZGVmaW5lIFNEUkFNX1dSRVEJMTEKLSNkZWZpbmUgU0RSQU1fUFIgCTEyCisjZGVmaW5lIFNEUkFNX1BSCTEyCiAjZGVmaW5lIFNEUkFNX1JDCTEzCiAjZGVmaW5lIFNEUkFNX0xNUgkxNAogI2RlZmluZSBTRFJBTV9JSVAJMTkKQEAgLTEyOCw3ICsxMjgsNyBAQAogI2RlZmluZSBTRFJBTV9NVVgwCTkKICNkZWZpbmUgU0RSQU1fTVVYMQkxMAogI2RlZmluZSBTRFJBTV9QRElTCTExCi0jZGVmaW5lIFNEUkFNX1JFUzEgCTEyCisjZGVmaW5lIFNEUkFNX1JFUzEJMTIKICNkZWZpbmUgU0RSQU1fUkVTMgkxMwogI2RlZmluZSBTRFJBTV9SRVMzCTE0CiAjZGVmaW5lIFNEUkFNX1JFUzQJMTkKQEAgLTE3Nyw3ICsxNzcsNyBAQAogI2RlZmluZSBTRFJBTV9SRVM1CTkKICNkZWZpbmUgU0RSQU1fQ0ZHMQkxMAogI2RlZmluZSBTRFJBTV9DRkcyCTExCi0jZGVmaW5lIFNEUkFNX0NGRzMgCTEyCisjZGVmaW5lIFNEUkFNX0NGRzMJMTIKICNkZWZpbmUgU0RSQU1fUkVTNgkxMwogI2RlZmluZSBTRFJBTV9DRkc1CTE0CiAjZGVmaW5lIFNEUkFNX0NGRzYJMTkKQEAgLTIxNCw3ICsyMTQsNyBAQAogICogTUlTQyBEZWZpbmVzCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIFBDSV9WRU5ET1JfSURfTVBMIAkweDE4RTYKKyNkZWZpbmUgUENJX1ZFTkRPUl9JRF9NUEwJMHgxOEU2CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfUEFUSQkweDAwREEKIAogI2lmIGRlZmluZWQoQ09ORklHX01JUDQwNSkKQEAgLTI2OSwxMiArMjY5LDEyIEBACiAKIC8qIENvbmZpZyBBcmVhICovCiAjZGVmaW5lIFBBVElfTE9DX0NGR19BRERSCQkweDA3MDAwMDAwCQkvKiBMb2NhbCBBZGRyZXNzICovCi0jZGVmaW5lIFBBVElfTE9DX0NGR19NQVNLCQkweEZGRkZGRjAwICAJCS8qIDI1NiBCeXRlcyAqLworI2RlZmluZSBQQVRJX0xPQ19DRkdfTUFTSwkJMHhGRkZGRkYwMAkJLyogMjU2IEJ5dGVzICovCiAvKiBBdHRyaWJ1dGVzICovCi0jZGVmaW5lIFBBVElfTE9DX0NGR19CVVNfU0laRQkJUEFUSV9CVVNfU0laRV8zMiAgCS8qIDMyIEJpdCAqLwotI2RlZmluZSBQQVRJX0xPQ19DRkdfQlVSU1QJCTAgIAkJCS8qIE5vIEJ1cnN0ICovCi0jZGVmaW5lIFBBVElfTE9DX0NGR19OT19QUkVGRVRDSAkxICAJCQkvKiBObyBQcmVmZXRjaCAqLwotI2RlZmluZSBQQVRJX0xPQ19DRkdfVEFfRU5BQkxFCQkxIAkJCS8qIEVuYWJsZSBUQSAqLworI2RlZmluZSBQQVRJX0xPQ19DRkdfQlVTX1NJWkUJCVBBVElfQlVTX1NJWkVfMzIJLyogMzIgQml0ICovCisjZGVmaW5lIFBBVElfTE9DX0NGR19CVVJTVAkJMAkJCS8qIE5vIEJ1cnN0ICovCisjZGVmaW5lIFBBVElfTE9DX0NGR19OT19QUkVGRVRDSAkxCQkJLyogTm8gUHJlZmV0Y2ggKi8KKyNkZWZpbmUgUEFUSV9MT0NfQ0ZHX1RBX0VOQUJMRQkJMQkJCS8qIEVuYWJsZSBUQSAqLwogCiAjZGVmaW5lIFBBVElfTE9DX0NGR19TUEFDRTBfQVRUUiAgKCBcCiAJCVBBVElfTE9DX0NGR19CVVNfU0laRSB8IFwKQEAgLTI5NSwxMCArMjk1LDEwIEBACiAjZGVmaW5lIFBBVElfTE9DX1NEUkFNX0FERFIJCTB4MDYwMDAwMDAJCS8qIExvY2FsIEFkZHJlc3MgKi8KICNkZWZpbmUgUEFUSV9MT0NfU0RSQU1fTUFTSwkJMHhGRkYwMDAwMAkJLyogMU1CeXRlICovCiAvKiBBdHRyaWJ1dGVzICovCi0jZGVmaW5lIFBBVElfTE9DX1NEUkFNX0JVU19TSVpFCQlQQVRJX0JVU19TSVpFXzMyICAJLyogMzIgQml0ICovCi0jZGVmaW5lIFBBVElfTE9DX1NEUkFNX0JVUlNUCQkwICAJCQkvKiBObyBCdXJzdCAqLwotI2RlZmluZSBQQVRJX0xPQ19TRFJBTV9OT19QUkVGRVRDSAkwICAJCQkvKiBQcmVmZXRjaCAqLwotI2RlZmluZSBQQVRJX0xPQ19TRFJBTV9UQV9FTkFCTEUJMSAgCQkJLyogRW5hYmxlIFRBICovCisjZGVmaW5lIFBBVElfTE9DX1NEUkFNX0JVU19TSVpFCQlQQVRJX0JVU19TSVpFXzMyCS8qIDMyIEJpdCAqLworI2RlZmluZSBQQVRJX0xPQ19TRFJBTV9CVVJTVAkJMAkJCS8qIE5vIEJ1cnN0ICovCisjZGVmaW5lIFBBVElfTE9DX1NEUkFNX05PX1BSRUZFVENICTAJCQkvKiBQcmVmZXRjaCAqLworI2RlZmluZSBQQVRJX0xPQ19TRFJBTV9UQV9FTkFCTEUJMQkJCS8qIEVuYWJsZSBUQSAqLwogCiAvKiBzaG91bGQgbmV2ZXIgYmUgdXNlZCAqLwogI2RlZmluZSBQQVRJX0xPQ19TRFJBTV9TUEFDRTBfQVRUUiAgKCBcCkBAIC0zMTksMTAgKzMxOSwxMCBAQAogI2RlZmluZSBQQVRJX0xPQ19GTEFTSF9BRERSCQkweDAzMDAwMDAwCQkvKiBMb2NhbCBBZGRyZXNzICovCiAjZGVmaW5lIFBBVElfTE9DX0ZMQVNIX01BU0sJCTB4RkZGMDAwMDAJCS8qIDFNQnl0ZSAqLwogLyogQXR0cmlidXRlcyAqLwotI2RlZmluZSBQQVRJX0xPQ19GTEFTSF9CVVNfU0laRQkJUEFUSV9CVVNfU0laRV8xNiAgCS8qIDE2IEJpdCAqLwotI2RlZmluZSBQQVRJX0xPQ19GTEFTSF9CVVJTVAkJMCAgCQkJLyogTm8gQnVyc3QgKi8KLSNkZWZpbmUgUEFUSV9MT0NfRkxBU0hfTk9fUFJFRkVUQ0gJMSAgCQkJLyogTm8gUHJlZmV0Y2ggKi8KLSNkZWZpbmUgUEFUSV9MT0NfRkxBU0hfVEFfRU5BQkxFCTEgIAkJCS8qIEVuYWJsZSBUQSAqLworI2RlZmluZSBQQVRJX0xPQ19GTEFTSF9CVVNfU0laRQkJUEFUSV9CVVNfU0laRV8xNgkvKiAxNiBCaXQgKi8KKyNkZWZpbmUgUEFUSV9MT0NfRkxBU0hfQlVSU1QJCTAJCQkvKiBObyBCdXJzdCAqLworI2RlZmluZSBQQVRJX0xPQ19GTEFTSF9OT19QUkVGRVRDSAkxCQkJLyogTm8gUHJlZmV0Y2ggKi8KKyNkZWZpbmUgUEFUSV9MT0NfRkxBU0hfVEFfRU5BQkxFCTEJCQkvKiBFbmFibGUgVEEgKi8KIAogLyogc2hvdWxkIG5ldmVyIGJlIHVzZWQgKi8KICNkZWZpbmUgUEFUSV9MT0NfRkxBU0hfU1BBQ0UwX0FUVFIgICggXApAQCAtMzQzLDcgKzM0Myw3IEBACiAjZGVmaW5lIFBBVElfTE9DX0NQVV9BRERSCQkweDAxMDAwMDAwCQkvKiBMb2NhbCBBZGRyZXNzICovCiAjZGVmaW5lIFBBVElfTE9DX0NQVV9NQVNLCQkweEZGRjAwMDAwCQkvKiAxTWJ5dGUgKi8KIC8qIEF0dHJpYnV0ZXMgKi8KLSNkZWZpbmUgUEFUSV9MT0NfQ1BVX0JVU19TSVpFCQlQQVRJX0JVU19TSVpFXzMyICAJLyogMzIgQml0ICovCisjZGVmaW5lIFBBVElfTE9DX0NQVV9CVVNfU0laRQkJUEFUSV9CVVNfU0laRV8zMgkvKiAzMiBCaXQgKi8KICNkZWZpbmUgUEFUSV9MT0NfQ1BVX0JVUlNUCQkwCQkJLyogTm8gQnVyc3QgKi8KICNkZWZpbmUgUEFUSV9MT0NfQ1BVX05PX1BSRUZFVENICTEJCQkvKiBObyBQcmVmZXRjaCAqLwogI2RlZmluZSBQQVRJX0xPQ19DUFVfVEFfRU5BQkxFCQkxCQkJLyogRW5hYmxlIFRBICovCkBAIC0zOTMsOSArMzkzLDkgQEAKIAogCiAjZGVmaW5lIFBBVElfSFdfU1RBUlQJCSgoQk9PVF9FWFRfRkxBU0ggfCBJTklUSUFMX01FTV8yOE0gfCBJTklUSUFMX0lSUV9QUkVGKSkKLSNkZWZpbmUgUEFUSV9IV19QQ0lfT05MWSAJKChCT09UX0VYVF9GTEFTSCB8IElOSVRJQUxfTUVNXzI4TSB8IElOSVRJQUxfSVJRX1BSRUYgfCBQQ0lfTUFTVEVSX09OTFkpKQorI2RlZmluZSBQQVRJX0hXX1BDSV9PTkxZCSgoQk9PVF9FWFRfRkxBU0ggfCBJTklUSUFMX01FTV8yOE0gfCBJTklUSUFMX0lSUV9QUkVGIHwgUENJX01BU1RFUl9PTkxZKSkKICNkZWZpbmUgUEFUSV9IV19DUFVfQUNDCQkoKEJPT1RfRVhUX0ZMQVNIIHwgSU5JVElBTF9NRU1fMTJNIHwgSU5JVElBTF9JUlFfUFJFRiB8IFBDSV9NQVNURVJfT05MWSkpCi0jZGVmaW5lIFBBVElfSFdfQ1BVX1NMQVZFIAkoKEJPT1RfRVhUX0ZMQVNIIHwgSU5JVElBTF9NRU1fMTJNIHwgSU5JVElBTF9JUlFfUFJFRiB8IFBDSV9NQVNURVJfT05MWSB8IExPQ0FMX0NQVV9TTEFWRSkpCisjZGVmaW5lIFBBVElfSFdfQ1BVX1NMQVZFCSgoQk9PVF9FWFRfRkxBU0ggfCBJTklUSUFMX01FTV8xMk0gfCBJTklUSUFMX0lSUV9QUkVGIHwgUENJX01BU1RFUl9PTkxZIHwgTE9DQUxfQ1BVX1NMQVZFKSkKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogRGlyZWN0IE1hc3RlciBDb25maWcKQEAgLTQwNCwxMiArNDA0LDEyIEBACiAjZGVmaW5lIFBBVElfQlVTX01BU1RFUiAxCiAKIAotI2RlZmluZSBQQVRJX0RNQVNURVJfTUFTSyAJCTB4RkZGMDAwMDAgIC8qIDFNQnl0ZSAqLwotI2RlZmluZSBQQVRJX0RNQVNURVJfQUREUiAJCTB4MDEwMDAwMDAgIC8qIExvY2FsIEFkZHJlc3MgKi8KKyNkZWZpbmUgUEFUSV9ETUFTVEVSX01BU0sJCTB4RkZGMDAwMDAgIC8qIDFNQnl0ZSAqLworI2RlZmluZSBQQVRJX0RNQVNURVJfQUREUgkJMHgwMTAwMDAwMCAgLyogTG9jYWwgQWRkcmVzcyAqLwogCi0jZGVmaW5lIFBBVElfRE1BU1RFUl9NRU1PUllfRU4gCQkweDAwMDAwMDAxIC8qIDB4MDAwMDAwMDEgKi8KLSNkZWZpbmUgUEFUSV9ETUFTVEVSX1JFQURfQUhFQUQgCTB4MDAwMDAwMDQgLyogMHgwMDAwMDAwNCAqLwotI2RlZmluZSBQQVRJX0RNQVNURVJfUkVBRF9OT1RfQUhFQUQgCTB4MDAwMDAwMDAgLyogMHgwMDAwMDAwNCAqLworI2RlZmluZSBQQVRJX0RNQVNURVJfTUVNT1JZX0VOCQkweDAwMDAwMDAxIC8qIDB4MDAwMDAwMDEgKi8KKyNkZWZpbmUgUEFUSV9ETUFTVEVSX1JFQURfQUhFQUQJCTB4MDAwMDAwMDQgLyogMHgwMDAwMDAwNCAqLworI2RlZmluZSBQQVRJX0RNQVNURVJfUkVBRF9OT1RfQUhFQUQJMHgwMDAwMDAwMCAvKiAweDAwMDAwMDA0ICovCiAjZGVmaW5lIFBBVElfRE1BU1RFUl9QUkVfU0laRV9DTlRSTF8wCTB4MDAwMDAwMDAKICNkZWZpbmUgUEFUSV9ETUFTVEVSX1BSRV9TSVpFX0NOVFJMXzQJMHgwMDAwMDAwOAogI2RlZmluZSBQQVRJX0RNQVNURVJfUFJFX1NJWkVfQ05UUkxfOAkweDAwMDAxMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvcGF0aS9wY2lfZWVwcm9tLmggYi9ib2FyZC9tcGwvcGF0aS9wY2lfZWVwcm9tLmgKaW5kZXggOTY1ODgwOC4uYWYzNGI4NiAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3BhdGkvcGNpX2VlcHJvbS5oCisrKyBiL2JvYXJkL21wbC9wYXRpL3BjaV9lZXByb20uaApAQCAtMzUsNTcgKzM1LDU3IEBACiB9IHBjaV9lZXByb207CiAKIHN0YXRpYyBwY2lfZWVwcm9tIHBhdGlfZWVwcm9tW10gPSB7Ci0JeyAweDAwLFBDSV9ERVZJQ0VfSURfUEFUSSB9LCAJLyogUENJIERldmljZSBJRCBQQ0lJRFJbMzE6MTZdICovCi0JeyAweDAyLFBDSV9WRU5ET1JfSURfTVBMIH0sIAkvKiBQQ0kgVmVuZG9yIElEIFBDSUlEUlsxNTowXSAqLwotCXsgMHgwNCxQQ0lfQ0xBU1NfUFJPQ0VTU09SX1BPV0VSUEMgfSwgCS8qIFBDSSBDbGFzcyBDb2RlIFBDSUNDUlsyMzo4XSAqLwotCXsgMHgwNiwweDAwQkEgfSwgCS8qIFBDSSBDbGFzcyBDb2RlIC8gUENJIFJldmlzaW9uIElEIFBDSUNDUls3OjBdIC8gUENJUkVWWzc6MF0gKi8KLQl7IDB4MDgsMHgwMDA3IH0sIAkvKiBQQ0kgTWF4aW11bSBMYXRlbmN5IC8gUENJIE1pbmltdW0gR3JhbnQgUENJTUxSWzc6MF0gLyBQQ0lNR1JbNzowXSAqLwotCXsgMHgwQSwweDAxMDAgfSwgCS8qIFBDSSBJbnRlcnJ1cHQgUGluIC8gUENJIEludGVycnVwdCBMaW5lIFBDSUlQUls3OjBdIC8gUENJSUxSWzc6MF0gKi8KLQl7IDB4MEMsMHgwMDAwIH0sIAkvKiBNU1cgb2YgTWFpbGJveCAwIChVc2VyIERlZmluZWQpIFBDSTkwNTZfTUFJTEJPWDBbMzE6MTZdICovCi0JeyAweDBFLDB4MDAwMCB9LCAJLyogTFNXIG9mIE1haWxib3ggMCAoVXNlciBEZWZpbmVkKSBQQ0k5MDU2X01BSUxCT1gwWzE1OjBdICovCi0JeyAweDEwLDB4MDAwMCB9LCAJLyogTVNXIG9mIE1haWxib3ggMSAoVXNlciBEZWZpbmVkKSBQQ0k5MDU2X01BSUxCT1gxWzMxOjE2XSAqLwotCXsgMHgxMiwweDAwMDAgfSwgCS8qIExTVyBvZiBNYWlsYm94IDEgKFVzZXIgRGVmaW5lZCkgUENJOTA1Nl9NQUlMQk9YMVsxNTowXSAqLwotCXsgMHgxNCxISUdIX1dPUkQoUEFUSV9MT0NfQ0ZHX01BU0spIH0sIAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMCBSYW5nZSBMQVMwUlJbMzE6MTZdICovCi0JeyAweDE2LExPV19XT1JEKFBBVElfTE9DX0NGR19NQVNLKSB9LCAJLyogTFNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDAgUmFuZ2UgTEFTMFJSWzE1OjBdICovCi0JeyAweDE4LEhJR0hfV09SRChQQVRJX0xPQ19DRkdfQUREUikgfSwgCS8qIE1TVyBvZiBEaXJlY3QgU2xhdmUgTG9jYWwgQWRkcmVzcyBTcGFjZSAwIExvY2FsIEJhc2UgQWRkcmVzcyAoUmVtYXApIExBUzBCQVszMToxNl0gKENGRykgKi8KLQl7IDB4MUEsTE9XX1dPUkQoUEFUSV9MT0NfQ0ZHX0FERFIpfDEgfSwgCS8qIExTVyBvZiBEaXJlY3QgU2xhdmUgTG9jYWwgQWRkcmVzcyBTcGFjZSAwIExvY2FsIEJhc2UgQWRkcmVzcyAoUmVtYXApIExBUzBCQVsxNToyLCAwXSwgUmVzZXJ2ZWQgWzFdICovCi0JeyAweDFDLDB4MDAwMCB9LCAJLyogTVNXIG9mIE1vZGUvRE1BIEFyYml0cmF0aW9uIE1BUkJSWzMxLCAyOToxNl0gb3IgRE1BQVJCWzMxLCAyOToxNl0sIFJlc2VydmVkIFszMF0gKi8KLQl7IDB4MUUsMHgwMDAwIH0sIAkvKiBMU1cgb2YgTW9kZS9ETUEgQXJiaXRyYXRpb24gTUFSQlJbMTU6MF0gb3IgRE1BQVJCWzE1OjBdICovCi0JeyAweDIwLDB4MDAzMCB9LCAJLyogTG9jYWwgTWlzY2VsbGFuZW91cyBDb250cm9sIDIgLyBTZXJpYWwgRUVQUk9NIFdQIEFkZHIgQm91bmRhcnkgTE1JU0MyWzU6MF0sIFJlc1s3OjZdIC8gUFJPVF9BUkVBWzY6MF0sIFJlc1s3XSAqLwotCXsgMHgyMiwweDA1MTAgfSwgCS8qIExvY2FsIE1pc2NlbGxhbmVvdXMgQ29udHJvbCAxIC8gTG9jYWwgQnVzIEJpZy9MaXR0bGUgRW5kaWFuIERlc2NyaXB0b3IgTE1JU0MxWzc6MF0gLyBCSUdFTkRbNzowXSAqLwotCXsgMHgyNCwweDAwMDAgfSwgCS8qIE1TVyBvZiBEaXJlY3QgU2xhdmUgRXhwYW5zaW9uIFJPTSBSYW5nZSBFUk9NUlJbMzE6MTZdICovCi0JeyAweDI2LDB4MDAwMCB9LCAJLyogTFNXIG9mIERpcmVjdCBTbGF2ZSBFeHBhbnNpb24gUk9NIFJhbmdlIEVST01SUlsxNToxMSwgMF0sIFJlc2VydmVkIFsxMDoxXSAgKi8KLQl7IDB4MjgsMHgwMDAwIH0sIAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIEV4cGFuc2lvbiBST00gTG9jYWwgQmFzZSBBZGRyZXNzIChSZW1hcCkgYW5kIEJSRVFvIENvbnRyb2wgRVJPTUJBWzMxOjE2XSAqLwotCXsgMHgyQSwweDAwMDAgfSwgCS8qIExTVyBvZiBEaXJlY3QgU2xhdmUgRXhwYW5zaW9uIFJPTSBMb2NhbCBCYXNlIEFkZHJlc3MgKFJlbWFwKSBhbmQgQlJFUW8gQ29udHJvbCBFUk9NQkFbMTU6MTEsIDU6MF0sIFJlc2VydmVkIFsxMDo2XSAqLwotCXsgMHgyQywoMHg0MjQzIHwgSElHSF9XT1JEKChQQVRJX0xPQ19DRkdfU1BBQ0UwX0FUVFIpKSkgfSwgCS8qIE1TVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDAvRXhwYW5zaW9uIFJPTSBCdXMgUmVnaW9uIERlc2NyaXB0b3IgTEJSRDBbMzE6MTZdICovCi0JeyAweDJFLExPV19XT1JEKFBBVElfTE9DX0NGR19TUEFDRTBfQVRUUikgfSwgCS8qIExTVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDAvRXhwYW5zaW9uIFJPTSBCdXMgUmVnaW9uIERlc2NyaXB0b3IgTEJSRDBbMTU6MF0gKi8KLQl7IDB4MzAsSElHSF9XT1JEKFBBVElfRE1BU1RFUl9NQVNLKSB9LCAJLyogTVNXIG9mIExvY2FsIFJhbmdlIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBETVJSWzMxOjE2XSAqLwotCXsgMHgzMixMT1dfV09SRChQQVRJX0RNQVNURVJfTUFTSykgfSwgCS8qIExTVyBvZiBMb2NhbCBSYW5nZSBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgKFJlc2VydmVkKSBETVJSWzE1OjBdICovCi0JeyAweDM0LEhJR0hfV09SRChQQVRJX0RNQVNURVJfQUREUikgfSwgCS8qIE1TVyBvZiBMb2NhbCBCYXNlIEFkZHJlc3MgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIE1lbW9yeSBETUxCQU1bMzE6MTZdICovCi0JeyAweDM2LExPV19XT1JEKFBBVElfRE1BU1RFUl9BRERSKSB9LCAJLyogTFNXIG9mIExvY2FsIEJhc2UgQWRkcmVzcyBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgTWVtb3J5IChSZXNlcnZlZCkgRE1MQkFNWzE1OjBdICovCi0JeyAweDM4LDB4MDAwMCB9LCAJLyogTVNXIG9mIExvY2FsIEJ1cyBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiBETUxCQUlbMzE6MTZdICovCi0JeyAweDNBLDB4MDAwMCB9LCAJLyogTFNXIG9mIExvY2FsIEJ1cyBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiAoUmVzZXJ2ZWQpIERNTEJBSVsxNTowXSAqLwotCXsgMHgzQywweDAwMDAgfSwgCS8qIE1TVyBvZiBQQ0kgQmFzZSBBZGRyZXNzIChSZW1hcCkgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIE1lbW9yeSBETVBCQU1bMzE6MTZdICovCi0JeyAweDNFLDB4MDAwMCB9LCAJLyogTFNXIG9mIFBDSSBCYXNlIEFkZHJlc3MgKFJlbWFwKSBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgTWVtb3J5IERNUEJBTVsxNTowXSAqLwotCXsgMHg0MCwweDAwMDAgfSwgCS8qIE1TVyBvZiBQQ0kgQ29uZmlndXJhdGlvbiBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiBETUNGR0FbMzEsIDIzOjE2XSBSZXNlcnZlZCBbMzA6MjRdKi8KLQl7IDB4NDIsMHgwMDAwIH0sIAkvKiBMU1cgb2YgUENJIENvbmZpZ3VyYXRpb24gQWRkcmVzcyBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgSS9PIENvbmZpZ3VyYXRpb24gRE1DRkdBWzE1OjBdICovCi0JeyAweDQ0LDB4MDAwMCB9LCAJLyogUENJIFN1YnN5c3RlbSBJRCBQQ0lTSURbMTU6MF0gKi8KLQl7IDB4NDYsMHgwMDAwIH0sIAkvKiBQQ0kgU3Vic3lzdGVtIFZlbmRvciBJRCBQQ0lTVklEWzE1OjBdICovCi0JeyAweDQ4LEhJR0hfV09SRChQQVRJX0xPQ19TRFJBTV9NQVNLKSB9LCAJLyogTVNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDEgUmFuZ2UgKDEgTUIpIExBUzFSUlszMToxNl0gKi8KLQl7IDB4NEEsTE9XX1dPUkQoUEFUSV9MT0NfU0RSQU1fTUFTSykgfSwgCS8qIExTVyBvZiBEaXJlY3QgU2xhdmUgTG9jYWwgQWRkcmVzcyBTcGFjZSAxIFJhbmdlICgxIE1CKSBMQVMxUlJbMTU6MF0gKi8KLQl7IDB4NEMsSElHSF9XT1JEKFBBVElfTE9DX1NEUkFNX0FERFIpIH0sIAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMSBMb2NhbCBCYXNlIEFkZHJlc3MgKFJlbWFwKSBMQVMxQkFbMzE6MTZdIChTRFJBTSkgKi8KLQl7IDB4NEUsTE9XX1dPUkQoUEFUSV9MT0NfU0RSQU1fQUREUikgfCAweDEgfSwgCS8qIExTVyBvZiBEaXJlY3QgU2xhdmUgTG9jYWwgQWRkcmVzcyBTcGFjZSAxIExvY2FsIEJhc2UgQWRkcmVzcyAoUmVtYXApIExBUzFCQVsxNToyLCAwXSwgUmVzZXJ2ZWQgWzFdICovCi0JeyAweDUwLEhJR0hfV09SRChQQVRJX0xPQ19TRFJBTV9TUEFDRTFfQVRUUikgfSwgCS8qIE1TVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDEgQnVzIFJlZ2lvbiBEZXNjcmlwdG9yIExCUkQxWzMxOjE2XSAqLwotCXsgMHg1MixMT1dfV09SRChQQVRJX0xPQ19TRFJBTV9TUEFDRTFfQVRUUikgfSwgCS8qIExTVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDEgQnVzIFJlZ2lvbiBEZXNjcmlwdG9yIChSZXNlcnZlZCkgTEJSRDFbMTU6MF0gKi8KLQl7IDB4NTQsMHgwMDAwIH0sIAkvKiBIb3QgU3dhcCBDb250cm9sL1N0YXR1cyAoUmVzZXJ2ZWQpIFJlc2VydmVkICovCi0JeyAweDU2LDB4MDAwMCB9LCAJLyogSG90IFN3YXAgTmV4dCBDYXBhYmlsaXR5IFBvaW50ZXIgLyBIb3QgU3dhcCBDb250cm9sIEhTX05FWFRbNzowXSAvIEhTX0NOVExbNzowXSAqLwotCXsgMHg1OCwweDAwMDAgfSwgCS8qIFJlc2VydmVkIFJlc2VydmVkICovCi0JeyAweDVBLDB4MDAwMCB9LCAJLyogUENJIEFyYml0ZXIgQ29udHJvbCBQQ0lBUkJbMzowXSwgUmVzZXJ2ZWQgWzE1OjRdICovCi0JeyAweDVDLDB4MDAwMCB9LCAJLyogUG93ZXIgTWFuYWdlbWVudCBDYXBhYmlsaXRpZXMgUE1DWzE1OjksIDI6MF0gKi8KLQl7IDB4NUUsMHgwMDAwIH0sIAkvKiBQb3dlciBNYW5hZ2VtZW50IE5leHQgQ2FwYWJpbGl0eSBQb2ludGVyIChSZXNlcnZlZCkgLyBQb3dlciBNYW5hZ2VtZW50IENhcGFiaWxpdHkgSUQgKFJlc2VydmVkKSBSZXNlcnZlZCovCi0JeyAweDYwLDB4MDAwMCB9LCAJLyogUG93ZXIgTWFuYWdlbWVudCBEYXRhIC8gUE1DU1IgQnJpZGdlIFN1cHBvcnQgRXh0ZW5zaW9uIChSZXNlcnZlZCkgUE1EQVRBWzc6MF0gLyBSZXNlcnZlZCAqLwotCXsgMHg2MiwweDAwMDAgfSwgCS8qIFBvd2VyIE1hbmFnZW1lbnQgQ29udHJvbC9TdGF0dXMgUE1DU1JbMTQ6OF0gKi8KLQl7IDB4RkZGRiwweEZGRkZ9IAkvKiB0ZXJtaW5hcm9yICovCisJeyAweDAwLFBDSV9ERVZJQ0VfSURfUEFUSSB9LAkvKiBQQ0kgRGV2aWNlIElEIFBDSUlEUlszMToxNl0gKi8KKwl7IDB4MDIsUENJX1ZFTkRPUl9JRF9NUEwgfSwJLyogUENJIFZlbmRvciBJRCBQQ0lJRFJbMTU6MF0gKi8KKwl7IDB4MDQsUENJX0NMQVNTX1BST0NFU1NPUl9QT1dFUlBDIH0sCS8qIFBDSSBDbGFzcyBDb2RlIFBDSUNDUlsyMzo4XSAqLworCXsgMHgwNiwweDAwQkEgfSwJLyogUENJIENsYXNzIENvZGUgLyBQQ0kgUmV2aXNpb24gSUQgUENJQ0NSWzc6MF0gLyBQQ0lSRVZbNzowXSAqLworCXsgMHgwOCwweDAwMDcgfSwJLyogUENJIE1heGltdW0gTGF0ZW5jeSAvIFBDSSBNaW5pbXVtIEdyYW50IFBDSU1MUls3OjBdIC8gUENJTUdSWzc6MF0gKi8KKwl7IDB4MEEsMHgwMTAwIH0sCS8qIFBDSSBJbnRlcnJ1cHQgUGluIC8gUENJIEludGVycnVwdCBMaW5lIFBDSUlQUls3OjBdIC8gUENJSUxSWzc6MF0gKi8KKwl7IDB4MEMsMHgwMDAwIH0sCS8qIE1TVyBvZiBNYWlsYm94IDAgKFVzZXIgRGVmaW5lZCkgUENJOTA1Nl9NQUlMQk9YMFszMToxNl0gKi8KKwl7IDB4MEUsMHgwMDAwIH0sCS8qIExTVyBvZiBNYWlsYm94IDAgKFVzZXIgRGVmaW5lZCkgUENJOTA1Nl9NQUlMQk9YMFsxNTowXSAqLworCXsgMHgxMCwweDAwMDAgfSwJLyogTVNXIG9mIE1haWxib3ggMSAoVXNlciBEZWZpbmVkKSBQQ0k5MDU2X01BSUxCT1gxWzMxOjE2XSAqLworCXsgMHgxMiwweDAwMDAgfSwJLyogTFNXIG9mIE1haWxib3ggMSAoVXNlciBEZWZpbmVkKSBQQ0k5MDU2X01BSUxCT1gxWzE1OjBdICovCisJeyAweDE0LEhJR0hfV09SRChQQVRJX0xPQ19DRkdfTUFTSykgfSwJLyogTVNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDAgUmFuZ2UgTEFTMFJSWzMxOjE2XSAqLworCXsgMHgxNixMT1dfV09SRChQQVRJX0xPQ19DRkdfTUFTSykgfSwJLyogTFNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDAgUmFuZ2UgTEFTMFJSWzE1OjBdICovCisJeyAweDE4LEhJR0hfV09SRChQQVRJX0xPQ19DRkdfQUREUikgfSwJLyogTVNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDAgTG9jYWwgQmFzZSBBZGRyZXNzIChSZW1hcCkgTEFTMEJBWzMxOjE2XSAoQ0ZHKSAqLworCXsgMHgxQSxMT1dfV09SRChQQVRJX0xPQ19DRkdfQUREUil8MSB9LAkvKiBMU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMCBMb2NhbCBCYXNlIEFkZHJlc3MgKFJlbWFwKSBMQVMwQkFbMTU6MiwgMF0sIFJlc2VydmVkIFsxXSAqLworCXsgMHgxQywweDAwMDAgfSwJLyogTVNXIG9mIE1vZGUvRE1BIEFyYml0cmF0aW9uIE1BUkJSWzMxLCAyOToxNl0gb3IgRE1BQVJCWzMxLCAyOToxNl0sIFJlc2VydmVkIFszMF0gKi8KKwl7IDB4MUUsMHgwMDAwIH0sCS8qIExTVyBvZiBNb2RlL0RNQSBBcmJpdHJhdGlvbiBNQVJCUlsxNTowXSBvciBETUFBUkJbMTU6MF0gKi8KKwl7IDB4MjAsMHgwMDMwIH0sCS8qIExvY2FsIE1pc2NlbGxhbmVvdXMgQ29udHJvbCAyIC8gU2VyaWFsIEVFUFJPTSBXUCBBZGRyIEJvdW5kYXJ5IExNSVNDMls1OjBdLCBSZXNbNzo2XSAvIFBST1RfQVJFQVs2OjBdLCBSZXNbN10gKi8KKwl7IDB4MjIsMHgwNTEwIH0sCS8qIExvY2FsIE1pc2NlbGxhbmVvdXMgQ29udHJvbCAxIC8gTG9jYWwgQnVzIEJpZy9MaXR0bGUgRW5kaWFuIERlc2NyaXB0b3IgTE1JU0MxWzc6MF0gLyBCSUdFTkRbNzowXSAqLworCXsgMHgyNCwweDAwMDAgfSwJLyogTVNXIG9mIERpcmVjdCBTbGF2ZSBFeHBhbnNpb24gUk9NIFJhbmdlIEVST01SUlszMToxNl0gKi8KKwl7IDB4MjYsMHgwMDAwIH0sCS8qIExTVyBvZiBEaXJlY3QgU2xhdmUgRXhwYW5zaW9uIFJPTSBSYW5nZSBFUk9NUlJbMTU6MTEsIDBdLCBSZXNlcnZlZCBbMTA6MV0gICovCisJeyAweDI4LDB4MDAwMCB9LAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIEV4cGFuc2lvbiBST00gTG9jYWwgQmFzZSBBZGRyZXNzIChSZW1hcCkgYW5kIEJSRVFvIENvbnRyb2wgRVJPTUJBWzMxOjE2XSAqLworCXsgMHgyQSwweDAwMDAgfSwJLyogTFNXIG9mIERpcmVjdCBTbGF2ZSBFeHBhbnNpb24gUk9NIExvY2FsIEJhc2UgQWRkcmVzcyAoUmVtYXApIGFuZCBCUkVRbyBDb250cm9sIEVST01CQVsxNToxMSwgNTowXSwgUmVzZXJ2ZWQgWzEwOjZdICovCisJeyAweDJDLCgweDQyNDMgfCBISUdIX1dPUkQoKFBBVElfTE9DX0NGR19TUEFDRTBfQVRUUikpKSB9LAkvKiBNU1cgb2YgTG9jYWwgQWRkcmVzcyBTcGFjZSAwL0V4cGFuc2lvbiBST00gQnVzIFJlZ2lvbiBEZXNjcmlwdG9yIExCUkQwWzMxOjE2XSAqLworCXsgMHgyRSxMT1dfV09SRChQQVRJX0xPQ19DRkdfU1BBQ0UwX0FUVFIpIH0sCS8qIExTVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDAvRXhwYW5zaW9uIFJPTSBCdXMgUmVnaW9uIERlc2NyaXB0b3IgTEJSRDBbMTU6MF0gKi8KKwl7IDB4MzAsSElHSF9XT1JEKFBBVElfRE1BU1RFUl9NQVNLKSB9LAkvKiBNU1cgb2YgTG9jYWwgUmFuZ2UgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIERNUlJbMzE6MTZdICovCisJeyAweDMyLExPV19XT1JEKFBBVElfRE1BU1RFUl9NQVNLKSB9LAkvKiBMU1cgb2YgTG9jYWwgUmFuZ2UgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIChSZXNlcnZlZCkgRE1SUlsxNTowXSAqLworCXsgMHgzNCxISUdIX1dPUkQoUEFUSV9ETUFTVEVSX0FERFIpIH0sCS8qIE1TVyBvZiBMb2NhbCBCYXNlIEFkZHJlc3MgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIE1lbW9yeSBETUxCQU1bMzE6MTZdICovCisJeyAweDM2LExPV19XT1JEKFBBVElfRE1BU1RFUl9BRERSKSB9LAkvKiBMU1cgb2YgTG9jYWwgQmFzZSBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBNZW1vcnkgKFJlc2VydmVkKSBETUxCQU1bMTU6MF0gKi8KKwl7IDB4MzgsMHgwMDAwIH0sCS8qIE1TVyBvZiBMb2NhbCBCdXMgQWRkcmVzcyBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgSS9PIENvbmZpZ3VyYXRpb24gRE1MQkFJWzMxOjE2XSAqLworCXsgMHgzQSwweDAwMDAgfSwJLyogTFNXIG9mIExvY2FsIEJ1cyBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiAoUmVzZXJ2ZWQpIERNTEJBSVsxNTowXSAqLworCXsgMHgzQywweDAwMDAgfSwJLyogTVNXIG9mIFBDSSBCYXNlIEFkZHJlc3MgKFJlbWFwKSBmb3IgRGlyZWN0IE1hc3Rlci10by1QQ0kgTWVtb3J5IERNUEJBTVszMToxNl0gKi8KKwl7IDB4M0UsMHgwMDAwIH0sCS8qIExTVyBvZiBQQ0kgQmFzZSBBZGRyZXNzIChSZW1hcCkgZm9yIERpcmVjdCBNYXN0ZXItdG8tUENJIE1lbW9yeSBETVBCQU1bMTU6MF0gKi8KKwl7IDB4NDAsMHgwMDAwIH0sCS8qIE1TVyBvZiBQQ0kgQ29uZmlndXJhdGlvbiBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiBETUNGR0FbMzEsIDIzOjE2XSBSZXNlcnZlZCBbMzA6MjRdKi8KKwl7IDB4NDIsMHgwMDAwIH0sCS8qIExTVyBvZiBQQ0kgQ29uZmlndXJhdGlvbiBBZGRyZXNzIGZvciBEaXJlY3QgTWFzdGVyLXRvLVBDSSBJL08gQ29uZmlndXJhdGlvbiBETUNGR0FbMTU6MF0gKi8KKwl7IDB4NDQsMHgwMDAwIH0sCS8qIFBDSSBTdWJzeXN0ZW0gSUQgUENJU0lEWzE1OjBdICovCisJeyAweDQ2LDB4MDAwMCB9LAkvKiBQQ0kgU3Vic3lzdGVtIFZlbmRvciBJRCBQQ0lTVklEWzE1OjBdICovCisJeyAweDQ4LEhJR0hfV09SRChQQVRJX0xPQ19TRFJBTV9NQVNLKSB9LAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMSBSYW5nZSAoMSBNQikgTEFTMVJSWzMxOjE2XSAqLworCXsgMHg0QSxMT1dfV09SRChQQVRJX0xPQ19TRFJBTV9NQVNLKSB9LAkvKiBMU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMSBSYW5nZSAoMSBNQikgTEFTMVJSWzE1OjBdICovCisJeyAweDRDLEhJR0hfV09SRChQQVRJX0xPQ19TRFJBTV9BRERSKSB9LAkvKiBNU1cgb2YgRGlyZWN0IFNsYXZlIExvY2FsIEFkZHJlc3MgU3BhY2UgMSBMb2NhbCBCYXNlIEFkZHJlc3MgKFJlbWFwKSBMQVMxQkFbMzE6MTZdIChTRFJBTSkgKi8KKwl7IDB4NEUsTE9XX1dPUkQoUEFUSV9MT0NfU0RSQU1fQUREUikgfCAweDEgfSwJLyogTFNXIG9mIERpcmVjdCBTbGF2ZSBMb2NhbCBBZGRyZXNzIFNwYWNlIDEgTG9jYWwgQmFzZSBBZGRyZXNzIChSZW1hcCkgTEFTMUJBWzE1OjIsIDBdLCBSZXNlcnZlZCBbMV0gKi8KKwl7IDB4NTAsSElHSF9XT1JEKFBBVElfTE9DX1NEUkFNX1NQQUNFMV9BVFRSKSB9LAkvKiBNU1cgb2YgTG9jYWwgQWRkcmVzcyBTcGFjZSAxIEJ1cyBSZWdpb24gRGVzY3JpcHRvciBMQlJEMVszMToxNl0gKi8KKwl7IDB4NTIsTE9XX1dPUkQoUEFUSV9MT0NfU0RSQU1fU1BBQ0UxX0FUVFIpIH0sCS8qIExTVyBvZiBMb2NhbCBBZGRyZXNzIFNwYWNlIDEgQnVzIFJlZ2lvbiBEZXNjcmlwdG9yIChSZXNlcnZlZCkgTEJSRDFbMTU6MF0gKi8KKwl7IDB4NTQsMHgwMDAwIH0sCS8qIEhvdCBTd2FwIENvbnRyb2wvU3RhdHVzIChSZXNlcnZlZCkgUmVzZXJ2ZWQgKi8KKwl7IDB4NTYsMHgwMDAwIH0sCS8qIEhvdCBTd2FwIE5leHQgQ2FwYWJpbGl0eSBQb2ludGVyIC8gSG90IFN3YXAgQ29udHJvbCBIU19ORVhUWzc6MF0gLyBIU19DTlRMWzc6MF0gKi8KKwl7IDB4NTgsMHgwMDAwIH0sCS8qIFJlc2VydmVkIFJlc2VydmVkICovCisJeyAweDVBLDB4MDAwMCB9LAkvKiBQQ0kgQXJiaXRlciBDb250cm9sIFBDSUFSQlszOjBdLCBSZXNlcnZlZCBbMTU6NF0gKi8KKwl7IDB4NUMsMHgwMDAwIH0sCS8qIFBvd2VyIE1hbmFnZW1lbnQgQ2FwYWJpbGl0aWVzIFBNQ1sxNTo5LCAyOjBdICovCisJeyAweDVFLDB4MDAwMCB9LAkvKiBQb3dlciBNYW5hZ2VtZW50IE5leHQgQ2FwYWJpbGl0eSBQb2ludGVyIChSZXNlcnZlZCkgLyBQb3dlciBNYW5hZ2VtZW50IENhcGFiaWxpdHkgSUQgKFJlc2VydmVkKSBSZXNlcnZlZCovCisJeyAweDYwLDB4MDAwMCB9LAkvKiBQb3dlciBNYW5hZ2VtZW50IERhdGEgLyBQTUNTUiBCcmlkZ2UgU3VwcG9ydCBFeHRlbnNpb24gKFJlc2VydmVkKSBQTURBVEFbNzowXSAvIFJlc2VydmVkICovCisJeyAweDYyLDB4MDAwMCB9LAkvKiBQb3dlciBNYW5hZ2VtZW50IENvbnRyb2wvU3RhdHVzIFBNQ1NSWzE0OjhdICovCisJeyAweEZGRkYsMHhGRkZGfQkvKiB0ZXJtaW5hcm9yICovCiB9OwogI2RlZmluZSBQQVRJX0VFUFJPTV9MQVNUX09GRlNFVAkweDY0CiAjZW5kaWYgLyogI2lmbmRlZiBfX1BDSV9FRVBST01fSF8gKi8KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9waXA0MDUvY21kX3BpcDQwNS5jIGIvYm9hcmQvbXBsL3BpcDQwNS9jbWRfcGlwNDA1LmMKaW5kZXggMWJmNGQ3Yi4uOTQ1ZTVjOSAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3BpcDQwNS9jbWRfcGlwNDA1LmMKKysrIGIvYm9hcmQvbXBsL3BpcDQwNS9jbWRfcGlwNDA1LmMKQEAgLTM4LDE0ICszOCwxNCBAQAogaW50IGRvX3BpcDQwNShjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAotIAl1bG9uZyBsZWRfb24sbGVkX25yOworCXVsb25nIGxlZF9vbixsZWRfbnI7CiAKIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICJpbmZvIikgPT0gMCkKIAl7CiAJCXByaW50X3BpcDQwNV9pbmZvKCk7Ci0JIAlyZXR1cm4gMDsKLSAgIAl9Ci0gCWlmIChzdHJjbXAoYXJndlsxXSwgImxlZCIpID09IDApCisJCXJldHVybiAwOworCX0KKwlpZiAoc3RyY21wKGFyZ3ZbMV0sICJsZWQiKSA9PSAwKQogCXsKIAkJbGVkX25yID0gKHVsb25nKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDEwKTsKIAkJbGVkX29uID0gKHVsb25nKXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbM10sIE5VTEwsIDEwKTsKQEAgLTU0LDcgKzU0LDcgQEAKIAkJZWxzZQogCQkJdXNlcl9sZWQxKGxlZF9vbik7CiAJCXJldHVybiAwOwotICAgCX0KKwl9CiAKIAlyZXR1cm4gKGRvX21wbGNvbW1vbihjbWR0cCwgZmxhZywgYXJnYywgYXJndikpOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3BpcDQwNS9waXA0MDUuaCBiL2JvYXJkL21wbC9waXA0MDUvcGlwNDA1LmgKaW5kZXggYjQxYzViYi4uNTgxNTc4NiAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3BpcDQwNS9waXA0MDUuaAorKysgYi9ib2FyZC9tcGwvcGlwNDA1L3BpcDQwNS5oCkBAIC01Niw3ICs1Niw3IEBACiAvKiB0aW1pbmdzICovCiAKIC8qIENTIENvbmZpZyByZWdpc3RlciAoQ1M3KSAqLwotI2RlZmluZSBDT05GSUdfUE9SVF9CTUUJMCAJLyogQnVyc3QgZGlzYWJsZSAqLworI2RlZmluZSBDT05GSUdfUE9SVF9CTUUJMAkvKiBCdXJzdCBkaXNhYmxlICovCiAjZGVmaW5lIENPTkZJR19QT1JUX1RXRQkyNTUJLyogMjU1ICogMzBucyAxMjBucyBXYWl0c3RhdGVzIChhY2Nlc3M9VFdUKzErVEgpICovCiAjZGVmaW5lIENPTkZJR19QT1JUX0NTTgkxCS8qIENoaXBzZWxlY3QgaXMgZHJpdmVuIGluYWN0aXZlIGZvciAxIEN5Y2xlIEJUVyB0cmFuc2ZlcnMgKi8KICNkZWZpbmUgQ09ORklHX1BPUlRfT0VOCTEJLyogQ3ljbGVzIGZyb20gQ1MgbG93IHRvIE9FIGxvdyAgICovCkBAIC02Nyw3ICs2Nyw3IEBACiAjZGVmaW5lIENPTkZJR19QT1JUX1NPUgkxCS8qIFNhbXBsZSBvbiBSZWFkeSBkaXNhYmxlZCAqLwogI2RlZmluZSBDT05GSUdfUE9SVF9CRU0JMAkvKiBCeXRlIFdyaXRlIG9ubHkgYWN0aXZlIG9uIFdyaXRlIGN5Y2xlcyAqLwogI2RlZmluZSBDT05GSUdfUE9SVF9QRU4JMAkvKiBQYXJpdHkgZGlzYWJsZSAqLwotI2RlZmluZSBDT05GSUdfUE9SVF9BUCAJKChDT05GSUdfUE9SVF9CTUUgPDwgMzEpICsgKENPTkZJR19QT1JUX1RXRSA8PCAyMykgKyAoQ09ORklHX1BPUlRfQ1NOIDw8IDE4KSArIChDT05GSUdfUE9SVF9PRU4gPDwgMTYpICsgKENPTkZJR19QT1JUX1dCTiA8PCAxNCkgKyBcCisjZGVmaW5lIENPTkZJR19QT1JUX0FQCSgoQ09ORklHX1BPUlRfQk1FIDw8IDMxKSArIChDT05GSUdfUE9SVF9UV0UgPDwgMjMpICsgKENPTkZJR19QT1JUX0NTTiA8PCAxOCkgKyAoQ09ORklHX1BPUlRfT0VOIDw8IDE2KSArIChDT05GSUdfUE9SVF9XQk4gPDwgMTQpICsgXAogCQkJCShDT05GSUdfUE9SVF9XQkYgPDwgMTIpICsgKENPTkZJR19QT1JUX1RIIDw8IDkpICsgKENPTkZJR19QT1JUX1JFIDw8IDgpICsgKENPTkZJR19QT1JUX1NPUiA8PCA3KSArIChDT05GSUdfUE9SVF9CRU0gPDwgNikgKyAoQ09ORklHX1BPUlRfUEVOIDw8IDUpKQogCiAvKiBTaXplOiAwPTFNQiwgMT0yTUIsIDI9NE1CLCAzPThNQiwgND0xNk1CLCA1PTMyTUIsIDY9NjRNQiwgNz0xMjhNQiAqLwpAQCAtODAsMTAgKzgwLDEwIEBACiAKIC8qIEZsYXNoIENTMCBvciBDUyAxICovCiAvKiAweDdGOEZGRTgwIHNsb3dlc3QgdGltaW5nIGF0IGFsbC4uLiAqLwotI2RlZmluZSBGTEFTSF9CTUVfQgkxIAkvKiBCdXJzdCBlbmFibGUgKi8KKyNkZWZpbmUgRkxBU0hfQk1FX0IJMQkvKiBCdXJzdCBlbmFibGUgKi8KICNkZWZpbmUgRkxBU0hfRldUX0IJMHg2CS8qIDYgKiAzMG5zIDIxMG5zIEZpcnN0IFdhaXQgQWNjZXNzICovCiAjZGVmaW5lIEZMQVNIX0JXVF9CCTB4NgkvKiA2ICogMzBucyAyMTBucyBCdXJzdCBXYWl0IEFjY2VzcyAqLwotI2RlZmluZSBGTEFTSF9CTUUJMCAJLyogQnVyc3QgZGlzYWJsZSAqLworI2RlZmluZSBGTEFTSF9CTUUJMAkvKiBCdXJzdCBkaXNhYmxlICovCiAjZGVmaW5lIEZMQVNIX1RXRQkweGIvKiAxMSAqIDMwbnMgMzMwbnMgV2FpdHN0YXRlcyAoYWNjZXNzPVRXVCsxK1RIKSAqLwogI2RlZmluZSBGTEFTSF9DU04JMAkvKiBDaGlwc2VsZWN0IGlzIGRyaXZlbiBpbmFjdGl2ZSBmb3IgMSBDeWNsZSBCVFcgdHJhbnNmZXJzICovCiAjZGVmaW5lIEZMQVNIX09FTgkxCS8qIEN5Y2xlcyBmcm9tIENTIGxvdyB0byBPRSBsb3cgICAqLwpAQCAtOTUsMTAgKzk1LDEwIEBACiAjZGVmaW5lIEZMQVNIX0JFTQkwCS8qIEJ5dGUgV3JpdGUgb25seSBhY3RpdmUgb24gV3JpdGUgY3ljbGVzICovCiAjZGVmaW5lIEZMQVNIX1BFTgkwCS8qIFBhcml0eSBkaXNhYmxlICovCiAvKiBBY2Nlc3MgUGFyYW1ldGVyIFJlZ2lzdGVyIGZvciBub24gQm9vdCAqLwotI2RlZmluZSBGTEFTSF9BUCAJKChGTEFTSF9CTUUgPDwgMzEpICsgKEZMQVNIX1RXRSA8PCAyMykgKyAoRkxBU0hfQ1NOIDw8IDE4KSArIChGTEFTSF9PRU4gPDwgMTYpICsgKEZMQVNIX1dCTiA8PCAxNCkgKyBcCisjZGVmaW5lIEZMQVNIX0FQCSgoRkxBU0hfQk1FIDw8IDMxKSArIChGTEFTSF9UV0UgPDwgMjMpICsgKEZMQVNIX0NTTiA8PCAxOCkgKyAoRkxBU0hfT0VOIDw8IDE2KSArIChGTEFTSF9XQk4gPDwgMTQpICsgXAogCQkJCShGTEFTSF9XQkYgPDwgMTIpICsgKEZMQVNIX1RIIDw8IDkpICsgKEZMQVNIX1JFIDw8IDgpICsgKEZMQVNIX1NPUiA8PCA3KSArIChGTEFTSF9CRU0gPDwgNikgKyAoRkxBU0hfUEVOIDw8IDUpKQogLyogQWNjZXNzIFBhcmFtZXRlciBSZWdpc3RlciBmb3IgQm9vdCAqLwotI2RlZmluZSBGTEFTSF9BUF9CIAkoKEZMQVNIX0JNRV9CIDw8IDMxKSArIChGTEFTSF9GV1RfQiA8PCAyNikgKyAoRkxBU0hfQldUX0IgPDwgMjMpICsgKEZMQVNIX0NTTiA8PCAxOCkgKyAoRkxBU0hfT0VOIDw8IDE2KSArIChGTEFTSF9XQk4gPDwgMTQpICsgXAorI2RlZmluZSBGTEFTSF9BUF9CCSgoRkxBU0hfQk1FX0IgPDwgMzEpICsgKEZMQVNIX0ZXVF9CIDw8IDI2KSArIChGTEFTSF9CV1RfQiA8PCAyMykgKyAoRkxBU0hfQ1NOIDw8IDE4KSArIChGTEFTSF9PRU4gPDwgMTYpICsgKEZMQVNIX1dCTiA8PCAxNCkgKyBcCiAJCQkJKEZMQVNIX1dCRiA8PCAxMikgKyAoRkxBU0hfVEggPDwgOSkgKyAoRkxBU0hfUkUgPDwgOCkgKyAoRkxBU0hfU09SIDw8IDcpICsgKEZMQVNIX0JFTSA8PCA2KSArIChGTEFTSF9QRU4gPDwgNSkpCiAKIC8qIFNpemU6IDA9MU1CLCAxPTJNQiwgMj00TUIsIDM9OE1CLCA0PTE2TUIsIDU9MzJNQiwgNj02NE1CLCA3PTEyOE1CICovCkBAIC0xMTQsMTAgKzExNCwxMCBAQAogCiAvKiBNUFMgQ1MxIG9yIENTMCAqLwogLyogQm9vdCBDUzogKi8KLSNkZWZpbmUgTVBTX0JNRV9CCTEgCS8qIEJ1cnN0IGVuYWJsZSAqLworI2RlZmluZSBNUFNfQk1FX0IJMQkvKiBCdXJzdCBlbmFibGUgKi8KICNkZWZpbmUgTVBTX0ZXVF9CCTB4Ni8qIDYgKiAzMG5zIDIxMG5zIEZpcnN0IFdhaXQgQWNjZXNzICovCiAjZGVmaW5lIE1QU19CV1RfQgkweDYJLyogNiAqIDMwbnMgMjEwbnMgQnVyc3QgV2FpdCBBY2Nlc3MgKi8KLSNkZWZpbmUgTVBTX0JNRQkJMCAJLyogQnVyc3QgZGlzYWJsZSAqLworI2RlZmluZSBNUFNfQk1FCQkwCS8qIEJ1cnN0IGRpc2FibGUgKi8KICNkZWZpbmUgTVBTX1RXRQkJMHhiLyogMTEgKiAzMG5zIDMzMG5zIFdhaXRzdGF0ZXMgKGFjY2Vzcz1UV1QrMStUSCkgKi8KICNkZWZpbmUgTVBTX0NTTgkJMAkvKiBDaGlwc2VsZWN0IGlzIGRyaXZlbiBpbmFjdGl2ZSBmb3IgMSBDeWNsZSBCVFcgdHJhbnNmZXJzICovCiAjZGVmaW5lIE1QU19PRU4JCTEJLyogQ3ljbGVzIGZyb20gQ1MgbG93IHRvIE9FIGxvdyAgICovCkBAIC0xMjksMTAgKzEyOSwxMCBAQAogI2RlZmluZSBNUFNfQkVNCQkwCS8qIEJ5dGUgV3JpdGUgb25seSBhY3RpdmUgb24gV3JpdGUgY3ljbGVzICovCiAjZGVmaW5lIE1QU19QRU4JCTAJLyogUGFyaXR5IGRpc2FibGUgKi8KIC8qIEFjY2VzcyBQYXJhbWV0ZXIgUmVnaXN0ZXIgZm9yIG5vbiBCb290ICovCi0jZGVmaW5lIE1QU19BUCAJCSgoTVBTX0JNRSA8PCAzMSkgKyAoTVBTX1RXRSA8PCAyMykgKyAoTVBTX0NTTiA8PCAxOCkgKyAoTVBTX09FTiA8PCAxNikgKyAoTVBTX1dCTiA8PCAxNCkgKyBcCisjZGVmaW5lIE1QU19BUAkJKChNUFNfQk1FIDw8IDMxKSArIChNUFNfVFdFIDw8IDIzKSArIChNUFNfQ1NOIDw8IDE4KSArIChNUFNfT0VOIDw8IDE2KSArIChNUFNfV0JOIDw8IDE0KSArIFwKIAkJCQkoTVBTX1dCRiA8PCAxMikgKyAoTVBTX1RIIDw8IDkpICsgKE1QU19SRSA8PCA4KSArIChNUFNfU09SIDw8IDcpICsgKE1QU19CRU0gPDwgNikgKyAoTVBTX1BFTiA8PCA1KSkKIC8qIEFjY2VzcyBQYXJhbWV0ZXIgUmVnaXN0ZXIgZm9yIEJvb3QgKi8KLSNkZWZpbmUgTVBTX0FQX0IgCSgoTVBTX0JNRV9CIDw8IDMxKSArIChNUFNfRldUX0IgPDwgMjYpICsgKE1QU19CV1RfQiA8PCAyMykgKyAoTVBTX0NTTiA8PCAxOCkgKyAoTVBTX09FTiA8PCAxNikgKyAoTVBTX1dCTiA8PCAxNCkgKyBcCisjZGVmaW5lIE1QU19BUF9CCSgoTVBTX0JNRV9CIDw8IDMxKSArIChNUFNfRldUX0IgPDwgMjYpICsgKE1QU19CV1RfQiA8PCAyMykgKyAoTVBTX0NTTiA8PCAxOCkgKyAoTVBTX09FTiA8PCAxNikgKyAoTVBTX1dCTiA8PCAxNCkgKyBcCiAJCQkJKE1QU19XQkYgPDwgMTIpICsgKE1QU19USCA8PCA5KSArIChNUFNfUkUgPDwgOCkgKyAoTVBTX1NPUiA8PCA3KSArIChNUFNfQkVNIDw8IDYpICsgKE1QU19QRU4gPDwgNSkpCiAKIC8qIFNpemU6IDA9MU1CLCAxPTJNQiwgMj00TUIsIDM9OE1CLCA0PTE2TUIsIDU9MzJNQiwgNj02NE1CLCA3PTEyOE1CICovCmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvcGlwNDA1L3UtYm9vdC5sZHMgYi9ib2FyZC9tcGwvcGlwNDA1L3UtYm9vdC5sZHMKaW5kZXggYzdhZTRkMC4uZmI3MTA2NCAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3BpcDQwNS91LWJvb3QubGRzCisrKyBiL2JvYXJkL21wbC9waXA0MDUvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9waXA0MDUvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL21wbC9waXA0MDUvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA4OGRjYWY5Li4wNTUyOTk0IDEwMDY0NAotLS0gYS9ib2FyZC9tcGwvcGlwNDA1L3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvbXBsL3BpcDQwNS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L2NtZF92Y21hOS5jIGIvYm9hcmQvbXBsL3ZjbWE5L2NtZF92Y21hOS5jCmluZGV4IDkwYTFiMDguLmQzNjI5YzUgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC92Y21hOS9jbWRfdmNtYTkuYworKysgYi9ib2FyZC9tcGwvdmNtYTkvY21kX3ZjbWE5LmMKQEAgLTU4LDggKzU4LDggQEAKIAlpZiAoc3RyY21wKGFyZ3ZbMV0sICJpbmZvIikgPT0gMCkKIAl7CiAJCXByaW50X3ZjbWE5X2luZm8oKTsKLQkgCXJldHVybiAwOwotICAgCX0KKwkJcmV0dXJuIDA7CisJfQogI2lmIGRlZmluZWQoQ09ORklHX0RSSVZFUl9DUzg5MDApCiAJaWYgKHN0cmNtcChhcmd2WzFdLCAiY3M4OTAwIikgPT0gMCkgewogCQlpZiAoc3RyY21wKGFyZ3ZbMl0sICJyZWFkIikgPT0gMCkgewpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3ZjbWE5L2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL21wbC92Y21hOS9sb3dsZXZlbF9pbml0LlMKaW5kZXggYTAyMzM1My4uZTNhZjA3MyAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3ZjbWE5L2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9tcGwvdmNtYTkvbG93bGV2ZWxfaW5pdC5TCkBAIC0zOSw5MiArMzksOTIgQEAKICNkZWZpbmUgU0RSQU1fUkVHCTB4MkMwMDAxMDYKIAogLyogQldTQ09OICovCi0jZGVmaW5lIERXOAkJIAkoMHgwKQotI2RlZmluZSBEVzE2CQkgCSgweDEpCi0jZGVmaW5lIERXMzIJCSAJKDB4MikKLSNkZWZpbmUgV0FJVAkJIAkoMHgxPDwyKQotI2RlZmluZSBVQkxCCQkgCSgweDE8PDMpCisjZGVmaW5lIERXOAkJCSgweDApCisjZGVmaW5lIERXMTYJCQkoMHgxKQorI2RlZmluZSBEVzMyCQkJKDB4MikKKyNkZWZpbmUgV0FJVAkJCSgweDE8PDIpCisjZGVmaW5lIFVCTEIJCQkoMHgxPDwzKQogCiAvKiBCQU5LU0laRSAqLwogI2RlZmluZSBCVVJTVF9FTgkJKDB4MTw8NykKIAotI2RlZmluZSBCMV9CV1NDT04JICAJKERXMTYpCi0jZGVmaW5lIEIyX0JXU0NPTgkgIAkoRFczMikKLSNkZWZpbmUgQjNfQldTQ09OCSAgCShEVzMyKQotI2RlZmluZSBCNF9CV1NDT04JICAJKERXMTYgKyBXQUlUICsgVUJMQikKLSNkZWZpbmUgQjVfQldTQ09OCSAgCShEVzggKyBVQkxCKQotI2RlZmluZSBCNl9CV1NDT04JICAJKERXMzIpCi0jZGVmaW5lIEI3X0JXU0NPTgkgIAkoRFczMikKKyNkZWZpbmUgQjFfQldTQ09OCQkoRFcxNikKKyNkZWZpbmUgQjJfQldTQ09OCQkoRFczMikKKyNkZWZpbmUgQjNfQldTQ09OCQkoRFczMikKKyNkZWZpbmUgQjRfQldTQ09OCQkoRFcxNiArIFdBSVQgKyBVQkxCKQorI2RlZmluZSBCNV9CV1NDT04JCShEVzggKyBVQkxCKQorI2RlZmluZSBCNl9CV1NDT04JCShEVzMyKQorI2RlZmluZSBCN19CV1NDT04JCShEVzMyKQogCiAvKiBCQU5LMENPTiAqLwotI2RlZmluZSBCMF9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMF9UY29zCQkgCTB4MQkvKiAgMWNsayAqLworI2RlZmluZSBCMF9UYWNzCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIwX1Rjb3MJCQkweDEJLyogIDFjbGsgKi8KIC8qI2RlZmluZSBCMF9UY29zCQkweDAJICAwY2xrICovCi0jZGVmaW5lIEIwX1RhY2MJCSAJMHg3CS8qICAxNGNsayAqLworI2RlZmluZSBCMF9UYWNjCQkJMHg3CS8qICAxNGNsayAqLwogLyojZGVmaW5lIEIwX1RhY2MJCTB4NQkgIDhjbGsgKi8KLSNkZWZpbmUgQjBfVGNvaAkJIAkweDAJLyogIDBjbGsgKi8KLSNkZWZpbmUgQjBfVGFoCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMF9UYWNwCQkgCTB4MCAgICAgLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCi0jZGVmaW5lIEIwX1BNQwkJIAkweDAJLyogcGFnZSBtb2RlIGRpc2FibGVkICovCisjZGVmaW5lIEIwX1Rjb2gJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjBfVGFoCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIwX1RhY3AJCQkweDAgICAgIC8qIHBhZ2UgbW9kZSBpcyBub3QgdXNlZCAqLworI2RlZmluZSBCMF9QTUMJCQkweDAJLyogcGFnZSBtb2RlIGRpc2FibGVkICovCiAKIC8qIEJBTksxQ09OICovCi0jZGVmaW5lIEIxX1RhY3MJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEIxX1Rjb3MJCSAJMHgxCS8qICAxY2xrICovCisjZGVmaW5lIEIxX1RhY3MJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjFfVGNvcwkJCTB4MQkvKiAgMWNsayAqLwogLyojZGVmaW5lIEIxX1Rjb3MJCTB4MAkgIDBjbGsgKi8KICNkZWZpbmUgQjFfVGFjYwkJCTB4NwkvKiAgMTRjbGsgKi8KIC8qI2RlZmluZSBCMV9UYWNjCQkweDUJICA4Y2xrICovCi0jZGVmaW5lIEIxX1Rjb2gJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEIxX1RhaAkJIAkweDAJLyogIDBjbGsgKi8KLSNkZWZpbmUgQjFfVGFjcAkJIAkweDAgICAgIC8qIHBhZ2UgbW9kZSBpcyBub3QgdXNlZCAqLwotI2RlZmluZSBCMV9QTUMJCSAJMHgwCS8qIHBhZ2UgbW9kZSBkaXNhYmxlZCAqLworI2RlZmluZSBCMV9UY29oCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIxX1RhaAkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMV9UYWNwCQkJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgQjFfUE1DCQkJMHgwCS8qIHBhZ2UgbW9kZSBkaXNhYmxlZCAqLwogCi0jZGVmaW5lIEIyX1RhY3MJCSAJMHgzCS8qICA0Y2xrICovCi0jZGVmaW5lIEIyX1Rjb3MJCSAJMHgzCS8qICA0Y2xrICovCi0jZGVmaW5lIEIyX1RhY2MJCSAJMHg3ICAgICAvKiAxNGNsayAqLwotI2RlZmluZSBCMl9UY29oCQkgCTB4MwkvKiAgNGNsayAqLwotI2RlZmluZSBCMl9UYWgJCSAJMHgzCS8qICA0Y2xrICovCi0jZGVmaW5lIEIyX1RhY3AJCSAJMHgwCS8qIHBhZ2UgbW9kZSBpcyBub3QgdXNlZCAqLwotI2RlZmluZSBCMl9QTUMJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKyNkZWZpbmUgQjJfVGFjcwkJCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCMl9UY29zCQkJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIyX1RhY2MJCQkweDcgICAgIC8qIDE0Y2xrICovCisjZGVmaW5lIEIyX1Rjb2gJCQkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjJfVGFoCQkJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIyX1RhY3AJCQkweDAJLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCisjZGVmaW5lIEIyX1BNQwkJCTB4MCAgICAgLyogcGFnZSBtb2RlIGRpc2FibGVkICovCiAKLSNkZWZpbmUgQjNfVGFjcwkJIAkweDMJLyogIDRjbGsgKi8KLSNkZWZpbmUgQjNfVGNvcwkJIAkweDMJLyogIDRjbGsgKi8KLSNkZWZpbmUgQjNfVGFjYwkJIAkweDcgICAgIC8qIDE0Y2xrICovCi0jZGVmaW5lIEIzX1Rjb2gJCSAJMHgzCS8qICA0Y2xrICovCi0jZGVmaW5lIEIzX1RhaAkJIAkweDMJLyogIDRjbGsgKi8KLSNkZWZpbmUgQjNfVGFjcAkJIAkweDAJLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCi0jZGVmaW5lIEIzX1BNQwkJIAkweDAgICAgIC8qIHBhZ2UgbW9kZSBkaXNhYmxlZCAqLworI2RlZmluZSBCM19UYWNzCQkJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEIzX1Rjb3MJCQkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjNfVGFjYwkJCTB4NyAgICAgLyogMTRjbGsgKi8KKyNkZWZpbmUgQjNfVGNvaAkJCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCM19UYWgJCQkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjNfVGFjcAkJCTB4MAkvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KKyNkZWZpbmUgQjNfUE1DCQkJMHgwICAgICAvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KIAotI2RlZmluZSBCNF9UYWNzCQkgCTB4MwkvKiAgNGNsayAqLwotI2RlZmluZSBCNF9UY29zCQkgCTB4MQkvKiAgMWNsayAqLwotI2RlZmluZSBCNF9UYWNjCQkgCTB4NwkvKiAxNGNsayAqLwotI2RlZmluZSBCNF9UY29oCQkgCTB4MQkvKiAgMWNsayAqLwotI2RlZmluZSBCNF9UYWgJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEI0X1RhY3AJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KLSNkZWZpbmUgQjRfUE1DCQkgCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKyNkZWZpbmUgQjRfVGFjcwkJCTB4MwkvKiAgNGNsayAqLworI2RlZmluZSBCNF9UY29zCQkJMHgxCS8qICAxY2xrICovCisjZGVmaW5lIEI0X1RhY2MJCQkweDcJLyogMTRjbGsgKi8KKyNkZWZpbmUgQjRfVGNvaAkJCTB4MQkvKiAgMWNsayAqLworI2RlZmluZSBCNF9UYWgJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjRfVGFjcAkJCTB4MCAgICAgLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCisjZGVmaW5lIEI0X1BNQwkJCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KIAotI2RlZmluZSBCNV9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCNV9UY29zCQkgCTB4MwkvKiAgNGNsayAqLwotI2RlZmluZSBCNV9UYWNjCQkgCTB4NQkvKiAgOGNsayAqLwotI2RlZmluZSBCNV9UY29oCQkgCTB4MgkvKiAgMmNsayAqLwotI2RlZmluZSBCNV9UYWgJCSAJMHgxCS8qICAxY2xrICovCi0jZGVmaW5lIEI1X1RhY3AJCSAJMHgwICAgICAvKiBwYWdlIG1vZGUgaXMgbm90IHVzZWQgKi8KLSNkZWZpbmUgQjVfUE1DCQkgCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KKyNkZWZpbmUgQjVfVGFjcwkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCNV9UY29zCQkJMHgzCS8qICA0Y2xrICovCisjZGVmaW5lIEI1X1RhY2MJCQkweDUJLyogIDhjbGsgKi8KKyNkZWZpbmUgQjVfVGNvaAkJCTB4MgkvKiAgMmNsayAqLworI2RlZmluZSBCNV9UYWgJCQkweDEJLyogIDFjbGsgKi8KKyNkZWZpbmUgQjVfVGFjcAkJCTB4MCAgICAgLyogcGFnZSBtb2RlIGlzIG5vdCB1c2VkICovCisjZGVmaW5lIEI1X1BNQwkJCTB4MAkvKiBwYWdlIG1vZGUgZGlzYWJsZWQgKi8KIAotI2RlZmluZSBCNl9NVAkJIAkweDMJLyogU0RSQU0gKi8KLSNkZWZpbmUgQjZfVHJjZAkgCSAJMHgxCS8qIDNjbGsgKi8KLSNkZWZpbmUgQjZfU0NBTgkJIAkweDIJLyogMTBiaXQgKi8KKyNkZWZpbmUgQjZfTVQJCQkweDMJLyogU0RSQU0gKi8KKyNkZWZpbmUgQjZfVHJjZAkJCTB4MQkvKiAzY2xrICovCisjZGVmaW5lIEI2X1NDQU4JCQkweDIJLyogMTBiaXQgKi8KIAotI2RlZmluZSBCN19NVAkJIAkweDMJLyogU0RSQU0gKi8KLSNkZWZpbmUgQjdfVHJjZAkJIAkweDEJLyogM2NsayAqLwotI2RlZmluZSBCN19TQ0FOCQkgCTB4MgkvKiAxMGJpdCAqLworI2RlZmluZSBCN19NVAkJCTB4MwkvKiBTRFJBTSAqLworI2RlZmluZSBCN19UcmNkCQkJMHgxCS8qIDNjbGsgKi8KKyNkZWZpbmUgQjdfU0NBTgkJCTB4MgkvKiAxMGJpdCAqLwogCiAvKiBSRUZSRVNIIHBhcmFtZXRlciAqLwotI2RlZmluZSBSRUZFTgkJIAkweDEJLyogUmVmcmVzaCBlbmFibGUgKi8KLSNkZWZpbmUgVFJFRk1ECQkgCTB4MAkvKiBDQlIoQ0FTIGJlZm9yZSBSQVMpL0F1dG8gcmVmcmVzaCAqLwotI2RlZmluZSBUcnAJCSAJMHgwCS8qIDJjbGsgKi8KLSNkZWZpbmUgVHJjCQkgCTB4MwkvKiA3Y2xrICovCi0jZGVmaW5lIFRjaHIJCSAJMHgyCS8qIDNjbGsgKi8KLSNkZWZpbmUgUkVGQ05UCQkgCTExMTMJLyogcGVyaW9kPTE1LjZ1cywgSENMSz02ME1oeiwgKDIwNDgrMS0xNS42KjYwKSAqLworI2RlZmluZSBSRUZFTgkJCTB4MQkvKiBSZWZyZXNoIGVuYWJsZSAqLworI2RlZmluZSBUUkVGTUQJCQkweDAJLyogQ0JSKENBUyBiZWZvcmUgUkFTKS9BdXRvIHJlZnJlc2ggKi8KKyNkZWZpbmUgVHJwCQkJMHgwCS8qIDJjbGsgKi8KKyNkZWZpbmUgVHJjCQkJMHgzCS8qIDdjbGsgKi8KKyNkZWZpbmUgVGNocgkJCTB4MgkvKiAzY2xrICovCisjZGVmaW5lIFJFRkNOVAkJCTExMTMJLyogcGVyaW9kPTE1LjZ1cywgSENMSz02ME1oeiwgKDIwNDgrMS0xNS42KjYwKSAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBfVEVYVF9CQVNFOgpkaWZmIC0tZ2l0IGEvYm9hcmQvbXM3NzIyc2UvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvbXM3NzIyc2UvbG93bGV2ZWxfaW5pdC5TCmluZGV4IDIwMjRlMjcuLjMzMmY2NWEgMTAwNjQ0Ci0tLSBhL2JvYXJkL21zNzcyMnNlL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9tczc3MjJzZS9sb3dsZXZlbF9pbml0LlMKQEAgLTExNCwxMSArMTE0LDExIEBACiAJbW92LncJcjAsIEByMQogCiAJbW92LmwJQ01OQ1JfQSwgcjEJISBDTU5DUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNNTkNSX0QsIHIwCSEgQ01OQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNNTkNSX0QsIHIwCSEgQ01OQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ01OQ1Igc2V0CiAKIAltb3YubAlDUzBCQ1JfQSwgcjEJISBDUzBCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzBCQ1JfRCwgcjAJISBDUzBCQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTMEJDUl9ELCByMAkhIENTMEJDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzBCQ1Igc2V0CiAKIAltb3YubAlDUzJCQ1JfQSwgcjEJISBDUzJCQ1IgYWRkcmVzcyAtPiBSMQpAQCAtMTMwLDM5ICsxMzAsMzkgQEAKIAltb3YubAlyMCwgQHIxCQkhIENTNEJDUiBzZXQKIAogCW1vdi5sCUNTNUFCQ1JfQSwgcjEJISBDUzVBQkNSIGFkZHJlc3MgLT4gUjEKLQltb3YubCAJQ1M1QUJDUl9ELCByMAkhIENTNUFCQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTNUFCQ1JfRCwgcjAJISBDUzVBQkNSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTNUFCQ1Igc2V0CiAKIAltb3YubAlDUzVCQkNSX0EsIHIxCSEgQ1M1QkJDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTNUJCQ1JfRCwgcjAJISBDUzVCQkNSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDUzVCQkNSX0QsIHIwCSEgQ1M1QkJDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzVCQkNSIHNldAogCiAJbW92LmwJQ1M2QUJDUl9BLCByMQkhIENTNkFCQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzZBQkNSX0QsIHIwCSEgQ1M2QUJDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1M2QUJDUl9ELCByMAkhIENTNkFCQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ1M2QUJDUiBzZXQKIAogCW1vdi5sCUNTMFdDUl9BLCByMQkhIENTMFdDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTMFdDUl9ELCByMAkhIENTMFdDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1MwV0NSX0QsIHIwCSEgQ1MwV0NSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTMFdDUiBzZXQKIAogCW1vdi5sCUNTMldDUl9BLCByMQkhIENTMldDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTMldDUl9ELCByMAkhIENTMldDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1MyV0NSX0QsIHIwCSEgQ1MyV0NSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTMldDUiBzZXQKIAogCW1vdi5sCUNTNFdDUl9BLCByMQkhIENTNFdDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTNFdDUl9ELCByMAkhIENTNFdDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1M0V0NSX0QsIHIwCSEgQ1M0V0NSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTNFdDUiBzZXQKIAogCW1vdi5sCUNTNUFXQ1JfQSwgcjEJISBDUzVBV0NSIGFkZHJlc3MgLT4gUjEKLQltb3YubCAJQ1M1QVdDUl9ELCByMAkhIENTNUFXQ1IgZGF0YSAgICAtPiBSMAorCW1vdi5sCUNTNUFXQ1JfRCwgcjAJISBDUzVBV0NSIGRhdGEgICAgLT4gUjAKIAltb3YubAlyMCwgQHIxCQkhIENTNUFXQ1Igc2V0CiAKIAltb3YubAlDUzVCV0NSX0EsIHIxCSEgQ1M1QldDUiBhZGRyZXNzIC0+IFIxCi0JbW92LmwgCUNTNUJXQ1JfRCwgcjAJISBDUzVCV0NSIGRhdGEgICAgLT4gUjAKKwltb3YubAlDUzVCV0NSX0QsIHIwCSEgQ1M1QldDUiBkYXRhICAgIC0+IFIwCiAJbW92LmwJcjAsIEByMQkJISBDUzVCV0NSIHNldAogCiAJbW92LmwJQ1M2QVdDUl9BLCByMQkhIENTNkFXQ1IgYWRkcmVzcyAtPiBSMQotCW1vdi5sIAlDUzZBV0NSX0QsIHIwCSEgQ1M2QVdDUiBkYXRhICAgIC0+IFIwCisJbW92LmwJQ1M2QVdDUl9ELCByMAkhIENTNkFXQ1IgZGF0YSAgICAtPiBSMAogCW1vdi5sCXIwLCBAcjEJCSEgQ1M2QVdDUiBzZXQKIAogCSEgU0RSQU0gaW5pdGlhbGl6YXRpb24KQEAgLTE4Nyw3ICsxODcsNyBAQAogCW1vdi5sCXIwLCBAcjEJCSEgU0JfUlRDU1Igc2V0CiAKIAltb3YubAlTRE1SM19BLCByMQkhIFNETVIzIGFkZHJlc3MgLT4gUjEKLQltb3YgCSMweDAwLCByMAkhIFNETVIzIGRhdGEgICAgLT4gUjAKKwltb3YJIzB4MDAsIHIwCSEgU0RNUjMgZGF0YSAgICAtPiBSMAogCW1vdi5iCXIwLCBAcjEJCSEgU0RNUjMgc2V0CiAKIAkhIEJMIGJpdCBvZmYgKGluaXQgPSBPTikgICg/IT8pCmRpZmYgLS1naXQgYS9ib2FyZC9tdW5pY2VzL3UtYm9vdC5sZHMgYi9ib2FyZC9tdW5pY2VzL3UtYm9vdC5sZHMKaW5kZXggNmZlNjE1Yi4uZTliM2JlOCAxMDA2NDQKLS0tIGEvYm9hcmQvbXVuaWNlcy91LWJvb3QubGRzCisrKyBiL2JvYXJkL211bmljZXMvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL211c2Vua2kvbXVzZW5raS5jIGIvYm9hcmQvbXVzZW5raS9tdXNlbmtpLmMKaW5kZXggODhlZjgzYS4uNDQwOGIwNyAxMDA2NDQKLS0tIGEvYm9hcmQvbXVzZW5raS9tdXNlbmtpLmMKKysrIGIvYm9hcmQvbXVzZW5raS9tdXNlbmtpLmMKQEAgLTM1LDcgKzM1LDcgQEAKIAogfQogCi0jaWYgMCAJLyogTk9UIFVTRUQgKi8KKyNpZiAwCS8qIE5PVCBVU0VEICovCiBpbnQgY2hlY2tmbGFzaCAodm9pZCkKIHsKIAkvKiBUT0RPOiBYWFggWFhYIFhYWCAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXZibHVlL2ZsYXNoLmMgYi9ib2FyZC9tdmJsdWUvZmxhc2guYwppbmRleCA4ZGY1NzNhLi4wYzA3MzhjIDEwMDY0NAotLS0gYS9ib2FyZC9tdmJsdWUvZmxhc2guYworKysgYi9ib2FyZC9tdmJsdWUvZmxhc2guYwpAQCAtMzM3LDkgKzMzNyw5IEBACiAjZGVmaW5lIEVSQVNFX0RBVEE0IEVSQVNFX0RBVEExCiAjZGVmaW5lIEVSQVNFX0RBVEE1IEVSQVNFX0RBVEEyCiAKLSNkZWZpbmUgRVJBU0VfU0VDVE9SX0RBVEEgCSgweDAwMzAwMDMwICYgRkxBU0hfREFUQV9NQVNLKQotI2RlZmluZSBFUkFTRV9DSElQX0RBVEEgCSgweDAwMTAwMDEwICYgRkxBU0hfREFUQV9NQVNLKQotI2RlZmluZSBFUkFTRV9DT05GSVJNX0RBVEEgCSgweDAwODAwMDgwICYgRkxBU0hfREFUQV9NQVNLKQorI2RlZmluZSBFUkFTRV9TRUNUT1JfREFUQQkoMHgwMDMwMDAzMCAmIEZMQVNIX0RBVEFfTUFTSykKKyNkZWZpbmUgRVJBU0VfQ0hJUF9EQVRBCQkoMHgwMDEwMDAxMCAmIEZMQVNIX0RBVEFfTUFTSykKKyNkZWZpbmUgRVJBU0VfQ09ORklSTV9EQVRBCSgweDAwODAwMDgwICYgRkxBU0hfREFUQV9NQVNLKQogCiBpbnQJZmxhc2hfZXJhc2UgKGZsYXNoX2luZm9fdCAqaW5mbywgaW50IHNfZmlyc3QsIGludCBzX2xhc3QpCiB7CkBAIC01NTksNyArNTU5LDcgQEAKIAkJCXJldHVybiAoMSk7CiAJCX0KIAl9Ci0gCW12ZGVidWcgKCgiLXdyaXRlX2J5dGVcbiIpKTsKKwltdmRlYnVnICgoIi13cml0ZV9ieXRlXG4iKSk7CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtNTc3LDcgKzU3Nyw3IEBACiAJbXZkZWJ1ZyAoKCIrd3JpdGVfd29yZCA6IDB4JTA4bHggQCAweCUwOGx4XG4iLCBkYXRhLCBkZXN0KSk7CiAJZm9yICggaT0wOyAoaSA8IDQpICYmIChyZXN1bHQgPT0gMCk7IGkrKywgZGVzdCs9MSApCiAJCXJlc3VsdCA9IHdyaXRlX2NoYXIgKGluZm8sIGRlc3QsIChkYXRhID4+ICg4KigzLWkpKSkgJiAweGZmICk7Ci0gCW12ZGVidWcgKCgiLXdyaXRlX3dvcmRcbiIpKTsKKwltdmRlYnVnICgoIi13cml0ZV93b3JkXG4iKSk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXZzMS9mbGFzaC5jIGIvYm9hcmQvbXZzMS9mbGFzaC5jCmluZGV4IDA4NDU5NDMuLmE1MmZlNTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL212czEvZmxhc2guYworKysgYi9ib2FyZC9tdnMxL2ZsYXNoLmMKQEAgLTY0OSw3ICs2NDksNyBAQAogCQl9CiAJfQogCi0gCW12ZGVidWcgKCgiLXdyaXRlX3dvcmRcbiIpKTsKKwltdmRlYnVnICgoIi13cml0ZV93b3JkXG4iKSk7CiAJcmV0dXJuICgwKTsKIH0KICNlbHNlIC8qIENPTkZJR19NVlNfMTZCSVRfRkxBU0ggKi8KQEAgLTY5MSw3ICs2OTEsNyBAQAogCQkJcmV0dXJuICgxKTsKIAkJfQogCX0KLSAJbXZkZWJ1ZyAoKCItd3JpdGVfaGFsZndvcmRcbiIpKTsKKwltdmRlYnVnICgoIi13cml0ZV9oYWxmd29yZFxuIikpOwogCXJldHVybiAoMCk7CiB9CiAKZGlmZiAtLWdpdCBhL2JvYXJkL212czEvdS1ib290LmxkcyBiL2JvYXJkL212czEvdS1ib290LmxkcwppbmRleCA3NmRmZWJhLi41NWE5YzNhIDEwMDY0NAotLS0gYS9ib2FyZC9tdnMxL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbXZzMS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9tdnMxL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9tdnMxL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggNzUzNDExZi4uYzMzNTgxZCAxMDA2NDQKLS0tIGEvYm9hcmQvbXZzMS91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL212czEvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL214MWFkcy9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9teDFhZHMvbG93bGV2ZWxfaW5pdC5TCmluZGV4IDA5YzI2MGQuLjY5NjdmYjIgMTAwNjQ0Ci0tLSBhL2JvYXJkL214MWFkcy9sb3dsZXZlbF9pbml0LlMKKysrIGIvYm9hcmQvbXgxYWRzL2xvd2xldmVsX2luaXQuUwpAQCAtMzUsNyArMzUsNyBAQAogCiAuZ2xvYmwgbG93bGV2ZWxfaW5pdAogbG93bGV2ZWxfaW5pdDoKLS8qIG1lbW9yeSBjb250cm9sbGVyIGluaXQJIAkqLworLyogbWVtb3J5IGNvbnRyb2xsZXIgaW5pdAkJKi8KIAogCWxkciAgcjEsID1TRENUTDAKIApAQCAtNTAsNyArNTAsNyBAQAogCWxkciAgcjMsID0weDgyMDAwMDAKIAlsZHIgIHIyLCBbcjNdCiAKLS8qIFNldCBBdXRvUmVmcmVzaCBDb21tYW5kIAkJKi8KKy8qIFNldCBBdXRvUmVmcmVzaCBDb21tYW5kCQkqLwogCWxkciAgcjMsID0weEEyMTIwMjAwCiAJc3RyICByMywgW3IxXQogCkBAIC02NSwxNyArNjUsMTcgQEAKIAlsZHIgIHIyLCBbcjNdCiAJbGRyICByMiwgW3IzXQogCi0vKiBTZXQgTW9kZSBSZWdpc3RlciAJCQkqLworLyogU2V0IE1vZGUgUmVnaXN0ZXIJCQkqLwogCWxkciAgcjMsID0weEIyMTIwMjAwCiAJc3RyICByMywgW3IxXQogCiAvKiBJc3N1ZSBNb2RlIFJlZ2lzdGVyIENvbW1hbmQJCSovCi0JbGRyICByMywgPTB4MDgxMTE4MDAgCS8qIE1vZGUgUmVnaXN0ZXIgVmFsdWUgCQkqLworCWxkciAgcjMsID0weDA4MTExODAwCS8qIE1vZGUgUmVnaXN0ZXIgVmFsdWUJCSovCiAJbGRyICByMiwgW3IzXQogCiAvKiBTZXQgTm9ybWFsIE1vZGUJCQkqLwogCWxkciAgcjMsID0weDgyMTI0MjAwCiAJc3RyICByMywgW3IxXQogCi0vKiBldmVyeXRoaW5nIGlzIGZpbmUgbm93IAkJKi8KKy8qIGV2ZXJ5dGhpbmcgaXMgZmluZSBub3cJCSovCiAJbW92CXBjLCBscgpkaWZmIC0tZ2l0IGEvYm9hcmQvbXgxYWRzL214MWFkcy5jIGIvYm9hcmQvbXgxYWRzL214MWFkcy5jCmluZGV4IGFiZjJmZDUuLmJhMTUyZTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL214MWFkcy9teDFhZHMuYworKysgYi9ib2FyZC9teDFhZHMvbXgxYWRzLmMKQEAgLTg1LDggKzg1LDggQEAKIAogCUdQQ1IgPSAweDAwMDAwM0FCOwkvKiBJL08gcGFkIGRyaXZpbmcgc3RyZW5ndGggICAgICovCiAKLQkvKglNWDFfQ1MxVSAJPSAweDAwMDAwQTAwOwkqLyAvKiBTUkFNIGluaXRpYWxpemF0aW9uICAgICAgICAgICovCi0vKglNWDFfQ1MxTCAJPSAweDExMTEwNjAxOyAJKi8KKwkvKglNWDFfQ1MxVQk9IDB4MDAwMDBBMDA7CSovIC8qIFNSQU0gaW5pdGlhbGl6YXRpb24gICAgICAgICAgKi8KKy8qCU1YMV9DUzFMCT0gMHgxMTExMDYwMTsJKi8KIAogCU1QQ1RMMCA9IDB4MDQ2MzI0MTA7CS8qIHNldHRpbmcgZm9yIDE1MCBNSHogTUNVIFBMTCBDTEsgICAgICAqLwogCmRpZmYgLS1naXQgYS9ib2FyZC9teDFhZHMvc3luY2ZsYXNoLmMgYi9ib2FyZC9teDFhZHMvc3luY2ZsYXNoLmMKaW5kZXggZWI3ZmRlNS4uZmFlOWZiYiAxMDA2NDQKLS0tIGEvYm9hcmQvbXgxYWRzL3N5bmNmbGFzaC5jCisrKyBiL2JvYXJkL214MWFkcy9zeW5jZmxhc2guYwpAQCAtNDAsMTMgKzQwLDEzIEBACiAjZGVmaW5lIFNZTkNGTEFTSF9BMTAJCSgweDAwMTAwMDAwKQogCiAjZGVmaW5lIENNRF9OT1JNQUwJCSgweDgxMDIwMzAwKQkJCS8qIE5vcm1hbCBNb2RlCQkJKi8KLSNkZWZpbmUgQ01EX1BSRUMJCShDTURfTk9STUFMICsgMHgxMDAwMDAwMCkgCS8qIFByZWNoYXJnZSBDb21tYW5kCQkqLwotI2RlZmluZSBDTURfQVVUTwkJKENNRF9OT1JNQUwgKyAweDIwMDAwMDAwKSAJLyogQXV0byBSZWZyZXNoIENvbW1hbmQJCSovCi0jZGVmaW5lIENNRF9MTVIJCQkoQ01EX05PUk1BTCArIDB4MzAwMDAwMDApIAkvKiBMb2FkIE1vZGUgUmVnaXN0ZXIgQ29tbWFuZCAJKi8KLSNkZWZpbmUgQ01EX0xDUgkJCShDTURfTk9STUFMICsgMHg2MDAwMDAwMCkgCS8qIExDUiBDb21tYW5kCQkJKi8KKyNkZWZpbmUgQ01EX1BSRUMJCShDTURfTk9STUFMICsgMHgxMDAwMDAwMCkJLyogUHJlY2hhcmdlIENvbW1hbmQJCSovCisjZGVmaW5lIENNRF9BVVRPCQkoQ01EX05PUk1BTCArIDB4MjAwMDAwMDApCS8qIEF1dG8gUmVmcmVzaCBDb21tYW5kCQkqLworI2RlZmluZSBDTURfTE1SCQkJKENNRF9OT1JNQUwgKyAweDMwMDAwMDAwKQkvKiBMb2FkIE1vZGUgUmVnaXN0ZXIgQ29tbWFuZAkqLworI2RlZmluZSBDTURfTENSCQkJKENNRF9OT1JNQUwgKyAweDYwMDAwMDAwKQkvKiBMQ1IgQ29tbWFuZAkJCSovCiAjZGVmaW5lIENNRF9QUk9HUkFNCQkoQ01EX05PUk1BTCArIDB4NzAwMDAwMDApCiAKLSNkZWZpbmUgTU9ERV9SRUdfVkFMCQkoQ0ZHX0ZMQVNIX0JBU0UrMHgwMDA4Q0MwMCkgCS8qIENhcyBMYXRlbmN5IDMJCSovCisjZGVmaW5lIE1PREVfUkVHX1ZBTAkJKENGR19GTEFTSF9CQVNFKzB4MDAwOENDMDApCS8qIENhcyBMYXRlbmN5IDMJCSovCiAKIC8qIExDUiBDb21tYW5kICovCiAjZGVmaW5lIExDUl9SRUFEU1RBVFVTCQkoMHgwMDAxQzAwMCkJCQkvKiAweDcwCQkJCSovCkBAIC01NSwyMiArNTUsMjIgQEAKICNkZWZpbmUgTENSX1BST0dfTlZNT0RFCQkoMHgwMDAyODAwMCkJCQkvKiAweEEwCQkJCSovCiAjZGVmaW5lIExDUl9TUl9DTEVBUgkJKDB4MDAwMTQwMDApCQkJLyogMHg1MAkJCQkqLwogCi0vKiBHZXQgU3RhdHVzIHJlZ2lzdGVyIAkJCSovCisvKiBHZXQgU3RhdHVzIHJlZ2lzdGVyCQkJKi8KIHUzMiBTRl9TUih2b2lkKSB7CiAJdTMyIHRtcCx0bXAxOwogCiAJcmVnX1NGQ1RMCT0gQ01EX1BST0dSQU07Ci0JdG1wIAkJPSBfX1JFRyhDRkdfRkxBU0hfQkFTRSk7CisJdG1wCQk9IF9fUkVHKENGR19GTEFTSF9CQVNFKTsKIAogCXJlZ19TRkNUTAk9IENNRF9OT1JNQUw7CiAKLQlyZWdfU0ZDVEwJPSBDTURfTENSOwkJCS8qIEFjdGl2YXRlIExDUiBNb2RlIAkJKi8KLQl0bXAxIAkJPSBfX1JFRyhDRkdfRkxBU0hfQkFTRSArIExDUl9TUl9DTEVBUik7CisJcmVnX1NGQ1RMCT0gQ01EX0xDUjsJCQkvKiBBY3RpdmF0ZSBMQ1IgTW9kZQkJKi8KKwl0bXAxCQk9IF9fUkVHKENGR19GTEFTSF9CQVNFICsgTENSX1NSX0NMRUFSKTsKIAogCXJldHVybiB0bXA7CiB9CiAKLS8qIGNoZWNrIGlmIFN5bmNGbGFzaCBpcyByZWFkeSAJCSovCisvKiBjaGVjayBpZiBTeW5jRmxhc2ggaXMgcmVhZHkJCSovCiB1OCBTRl9SZWFkeSh2b2lkKSB7CiAJdTMyIHRtcDsKIApAQCAtODQsMTkgKzg0LDE5IEBACiAJCXByaW50ZiAoIlN5bmNGbGFzaCBFcnJvciBjb2RlICUwOHhcbiIsdG1wKTsKIAl9OwogCi0JaWYgKHRtcCA9PSAweDAwODAwMDgwKSAJCS8qIFRlc3QgQml0IDcgb2YgU1IJKi8KKwlpZiAodG1wID09IDB4MDA4MDAwODApCQkvKiBUZXN0IEJpdCA3IG9mIFNSCSovCiAJCXJldHVybiAxOwogCWVsc2UKIAkJcmV0dXJuIDA7CiB9CiAKLS8qIElzc3VlIHRoZSBwcmVjaGFyZ2UgYWxsIGNvbW1hbmQgCQkqLworLyogSXNzdWUgdGhlIHByZWNoYXJnZSBhbGwgY29tbWFuZAkJKi8KIHZvaWQgU0ZfUHJlY2hhcmdlQWxsKHZvaWQpIHsKIAogCXUzMiB0bXA7CiAKLQlyZWdfU0ZDVEwJPSBDTURfUFJFQzsJCQkvKiBTZXQgUHJlY2hhcmdlIENvbW1hbmQgCSovCi0JdG1wIAkJPSBfX1JFRyhDRkdfRkxBU0hfQkFTRSArIFNZTkNGTEFTSF9BMTApOyAvKiBJc3N1ZSBQcmVjaGFyZ2UgQWxsIENvbW1hbmQgKi8KKwlyZWdfU0ZDVEwJPSBDTURfUFJFQzsJCQkvKiBTZXQgUHJlY2hhcmdlIENvbW1hbmQJKi8KKwl0bXAJCT0gX19SRUcoQ0ZHX0ZMQVNIX0JBU0UgKyBTWU5DRkxBU0hfQTEwKTsgLyogSXNzdWUgUHJlY2hhcmdlIEFsbCBDb21tYW5kICovCiB9CiAKIC8qIHNldCBTeW5jRmxhc2ggdG8gbm9ybWFsIG1vZGUJCQkqLwpAQCAtMTA3LDIxICsxMDcsMjEgQEAKIAlyZWdfU0ZDVEwJPSBDTURfTk9STUFMOwogfQogCi0vKiBFcmFzZSBTeW5jRmxhc2ggCQkJCSovCisvKiBFcmFzZSBTeW5jRmxhc2gJCQkJKi8KIHZvaWQgU0ZfRXJhc2UodTMyIFJvd0FkZHJlc3MpIHsKIAl1MzIgdG1wOwogCiAJcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsKLQl0bXAgCQk9IF9fUkVHKFJvd0FkZHJlc3MpOworCXRtcAkJPSBfX1JFRyhSb3dBZGRyZXNzKTsKIAogCXJlZ19TRkNUTAk9IENNRF9QUkVDOwotCXRtcCAJCT0gX19SRUcoUm93QWRkcmVzcyk7CisJdG1wCQk9IF9fUkVHKFJvd0FkZHJlc3MpOwogCi0JcmVnX1NGQ1RMIAk9IENNRF9MQ1I7CQkJLyogU2V0IExDUiBtb2RlIAkJKi8KLQlfX1JFRyhSb3dBZGRyZXNzICsgTENSX0VSQVNFX0NPTkZJUk0pCT0gMDsJLyogSXNzdWUgRXJhc2UgU2V0dXAgQ29tbWFuZCAJKi8KKwlyZWdfU0ZDVEwJPSBDTURfTENSOwkJCS8qIFNldCBMQ1IgbW9kZQkJKi8KKwlfX1JFRyhSb3dBZGRyZXNzICsgTENSX0VSQVNFX0NPTkZJUk0pCT0gMDsJLyogSXNzdWUgRXJhc2UgU2V0dXAgQ29tbWFuZAkqLwogCi0JcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiByZXR1cm4gdG8gTm9ybWFsIG1vZGUgCSovCi0JX19SRUcoUm93QWRkcmVzcykJPSAweEQwRDBEMEQwOyAJCS8qIENvbmZpcm0JCQkqLworCXJlZ19TRkNUTAk9IENNRF9OT1JNQUw7CQkJLyogcmV0dXJuIHRvIE5vcm1hbCBtb2RlCSovCisJX19SRUcoUm93QWRkcmVzcykJPSAweEQwRDBEMEQwOwkJLyogQ29uZmlybQkJCSovCiAKIAl3aGlsZSghU0ZfUmVhZHkoKSk7CiB9CkBAIC0xMzIsOCArMTMyLDggQEAKIAlyZWdfU0ZDVEwJPSBDTURfTENSOwkJCS8qIFNldCB0byBMQ1IgbW9kZQkJKi8KIAlfX1JFRyhDRkdfRkxBU0hfQkFTRSArIExDUl9FUkFTRV9OVk1PREUpICA9IDA7CS8qIElzc3VlIEVyYXNlIE52bW9kZSBSZWcgQ29tbWFuZCAqLwogCi0JcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiBSZXR1cm4gdG8gTm9ybWFsIG1vZGUgCSovCi0JX19SRUcoQ0ZHX0ZMQVNIX0JBU0UgKyBMQ1JfRVJBU0VfTlZNT0RFKSA9IDB4QzBDMEMwQzA7CS8qIENvbmZpcm0gCQkqLworCXJlZ19TRkNUTAk9IENNRF9OT1JNQUw7CQkJLyogUmV0dXJuIHRvIE5vcm1hbCBtb2RlCSovCisJX19SRUcoQ0ZHX0ZMQVNIX0JBU0UgKyBMQ1JfRVJBU0VfTlZNT0RFKSA9IDB4QzBDMEMwQzA7CS8qIENvbmZpcm0JCSovCiAKIAl3aGlsZSghU0ZfUmVhZHkoKSk7CiB9CkBAIC0xNDEsMTEgKzE0MSwxMSBAQAogdm9pZCBTRl9Odm1vZGVXcml0ZSh2b2lkKSB7CiAJU0ZfUHJlY2hhcmdlQWxsKCk7CiAKLQlyZWdfU0ZDVEwgCT0gQ01EX0xDUjsJCQkvKiBTZXQgdG8gTENSIG1vZGUgCQkqLworCXJlZ19TRkNUTAk9IENNRF9MQ1I7CQkJLyogU2V0IHRvIExDUiBtb2RlCQkqLwogCV9fUkVHKENGR19GTEFTSF9CQVNFK0xDUl9QUk9HX05WTU9ERSkgPSAwOwkvKiBJc3N1ZSBQcm9ncmFtIE52bW9kZSByZWcgY29tbWFuZCAqLwogCi0JcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiBSZXR1cm4gdG8gTm9ybWFsIG1vZGUgCSovCi0JX19SRUcoQ0ZHX0ZMQVNIX0JBU0UrTENSX1BST0dfTlZNT0RFKSA9IDB4QzBDMEMwQzA7IAkvKiBDb25maXJtIG5vdCBuZWVkZWQgCSovCisJcmVnX1NGQ1RMCT0gQ01EX05PUk1BTDsJCQkvKiBSZXR1cm4gdG8gTm9ybWFsIG1vZGUJKi8KKwlfX1JFRyhDRkdfRkxBU0hfQkFTRStMQ1JfUFJPR19OVk1PREUpID0gMHhDMEMwQzBDMDsJLyogQ29uZmlybSBub3QgbmVlZGVkCSovCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTU2LDE5ICsxNTYsMTkgQEAKIAogLyogVHVybiBvbiBDU0QxIGZvciBuZWdhdGluZyBSRVNFVFNGIG9mIFN5bmNGTGFzaCAqLwogCi0JcmVnX1NGQ1RMIAl8PSAweDgwMDAwMDAwOwkJLyogZW5hYmxlIENTRDEgZm9yIFN5bmNGbGFzaCAJCSovCisJcmVnX1NGQ1RMCXw9IDB4ODAwMDAwMDA7CQkvKiBlbmFibGUgQ1NEMSBmb3IgU3luY0ZsYXNoCQkqLwogCXVkZWxheSgyMDApOwogCi0JcmVnX1NGQ1RMIAk9IENNRF9MTVI7CQkvKiBTZXQgTG9hZCBNb2RlIFJlZ2lzdGVyIENvbW1hbmQgCSovCi0JdG1wIAkJPSBfX1JFRyhNT0RFX1JFR19WQUwpOwkvKiBJc3N1ZSBMb2FkIE1vZGUgUmVnaXN0ZXIgQ29tbWFuZCAJKi8KKwlyZWdfU0ZDVEwJPSBDTURfTE1SOwkJLyogU2V0IExvYWQgTW9kZSBSZWdpc3RlciBDb21tYW5kCSovCisJdG1wCQk9IF9fUkVHKE1PREVfUkVHX1ZBTCk7CS8qIElzc3VlIExvYWQgTW9kZSBSZWdpc3RlciBDb21tYW5kCSovCiAKIAlTRl9Ob3JtYWwoKTsKIAogCWkgPSAwOwogCi0JZmxhc2hfaW5mb1tpXS5mbGFzaF9pZCAJPSAgRkxBU0hfTUFOX01UIHwgRkxBU0hfTVQyOFM0TTE2TEM7CisJZmxhc2hfaW5mb1tpXS5mbGFzaF9pZAk9ICBGTEFTSF9NQU5fTVQgfCBGTEFTSF9NVDI4UzRNMTZMQzsKIAotCWZsYXNoX2luZm9baV0uc2l6ZSAJPSBGTEFTSF9CQU5LX1NJWkU7CisJZmxhc2hfaW5mb1tpXS5zaXplCT0gRkxBU0hfQkFOS19TSVpFOwogCWZsYXNoX2luZm9baV0uc2VjdG9yX2NvdW50ID0gQ0ZHX01BWF9GTEFTSF9TRUNUOwogCiAJbWVtc2V0KGZsYXNoX2luZm9baV0ucHJvdGVjdCwgMCwgQ0ZHX01BWF9GTEFTSF9TRUNUKTsKZGlmZiAtLWdpdCBhL2JvYXJkL214MWZzMi9mbGFzaC5jIGIvYm9hcmQvbXgxZnMyL2ZsYXNoLmMKaW5kZXggNDc4ODViYy4uNzNjZTg5NSAxMDA2NDQKLS0tIGEvYm9hcmQvbXgxZnMyL2ZsYXNoLmMKKysrIGIvYm9hcmQvbXgxZnMyL2ZsYXNoLmMKQEAgLTYxMiw3ICs2MTIsNyBAQAogICogQHBhcmFtIGluZm86CiAgKiBAcGFyYW0gc3JjOglzb3VyY2Ugb2YgY29weSB0cmFuc2FjdGlvbgogICogQHBhcmFtIGFkZHI6CXdoZXJlIHRvIGNvcHkgdG8KLSAqIEBwYXJhbSBjbnQ6IAludW1iZXIgb2YgYnl0ZXMgdG8gY29weQorICogQHBhcmFtIGNudDoJbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkKICAqCiAgKiBAcmV0dXJuCWVycm9yIGNvZGUKICAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvbXgxZnMyL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL214MWZzMi9sb3dsZXZlbF9pbml0LlMKaW5kZXggODIxMWJlYi4uNGIyY2I0OCAxMDA2NDQKLS0tIGEvYm9hcmQvbXgxZnMyL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9teDFmczIvbG93bGV2ZWxfaW5pdC5TCkBAIC0xNjYsMjIgKzE2NiwyMiBAQAogCWxkciAgcjEsPTB4MDAyMjEwMDAgICAvKiBhZHIgb2YgU0RDVFJMMAkJCSovCiAJbGRyICByMCw9MHg5MjEyMDIwMAogCXN0ciAgcjAsW3IxLCMwXSAgICAgICAvKiBwdXQgaW4gcHJlY2hhcmdlIGNvbW1hbmQgbW9kZSAgICAqLwotCWxkciAgcjIsPTB4MDgyMDAwMDAgICAvKiBhZHIgZm9yIHByZWNoYXJnZSBjbWQgCSAgICovCisJbGRyICByMiw9MHgwODIwMDAwMCAgIC8qIGFkciBmb3IgcHJlY2hhcmdlIGNtZAkgICAqLwogCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBwcmVjaGFyZ2UJCQkgICAqLwogCWxkciAgcjAsPTB4QTIxMjAyMDAKIAlsZHIgIHIyLD0weDA4MDAwMDAwICAgLyogc3RhcnQgb2YgU0RSQU0JCSAgICovCiAJc3RyICByMCxbcjEsIzBdICAgICAgIC8qIHB1dCBpbiBhdXRvLXJlZnJlc2ggbW9kZQkgICAqLwotCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBhdXRvLXJlZnJlc2ggIAkJICAgKi8KLQlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogYXV0by1yZWZyZXNoICAJCSAgICovCi0JbGRyICByMCxbcjIsIzBdICAgICAgIC8qIGF1dG8tcmVmcmVzaCAgCQkgICAqLwotCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBhdXRvLXJlZnJlc2ggIAkJICAgKi8KLQlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogYXV0by1yZWZyZXNoICAJCSAgICovCi0JbGRyICByMCxbcjIsIzBdICAgICAgIC8qIGF1dG8tcmVmcmVzaCAgCQkgICAqLwotCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBhdXRvLXJlZnJlc2ggIAkJICAgKi8KKwlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogYXV0by1yZWZyZXNoCQkgICAqLworCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBhdXRvLXJlZnJlc2gJCSAgICovCisJbGRyICByMCxbcjIsIzBdICAgICAgIC8qIGF1dG8tcmVmcmVzaAkJICAgKi8KKwlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogYXV0by1yZWZyZXNoCQkgICAqLworCWxkciAgcjAsW3IyLCMwXSAgICAgICAvKiBhdXRvLXJlZnJlc2gJCSAgICovCisJbGRyICByMCxbcjIsIzBdICAgICAgIC8qIGF1dG8tcmVmcmVzaAkJICAgKi8KKwlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogYXV0by1yZWZyZXNoCQkgICAqLwogCWxkciAgcjAsPTB4QjIxMjAyMDAKIAlsZHIgIHIyLD0weDA4MTExODAwCiAJc3RyICByMCxbcjEsIzBdICAgICAgIC8qIHNldHVwIGZvciBtb2RlIHJlZ2lzdGVyIG9mIFNEUkFNICovCi0JbGRyICByMCxbcjIsIzBdICAgICAgIC8qIHByb2dyYW0gbW9kZSByZWdpc3RlciAJICAgKi8KKwlsZHIgIHIwLFtyMiwjMF0gICAgICAgLyogcHJvZ3JhbSBtb2RlIHJlZ2lzdGVyCSAgICovCiAJbGRyICByMCw9MHg4MjEyNDI2NwogCXN0ciAgcjAsW3IxLCMwXSAgICAgICAvKiBiYWNrIHRvIG5vcm1hbCBvcGVyYXRpb24JICAgKi8KIApkaWZmIC0tZ2l0IGEvYm9hcmQvbmM2NTAvdS1ib290LmxkcyBiL2JvYXJkL25jNjUwL3UtYm9vdC5sZHMKaW5kZXggMTU5MjI0Zi4uMDlhNDQyYSAxMDA2NDQKLS0tIGEvYm9hcmQvbmM2NTAvdS1ib290LmxkcworKysgYi9ib2FyZC9uYzY1MC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmM2NTAvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL25jNjUwL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggNDBlNGJkMC4uMDc5YTU1YSAxMDA2NDQKLS0tIGEvYm9hcmQvbmM2NTAvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9uYzY1MC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0cGhvbmUvbmV0cGhvbmUuYyBiL2JvYXJkL25ldHBob25lL25ldHBob25lLmMKaW5kZXggY2NjOGIzZS4uMTA3MmIzZiAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0cGhvbmUvbmV0cGhvbmUuYworKysgYi9ib2FyZC9uZXRwaG9uZS9uZXRwaG9uZS5jCkBAIC02OTEsNyArNjkxLDcgQEAKIAlpID0gQ0ZHX0haICogMjsKIAl3aGlsZSAoaSA+IDApIHsKIAotCSAgICAgICAJaWYgKHRzdGMoKSkgeworCQlpZiAodHN0YygpKSB7CiAJCQlnZXRjKCk7CiAJCQlicmVhazsKIAkJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0cGhvbmUvdS1ib290LmxkcyBiL2JvYXJkL25ldHBob25lL3UtYm9vdC5sZHMKaW5kZXggZWEzOWNkOS4uMjcxMTAyYiAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0cGhvbmUvdS1ib290LmxkcworKysgYi9ib2FyZC9uZXRwaG9uZS91LWJvb3QubGRzCkBAIC0zMywxMCArMzMsMTAgQEAKICAgLmR5bnN5bSAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KICAgLnJlbGEucm9kYXRhICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICA6IHsgKigucmVsYS5nb3QpCX0KQEAgLTQ5LDggKzQ5LDggQEAKICAgLnJlbC5wbHQgICAgICA6IHsgKigucmVsLnBsdCkJCX0KICAgLnJlbGEucGx0ICAgICA6IHsgKigucmVsYS5wbHQpCX0KICAgLmluaXQgICAgICAgICA6IHsgKiguaW5pdCkJCX0KLSAgLnBsdAkJCTogeyAqKC5wbHQpIAkJfQotICAudGV4dCAgICAgIAk6CisgIC5wbHQJCTogeyAqKC5wbHQpCQl9CisgIC50ZXh0CToKICAgewogICAgIGNwdS9tcGM4eHgvc3RhcnQubwkJKC50ZXh0KQogICAgIGNwdS9tcGM4eHgvdHJhcHMubwkJKC50ZXh0KQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0cGhvbmUvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL25ldHBob25lL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggODBiY2JmYy4uNWJmMWE2NiAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0cGhvbmUvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9uZXRwaG9uZS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3RhbC9oY3U0L3UtYm9vdC5sZHMgYi9ib2FyZC9uZXRzdGFsL2hjdTQvdS1ib290LmxkcwppbmRleCBhYjBiMThhLi4zYmNmZWEyIDEwMDY0NAotLS0gYS9ib2FyZC9uZXRzdGFsL2hjdTQvdS1ib290LmxkcworKysgYi9ib2FyZC9uZXRzdGFsL2hjdTQvdS1ib290LmxkcwpAQCAtMzgsMTEgKzM4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YWwvaGN1NS9oY3U1LmMgYi9ib2FyZC9uZXRzdGFsL2hjdTUvaGN1NS5jCmluZGV4IDU1ZTRjYzYuLjRlY2RiMjUgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHN0YWwvaGN1NS9oY3U1LmMKKysrIGIvYm9hcmQvbmV0c3RhbC9oY3U1L2hjdTUuYwpAQCAtMzEwLDggKzMxMCw4IEBACiAJaWYgKG1mc3ByKGRiY3IwKSAmIDB4ODAwMDAwMDApIHsKIAkJLyogRXh0ZXJuYWwgZGVidWdnZXIgYWxpdmUKIAkJICogZW5hYmxlIHRyYWNlIGZhY2lsdHkgZm9yIExhdXRlcmJhY2gKLQkJICogQ0NSMFtEVEJdPTAgCQlFbmFibGUgYnJvYWRjYXN0IG9mIHRyYWNlIGluZm9ybWF0aW9uCi0JCSAqIFNEUjBfUEZDMFtUUkVdIAlUcmFjZSBzaWduYWxzIGFyZSBlbmFibGVkIGluc3RlYWQgb2YKKwkJICogQ0NSMFtEVEJdPTAJCUVuYWJsZSBicm9hZGNhc3Qgb2YgdHJhY2UgaW5mb3JtYXRpb24KKwkJICogU0RSMF9QRkMwW1RSRV0JVHJhY2Ugc2lnbmFscyBhcmUgZW5hYmxlZCBpbnN0ZWFkIG9mCiAJCSAqCQkJR1BJTzQ5LTYzCiAJCSAqLwogCSAgICAgICAgbXRzcHIoY2NyMCwgbWZzcHIoY2NyMCkgICZ+IChDQ1IwX0RUQikpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3RhbC9oY3U1L2luaXQuUyBiL2JvYXJkL25ldHN0YWwvaGN1NS9pbml0LlMKaW5kZXggMTg4MjcyZS4uZDczYzg2MSAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3RhbC9oY3U1L2luaXQuUworKysgYi9ib2FyZC9uZXRzdGFsL2hjdTUvaW5pdC5TCkBAIC04NSw3ICs4NSw3IEBACiAJLyogVExCIzk6ICovCiAJdGxiZW50cnkoIDB4RUYwMDAwMDAsIFNaXzE2TSwgMHhFRjAwMDAwMCwgMSwgQUNfUnxBQ19XfEFDX1h8U0FfR3xTQV9JKQogCi0JLyogCQlDQU4gKi8KKwkvKgkJQ0FOICovCiAJLyogVExCIzEwOiAqLwogCXRsYmVudHJ5KCBDRkdfQ1NfMSwgU1pfMUssIENGR19DU18xLCAxLCBBQ19SfEFDX1d8QUNfWHxTQV9HfFNBX0kgKQogCkBAIC05Niw3ICs5Niw3IEBACiAJdGxiZW50cnkoIENGR19DU18yICsgMHgxMDAwMDAwLCBTWl8xNk0sIENGR19DU18yICsgMHgxMDAwMDAwLCAxLAogCQlBQ19SfEFDX1d8QUNfWHxTQV9HfFNBX0kgKQogCi0JIC8qIAkJSU1DLUZhc3QgMzIgTUIgKi8KKwkgLyoJCUlNQy1GYXN0IDMyIE1CICovCiAJLyogVExCIzEzOiAqLwogCXRsYmVudHJ5KCBDRkdfQ1NfMywgU1pfMTZNLCBDRkdfQ1NfMywgMSwgQUNfUnxBQ19XfEFDX1h8U0FfR3xTQV9JICkKIAkvKiBUTEIjMTQ6ICovCmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFsL2hjdTUvdS1ib290LmxkcyBiL2JvYXJkL25ldHN0YWwvaGN1NS91LWJvb3QubGRzCmluZGV4IDZjMGViYmIuLmM3MmU1YmEgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHN0YWwvaGN1NS91LWJvb3QubGRzCisrKyBiL2JvYXJkL25ldHN0YWwvaGN1NS91LWJvb3QubGRzCkBAIC00MiwxMSArNDIsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0c3RhbC9tY3UyNS91LWJvb3QubGRzIGIvYm9hcmQvbmV0c3RhbC9tY3UyNS91LWJvb3QubGRzCmluZGV4IGE5NTMyYzQuLjc0MGJjOWMgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHN0YWwvbWN1MjUvdS1ib290LmxkcworKysgYi9ib2FyZC9uZXRzdGFsL21jdTI1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL2NyY2VrLlMgYi9ib2FyZC9uZXRzdGFyL2NyY2VrLlMKaW5kZXggYTc0YWJmOS4uYWYzNTY2MiAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3Rhci9jcmNlay5TCisrKyBiL2JvYXJkL25ldHN0YXIvY3JjZWsuUwpAQCAtMzMsNyArMzMsNyBAQAogCWxkcglyNCwgW3IzLCByNCwgbHNsIzJdCiAJZW9yCXIwLCByNCwgcjAsIGxzciM4CiAJc3VicwlyMiwgcjIsICMweDEKLQlibmUgCTFiCisJYm5lCTFiCiAJZW9yCXIwLCByMCwgcjUKIAkuZW5kbQogCkBAIC01OCw3ICs1OCw3IEBACiAJbW92CVxyZWcsICMweDEwMDAwMAogMzoKIAlzdWJzCVxyZWcsIFxyZWcsICMweDEKLQlibmUgCTNiCisJYm5lCTNiCiAJLmVuZG0KIAogLnRleHQKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvZWVwcm9tX3N0YXJ0LlMgYi9ib2FyZC9uZXRzdGFyL2VlcHJvbV9zdGFydC5TCmluZGV4IDc1ZDlmMDUuLjEzMDY0ODUgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHN0YXIvZWVwcm9tX3N0YXJ0LlMKKysrIGIvYm9hcmQvbmV0c3Rhci9lZXByb21fc3RhcnQuUwpAQCAtMjksNyArMjksNyBAQAogCWxkcglyNCwgW3IzLCByNCwgbHNsIzJdCiAJZW9yCXIwLCByNCwgcjAsIGxzciM4CiAJc3VicwlyMiwgcjIsICMweDEKLQlibmUgCTFiCisJYm5lCTFiCiAJZW9yCXIwLCByMCwgcjUKIAkuZW5kbQogCkBAIC01OCw3ICs1OCw3IEBACiAJbW92CVxyZWcsICMweDEwMDAKIDM6CiAJc3VicwlccmVnLCBccmVnLCAjMHgxCi0JYm5lIAkzYgorCWJuZQkzYgogCiAJLmVuZG0KIC50ZXh0CmRpZmYgLS1naXQgYS9ib2FyZC9uZXRzdGFyL3NldHVwLlMgYi9ib2FyZC9uZXRzdGFyL3NldHVwLlMKaW5kZXggNWRhY2M5Yy4uM2MyZDQ2NyAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3Rhci9zZXR1cC5TCisrKyBiL2JvYXJkL25ldHN0YXIvc2V0dXAuUwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAJbW92CXIwLCAjMHg0MDAwCiBzZGVsYXk6CiAJc3VicwlyMCwgcjAsICMweDEKLQlibmUgCXNkZWxheQorCWJuZQlzZGVsYXkKIAogCS8qIGJhY2sgdG8gYXJjaCBjYWxsaW5nIGNvZGUgKi8KIAltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9ib2FyZC9uZXR0YS9kc3AuYyBiL2JvYXJkL25ldHRhL2RzcC5jCmluZGV4IDY2ZTBiODUuLjM3MzllMTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHRhL2RzcC5jCisrKyBiL2JvYXJkL25ldHRhL2RzcC5jCkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogCiAJLmNsa19kaXZpZGVyCT0gewogCQlbMF0JPSA0NywJCS8qIG11c3QgYmUgMjA0OEh6ICovCi0JCVsxXSAJPSA0NywKKwkJWzFdCT0gNDcsCiAJfSwKIAogCS5pbml0bW9kZQk9IDEsCmRpZmYgLS1naXQgYS9ib2FyZC9uZXR0YS9wY21jaWEuYyBiL2JvYXJkL25ldHRhL3BjbWNpYS5jCmluZGV4IDg2YjNjZmIuLjY2ZTZlNTEgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHRhL3BjbWNpYS5jCisrKyBiL2JvYXJkL25ldHRhL3BjbWNpYS5jCkBAIC0yMzEsMTIgKzIzMSwxMiBAQAogCSAgICAgICAocmVnJlBDTUNJQV9WUzIoc2xvdCkpPyJuIjoiZmYiKTsKIAogCWlmICgocGlwciAmIG1hc2spID09IG1hc2spIHsKLQkJc2V0X3ZwcGQoMCwgMSk7IHNldF92cHBkKDEsIDEpOyAJCS8qIFZBVlBQID0+IEhpLVogKi8KLQkJc2V0X3ZjY2QoMCwgMCk7IHNldF92Y2NkKDEsIDEpOyAJCS8qIDVWIG9uLCAzViBvZmYgKi8KKwkJc2V0X3ZwcGQoMCwgMSk7IHNldF92cHBkKDEsIDEpOwkJLyogVkFWUFAgPT4gSGktWiAqLworCQlzZXRfdmNjZCgwLCAwKTsgc2V0X3ZjY2QoMSwgMSk7CQkvKiA1ViBvbiwgM1Ygb2ZmICovCiAJCXB1dHMgKCIgNS4wViBjYXJkIGZvdW5kOiAiKTsKIAl9IGVsc2UgewotCQlzZXRfdnBwZCgwLCAxKTsgc2V0X3ZwcGQoMSwgMSk7IAkJLyogVkFWUFAgPT4gSGktWiAqLwotCQlzZXRfdmNjZCgwLCAxKTsgc2V0X3ZjY2QoMSwgMCk7IAkJLyogNVYgb2ZmLCAzViBvbiAqLworCQlzZXRfdnBwZCgwLCAxKTsgc2V0X3ZwcGQoMSwgMSk7CQkvKiBWQVZQUCA9PiBIaS1aICovCisJCXNldF92Y2NkKDAsIDEpOyBzZXRfdmNjZCgxLCAwKTsJCS8qIDVWIG9mZiwgM1Ygb24gKi8KIAkJcHV0cyAoIiAzLjNWIGNhcmQgZm91bmQ6ICIpOwogCX0KIApAQCAtMjQ0LDcgKzI0NCw3IEBACiAJZm9yIChpPTA7IGk8NTAwMDsgKytpKSB7CiAJCWlmICghZ2V0X29jKCkpIHsKIAkJCXByaW50ZiAoIiAgICoqKiBPdmVyY3VycmVudCAtIFNhZmV0eSBzaHV0ZG93biAqKipcbiIpOwotCQkJc2V0X3ZjY2QoMCwgMCk7IHNldF92Y2NkKDEsIDApOyAJCS8qIFZBVlBQID0+IEhpLVogKi8KKwkJCXNldF92Y2NkKDAsIDApOyBzZXRfdmNjZCgxLCAwKTsJCS8qIFZBVlBQID0+IEhpLVogKi8KIAkJCXJldHVybiAoMSk7CiAJCX0KIAkJdWRlbGF5ICgxMDApOwpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0dGEvdS1ib290LmxkcyBiL2JvYXJkL25ldHRhL3UtYm9vdC5sZHMKaW5kZXggZWEzOWNkOS4uZjU2MDE4OSAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0dGEvdS1ib290LmxkcworKysgYi9ib2FyZC9uZXR0YS91LWJvb3QubGRzCkBAIC0yOCwxNSArMjgsMTUgQEAKIHsKICAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgIC4gPSArIFNJWkVPRl9IRUFERVJTOwotICAuaW50ZXJwCQk6IHsgKiguaW50ZXJwKQkJfQorICAuaW50ZXJwCTogeyAqKC5pbnRlcnApCQl9CiAgIC5oYXNoICAgICAgICAgOiB7ICooLmhhc2gpCQl9CiAgIC5keW5zeW0gICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgIDogeyAqKC5yZWwucm9kYXRhKQl9CiAgIC5yZWxhLnJvZGF0YSAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgOiB7ICooLnJlbGEuZ290KQl9CkBAIC00OSw4ICs0OSw4IEBACiAgIC5yZWwucGx0ICAgICAgOiB7ICooLnJlbC5wbHQpCQl9CiAgIC5yZWxhLnBsdCAgICAgOiB7ICooLnJlbGEucGx0KQl9CiAgIC5pbml0ICAgICAgICAgOiB7ICooLmluaXQpCQl9Ci0gIC5wbHQJCQk6IHsgKigucGx0KSAJCX0KLSAgLnRleHQgICAgICAJOgorICAucGx0CQk6IHsgKigucGx0KQkJfQorICAudGV4dAk6CiAgIHsKICAgICBjcHUvbXBjOHh4L3N0YXJ0Lm8JCSgudGV4dCkKICAgICBjcHUvbXBjOHh4L3RyYXBzLm8JCSgudGV4dCkKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHRhL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9uZXR0YS91LWJvb3QubGRzLmRlYnVnCmluZGV4IDgwYmNiZmMuLjViZjFhNjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHRhL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvbmV0dGEvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHRhMi91LWJvb3QubGRzIGIvYm9hcmQvbmV0dGEyL3UtYm9vdC5sZHMKaW5kZXggZWEzOWNkOS4uZjU2MDE4OSAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0dGEyL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbmV0dGEyL3UtYm9vdC5sZHMKQEAgLTI4LDE1ICsyOCwxNSBAQAogewogICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAgLiA9ICsgU0laRU9GX0hFQURFUlM7Ci0gIC5pbnRlcnAJCTogeyAqKC5pbnRlcnApCQl9CisgIC5pbnRlcnAJOiB7ICooLmludGVycCkJCX0KICAgLmhhc2ggICAgICAgICA6IHsgKiguaGFzaCkJCX0KICAgLmR5bnN5bSAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KICAgLnJlbGEucm9kYXRhICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICA6IHsgKigucmVsYS5nb3QpCX0KQEAgLTQ5LDggKzQ5LDggQEAKICAgLnJlbC5wbHQgICAgICA6IHsgKigucmVsLnBsdCkJCX0KICAgLnJlbGEucGx0ICAgICA6IHsgKigucmVsYS5wbHQpCX0KICAgLmluaXQgICAgICAgICA6IHsgKiguaW5pdCkJCX0KLSAgLnBsdAkJCTogeyAqKC5wbHQpIAkJfQotICAudGV4dCAgICAgIAk6CisgIC5wbHQJCTogeyAqKC5wbHQpCQl9CisgIC50ZXh0CToKICAgewogICAgIGNwdS9tcGM4eHgvc3RhcnQubwkJKC50ZXh0KQogICAgIGNwdS9tcGM4eHgvdHJhcHMubwkJKC50ZXh0KQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0dGEyL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9uZXR0YTIvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA4MGJjYmZjLi41YmYxYTY2IDEwMDY0NAotLS0gYS9ib2FyZC9uZXR0YTIvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9uZXR0YTIvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHZpYS91LWJvb3QubGRzIGIvYm9hcmQvbmV0dmlhL3UtYm9vdC5sZHMKaW5kZXggNzkzOTlmOC4uYjRmMjEwZSAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0dmlhL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvbmV0dmlhL3UtYm9vdC5sZHMKQEAgLTI4LDE1ICsyOCwxNSBAQAogewogICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KICAgLiA9ICsgU0laRU9GX0hFQURFUlM7Ci0gIC5pbnRlcnAJCTogeyAqKC5pbnRlcnApCQl9CisgIC5pbnRlcnAJOiB7ICooLmludGVycCkJCX0KICAgLmhhc2ggICAgICAgICA6IHsgKiguaGFzaCkJCX0KICAgLmR5bnN5bSAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KICAgLnJlbGEucm9kYXRhICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICA6IHsgKigucmVsYS5nb3QpCX0KQEAgLTQ5LDggKzQ5LDggQEAKICAgLnJlbC5wbHQgICAgICA6IHsgKigucmVsLnBsdCkJCX0KICAgLnJlbGEucGx0ICAgICA6IHsgKigucmVsYS5wbHQpCX0KICAgLmluaXQgICAgICAgICA6IHsgKiguaW5pdCkJCX0KLSAgLnBsdAkJCTogeyAqKC5wbHQpIAkJfQotICAudGV4dCAgICAgIAk6CisgIC5wbHQJCTogeyAqKC5wbHQpCQl9CisgIC50ZXh0CToKICAgewogICAgIGNwdS9tcGM4eHgvc3RhcnQubwkJKC50ZXh0KQogICAgIGNwdS9tcGM4eHgvdHJhcHMubwkJKC50ZXh0KQpkaWZmIC0tZ2l0IGEvYm9hcmQvbmV0dmlhL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC9uZXR2aWEvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCBkZGE1MmE5Li4xMDE0ZWM2IDEwMDY0NAotLS0gYS9ib2FyZC9uZXR2aWEvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9uZXR2aWEvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL25zOTc1MGRldi9uczk3NTBkZXYuYyBiL2JvYXJkL25zOTc1MGRldi9uczk3NTBkZXYuYwppbmRleCAxZGQzNDhhLi5mYzQ2MjQ0IDEwMDY0NAotLS0gYS9ib2FyZC9uczk3NTBkZXYvbnM5NzUwZGV2LmMKKysrIGIvYm9hcmQvbnM5NzUwZGV2L25zOTc1MGRldi5jCkBAIC0xMDIsNyArMTAyLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgUm91dGluZTpldGhlcl9faW5pdAogIERlc2NyaXB0aW9uOiB0YWtlIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyIG91dCBvZiByZXNldCBhbmQgd2FpdAotCSAgCQkgICBmb3IgdGhlIEVFUFJPTSBsb2FkIHRvIGNvbXBsZXRlLgorCQkJICAgZm9yIHRoZSBFRVBST00gbG9hZCB0byBjb21wbGV0ZS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB2b2lkIGV0aGVyX19pbml0ICh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYm9hcmQvbng4MjMvdS1ib290LmxkcyBiL2JvYXJkL254ODIzL3UtYm9vdC5sZHMKaW5kZXggOTRhYjc0NS4uODUxMTdhYSAxMDA2NDQKLS0tIGEvYm9hcmQvbng4MjMvdS1ib290LmxkcworKysgYi9ib2FyZC9ueDgyMy91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvbng4MjMvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL254ODIzL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggMWEyNWE5OC4uODUwNzJmZSAxMDA2NDQKLS0tIGEvYm9hcmQvbng4MjMvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9ueDgyMy91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvb21hcDE2MTBpbm4vbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvb21hcDE2MTBpbm4vbG93bGV2ZWxfaW5pdC5TCmluZGV4IGNjODM0N2YuLmU0ZWQ5ZjMgMTAwNjQ0Ci0tLSBhL2JvYXJkL29tYXAxNjEwaW5uL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9vbWFwMTYxMGlubi9sb3dsZXZlbF9pbml0LlMKQEAgLTU4LDcgKzU4LDcgQEAKIAlzdHIJcjEsCVtyMF0KIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotCSAqIFNldCB1cCBBUk0gQ0xNIHJlZ2lzdGVycyAoSURMRUNUMikgIAkJICAgICAgICAqCisJICogU2V0IHVwIEFSTSBDTE0gcmVnaXN0ZXJzIChJRExFQ1QyKQkJICAgICAgICAqCiAJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCWxkcglyMCwJUkVHX0FSTV9JRExFQ1QyCiAJbGRyCXIxLAlWQUxfQVJNX0lETEVDVDIKQEAgLTEyMyw3ICsxMjMsNyBAQAogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAJICogVHVybiBvZmYgdGhlIHdhdGNoZG9nIGR1cmluZyBpbml0Li4uCQkJKgotIAkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogZGlzYWJsZV93ZDoKIAlsZHIJcjAsCVJFR19XQVRDSERPRwogCWxkcglyMSwJV0FUQ0hET0dfVkFMMQpAQCAtMTU2LDEzICsxNTYsMTMgQEAKIAkgKiBhbmQgYnJhbmNoIHRvIGFwcHJvcHJpYXRlIGluaXRpYWxpemF0aW9uIGNvZGUuCiAJICovCiAJLyogTG9hZCBwaHlzaWNhbCBTRFJBTSBiYXNlLiAqLwotCW1vdiAJcjAsIAkjMHgxMDAwMDAwMAorCW1vdglyMCwJIzB4MTAwMDAwMDAKIAkvKiBHZXQgY3VycmVudCBleGVjdXRpb24gbG9jYXRpb24uICovCi0JbW92IAlyMSwgCXBjCisJbW92CXIxLAlwYwogCS8qIENvbXBhcmUuICovCi0JY21wIAlyMSwgCXIwCisJY21wCXIxLAlyMAogCS8qIFNraXAgb3ZlciBFTUlGLWZhc3QgaW5pdGlhbGl6YXRpb24gaWYgcnVubmluZyBmcm9tIFNEUkFNLiAqLwotCWJnZSAJc2tpcF9zZHJhbQorCWJnZQlza2lwX3NkcmFtCiAKIAkvKgogCSogRGVsYXkgZm9yIFNEUkFNIGluaXRpYWxpemF0aW9uLgpAQCAtMTcwLDcgKzE3MCw3IEBACiAJbW92CXIzLAkjMHgxODAwCQkvKiB2YWx1ZSBzaG91bGQgYmUgY2hlY2tlZCAqLwogMzoKIAlzdWJzCXIzLAlyMywJIzB4MQkvKiBEZWNyZW1lbnQgY291bnQgKi8KLQlibmUgCTNiCisJYm5lCTNiCiAKIAogCS8qCkBAIC0yNzAsNyArMjcwLDcgQEAKICNpZmRlZiBDT05GSUdfSDJfT01BUDE2MTAKIAkvKiBpbnNlcnRpbmcgYWRkaXRpb25hbCAyIGNsb2NrIGN5Y2xlIGhvbGQgdGltZSBmb3IgTEFOICovCiAJbGRyICAgICByMCwgICAgIFJFR19UQ19FTUlGU19DUzFfQURWQU5DRUQKLQlsZHIgICAgCXIxLCAgICAgVkFMX1RDX0VNSUZTX0NTMV9BRFZBTkNFRAorCWxkcglyMSwgICAgIFZBTF9UQ19FTUlGU19DUzFfQURWQU5DRUQKIAlzdHIgICAgIHIxLCAgICAgW3IwXQogI2VuZGlmCiAJLyogU3RhcnQgTVBVIFRpbWVyIDEgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL29tYXAxNjEwaW5uL29tYXAxNjEwaW5ub3ZhdG9yLmMgYi9ib2FyZC9vbWFwMTYxMGlubi9vbWFwMTYxMGlubm92YXRvci5jCmluZGV4IDhkYmU2ODYuLjJlMDRhZDQgMTAwNjQ0Ci0tLSBhL2JvYXJkL29tYXAxNjEwaW5uL29tYXAxNjEwaW5ub3ZhdG9yLmMKKysrIGIvYm9hcmQvb21hcDE2MTBpbm4vb21hcDE2MTBpbm5vdmF0b3IuYwpAQCAtMTE2LDcgKzExNiw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIFJvdXRpbmU6ZXRoZXJfX2luaXQKICBEZXNjcmlwdGlvbjogdGFrZSB0aGUgRXRoZXJuZXQgY29udHJvbGxlciBvdXQgb2YgcmVzZXQgYW5kIHdhaXQKLQkgIAkJICAgZm9yIHRoZSBFRVBST00gbG9hZCB0byBjb21wbGV0ZS4KKwkJCSAgIGZvciB0aGUgRUVQUk9NIGxvYWQgdG8gY29tcGxldGUuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdm9pZCBldGhlcl9faW5pdCAodm9pZCkKIHsKQEAgLTE2Miw3ICsxNjIsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIFJvdXRpbmU6IHNldF9tdXhjb25mX3JlZ3MKICBEZXNjcmlwdGlvbjogU2V0dGluZyB1cCB0aGUgY29uZmlndXJhdGlvbiBNdXggcmVnaXN0ZXJzCi0gCQkJICBzcGVjaWZpYyB0byB0aGUgaGFyZHdhcmUKKwkJCSAgc3BlY2lmaWMgdG8gdGhlIGhhcmR3YXJlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdm9pZCBzZXRfbXV4Y29uZl9yZWdzICh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYm9hcmQvb21hcDI0MjBoNC9tZW0uYyBiL2JvYXJkL29tYXAyNDIwaDQvbWVtLmMKaW5kZXggNjJlYjZlMy4uYTMyOTVmZCAxMDA2NDQKLS0tIGEvYm9hcmQvb21hcDI0MjBoNC9tZW0uYworKysgYi9ib2FyZC9vbWFwMjQyMGg0L21lbS5jCkBAIC0yNTMsNyArMjUzLDcgQEAKIAkJYSA9IEg0XzI0MnhfU0RSQ19BQ1RJTV9DVFJMQV8wX0VTMTsKIAkJYiA9IEg0XzI0MnhfU0RSQ19BQ1RJTV9DVFJMQl8wX0VTMTsKIAkJciA9IEg0XzI0MnhfU0RSQ19SRlJfQ1RSTF9FUzE7Ci0gCX0KKwl9CiAKIAlpZiAoY3MwKSB7CiAJCV9fcmF3X3dyaXRlbChhLCBTRFJDX0FDVElNX0NUUkxBXzApOwpkaWZmIC0tZ2l0IGEvYm9hcmQvb21hcDI0MjBoNC9vbWFwMjQyMGg0LmMgYi9ib2FyZC9vbWFwMjQyMGg0L29tYXAyNDIwaDQuYwppbmRleCAxYjkxN2IzLi4wOWIwNzBkIDEwMDY0NAotLS0gYS9ib2FyZC9vbWFwMjQyMGg0L29tYXAyNDIwaDQuYworKysgYi9ib2FyZC9vbWFwMjQyMGg0L29tYXAyNDIwaDQuYwpAQCAtMTUyLDcgKzE1Miw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogUm91dGluZTpldGhlcl9pbml0CiAgKiBEZXNjcmlwdGlvbjogdGFrZSB0aGUgRXRoZXJuZXQgY29udHJvbGxlciBvdXQgb2YgcmVzZXQgYW5kIHdhaXQKLSAqICAJCSAgIGZvciB0aGUgRUVQUk9NIGxvYWQgdG8gY29tcGxldGUuCisgKgkJICAgZm9yIHRoZSBFRVBST00gbG9hZCB0byBjb21wbGV0ZS4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB2b2lkIGV0aGVyX2luaXQgKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC9vbWFwNTkxMm9zay9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9vbWFwNTkxMm9zay9sb3dsZXZlbF9pbml0LlMKaW5kZXggYTFmYTA5Ny4uN2JmZGIyNiAxMDA2NDQKLS0tIGEvYm9hcmQvb21hcDU5MTJvc2svbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL29tYXA1OTEyb3NrL2xvd2xldmVsX2luaXQuUwpAQCAtMTI1LDcgKzEyNSw3IEBACiAKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKIAkgKiBUdXJuIG9mZiB0aGUgd2F0Y2hkb2cgZHVyaW5nIGluaXQuLi4gICAgICAgICAgICAgICAgICoKLSAJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAlsZHIJcjAsCVJFR19XQVRDSERPRwogCWxkcglyMSwJV0FUQ0hET0dfVkFMMQogCXN0cglyMSwJW3IwXQpAQCAtMTkxLDcgKzE5MSw3IEBACiAJbW92CXIwLAkjMHgxODAwCQkvKiB2YWx1ZSBzaG91bGQgYmUgY2hlY2tlZCAqLwogMzoKIAlzdWJzCXIwLAlyMCwJIzB4MQkvKiBEZWNyZW1lbnQgY291bnQgKi8KLQlibmUgCTNiCisJYm5lCTNiCiAKIAkvKgogCSAqIFNldCBTRFJBTSBjb250cm9sIHZhbHVlcy4gRGlzYWJsZSByZWZyZXNoIGJlZm9yZSBNUlMgY29tbWFuZC4KQEAgLTI5NCw3ICsyOTQsNyBAQAogI2lmZGVmIENPTkZJR19IMl9PTUFQMTYxMAogCS8qIGluc2VydGluZyBhZGRpdGlvbmFsIDIgY2xvY2sgY3ljbGUgaG9sZCB0aW1lIGZvciBMQU4gKi8KIAlsZHIgICAgIHIwLCAgICAgUkVHX1RDX0VNSUZTX0NTMV9BRFZBTkNFRAotCWxkciAgICAJcjEsICAgICBWQUxfVENfRU1JRlNfQ1MxX0FEVkFOQ0VECisJbGRyCXIxLCAgICAgVkFMX1RDX0VNSUZTX0NTMV9BRFZBTkNFRAogCXN0ciAgICAgcjEsICAgICBbcjBdCiAjZW5kaWYKIAkvKiBTdGFydCBNUFUgVGltZXIgMSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvb21hcDczMHAyL2xvd2xldmVsX2luaXQuUyBiL2JvYXJkL29tYXA3MzBwMi9sb3dsZXZlbF9pbml0LlMKaW5kZXggOWFiNzFjZi4uZDRlOTdhNSAxMDA2NDQKLS0tIGEvYm9hcmQvb21hcDczMHAyL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9vbWFwNzMwcDIvbG93bGV2ZWxfaW5pdC5TCkBAIC02NSw3ICs2NSw3IEBACiAJc3RyCXIxLAlbcjBdCiAKIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKLQkgKiBTZXQgdXAgQVJNIENMTSByZWdpc3RlcnMgKElETEVDVDIpICAJCSAgICAgICAgKgorCSAqIFNldCB1cCBBUk0gQ0xNIHJlZ2lzdGVycyAoSURMRUNUMikJCSAgICAgICAgKgogCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAlsZHIJcjAsCVJFR19BUk1fSURMRUNUMgogCWxkcglyMSwJVkFMX0FSTV9JRExFQ1QyCkBAIC0xMjMsNyArMTIzLDcgQEAKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogCSAqIFR1cm4gb2ZmIHRoZSB3YXRjaGRvZyBkdXJpbmcgaW5pdC4uLgkJCSoKLSAJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAlsZHIJcjAsCVJFR19XQVRDSERPRwogCWxkcglyMSwJV0FUQ0hET0dfVkFMMQogCXN0cglyMSwJW3IwXQpAQCAtMTU4LDcgKzE1OCw3IEBACiAJLyogQ29tcGFyZS4gKi8KIAljbXAgICAgIHIwLCAjMAogCS8qIFNraXAgb3ZlciBFTUlGLWZhc3QgaW5pdGlhbGl6YXRpb24gaWYgcnVubmluZyBmcm9tIFNEUkFNLiAqLwotCWJuZSAJc2tpcF9zZHJhbQorCWJuZQlza2lwX3NkcmFtCiAKIAkvKgogCSogRGVsYXkgZm9yIFNEUkFNIGluaXRpYWxpemF0aW9uLgpAQCAtMTY2LDcgKzE2Niw3IEBACiAJbW92CXIzLAkjMHgxODAwCQkvKiB2YWx1ZSBzaG91bGQgYmUgY2hlY2tlZCAqLwogMzoKIAlzdWJzCXIzLAlyMywJIzB4MQkvKiBEZWNyZW1lbnQgY291bnQgKi8KLQlibmUgCTNiCisJYm5lCTNiCiAKIAlsZHIJcjAsCVJFR19TRFJBTV9DT05GSUcKIAlsZHIJcjEsCVNEUkFNX0NPTkZJR19WQUwKQEAgLTIzOSw3ICsyMzksNyBAQAogI2lmZGVmIENPTkZJR19QMl9PTUFQMTYxMAogCS8qIGluc2VydGluZyBhZGRpdGlvbmFsIDIgY2xvY2sgY3ljbGUgaG9sZCB0aW1lIGZvciBMQU4gKi8KIAlsZHIgICAgIHIwLCAgICAgUkVHX1RDX0VNSUZTX0NTMV9BRFZBTkNFRAotCWxkciAgICAJcjEsICAgICBWQUxfVENfRU1JRlNfQ1MxX0FEVkFOQ0VECisJbGRyCXIxLCAgICAgVkFMX1RDX0VNSUZTX0NTMV9BRFZBTkNFRAogCXN0ciAgICAgcjEsICAgICBbcjBdCiAjZW5kaWYKIAkvKiBTdGFydCBNUFUgVGltZXIgMSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvb3hjL2ZsYXNoLmMgYi9ib2FyZC9veGMvZmxhc2guYwppbmRleCA3OTViN2NjLi4yOTZjMDFkIDEwMDY0NAotLS0gYS9ib2FyZC9veGMvZmxhc2guYworKysgYi9ib2FyZC9veGMvZmxhc2guYwpAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgfQogCiAgICAgaWYgKGRldmlkID09IEZMQVNIX1NUTTMyMERCKSB7Ci0gICAgCS8qIE1QQzgyNDAgY2FuIGFkZHJlc3MgbWF4aW11bSAyTWIgb2YgZmxhc2gsIHRoYXQgaXMgd2h5IHRoZSBNU0IKKwkvKiBNUEM4MjQwIGNhbiBhZGRyZXNzIG1heGltdW0gMk1iIG9mIGZsYXNoLCB0aGF0IGlzIHdoeSB0aGUgTVNCCiAJICogbGVhZCBpcyBncm91bmRlZCBhbmQgd2UgY2FuIGFjY2VzcyBvbmx5IDIgZmlyc3QgTWIgKi8KIAlpbmZvLT5mbGFzaF9pZCAgICAgPSB2ZW5kb3IgPDwgMTYgfCBkZXZpZDsKIAlpbmZvLT5zZWN0b3JfY291bnQgPSAzMjsKZGlmZiAtLWdpdCBhL2JvYXJkL3BjaXBwYzIvY3BjNzEwX2luaXRfcmFtLmMgYi9ib2FyZC9wY2lwcGMyL2NwYzcxMF9pbml0X3JhbS5jCmluZGV4IDU3ZWQ4ZjAuLjE3MWYwNmMgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BjaXBwYzIvY3BjNzEwX2luaXRfcmFtLmMKKysrIGIvYm9hcmQvcGNpcHBjMi9jcGM3MTBfaW5pdF9yYW0uYwpAQCAtMjgsMjI3ICsyOCwyMDUgQEAKICNpbmNsdWRlICJwY2lwcGMyLmgiCiAjaW5jbHVkZSAiaTJjLmgiCiAKLXR5cGVkZWYgc3RydWN0IGNwYzcxMF9tZW1fb3JnX3MKLXsKLSAgdTgJCXJvd3M7Ci0gIHU4CQljb2xzOwotICB1OAkJYmFua3MyOwotICB1OAkJb3JnOwordHlwZWRlZiBzdHJ1Y3QgY3BjNzEwX21lbV9vcmdfcyB7CisJdTggcm93czsKKwl1OCBjb2xzOworCXU4IGJhbmtzMjsKKwl1OCBvcmc7CiB9IGNwYzcxMF9tZW1fb3JnX3Q7CiAKLXN0YXRpYyBpbnQJCWNwYzcxMF9jb21wdXRlX21jZXIJKHUzMiAqCQltY2VyLAotCQkJCQkJIHVuc2lnbmVkIGxvbmcgKgotCQkJCQkJCQlzaXplLAotCQkJCQkJIHVuc2lnbmVkIGludAlzZHJhbSk7Ci1zdGF0aWMgaW50CQljcGM3MTBfZWVwcm9tX2NoZWNrc3VtCSh1bnNpZ25lZCBpbnQJc2RyYW0pOwotc3RhdGljIHU4CQljcGM3MTBfZWVwcm9tX3JlYWQJKHVuc2lnbmVkIGludAlzZHJhbSwKLQkJCQkJCSB1bnNpZ25lZCBpbnQJb2Zmc2V0KTsKK3N0YXRpYyBpbnQgY3BjNzEwX2NvbXB1dGVfbWNlciAodTMyICogbWNlciwKKwkJCQl1bnNpZ25lZCBsb25nICpzaXplLCB1bnNpZ25lZCBpbnQgc2RyYW0pOworc3RhdGljIGludCBjcGM3MTBfZWVwcm9tX2NoZWNrc3VtICh1bnNpZ25lZCBpbnQgc2RyYW0pOworc3RhdGljIHU4IGNwYzcxMF9lZXByb21fcmVhZCAodW5zaWduZWQgaW50IHNkcmFtLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKIAotc3RhdGljIHUzMgkJY3BjNzEwX21jZXJfbWVtIFtdID0KLXsKLSAgMHgwMDAwMDNmMywJLyogMTggbGluZXMsICAgIDQgTWIgKi8KLSAgMHgwMDAwMDNlMywJLyogMTkgbGluZXMsICAgIDggTWIgKi8KLSAgMHgwMDAwMDNjMywJLyogMjAgbGluZXMsICAgMTYgTWIgKi8KLSAgMHgwMDAwMDM4MywJLyogMjEgbGluZXMsICAgMzIgTWIgKi8KLSAgMHgwMDAwMDMwMywJLyogMjIgbGluZXMsICAgNjQgTWIgKi8KLSAgMHgwMDAwMDIwMywJLyogMjMgbGluZXMsICAxMjggTWIgKi8KLSAgMHgwMDAwMDAwMywJLyogMjQgbGluZXMsICAyNTYgTWIgKi8KLSAgMHgwMDAwMDAwMiwJLyogMjUgbGluZXMsICA1MTIgTWIgKi8KLSAgMHgwMDAwMDAwMQkvKiAyNiBsaW5lcywgMTAyNCBNYiAqLworc3RhdGljIHUzMiBjcGM3MTBfbWNlcl9tZW1bXSA9IHsKKwkweDAwMDAwM2YzLAkJLyogMTggbGluZXMsICAgIDQgTWIgKi8KKwkweDAwMDAwM2UzLAkJLyogMTkgbGluZXMsICAgIDggTWIgKi8KKwkweDAwMDAwM2MzLAkJLyogMjAgbGluZXMsICAgMTYgTWIgKi8KKwkweDAwMDAwMzgzLAkJLyogMjEgbGluZXMsICAgMzIgTWIgKi8KKwkweDAwMDAwMzAzLAkJLyogMjIgbGluZXMsICAgNjQgTWIgKi8KKwkweDAwMDAwMjAzLAkJLyogMjMgbGluZXMsICAxMjggTWIgKi8KKwkweDAwMDAwMDAzLAkJLyogMjQgbGluZXMsICAyNTYgTWIgKi8KKwkweDAwMDAwMDAyLAkJLyogMjUgbGluZXMsICA1MTIgTWIgKi8KKwkweDAwMDAwMDAxCQkvKiAyNiBsaW5lcywgMTAyNCBNYiAqLwogfTsKLXN0YXRpYyBjcGM3MTBfbWVtX29yZ190CWNwYzcxMF9tZW1fb3JnIFtdID0KLXsKLSAgeyAweDBjLCAweDA5LCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDEyLyA5LzIgKi8KLSAgeyAweDBkLCAweDA5LCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDEzLyA5LzIgKi8KLSAgeyAweDBkLCAweDBhLCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDEzLzEwLzIgKi8KLSAgeyAweDBkLCAweDBiLCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDEzLzExLzIgKi8KLSAgeyAweDBkLCAweDBjLCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDEzLzEyLzIgKi8KLSAgeyAweDBlLCAweDBjLCAweDAyLCAweDAwIH0sCS8qIDAwMDA6IDE0LzEyLzIgKi8KLSAgeyAweDBiLCAweDA4LCAweDAyLCAweDAxIH0sCS8qIDAwMDE6IDExLyA4LzIgKi8KLSAgeyAweDBiLCAweDA5LCAweDAxLCAweDAyIH0sCS8qIDAwMTA6IDExLyA5LzEgKi8KLSAgeyAweDBiLCAweDBhLCAweDAxLCAweDAzIH0sCS8qIDAwMTE6IDExLzEwLzEgKi8KLSAgeyAweDBjLCAweDA4LCAweDAyLCAweDA0IH0sCS8qIDAxMDA6IDEyLyA4LzIgKi8KLSAgeyAweDBjLCAweDBhLCAweDAyLCAweDA1IH0sCS8qIDAxMDE6IDEyLzEwLzIgKi8KLSAgeyAweDBkLCAweDA4LCAweDAxLCAweDA2IH0sCS8qIDAxMTA6IDEzLyA4LzEgKi8KLSAgeyAweDBkLCAweDA4LCAweDAyLCAweDA3IH0sCS8qIDAxMTE6IDEzLyA4LzIgKi8KLSAgeyAweDBkLCAweDA5LCAweDAxLCAweDA4IH0sCS8qIDEwMDA6IDEzLyA5LzEgKi8KLSAgeyAweDBkLCAweDBhLCAweDAxLCAweDA5IH0sCS8qIDEwMDE6IDEzLzEwLzEgKi8KLSAgeyAweDBiLCAweDA4LCAweDAxLCAweDBhIH0sCS8qIDEwMTA6IDExLyA4LzEgKi8KLSAgeyAweDBjLCAweDA4LCAweDAxLCAweDBiIH0sCS8qIDEwMTE6IDEyLyA4LzEgKi8KLSAgeyAweDBjLCAweDA5LCAweDAxLCAweDBjIH0sCS8qIDExMDA6IDEyLyA5LzEgKi8KLSAgeyAweDBlLCAweDA5LCAweDAyLCAweDBkIH0sCS8qIDExMDE6IDE0LyA5LzIgKi8KLSAgeyAweDBlLCAweDBhLCAweDAyLCAweDBlIH0sCS8qIDExMTA6IDE0LzEwLzIgKi8KLSAgeyAweDBlLCAweDBiLCAweDAyLCAweDBmIH0gCS8qIDExMTE6IDE0LzExLzIgKi8KK3N0YXRpYyBjcGM3MTBfbWVtX29yZ190IGNwYzcxMF9tZW1fb3JnW10gPSB7CisJezB4MGMsIDB4MDksIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxMi8gOS8yICovCisJezB4MGQsIDB4MDksIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxMy8gOS8yICovCisJezB4MGQsIDB4MGEsIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxMy8xMC8yICovCisJezB4MGQsIDB4MGIsIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxMy8xMS8yICovCisJezB4MGQsIDB4MGMsIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxMy8xMi8yICovCisJezB4MGUsIDB4MGMsIDB4MDIsIDB4MDB9LAkvKiAwMDAwOiAxNC8xMi8yICovCisJezB4MGIsIDB4MDgsIDB4MDIsIDB4MDF9LAkvKiAwMDAxOiAxMS8gOC8yICovCisJezB4MGIsIDB4MDksIDB4MDEsIDB4MDJ9LAkvKiAwMDEwOiAxMS8gOS8xICovCisJezB4MGIsIDB4MGEsIDB4MDEsIDB4MDN9LAkvKiAwMDExOiAxMS8xMC8xICovCisJezB4MGMsIDB4MDgsIDB4MDIsIDB4MDR9LAkvKiAwMTAwOiAxMi8gOC8yICovCisJezB4MGMsIDB4MGEsIDB4MDIsIDB4MDV9LAkvKiAwMTAxOiAxMi8xMC8yICovCisJezB4MGQsIDB4MDgsIDB4MDEsIDB4MDZ9LAkvKiAwMTEwOiAxMy8gOC8xICovCisJezB4MGQsIDB4MDgsIDB4MDIsIDB4MDd9LAkvKiAwMTExOiAxMy8gOC8yICovCisJezB4MGQsIDB4MDksIDB4MDEsIDB4MDh9LAkvKiAxMDAwOiAxMy8gOS8xICovCisJezB4MGQsIDB4MGEsIDB4MDEsIDB4MDl9LAkvKiAxMDAxOiAxMy8xMC8xICovCisJezB4MGIsIDB4MDgsIDB4MDEsIDB4MGF9LAkvKiAxMDEwOiAxMS8gOC8xICovCisJezB4MGMsIDB4MDgsIDB4MDEsIDB4MGJ9LAkvKiAxMDExOiAxMi8gOC8xICovCisJezB4MGMsIDB4MDksIDB4MDEsIDB4MGN9LAkvKiAxMTAwOiAxMi8gOS8xICovCisJezB4MGUsIDB4MDksIDB4MDIsIDB4MGR9LAkvKiAxMTAxOiAxNC8gOS8yICovCisJezB4MGUsIDB4MGEsIDB4MDIsIDB4MGV9LAkvKiAxMTEwOiAxNC8xMC8yICovCisJezB4MGUsIDB4MGIsIDB4MDIsIDB4MGZ9CS8qIDExMTE6IDE0LzExLzIgKi8KIH07CiAKIHVuc2lnbmVkIGxvbmcgY3BjNzEwX3JhbV9pbml0ICh2b2lkKQogewotICB1bnNpZ25lZCBsb25nIAltZW1zaXplID0gMDsKLSAgdW5zaWduZWQgbG9uZwkJYmFua19zaXplOwotICB1MzIJCQltY2VyOworCXVuc2lnbmVkIGxvbmcgbWVtc2l6ZSA9IDA7CisJdW5zaWduZWQgbG9uZyBiYW5rX3NpemU7CisJdTMyIG1jZXI7CiAKICNpZm5kZWYgQ0ZHX1JBTUJPT1QKLSAgICAvKiBDbGVhciBtZW1vcnkgYmFua3MKLSAgICAgKi8KLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjApLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjEpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjIpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjMpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjQpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjUpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjYpLCAwKTsKLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUNFUjcpLCAwKTsKLSAgaW9iYXJyaWVyX3J3KCk7CisJLyogQ2xlYXIgbWVtb3J5IGJhbmtzCisJICovCisJb3V0MzIgKFJFRyAoU0RSQU0wLCBNQ0VSMCksIDApOworCW91dDMyIChSRUcgKFNEUkFNMCwgTUNFUjEpLCAwKTsKKwlvdXQzMiAoUkVHIChTRFJBTTAsIE1DRVIyKSwgMCk7CisJb3V0MzIgKFJFRyAoU0RSQU0wLCBNQ0VSMyksIDApOworCW91dDMyIChSRUcgKFNEUkFNMCwgTUNFUjQpLCAwKTsKKwlvdXQzMiAoUkVHIChTRFJBTTAsIE1DRVI1KSwgMCk7CisJb3V0MzIgKFJFRyAoU0RSQU0wLCBNQ0VSNiksIDApOworCW91dDMyIChSRUcgKFNEUkFNMCwgTUNFUjcpLCAwKTsKKwlpb2JhcnJpZXJfcncgKCk7CiAKLSAgICAvKiBEaXNhYmxlIG1lbW9yeQotICAgICAqLwotICBvdXQzMihSRUcoU0RSQU0wLE1DQ1IpLCAweDEzYjA2MDAwKTsKLSAgaW9iYXJyaWVyX3J3KCk7CisJLyogRGlzYWJsZSBtZW1vcnkKKwkgKi8KKwlvdXQzMiAoUkVHIChTRFJBTTAsIE1DQ1IpLCAweDEzYjA2MDAwKTsKKwlpb2JhcnJpZXJfcncgKCk7CiAjZW5kaWYKIAotICAgIC8qIE9ubHkgdGhlIGZpcnN0IG1lbW9yeSBiYW5rIGlzIGluaXRpYWxpc2VkIG5vdwotICAgICAqLwotICBpZiAoISBjcGM3MTBfY29tcHV0ZV9tY2VyKCYgbWNlciwgJiBiYW5rX3NpemUsIDApKQotICB7Ci0gICAgcHV0cygiVW5zdXBwb3J0ZWQgU0RSQU0gdHlwZSAhXG4iKTsKLSAgICBoYW5nKCk7Ci0gIH0KLSAgbWVtc2l6ZSArPSBiYW5rX3NpemU7CisJLyogT25seSB0aGUgZmlyc3QgbWVtb3J5IGJhbmsgaXMgaW5pdGlhbGlzZWQgbm93CisJICovCisJaWYgKCFjcGM3MTBfY29tcHV0ZV9tY2VyICgmbWNlciwgJmJhbmtfc2l6ZSwgMCkpIHsKKwkJcHV0cyAoIlVuc3VwcG9ydGVkIFNEUkFNIHR5cGUgIVxuIik7CisJCWhhbmcgKCk7CisJfQorCW1lbXNpemUgKz0gYmFua19zaXplOwogI2lmbmRlZiBDRkdfUkFNQk9PVAotICAgIC8qIEVuYWJsZSBiYW5rLCB6ZXJvIHN0YXJ0Ci0gICAgICovCi0gIG91dDMyKFJFRyhTRFJBTTAsIE1DRVIwKSwgbWNlciB8IDB4ODAwMDAwMDApOwotICBpb2JhcnJpZXJfcncoKTsKKwkvKiBFbmFibGUgYmFuaywgemVybyBzdGFydAorCSAqLworCW91dDMyIChSRUcgKFNEUkFNMCwgTUNFUjApLCBtY2VyIHwgMHg4MDAwMDAwMCk7CisJaW9iYXJyaWVyX3J3ICgpOwogI2VuZGlmCiAKICNpZm5kZWYgQ0ZHX1JBTUJPT1QKLSAgICAvKiBFbmFibGUgbWVtb3J5Ci0gICAgICovCi0gIG91dDMyKFJFRyhTRFJBTTAsIE1DQ1IpLCBpbjMyKFJFRyhTRFJBTTAsIE1DQ1IpKSB8IDB4ODAwMDAwMDApOworCS8qIEVuYWJsZSBtZW1vcnkKKwkgKi8KKwlvdXQzMiAoUkVHIChTRFJBTTAsIE1DQ1IpLCBpbjMyIChSRUcgKFNEUkFNMCwgTUNDUikpIHwgMHg4MDAwMDAwMCk7CiAKLSAgICAvKiBXYWl0IHVudGlsIGluaXRpYWxpc2F0aW9uIGZpbmlzaGVkCi0gICAgICovCi0gIHdoaWxlICghIChpbjMyIChSRUcoU0RSQU0wLCBNQ0NSKSkgJiAweDIwMDAwMDAwKSkKLSAgewotICAgIGlvYmFycmllcl9ydygpOwotICB9CisJLyogV2FpdCB1bnRpbCBpbml0aWFsaXNhdGlvbiBmaW5pc2hlZAorCSAqLworCXdoaWxlICghKGluMzIgKFJFRyAoU0RSQU0wLCBNQ0NSKSkgJiAweDIwMDAwMDAwKSkgeworCQlpb2JhcnJpZXJfcncgKCk7CisJfQogCi0gICAgLyogQ2xlYXIgTWVtb3J5IEVycm9yIFN0YXR1cyBhbmQgQWRkcmVzcyByZWdpc3RlcnMKLSAgICAgKi8KLSAgb3V0MzIoUkVHKFNEUkFNMCwgTUVTUiksIDApOwotICBvdXQzMihSRUcoU0RSQU0wLCBNRUFSKSwgMCk7Ci0gIGlvYmFycmllcl9ydygpOworCS8qIENsZWFyIE1lbW9yeSBFcnJvciBTdGF0dXMgYW5kIEFkZHJlc3MgcmVnaXN0ZXJzCisJICovCisJb3V0MzIgKFJFRyAoU0RSQU0wLCBNRVNSKSwgMCk7CisJb3V0MzIgKFJFRyAoU0RSQU0wLCBNRUFSKSwgMCk7CisJaW9iYXJyaWVyX3J3ICgpOwogCi0gICAgLyogRUNDIGlzIG5vdCBjb25maWd1cmVkIG5vdwotICAgICAqLworCS8qIEVDQyBpcyBub3QgY29uZmlndXJlZCBub3cKKwkgKi8KICNlbmRpZgogCi0gICAgLyogTWVtb3J5IHNpemUgY291bnRlcgotICAgICAqLwotICBvdXQzMihSRUcoQ1BDMCwgUkdCQU4xKSwgbWVtc2l6ZSk7CisJLyogTWVtb3J5IHNpemUgY291bnRlcgorCSAqLworCW91dDMyIChSRUcgKENQQzAsIFJHQkFOMSksIG1lbXNpemUpOwogCi0gIHJldHVybiBtZW1zaXplOworCXJldHVybiBtZW1zaXplOwogfQogCi1zdGF0aWMgaW50IGNwYzcxMF9jb21wdXRlX21jZXIgKAotICB1MzIgKgkJCW1jZXIsCi0gIHVuc2lnbmVkIGxvbmcJKglzaXplLAotICB1bnNpZ25lZCBpbnQJCXNkcmFtKQorc3RhdGljIGludCBjcGM3MTBfY29tcHV0ZV9tY2VyICh1MzIgKiBtY2VyLCB1bnNpZ25lZCBsb25nICpzaXplLCB1bnNpZ25lZCBpbnQgc2RyYW0pCiB7Ci0gIHU4CQkJcm93czsKLSAgdTgJCQljb2xzOwotICB1OAkJCWJhbmtzMjsKLSAgdW5zaWduZWQgaW50CQlsaW5lczsKLSAgdTMyCQkJbWMgPSAwOwotICB1bnNpZ25lZCBpbnQJCWk7Ci0gIGNwYzcxMF9tZW1fb3JnX3QgKglvcmcgPSAwOworCXU4IHJvd3M7CisJdTggY29sczsKKwl1OCBiYW5rczI7CisJdW5zaWduZWQgaW50IGxpbmVzOworCXUzMiBtYyA9IDA7CisJdW5zaWduZWQgaW50IGk7CisJY3BjNzEwX21lbV9vcmdfdCAqb3JnID0gMDsKIAorCWlmICghaTJjX3Jlc2V0ICgpKSB7CisJCXB1dHMgKCJDYW4ndCByZXNldCBJMkMhXG4iKTsKKwkJaGFuZyAoKTsKKwl9CiAKLSAgaWYgKCEgaTJjX3Jlc2V0KCkpCi0gIHsKLSAgICBwdXRzKCJDYW4ndCByZXNldCBJMkMhXG4iKTsKLSAgICBoYW5nKCk7Ci0gIH0KKwlpZiAoIWNwYzcxMF9lZXByb21fY2hlY2tzdW0gKHNkcmFtKSkgeworCQlwdXRzICgiSW52YWxpZCBFRVBST00gY2hlY2tzdW0gIVxuIik7CisJCWhhbmcgKCk7CisJfQogCi0gIGlmICghIGNwYzcxMF9lZXByb21fY2hlY2tzdW0oc2RyYW0pKQotICB7Ci0gICAgcHV0cygiSW52YWxpZCBFRVBST00gY2hlY2tzdW0gIVxuIik7Ci0gICAgaGFuZygpOwotICB9CisJcm93cyA9IGNwYzcxMF9lZXByb21fcmVhZCAoc2RyYW0sIDMpOworCWNvbHMgPSBjcGM3MTBfZWVwcm9tX3JlYWQgKHNkcmFtLCA0KTsKKwkvKiBDYW4gYmUgMiBvciA0IGJhbmtzOyBkaXZpZGUgYnkgMgorCSAqLworCWJhbmtzMiA9IGNwYzcxMF9lZXByb21fcmVhZCAoc2RyYW0sIDE3KSAvIDI7CiAKLSAgcm93cyAgID0gY3BjNzEwX2VlcHJvbV9yZWFkKHNkcmFtLCAzKTsKLSAgY29scyAgID0gY3BjNzEwX2VlcHJvbV9yZWFkKHNkcmFtLCA0KTsKLSAgICAvKiBDYW4gYmUgMiBvciA0IGJhbmtzOyBkaXZpZGUgYnkgMgotICAgICAqLwotICBiYW5rczIgPSBjcGM3MTBfZWVwcm9tX3JlYWQoc2RyYW0sIDE3KSAvIDI7CisJbGluZXMgPSByb3dzICsgY29scyArIGJhbmtzMjsKIAotICBsaW5lcyA9IHJvd3MgKyBjb2xzICsgYmFua3MyOworCWlmIChsaW5lcyA8IDE4IHx8IGxpbmVzID4gMjYpIHsKKwkJLyogVW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbgorCQkgKi8KKwkJcmV0dXJuIDA7CisJfQogCi0gIGlmIChsaW5lcyA8IDE4IHx8IGxpbmVzID4gMjYpCi0gIHsKLSAgICAgIC8qIFVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAqLwotICAgIHJldHVybiAwOwotICB9CisJbWMgfD0gY3BjNzEwX21jZXJfbWVtW2xpbmVzIC0gMThdIDw8IDY7CiAKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChjcGM3MTBfbWVtX29yZykgLyBzaXplb2YgKGNwYzcxMF9tZW1fb3JnX3QpOworCSAgICAgaSsrKSB7CisJCWNwYzcxMF9tZW1fb3JnX3QgKmNvcmcgPSBjcGM3MTBfbWVtX29yZyArIGk7CiAKLSAgbWMgfD0gY3BjNzEwX21jZXJfbWVtIFtsaW5lcyAtIDE4XSA8PCA2OworCQlpZiAoY29yZy0+cm93cyA9PSByb3dzICYmIGNvcmctPmNvbHMgPT0gY29scworCQkgICAgJiYgY29yZy0+YmFua3MyID09IGJhbmtzMikgeworCQkJb3JnID0gY29yZzsKIAotICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGNwYzcxMF9tZW1fb3JnKSAvIHNpemVvZihjcGM3MTBfbWVtX29yZ190KTsgaSsrKQotICB7Ci0gICAgY3BjNzEwX21lbV9vcmdfdCAqCWNvcmcgPSBjcGM3MTBfbWVtX29yZyArIGk7CisJCQlicmVhazsKKwkJfQorCX0KIAotICAgIGlmIChjb3JnLT5yb3dzID09IHJvd3MgJiYgY29yZy0+Y29scyA9PSBjb2xzICYmIGNvcmctPmJhbmtzMiA9PSBiYW5rczIpCi0gICAgewotICAgICAgb3JnID0gY29yZzsKKwlpZiAoIW9yZykgeworCQkvKiBVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uCisJCSAqLworCQlyZXR1cm4gMDsKKwl9CiAKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQorCW1jIHw9ICh1MzIpIG9yZy0+b3JnIDw8IDI7CiAKLSAgaWYgKCEgb3JnKQotICB7Ci0gICAgICAvKiBVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uCi0gICAgICAgKi8KLSAgICByZXR1cm4gMDsKLSAgfQorCS8qIFN1cHBvcnRlZCBjb25maWd1cmF0aW9uCisJICovCisJKm1jZXIgPSBtYzsKKwkqc2l6ZSA9IDFsIDw8IChsaW5lcyArIDQpOwogCi0gIG1jIHw9ICh1MzIpIG9yZy0+b3JnIDw8IDI7Ci0KLSAgICAvKiBTdXBwb3J0ZWQgY29uZmlndXJhdGlvbgotICAgICAqLwotICAqbWNlciA9IG1jOwotICAqc2l6ZSA9IDFsIDw8IChsaW5lcyArIDQpOwotCi0gIHJldHVybiAxOworCXJldHVybiAxOwogfQogCi1zdGF0aWMgaW50IGNwYzcxMF9lZXByb21fY2hlY2tzdW0gKAotICB1bnNpZ25lZCBpbnQJCXNkcmFtKQorc3RhdGljIGludCBjcGM3MTBfZWVwcm9tX2NoZWNrc3VtICh1bnNpZ25lZCBpbnQgc2RyYW0pCiB7Ci0gIHU4CQkJc3VtID0gMDsKLSAgdW5zaWduZWQgaW50CQlpOworCXU4IHN1bSA9IDA7CisJdW5zaWduZWQgaW50IGk7CiAKLSAgZm9yIChpID0gMDsgaSA8IDYzOyBpKyspCi0gIHsKLSAgICBzdW0gKz0gY3BjNzEwX2VlcHJvbV9yZWFkKHNkcmFtLCBpKTsKLSAgfQorCWZvciAoaSA9IDA7IGkgPCA2MzsgaSsrKSB7CisJCXN1bSArPSBjcGM3MTBfZWVwcm9tX3JlYWQgKHNkcmFtLCBpKTsKKwl9CiAKLSAgcmV0dXJuIHN1bSA9PSBjcGM3MTBfZWVwcm9tX3JlYWQoc2RyYW0sIDYzKTsKKwlyZXR1cm4gc3VtID09IGNwYzcxMF9lZXByb21fcmVhZCAoc2RyYW0sIDYzKTsKIH0KIAotc3RhdGljIHU4IGNwYzcxMF9lZXByb21fcmVhZCAoCi0gIHVuc2lnbmVkIGludAkJc2RyYW0sCi0gIHVuc2lnbmVkIGludAkJb2Zmc2V0KQorc3RhdGljIHU4IGNwYzcxMF9lZXByb21fcmVhZCAodW5zaWduZWQgaW50IHNkcmFtLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQogewotICB1OAkJCWRldiA9IChzZHJhbSA8PCAxKSB8IDB4YTA7Ci0gIHU4CQkJZGF0YTsKKwl1OCBkZXYgPSAoc2RyYW0gPDwgMSkgfCAweGEwOworCXU4IGRhdGE7CiAKLSAgaWYgKCEgaTJjX3JlYWRfYnl0ZSgmIGRhdGEsIGRldixvZmZzZXQpKQotICB7Ci0gICAgcHV0cygiSTJDIGVycm9yICFcbiIpOwotICAgIGhhbmcoKTsKLSAgfQorCWlmICghaTJjX3JlYWRfYnl0ZSAoJmRhdGEsIGRldiwgb2Zmc2V0KSkgeworCQlwdXRzICgiSTJDIGVycm9yICFcbiIpOworCQloYW5nICgpOworCX0KIAotICByZXR1cm4gZGF0YTsKKwlyZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL3BjaXBwYzIvZnBnYV9zZXJpYWwuaCBiL2JvYXJkL3BjaXBwYzIvZnBnYV9zZXJpYWwuaAppbmRleCA5MmM5Y2RkLi41Mjc1MDE0IDEwMDY0NAotLS0gYS9ib2FyZC9wY2lwcGMyL2ZwZ2Ffc2VyaWFsLmgKKysrIGIvYm9hcmQvcGNpcHBjMi9mcGdhX3NlcmlhbC5oCkBAIC0yNSwxMCArMjUsMTAgQEAKICNkZWZpbmUgX0ZQR0FfU0VSSUFMX0hfCiAKIGV4dGVybiB2b2lkCWZwZ2Ffc2VyaWFsX2luaXQJKGludCk7Ci1leHRlcm4gdm9pZAlmcGdhX3NlcmlhbF9wdXRjIAkoY2hhcik7Ci1leHRlcm4gdm9pZAlmcGdhX3NlcmlhbF9wdXRzIAkoY29uc3QgY2hhciAqKTsKLWV4dGVybiBpbnQJZnBnYV9zZXJpYWxfZ2V0YyAJKHZvaWQpOwotZXh0ZXJuIGludAlmcGdhX3NlcmlhbF90c3RjIAkodm9pZCk7Ci1leHRlcm4gdm9pZAlmcGdhX3NlcmlhbF9zZXRicmcgCSh2b2lkKTsKK2V4dGVybiB2b2lkCWZwZ2Ffc2VyaWFsX3B1dGMJKGNoYXIpOworZXh0ZXJuIHZvaWQJZnBnYV9zZXJpYWxfcHV0cwkoY29uc3QgY2hhciAqKTsKK2V4dGVybiBpbnQJZnBnYV9zZXJpYWxfZ2V0Ywkodm9pZCk7CitleHRlcm4gaW50CWZwZ2Ffc2VyaWFsX3RzdGMJKHZvaWQpOworZXh0ZXJuIHZvaWQJZnBnYV9zZXJpYWxfc2V0YnJnCSh2b2lkKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9wY2lwcGMyL3BjaXBwYzIuaCBiL2JvYXJkL3BjaXBwYzIvcGNpcHBjMi5oCmluZGV4IDM4MjBiYmUuLmExMzY2ZWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BjaXBwYzIvcGNpcHBjMi5oCisrKyBiL2JvYXJkL3BjaXBwYzIvcGNpcHBjMi5oCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogZXh0ZXJuIHUzMglwY2lwcGMyX3NkcmFtX3NpemUJCSh2b2lkKTsKIAotZXh0ZXJuIHZvaWQgCXBjaXBwYzJfZnBnYV9pbml0CQkodm9pZCk7CitleHRlcm4gdm9pZAlwY2lwcGMyX2ZwZ2FfaW5pdAkJKHZvaWQpOwogCi1leHRlcm4gdm9pZCAJcGNpcHBjMl9jcGNpMzI2NF9pbml0CSh2b2lkKTsKK2V4dGVybiB2b2lkCXBjaXBwYzJfY3BjaTMyNjRfaW5pdAkodm9pZCk7CiAKLWV4dGVybiB2b2lkIAljcGM3MTBfcGNpX2luaXQJCQkodm9pZCk7CitleHRlcm4gdm9pZAljcGM3MTBfcGNpX2luaXQJCQkodm9pZCk7CiBleHRlcm4gdm9pZAljcGM3MTBfcGNpX2VuYWJsZV90aW1lb3V0CSh2b2lkKTsKIAogZXh0ZXJuIHVuc2lnbmVkIGxvbmcKZGlmZiAtLWdpdCBhL2JvYXJkL3BjaXBwYzIvc2NvbnNvbGUuaCBiL2JvYXJkL3BjaXBwYzIvc2NvbnNvbGUuaAppbmRleCA0MGZkNzViLi41ZDg1MGE1IDEwMDY0NAotLS0gYS9ib2FyZC9wY2lwcGMyL3Njb25zb2xlLmgKKysrIGIvYm9hcmQvcGNpcHBjMi9zY29uc29sZS5oCkBAIC0yNiwyNCArMjYsMjMgQEAKIAogI2luY2x1ZGUgPGNvbmZpZy5oPgogCi10eXBlZGVmIHN0cnVjdCBzY29uc29sZV9idWZmZXJfcwotewotICB1bnNpZ25lZCBsb25nCQlzaXplOwotICB1bnNpZ25lZCBsb25nCQltYXhfc2l6ZTsKLSAgdW5zaWduZWQgbG9uZyAJcG9zOwotICB1bnNpZ25lZCBsb25nIAliYXVkOwotICBjaGFyCQkJZGF0YSBbMV07Cit0eXBlZGVmIHN0cnVjdCBzY29uc29sZV9idWZmZXJfcyB7CisJdW5zaWduZWQgbG9uZyBzaXplOworCXVuc2lnbmVkIGxvbmcgbWF4X3NpemU7CisJdW5zaWduZWQgbG9uZyBwb3M7CisJdW5zaWduZWQgbG9uZyBiYXVkOworCWNoYXIgZGF0YVsxXTsKIH0gc2NvbnNvbGVfYnVmZmVyX3Q7CiAKICNkZWZpbmUgU0NPTlNPTEVfQlVGRkVSCQkoKHNjb25zb2xlX2J1ZmZlcl90ICopIENGR19TQ09OU09MRV9BRERSKQogCi1leHRlcm4gdm9pZAkoKiBzY29uc29sZV9wdXRjKSAJKGNoYXIpOwotZXh0ZXJuIHZvaWQJKCogc2NvbnNvbGVfcHV0cykgCShjb25zdCBjaGFyICopOwotZXh0ZXJuIGludAkoKiBzY29uc29sZV9nZXRjKSAJKHZvaWQpOwotZXh0ZXJuIGludAkoKiBzY29uc29sZV90c3RjKSAJKHZvaWQpOwotZXh0ZXJuIHZvaWQJKCogc2NvbnNvbGVfc2V0YnJnKSAJKHZvaWQpOworZXh0ZXJuIHZvaWQJKCogc2NvbnNvbGVfcHV0YykJKGNoYXIpOworZXh0ZXJuIHZvaWQJKCogc2NvbnNvbGVfcHV0cykJKGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50CSgqIHNjb25zb2xlX2dldGMpCSh2b2lkKTsKK2V4dGVybiBpbnQJKCogc2NvbnNvbGVfdHN0YykJKHZvaWQpOworZXh0ZXJuIHZvaWQJKCogc2NvbnNvbGVfc2V0YnJnKQkodm9pZCk7CiAKIGV4dGVybiB2b2lkCXNjb25zb2xlX2ZsdXNoCQkodm9pZCk7Ci1leHRlcm4gaW50IAlzY29uc29sZV9nZXRfYmF1ZHJhdGUgCSh2b2lkKTsKK2V4dGVybiBpbnQJc2NvbnNvbGVfZ2V0X2JhdWRyYXRlCSh2b2lkKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9wY2lwcGMyL3UtYm9vdC5sZHMgYi9ib2FyZC9wY2lwcGMyL3UtYm9vdC5sZHMKaW5kZXggMTk1OTgwNy4uZWJiMWI2ZCAxMDA2NDQKLS0tIGEvYm9hcmQvcGNpcHBjMi91LWJvb3QubGRzCisrKyBiL2JvYXJkL3BjaXBwYzIvdS1ib290LmxkcwpAQCAtNDAsMTEgKzQwLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3BjczQ0MGVwL3BjczQ0MGVwLmMgYi9ib2FyZC9wY3M0NDBlcC9wY3M0NDBlcC5jCmluZGV4IDk2YWRiYzkuLjYyMDAwMGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BjczQ0MGVwL3BjczQ0MGVwLmMKKysrIGIvYm9hcmQvcGNzNDQwZXAvcGNzNDQwZXAuYwpAQCAtNzk4LDggKzc5OCw4IEBACiB9CiAKIFVfQk9PVF9DTUQoCi0gCWxlZCwJMiwJMSwJZG9fbGVkLAotIAkibGVkIFtiaXRtYXNrXSAgIC0gc2V0IHRoZSBESUFHLUxFRFxuIiwKKwlsZWQsCTIsCTEsCWRvX2xlZCwKKwkibGVkIFtiaXRtYXNrXSAgIC0gc2V0IHRoZSBESUFHLUxFRFxuIiwKIAkiW2JpdG1hc2tdIDB4MDEgPSBESUFHIDEgb25cbiIKIAkiICAgICAgICAgICAgICAweDAyID0gRElBRyAyIG9uXG4iCiAJIiAgICAgICAgICAgICAgMHgwNCA9IERJQUcgMyBvblxuIgpAQCAtODYwLDggKzg2MCw4IEBACiB9CiAKIFVfQk9PVF9DTUQoCi0gCXNoYTEsCTQsCTEsCWRvX3NoYTEsCi0gCSJzaGExICAgIC0gY2FsY3VsYXRlIHRoZSBTSEExIFN1bVxuIiwKKwlzaGExLAk0LAkxLAlkb19zaGExLAorCSJzaGExICAgIC0gY2FsY3VsYXRlIHRoZSBTSEExIFN1bVxuIiwKIAkiYWRkcmVzcyBsZW4gW2FkZHJdICBjYWxjdWxhdGUgdGhlIFNIQTEgc3VtIFtzYXZlIGF0IGFkZHJdXG4iCiAJIiAgICAgLXAgY2FsY3VsYXRlIHRoZSBTSEExIHN1bSBmcm9tIHRoZSBVLUJvb3QgaW1hZ2UgaW4gZmxhc2ggYW5kIHByaW50XG4iCiAJIiAgICAgLWMgY2hlY2sgdGhlIFUtQm9vdCBpbWFnZSBpbiBmbGFzaFxuIgpkaWZmIC0tZ2l0IGEvYm9hcmQvcGNzNDQwZXAvdS1ib290LmxkcyBiL2JvYXJkL3BjczQ0MGVwL3UtYm9vdC5sZHMKaW5kZXggMGE4ZWQ2Ny4uZWQ2MTM1OSAxMDA2NDQKLS0tIGEvYm9hcmQvcGNzNDQwZXAvdS1ib290LmxkcworKysgYi9ib2FyZC9wY3M0NDBlcC91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcG01MjAvZmxhc2guYyBiL2JvYXJkL3BtNTIwL2ZsYXNoLmMKaW5kZXggMzhmNTc5Yi4uNDMwMWI4YyAxMDA2NDQKLS0tIGEvYm9hcmQvcG01MjAvZmxhc2guYworKysgYi9ib2FyZC9wbTUyMC9mbGFzaC5jCkBAIC0zNSwzNiArMzUsMzYgQEAKICN1bmRlZiBGTEFTSF9QT1JUX1dJRFRIMTYKIAogI2lmZGVmIEZMQVNIX1BPUlRfV0lEVEgxNgotI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRICQl1c2hvcnQKLSNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSFYJCXZ1X3Nob3J0Ci0jZGVmaW5lIFNXQVAoeCkgICAgICAgICAgICAgICAJCSh4KQorI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRICXVzaG9ydAorI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgl2dV9zaG9ydAorI2RlZmluZSBTV0FQKHgpCQkJKHgpCiAjZWxzZQotI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRICQl1bG9uZwotI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgkJdnVfbG9uZwotI2RlZmluZSBTV0FQKHgpICAgICAgICAgICAgICAgCQkoeCkKKyNkZWZpbmUgRkxBU0hfUE9SVF9XSURUSAl1bG9uZworI2RlZmluZSBGTEFTSF9QT1JUX1dJRFRIVgl2dV9sb25nCisjZGVmaW5lIFNXQVAoeCkJCQkoeCkKICNlbmRpZgogCiAvKiBJbnRlbC1jb21wYXRpYmxlIGZsYXNoIElEICovCi0jZGVmaW5lIElOVEVMX0NPTVBBVCAgMHgwMDg5MDA4OQotI2RlZmluZSBJTlRFTF9BTFQgICAgIDB4MDBCMDAwQjAKKyNkZWZpbmUgSU5URUxfQ09NUEFUCQkweDAwODkwMDg5CisjZGVmaW5lIElOVEVMX0FMVAkJMHgwMEIwMDBCMAogCiAvKiBJbnRlbC1jb21wYXRpYmxlIGZsYXNoIGNvbW1hbmRzICovCi0jZGVmaW5lIElOVEVMX1BST0dSQU0gMHgwMDEwMDAxMAotI2RlZmluZSBJTlRFTF9FUkFTRSAgIDB4MDAyMDAwMjAKLSNkZWZpbmUgSU5URUxfQ0xFQVIgICAweDAwNTAwMDUwCi0jZGVmaW5lIElOVEVMX0xPQ0tCSVQgMHgwMDYwMDA2MAotI2RlZmluZSBJTlRFTF9QUk9URUNUIDB4MDAwMTAwMDEKLSNkZWZpbmUgSU5URUxfU1RBVFVTICAweDAwNzAwMDcwCi0jZGVmaW5lIElOVEVMX1JFQURJRCAgMHgwMDkwMDA5MAotI2RlZmluZSBJTlRFTF9DT05GSVJNIDB4MDBEMDAwRDAKLSNkZWZpbmUgSU5URUxfUkVTRVQgICAweEZGRkZGRkZGCisjZGVmaW5lIElOVEVMX1BST0dSQU0JCTB4MDAxMDAwMTAKKyNkZWZpbmUgSU5URUxfRVJBU0UJCTB4MDAyMDAwMjAKKyNkZWZpbmUgSU5URUxfQ0xFQVIJCTB4MDA1MDAwNTAKKyNkZWZpbmUgSU5URUxfTE9DS0JJVAkJMHgwMDYwMDA2MAorI2RlZmluZSBJTlRFTF9QUk9URUNUCQkweDAwMDEwMDAxCisjZGVmaW5lIElOVEVMX1NUQVRVUwkJMHgwMDcwMDA3MAorI2RlZmluZSBJTlRFTF9SRUFESUQJCTB4MDA5MDAwOTAKKyNkZWZpbmUgSU5URUxfQ09ORklSTQkJMHgwMEQwMDBEMAorI2RlZmluZSBJTlRFTF9SRVNFVAkJMHhGRkZGRkZGRgogCiAvKiBJbnRlbC1jb21wYXRpYmxlIGZsYXNoIHN0YXR1cyBiaXRzICovCi0jZGVmaW5lIElOVEVMX0ZJTklTSEVEIDB4MDA4MDAwODAKLSNkZWZpbmUgSU5URUxfT0sgICAgICAgMHgwMDgwMDA4MAorI2RlZmluZSBJTlRFTF9GSU5JU0hFRAkJMHgwMDgwMDA4MAorI2RlZmluZSBJTlRFTF9PSwkJMHgwMDgwMDA4MAogCi0jZGVmaW5lIEZQVwkgICBGTEFTSF9QT1JUX1dJRFRICi0jZGVmaW5lIEZQV1YgICBGTEFTSF9QT1JUX1dJRFRIVgorI2RlZmluZSBGUFcJRkxBU0hfUE9SVF9XSURUSAorI2RlZmluZSBGUFdWCUZMQVNIX1BPUlRfV0lEVEhWCiAKICNkZWZpbmUgbWIoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOiA6IDogIm1lbW9yeSIpCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3BtODU0L3BtODU0LmMgYi9ib2FyZC9wbTg1NC9wbTg1NC5jCmluZGV4IDVlN2JmMzQuLjVkMzI1MjUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BtODU0L3BtODU0LmMKKysrIGIvYm9hcmQvcG04NTQvcG04NTQuYwpAQCAtOTMsNyArOTMsNyBAQAogCSAgICB1ZGVsYXkgKDIwMCk7CiAJICAgIHdoaWxlIChndXItPmRkcmRsbGNyICE9IDB4ODEwMDAxMDApCiAJICAgIHsKLQkgICAgCWd1ci0+ZGV2ZGlzciA9IGd1ci0+ZGV2ZGlzciB8IDB4MDAwMTAwMDA7CisJCWd1ci0+ZGV2ZGlzciA9IGd1ci0+ZGV2ZGlzciB8IDB4MDAwMTAwMDA7CiAJCWFzbSgic3luYztpc3luYzttc3luYyIpOwogCQlmb3IgKGk9MDsgaTx4OyBpKyspCiAJCSAgICA7CmRpZmYgLS1naXQgYS9ib2FyZC9wbTg1NC91LWJvb3QubGRzIGIvYm9hcmQvcG04NTQvdS1ib290LmxkcwppbmRleCAwNzVkOGYzLi5mMjAwODEwIDEwMDY0NAotLS0gYS9ib2FyZC9wbTg1NC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3BtODU0L3UtYm9vdC5sZHMKQEAgLTQzLDExICs0MywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9wbTg1Ni9wbTg1Ni5jIGIvYm9hcmQvcG04NTYvcG04NTYuYwppbmRleCA3OTJkMWU1Li42Mzg2YWJjIDEwMDY0NAotLS0gYS9ib2FyZC9wbTg1Ni9wbTg1Ni5jCisrKyBiL2JvYXJkL3BtODU2L3BtODU2LmMKQEAgLTI0OCw3ICsyNDgsNyBAQAogCSAgICB1ZGVsYXkgKDIwMCk7CiAJICAgIHdoaWxlIChndXItPmRkcmRsbGNyICE9IDB4ODEwMDAxMDApCiAJICAgIHsKLQkgICAgCWd1ci0+ZGV2ZGlzciA9IGd1ci0+ZGV2ZGlzciB8IDB4MDAwMTAwMDA7CisJCWd1ci0+ZGV2ZGlzciA9IGd1ci0+ZGV2ZGlzciB8IDB4MDAwMTAwMDA7CiAJCWFzbSgic3luYztpc3luYzttc3luYyIpOwogCQlmb3IgKGk9MDsgaTx4OyBpKyspCiAJCSAgICA7CmRpZmYgLS1naXQgYS9ib2FyZC9wbTg1Ni91LWJvb3QubGRzIGIvYm9hcmQvcG04NTYvdS1ib290LmxkcwppbmRleCBkNTJhMzI1Li4wMTcyN2QxIDEwMDY0NAotLS0gYS9ib2FyZC9wbTg1Ni91LWJvb3QubGRzCisrKyBiL2JvYXJkL3BtODU2L3UtYm9vdC5sZHMKQEAgLTQ0LDExICs0NCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9wbjYyL3BuNjIuaCBiL2JvYXJkL3BuNjIvcG42Mi5oCmluZGV4IDdiZGEwYWQuLmYzNTZhNDAgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BuNjIvcG42Mi5oCisrKyBiL2JvYXJkL3BuNjIvcG42Mi5oCkBAIC0yNiw4ICsyNiw4IEBACiAvKgogICogRGVmaW5pdGlvbnMgZm9yIHRoZSBJbnRlbCBCcmlkZ2UgMjE1NTQgb3IgMjE1NTUuCiAgKi8KLSNkZWZpbmUgSTIxNTVYX1ZQRF9BRERSIAkweGU2Ci0jZGVmaW5lIEkyMTU1WF9WUERfREFUQSAJMHhlOAorI2RlZmluZSBJMjE1NVhfVlBEX0FERFIJCTB4ZTYKKyNkZWZpbmUgSTIxNTVYX1ZQRF9EQVRBCQkweGU4CiAKICNkZWZpbmUgSTIxNTVYX1ZQRF9TVEFSVAkweDgwCiAjZGVmaW5lIEkyMTU1WF9WUERfU05fU1RBUlQJMHg4MApAQCAtNjUsMTcgKzY1LDE3IEBACiAgKiBEZWZpbml0aW9ucyBmb3IgYm9vdCBwcm90b2NvbCB1c2luZyBTY3JhdGNocGFkIHJlZ2lzdGVycy4KICAqLwogI2RlZmluZSBCT09UX0RPTkUJCTAKLSNkZWZpbmUgQk9PVF9ET05FX0NMRUFSICAJICAweDAwZGVhZDAwCi0jZGVmaW5lIEJPT1RfRE9ORV9FUlJPUiAgCSAgMHhiYWQwZGVhZAotI2RlZmluZSBCT09UX0RPTkVfVV9CT09UIAkgIDB4MTIzNDU2NzgKLSNkZWZpbmUgQk9PVF9ET05FX0xJTlVYICAgCSAgMHg4NzY1NDMyMQotI2RlZmluZSBCT09UX0NNRCAJCTEKLSNkZWZpbmUgQk9PVF9DTURfTU9WRSAgIAkgIDB4MQotI2RlZmluZSBCT09UX0NNRF9CT09UCQkgIDB4MgorI2RlZmluZSBCT09UX0RPTkVfQ0xFQVIJCTB4MDBkZWFkMDAKKyNkZWZpbmUgQk9PVF9ET05FX0VSUk9SCQkweGJhZDBkZWFkCisjZGVmaW5lIEJPT1RfRE9ORV9VX0JPT1QJMHgxMjM0NTY3OAorI2RlZmluZSBCT09UX0RPTkVfTElOVVgJCTB4ODc2NTQzMjEKKyNkZWZpbmUgQk9PVF9DTUQJCTEKKyNkZWZpbmUgQk9PVF9DTURfTU9WRQkJMHgxCisjZGVmaW5lIEJPT1RfQ01EX0JPT1QJCTB4MgogI2RlZmluZSBCT09UX0RBVEEJCTIKICNkZWZpbmUgQk9PVF9QUk9UTwkJMwotI2RlZmluZSBCT09UX1BST1RPX1JFQURZCSAgMHgyMzQ1Njc4OQotI2RlZmluZSBCT09UX1BST1RPX0NMRUFSCSAgMHgwMDAwMDAwMAorI2RlZmluZSBCT09UX1BST1RPX1JFQURZCTB4MjM0NTY3ODkKKyNkZWZpbmUgQk9PVF9QUk9UT19DTEVBUgkweDAwMDAwMDAwCiAjZGVmaW5lIEJPT1RfU1RBVFVTCQk0CiAKIC8qCkBAIC0xNDUsMTUgKzE0NSwxNSBAQAogLyoKICAqIEZvcndhcmQgZGVjbGFyYXRpb25zCiAgKi8KLWludCAgaTIxNTV4X2luaXQgICAgICAgICAodm9pZCk7CitpbnQgIGkyMTU1eF9pbml0CSAodm9pZCk7CiB2b2lkIGkyMTU1eF93cml0ZV9zY3JhcGFkKGludCBpZHgsIHUzMiB2YWwpOwogdTMyICBpMjE1NXhfcmVhZF9zY3JhcGFkIChpbnQgaWR4KTsKIHZvaWQgaTIxNTV4X3NldF9iYXJfYmFzZSAoaW50IGJhciwgdTMyIGFkZHIpOwotaW50ICBpMjE1NXhfcmVhZF92cGQgICAgIChpbnQgb2Zmc2V0LCBpbnQgc2l6ZSwgdW5zaWduZWQgY2hhciAqZGF0YSk7CitpbnQgIGkyMTU1eF9yZWFkX3ZwZAkgKGludCBvZmZzZXQsIGludCBzaXplLCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKIAogaW50ICBhbTc5Yzk1eF9pbml0CSAodm9pZCk7CiAKLXZvaWQgc2V0X2xlZCAgICAgICAgICAgICAodW5zaWduZWQgaW50IG51bWJlciwgdW5zaWduZWQgaW50IGZ1bmN0aW9uKTsKK3ZvaWQgc2V0X2xlZAkJICh1bnNpZ25lZCBpbnQgbnVtYmVyLCB1bnNpZ25lZCBpbnQgZnVuY3Rpb24pOwogdm9pZCBmYXRhbF9lcnJvcgkgKHVuc2lnbmVkIGludCBlcnJvcl9jb2RlKTsKIHZvaWQgc2hvd19zdGFydHVwX3BoYXNlICAoaW50IHBoYXNlKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvcHBtYzd4eC91LWJvb3QubGRzIGIvYm9hcmQvcHBtYzd4eC91LWJvb3QubGRzCmluZGV4IDMyMzEzMjUuLjUyMzliMzUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3BwbWM3eHgvdS1ib290LmxkcworKysgYi9ib2FyZC9wcG1jN3h4L3UtYm9vdC5sZHMKQEAgLTM3LDExICszNywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9wcm9kcml2ZS9hbHByL3UtYm9vdC5sZHMgYi9ib2FyZC9wcm9kcml2ZS9hbHByL3UtYm9vdC5sZHMKaW5kZXggOWIxZDkxYy4uZDExNGJkNiAxMDA2NDQKLS0tIGEvYm9hcmQvcHJvZHJpdmUvYWxwci91LWJvb3QubGRzCisrKyBiL2JvYXJkL3Byb2RyaXZlL2FscHIvdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3Byb2RyaXZlL3AzbXgvbXBzYy5jIGIvYm9hcmQvcHJvZHJpdmUvcDNteC9tcHNjLmMKaW5kZXggZGE5NWNmYS4uMjQ5NGVjNiAxMDA2NDQKLS0tIGEvYm9hcmQvcHJvZHJpdmUvcDNteC9tcHNjLmMKKysrIGIvYm9hcmQvcHJvZHJpdmUvcDNteC9tcHNjLmMKQEAgLTQyMSw3ICs0MjEsNyBAQAogCQkJIChNVjY0NDYwX1NETUFfV0lOX0FDQ0VTU19GVUxMIDw8CiAJCQkgIChNVjY0NDYwX0NVTklUX0JBU0VfQUREUl9XSU5fMF9CSVQgKiAyKSkpOwogCi0JLyogU2V0dXAgTVBTQyBpbnRlcm5hbCBhZGRyZXNzIHNwYWNlIGJhc2UgYWRkcmVzcyAJKi8KKwkvKiBTZXR1cCBNUFNDIGludGVybmFsIGFkZHJlc3Mgc3BhY2UgYmFzZSBhZGRyZXNzCSovCiAJR1RfUkVHX1dSSVRFIChDVU5JVF9JTlRFUk5BTF9TUEFDRV9CQVNFX0FERFJfUkVHLCBDRkdfR1RfUkVHUyk7CiAKIAkvKiBubyBoaWdoIGFkZHJlc3MgcmVtYXAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvcHJvZHJpdmUvcDNteC9tcHNjLmggYi9ib2FyZC9wcm9kcml2ZS9wM214L21wc2MuaAppbmRleCBhMDNkMWNjLi5hYTBmODYyIDEwMDY0NAotLS0gYS9ib2FyZC9wcm9kcml2ZS9wM214L21wc2MuaAorKysgYi9ib2FyZC9wcm9kcml2ZS9wM214L21wc2MuaApAQCAtNjcsOSArNjcsOSBAQAogI2RlZmluZSBUWF9TVE9QICAgICAweDAwMDEwMDAwCiAjZGVmaW5lIFJYX0VOQUJMRSAgIDB4MDAwMDAwODAKIAotI2RlZmluZSBTRE1BX1JYX0FCT1JUIAkJICAoMSA8PCAxNSkKLSNkZWZpbmUgU0RNQV9UWF9BQk9SVCAJCSAgKDEgPDwgMzEpCi0jZGVmaW5lIE1QU0NfVFhfQUJPUlQgCQkgICgxIDw8IDcpCisjZGVmaW5lIFNETUFfUlhfQUJPUlQJCSAgKDEgPDwgMTUpCisjZGVmaW5lIFNETUFfVFhfQUJPUlQJCSAgKDEgPDwgMzEpCisjZGVmaW5lIE1QU0NfVFhfQUJPUlQJCSAgKDEgPDwgNykKICNkZWZpbmUgTVBTQ19SWF9BQk9SVCAgICAgICAgICAgICAoMSA8PCAyMykKICNkZWZpbmUgTVBTQ19FTlRFUl9IVU5UICAgICAgICAgICAoMSA8PCAzMSkKIApkaWZmIC0tZ2l0IGEvYm9hcmQvcHJvZHJpdmUvcDNteC91LWJvb3QubGRzIGIvYm9hcmQvcHJvZHJpdmUvcDNteC91LWJvb3QubGRzCmluZGV4IDI1ZTE2ZGUuLjFhOTU3NTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3Byb2RyaXZlL3AzbXgvdS1ib290LmxkcworKysgYi9ib2FyZC9wcm9kcml2ZS9wM214L3UtYm9vdC5sZHMKQEAgLTM3LDExICszNywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9wcm9kcml2ZS9wM3A0NDAvdS1ib290LmxkcyBiL2JvYXJkL3Byb2RyaXZlL3AzcDQ0MC91LWJvb3QubGRzCmluZGV4IDI4NDM2NDIuLjBlNmM4NzggMTAwNjQ0Ci0tLSBhL2JvYXJkL3Byb2RyaXZlL3AzcDQ0MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3Byb2RyaXZlL3AzcDQ0MC91LWJvb3QubGRzCkBAIC00MywxMSArNDMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcHVycGxlL3B1cnBsZS5jIGIvYm9hcmQvcHVycGxlL3B1cnBsZS5jCmluZGV4IDEzYTE0NTUuLjQ0MDFhYTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3B1cnBsZS9wdXJwbGUuYworKysgYi9ib2FyZC9wdXJwbGUvcHVycGxlLmMKQEAgLTMzLDI1ICszMywyNSBAQAogCiAjaW5jbHVkZSAic2NvbnNvbGUuaCIKIAotI2RlZmluZSBjYWNoZV91bnJvbGwoYmFzZSxvcCkJICAgICAgICAJXAotCV9fYXNtX18gX192b2xhdGlsZV9fKCIJICAgICAgICAgCVwKLQkJLnNldCBub3Jlb3JkZXI7CQkgICAgICAgIFwKLQkJLnNldCBtaXBzMzsJCSAgICAgICAgXAotCQljYWNoZSAlMSwgKCUwKTsJICAgICAgICAgICAgICAgIFwKLQkJLnNldCBtaXBzMDsJCQlcCi0JCS5zZXQgcmVvcmRlciIJCQlcCi0JCToJCQkJXAotCQk6ICJyIiAoYmFzZSksCQkJXAorI2RlZmluZSBjYWNoZV91bnJvbGwoYmFzZSxvcCkJCVwKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygiCQlcCisJCS5zZXQgbm9yZW9yZGVyOwkgICAgICAgIFwKKwkJLnNldCBtaXBzMzsJICAgICAgICBcCisJCWNhY2hlICUxLCAoJTApOwkJXAorCQkuc2V0IG1pcHMwOwkJXAorCQkuc2V0IHJlb3JkZXIiCQlcCisJCToJCQlcCisJCTogInIiIChiYXNlKSwJCVwKIAkJICAiaSIgKG9wKSk7CiAKIHR5cGVkZWYgdm9pZCAoKkZVTkNQVFIpKHVsb25nICpzb3VyY2UsIHVsb25nICpkZXN0aW5hdGlvbiwgdWxvbmcgbmxvbmdzKTsKIAogZXh0ZXJuIHZvaWQJYXNjX3NlcmlhbF9pbml0CQkodm9pZCk7Ci1leHRlcm4gdm9pZAlhc2Nfc2VyaWFsX3B1dGMgCShjaGFyKTsKLWV4dGVybiB2b2lkCWFzY19zZXJpYWxfcHV0cyAJKGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gaW50CWFzY19zZXJpYWxfZ2V0YyAJKHZvaWQpOwotZXh0ZXJuIGludAlhc2Nfc2VyaWFsX3RzdGMgCSh2b2lkKTsKLWV4dGVybiB2b2lkCWFzY19zZXJpYWxfc2V0YnJnIAkodm9pZCk7CitleHRlcm4gdm9pZAlhc2Nfc2VyaWFsX3B1dGMJKGNoYXIpOworZXh0ZXJuIHZvaWQJYXNjX3NlcmlhbF9wdXRzCShjb25zdCBjaGFyICopOworZXh0ZXJuIGludAlhc2Nfc2VyaWFsX2dldGMJKHZvaWQpOworZXh0ZXJuIGludAlhc2Nfc2VyaWFsX3RzdGMJKHZvaWQpOworZXh0ZXJuIHZvaWQJYXNjX3NlcmlhbF9zZXRicmcJKHZvaWQpOwogCiB2b2lkIF9tYWNoaW5lX3Jlc3RhcnQodm9pZCkKIHsKQEAgLTE4NCw4ICsxODQsNyBAQAogCXVsb25nIHRlbXAsdGVtcDE7CiAJdWxvbmcgKmRzdGVuZCA9IGRlc3RpbmF0aW9uICsgbmxvbmdzOwogCi0Jd2hpbGUgKGRlc3RpbmF0aW9uIDwgZHN0ZW5kKQotCXsKKwl3aGlsZSAoZGVzdGluYXRpb24gPCBkc3RlbmQpIHsKIAkJdGVtcCA9ICpzb3VyY2UrKzsKIAkJLyogZHVtbXkgcmVhZCBmcm9tIHNkcmFtICovCiAJCXRlbXAxID0gKih1bG9uZyAqKTB4YTAwMDAwMDA7CmRpZmYgLS1naXQgYS9ib2FyZC9wdXJwbGUvc2NvbnNvbGUuaCBiL2JvYXJkL3B1cnBsZS9zY29uc29sZS5oCmluZGV4IGQ0NDFmMzcuLmUxMzBhZDQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3B1cnBsZS9zY29uc29sZS5oCisrKyBiL2JvYXJkL3B1cnBsZS9zY29uc29sZS5oCkBAIC0yNiwyMSArMjYsMjAgQEAKIAogI2luY2x1ZGUgPGNvbmZpZy5oPgogCi10eXBlZGVmIHN0cnVjdCBzY29uc29sZV9idWZmZXJfcwotewotICB1bnNpZ25lZCBsb25nCQlzaXplOwotICB1bnNpZ25lZCBsb25nCQltYXhfc2l6ZTsKLSAgdW5zaWduZWQgbG9uZyAJcG9zOwotICBjaGFyCQkJZGF0YSBbMV07Cit0eXBlZGVmIHN0cnVjdCBzY29uc29sZV9idWZmZXJfcyB7CisJdW5zaWduZWQgbG9uZyBzaXplOworCXVuc2lnbmVkIGxvbmcgbWF4X3NpemU7CisJdW5zaWduZWQgbG9uZyBwb3M7CisJY2hhciBkYXRhWzFdOwogfSBzY29uc29sZV9idWZmZXJfdDsKIAogI2RlZmluZSBTQ09OU09MRV9CVUZGRVIJCSgoc2NvbnNvbGVfYnVmZmVyX3QgKikgQ0ZHX1NDT05TT0xFX0FERFIpCiAKLWV4dGVybiB2b2lkCSgqIHNjb25zb2xlX3B1dGMpIAkoY2hhcik7Ci1leHRlcm4gdm9pZAkoKiBzY29uc29sZV9wdXRzKSAJKGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gaW50CSgqIHNjb25zb2xlX2dldGMpIAkodm9pZCk7Ci1leHRlcm4gaW50CSgqIHNjb25zb2xlX3RzdGMpIAkodm9pZCk7Ci1leHRlcm4gdm9pZAkoKiBzY29uc29sZV9zZXRicmcpIAkodm9pZCk7CitleHRlcm4gdm9pZAkoKiBzY29uc29sZV9wdXRjKQkoY2hhcik7CitleHRlcm4gdm9pZAkoKiBzY29uc29sZV9wdXRzKQkoY29uc3QgY2hhciAqKTsKK2V4dGVybiBpbnQJKCogc2NvbnNvbGVfZ2V0YykJKHZvaWQpOworZXh0ZXJuIGludAkoKiBzY29uc29sZV90c3RjKQkodm9pZCk7CitleHRlcm4gdm9pZAkoKiBzY29uc29sZV9zZXRicmcpCSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQJc2NvbnNvbGVfZmx1c2gJCSh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvcHhhMjU1X2lkcC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9weGEyNTVfaWRwL2xvd2xldmVsX2luaXQuUwppbmRleCBhYWE0ZDhlLi44MGI1MTgyIDEwMDY0NAotLS0gYS9ib2FyZC9weGEyNTVfaWRwL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9weGEyNTVfaWRwL2xvd2xldmVsX2luaXQuUwpAQCAtMzksNyArMzksNyBAQAogCS5lbmRtCiAKIC8qCi0gKiAJTWVtb3J5IHNldHVwCisgKglNZW1vcnkgc2V0dXAKICAqLwogLmdsb2JsIGxvd2xldmVsX2luaXQKIGxvd2xldmVsX2luaXQ6CkBAIC0xMTgsNyArMTE4LDcgQEAKIAogI2lmZGVmIERFQlVHX0JMSU5LX0VOQUJMRQogCS8qIDR0aCBkZWJ1ZyBibGluayAqLwotCWJsIAlibGluaworCWJsCWJsaW5rCiAjZW5kaWYKIAogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTIxMSw3ICsyMTEsNyBAQAogCiAjaWZkZWYgREVCVUdfQkxJTktfRU5BQkxFCiAJLyogNXRoIGJsaW5rICovCi0JYmwgCWJsaW5rCisJYmwJYmxpbmsKICNlbmRpZgogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMzI2LDE0ICszMjYsMTQgQEAKICNpZiAwCiAJLyogRklYTUUgdHVybiBvbiBzZXJpYWwgcG9ydHMgKi8KIAkvKiBsb29rIGludG8gbW92aW5nIHRoaXMgdG8gYm9hcmRfaW5pdCgpICovCi0JbGRyIAlyMiwgPShQWEFfQ1M1X1BIWVMgKyAweDAzQzAwMDJjKQorCWxkcglyMiwgPShQWEFfQ1M1X1BIWVMgKyAweDAzQzAwMDJjKQogCW1vdglyMywgIzB4MTMKIAlzdHIJcjMsIFtyMl0KICNlbmRpZgogCiAjaWZkZWYgREVCVUdfQkxJTktfRU5BQkxFCiAJLyogNnRoIGJsaW5rICovCi0JYmwgCWJsaW5rCisJYmwJYmxpbmsKICNlbmRpZgogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNDIzLDcgKzQyMyw3IEBACiAKICNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKIAkvKiA3dGggYmxpbmsgKi8KLQlibCAJYmxpbmsKKwlibAlibGluawogI2VuZGlmCiAKIGVuZGxvd2xldmVsX2luaXQ6CmRpZmYgLS1naXQgYS9ib2FyZC9xdWFudHVtL2ZwZ2EuaCBiL2JvYXJkL3F1YW50dW0vZnBnYS5oCmluZGV4IDJlZjQ1ZTUuLjc5YjczYjUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3F1YW50dW0vZnBnYS5oCisrKyBiL2JvYXJkL3F1YW50dW0vZnBnYS5oCkBAIC0zMSw0ICszMSwzIEBACiAjZGVmaW5lIEVSUk9SX0ZQR0FfUFJHX0lOSVRfTE9XICAtMSAgICAgICAgLyogVGltZW91dCBhZnRlciBQUkcqIGFzc2VydGVkICAgKi8KICNkZWZpbmUgRVJST1JfRlBHQV9QUkdfSU5JVF9ISUdIIC0yICAgICAgICAvKiBUaW1lb3V0IGFmdGVyIFBSRyogZGVhc3NlcnRlZCAqLwogI2RlZmluZSBFUlJPUl9GUEdBX1BSR19ET05FICAgICAgLTMgICAgICAgIC8qIFRpbWVvdXQgYWZ0ZXIgcHJvZ3JhbW1pbmcgICAgICovCi0vKiB2aW06IHNldCB0cz00IHN3PTQgdHc9Nzg6ICovCmRpZmYgLS1naXQgYS9ib2FyZC9xdWFudHVtL3UtYm9vdC5sZHMgYi9ib2FyZC9xdWFudHVtL3UtYm9vdC5sZHMKaW5kZXggZGJlYTkwYy4uMWY5YTE5MSAxMDA2NDQKLS0tIGEvYm9hcmQvcXVhbnR1bS91LWJvb3QubGRzCisrKyBiL2JvYXJkL3F1YW50dW0vdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3F1YW50dW0vdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3F1YW50dW0vdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA1Y2VkY2IxLi4wY2QwNTNhIDEwMDY0NAotLS0gYS9ib2FyZC9xdWFudHVtL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvcXVhbnR1bS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcjM2MG1waS9wY21jaWEuYyBiL2JvYXJkL3IzNjBtcGkvcGNtY2lhLmMKaW5kZXggYTgzY2E4ZC4uNGZkOWQxMiAxMDA2NDQKLS0tIGEvYm9hcmQvcjM2MG1waS9wY21jaWEuYworKysgYi9ib2FyZC9yMzYwbXBpL3BjbWNpYS5jCkBAIC0xOTUsMTAgKzE5NSwxMCBAQAogCiAJcmVnID0gMDsKIAlzd2l0Y2godmNjKSB7Ci0JCWNhc2UgIDA6IAkJYnJlYWs7CisJCWNhc2UgIDA6CQlicmVhazsKIAkJY2FzZSAzMzogcmVnIHw9IDB4MDIwMDsJYnJlYWs7CiAJCWNhc2UgNTA6IHJlZyB8PSAweDA0MDA7CWJyZWFrOwotCQlkZWZhdWx0OiAJCWdvdG8gZG9uZTsKKwkJZGVmYXVsdDoJCWdvdG8gZG9uZTsKIAl9CiAKIAkvKiBDaGVja2luZyBzdXBwb3J0ZWQgdm9sdGFnZXMgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3IzNjBtcGkvdS1ib290LmxkcyBiL2JvYXJkL3IzNjBtcGkvdS1ib290LmxkcwppbmRleCBjMzcwOGJmLi41ZmNkNWM5IDEwMDY0NAotLS0gYS9ib2FyZC9yMzYwbXBpL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvcjM2MG1waS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcjc3ODBtcC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9yNzc4MG1wL2xvd2xldmVsX2luaXQuUwppbmRleCBlYjVkOGI3Li4wNWMwNzViIDEwMDY0NAotLS0gYS9ib2FyZC9yNzc4MG1wL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9yNzc4MG1wL2xvd2xldmVsX2luaXQuUwpAQCAtMzI2LDExICszMjYsMTEgQEAKIFJXVENTUl9EXzI6CQkJCS53b3JkCTB4QTUwNwogUldUQ05UX0Q6CQkJCS53b3JkCTB4NUEwMAogCi1CQkdfUE1NUl9BOiAJCQkubG9uZwkweEZGODAwMDEwCitCQkdfUE1NUl9BOgkJCS5sb25nCTB4RkY4MDAwMTAKIEJCR19QTVNSMV9BOgkJCS5sb25nCTB4RkY4MDAwMTQKIEJCR19QTVNSMl9BOgkJCS5sb25nCTB4RkY4MDAwMTgKIEJCR19QTVNSM19BOgkJCS5sb25nCTB4RkY4MDAwMUMKLUJCR19QTVNSNF9BOgkJCS5sb25nIAkweEZGODAwMDIwCitCQkdfUE1TUjRfQToJCQkubG9uZwkweEZGODAwMDIwCiBCQkdfUE1TUkdfQToJCQkubG9uZwkweEZGODAwMDI0CiAKIEJCR19QTU1SX0RfUE1TUjE6ICAgICAgIC5sb25nCTB4ZmZmZmJmZmQKQEAgLTMzOSw3ICszMzksNyBAQAogQkJHX1BNU1IyX0Q6ICAgICAgICAgICAgLmxvbmcJMHgwM2RlNTgwMAogQkJHX1BNTVJfRF9QTVNSMzogICAgICAgLmxvbmcJMHhmZmZmZmZmOAogQkJHX1BNU1IzX0Q6ICAgICAgICAgICAgLmxvbmcJMHgwMDAwMDAwNwotQkJHX1BNTVJfRF9QTVNSNDogICAgICAgLmxvbmcgCTB4ZGZmZGZmZjkKK0JCR19QTU1SX0RfUE1TUjQ6ICAgICAgIC5sb25nCTB4ZGZmZGZmZjkKIEJCR19QTVNSNF9EOiAgICAgICAgICAgIC5sb25nCTB4MjAwMjAwMDYKIEJCR19QTU1SX0RfUE1TUkc6ICAgICAgIC5sb25nCTB4ZmZmZmZmZmYKIEJCR19QTVNSR19EOiAgICAgICAgICAgIC5sb25nCTB4MDAwMDAwMDAKZGlmZiAtLWdpdCBhL2JvYXJkL3JiYzgyMy9mbGFzaC5jIGIvYm9hcmQvcmJjODIzL2ZsYXNoLmMKaW5kZXggODRhZTVjMS4uMjZlYmNhZSAxMDA2NDQKLS0tIGEvYm9hcmQvcmJjODIzL2ZsYXNoLmMKKysrIGIvYm9hcmQvcmJjODIzL2ZsYXNoLmMKQEAgLTEzMSwxMSArMTMxLDExIEBACiAKIAlpZiAoaW5mby0+c2l6ZSA+PiAyMCkgewogCSAgICBwcmludGYgKCIgIFNpemU6ICVsZCBNQiBpbiAlZCBTZWN0b3JzXG4iLAotCSAgICAJaW5mby0+c2l6ZSA+PiAyMCwKKwkJaW5mby0+c2l6ZSA+PiAyMCwKIAkJaW5mby0+c2VjdG9yX2NvdW50KTsKIAl9IGVsc2UgewogCSAgICBwcmludGYgKCIgIFNpemU6ICVsZCBLQiBpbiAlZCBTZWN0b3JzXG4iLAotCSAgICAJaW5mby0+c2l6ZSA+PiAxMCwKKwkJaW5mby0+c2l6ZSA+PiAxMCwKIAkJaW5mby0+c2VjdG9yX2NvdW50KTsKIAl9CiAKQEAgLTIxMyw3ICsyMTMsNyBAQAogCQkJaW5mby0+Zmxhc2hfaWQgKz0gRkxBU0hfQU0wNDA7CiAJCQlpbmZvLT5zZWN0b3JfY291bnQgPSA4OwogCQkJaW5mby0+c2l6ZSA9IDB4MDAwODAwMDA7Ci0JCQlicmVhazsJCQkJLyogPT4gNTEyS2IgCQkqLworCQkJYnJlYWs7CQkJCS8qID0+IDUxMktiCQkqLwogCiAJCWRlZmF1bHQ6CiAJCQlpbmZvLT5mbGFzaF9pZCA9IEZMQVNIX1VOS05PV047CkBAIC00NDgsNyArNDQ4LDcgQEAKIAogCSAgICAvKiByZS1lbmFibGUgaW50ZXJydXB0cyBpZiBuZWNlc3NhcnkgKi8KIAkgICAgaWYgKGZsYWcpCi0JICAgIAllbmFibGVfaW50ZXJydXB0cygpOworCQllbmFibGVfaW50ZXJydXB0cygpOwogCiAJICAgIC8qIGRhdGEgcG9sbGluZyBmb3IgRDcgKi8KIAkgICAgc3RhcnQgPSBnZXRfdGltZXIgKDApOwpkaWZmIC0tZ2l0IGEvYm9hcmQvcmJjODIzL3UtYm9vdC5sZHMgYi9ib2FyZC9yYmM4MjMvdS1ib290LmxkcwppbmRleCA4MzUwZWRhLi5lNDE3ODI1IDEwMDY0NAotLS0gYS9ib2FyZC9yYmM4MjMvdS1ib290LmxkcworKysgYi9ib2FyZC9yYmM4MjMvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3JtdS91LWJvb3QubGRzIGIvYm9hcmQvcm11L3UtYm9vdC5sZHMKaW5kZXggZGJlYTkwYy4uMWY5YTE5MSAxMDA2NDQKLS0tIGEvYm9hcmQvcm11L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvcm11L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9ybXUvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3JtdS91LWJvb3QubGRzLmRlYnVnCmluZGV4IDVjZWRjYjEuLjBjZDA1M2EgMTAwNjQ0Ci0tLSBhL2JvYXJkL3JtdS91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3JtdS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcnNkcHJvdG8vZmxhc2guYyBiL2JvYXJkL3JzZHByb3RvL2ZsYXNoLmMKaW5kZXggNWFkMzIxOC4uNGU0M2IyOSAxMDA2NDQKLS0tIGEvYm9hcmQvcnNkcHJvdG8vZmxhc2guYworKysgYi9ib2FyZC9yc2Rwcm90by9mbGFzaC5jCkBAIC03NiwxNyArNzYsMTcgQEAKIAkJdW5zaWduZWQgbG9uZyBsb25nICpmX2FkZHIgPSAodW5zaWduZWQgbG9uZyBsb25nICopUEhZU19GTEFTSDsKIAkJdW5zaWduZWQgbG9uZyBsb25nIGZfY29tbWFuZCwgdmVuZG9yLCBkZXZpY2U7CiAJCS8qIFBlcmZvcm0gQXV0b3NlbGVjdCAqLwotCQlmX2NvbW1hbmQgCT0gMHgwMEFBMDBBQTAwQUEwMEFBVUxMOworCQlmX2NvbW1hbmQJPSAweDAwQUEwMEFBMDBBQTAwQUFVTEw7CiAJCXVsbF93cml0ZSgmZl9hZGRyWzB4NTU1XSwgJmZfY29tbWFuZCk7Ci0JCWZfY29tbWFuZCAJPSAweDAwNTUwMDU1MDA1NTAwNTVVTEw7CisJCWZfY29tbWFuZAk9IDB4MDA1NTAwNTUwMDU1MDA1NVVMTDsKIAkJdWxsX3dyaXRlKCZmX2FkZHJbMHgyQUFdLCAmZl9jb21tYW5kKTsKLQkJZl9jb21tYW5kIAk9IDB4MDA5MDAwOTAwMDkwMDA5MFVMTDsKKwkJZl9jb21tYW5kCT0gMHgwMDkwMDA5MDAwOTAwMDkwVUxMOwogCQl1bGxfd3JpdGUoJmZfYWRkclsweDU1NV0sICZmX2NvbW1hbmQpOwogCQl1bGxfcmVhZCgmZl9hZGRyWzBdLCAmdmVuZG9yKTsKIAkJdmVuZG9yICY9IDB4ZmZmZjsKIAkJdWxsX3JlYWQoJmZfYWRkclsxXSwgJmRldmljZSk7CiAJCWRldmljZSAmPSAweGZmZmY7Ci0JCWZfY29tbWFuZCAJPSAweDAwRjAwMEYwMDBGMDAwRjBVTEw7CisJCWZfY29tbWFuZAk9IDB4MDBGMDAwRjAwMEYwMDBGMFVMTDsKIAkJdWxsX3dyaXRlKCZmX2FkZHJbMHg1NTVdLCAmZl9jb21tYW5kKTsKIAkJaWYgKHZlbmRvciAhPSBWRU5ET1JfQU1EIHx8IGRldmljZSAhPSBBTURfMjlETDMyM0NfQikKIAkJICByZXR1cm4gMDsKQEAgLTIyNSwxNiArMjI1LDE2IEBACiAJCXByaW50ZiAoIlxuIik7CiAgICAgfQogCi0JZl9hZGRyIAk9ICh1bnNpZ25lZCBsb25nIGxvbmcgKilpbmZvLT5zdGFydFswXTsKLQlmX2NvbW1hbmQgCT0gMHgwMEFBMDBBQTAwQUEwMEFBVUxMOworCWZfYWRkcgk9ICh1bnNpZ25lZCBsb25nIGxvbmcgKilpbmZvLT5zdGFydFswXTsKKwlmX2NvbW1hbmQJPSAweDAwQUEwMEFBMDBBQTAwQUFVTEw7CiAJdWxsX3dyaXRlKCZmX2FkZHJbMHg1NTVdLCAmZl9jb21tYW5kKTsKLQlmX2NvbW1hbmQgCT0gMHgwMDU1MDA1NTAwNTUwMDU1VUxMOworCWZfY29tbWFuZAk9IDB4MDA1NTAwNTUwMDU1MDA1NVVMTDsKIAl1bGxfd3JpdGUoJmZfYWRkclsweDJBQV0sICZmX2NvbW1hbmQpOwotCWZfY29tbWFuZCAJPSAweDAwODAwMDgwMDA4MDAwODBVTEw7CisJZl9jb21tYW5kCT0gMHgwMDgwMDA4MDAwODAwMDgwVUxMOwogCXVsbF93cml0ZSgmZl9hZGRyWzB4NTU1XSwgJmZfY29tbWFuZCk7Ci0JZl9jb21tYW5kIAk9IDB4MDBBQTAwQUEwMEFBMDBBQVVMTDsKKwlmX2NvbW1hbmQJPSAweDAwQUEwMEFBMDBBQTAwQUFVTEw7CiAJdWxsX3dyaXRlKCZmX2FkZHJbMHg1NTVdLCAmZl9jb21tYW5kKTsKLQlmX2NvbW1hbmQgCT0gMHgwMDU1MDA1NTAwNTUwMDU1VUxMOworCWZfY29tbWFuZAk9IDB4MDA1NTAwNTUwMDU1MDA1NVVMTDsKIAl1bGxfd3JpdGUoJmZfYWRkclsweDJBQV0sICZmX2NvbW1hbmQpOwogCiAgICAgLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCkBAIC0yNDQsOSArMjQ0LDkgQEAKICAgICBmb3IgKGxfc2VjdCA9IC0xLCBzZWN0ID0gc19maXJzdDsgc2VjdDw9c19sYXN0OyBzZWN0KyspIHsKIAkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gPT0gMCkgewkvKiBub3QgcHJvdGVjdGVkICovCiAKLQkJCWZfYWRkciAJPQorCQkJZl9hZGRyCT0KIAkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZyAqKShpbmZvLT5zdGFydFtzZWN0XSk7Ci0JCQlmX2NvbW1hbmQgCT0gMHgwMDMwMDAzMDAwMzAwMDMwVUxMOworCQkJZl9jb21tYW5kCT0gMHgwMDMwMDAzMDAwMzAwMDMwVUxMOwogCQkJdWxsX3dyaXRlKGZfYWRkciwgJmZfY29tbWFuZCk7CiAJCQlsX3NlY3QgPSBzZWN0OwogCQl9CkBAIC0yNjQsNyArMjY0LDcgQEAKIAkJCS8qIHRoaXMgY29tbWFuZCB0dXJucyB0aGUgZmxhc2ggYmFjayB0byByZWFkIG1vZGUgICAgICovCiAJCQlmX2FkZHIgPQogCQkJICAodW5zaWduZWQgbG9uZyBsb25nICopKGluZm8tPnN0YXJ0W2xfc2VjdF0pOwotCQkJZl9jb21tYW5kIAk9IDB4MDBGMDAwRjAwMEYwMDBGMFVMTDsKKwkJCWZfY29tbWFuZAk9IDB4MDBGMDAwRjAwMEYwMDBGMFVMTDsKIAkJCXVsbF93cml0ZShmX2FkZHIsICZmX2NvbW1hbmQpOwogCQkJcHJpbnRmICgiIHRpbWVvdXRcbiIpOwogCQkJcmV0dXJuIDE7CkBAIC0zNTcsNyArMzU3LDcgQEAKICoKICogUEFSQU1FVEVSUzogICAzMiBiaXQgbG9uZyBwb2ludGVyIHRvIGFkZHJlc3MsIDY0IGJpdCBsb25nIHBvaW50ZXIgdG8gZGF0YQogKgotKiBSRVRVUk5TOiAJMCBpZiBPSywgMSBpZiB0aW1lb3V0LCA0IGlmIHBhcmFtZXRlciBlcnJvcgorKiBSRVRVUk5TOgkwIGlmIE9LLCAxIGlmIHRpbWVvdXQsIDQgaWYgcGFyYW1ldGVyIGVycm9yCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciB3cml0ZV91bGwoZmxhc2hfaW5mb190ICppbmZvLApAQCAtMzcyLDE2ICszNzIsMTYgQEAKIAlpZiAoYWRkcmVzcyAmIDB4NykKIAkgIHJldHVybiBFUlJfQUxJR047CiAKLQlmX2FkZHIgCT0gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWluZm8tPnN0YXJ0WzBdOwotCWZfY29tbWFuZCAJPSAweDAwQUEwMEFBMDBBQTAwQUFVTEw7CisJZl9hZGRyCT0gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWluZm8tPnN0YXJ0WzBdOworCWZfY29tbWFuZAk9IDB4MDBBQTAwQUEwMEFBMDBBQVVMTDsKIAl1bGxfd3JpdGUoJmZfYWRkclsweDU1NV0sICZmX2NvbW1hbmQpOwotCWZfY29tbWFuZCAJPSAweDAwNTUwMDU1MDA1NTAwNTVVTEw7CisJZl9jb21tYW5kCT0gMHgwMDU1MDA1NTAwNTUwMDU1VUxMOwogCXVsbF93cml0ZSgmZl9hZGRyWzB4MkFBXSwgJmZfY29tbWFuZCk7Ci0JZl9jb21tYW5kIAk9IDB4MDBBMDAwQTAwMEEwMDBBMFVMTDsKKwlmX2NvbW1hbmQJPSAweDAwQTAwMEEwMDBBMDAwQTBVTEw7CiAJdWxsX3dyaXRlKCZmX2FkZHJbMHg1NTVdLCAmZl9jb21tYW5kKTsKIAotCWZfYWRkciAJPSAodW5zaWduZWQgbG9uZyBsb25nICopYWRkcmVzczsKLQlmX2NvbW1hbmQgCT0gZGF0YTsKKwlmX2FkZHIJPSAodW5zaWduZWQgbG9uZyBsb25nICopYWRkcmVzczsKKwlmX2NvbW1hbmQJPSBkYXRhOwogCXVsbF93cml0ZShmX2FkZHIsICZmX2NvbW1hbmQpOwogCiAJc3RhcnQgPSBnZXRfdGltZXIgKDApOwpAQCAtMzkxLDggKzM5MSw4IEBACiAJCXsKIAkJCS8qIHdyaXRlIHJlc2V0IGNvbW1hbmQsIGNvbW1hbmQgYWRkcmVzcyBpcyB1bmltcG9ydGFudCAqLwogCQkJLyogdGhpcyBjb21tYW5kIHR1cm5zIHRoZSBmbGFzaCBiYWNrIHRvIHJlYWQgbW9kZSAgICAgKi8KLQkJCWZfYWRkciAJPSAodW5zaWduZWQgbG9uZyBsb25nICopaW5mby0+c3RhcnRbMF07Ci0JCQlmX2NvbW1hbmQgCT0gMHgwMEYwMDBGMDAwRjAwMEYwVUxMOworCQkJZl9hZGRyCT0gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWluZm8tPnN0YXJ0WzBdOworCQkJZl9jb21tYW5kCT0gMHgwMEYwMDBGMDAwRjAwMEYwVUxMOwogCQkJdWxsX3dyaXRlKGZfYWRkciwgJmZfY29tbWFuZCk7CiAJCQlyZXR1cm4gRVJSX1RJTU9VVDsKIAkJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvcnNkcHJvdG8vdS1ib290LmxkcyBiL2JvYXJkL3JzZHByb3RvL3UtYm9vdC5sZHMKaW5kZXggNjNkZGExZi4uMDdhNzI3NyAxMDA2NDQKLS0tIGEvYm9hcmQvcnNkcHJvdG8vdS1ib290LmxkcworKysgYi9ib2FyZC9yc2Rwcm90by91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMgYi9ib2FyZC9zYW5kYnVyc3Qva2FyZWYvdS1ib290LmxkcwppbmRleCBiYzYyOGQ5Li4yMTZmOWM2NCAxMDA2NDQKLS0tIGEvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMKQEAgLTQ0LDExICs0NCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NhbmRidXJzdC9rYXJlZi91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggYTIzNTJhMy4uYWY3ZDVjMCAxMDA2NDQKLS0tIGEvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvc2FuZGJ1cnN0L2thcmVmL3UtYm9vdC5sZHMuZGVidWcKQEAgLTM0LDExICszNCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NhbmRidXJzdC9tZXRyb2JveC91LWJvb3QubGRzIGIvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMKaW5kZXggZWJjNDRkOS4uNmFiZjNmMyAxMDA2NDQKLS0tIGEvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMKQEAgLTQ0LDExICs0NCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NhbmRidXJzdC9tZXRyb2JveC91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMuZGVidWcKaW5kZXggOGY0YzZkNy4uNTI3YzI2NCAxMDA2NDQKLS0tIGEvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvc2FuZGJ1cnN0L21ldHJvYm94L3UtYm9vdC5sZHMuZGVidWcKQEAgLTM0LDExICszNCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NhbmRwb2ludC9zYW5kcG9pbnQuYyBiL2JvYXJkL3NhbmRwb2ludC9zYW5kcG9pbnQuYwppbmRleCBkMzQ0NWJkLi5hZWIxMGE3IDEwMDY0NAotLS0gYS9ib2FyZC9zYW5kcG9pbnQvc2FuZHBvaW50LmMKKysrIGIvYm9hcmQvc2FuZHBvaW50L3NhbmRwb2ludC5jCkBAIC00MCw3ICs0MCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLSNpZiAwIAkvKiBOT1QgVVNFRCAqLworI2lmIDAJLyogTk9UIFVTRUQgKi8KIGludCBjaGVja2ZsYXNoICh2b2lkKQogewogCS8qIFRPRE86IFhYWCBYWFggWFhYICovCmRpZmYgLS1naXQgYS9ib2FyZC9zYW5kcG9pbnQvc3BlZWQuaCBiL2JvYXJkL3NhbmRwb2ludC9zcGVlZC5oCmluZGV4IGI2NjM5M2IuLjNmMzJhMTQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NhbmRwb2ludC9zcGVlZC5oCisrKyBiL2JvYXJkL3NhbmRwb2ludC9zcGVlZC5oCkBAIC0yOCwxMCArMjgsMTAgQEAKICAqIFNQRUVEX1RNUjNfUFMgPSAoR0NMSyAvICgxNiAqIFNQRUVEX0ZDT1VOVDMpKSAtIDEKICAqCiAgKiBTUEVFRF9GQ09VTlQyCXRpbWVyIDIgY291bnRpbmcgZnJlcXVlbmN5Ci0gKiBHQ0xLCSAgICAgIAkJQ1BVIGNsb2NrCisgKiBHQ0xLCQkJQ1BVIGNsb2NrCiAgKiBTUEVFRF9UTVIyX1BTCXByZXNjYWxlcgogICovCi0jZGVmaW5lIFNQRUVEX1RNUjJfUFMgIAkoMjUwIC0gMSkJLyogZGl2aWRlIGJ5IDI1MAkqLworI2RlZmluZSBTUEVFRF9UTVIyX1BTCSgyNTAgLSAxKQkvKiBkaXZpZGUgYnkgMjUwCSovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRpbWVyIHZhbHVlIGZvciBQSVQKZGlmZiAtLWdpdCBhL2JvYXJkL3NiYzQwNS91LWJvb3QubGRzIGIvYm9hcmQvc2JjNDA1L3UtYm9vdC5sZHMKaW5kZXggYTk2OTY3My4uN2IxYzZiMiAxMDA2NDQKLS0tIGEvYm9hcmQvc2JjNDA1L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc2JjNDA1L3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zYmM4NTQ4L2xhdy5jIGIvYm9hcmQvc2JjODU0OC9sYXcuYwppbmRleCBkOTAzY2RjLi5iY2YzNDY4IDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NTQ4L2xhdy5jCisrKyBiL2JvYXJkL3NiYzg1NDgvbGF3LmMKQEAgLTQwLDcgKzQwLDcgQEAKICAqIDB4ZmY4MF8wMDAwCTB4ZmZmZl9mZmZmCUZMQVNIIChib290IGJhbmspCThNCiAgKgogICogTm90ZXM6Ci0gKiAJQ0NTUkJBUiBhbmQgTDItYXMtU1JBTSBkb24ndCBuZWVkIGEgY29uZmlndXJlZCBMb2NhbCBBY2Nlc3MgV2luZG93LgorICoJQ0NTUkJBUiBhbmQgTDItYXMtU1JBTSBkb24ndCBuZWVkIGEgY29uZmlndXJlZCBMb2NhbCBBY2Nlc3MgV2luZG93LgogICoJSWYgZmxhc2ggaXMgOE0gYXQgZGVmYXVsdCBwb3NpdGlvbiAobGFzdCA4TSksIG5vIExBVyBuZWVkZWQuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYm9hcmQvc2JjODU0OC9zYmM4NTQ4LmMgYi9ib2FyZC9zYmM4NTQ4L3NiYzg1NDguYwppbmRleCA0NjQ5NmRhLi45YzhjNjczIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NTQ4L3NiYzg1NDguYworKysgYi9ib2FyZC9zYmM4NTQ4L3NiYzg1NDguYwpAQCAtMzEwLDcgKzMxMCw3IEBACiAJZGRyLT5zZHJhbV9pbnRlcnZhbAk9IDB4MDUwODAxMDA7CiAJZGRyLT5zZHJhbV9tZF9jbnRsCT0gMHgwMDAwMDAwMDsKIAlkZHItPnNkcmFtX2RhdGFfaW5pdAk9IDB4MDAwMDAwMDA7Ci0JZGRyLT5zZHJhbV9jbGtfY250bCAJPSAweDAzODAwMDAwOworCWRkci0+c2RyYW1fY2xrX2NudGwJPSAweDAzODAwMDAwOwogCWFzbSgic3luYztpc3luYzttc3luYyIpOwogCXVkZWxheSg1MDApOwogCmRpZmYgLS1naXQgYS9ib2FyZC9zYmM4NTQ4L3UtYm9vdC5sZHMgYi9ib2FyZC9zYmM4NTQ4L3UtYm9vdC5sZHMKaW5kZXggMDNmNjJiOC4uZWJhN2U4YSAxMDA2NDQKLS0tIGEvYm9hcmQvc2JjODU0OC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NiYzg1NDgvdS1ib290LmxkcwpAQCAtNDIsMTEgKzQyLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NiYzg1NjAvdS1ib290LmxkcyBiL2JvYXJkL3NiYzg1NjAvdS1ib290LmxkcwppbmRleCA0YjMxNzk3Li5iYTVjZTBiIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM4NTYwL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc2JjODU2MC91LWJvb3QubGRzCkBAIC00NiwxMSArNDYsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2JjODY0MWQvdS1ib290LmxkcyBiL2JvYXJkL3NiYzg2NDFkL3UtYm9vdC5sZHMKaW5kZXggYmUzNjJlZS4uYTllOWQ4MCAxMDA2NDQKLS0tIGEvYm9hcmQvc2JjODY0MWQvdS1ib290LmxkcworKysgYi9ib2FyZC9zYmM4NjQxZC91LWJvb3QubGRzCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2MzL3NjMy5jIGIvYm9hcmQvc2MzL3NjMy5jCmluZGV4IDA5NDA3NjQuLmZiZGMxZDcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NjMy9zYzMuYworKysgYi9ib2FyZC9zYzMvc2MzLmMKQEAgLTQ0Niw3ICs0NDYsNyBAQAogCQlwcmludGYoIiBhdCAweCUwOGxYIiwgY3IgJiAweEZGRjAwMDAwVSk7CiAJCXByaW50ZigiIHNpemU6ICV1IE1CIiwgYmFua3NbKGNyICYgMHgwMDBFMDAwMCkgPj4gMTddKTsKIAkJcHJpbnRmKCIgcmlnaHRzOiAlcyIsIGJhbmthY2Nlc3NbKGNyICYgMHgwMDAxODAwMCkgPj4gMTVdKTsKLSAgIAkgICAJaWYgKGFwICYgMHg4MDAwMDAwMCkgeworCQlpZiAoYXAgJiAweDgwMDAwMDAwKSB7CiAJCQlwcmludGYoIlxuIC1CdXJzdCBkZXZpY2UgKCVsdW5zLyVsdW5zKSIsCiAJCQkJKCgoYXAgJiAweDdDMDAwMDAwKSA+PiAyNikgKyAxKSAqIENZQ0xFLAogCQkJCSgoKGFwICYgMHgwMzgwMDAwMCkgPj4gMjMpICsgMSkgKiBDWUNMRSk7CmRpZmYgLS1naXQgYS9ib2FyZC9zYzMvc2MzLmggYi9ib2FyZC9zYzMvc2MzLmgKaW5kZXggY2Y5MjBmOS4uMDYwYWVjZSAxMDA2NDQKLS0tIGEvYm9hcmQvc2MzL3NjMy5oCisrKyBiL2JvYXJkL3NjMy9zYzMuaApAQCAtODUsNyArODUsNyBAQAogCiAvKiBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXJzIGlzcDExNjEgKi8KICNkZWZpbmUgSGNSZXZpc2lvbgkJMHgwMAotI2RlZmluZSBIY0NvbnRyb2wgCQkweDAxCisjZGVmaW5lIEhjQ29udHJvbAkJMHgwMQogI2RlZmluZSBIY0NvbW1hbmRTdGF0dXMJCTB4MDIKICNkZWZpbmUgSGNJbnRlcnJ1cHRTdGF0dXMJMHgwMwogI2RlZmluZSBIY0ludGVycnVwdEVuYWJsZQkweDA0CmRpZmYgLS1naXQgYS9ib2FyZC9zYzMvdS1ib290LmxkcyBiL2JvYXJkL3NjMy91LWJvb3QubGRzCmluZGV4IDI0Y2Y0NmMuLjI3Y2MwYjkgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NjMy91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NjMy91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2M1MjBfY2RwL3NjNTIwX2NkcC5jIGIvYm9hcmQvc2M1MjBfY2RwL3NjNTIwX2NkcC5jCmluZGV4IGY2ZjBlNzIuLjgwNTBhYTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NjNTIwX2NkcC9zYzUyMF9jZHAuYworKysgYi9ib2FyZC9zYzUyMF9jZHAvc2M1MjBfY2RwLmMKQEAgLTIzMyw5ICsyMzMsOSBAQAogewogCiAJLyogc2V0IHVwIHRoZSBHUCBJTyBwaW5zICovCi0Jd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT1BGUzMxXzE2LCAweGY3ZmYpOyAJLyogc2V0IHRoZSBHUElPIHBpbiBmdW5jdGlvbiAzMS0xNiByZWcgKi8KLQl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPUEZTMTVfMCwgMHhmZmZmKTsgIAkvKiBzZXQgdGhlIEdQSU8gcGluIGZ1bmN0aW9uIDE1LTAgcmVnICovCi0Jd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0NTUEZTLCAweGY4KTsgIAkJLyogc2V0IHRoZSBDUyBwaW4gZnVuY3Rpb24gIHJlZyAqLworCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMzMV8xNiwgMHhmN2ZmKTsJLyogc2V0IHRoZSBHUElPIHBpbiBmdW5jdGlvbiAzMS0xNiByZWcgKi8KKwl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPUEZTMTVfMCwgMHhmZmZmKTsJLyogc2V0IHRoZSBHUElPIHBpbiBmdW5jdGlvbiAxNS0wIHJlZyAqLworCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9DU1BGUywgMHhmOCk7CQkvKiBzZXQgdGhlIENTIHBpbiBmdW5jdGlvbiAgcmVnICovCiAJd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0NMS1NFTCwgMHg3MCk7CiAKIApkaWZmIC0tZ2l0IGEvYm9hcmQvc2M1MjBfY2RwL3NjNTIwX2NkcF9hc20uUyBiL2JvYXJkL3NjNTIwX2NkcC9zYzUyMF9jZHBfYXNtLlMKaW5kZXggN2Y3MGQ2NS4uNmFjNWE1ZCAxMDA2NDQKLS0tIGEvYm9hcmQvc2M1MjBfY2RwL3NjNTIwX2NkcF9hc20uUworKysgYi9ib2FyZC9zYzUyMF9jZHAvc2M1MjBfY2RwX2FzbS5TCkBAIC03Myw3ICs3Myw3IEBACiAJbW92dwkkMHg2ODAsICVkeAogCW91dAklYWwsICVkeAogCi0Jam1wIAkqJWVicAkJICAgICAvKiByZXR1cm4gdG8gY2FsbGVyICovCisJam1wCSolZWJwCQkgICAgIC8qIHJldHVybiB0byBjYWxsZXIgKi8KIAogCiAuZ2xvYmwgc2hvd19ib290X3Byb2dyZXNzCmRpZmYgLS1naXQgYS9ib2FyZC9zYzUyMF9jZHAvdS1ib290LmxkcyBiL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCmluZGV4IDEyYzg1MGYuLjk2MDkzMjYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NjNTIwX2NkcC91LWJvb3QubGRzCkBAIC0zMyw3ICszMyw3IEBACiAJLiA9IEFMSUdOKDQpOwogCS5yb2RhdGEgOiB7ICooLnJvZGF0YSkgKigucm9kYXRhLnN0cjEuMSkgKigucm9kYXRhLnN0cjEuMzIpIH0KIAotCS4gPSAweDQwMDAwMDsgCSAgICAgICAgICAgICAgICAgICAgLyogUmFtIGRhdGEgc2VnbWVudCB0byB1c2UgKi8KKwkuID0gMHg0MDAwMDA7CSAgICAgICAgICAgICAgICAgICAgLyogUmFtIGRhdGEgc2VnbWVudCB0byB1c2UgKi8KIAlfaTM4NmJvb3Rfcm9tZGF0YV9kZXN0ID0gQUJTT0xVVEUoLik7CiAJLmRhdGEgOiBBVCAoIExPQURBRERSKC5yb2RhdGEpICsgU0laRU9GKC5yb2RhdGEpICkgeyAqKC5kYXRhKSB9CiAJX2kzODZib290X3JvbWRhdGFfc3RhcnQgPSBMT0FEQUREUiguZGF0YSk7CmRpZmYgLS1naXQgYS9ib2FyZC9zYzUyMF9zcHVuay9zYzUyMF9zcHVuay5jIGIvYm9hcmQvc2M1MjBfc3B1bmsvc2M1MjBfc3B1bmsuYwppbmRleCBkMTE5YTdkLi4wMzhkNDc5IDEwMDY0NAotLS0gYS9ib2FyZC9zYzUyMF9zcHVuay9zYzUyMF9zcHVuay5jCisrKyBiL2JvYXJkL3NjNTIwX3NwdW5rL3NjNTIwX3NwdW5rLmMKQEAgLTI1NiwxMSArMjU2LDExIEBACiAKIAlpZiAodmVyc2lvbikgewogCQkvKiBzZXQgdXAgdGhlIEdQIElPIHBpbnMgKGZvciB0aGUgU3B1bmsgYm9hcmQpICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMzMV8xNiwgMHhmZmYwKTsgCS8qIHNldCB0aGUgR1BJTyBwaW4gZnVuY3Rpb24gMzEtMTYgcmVnICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMxNV8wLCAgMHgwMDBmKTsgIAkvKiBzZXQgdGhlIEdQSU8gcGluIGZ1bmN0aW9uIDE1LTAgcmVnICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9ESVIzMV8xNiwgMHgwMDBmKTsgCS8qIHNldCB0aGUgR1BJTyBkaXJlY3Rpb24gMzEtMTYgcmVnICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9ESVIxNV8wLCAgMHgxZmYwKTsgIAkvKiBzZXQgdGhlIEdQSU8gZGlyZWN0aW9uIDE1LTAgcmVnICovCi0JCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9DU1BGUywgMHhjMCk7ICAJCS8qIHNldCB0aGUgQ1MgcGluIGZ1bmN0aW9uIHJlZyAqLworCQl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPUEZTMzFfMTYsIDB4ZmZmMCk7CS8qIHNldCB0aGUgR1BJTyBwaW4gZnVuY3Rpb24gMzEtMTYgcmVnICovCisJCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMxNV8wLCAgMHgwMDBmKTsJLyogc2V0IHRoZSBHUElPIHBpbiBmdW5jdGlvbiAxNS0wIHJlZyAqLworCQl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPRElSMzFfMTYsIDB4MDAwZik7CS8qIHNldCB0aGUgR1BJTyBkaXJlY3Rpb24gMzEtMTYgcmVnICovCisJCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9ESVIxNV8wLCAgMHgxZmYwKTsJLyogc2V0IHRoZSBHUElPIGRpcmVjdGlvbiAxNS0wIHJlZyAqLworCQl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfQ1NQRlMsIDB4YzApOwkJLyogc2V0IHRoZSBDUyBwaW4gZnVuY3Rpb24gcmVnICovCiAJCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9DTEtTRUwsIDB4NzApOwogCiAJCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9DTFIzMV8xNiwgMHgwMDAzKTsgICAgIC8qIHJlc2V0IFNTSSBjaGlwLXNlbGVjdHMgKi8KQEAgLTI2OCwxMSArMjY4LDExIEBACiAKIAl9IGVsc2UgewogCQkvKiBzZXQgdXAgdGhlIEdQIElPIHBpbnMgKGZvciB0aGUgSHlnbG8gYm9hcmQpICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMzMV8xNiwgMHhmZmMwKTsgCS8qIHNldCB0aGUgR1BJTyBwaW4gZnVuY3Rpb24gMzEtMTYgcmVnICovCi0JCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9QRlMxNV8wLCAweDFlN2YpOyAgCS8qIHNldCB0aGUgR1BJTyBwaW4gZnVuY3Rpb24gMTUtMCByZWcgKi8KLQkJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT0RJUjMxXzE2LCAweDAwM2YpOyAJLyogc2V0IHRoZSBHUElPIGRpcmVjdGlvbiAzMS0xNiByZWcgKi8KLQkJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT0RJUjE1XzAsIDB4ZTE4MCk7ICAJLyogc2V0IHRoZSBHUElPIGRpcmVjdGlvbiAxNS0wIHJlZyAqLwotCQl3cml0ZV9tbWNyX2J5dGUoU0M1MjBfQ1NQRlMsIDB4MDApOyAgCQkvKiBzZXQgdGhlIENTIHBpbiBmdW5jdGlvbiByZWcgKi8KKwkJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT1BGUzMxXzE2LCAweGZmYzApOwkvKiBzZXQgdGhlIEdQSU8gcGluIGZ1bmN0aW9uIDMxLTE2IHJlZyAqLworCQl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPUEZTMTVfMCwgMHgxZTdmKTsJLyogc2V0IHRoZSBHUElPIHBpbiBmdW5jdGlvbiAxNS0wIHJlZyAqLworCQl3cml0ZV9tbWNyX3dvcmQoU0M1MjBfUElPRElSMzFfMTYsIDB4MDAzZik7CS8qIHNldCB0aGUgR1BJTyBkaXJlY3Rpb24gMzEtMTYgcmVnICovCisJCXdyaXRlX21tY3Jfd29yZChTQzUyMF9QSU9ESVIxNV8wLCAweGUxODApOwkvKiBzZXQgdGhlIEdQSU8gZGlyZWN0aW9uIDE1LTAgcmVnICovCisJCXdyaXRlX21tY3JfYnl0ZShTQzUyMF9DU1BGUywgMHgwMCk7CQkvKiBzZXQgdGhlIENTIHBpbiBmdW5jdGlvbiByZWcgKi8KIAkJd3JpdGVfbW1jcl9ieXRlKFNDNTIwX0NMS1NFTCwgMHg3MCk7CiAKIAkJd3JpdGVfbW1jcl93b3JkKFNDNTIwX1BJT0NMUjE1XzAsIDB4MDE4MCk7ICAgICAgLyogcmVzZXQgU1NJIGNoaXAtc2VsZWN0cyAqLwpAQCAtNjU2LDcgKzY1Niw3IEBACiAJCW9mZnNldCB8PSBhZGRyW2ldOwogCX0KIAotCXJldHVybiAJcmVhZF9tbWNyX2J5dGUoU0M1MjBfU1lTSU5GTykgPworCXJldHVybglyZWFkX21tY3JfYnl0ZShTQzUyMF9TWVNJTkZPKSA/CiAJCXNwaV9lZXByb21fcmVhZCgxLCBvZmZzZXQsIGJ1ZmZlciwgbGVuKSA6CiAJbXdfZWVwcm9tX3JlYWQoMSwgb2Zmc2V0LCBidWZmZXIsIGxlbik7CiB9CkBAIC02NzIsNyArNjcyLDcgQEAKIAkJb2Zmc2V0IHw9IGFkZHJbaV07CiAJfQogCi0JcmV0dXJuIAlyZWFkX21tY3JfYnl0ZShTQzUyMF9TWVNJTkZPKSA/CisJcmV0dXJuCXJlYWRfbW1jcl9ieXRlKFNDNTIwX1NZU0lORk8pID8KIAkJc3BpX2VlcHJvbV93cml0ZSgxLCBvZmZzZXQsIGJ1ZmZlciwgbGVuKSA6CiAJbXdfZWVwcm9tX3dyaXRlKDEsIG9mZnNldCwgYnVmZmVyLCBsZW4pOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2M1MjBfc3B1bmsvc2M1MjBfc3B1bmtfYXNtLlMgYi9ib2FyZC9zYzUyMF9zcHVuay9zYzUyMF9zcHVua19hc20uUwppbmRleCAwMTI3MDc2Li4zNDMwYjZhIDEwMDY0NAotLS0gYS9ib2FyZC9zYzUyMF9zcHVuay9zYzUyMF9zcHVua19hc20uUworKysgYi9ib2FyZC9zYzUyMF9zcHVuay9zYzUyMF9zcHVua19hc20uUwpAQCAtNzAsNyArNzAsNyBAQAogZG9uZTogICBtb3ZsICAgICQweGZmZmVmYzMyLCVlZHgKIAltb3Z3ICAgICQwMDAwLCglZWR4KQogCi0Jam1wIAkqJWVicAkJICAgICAvKiByZXR1cm4gdG8gY2FsbGVyICovCisJam1wCSolZWJwCQkgICAgIC8qIHJldHVybiB0byBjYWxsZXIgKi8KIAogCiAuZ2xvYmwgc2hvd19ib290X3Byb2dyZXNzCmRpZmYgLS1naXQgYS9ib2FyZC9zYzUyMF9zcHVuay91LWJvb3QubGRzIGIvYm9hcmQvc2M1MjBfc3B1bmsvdS1ib290LmxkcwppbmRleCA4ODdlMGEwLi4zMzQ4MGQzIDEwMDY0NAotLS0gYS9ib2FyZC9zYzUyMF9zcHVuay91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NjNTIwX3NwdW5rL3UtYm9vdC5sZHMKQEAgLTM0LDcgKzM0LDcgQEAKIAkuID0gQUxJR04oNCk7CiAJLnJvZGF0YSA6IHsgKigucm9kYXRhKSB9CiAKLQkuID0gMHg0MDAwMDA7IAkgICAgICAgICAgICAgICAgICAgIC8qIFJhbSBkYXRhIHNlZ21lbnQgdG8gdXNlICovCisJLiA9IDB4NDAwMDAwOwkgICAgICAgICAgICAgICAgICAgIC8qIFJhbSBkYXRhIHNlZ21lbnQgdG8gdXNlICovCiAJX2kzODZib290X3JvbWRhdGFfZGVzdCA9IEFCU09MVVRFKC4pOwogCS5kYXRhIDogQVQgKCBMT0FEQUREUigucm9kYXRhKSArIFNJWkVPRigucm9kYXRhKSApIHsgKiguZGF0YSkgfQogCV9pMzg2Ym9vdF9yb21kYXRhX3N0YXJ0ID0gTE9BREFERFIoLmRhdGEpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvc2llbWVucy9DQ00vdS1ib290LmxkcyBiL2JvYXJkL3NpZW1lbnMvQ0NNL3UtYm9vdC5sZHMKaW5kZXggZWU1OThjMi4uMTBiMzhlYyAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9DQ00vdS1ib290LmxkcworKysgYi9ib2FyZC9zaWVtZW5zL0NDTS91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2llbWVucy9DQ00vdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3NpZW1lbnMvQ0NNL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggZDc5OWY5My4uYmY2Mzk5MSAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9DQ00vdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9zaWVtZW5zL0NDTS91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2llbWVucy9JQUQyMTAvdS1ib290LmxkcyBiL2JvYXJkL3NpZW1lbnMvSUFEMjEwL3UtYm9vdC5sZHMKaW5kZXggNmExZTcxOC4uMjkxZjZiMyAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9JQUQyMTAvdS1ib290LmxkcworKysgYi9ib2FyZC9zaWVtZW5zL0lBRDIxMC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2llbWVucy9TTU40Mi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9zaWVtZW5zL1NNTjQyL2xvd2xldmVsX2luaXQuUwppbmRleCAxMWFiYjYzLi5mMTNkOWI5IDEwMDY0NAotLS0gYS9ib2FyZC9zaWVtZW5zL1NNTjQyL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC9zaWVtZW5zL1NNTjQyL2xvd2xldmVsX2luaXQuUwpAQCAtMjYsMTEgKzI2LDExIEBACiAKIC8qIHNvbWUgcGFyYW1ldGVycyBmb3IgdGhlIGJvYXJkICovCiAvKiBzZXR0aW5nIHVwIHRoZSBDUFUtaW50ZXJuYWwgbWVtb3J5ICovCi0jZGVmaW5lIAlTUkFNX1NUQVJUIAkweDQwMDAwMDAwCi0jZGVmaW5lIAlTUkFNX1NJWkUJMHgwMDAwNDAwMAotI2RlZmluZSAgIEJDRkcwX1ZBTFVFIDB4MTAwMGZmZWYKLSNkZWZpbmUgICBCQ0ZHMV9WQUxVRSAweDEwMDA1RDJGCi0jZGVmaW5lICAgQkNGRzJfVkFMVUUgMHgxMDAwNUQyRgorI2RlZmluZQlTUkFNX1NUQVJUCTB4NDAwMDAwMDAKKyNkZWZpbmUJU1JBTV9TSVpFCTB4MDAwMDQwMDAKKyNkZWZpbmUgQkNGRzBfVkFMVUUJMHgxMDAwZmZlZgorI2RlZmluZSBCQ0ZHMV9WQUxVRQkweDEwMDA1RDJGCisjZGVmaW5lIEJDRkcyX1ZBTFVFCTB4MTAwMDVEMkYKIC8qCiAgKiBGb3IgUDAuMTggdG8gc2V0IFpaIHRvIHRoZSBTUkFNcyB0byAxLiBBbHNvIHNldCBQMC4yIChTQ0wpIGFuZCBQMC4zIChTREEpCiAgKiBmb3IgdGhlIGJpdC1iYW5nZXIgSTJDIGRyaXZlciBjb3JyZWN0bHkuCmRpZmYgLS1naXQgYS9ib2FyZC9zaWVtZW5zL3BjdV9lL3UtYm9vdC5sZHMgYi9ib2FyZC9zaWVtZW5zL3BjdV9lL3UtYm9vdC5sZHMKaW5kZXggOTMwMTU3MS4uYmMxZWE3MyAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9wY3VfZS91LWJvb3QubGRzCisrKyBiL2JvYXJkL3NpZW1lbnMvcGN1X2UvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc2llbWVucy9wY3VfZS91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvc2llbWVucy9wY3VfZS91LWJvb3QubGRzLmRlYnVnCmluZGV4IDQ0YmFlNzAuLjJlZTgyMzcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NpZW1lbnMvcGN1X2UvdS1ib290Lmxkcy5kZWJ1ZworKysgYi9ib2FyZC9zaWVtZW5zL3BjdV9lL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NpeG5ldC91LWJvb3QubGRzIGIvYm9hcmQvc2l4bmV0L3UtYm9vdC5sZHMKaW5kZXggMzQzYzRkNy4uYjkxYzQ0YSAxMDA2NDQKLS0tIGEvYm9hcmQvc2l4bmV0L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc2l4bmV0L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zbDgyNDUvTWFrZWZpbGUgYi9ib2FyZC9zbDgyNDUvTWFrZWZpbGUKaW5kZXggZDNkYjFhOS4uZGNiMTkwNyAxMDA2NDQKLS0tIGEvYm9hcmQvc2w4MjQ1L01ha2VmaWxlCisrKyBiL2JvYXJkL3NsODI0NS9NYWtlZmlsZQpAQCAtMjUsNyArMjUsNyBAQAogCiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKLUNPQkpTIAk9ICQoQk9BUkQpLm8gZmxhc2gubworQ09CSlMJPSAkKEJPQVJEKS5vIGZsYXNoLm8KIAogU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCmRpZmYgLS1naXQgYS9ib2FyZC9zbWRrMjQxMC9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC9zbWRrMjQxMC9sb3dsZXZlbF9pbml0LlMKaW5kZXggMzEwZjJhMC4uYWI2YWZkZCAxMDA2NDQKLS0tIGEvYm9hcmQvc21kazI0MTAvbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL3NtZGsyNDEwL2xvd2xldmVsX2luaXQuUwpAQCAtNDUsODUgKzQ1LDg1IEBACiAjZGVmaW5lIEJXU0NPTgkweDQ4MDAwMDAwCiAKIC8qIEJXU0NPTiAqLwotI2RlZmluZSBEVzgJCSAJKDB4MCkKLSNkZWZpbmUgRFcxNgkJIAkoMHgxKQotI2RlZmluZSBEVzMyCQkgCSgweDIpCi0jZGVmaW5lIFdBSVQJCSAJKDB4MTw8MikKLSNkZWZpbmUgVUJMQgkJIAkoMHgxPDwzKQorI2RlZmluZSBEVzgJCQkoMHgwKQorI2RlZmluZSBEVzE2CQkJKDB4MSkKKyNkZWZpbmUgRFczMgkJCSgweDIpCisjZGVmaW5lIFdBSVQJCQkoMHgxPDwyKQorI2RlZmluZSBVQkxCCQkJKDB4MTw8MykKIAotI2RlZmluZSBCMV9CV1NDT04JICAJKERXMzIpCi0jZGVmaW5lIEIyX0JXU0NPTgkgIAkoRFcxNikKLSNkZWZpbmUgQjNfQldTQ09OCSAgCShEVzE2ICsgV0FJVCArIFVCTEIpCi0jZGVmaW5lIEI0X0JXU0NPTgkgIAkoRFcxNikKLSNkZWZpbmUgQjVfQldTQ09OCSAgCShEVzE2KQotI2RlZmluZSBCNl9CV1NDT04JICAJKERXMzIpCi0jZGVmaW5lIEI3X0JXU0NPTgkgIAkoRFczMikKKyNkZWZpbmUgQjFfQldTQ09OCQkoRFczMikKKyNkZWZpbmUgQjJfQldTQ09OCQkoRFcxNikKKyNkZWZpbmUgQjNfQldTQ09OCQkoRFcxNiArIFdBSVQgKyBVQkxCKQorI2RlZmluZSBCNF9CV1NDT04JCShEVzE2KQorI2RlZmluZSBCNV9CV1NDT04JCShEVzE2KQorI2RlZmluZSBCNl9CV1NDT04JCShEVzMyKQorI2RlZmluZSBCN19CV1NDT04JCShEVzMyKQogCiAvKiBCQU5LMENPTiAqLwotI2RlZmluZSBCMF9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMF9UY29zCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMF9UYWNjCQkgCTB4NwkvKiAxNGNsayAqLwotI2RlZmluZSBCMF9UY29oCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMF9UYWgJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEIwX1RhY3AJCSAJMHgwCi0jZGVmaW5lIEIwX1BNQwkJIAkweDAJLyogbm9ybWFsICovCisjZGVmaW5lIEIwX1RhY3MJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjBfVGNvcwkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMF9UYWNjCQkJMHg3CS8qIDE0Y2xrICovCisjZGVmaW5lIEIwX1Rjb2gJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjBfVGFoCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIwX1RhY3AJCQkweDAKKyNkZWZpbmUgQjBfUE1DCQkJMHgwCS8qIG5vcm1hbCAqLwogCiAvKiBCQU5LMUNPTiAqLwotI2RlZmluZSBCMV9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMV9UY29zCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMV9UYWNjCQkgCTB4NwkvKiAxNGNsayAqLwotI2RlZmluZSBCMV9UY29oCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCMV9UYWgJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEIxX1RhY3AJCSAJMHgwCi0jZGVmaW5lIEIxX1BNQwkJIAkweDAKKyNkZWZpbmUgQjFfVGFjcwkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMV9UY29zCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIxX1RhY2MJCQkweDcJLyogMTRjbGsgKi8KKyNkZWZpbmUgQjFfVGNvaAkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCMV9UYWgJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjFfVGFjcAkJCTB4MAorI2RlZmluZSBCMV9QTUMJCQkweDAKIAotI2RlZmluZSBCMl9UYWNzCQkgCTB4MAotI2RlZmluZSBCMl9UY29zCQkgCTB4MAotI2RlZmluZSBCMl9UYWNjCQkgCTB4NwotI2RlZmluZSBCMl9UY29oCQkgCTB4MAotI2RlZmluZSBCMl9UYWgJCSAJMHgwCi0jZGVmaW5lIEIyX1RhY3AJCSAJMHgwCi0jZGVmaW5lIEIyX1BNQwkJIAkweDAKKyNkZWZpbmUgQjJfVGFjcwkJCTB4MAorI2RlZmluZSBCMl9UY29zCQkJMHgwCisjZGVmaW5lIEIyX1RhY2MJCQkweDcKKyNkZWZpbmUgQjJfVGNvaAkJCTB4MAorI2RlZmluZSBCMl9UYWgJCQkweDAKKyNkZWZpbmUgQjJfVGFjcAkJCTB4MAorI2RlZmluZSBCMl9QTUMJCQkweDAKIAotI2RlZmluZSBCM19UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCM19UY29zCQkgCTB4MwkvKiAgNGNsayAqLwotI2RlZmluZSBCM19UYWNjCQkgCTB4NwkvKiAxNGNsayAqLwotI2RlZmluZSBCM19UY29oCQkgCTB4MQkvKiAgMWNsayAqLwotI2RlZmluZSBCM19UYWgJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEIzX1RhY3AJCSAJMHgzICAgICAvKiAgNmNsayAqLwotI2RlZmluZSBCM19QTUMJCSAJMHgwCS8qIG5vcm1hbCAqLworI2RlZmluZSBCM19UYWNzCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEIzX1Rjb3MJCQkweDMJLyogIDRjbGsgKi8KKyNkZWZpbmUgQjNfVGFjYwkJCTB4NwkvKiAxNGNsayAqLworI2RlZmluZSBCM19UY29oCQkJMHgxCS8qICAxY2xrICovCisjZGVmaW5lIEIzX1RhaAkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCM19UYWNwCQkJMHgzICAgICAvKiAgNmNsayAqLworI2RlZmluZSBCM19QTUMJCQkweDAJLyogbm9ybWFsICovCiAKLSNkZWZpbmUgQjRfVGFjcwkJIAkweDAJLyogIDBjbGsgKi8KLSNkZWZpbmUgQjRfVGNvcwkJIAkweDAJLyogIDBjbGsgKi8KLSNkZWZpbmUgQjRfVGFjYwkJIAkweDcJLyogMTRjbGsgKi8KLSNkZWZpbmUgQjRfVGNvaAkJIAkweDAJLyogIDBjbGsgKi8KLSNkZWZpbmUgQjRfVGFoCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCNF9UYWNwCQkgCTB4MAotI2RlZmluZSBCNF9QTUMJCSAJMHgwCS8qIG5vcm1hbCAqLworI2RlZmluZSBCNF9UYWNzCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEI0X1Rjb3MJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjRfVGFjYwkJCTB4NwkvKiAxNGNsayAqLworI2RlZmluZSBCNF9UY29oCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEI0X1RhaAkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCNF9UYWNwCQkJMHgwCisjZGVmaW5lIEI0X1BNQwkJCTB4MAkvKiBub3JtYWwgKi8KIAotI2RlZmluZSBCNV9UYWNzCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCNV9UY29zCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCNV9UYWNjCQkgCTB4NwkvKiAxNGNsayAqLwotI2RlZmluZSBCNV9UY29oCQkgCTB4MAkvKiAgMGNsayAqLwotI2RlZmluZSBCNV9UYWgJCSAJMHgwCS8qICAwY2xrICovCi0jZGVmaW5lIEI1X1RhY3AJCSAJMHgwCi0jZGVmaW5lIEI1X1BNQwkJIAkweDAJLyogbm9ybWFsICovCisjZGVmaW5lIEI1X1RhY3MJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjVfVGNvcwkJCTB4MAkvKiAgMGNsayAqLworI2RlZmluZSBCNV9UYWNjCQkJMHg3CS8qIDE0Y2xrICovCisjZGVmaW5lIEI1X1Rjb2gJCQkweDAJLyogIDBjbGsgKi8KKyNkZWZpbmUgQjVfVGFoCQkJMHgwCS8qICAwY2xrICovCisjZGVmaW5lIEI1X1RhY3AJCQkweDAKKyNkZWZpbmUgQjVfUE1DCQkJMHgwCS8qIG5vcm1hbCAqLwogCi0jZGVmaW5lIEI2X01UCQkgCTB4MwkvKiBTRFJBTSAqLwotI2RlZmluZSBCNl9UcmNkCSAJIAkweDEKLSNkZWZpbmUgQjZfU0NBTgkJIAkweDEJLyogOWJpdCAqLworI2RlZmluZSBCNl9NVAkJCTB4MwkvKiBTRFJBTSAqLworI2RlZmluZSBCNl9UcmNkCQkJMHgxCisjZGVmaW5lIEI2X1NDQU4JCQkweDEJLyogOWJpdCAqLwogCi0jZGVmaW5lIEI3X01UCQkgCTB4MwkvKiBTRFJBTSAqLwotI2RlZmluZSBCN19UcmNkCQkgCTB4MQkvKiAzY2xrICovCi0jZGVmaW5lIEI3X1NDQU4JCSAJMHgxCS8qIDliaXQgKi8KKyNkZWZpbmUgQjdfTVQJCQkweDMJLyogU0RSQU0gKi8KKyNkZWZpbmUgQjdfVHJjZAkJCTB4MQkvKiAzY2xrICovCisjZGVmaW5lIEI3X1NDQU4JCQkweDEJLyogOWJpdCAqLwogCiAvKiBSRUZSRVNIIHBhcmFtZXRlciAqLwotI2RlZmluZSBSRUZFTgkJIAkweDEJLyogUmVmcmVzaCBlbmFibGUgKi8KLSNkZWZpbmUgVFJFRk1ECQkgCTB4MAkvKiBDQlIoQ0FTIGJlZm9yZSBSQVMpL0F1dG8gcmVmcmVzaCAqLwotI2RlZmluZSBUcnAJCSAJMHgwCS8qIDJjbGsgKi8KLSNkZWZpbmUgVHJjCQkgCTB4MwkvKiA3Y2xrICovCi0jZGVmaW5lIFRjaHIJCSAJMHgyCS8qIDNjbGsgKi8KLSNkZWZpbmUgUkVGQ05UCQkgCTExMTMJLyogcGVyaW9kPTE1LjZ1cywgSENMSz02ME1oeiwgKDIwNDgrMS0xNS42KjYwKSAqLworI2RlZmluZSBSRUZFTgkJCTB4MQkvKiBSZWZyZXNoIGVuYWJsZSAqLworI2RlZmluZSBUUkVGTUQJCQkweDAJLyogQ0JSKENBUyBiZWZvcmUgUkFTKS9BdXRvIHJlZnJlc2ggKi8KKyNkZWZpbmUgVHJwCQkJMHgwCS8qIDJjbGsgKi8KKyNkZWZpbmUgVHJjCQkJMHgzCS8qIDdjbGsgKi8KKyNkZWZpbmUgVGNocgkJCTB4MgkvKiAzY2xrICovCisjZGVmaW5lIFJFRkNOVAkJCTExMTMJLyogcGVyaW9kPTE1LjZ1cywgSENMSz02ME1oeiwgKDIwNDgrMS0xNS42KjYwKSAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBfVEVYVF9CQVNFOgpkaWZmIC0tZ2l0IGEvYm9hcmQvc25tYy9xczg1MC91LWJvb3QubGRzIGIvYm9hcmQvc25tYy9xczg1MC91LWJvb3QubGRzCmluZGV4IGJhNmYzODguLjI0MTBkNWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NubWMvcXM4NTAvdS1ib290LmxkcworKysgYi9ib2FyZC9zbm1jL3FzODUwL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NubWMvcXM4NjB0L2ZsYXNoLmMgYi9ib2FyZC9zbm1jL3FzODYwdC9mbGFzaC5jCmluZGV4IGM4NGQwOGQuLmFhMmU4NTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NubWMvcXM4NjB0L2ZsYXNoLmMKKysrIGIvYm9hcmQvc25tYy9xczg2MHQvZmxhc2guYwpAQCAtNzksOCArNzksNyBAQAogCX0KIAogCS8qIE9ubHkgb25lIGJhbmsgKi8KLQlpZiAoQ0ZHX01BWF9GTEFTSF9CQU5LUyA9PSAxKQotCXsKKwlpZiAoQ0ZHX01BWF9GTEFTSF9CQU5LUyA9PSAxKSB7CiAJCS8qIFNldHVwIG9mZnNldHMgKi8KIAkJZmxhc2hfZ2V0X29mZnNldHMgKEZMQVNIX0JBU0UxX1BSRUxJTSwgJmZsYXNoX2luZm9bMF0pOwogCkBAIC05OCwxNSArOTcsMTEgQEAKICNlbmRpZgogCQlzaXplX2IxID0gMCA7CiAJCWZsYXNoX2luZm9bMF0uc2l6ZSA9IHNpemVfYjA7Ci0JfQotCS8qIDIgYmFua3MgKi8KLQllbHNlCi0JeworCX0gZWxzZSB7CS8qIDIgYmFua3MgKi8KIAkJc2l6ZV9iMSA9IGZsYXNoX2dldF9zaXplKCh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKilGTEFTSF9CQVNFMV9QUkVMSU0sICZmbGFzaF9pbmZvWzFdKTsKIAogCQkvKiBSZS1kbyBzaXppbmcgdG8gZ2V0IGZ1bGwgY29ycmVjdCBpbmZvICovCi0JCWlmIChzaXplX2IxKQotCQl7CisJCWlmIChzaXplX2IxKSB7CiAJCQltdGRjcihlYmNjZmdhLCBwYjBjcik7CiAJCQlwYmNyID0gbWZkY3IoZWJjY2ZnZCk7CiAJCQltdGRjcihlYmNjZmdhLCBwYjBjcik7CkBAIC0xMTUsOCArMTEwLDcgQEAKIAkJCW10ZGNyKGViY2NmZ2QsIHBiY3IpOwogCQl9CiAKLQkJaWYgKHNpemVfYjApCi0JCXsKKwkJaWYgKHNpemVfYjApIHsKIAkJCW10ZGNyKGViY2NmZ2EsIHBiMWNyKTsKIAkJCXBiY3IgPSBtZmRjcihlYmNjZmdkKTsKIAkJCW10ZGNyKGViY2NmZ2EsIHBiMWNyKTsKQEAgLTU2NiwxNyArNTYwLDE3IEBACiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjMyMEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMzI7CiAJCWluZm8tPnNpemUgPSAweDAwNDAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gMzIgTUJpdCAgCSovCisJCWJyZWFrOwkJCQkvKiA9PiAzMiBNQml0CSovCiAJY2FzZSAoSU5URUxfSURfMjhGNjQwSjNBICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjY0MEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gNjQ7CiAJCWluZm8tPnNpemUgPSAweDAwODAwMDAwOwotCQlicmVhazsJCQkJLyogPT4gNjQgTUJpdCAgCSovCisJCWJyZWFrOwkJCQkvKiA9PiA2NCBNQml0CSovCiAJY2FzZSAoSU5URUxfSURfMjhGMTI4SjNBICYgRkxBU0hfSURfTUFTSyk6CiAJCWluZm8tPmZsYXNoX2lkICs9IEZMQVNIXzI4RjEyOEozQTsKIAkJaW5mby0+c2VjdG9yX2NvdW50ID0gMTI4OwogCQlpbmZvLT5zaXplID0gMHgwMTAwMDAwMDsKLQkJYnJlYWs7CQkJCS8qID0+IDEyOCBNQml0ICAJKi8KKwkJYnJlYWs7CQkJCS8qID0+IDEyOCBNQml0CSovCiAKIAlkZWZhdWx0OgogCQkvKiBGSVhNRSovCkBAIC02MTMsMTAgKzYwNywxMSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLWludCBmbGFzaF9lcmFzZSAoZmxhc2hfaW5mb190ICppbmZvLCBpbnQgc19maXJzdCwgaW50IHNfbGFzdCkKK2ludCBmbGFzaF9lcmFzZSAoZmxhc2hfaW5mb190ICogaW5mbywgaW50IHNfZmlyc3QsIGludCBzX2xhc3QpCiB7CiAKLQl2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKmFkZHI9KHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSopKGluZm8tPnN0YXJ0WzBdKTsKKwl2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKmFkZHIgPQorCQkodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopIChpbmZvLT5zdGFydFswXSk7CiAJaW50IGZsYWcsIHByb3QsIHNlY3QsIGxfc2VjdCwgYmFyZjsKIAl1bG9uZyBzdGFydCwgbm93LCBsYXN0OwogCWludCByY29kZSA9IDA7CkBAIC02MzEsMjIgKzYyNiwyMSBAQAogCX0KIAogCWlmICgoaW5mby0+Zmxhc2hfaWQgPT0gRkxBU0hfVU5LTk9XTikgfHwKLQkJKChpbmZvLT5mbGFzaF9pZCA+IEZMQVNIX0FNRF9DT01QKSAmJgotCQkoIChpbmZvLT5mbGFzaF9pZCAmIEZMQVNIX1ZFTkRNQVNLKSAhPSBGTEFTSF9NQU5fSU5URUwgKSApICl7CisJICAgICgoaW5mby0+Zmxhc2hfaWQgPiBGTEFTSF9BTURfQ09NUCkgJiYKKwkgICAgICgoaW5mby0+Zmxhc2hfaWQgJiBGTEFTSF9WRU5ETUFTSykgIT0gRkxBU0hfTUFOX0lOVEVMKSkpIHsKIAkJcHJpbnRmICgiQ2FuJ3QgZXJhc2UgdW5rbm93biBmbGFzaCB0eXBlIC0gYWJvcnRlZFxuIik7CiAJCXJldHVybiAxOwogCX0KIAogCXByb3QgPSAwOwotCWZvciAoc2VjdD1zX2ZpcnN0OyBzZWN0PD1zX2xhc3Q7ICsrc2VjdCkgeworCWZvciAoc2VjdCA9IHNfZmlyc3Q7IHNlY3QgPD0gc19sYXN0OyArK3NlY3QpIHsKIAkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0pIHsKIAkJCXByb3QrKzsKIAkJfQogCX0KIAogCWlmIChwcm90KSB7Ci0JCXByaW50ZiAoIi0gV2FybmluZzogJWQgcHJvdGVjdGVkIHNlY3RvcnMgd2lsbCBub3QgYmUgZXJhc2VkIVxuIiwKLQkJCXByb3QpOworCQlwcmludGYgKCItIFdhcm5pbmc6ICVkIHByb3RlY3RlZCBzZWN0b3JzIHdpbGwgbm90IGJlIGVyYXNlZCFcbiIsIHByb3QpOwogCX0gZWxzZSB7CiAJCXByaW50ZiAoIlxuIik7CiAJfQpAQCAtNjU0LDEwOSArNjQ4LDExMiBAQAogCWxfc2VjdCA9IC0xOwogCiAJLyogRGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWNoIG1pZ2h0IGNhdXNlIGEgdGltZW91dCBoZXJlICovCi0JZmxhZyA9IGRpc2FibGVfaW50ZXJydXB0cygpOwotICAgIGlmKGluZm8tPmZsYXNoX2lkIDwgRkxBU0hfQU1EX0NPTVApIHsKKwlmbGFnID0gZGlzYWJsZV9pbnRlcnJ1cHRzICgpOworCWlmIChpbmZvLT5mbGFzaF9pZCA8IEZMQVNIX0FNRF9DT01QKSB7CiAjaWZuZGVmIENGR19GTEFTSF8xNkJJVAotCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKLQlhZGRyWzB4MDU1NV0gPSAweDAwODAwMDgwOwotCWFkZHJbMHgwNTU1XSA9IDB4MDBBQTAwQUE7Ci0JYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKKwkJYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMDgwMDA4MDsKKwkJYWRkclsweDA1NTVdID0gMHgwMEFBMDBBQTsKKwkJYWRkclsweDAyQUFdID0gMHgwMDU1MDA1NTsKICNlbHNlCi0JYWRkclsweDA1NTVdID0gMHgwMEFBOwotCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKLQlhZGRyWzB4MDU1NV0gPSAweDAwODA7Ci0JYWRkclsweDA1NTVdID0gMHgwMEFBOwotCWFkZHJbMHgwMkFBXSA9IDB4MDA1NTsKKwkJYWRkclsweDA1NTVdID0gMHgwMEFBOworCQlhZGRyWzB4MDJBQV0gPSAweDAwNTU7CisJCWFkZHJbMHgwNTU1XSA9IDB4MDA4MDsKKwkJYWRkclsweDA1NTVdID0gMHgwMEFBOworCQlhZGRyWzB4MDJBQV0gPSAweDAwNTU7CiAjZW5kaWYKLQkvKiBTdGFydCBlcmFzZSBvbiB1bnByb3RlY3RlZCBzZWN0b3JzICovCi0JZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdDw9c19sYXN0OyBzZWN0KyspIHsKLQkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gPT0gMCkgewkvKiBub3QgcHJvdGVjdGVkICovCi0JCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKShpbmZvLT5zdGFydFtzZWN0XSk7Ci0JCQlhZGRyWzBdID0gKDB4MDAzMDAwMzAgJiBGTEFTSF9JRF9NQVNLKTsKLQkJCWxfc2VjdCA9IHNlY3Q7Ci0JCX0KLQl9Ci0KLQkvKiByZS1lbmFibGUgaW50ZXJydXB0cyBpZiBuZWNlc3NhcnkgKi8KLQlpZiAoZmxhZykKLQkJZW5hYmxlX2ludGVycnVwdHMoKTsKLQotCS8qIHdhaXQgYXQgbGVhc3QgODB1cyAtIGxldCdzIHdhaXQgMSBtcyAqLwotCXVkZWxheSAoMTAwMCk7Ci0KLQkvKgotCSAqIFdlIHdhaXQgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzZWN0b3IKLQkgKi8KLQlpZiAobF9zZWN0IDwgMCkKLQkJZ290byBET05FOwotCi0Jc3RhcnQgPSBnZXRfdGltZXIgKDApOwotCWxhc3QgID0gc3RhcnQ7Ci0JYWRkciA9ICh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUqKShpbmZvLT5zdGFydFtsX3NlY3RdKTsKLQl3aGlsZSAoKGFkZHJbMF0gJiAoMHgwMDgwMDA4MCZGTEFTSF9JRF9NQVNLKSkgIT0KLQkJKDB4MDA4MDAwODAmRkxBU0hfSURfTUFTSykgICkKLQl7Ci0JCWlmICgobm93ID0gZ2V0X3RpbWVyKHN0YXJ0KSkgPiBDRkdfRkxBU0hfRVJBU0VfVE9VVCkgewotCQkJcHJpbnRmICgiVGltZW91dFxuIik7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCQkvKiBzaG93IHRoYXQgd2UncmUgd2FpdGluZyAqLwotCQlpZiAoKG5vdyAtIGxhc3QpID4gMTAwMCkgewkvKiBldmVyeSBzZWNvbmQgKi8KLQkJCXNlcmlhbF9wdXRjICgnLicpOwotCQkJbGFzdCA9IG5vdzsKLQkJfQotCX0KLQotRE9ORToKLQkvKiByZXNldCB0byByZWFkIG1vZGUgKi8KLQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKWluZm8tPnN0YXJ0WzBdOwotCWFkZHJbMF0gPSAoMHgwMEYwMDBGMCAmIEZMQVNIX0lEX01BU0spOwkvKiByZXNldCBiYW5rICovCi0gICAgfSBlbHNlIHsKLQotCi0JZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdDw9c19sYXN0OyBzZWN0KyspIHsKLQkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gPT0gMCkgewkvKiBub3QgcHJvdGVjdGVkICovCi0JCQliYXJmID0gMDsKLSNpZm5kZWYgQ0ZHX0ZMQVNIXzE2QklUCi0JCQlhZGRyID0gKHZ1X2xvbmcqKShpbmZvLT5zdGFydFtzZWN0XSk7Ci0JCQlhZGRyWzBdID0gMHgwMDIwMDAyMDsKLQkJCWFkZHJbMF0gPSAweDAwRDAwMEQwOwotCQkJd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwMDA4MCkpOwkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KLQkJCWlmKCBhZGRyWzBdICYgMHgwMDNBMDAzQSkgewkvKiBjaGVjayBmb3IgZXJyb3IgKi8KLQkJCQliYXJmID0gYWRkclswXSAmIDB4MDAzQTAwMDA7Ci0JCQkJaWYoIGJhcmYgKSB7Ci0JCQkJCWJhcmYgPj49MTY7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwMDAwMDNBOwotCQkJCX0KKwkJLyogU3RhcnQgZXJhc2Ugb24gdW5wcm90ZWN0ZWQgc2VjdG9ycyAqLworCQlmb3IgKHNlY3QgPSBzX2ZpcnN0OyBzZWN0IDw9IHNfbGFzdDsgc2VjdCsrKSB7CisJCQlpZiAoaW5mby0+cHJvdGVjdFtzZWN0XSA9PSAwKSB7CS8qIG5vdCBwcm90ZWN0ZWQgKi8KKwkJCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSAoaW5mby0+c3RhcnRbc2VjdF0pOworCQkJCWFkZHJbMF0gPSAoMHgwMDMwMDAzMCAmIEZMQVNIX0lEX01BU0spOworCQkJCWxfc2VjdCA9IHNlY3Q7CiAJCQl9Ci0jZWxzZQotCQkJYWRkciA9ICh2dV9zaG9ydCopKGluZm8tPnN0YXJ0W3NlY3RdKTsKLQkJCWFkZHJbMF0gPSAweDAwMjA7Ci0JCQlhZGRyWzBdID0gMHgwMEQwOwotCQkJd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwKSk7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwotCQkJaWYoIGFkZHJbMF0gJiAweDAwM0EpCS8qIGNoZWNrIGZvciBlcnJvciAqLwotCQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDNBOwotI2VuZGlmCi0JCQlpZihiYXJmKSB7Ci0JCQkJcHJpbnRmKCJcbkZsYXNoIGVycm9yIGluIHNlY3RvciBhdCAlbHhcbiIsKHVuc2lnbmVkIGxvbmcpYWRkcik7Ci0JCQkJaWYoYmFyZiAmIDB4MDAwMikgcHJpbnRmKCJCbG9jayBsb2NrZWQsIG5vdCBlcmFzZWQuXG4iKTsKLQkJCQlpZigoYmFyZiAmIDB4MDAzMCkgPT0gMHgwMDMwKQotCQkJCQlwcmludGYoIkNvbW1hbmQgU2VxdWVuY2UgZXJyb3IuXG4iKTsKLQkJCQlpZigoYmFyZiAmIDB4MDAzMCkgPT0gMHgwMDIwKQotCQkJCQlwcmludGYoIkJsb2NrIEVyYXNlIGVycm9yLlxuIik7Ci0JCQkJaWYoYmFyZiAmIDB4MDAwOCkgcHJpbnRmKCJWcHAgTG93IGVycm9yLlxuIik7Ci0JCQkJcmNvZGUgPSAxOwotCQkJfSBlbHNlIHByaW50ZigiLiIpOwotCQkJbF9zZWN0ID0gc2VjdDsKIAkJfQotCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopaW5mby0+c3RhcnRbMF07Ci0JYWRkclswXSA9ICgweDAwRkYwMEZGICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KKworCQkvKiByZS1lbmFibGUgaW50ZXJydXB0cyBpZiBuZWNlc3NhcnkgKi8KKwkJaWYgKGZsYWcpCisJCQllbmFibGVfaW50ZXJydXB0cyAoKTsKKworCQkvKiB3YWl0IGF0IGxlYXN0IDgwdXMgLSBsZXQncyB3YWl0IDEgbXMgKi8KKwkJdWRlbGF5ICgxMDAwKTsKKworCQkvKgorCQkgKiBXZSB3YWl0IGZvciB0aGUgbGFzdCB0cmlnZ2VyZWQgc2VjdG9yCisJCSAqLworCQlpZiAobF9zZWN0IDwgMCkKKwkJCWdvdG8gRE9ORTsKKworCQlzdGFydCA9IGdldF90aW1lciAoMCk7CisJCWxhc3QgPSBzdGFydDsKKwkJYWRkciA9ICh2b2xhdGlsZSBGTEFTSF9XT1JEX1NJWkUgKikgKGluZm8tPnN0YXJ0W2xfc2VjdF0pOworCQl3aGlsZSAoKGFkZHJbMF0gJiAoMHgwMDgwMDA4MCAmIEZMQVNIX0lEX01BU0spKSAhPQorCQkgICAgICAgKDB4MDA4MDAwODAgJiBGTEFTSF9JRF9NQVNLKSkgeworCQkJaWYgKChub3cgPSBnZXRfdGltZXIgKHN0YXJ0KSkgPiBDRkdfRkxBU0hfRVJBU0VfVE9VVCkgeworCQkJCXByaW50ZiAoIlRpbWVvdXRcbiIpOworCQkJCXJldHVybiAxOworCQkJfQorCQkJLyogc2hvdyB0aGF0IHdlJ3JlIHdhaXRpbmcgKi8KKwkJCWlmICgobm93IC0gbGFzdCkgPiAxMDAwKSB7CS8qIGV2ZXJ5IHNlY29uZCAqLworCQkJCXNlcmlhbF9wdXRjICgnLicpOworCQkJCWxhc3QgPSBub3c7CisJCQl9CisJCX0KKworCSAgICAgIERPTkU6CisJCS8qIHJlc2V0IHRvIHJlYWQgbW9kZSAqLworCQlhZGRyID0gKHZvbGF0aWxlIEZMQVNIX1dPUkRfU0laRSAqKSBpbmZvLT5zdGFydFswXTsKKwkJYWRkclswXSA9ICgweDAwRjAwMEYwICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KKwl9IGVsc2UgeworCisKKwkJZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdCA8PSBzX2xhc3Q7IHNlY3QrKykgeworCQkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gPT0gMCkgewkvKiBub3QgcHJvdGVjdGVkICovCisJCQkJYmFyZiA9IDA7CisjaWZuZGVmIENGR19GTEFTSF8xNkJJVAorCQkJCWFkZHIgPSAodnVfbG9uZyAqKSAoaW5mby0+c3RhcnRbc2VjdF0pOworCQkJCWFkZHJbMF0gPSAweDAwMjAwMDIwOworCQkJCWFkZHJbMF0gPSAweDAwRDAwMEQwOworCQkJCXdoaWxlICghKGFkZHJbMF0gJiAweDAwODAwMDgwKSk7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQkJCWlmIChhZGRyWzBdICYgMHgwMDNBMDAzQSkgewkvKiBjaGVjayBmb3IgZXJyb3IgKi8KKwkJCQkJYmFyZiA9IGFkZHJbMF0gJiAweDAwM0EwMDAwOworCQkJCQlpZiAoYmFyZikgeworCQkJCQkJYmFyZiA+Pj0gMTY7CisJCQkJCX0gZWxzZSB7CisJCQkJCQliYXJmID0gYWRkclswXSAmIDB4MDAwMDAwM0E7CisJCQkJCX0KKwkJCQl9CisjZWxzZQorCQkJCWFkZHIgPSAodnVfc2hvcnQgKikgKGluZm8tPnN0YXJ0W3NlY3RdKTsKKwkJCQlhZGRyWzBdID0gMHgwMDIwOworCQkJCWFkZHJbMF0gPSAweDAwRDA7CisJCQkJd2hpbGUgKCEoYWRkclswXSAmIDB4MDA4MCkpOwkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KKwkJCQlpZiAoYWRkclswXSAmIDB4MDAzQSkJLyogY2hlY2sgZm9yIGVycm9yICovCisJCQkJCWJhcmYgPSBhZGRyWzBdICYgMHgwMDNBOworI2VuZGlmCisJCQkJaWYgKGJhcmYpIHsKKwkJCQkJcHJpbnRmICgiXG5GbGFzaCBlcnJvciBpbiBzZWN0b3IgYXQgJWx4XG4iLAorCQkJCQkJKHVuc2lnbmVkIGxvbmcpIGFkZHIpOworCQkJCQlpZiAoYmFyZiAmIDB4MDAwMikKKwkJCQkJCXByaW50ZiAoIkJsb2NrIGxvY2tlZCwgbm90IGVyYXNlZC5cbiIpOworCQkJCQlpZiAoKGJhcmYgJiAweDAwMzApID09IDB4MDAzMCkKKwkJCQkJCXByaW50ZiAoIkNvbW1hbmQgU2VxdWVuY2UgZXJyb3IuXG4iKTsKKwkJCQkJaWYgKChiYXJmICYgMHgwMDMwKSA9PSAweDAwMjApCisJCQkJCQlwcmludGYgKCJCbG9jayBFcmFzZSBlcnJvci5cbiIpOworCQkJCQlpZiAoYmFyZiAmIDB4MDAwOCkKKwkJCQkJCXByaW50ZiAoIlZwcCBMb3cgZXJyb3IuXG4iKTsKKwkJCQkJcmNvZGUgPSAxOworCQkJCX0gZWxzZQorCQkJCQlwcmludGYgKCIuIik7CisJCQkJbF9zZWN0ID0gc2VjdDsKKwkJCX0KKwkJCWFkZHIgPSAodm9sYXRpbGUgRkxBU0hfV09SRF9TSVpFICopIGluZm8tPnN0YXJ0WzBdOworCQkJYWRkclswXSA9ICgweDAwRkYwMEZGICYgRkxBU0hfSURfTUFTSyk7CS8qIHJlc2V0IGJhbmsgKi8KKworCQl9CiAKIAl9Ci0KLSAgICB9CiAJcHJpbnRmICgiIGRvbmVcbiIpOwogCXJldHVybiByY29kZTsKIH0KQEAgLTEwMjMsNyArMTAyMCw3IEBACiAJCQl9CiAJCX0KIAl9IGVsc2UgewotCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODAwMDgwKSkgeyAgCS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODAwMDgwKSkgewkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KIAkJCWlmIChnZXRfdGltZXIoc3RhcnQpID4gQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQpIHsKIAkJCQlyZXR1cm4gKDEpOwogCQkJfQpAQCAtMTA5MSw3ICsxMDg4LDcgQEAKIAogCX0gZWxzZSB7CiAJCS8qIGludGVsIHN0dWZmICovCi0JCXdoaWxlKCEoYWRkclswXSAmIDB4MDA4MCkpeyAgCS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLworCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODApKXsJLyogd2FpdCBmb3IgZXJyb3Igb3IgZmluaXNoICovCiAJCQlpZiAoZ2V0X3RpbWVyKHN0YXJ0KSA+IENGR19GTEFTSF9XUklURV9UT1VUKSByZXR1cm4gKDEpOwogCQl9CiAKQEAgLTExMDUsNyArMTEwMiw3IEBACiAJCX0KIAkJKmFkZHIgPSAweDAwQjA7CiAJCSphZGRyID0gMHgwMDcwOwotCQl3aGlsZSghKGFkZHJbMF0gJiAweDAwODApKXsgIAkvKiB3YWl0IGZvciBlcnJvciBvciBmaW5pc2ggKi8KKwkJd2hpbGUoIShhZGRyWzBdICYgMHgwMDgwKSl7CS8qIHdhaXQgZm9yIGVycm9yIG9yIGZpbmlzaCAqLwogCQkJaWYgKGdldF90aW1lcihzdGFydCkgPiBDRkdfRkxBU0hfV1JJVEVfVE9VVCkgcmV0dXJuICgxKTsKIAkJfQogCQkqYWRkciA9IDB4MDBGRjsKQEAgLTExMTMsOCArMTExMCw2IEBACiAJcmV0dXJuICgwKTsKIH0KIAotCiAjZW5kaWYKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3NubWMvcXM4NjB0L3UtYm9vdC5sZHMgYi9ib2FyZC9zbm1jL3FzODYwdC91LWJvb3QubGRzCmluZGV4IGJhNmYzODguLjI0MTBkNWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NubWMvcXM4NjB0L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc25tYy9xczg2MHQvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc3BjMTkyMC91LWJvb3QubGRzIGIvYm9hcmQvc3BjMTkyMC91LWJvb3QubGRzCmluZGV4IDdhYjI5ZWYuLjhjNDZlNDYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NwYzE5MjAvdS1ib290LmxkcworKysgYi9ib2FyZC9zcGMxOTIwL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3NwZDh4eC91LWJvb3QubGRzIGIvYm9hcmQvc3BkOHh4L3UtYm9vdC5sZHMKaW5kZXggMTZlMmNkMC4uMTNiMjkwOCAxMDA2NDQKLS0tIGEvYm9hcmQvc3BkOHh4L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc3BkOHh4L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zcGQ4eHgvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3NwZDh4eC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDk2YzRlMjIuLmZkMjI0NWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NwZDh4eC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3NwZDh4eC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvc3R4Z3AzL3UtYm9vdC5sZHMgYi9ib2FyZC9zdHhncDMvdS1ib290LmxkcwppbmRleCA4YzU5MGI5Li45Y2M0OTk3IDEwMDY0NAotLS0gYS9ib2FyZC9zdHhncDMvdS1ib290LmxkcworKysgYi9ib2FyZC9zdHhncDMvdS1ib290LmxkcwpAQCAtNDgsMTEgKzQ4LDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3N0eHNzYS91LWJvb3QubGRzIGIvYm9hcmQvc3R4c3NhL3UtYm9vdC5sZHMKaW5kZXggOTM4MTY4OC4uYjBhOWQ2OCAxMDA2NDQKLS0tIGEvYm9hcmQvc3R4c3NhL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvc3R4c3NhL3UtYm9vdC5sZHMKQEAgLTQ4LDExICs0OCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zdHh4dGMvdS1ib290LmxkcyBiL2JvYXJkL3N0eHh0Yy91LWJvb3QubGRzCmluZGV4IGVhMzljZDkuLmY1NjAxODkgMTAwNjQ0Ci0tLSBhL2JvYXJkL3N0eHh0Yy91LWJvb3QubGRzCisrKyBiL2JvYXJkL3N0eHh0Yy91LWJvb3QubGRzCkBAIC0yOCwxNSArMjgsMTUgQEAKIHsKICAgLyogUmVhZC1vbmx5IHNlY3Rpb25zLCBtZXJnZWQgaW50byB0ZXh0IHNlZ21lbnQ6ICovCiAgIC4gPSArIFNJWkVPRl9IRUFERVJTOwotICAuaW50ZXJwCQk6IHsgKiguaW50ZXJwKQkJfQorICAuaW50ZXJwCTogeyAqKC5pbnRlcnApCQl9CiAgIC5oYXNoICAgICAgICAgOiB7ICooLmhhc2gpCQl9CiAgIC5keW5zeW0gICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgIDogeyAqKC5yZWwudGV4dCkJfQotICAucmVsYS50ZXh0ICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgIDogeyAqKC5yZWwuZGF0YSkJfQotICAucmVsYS5kYXRhICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgIDogeyAqKC5yZWwucm9kYXRhKQl9CiAgIC5yZWxhLnJvZGF0YSAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgOiB7ICooLnJlbGEuZ290KQl9CkBAIC00OSw4ICs0OSw4IEBACiAgIC5yZWwucGx0ICAgICAgOiB7ICooLnJlbC5wbHQpCQl9CiAgIC5yZWxhLnBsdCAgICAgOiB7ICooLnJlbGEucGx0KQl9CiAgIC5pbml0ICAgICAgICAgOiB7ICooLmluaXQpCQl9Ci0gIC5wbHQJCQk6IHsgKigucGx0KSAJCX0KLSAgLnRleHQgICAgICAJOgorICAucGx0CQk6IHsgKigucGx0KQkJfQorICAudGV4dAk6CiAgIHsKICAgICBjcHUvbXBjOHh4L3N0YXJ0Lm8JCSgudGV4dCkKICAgICBjcHUvbXBjOHh4L3RyYXBzLm8JCSgudGV4dCkKZGlmZiAtLWdpdCBhL2JvYXJkL3N0eHh0Yy91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQvc3R4eHRjL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggODBiY2JmYy4uNWJmMWE2NiAxMDA2NDQKLS0tIGEvYm9hcmQvc3R4eHRjL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvc3R4eHRjL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zdm1fc2M4eHgvdS1ib290LmxkcyBiL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzCmluZGV4IDM1MjY3ZGMuLjE0ZmYxNzkgMTAwNjQ0Ci0tLSBhL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC9zdm1fc2M4eHgvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDVjZWRjYjEuLjBjZDA1M2EgMTAwNjQ0Ci0tLSBhL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3N2bV9zYzh4eC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvdG90YWw1MjAwL3RvdGFsNTIwMC5jIGIvYm9hcmQvdG90YWw1MjAwL3RvdGFsNTIwMC5jCmluZGV4IGYzMmRhZGYuLmM4ZDRjNjcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RvdGFsNTIwMC90b3RhbDUyMDAuYworKysgYi9ib2FyZC90b3RhbDUyMDAvdG90YWw1MjAwLmMKQEAgLTExOCw3ICsxMTgsNyBAQAogewogCWRlYnVnICgiaW5pdF9pZGVfcmVzZXRcbiIpOwogCi0gICAgCS8qIENvbmZpZ3VyZSBJUkRBXzEgKFBTQzZfMykgYXMgR1BJTyBvdXRwdXQgZm9yIEFUQSByZXNldCAqLworCS8qIENvbmZpZ3VyZSBJUkRBXzEgKFBTQzZfMykgYXMgR1BJTyBvdXRwdXQgZm9yIEFUQSByZXNldCAqLwogCSoodnVfbG9uZyAqKSBNUEM1WFhYX0dQSU9fRU5BQkxFIHw9IEdQSU9fSVJEQV8xOwogCSoodnVfbG9uZyAqKSBNUEM1WFhYX0dQSU9fRElSICAgIHw9IEdQSU9fSVJEQV8xOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvdHFtNTIwMC9jbWRfc3RrNTJ4eC5jIGIvYm9hcmQvdHFtNTIwMC9jbWRfc3RrNTJ4eC5jCmluZGV4IDI3YTZjNDEuLjc0NzJjYTkgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RxbTUyMDAvY21kX3N0azUyeHguYworKysgYi9ib2FyZC90cW01MjAwL2NtZF9zdGs1Mnh4LmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICNkZWZpbmUgU001MDFfUE9XRVJfTU9ERTBfR0FURQkJMHgwMDAwMDA0MFVMCiAjZGVmaW5lIFNNNTAxX1BPV0VSX01PREUxX0dBVEUJCTB4MDAwMDAwNDhVTAogI2RlZmluZSBQT1dFUl9NT0RFX0dBVEVfR1BJT19QV01fSTJDCTB4MDAwMDAwNDBVTAotI2RlZmluZSBTTTUwMV9HUElPX0RBVEFfTE9XIAkJMHgwMDAxMDAwMFVMCisjZGVmaW5lIFNNNTAxX0dQSU9fREFUQV9MT1cJCTB4MDAwMTAwMDBVTAogI2RlZmluZSBTTTUwMV9HUElPX0RBVEFfSElHSAkJMHgwMDAxMDAwNFVMCiAjZGVmaW5lIFNNNTAxX0dQSU9fREFUQV9ESVJfTE9XCQkweDAwMDEwMDA4VUwKICNkZWZpbmUgU001MDFfR1BJT19EQVRBX0RJUl9ISUdICTB4MDAwMTAwMENVTApAQCAtNTg2LDcgKzU4Niw3IEBACiAJc3RydWN0IG1wYzV4eHhfZ3BpbyAqZ3BpbyA9IChzdHJ1Y3QgbXBjNXh4eF9ncGlvICopTVBDNVhYWF9HUElPOwogCXN0cnVjdCBtcGM1eHh4X2dwdF8wXzcgKmdwdCA9IChzdHJ1Y3QgbXBjNXh4eF9ncHRfMF83ICopTVBDNVhYWF9HUFQ7CiAKLQlzd2l0Y2ggCShzaW1wbGVfc3RydG91bChhcmd2WzJdLCBOVUxMLCAxMCkpIHsKKwlzd2l0Y2gJKHNpbXBsZV9zdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDEwKSkgewogCiAJY2FzZSAwOgogCQlpZiAoc3RyY21wIChhcmd2WzNdLCAib24iKSA9PSAwKSB7CkBAIC0xMDAwLDcgKzEwMDAsNyBAQAogCXN0cnVjdCBtcGM1eHh4X2dwaW8gKmdwaW8gPSAoc3RydWN0IG1wYzV4eHhfZ3BpbyAqKU1QQzVYWFhfR1BJTzsKIAlzdHJ1Y3QgbXBjNXh4eF9wc2MgKnBzYzEgPSAoc3RydWN0IG1wYzV4eHhfcHNjICopTVBDNVhYWF9QU0MxOwogCi0Jc3dpdGNoIAkoc2ltcGxlX3N0cnRvdWwoYXJndlsyXSwgTlVMTCwgMTApKSB7CisJc3dpdGNoCShzaW1wbGVfc3RydG91bChhcmd2WzJdLCBOVUxMLCAxMCkpIHsKIAogCWNhc2UgMToKIAkJLyogY2hlY2sgUlRTIDwtPiBDVFMgbG9vcCAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHFtODI2MC90cW04MjYwLmMgYi9ib2FyZC90cW04MjYwL3RxbTgyNjAuYwppbmRleCAwMjk4NjNiLi43MzZjNDEwIDEwMDY0NAotLS0gYS9ib2FyZC90cW04MjYwL3RxbTgyNjAuYworKysgYi9ib2FyZC90cW04MjYwL3RxbTgyNjAuYwpAQCAtMzA0LDcgKzMwNCw3IEBACiAgICAgdWxvbmcgc3RhcnQgPSAgbWVtY3RsLT5tZW1jXyAjIyBiclggJiAweEZGRkY4MDAwOwlcCiAgICAgdWxvbmcgc2l6ZW0gPSB+bWVtY3RsLT5tZW1jXyAjIyBvclggfCAweDAwMDA3RkZGOwlcCiAgICAgcHJpbnRmICgiXG4iCQkJCQlcCi0gICAgCSAgICAjYnJYICIgMHglMDh4ICAiICNvclggIiAweCUwOHggIgkJXAorCSAgICAjYnJYICIgMHglMDh4ICAiICNvclggIiAweCUwOHggIgkJXAogCSAgICAiPT0+IDB4JTA4bHggLi4uIDB4JTA4bHggPSAlbGQgTUJcbiIsCVwKIAltZW1jdGwtPm1lbWNfICMjIGJyWCwgbWVtY3RsLT5tZW1jXyAjIyBvclgsCVwKIAlzdGFydCwgc3RhcnQrc2l6ZW0sIChzaXplbSsxKT4+MjApOwkJXApkaWZmIC0tZ2l0IGEvYm9hcmQvdHFtODM0eC9wY2kuYyBiL2JvYXJkL3RxbTgzNHgvcGNpLmMKaW5kZXggZDg5NmYxNy4uZTNkMDMwOSAxMDA2NDQKLS0tIGEvYm9hcmQvdHFtODM0eC9wY2kuYworKysgYi9ib2FyZC90cW04MzR4L3BjaS5jCkBAIC0zNyw3ICszNyw3IEBACiBzdGF0aWMgc3RydWN0IHBjaV9jb25maWdfdGFibGUgcGNpX3RxbTgzNHhfY29uZmlnX3RhYmxlW10gPSB7CiAJe1BDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsCiAJIFBDSV9JRFNFTF9OVU1CRVIsIFBDSV9BTllfSUQsCi0gCSBwY2lfY2ZnZnVuY19jb25maWdfZGV2aWNlLCB7UENJX0VORVQwX0lPQUREUiwKKwkgcGNpX2NmZ2Z1bmNfY29uZmlnX2RldmljZSwge1BDSV9FTkVUMF9JT0FERFIsCiAJCQkJICAgICBQQ0lfRU5FVDBfTUVNQUREUiwKIAkJCQkgICAgIFBDSV9DT01NQU5EX01FTU9SWSB8IFBDSV9DT01NQU5EX01BU1RFUgogCQl9CmRpZmYgLS1naXQgYS9ib2FyZC90cW04eHgvdS1ib290LmxkcyBiL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzCmluZGV4IDdhYjI5ZWYuLjhjNDZlNDYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC90cW04eHgvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDc1MzQxMWYuLmMzMzU4MWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3RxbTh4eC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC90cmFiL2xvd2xldmVsX2luaXQuUwppbmRleCAxMjhhZTdlLi5iYzcxNDJhIDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC90cmFiL2xvd2xldmVsX2luaXQuUwpAQCAtMTI4LDcgKzEyOCw3IEBACiAjZGVmaW5lIFRSRUZNRAkweDAJLyogQ0JSKENBUyBiZWZvcmUgUkFTKS9hdXRvIHJlZnJlc2ggKi8KICNkZWZpbmUgVHJwCTB4MAkvKiAyIGNsayAqLwogI2RlZmluZSBUcmMJMHgzCS8qIDcgY2xrICovCi0jZGVmaW5lIFRjaHIJMHgyIAkvKiAzIGNsayAqLworI2RlZmluZSBUY2hyCTB4MgkvKiAzIGNsayAqLwogCiAjaWZkZWYgQ09ORklHX1RSQUJfNTBNSFoKICNkZWZpbmUgUkVGQ05UCTEyNjkJLyogcGVyaW9kPTE1LjYgdXMsIEhDTEs9NTBNaHosICgyMDQ4KzEtMTUuNio1MCkgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvbWVtb3J5LmMgYi9ib2FyZC90cmFiL21lbW9yeS5jCmluZGV4IDU4YmQ5OTUuLjg2MTRiZTcgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvbWVtb3J5LmMKKysrIGIvYm9hcmQvdHJhYi9tZW1vcnkuYwpAQCAtMjgyLDcgKzI4Miw3IEBACiAjZW5kaWYKIAkJCWlmKHJlYWRiYWNrID09ICp0ZXN0YWRkcikgewogCQkJCXByaW50ZiAoIk1lbW9yeSAoYWRkcmVzcyBsaW5lKSBlcnJvciBhdCAlMDhseDwtPiUwOGx4LCAiCi0JCQkJICAJIlhPUiB2YWx1ZSAlMDhseCAhXG4iLAorCQkJCQkiWE9SIHZhbHVlICUwOGx4ICFcbiIsCiAJCQkJCSh1bG9uZyl0ZXN0YWRkciwgKHVsb25nKXRhcmdldCwKIAkJCQkJeG9yKTsKIAkJCQlyZXQgPSAtMTsKZGlmZiAtLWdpdCBhL2JvYXJkL3RyYWIvdHJhYi5jIGIvYm9hcmQvdHJhYi90cmFiLmMKaW5kZXggZDhhNzI2Yi4uYjg2OTAyMyAxMDA2NDQKLS0tIGEvYm9hcmQvdHJhYi90cmFiLmMKKysrIGIvYm9hcmQvdHJhYi90cmFiLmMKQEAgLTg5LDcgKzg5LDcgQEAKIAlncGlvLT5QQkNPTiA9IDB4YWFhYWFhYWE7CiAJZ3Bpby0+UEJVUCAgPSAweGZmZmY7CiAJLyogSU5QVVQgbkNUUzAgblJUUzAgVFhEWzFdIFRYRFswXSBSWERbMV0gUlhEWzBdCSovCi0JLyogIDAwLCAgICAxMCwgICAgICAxMCwgICAgICAxMCwgICAgICAxMCwgICAgICAxMCwgICAgICAxMCAJKi8KKwkvKiAgMDAsICAgIDEwLCAgICAgIDEwLCAgICAgIDEwLCAgICAgIDEwLCAgICAgIDEwLCAgICAgIDEwCSovCiAJZ3Bpby0+UEZDT04gPSAoMjw8MCkgfCAoMjw8MikgfCAoMjw8NCkgfCAoMjw8NikgfCAoMjw8OCkgfCAoMjw8MTApOwogI2lmZGVmIENPTkZJR19IV0ZMT1cKIAkvKiBkbyBub3QgcHVsbCB1cCBSWEQwLCBSWEQxLCBUWEQwLCBUWEQxLCBDVFMwLCBSVFMwICovCkBAIC0xMzAsNyArMTMwLDcgQEAKIAogI2lmZGVmIENPTkZJR19EUklWRVJfUzNDMjRYMF9JMkMKIAkvKiBDb25maWd1cmUgSS9PIHBvcnRzIFBHNSB1bmQgUEc2IGZvciBJMkMgKi8KLSAJZ3Bpby0+UEdDT04gPSAoZ3Bpby0+UEdDT04gJiAweDAwM2MwMCkgfCAweDAwM2MwMDsKKwlncGlvLT5QR0NPTiA9IChncGlvLT5QR0NPTiAmIDB4MDAzYzAwKSB8IDB4MDAzYzAwOwogI2VuZGlmIC8qIENPTkZJR19EUklWRVJfUzNDMjRYMF9JMkMgKi8KIAogCXJldHVybiAwOwpAQCAtMzIxLDkgKzMyMSw5IEBACiB9CiAKIFVfQk9PVF9DTUQoCi0gCWtiZCwJMSwJMSwJZG9fa2JkLAotIAkia2JkICAgICAtIHJlYWQga2V5Ym9hcmQgc3RhdHVzXG4iLAotIAlOVUxMCisJa2JkLAkxLAkxLAlkb19rYmQsCisJImtiZCAgICAgLSByZWFkIGtleWJvYXJkIHN0YXR1c1xuIiwKKwlOVUxMCiApOwogCiAjaWZkZWYgQ09ORklHX01PREVNX1NVUFBPUlQKQEAgLTM1Niw3ICszNTYsNyBAQAogCWludCBpOwogCiAJLyogQ29uZmlndXJlIEkvTyBwb3J0cy4gKi8KLSAJZ3Bpby0+UERDT04gPSAoZ3Bpby0+UERDT04gJiAweEYzRkZGRikgfCAweDA0MDAwMDsKKwlncGlvLT5QRENPTiA9IChncGlvLT5QRENPTiAmIDB4RjNGRkZGKSB8IDB4MDQwMDAwOwogCWdwaW8tPlBHQ09OID0gKGdwaW8tPlBHQ09OICYgMHgwRjNGRkYpIHwgMHgwMDgwMDA7CiAJZ3Bpby0+UEdDT04gPSAoZ3Bpby0+UEdDT04gJiAweDBDRkZGRikgfCAweDAyMDAwMDsKIAlncGlvLT5QR0NPTiA9IChncGlvLT5QR0NPTiAmIDB4MDNGRkZGKSB8IDB4MDgwMDAwOwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJhYi90c2MyMDAwLmggYi9ib2FyZC90cmFiL3RzYzIwMDAuaAppbmRleCBhYWM5YzBjLi5hZjFiNjQ0IDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL3RzYzIwMDAuaAorKysgYi9ib2FyZC90cmFiL3RzYzIwMDAuaApAQCAtMjksNDUgKzI5LDQ1IEBACiAjZGVmaW5lIF9UU0MyMDAwX0hfCiAKIC8qIHRlbXBlcmF0dXJlIGNoYW5uZWwgbXVsdGlwbGV4ZXIgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgQ09OX01VWDAgICAgICAgICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRkZDRkYpIHwgMHgwMDAwMDEwMCkKLSNkZWZpbmUgQ0xSX01VWDAgICAgICAgICAJKGdwaW8tPlBDREFUICY9IDB4MEZGRUYpCi0jZGVmaW5lIFNFVF9NVVgwICAgICAgICAgCShncGlvLT5QQ0RBVCB8PSAweDAwMDEwKQorI2RlZmluZSBDT05fTVVYMAkJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRkZDRkYpIHwgMHgwMDAwMDEwMCkKKyNkZWZpbmUgQ0xSX01VWDAJCShncGlvLT5QQ0RBVCAmPSAweDBGRkVGKQorI2RlZmluZSBTRVRfTVVYMAkJKGdwaW8tPlBDREFUIHw9IDB4MDAwMTApCiAKLSNkZWZpbmUgQ09OX01VWDEgICAgICAgICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRkYzRkYpIHwgMHgwMDAwMDQwMCkKLSNkZWZpbmUgQ0xSX01VWDEgICAgICAgICAJKGdwaW8tPlBDREFUICY9IDB4MEZGREYpCi0jZGVmaW5lIFNFVF9NVVgxICAgICAgICAgCShncGlvLT5QQ0RBVCB8PSAweDAwMDIwKQorI2RlZmluZSBDT05fTVVYMQkJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRkYzRkYpIHwgMHgwMDAwMDQwMCkKKyNkZWZpbmUgQ0xSX01VWDEJCShncGlvLT5QQ0RBVCAmPSAweDBGRkRGKQorI2RlZmluZSBTRVRfTVVYMQkJKGdwaW8tPlBDREFUIHw9IDB4MDAwMjApCiAKLSNkZWZpbmUgQ09OX01VWDFfRU5BQkxFICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRkNGRkYpIHwgMHgwMDAwMTAwMCkKLSNkZWZpbmUgQ0xSX01VWDFfRU5BQkxFICAJKGdwaW8tPlBDREFUIHw9IDB4MDAwNDApCi0jZGVmaW5lIFNFVF9NVVgxX0VOQUJMRSAgCShncGlvLT5QQ0RBVCAmPSAweDBGRkJGKQorI2RlZmluZSBDT05fTVVYMV9FTkFCTEUJCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGRkZDRkZGKSB8IDB4MDAwMDEwMDApCisjZGVmaW5lIENMUl9NVVgxX0VOQUJMRQkJKGdwaW8tPlBDREFUIHw9IDB4MDAwNDApCisjZGVmaW5lIFNFVF9NVVgxX0VOQUJMRQkJKGdwaW8tPlBDREFUICY9IDB4MEZGQkYpCiAKLSNkZWZpbmUgQ09OX01VWDJfRU5BQkxFICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGRjNGRkYpIHwgMHgwMDAwNDAwMCkKLSNkZWZpbmUgQ0xSX01VWDJfRU5BQkxFICAJKGdwaW8tPlBDREFUIHw9IDB4MDAwODApCi0jZGVmaW5lIFNFVF9NVVgyX0VOQUJMRSAgCShncGlvLT5QQ0RBVCAmPSAweDBGRjdGKQorI2RlZmluZSBDT05fTVVYMl9FTkFCTEUJCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGRkYzRkZGKSB8IDB4MDAwMDQwMDApCisjZGVmaW5lIENMUl9NVVgyX0VOQUJMRQkJKGdwaW8tPlBDREFUIHw9IDB4MDAwODApCisjZGVmaW5lIFNFVF9NVVgyX0VOQUJMRQkJKGdwaW8tPlBDREFUICY9IDB4MEZGN0YpCiAKLSNkZWZpbmUgQ09OX01VWDNfRU5BQkxFICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGQ0ZGRkYpIHwgMHgwMDAxMDAwMCkKLSNkZWZpbmUgQ0xSX01VWDNfRU5BQkxFICAJKGdwaW8tPlBDREFUIHw9IDB4MDAxMDApCi0jZGVmaW5lIFNFVF9NVVgzX0VOQUJMRSAgCShncGlvLT5QQ0RBVCAmPSAweDBGRUZGKQorI2RlZmluZSBDT05fTVVYM19FTkFCTEUJCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGRkNGRkZGKSB8IDB4MDAwMTAwMDApCisjZGVmaW5lIENMUl9NVVgzX0VOQUJMRQkJKGdwaW8tPlBDREFUIHw9IDB4MDAxMDApCisjZGVmaW5lIFNFVF9NVVgzX0VOQUJMRQkJKGdwaW8tPlBDREFUICY9IDB4MEZFRkYpCiAKLSNkZWZpbmUgQ09OX01VWDRfRU5BQkxFICAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZGM0ZGRkYpIHwgMHgwMDA0MDAwMCkKLSNkZWZpbmUgQ0xSX01VWDRfRU5BQkxFICAJKGdwaW8tPlBDREFUIHw9IDB4MDAyMDApCi0jZGVmaW5lIFNFVF9NVVg0X0VOQUJMRSAgCShncGlvLT5QQ0RBVCAmPSAweDBGREZGKQorI2RlZmluZSBDT05fTVVYNF9FTkFCTEUJCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGRjNGRkZGKSB8IDB4MDAwNDAwMDApCisjZGVmaW5lIENMUl9NVVg0X0VOQUJMRQkJKGdwaW8tPlBDREFUIHw9IDB4MDAyMDApCisjZGVmaW5lIFNFVF9NVVg0X0VOQUJMRQkJKGdwaW8tPlBDREFUICY9IDB4MEZERkYpCiAKLSNkZWZpbmUgQ09OX1NFTF9URU1QX1ZfMCAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkZDRkZGRkYpIHwgMHgwMDEwMDAwMCkKLSNkZWZpbmUgQ0xSX1NFTF9URU1QX1ZfMCAJKGdwaW8tPlBDREFUICY9IDB4MEZCRkYpCi0jZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzAgCShncGlvLT5QQ0RBVCB8PSAweDAwNDAwKQorI2RlZmluZSBDT05fU0VMX1RFTVBfVl8wCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGQ0ZGRkZGKSB8IDB4MDAxMDAwMDApCisjZGVmaW5lIENMUl9TRUxfVEVNUF9WXzAJKGdwaW8tPlBDREFUICY9IDB4MEZCRkYpCisjZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzAJKGdwaW8tPlBDREFUIHw9IDB4MDA0MDApCiAKLSNkZWZpbmUgQ09OX1NFTF9URU1QX1ZfMSAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkYzRkZGRkYpIHwgMHgwMDQwMDAwMCkKLSNkZWZpbmUgQ0xSX1NFTF9URU1QX1ZfMSAJKGdwaW8tPlBDREFUICY9IDB4MEY3RkYpCi0jZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzEgCShncGlvLT5QQ0RBVCB8PSAweDAwODAwKQorI2RlZmluZSBDT05fU0VMX1RFTVBfVl8xCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZGM0ZGRkZGKSB8IDB4MDA0MDAwMDApCisjZGVmaW5lIENMUl9TRUxfVEVNUF9WXzEJKGdwaW8tPlBDREFUICY9IDB4MEY3RkYpCisjZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzEJKGdwaW8tPlBDREFUIHw9IDB4MDA4MDApCiAKLSNkZWZpbmUgQ09OX1NFTF9URU1QX1ZfMiAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRkNGRkZGRkYpIHwgMHgwMTAwMDAwMCkKLSNkZWZpbmUgQ0xSX1NFTF9URU1QX1ZfMiAJKGdwaW8tPlBDREFUICY9IDB4MEVGRkYpCi0jZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzIgCShncGlvLT5QQ0RBVCB8PSAweDAxMDAwKQorI2RlZmluZSBDT05fU0VMX1RFTVBfVl8yCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEZDRkZGRkZGKSB8IDB4MDEwMDAwMDApCisjZGVmaW5lIENMUl9TRUxfVEVNUF9WXzIJKGdwaW8tPlBDREFUICY9IDB4MEVGRkYpCisjZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzIJKGdwaW8tPlBDREFUIHw9IDB4MDEwMDApCiAKLSNkZWZpbmUgQ09OX1NFTF9URU1QX1ZfMyAJKGdwaW8tPlBDQ09OID0gKGdwaW8tPlBDQ09OICYgMHgwRjNGRkZGRkYpIHwgMHgwNDAwMDAwMCkKLSNkZWZpbmUgQ0xSX1NFTF9URU1QX1ZfMyAJKGdwaW8tPlBDREFUICY9IDB4MERGRkYpCi0jZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzMgCShncGlvLT5QQ0RBVCB8PSAweDAyMDAwKQorI2RlZmluZSBDT05fU0VMX1RFTVBfVl8zCShncGlvLT5QQ0NPTiA9IChncGlvLT5QQ0NPTiAmIDB4MEYzRkZGRkZGKSB8IDB4MDQwMDAwMDApCisjZGVmaW5lIENMUl9TRUxfVEVNUF9WXzMJKGdwaW8tPlBDREFUICY9IDB4MERGRkYpCisjZGVmaW5lIFNFVF9TRUxfVEVNUF9WXzMJKGdwaW8tPlBDREFUIHw9IDB4MDIwMDApCiAKIC8qIFRTQzIwMDAgcmVnaXN0ZXIgZGVmaW5pdGlvbiAqLwogI2RlZmluZSBUU0MyMDAwX1JFR19YCQkoKDAgPDwgMTEpIHwgKDAgPDwgNSkpCkBAIC04OSwyMSArODksMjEgQEAKICNkZWZpbmUgVFNDMjAwMF9SRUdfQ09ORklHCSgoMSA8PCAxMSkgfCAoNSA8PCA1KSkKIAogLyogYml0IGRlZmluaXRpb24gb2YgVFNDMjAwMCBBREMgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgVENfUFNNICAgICAgICAgICgxIDw8IDE1KQotI2RlZmluZSBUQ19TVFMgICAgICAgICAgKDEgPDwgMTQpCi0jZGVmaW5lIFRDX0FEMyAgICAgICAgICAoMSA8PCAxMykKLSNkZWZpbmUgVENfQUQyICAgICAgICAgICgxIDw8IDEyKQotI2RlZmluZSBUQ19BRDEgICAgICAgICAgKDEgPDwgMTEpCi0jZGVmaW5lIFRDX0FEMCAgICAgICAgICAoMSA8PCAxMCkKLSNkZWZpbmUgVENfUlMxICAgICAgICAgICgxIDw8IDkpCi0jZGVmaW5lIFRDX1JTMCAgICAgICAgICAoMSA8PCA4KQotI2RlZmluZSBUQ19BVjEgICAgICAgICAgKDEgPDwgNykKLSNkZWZpbmUgVENfQVYwICAgICAgICAgICgxIDw8IDYpCi0jZGVmaW5lIFRDX0NMMSAgICAgICAgICAoMSA8PCA1KQotI2RlZmluZSBUQ19DTDAgICAgICAgICAgKDEgPDwgNCkKLSNkZWZpbmUgVENfUFYyICAgICAgICAgICgxIDw8IDMpCi0jZGVmaW5lIFRDX1BWMSAgICAgICAgICAoMSA8PCAyKQotI2RlZmluZSBUQ19QVjAgICAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgVENfUFNNCQkJKDEgPDwgMTUpCisjZGVmaW5lIFRDX1NUUwkJCSgxIDw8IDE0KQorI2RlZmluZSBUQ19BRDMJCQkoMSA8PCAxMykKKyNkZWZpbmUgVENfQUQyCQkJKDEgPDwgMTIpCisjZGVmaW5lIFRDX0FEMQkJCSgxIDw8IDExKQorI2RlZmluZSBUQ19BRDAJCQkoMSA8PCAxMCkKKyNkZWZpbmUgVENfUlMxCQkJKDEgPDwgOSkKKyNkZWZpbmUgVENfUlMwCQkJKDEgPDwgOCkKKyNkZWZpbmUgVENfQVYxCQkJKDEgPDwgNykKKyNkZWZpbmUgVENfQVYwCQkJKDEgPDwgNikKKyNkZWZpbmUgVENfQ0wxCQkJKDEgPDwgNSkKKyNkZWZpbmUgVENfQ0wwCQkJKDEgPDwgNCkKKyNkZWZpbmUgVENfUFYyCQkJKDEgPDwgMykKKyNkZWZpbmUgVENfUFYxCQkJKDEgPDwgMikKKyNkZWZpbmUgVENfUFYwCQkJKDEgPDwgMSkKIAogLyogZGVmYXVsdCB2YWx1ZSBmb3IgVFNDMjAwMCBBREMgcmVnaXN0ZXIgZm9yIHVzZSB3aXRoIHRvdWNoIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBERUZBVUxUX0FEQwkJKFRDX1BWMSB8IFRDX0FWMCB8IFRDX0FWMSB8IFRDX1JTMCkKQEAgLTExMSw4ICsxMTEsNyBAQAogI2RlZmluZSBUU0MyMDAwX0RFTEFZX0JBU0UJNTAwCiAjZGVmaW5lIFRTQzIwMDBfTk9fU0VOU09SCS0weDEwMDAwCiAKLSNkZWZpbmUgRVJST1JfQkFUVEVSWSAgIDIyMCAgICAgLyogbXVzdCBiZSBhZGp1c3RlZCwgaWYgUjY4IGlzIGNoYW5nZWQgb24KLQkJCQkgKiBUUkFCICovCisjZGVmaW5lIEVSUk9SX0JBVFRFUlkJCTIyMAkvKiBtdXN0IGJlIGFkanVzdGVkLCBpZiBSNjggaXMgY2hhbmdlZCBvbiBUUkFCICovCiAKIHZvaWQgdHNjMjAwMF93cml0ZSh1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQgc2hvcnQpOwogdW5zaWduZWQgc2hvcnQgdHNjMjAwMF9yZWFkICh1bnNpZ25lZCBzaG9ydCk7CmRpZmYgLS1naXQgYS9ib2FyZC90cmFiL3ZmZC5jIGIvYm9hcmQvdHJhYi92ZmQuYwppbmRleCBiNjc5OGZkLi5lYjUwNmYzIDEwMDY0NAotLS0gYS9ib2FyZC90cmFiL3ZmZC5jCisrKyBiL2JvYXJkL3RyYWIvdmZkLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogCQkJYml0ID0gZ3JpZF9jeWNsZSAqIDI1NiAgKiA0ICsKIAkJCSAgICAgKGdyaWRfY3ljbGUgKyAyMDApICogNCArCiAJCQkgICAgIGZyYW1lX2J1Zl9vZmZzICsgZGlzcGxheTsKLSAJCQkvKiB3cmFwIGFycm91bmQgaWYgb2Zmc2V0IChzZWUgbWFudWFsIFMzQzI0MDApICovCisJCQkvKiB3cmFwIGFycm91bmQgaWYgb2Zmc2V0IChzZWUgbWFudWFsIFMzQzI0MDApICovCiAJCQlpZiAoYml0Pj1GUkFNRV9CVUZfU0laRSo4KQogCQkJCWJpdCA9IGJpdCAtIChGUkFNRV9CVUZfU0laRSAqIDgpOwogCQkJYWRyID0gZ2QtPmZiX2Jhc2UgKyAoYml0LzMyKSAqIDQgKyAoMyAtIChiaXQlMzIpIC8gOCk7CkBAIC0xMTcsNyArMTE3LDcgQEAKIAkJCWlmKGdyaWRfY3ljbGU8NTUpCiAJCQkJYml0ID0gZ3JpZF9jeWNsZSoyNTYqNCsoZ3JpZF9jeWNsZSsyMDEpKjQrZnJhbWVfYnVmX29mZnMrZGlzcGxheTsKIAkJCWVsc2UKLQkJCQliaXQgPSBncmlkX2N5Y2xlKjI1Nio0KzIwMCo0K2ZyYW1lX2J1Zl9vZmZzK2Rpc3BsYXktNDsgCS8qIGdyaWQgbnIuIDAgKi8KKwkJCQliaXQgPSBncmlkX2N5Y2xlKjI1Nio0KzIwMCo0K2ZyYW1lX2J1Zl9vZmZzK2Rpc3BsYXktNDsJLyogZ3JpZCBuci4gMCAqLwogCQkJLyogd3JhcCBhcnJvdW5kIGlmIG9mZnNldCAoc2VlIG1hbnVhbCBTM0MyNDAwKSAqLwogCQkJaWYgKGJpdD49RlJBTUVfQlVGX1NJWkUqOCkKIAkJCQliaXQgPSBiaXQtKEZSQU1FX0JVRl9TSVpFKjgpOwpAQCAtMTkwLDcgKzE5MCw3IEBACiAJCQkgICAgLyogRGlzcGxheSAwIHJlZCBwaXhlbHMgKi8KIAkJCSAgICB2ZmRfdGFibGVbeF1beV1bMV1bZGlzcGxheV1bMF0gPQogCQkJCSh4PT0wKSA/IHkqMTYrNTEyK2Rpc3BsYXkKLQkJCSAgICAJICAgICAgIDogKHglNCkqNCt5KjE2KygoeC0xKS8yKSoxMDI0KzUxMitkaXNwbGF5OworCQkJCSAgICAgICA6ICh4JTQpKjQreSoxNisoKHgtMSkvMikqMTAyNCs1MTIrZGlzcGxheTsKIAkJICAgIH0KIAkJfQogCSAgICB9CkBAIC00ODgsNyArNDg4LDcgQEAKIAlsY2QtPkxDRENPTjEgPSAweDAwMDAwMDAwOwogCS8qIGZyYW1lIGJ1ZmZlciBzdGFydGFkciAqLwogCWxjZC0+TENEU0FERFIxID0gZ2QtPmZiX2Jhc2UgPj4gMTsKLSAJLyogZnJhbWUgYnVmZmVyIGVuZGFkciAqLworCS8qIGZyYW1lIGJ1ZmZlciBlbmRhZHIgKi8KIAlsY2QtPkxDRFNBRERSMiA9IChnZC0+ZmJfYmFzZSArIEZSQU1FX0JVRl9TSVpFKSA+PiAxOwogCWxjZC0+TENEU0FERFIzID0gKCgyNTYvNCkpOwogCWxjZC0+TENEQ09OMiA9IDB4MDAwREMwMDA7CmRpZmYgLS1naXQgYS9ib2FyZC91YzEwMC91LWJvb3QubGRzIGIvYm9hcmQvdWMxMDAvdS1ib290LmxkcwppbmRleCAyNTU0YWJjLi5kYjI5MzQyIDEwMDY0NAotLS0gYS9ib2FyZC91YzEwMC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3VjMTAwL3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3VjMTAwL3UtYm9vdC5sZHMuZGVidWcgYi9ib2FyZC91YzEwMC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDVhZWRlMTAuLjI1NzAyYTUgMTAwNjQ0Ci0tLSBhL2JvYXJkL3VjMTAwL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvdWMxMDAvdS1ib290Lmxkcy5kZWJ1ZwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3VjMTAwL3VjMTAwLmMgYi9ib2FyZC91YzEwMC91YzEwMC5jCmluZGV4IDRmMmNmZjYuLmE1ZGQ5NWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3VjMTAwL3VjMTAwLmMKKysrIGIvYm9hcmQvdWMxMDAvdWMxMDAuYwpAQCAtMTg4LDcgKzE4OCw3IEBACiAJbWVtY3RsLT5tZW1jX21wdHByID0gMHgwMjAwOyAvKiBEaXZpZGUgYnkgMzIgV1YgKi8KIAogCW1lbWN0bC0+bWVtY19tYW1yID0gQ0ZHX01BTVJfVkFMICYgMHhGRjdGRkZGRjsgLyogQml0IDggOj0gIjAiIEtlaW4gUmVmcmVzaCBXViAqLwotICAgCW1lbWN0bC0+bWVtY19tYm1yID0gQ0ZHX01CTVJfVkFMOworCW1lbWN0bC0+bWVtY19tYm1yID0gQ0ZHX01CTVJfVkFMOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCS8qIEluaXRpYWxpemUgdGhlIE1lbW9yeSBDb250cm9sbGVyIHJlZ2lzdGVycywgTVBUUFIsIENoaXAgU2VsZWN0IDEgICAgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3V0eDgyNDUvZmxhc2guYyBiL2JvYXJkL3V0eDgyNDUvZmxhc2guYwppbmRleCAzMjcxODI3Li4xOTlmNjE5IDEwMDY0NAotLS0gYS9ib2FyZC91dHg4MjQ1L2ZsYXNoLmMKKysrIGIvYm9hcmQvdXR4ODI0NS9mbGFzaC5jCkBAIC00Niw3ICs0Niw3IEBACiAjZW5kaWYKIAogI2RlZmluZQlGTEFTSF9CQU5LX1NJWkUJKCh1aW50KSgxNiAqIDEwMjQgKiAxMDI0KSkJLyogbWF4IDE2TWJ5dGUgKi8KLSNkZWZpbmUJTUFJTl9TRUNUX1NJWkUgCTB4MTAwMDAKKyNkZWZpbmUJTUFJTl9TRUNUX1NJWkUJMHgxMDAwMAogI2RlZmluZQlTRUNUX1NJWkVfMzJLQgkweDgwMDAKICNkZWZpbmUJU0VDVF9TSVpFXzhLQgkweDIwMDAKIApkaWZmIC0tZ2l0IGEvYm9hcmQvdjM3L2ZsYXNoLmMgYi9ib2FyZC92MzcvZmxhc2guYwppbmRleCA2YTMxOTcyLi5kODQ1ZjY1IDEwMDY0NAotLS0gYS9ib2FyZC92MzcvZmxhc2guYworKysgYi9ib2FyZC92MzcvZmxhc2guYwpAQCAtMzEsNyArMzEsNyBAQAogICogYXJlIG5vdCB0ZXN0ZWQuCiAgKgogICogKD8pIERvZXMgYW4gUlBYTGl0ZSBib2FyZCB3aGljaAotICogCWRvZXMgbm90IHVzZSBBTTI5TFY4MDAgZmxhc2ggbWVtb3J5IGV4aXN0ID8KKyAqCWRvZXMgbm90IHVzZSBBTTI5TFY4MDAgZmxhc2ggbWVtb3J5IGV4aXN0ID8KICAqCUkgZG9uJ3Qga25vdy4uLgogICovCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3YzNy91LWJvb3QubGRzIGIvYm9hcmQvdjM3L3UtYm9vdC5sZHMKaW5kZXggODI1M2EyNS4uN2JjZjA2MSAxMDA2NDQKLS0tIGEvYm9hcmQvdjM3L3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvdjM3L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3YzNy92MzcuYyBiL2JvYXJkL3YzNy92MzcuYwppbmRleCAxZWY4NzlkLi4yZTQ3NTczIDEwMDY0NAotLS0gYS9ib2FyZC92MzcvdjM3LmMKKysrIGIvYm9hcmQvdjM3L3YzNy5jCkBAIC0zOCw4ICszOCw4IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2RlZmluZSBNQllURSAJCSgxMDI0KjEwMjQpCi0jZGVmaW5lIERSQU1fREVMQVkgIAkweDAwMDAwMzc5ICAvKiBEUkFNIGRlbGF5IGNvdW50ICovCisjZGVmaW5lIE1CWVRFCQkoMTAyNCoxMDI0KQorI2RlZmluZSBEUkFNX0RFTEFZCTB4MDAwMDAzNzkgIC8qIERSQU0gZGVsYXkgY291bnQgKi8KICNkZWZpbmUJX05PVF9VU0VEXwkweEZGRkZDQzI1CiAKIGNvbnN0IHVpbnQgc2RyYW1fdGFibGVbXSA9CmRpZmYgLS1naXQgYS9ib2FyZC92ZXJzYXRpbGUvZmxhc2guYyBiL2JvYXJkL3ZlcnNhdGlsZS9mbGFzaC5jCmluZGV4IDcxNTMzNzEuLmNhNzdjOGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL3ZlcnNhdGlsZS9mbGFzaC5jCisrKyBiL2JvYXJkL3ZlcnNhdGlsZS9mbGFzaC5jCkBAIC05Miw3ICs5Miw3IEBACiAJaWYgKG9uKQogCSAgICB0bXAgfD0gVkVSU0FUSUxFX0ZMQVNIUFJPR19GTFZQUEVOOwogCWVsc2UKLSAgICAJICAgIHRtcCAmPSB+VkVSU0FUSUxFX0ZMQVNIUFJPR19GTFZQUEVOOworCSAgICB0bXAgJj0gflZFUlNBVElMRV9GTEFTSFBST0dfRkxWUFBFTjsKIAogCSoodW5zaWduZWQgaW50ICopKFZFUlNBVElMRV9GTEFTSENUUkwpID0gdG1wOwogfQpkaWZmIC0tZ2l0IGEvYm9hcmQvdmVyc2F0aWxlL3ZlcnNhdGlsZS5jIGIvYm9hcmQvdmVyc2F0aWxlL3ZlcnNhdGlsZS5jCmluZGV4IDlkMWEyNWUuLjNiOWIwMjAgMTAwNjQ0Ci0tLSBhL2JvYXJkL3ZlcnNhdGlsZS92ZXJzYXRpbGUuYworKysgYi9ib2FyZC92ZXJzYXRpbGUvdmVyc2F0aWxlLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBSb3V0aW5lOmV0aGVyX19pbml0CiAgRGVzY3JpcHRpb246IHRha2UgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgb3V0IG9mIHJlc2V0IGFuZCB3YWl0Ci0JICAJCSAgIGZvciB0aGUgRUVQUk9NIGxvYWQgdG8gY29tcGxldGUuCisJCQkgICBmb3IgdGhlIEVFUFJPTSBsb2FkIHRvIGNvbXBsZXRlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHZvaWQgZXRoZXJfX2luaXQgKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9ib2FyZC92b2ljZWJsdWUvc2V0dXAuUyBiL2JvYXJkL3ZvaWNlYmx1ZS9zZXR1cC5TCmluZGV4IDc4Y2QyYjYuLmNjNTBlOGMgMTAwNjQ0Ci0tLSBhL2JvYXJkL3ZvaWNlYmx1ZS9zZXR1cC5TCisrKyBiL2JvYXJkL3ZvaWNlYmx1ZS9zZXR1cC5TCkBAIC0yNzMsNyArMjczLDcgQEAKIAltb3YJcjAsICMweDQwMDAKIHNkZWxheToKIAlzdWJzCXIwLCByMCwgIzB4MQotCWJuZSAJc2RlbGF5CisJYm5lCXNkZWxheQogCiAJLyogYmFjayB0byBhcmNoIGNhbGxpbmcgY29kZSAqLwogCW1vdglwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL3c3by9wb3N0MS5TIGIvYm9hcmQvdzdvL3Bvc3QxLlMKaW5kZXggMjFkMjA2ZS4uYTZmNDZjOCAxMDA2NDQKLS0tIGEvYm9hcmQvdzdvL3Bvc3QxLlMKKysrIGIvYm9hcmQvdzdvL3Bvc3QxLlMKQEAgLTYyLDcgKzYyLDcgQEAKICAqIFN3aXRjaCB0byAuZGF0YSBzZWN0aW9uLgogICovCiAJLnNlY3Rpb24gIi5kYXRhIgotZXJyX3N0cjogCS5hc2NpeiAiKioqIFBPU1QgRVJST1IgICA9ICIKK2Vycl9zdHI6CS5hc2NpeiAiKioqIFBPU1QgRVJST1IgICA9ICIKIHdhcm5fc3RyOgkuYXNjaXogIioqKiBQT1NUIFdBUk5JTkcgPSAiCiBlbmRfc3RyOiAgLmFzY2l6ICJcclxuIgogCkBAIC05Myw3ICs5Myw3IEBACiAJc3R3CXIwLCArMTYocjEpCQkvKiBTYXZlIGxpbmsgcmVnaXN0ZXIgKi8KIAlzdHcJcjQsICs4KHIxKQkJLyogc2F2ZSBSNCAqLwogCi0JV0FUQ0hET0dfUkVTRVQgICAgICAgIAkJLyogUmVzZXQgdGhlIHdhdGNoZG9nICovCisJV0FUQ0hET0dfUkVTRVQJCQkvKiBSZXNldCB0aGUgd2F0Y2hkb2cgKi8KIAogCWFkZGkgICAgcjMsIDAsIEVSUl9GRgkJLyogZmlyc3QgdGVzdCB2YWx1ZSBpcyBmZmZmICovCiAJYWRkaQlyNCwgcjMsIDAJCS8qIHNhdmUgY29weSBvZiBwYXR0ZXJuICovCkBAIC0xNTUsNyArMTU1LDcgQEAKIAlhZGRpCXIzMSwgcjMsIDAJCS8qIHNhdmUgb3JpZ2luYWwgc2l6ZSAqLwogCiAJLyogbm93IGtpY2sgdGhlIGRvZyBhbmQgdGVzdCB0aGUgbWVtICovCi0JV0FUQ0hET0dfUkVTRVQgICAgICAgIAkJLyogUmVzZXQgdGhlIHdhdGNoZG9nICovCisJV0FUQ0hET0dfUkVTRVQJCQkvKiBSZXNldCB0aGUgd2F0Y2hkb2cgKi8KIAlibAlEYXRhX0J1c3RlcgkJLyogdGVzdCBjcm9zc2VkL3Nob3J0ZWQgZGF0YSBsaW5lcyAqLwogCWFkZGkJcjMsIHIzMCwgMAkJLyogZ2V0IGxvZzIobWVtc2l6ZSkgKi8KIAlhZGRpCXI0LCByMzEsIDAJCS8qIGdldCBtZW1zaXplICovCkBAIC0yNTcsNyArMjU3LDcgQEAKIAlhZGRpCXIyOCwgcjI4LCA0CQkvKiBJbmNyZW1lbnQgdG8gbmV4dCB3b3JkICovCiAJYW5kaS4JcjI3LCByMjgsIDB4ZmZmZgkvKiBjaGVjayBmb3IgMl4xNiBsb29wcyAqLwogCWJuZQljbHJfc2tpcAkJLyogaWYgbm90IHRoZXJlLCB0aGVuIHNraXAgKi8KLQlXQVRDSERPR19SRVNFVCAgIAkJLyoga2ljayB0aGUgZG9nIGV2ZXJ5IG5vdyBhbmQgdGhlbiAqLworCVdBVENIRE9HX1JFU0VUCQkJLyoga2ljayB0aGUgZG9nIGV2ZXJ5IG5vdyBhbmQgdGhlbiAqLwogY2xyX3NraXA6CiAJYmRuegljbHJfbG9vcAkJLyogUm91bmQgYW5kIHJvdW5kLi4uICovCiAKQEAgLTI3Miw3ICsyNzIsNyBAQAogCSAqIHRodXMgdGhlIHNlcXVlbmNlIDAsMSwyLDQsOCwuLiwyXihuLTEpCiAJICogc2V0dGluZyB0aGUgYml0IGlzIGRvbmUgd2l0aCB0aGUgZm9sbG93aW5nIHNoaWZ0IGZ1bmN0aW9ucy4KIAkgKi8KLQlXQVRDSERPR19SRVNFVCAgIAkJLyogUmVzZXQgdGhlIHdhdGNoZG9nICovCisJV0FUQ0hET0dfUkVTRVQJCQkvKiBSZXNldCB0aGUgd2F0Y2hkb2cgKi8KIAogCWFkZGkJcjMxLCAwLCAxCQkvKiByMzEgPSAxICovCiAJc2x3CXIyOCwgcjMxLCByMzAJCS8qIHNldCBiaXQgY29yZXNwb25kaW5nIHRvIGxvb3AgY250ICovCkBAIC0zMDEsMjAgKzMwMSwyMCBAQAogCWJuZQlDYXNwZXIJCQkvKiAgIHdlIGZvdW5kIGEgZ2hvc3QhICovCiAKIAkvKiBub3cgY2xvc2UgZ2hvc3QgKCBpbm5lciApIGxvb3AgKi8KLQlhZGRpIAlyMjksIHIyOSwgMQkJLyogaW5jcmVtZW50IGlubmVyIGxvb3AgY291bnRlciAqLwotCWNtcHcgCXIyOSwgcjI2CQkvKiBjaGVjayBmb3IgbGFzdCBpbm5lciBsb29wICovCisJYWRkaQlyMjksIHIyOSwgMQkJLyogaW5jcmVtZW50IGlubmVyIGxvb3AgY291bnRlciAqLworCWNtcHcJcjI5LCByMjYJCS8qIGNoZWNrIGZvciBsYXN0IGlubmVyIGxvb3AgKi8KIAlibHQJCWluc2lkZQkJLyogZG8gbW9yZSBpbm5lciBsb29wcyAqLwogCiAJLyogbm93IGNsb3NlIHJlZmVyYW5jZSAoIG91dGVyICkgbG9vcCAqLwotCWFkZGkgCXIzMSwgMCwgMCAJCS8qIHIzMSA9IHplcm8gKi8KKwlhZGRpCXIzMSwgMCwgMAkJLyogcjMxID0gemVybyAqLwogCXN0YglyMzEsIDAoMjgpCQkvKiB6ZXJvIG91dCB0aGUgYWx0ZXJlZCBhZGRyZXNzIGxvYy4gKi8KIAkvKgogCSAqIEluY3JlbWVudCBhbmQgY2hlY2sgZm9yIGVuZCwgY291bnQgaXMgemVybyBiYXNlZC4KIAkgKiBXaXRoIHRoZSBibGUsIHRoaXMgZ2l2ZXMgdXMgb25lIG1vcmUgbG9vcHMgdGhhbgogCSAqIGFkZHJlc3MgYml0cyBmb3Igc2VxdWVuY2UgMCwxLDIsNCw4LC4uLjJeKG4tMSkKIAkqLwotCWFkZGkgCXIzMCwgcjMwLCAxCQkvKiBpbmNyZW1lbnQgb3V0ZXIgbG9vcCBjb3VudGVyICovCi0JY21wdyAJcjMwLCByMjYJCS8qIGNoZWNrIGZvciBsYXN0IGlubmVyIGxvb3AgKi8KKwlhZGRpCXIzMCwgcjMwLCAxCQkvKiBpbmNyZW1lbnQgb3V0ZXIgbG9vcCBjb3VudGVyICovCisJY21wdwlyMzAsIHIyNgkJLyogY2hlY2sgZm9yIGxhc3QgaW5uZXIgbG9vcCAqLwogCWJsZQlvdXRzaWRlCQkJLyogZG8gbW9yZSBvdXRlciBsb29wcyAqLwogCiAJLyogd2VyZSBkb25lLCBsZXRzIGdvIGhvbWUgKi8KQEAgLTM5MSw3ICszOTEsNyBAQAogCW1yCXIyOCwgcjQKIAltcglyMjksIHI1CiAKLQlXQVRDSERPR19SRVNFVCAgIAkJLyogUmVzZXQgdGhlIHdhdGNoZG9nICovCisJV0FUQ0hET0dfUkVTRVQJCQkvKiBSZXNldCB0aGUgd2F0Y2hkb2cgKi8KIAogCS8qIGZpcnN0IGZpbGwgbWVtb3J5IHdpdGggVmFsdWUgKi8KIAlzcmF3aQlyMzEsIHIyOSwgMgkJLyogY29udmVydCBieXRlcyB0byBsb25ncyAqLwpAQCAtNDAxLDEwICs0MDEsMTAgQEAKIAlhZGRpCXIzMCwgcjMwLCA0CQkvKiBJbmNyZW1lbnQgdG8gbmV4dCB3b3JkICovCiAJYW5kaS4JcjMxLCByMzAsIDB4ZmZmZgkvKiBjaGVjayBmb3IgMl4xNiBsb29wcyAqLwogCWJuZQlmdF8wYQkJCS8qIGlmIG5vdCB0aGVyZSwgdGhlbiBza2lwICovCi0JV0FUQ0hET0dfUkVTRVQgICAJCS8qIGtpY2sgdGhlIGRvZyBldmVyeSBub3cgYW5kIHRoZW4gKi8KKwlXQVRDSERPR19SRVNFVAkJCS8qIGtpY2sgdGhlIGRvZyBldmVyeSBub3cgYW5kIHRoZW4gKi8KIGZ0XzBhOgliZG56CWZ0XzAJCQkvKiBSb3VuZCBhbmQgcm91bmQuLi4gKi8KIAotCVdBVENIRE9HX1JFU0VUICAgCQkvKiBSZXNldCB0aGUgd2F0Y2hkb2cgKi8KKwlXQVRDSERPR19SRVNFVAkJCS8qIFJlc2V0IHRoZSB3YXRjaGRvZyAqLwogCiAJLyogTm93IGNvbmZpcm0gVmFsdWUgaXMgaW4gbWVtb3J5ICovCiAJc3Jhd2kJcjMxLCByMjksIDIJCS8qIGNvbnZlcnQgYnl0ZXMgdG8gbG9uZ3MgKi8KQEAgLTQxOSw3ICs0MTksNyBAQAogCVdBVENIRE9HX1JFU0VUCQkJLyoga2ljayB0aGUgZG9nIGV2ZXJ5IG5vdyBhbmQgdGhlbiAqLwogZnRfMWE6CWJkbnoJZnRfMQkJCS8qIFJvdW5kIGFuZCByb3VuZC4uLiAqLwogCi0JV0FUQ0hET0dfUkVTRVQgICAJCS8qIFJlc2V0IHRoZSB3YXRjaGRvZyAqLworCVdBVENIRE9HX1JFU0VUCQkJLyogUmVzZXQgdGhlIHdhdGNoZG9nICovCiAKIAliCWZpbGxfZG9uZQkJLyogcmVzdG9yZSBhbmQgcmV0dXJuICovCiAKQEAgLTYwOCw5ICs2MDgsOSBAQAogCiAJLyogb3V0cHV0IGEgZmV3IGxpbmUgZmVlZHMgKi8KIAlhZGRpCXIzLCAwLCAnXG4nCQkvKiBsb2FkIGxpbmUgZmVlZCAqLwotCWJsIAlwb3N0X3B1dGMJCS8qIG91dHB1dCB0aGUgY2hhciAqLworCWJsCXBvc3RfcHV0YwkJLyogb3V0cHV0IHRoZSBjaGFyICovCiAJYWRkaQlyMywgMCwgJ1xuJwkJLyogbG9hZCBsaW5lIGZlZWQgKi8KLQlibCAJcG9zdF9wdXRjCQkvKiBvdXRwdXQgdGhlIGNoYXIgKi8KKwlibAlwb3N0X3B1dGMJCS8qIG91dHB1dCB0aGUgY2hhciAqLwogCiAJLyogcmVzdG9yZSBzdGFjayBhbmQgcmV0dXJuICovCiAJbHd6CXIwLCArMTIocjEpCQkvKiBHZXQgc2F2ZWQgbGluayByZWdpc3RlciAqLwpAQCAtNjM3LDE1ICs2MzcsMTUgQEAKIAogICAgICBhZGRpcyAgIHIzMSwgMCwgMHhlZjYwCQkvKiBQb2ludCB0byB1YXJ0IGJhc2UgKi8KICAgICAgb3JpICAgICByMzEsIHIzMSwgMHgwMzAwCi0gICAgIGFkZGlzICAgcjMwLCAwLCAxNTIgCQkvKiBMb2FkIGFib3V0IDEwLDAwMCwwMDAgdGlja3MuICovCisgICAgIGFkZGlzICAgcjMwLCAwLCAxNTIJCS8qIExvYWQgYWJvdXQgMTAsMDAwLDAwMCB0aWNrcy4gKi8KIHBwdXRjX2xwOgotCWxieiAgICAgcjI5LCA1KHIzMSkgCQkvKiBSZWFkIExpbmUgU3RhdHVzIFJlZ2lzdGVyICovCisJbGJ6ICAgICByMjksIDUocjMxKQkJLyogUmVhZCBMaW5lIFN0YXR1cyBSZWdpc3RlciAqLwogCWFuZGkuICAgcjI5LCByMjksIDB4MjAJCS8qIENoZWNrIFRIUkUgc3RhdHVzICovCiAJYm5lICAgICB0aHJlX3NldAkJLyogQnJhbmNoIGlmIEZJRk8gZW1wdHkgKi8KIAlhZGRpYy4gIHIzMCwgcjMwLCAtMQkJLyogRGVjcmVtZW50IGFuZCBjaGVjayBpZiBlbXB0eS4gKi8KIAlibmUgICAgIHBwdXRjX2xwCQkvKiBUcnksIHRyeSBhZ2FpbiAqLwogCWFkZGkgICAgcjMsIDAsIC0xCQkvKiBMb2FkIGVycm9yIGNvZGUgZm9yIHRpbWVvdXQgKi8KLQliICAgICAgIHBwdXRjX2RvbmUgCQkvKiBCYWlsIG91dCB3aXRoIGVycm9yIGNvZGUgc2V0ICovCisJYiAgICAgICBwcHV0Y19kb25lCQkvKiBCYWlsIG91dCB3aXRoIGVycm9yIGNvZGUgc2V0ICovCiB0aHJlX3NldDoKIAlzdGIgICAgIHIzLCAwKHIzMSkJCS8qIFN0b3JlIGNoYXJhY3RlciB0byBVQVJUICovCiAJYWRkaQlyMywgMCwgMAkJLyogY2xlYXIgZXJyb3IgY29kZSAqLwpAQCAtNjcxLDcgKzY3MSw3IEBACiAJc3R3CXIwLCArMTYocjEpCQkvKiBTYXZlIGxpbmsgcmVnaXN0ZXIgKi8KIAlzdHcJcjMxLCA4KHIxKQkJLyogc2F2ZSByMzEgLSBjaGFyIHBvaW50ZXIgKi8KIAotCWFkZGkgCXIzMSwgcjMsIDAgICAgICAgICAgICAgIC8qIG1vdmUgcG9pbnRlciB0byBSMzEgKi8KKwlhZGRpCXIzMSwgcjMsIDAgICAgICAgICAgICAgIC8qIG1vdmUgcG9pbnRlciB0byBSMzEgKi8KIHBwdXRzX254dDoKIAlsYnoJcjMsIDAocjMxKQkJLyogR2V0IG5leHQgY2hhcmFjdGVyICovCiAJYWRkaWMuICByMywgcjMsIDAJCS8qIENoZWNrIGZvciB6ZXJvICovCkBAIC02NzksMTMgKzY3OSwxMyBAQAogCWJsCXBvc3RfcHV0YwkJLyogb3V0cHV0IHRoZSBjaGFyICovCiAJYWRkaWMuCXIzLCByMywgMAkJLyogY2hlY2sgZm9yIGVycm9yICovCiAJYm5lCXBwdXRzX2VycgotCWFkZGkgCXIzMSwgcjMxLCAxCQkvKiBwb2ludCB0byBuZXh0IGNoYXIgKi8KLQliCXBwdXRzX254dCAJCS8qIGxvb3AgdGlsbCB0ZXJtICovCisJYWRkaQlyMzEsIHIzMSwgMQkJLyogcG9pbnQgdG8gbmV4dCBjaGFyICovCisJYglwcHV0c19ueHQJCS8qIGxvb3AgdGlsbCB0ZXJtICovCiBwcHV0c19lcnI6Ci0JYWRkaSAJcjMsIDAsIC0xCQkvKiBzZXQgZXJyb3IgY29kZSAqLworCWFkZGkJcjMsIDAsIC0xCQkvKiBzZXQgZXJyb3IgY29kZSAqLwogCWIJcHB1dHNfZW5kCQkvKiB3ZXJlIG91dGEgaGVyZSAqLwogcHB1dHNfdGVybToKLQlhZGRpIAlyMywgMCwgMQkJLyogc2V0IHN1Y2Nlc3MgY29kZSAqLworCWFkZGkJcjMsIDAsIDEJCS8qIHNldCBzdWNjZXNzIGNvZGUgKi8KIAkvKiByZXN0b3JlIHN0YWNrIGFuZCByZXR1cm4gKi8KIHBwdXRzX2VuZDoKIAlsd3oJcjMxLCA4KHIxKQkJLyogcmVzdG9yZSByMjcgLSByMzEgZnJvbSBzdGFjayAqLwpAQCAtNzExLDIwICs3MTEsMjAgQEAKIAlzdG13CXIzMCwgOChyMSkJCS8qIHNhdmUgcjMwIC0gcjMxIG9uIHN0YWNrICovCiAJCQkJCS8qIHIzMSBvdXRwdXQgY2hhciAqLwogCQkJCQkvKiByMzAgdWFydCBiYXNlIGFkZHJlc3MgKi8KLQlhZGRpIAlyMzAsIDAsIDggICAgICAgICAgICAgICAvKiBHbyB0aHJvdWdoIDggbmliYmxlcy4gKi8KLQlhZGRpIAlyMzEsIHIzLCAwCisJYWRkaQlyMzAsIDAsIDggICAgICAgICAgICAgICAvKiBHbyB0aHJvdWdoIDggbmliYmxlcy4gKi8KKwlhZGRpCXIzMSwgcjMsIDAKIHBwdXRoX254dDoKIAlybHdpbm0JcjMxLCByMzEsIDQsIDAsIDMxCS8qIFJvdGF0ZSBuZXh0IG5pYmJsZSBpbnRvIHBvc2l0aW9uICovCi0JYW5kaS4gCXIzLCByMzEsIDB4MGYJCS8qIEdldCBuaWJibGUuICovCi0JYWRkaSAJcjMsIHIzLCAweDMwCQkvKiBBZGQgemVybydzIEFTQ0lJIGNvZGUuICovCisJYW5kaS4JcjMsIHIzMSwgMHgwZgkJLyogR2V0IG5pYmJsZS4gKi8KKwlhZGRpCXIzLCByMywgMHgzMAkJLyogQWRkIHplcm8ncyBBU0NJSSBjb2RlLiAqLwogCWNtcHdpCXIzLCAweDAzYQogCWJsdAlwcHV0aF9vdXQKLQlhZGRpIAlyMywgcjMsIDB4MDcgICAgICAgICAgICAvKiAweDI3IGZvciBsb3dlciBjYXNlLiAqLworCWFkZGkJcjMsIHIzLCAweDA3ICAgICAgICAgICAgLyogMHgyNyBmb3IgbG93ZXIgY2FzZS4gKi8KIHBwdXRoX291dDoKLQljbXB3IAlyMzAsIHI0CisJY21wdwlyMzAsIHI0CiAJYmd0CXBwdXRoX3NraXAKIAlibAlwb3N0X3B1dGMKLQlhZGRpYy4gCXIzLCByMywgMCAJCS8qIGNoZWNrIGZvciBlcnJvciAqLworCWFkZGljLglyMywgcjMsIDAJCS8qIGNoZWNrIGZvciBlcnJvciAqLwogCWJuZQlwcHV0aF9lcnIKIHBwdXRoX3NraXA6CiAJYWRkaWMuCXIzMCwgcjMwLCAtMQpAQCAtNzMyLDcgKzczMiw3IEBACiAJeG9yCXIzLCByMywgcjMJCS8qIENsZWFyIGVycm9yIGNvZGUgKi8KIAliCXBwdXRoX2RvbmUKIHBwdXRoX2VycjoKLQlhZGRpIAlyMywgMCwgLTEgCQkvKiBzZXQgZXJyb3IgY29kZSAqLworCWFkZGkJcjMsIDAsIC0xCQkvKiBzZXQgZXJyb3IgY29kZSAqLwogcHB1dGhfZG9uZToKIAkvKiByZXN0b3JlIHN0YWNrIGFuZCByZXR1cm4gKi8KIAlsbXcJcjMwLCA4KHIxKQkJLyogIHJlc3RvcmUgcjMwIC0gcjMxIGZyb20gc3RhY2sgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3c3by91LWJvb3QubGRzIGIvYm9hcmQvdzdvL3UtYm9vdC5sZHMKaW5kZXggYzg4YmZkMS4uMzM3Mzc5MyAxMDA2NDQKLS0tIGEvYm9hcmQvdzdvL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvdzdvL3UtYm9vdC5sZHMKQEAgLTM4LDExICszOCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC93N28vdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3c3by91LWJvb3QubGRzLmRlYnVnCmluZGV4IDgzNGQ2OGQuLmQzZmZlZDMgMTAwNjQ0Ci0tLSBhL2JvYXJkL3c3by91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3c3by91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvd2VwZXAyNTAvbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvd2VwZXAyNTAvbG93bGV2ZWxfaW5pdC5TCmluZGV4IGIxNzJjZWEuLjliYjA5MWYgMTAwNjQ0Ci0tLSBhL2JvYXJkL3dlcGVwMjUwL2xvd2xldmVsX2luaXQuUworKysgYi9ib2FyZC93ZXBlcDI1MC9sb3dsZXZlbF9pbml0LlMKQEAgLTQxLDkgKzQxLDkgQEAKIAltb3YJcjEwLCBscgogCiAvKglzZXR1cCBtZW1vcnkgLSBzZWUgNi4xMiBpbiBbMV0KLSAqCVN0ZXAgMSAJLSB3YWl0IDIwMCB1cworICoJU3RlcCAxCS0gd2FpdCAyMDAgdXMKICAqLwotCW1vdglyMCwjMHgyNzAwICAgICAgCQkvKiB3YWl0IDIwMCB1cyBAIDk5LjUgTUh6ICovCisJbW92CXIwLCMweDI3MDAJCQkvKiB3YWl0IDIwMCB1cyBAIDk5LjUgTUh6ICovCiAxOglzdWJzCXIwLCByMCwgIzEKIAlibmUJMWIKIC8qCVRPRE86IGNvbXBsZXRlIHN0ZXAgMSBmb3IgU3luY2hyb25vdXMgU3RhdGljIG1lbW9yeSovCkBAIC01MSw3ICs1MSw3IEBACiAJbGRyCXIwLCA9MHg0ODAwMDAwMAkJCS8qIE1DX0JBU0UgKi8KIAogCi0vKiAJc3RlcCAxLmEgLSBzZXR1cCBNU0N4CisvKglzdGVwIDEuYSAtIHNldHVwIE1TQ3gKICAqLwogCWxkcglyMSwgPTB4MDAwMDEyQjMJCQkvKiBNU0MwX1JSUjAoMSkgfCBNU0MwX1JETjAoMikgfCBNU0MwX1JERjAoMTEpIHwgTVNDMF9SVDAoMykgKi8KIAlzdHIJcjEsIFtyMCwgIzB4OF0JCQkvKiBNU0MwX09GRlNFVCAqLwpAQCAtMTExLDcgKzExMSw3IEBACiAvKglTdGVwIDUgLSB3YWl0IGF0IGxlYXN0IDIwMCB1cyBmb3IgU0RSQU0KICAqCXNlZSBzZWN0aW9uIEIuIGluIFsyXQogICovCi0JbW92CXIyLCMweDI3MDAgICAgICAJCS8qIHdhaXQgMjAwIHVzIEAgOTkuNSBNSHogKi8KKwltb3YJcjIsIzB4MjcwMAkJCS8qIHdhaXQgMjAwIHVzIEAgOTkuNSBNSHogKi8KIDE6CXN1YnMJcjIsIHIyLCAjMQogCWJuZQkxYgogCmRpZmYgLS1naXQgYS9ib2FyZC93ZXN0ZWwvYW14ODYwL3UtYm9vdC5sZHMgYi9ib2FyZC93ZXN0ZWwvYW14ODYwL3UtYm9vdC5sZHMKaW5kZXggZWU1OThjMi4uMTBiMzhlYyAxMDA2NDQKLS0tIGEvYm9hcmQvd2VzdGVsL2FteDg2MC91LWJvb3QubGRzCisrKyBiL2JvYXJkL3dlc3RlbC9hbXg4NjAvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3dlc3RlbC9hbXg4NjAvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3dlc3RlbC9hbXg4NjAvdS1ib290Lmxkcy5kZWJ1ZwppbmRleCA0NTJjNmMwLi43YTdhNDBjIDEwMDY0NAotLS0gYS9ib2FyZC93ZXN0ZWwvYW14ODYwL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQvd2VzdGVsL2FteDg2MC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQveGlsaW54L2NvbW1vbi94ZG1hX2NoYW5uZWwuYyBiL2JvYXJkL3hpbGlueC9jb21tb24veGRtYV9jaGFubmVsLmMKaW5kZXggM2Q1ZmM3NS4uZjgxNjEzOCAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L2NvbW1vbi94ZG1hX2NoYW5uZWwuYworKysgYi9ib2FyZC94aWxpbngvY29tbW9uL3hkbWFfY2hhbm5lbC5jCkBAIC0yMjYsNyArMjI2LDcgQEAKICogWFNUX1NVQ0NFU1MgaXMgcmV0dXJuZWQgaWYgdGhlIHNlbGYgdGVzdCBpcyBzdWNjZXNzZnVsLCBvciBvbmUgb2YgdGhlCiAqIGZvbGxvd2luZyBlcnJvcnMuCiAqCi0qCVhTVF9ETUFfUkVTRVRfUkVHSVNURVJfRVJST1IgCQlJbmRpY2F0ZXMgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdmFsdWUKKyoJWFNUX0RNQV9SRVNFVF9SRUdJU1RFUl9FUlJPUgkJSW5kaWNhdGVzIHRoZSBjb250cm9sIHJlZ2lzdGVyIHZhbHVlCiAqCQkJCQkJCQkJCWFmdGVyIGEgcmVzZXQgd2FzIG5vdCBjb3JyZWN0CiAqCiAqIE5PVEVTOgpAQCAtNDc1LDcgKzQ3NSw3IEBACiAqCVhEQ19JWFJfRE1BX0RPTkVfTUFTSwkJVGhlIGRtYSBvcGVyYXRpb24gaXMgZG9uZQogKglYRENfSVhSX0RNQV9FUlJPUl9NQVNLCSAgICBUaGUgZG1hIG9wZXJhdGlvbiBoYWQgYW4gZXJyb3IKICoJWERDX0lYUl9QS1RfRE9ORV9NQVNLCSAgICBBIHBhY2tldCBpcyBjb21wbGV0ZQotKglYRENfSVhSX1BLVF9USFJFU0hPTERfTUFTSyAJVGhlIHBhY2tldCBjb3VudCB0aHJlc2hvbGQgcmVhY2hlZAorKglYRENfSVhSX1BLVF9USFJFU0hPTERfTUFTSwlUaGUgcGFja2V0IGNvdW50IHRocmVzaG9sZCByZWFjaGVkCiAqCVhEQ19JWFJfUEtUX1dBSVRfQk9VTkRfTUFTSyBUaGUgcGFja2V0IHdhaXQgYm91bmQgcmVhY2hlZAogKglYRENfSVhSX1NHX0RJU0FCTEVfQUNLX01BU0sgVGhlIHNjYXR0ZXIgZ2F0aGVyIGRpc2FibGUgY29tcGxldGVkCiAqCVhEQ19JWFJfQkRfTUFTSwkJCQlBIGJ1ZmZlciBkZXNjcmlwdG9yIGlzIGRvbmUKQEAgLTUzMyw3ICs1MzMsNyBAQAogKglYRENfSVhSX0RNQV9ET05FX01BU0sJCVRoZSBkbWEgb3BlcmF0aW9uIGlzIGRvbmUKICoJWERDX0lYUl9ETUFfRVJST1JfTUFTSwkgICAgVGhlIGRtYSBvcGVyYXRpb24gaGFkIGFuIGVycm9yCiAqCVhEQ19JWFJfUEtUX0RPTkVfTUFTSwkgICAgQSBwYWNrZXQgaXMgY29tcGxldGUKLSoJWERDX0lYUl9QS1RfVEhSRVNIT0xEX01BU0sgCVRoZSBwYWNrZXQgY291bnQgdGhyZXNob2xkIHJlYWNoZWQKKyoJWERDX0lYUl9QS1RfVEhSRVNIT0xEX01BU0sJVGhlIHBhY2tldCBjb3VudCB0aHJlc2hvbGQgcmVhY2hlZAogKglYRENfSVhSX1BLVF9XQUlUX0JPVU5EX01BU0sgVGhlIHBhY2tldCB3YWl0IGJvdW5kIHJlYWNoZWQKICoJWERDX0lYUl9TR19ESVNBQkxFX0FDS19NQVNLIFRoZSBzY2F0dGVyIGdhdGhlciBkaXNhYmxlIGNvbXBsZXRlZAogKglYRENfSVhSX1NHX0VORF9NQVNLCQkJQ3VycmVudCBkZXNjcmlwdG9yIHdhcyB0aGUgZW5kIG9mIHRoZSBsaXN0CkBAIC01ODQsNyArNTg0LDcgQEAKICoJWERDX0lYUl9ETUFfRE9ORV9NQVNLCQlUaGUgZG1hIG9wZXJhdGlvbiBpcyBkb25lCiAqCVhEQ19JWFJfRE1BX0VSUk9SX01BU0sJICAgIFRoZSBkbWEgb3BlcmF0aW9uIGhhZCBhbiBlcnJvcgogKglYRENfSVhSX1BLVF9ET05FX01BU0sJICAgIEEgcGFja2V0IGlzIGNvbXBsZXRlCi0qCVhEQ19JWFJfUEtUX1RIUkVTSE9MRF9NQVNLIAlUaGUgcGFja2V0IGNvdW50IHRocmVzaG9sZCByZWFjaGVkCisqCVhEQ19JWFJfUEtUX1RIUkVTSE9MRF9NQVNLCVRoZSBwYWNrZXQgY291bnQgdGhyZXNob2xkIHJlYWNoZWQKICoJWERDX0lYUl9QS1RfV0FJVF9CT1VORF9NQVNLIFRoZSBwYWNrZXQgd2FpdCBib3VuZCByZWFjaGVkCiAqCVhEQ19JWFJfU0dfRElTQUJMRV9BQ0tfTUFTSyBUaGUgc2NhdHRlciBnYXRoZXIgZGlzYWJsZSBjb21wbGV0ZWQKICoJWERDX0lYUl9TR19FTkRfTUFTSwkJCUN1cnJlbnQgZGVzY3JpcHRvciB3YXMgdGhlIGVuZCBvZiB0aGUgbGlzdApAQCAtNjM4LDcgKzYzOCw3IEBACiAqCVhEQ19JWFJfRE1BX0RPTkVfTUFTSwkJVGhlIGRtYSBvcGVyYXRpb24gaXMgZG9uZQogKglYRENfSVhSX0RNQV9FUlJPUl9NQVNLCSAgICBUaGUgZG1hIG9wZXJhdGlvbiBoYWQgYW4gZXJyb3IKICoJWERDX0lYUl9QS1RfRE9ORV9NQVNLCSAgICBBIHBhY2tldCBpcyBjb21wbGV0ZQotKglYRENfSVhSX1BLVF9USFJFU0hPTERfTUFTSyAJVGhlIHBhY2tldCBjb3VudCB0aHJlc2hvbGQgcmVhY2hlZAorKglYRENfSVhSX1BLVF9USFJFU0hPTERfTUFTSwlUaGUgcGFja2V0IGNvdW50IHRocmVzaG9sZCByZWFjaGVkCiAqCVhEQ19JWFJfUEtUX1dBSVRfQk9VTkRfTUFTSyBUaGUgcGFja2V0IHdhaXQgYm91bmQgcmVhY2hlZAogKglYRENfSVhSX1NHX0RJU0FCTEVfQUNLX01BU0sgVGhlIHNjYXR0ZXIgZ2F0aGVyIGRpc2FibGUgY29tcGxldGVkCiAqCVhEQ19JWFJfQkRfTUFTSwkJCQlBIGJ1ZmZlciBkZXNjcmlwdG9yIGlzIGRvbmUKZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC9jb21tb24veGRtYV9jaGFubmVsLmggYi9ib2FyZC94aWxpbngvY29tbW9uL3hkbWFfY2hhbm5lbC5oCmluZGV4IDA2OTc2YzMuLjQ2ODU5ODIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC9jb21tb24veGRtYV9jaGFubmVsLmgKKysrIGIvYm9hcmQveGlsaW54L2NvbW1vbi94ZG1hX2NoYW5uZWwuaApAQCAtOTYsNyArOTYsNyBAQAogKiAxLiBDcmVhdGUgYSBzY2F0dGVyIGdhdGhlciBsaXN0IGZvciB0aGUgRE1BIGNoYW5uZWwgd2hpY2ggcHV0cyBlbXB0eSBidWZmZXIKICogICAgZGVzY3JpcHRvcnMgaW50byB0aGUgbGlzdC4KICogMi4gQ3JlYXRlIGJ1ZmZlciBkZXNjcmlwdG9ycyB3aGljaCBkZXNjcmliZSB0aGUgYnVmZmVycyB0byBiZSBmaWxsZWQgd2l0aAotKiAJIHJlY2VpdmUgZGF0YSBvciB0aGUgYnVmZmVycyB3aGljaCBjb250YWluIGRhdGEgdG8gYmUgc2VudC4KKyoJIHJlY2VpdmUgZGF0YSBvciB0aGUgYnVmZmVycyB3aGljaCBjb250YWluIGRhdGEgdG8gYmUgc2VudC4KICogMy4gUHV0IGJ1ZmZlciBkZXNjcmlwdG9ycyBpbnRvIHRoZSBETUEgY2hhbm5lbCBzY2F0dGVyIGxpc3Qgc3VjaCB0aGF0IHNjYXR0ZXIKICogICAgZ2F0aGVyIG9wZXJhdGlvbnMgYXJlIHJlcXVlc3RlZC4KICogNC4gQ29tbWl0IHRoZSBidWZmZXIgZGVzY3JpcHRvcnMgaW4gdGhlIGxpc3Qgc3VjaCB0aGF0IHRoZXkgYXJlIHJlYWR5IHRvIGJlCkBAIC0yMDgsNyArMjA4LDcgQEAKICNkZWZpbmUgWERDX0lYUl9ETUFfRE9ORV9NQVNLCQkweDFVTAkvKiBkbWEgb3BlcmF0aW9uIGRvbmUgKi8KICNkZWZpbmUgWERDX0lYUl9ETUFfRVJST1JfTUFTSwkgICAgMHgyVUwJLyogZG1hIG9wZXJhdGlvbiBlcnJvciAqLwogI2RlZmluZSBYRENfSVhSX1BLVF9ET05FX01BU0sJICAgIDB4NFVMCS8qIHBhY2tldCBkb25lICovCi0jZGVmaW5lIFhEQ19JWFJfUEtUX1RIUkVTSE9MRF9NQVNLIAkweDhVTAkvKiBwYWNrZXQgY291bnQgdGhyZXNob2xkICovCisjZGVmaW5lIFhEQ19JWFJfUEtUX1RIUkVTSE9MRF9NQVNLCTB4OFVMCS8qIHBhY2tldCBjb3VudCB0aHJlc2hvbGQgKi8KICNkZWZpbmUgWERDX0lYUl9QS1RfV0FJVF9CT1VORF9NQVNLIDB4MTBVTAkvKiBwYWNrZXQgd2FpdCBib3VuZCByZWFjaGVkICovCiAjZGVmaW5lIFhEQ19JWFJfU0dfRElTQUJMRV9BQ0tfTUFTSyAweDIwVUwJLyogc2NhdHRlciBnYXRoZXIgZGlzYWJsZQogCQkJCQkJICAgYWNrbm93bGVkZ2Ugb2NjdXJyZWQgKi8KZGlmZiAtLWdpdCBhL2JvYXJkL3hpbGlueC9tbDMwMC91LWJvb3QubGRzIGIvYm9hcmQveGlsaW54L21sMzAwL3UtYm9vdC5sZHMKaW5kZXggODE1ZDgxZC4uMmQzMjIyNSAxMDA2NDQKLS0tIGEvYm9hcmQveGlsaW54L21sMzAwL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQveGlsaW54L21sMzAwL3UtYm9vdC5sZHMKQEAgLTM0LDExICszNCwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC94aWxpbngvbWwzMDAvdS1ib290Lmxkcy5kZWJ1ZyBiL2JvYXJkL3hpbGlueC9tbDMwMC91LWJvb3QubGRzLmRlYnVnCmluZGV4IDg4ZGNhZjkuLjA1NTI5OTQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3hpbGlueC9tbDMwMC91LWJvb3QubGRzLmRlYnVnCisrKyBiL2JvYXJkL3hpbGlueC9tbDMwMC91LWJvb3QubGRzLmRlYnVnCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvYm9hcmQveHBlZGl0ZTFrL3UtYm9vdC5sZHMgYi9ib2FyZC94cGVkaXRlMWsvdS1ib290LmxkcwppbmRleCAwNDQ1MTFiLi43MGIxZTM4IDEwMDY0NAotLS0gYS9ib2FyZC94cGVkaXRlMWsvdS1ib290LmxkcworKysgYi9ib2FyZC94cGVkaXRlMWsvdS1ib290LmxkcwpAQCAtNDMsMTEgKzQzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2JvYXJkL3hwZWRpdGUxay91LWJvb3QubGRzLmRlYnVnIGIvYm9hcmQveHBlZGl0ZTFrL3UtYm9vdC5sZHMuZGVidWcKaW5kZXggZTBlMjBjYS4uZTBkYTg1NCAxMDA2NDQKLS0tIGEvYm9hcmQveHBlZGl0ZTFrL3UtYm9vdC5sZHMuZGVidWcKKysrIGIvYm9hcmQveHBlZGl0ZTFrL3UtYm9vdC5sZHMuZGVidWcKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9ib2FyZC94c2VuZ2luZS9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC94c2VuZ2luZS9sb3dsZXZlbF9pbml0LlMKaW5kZXggMzA5ZmFhYi4uYjBiMTU2MSAxMDA2NDQKLS0tIGEvYm9hcmQveHNlbmdpbmUvbG93bGV2ZWxfaW5pdC5TCisrKyBiL2JvYXJkL3hzZW5naW5lL2xvd2xldmVsX2luaXQuUwpAQCAtMTA5LDcgKzEwOSw3IEBACiAgICBsZHIgcjMsID1PU0NSCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCiAgICBtb3YgcjIsICMwCiAgICBzdHIgcjIsIFtyM10KLSAgIGxkciByNCwgPTB4MzAwICAJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgKi8KKyAgIGxkciByNCwgPTB4MzAwCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICovCiAxOgogICAgbGRyIHIyLCBbcjNdCiAgICBjbXAgcjQsIHIyCkBAIC0xNDQsNyArMTQ0LDcgQEAKICAgIGxkciByMywgPU9TQ1IJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KICAgIG1vdiByMiwgIzAKICAgIHN0ciByMiwgW3IzXQotICAgbGRyIHI0LCA9MHgzMDAgIAkvKiBhYm91dCAyMDAgdXNlYyAqLworICAgbGRyIHI0LCA9MHgzMDAJLyogYWJvdXQgMjAwIHVzZWMgKi8KIDE6CiAgICBsZHIgcjIsIFtyM10KICAgIGNtcCByNCwgcjIKZGlmZiAtLWdpdCBhL2JvYXJkL3pldXMvdS1ib290LmxkcyBiL2JvYXJkL3pldXMvdS1ib290LmxkcwppbmRleCA2NzBjOTQzLi5kODAzNjI1IDEwMDY0NAotLS0gYS9ib2FyZC96ZXVzL3UtYm9vdC5sZHMKKysrIGIvYm9hcmQvemV1cy91LWJvb3QubGRzCkBAIC0zOCwxMSArMzgsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQo=