From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.2 Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 474f326c for ; Mon, 10 Jun 2019 09:23:31 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============8025598791028582795==" MIME-Version: 1.0 Subject: [PR PATCH] New package: lbreakouthd-1.0.4. To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org Message-ID: Date: Mon, 10 Jun 2019 11:23:31 +0200 GitHub notification mails are now in MIME to allow UTF8. --===============8025598791028582795== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHh0cmFlbWUgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3h0cmFlbWUv dm9pZC1wYWNrYWdlcyBsYnJlYWtvdXRoZApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMTIzNjUKCk5ldyBwYWNrYWdlOiBsYnJlYWtvdXRoZC0xLjAuNC4K U2lnbmVkLW9mZi1ieTogSnVhbiBSUCA8eHRyYWVtZUBnbWFpbC5jb20+CgpBIHBhdGNoIGZpbGUg ZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMTIz NjUucGF0Y2ggaXMgYXR0YWNoZWQ= --===============8025598791028582795== Content-Type: application/text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-lbreakouthd-12365.patch" RnJvbSBhNDU2NmIzMThmNzg2ZWEwZGQzNjVmZWM4OThmMzcxZTlhMTkzODczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWFuIFJQIDx4dHJhZW1lQGdtYWlsLmNvbT4KRGF0ZTogTW9u LCAxMCBKdW4gMjAxOSAxMToyMjoxNSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIE5ldyBwYWNrYWdl OiBsYnJlYWtvdXRoZC0xLjAuNC4KClNpZ25lZC1vZmYtYnk6IEp1YW4gUlAgPHh0cmFlbWVAZ21h aWwuY29tPgotLS0KIHNyY3BrZ3MvbGJyZWFrb3V0aGQvcGF0Y2hlcy9tdXNsLnBhdGNoIHwgNzQz ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGJyZWFrb3V0aGQvdGVtcGxhdGUg ICAgICAgICAgIHwgIDEzICsKIDIgZmlsZXMgY2hhbmdlZCwgNzU2IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xicmVha291dGhkL3BhdGNoZXMvbXVzbC5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGJyZWFrb3V0aGQvdGVtcGxhdGUKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xicmVha291dGhkL3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGJy ZWFrb3V0aGQvcGF0Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5hNGJiMzg0NzZjNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGJyZWFr b3V0aGQvcGF0Y2hlcy9tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNzQzIEBACit1aW50IGlzIG5vdCBw b3J0YWJsZSwgdXNlIHVuc2lnbmVkIGludCBpbnN0ZWFkLiBGaXhlcyBtdXNsLgorCS0teHRyYWVt ZQorCistLS0gc3JjL2NsaWVudGdhbWUuY3BwCTIwMTgtMTItMjEgMTk6NDM6NTEuMDAwMDAwMDAw ICswMTAwCisrKysgc3JjL2NsaWVudGdhbWUuY3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMwNTUx ODUwICswMjAwCitAQCAtODgsNyArODgsNyBAQCBpbnQgQ2xpZW50R2FtZTo6aW5pdChjb25zdCBz dHJpbmcmIHNldG5hCisgQ2xpZW50UGxheWVyICpDbGllbnRHYW1lOjpnZXROZXh0UGxheWVyKCkK KyB7CisgCUNsaWVudFBsYXllciAqcCA9IE5VTEw7CistCXVpbnQgc3RhcnRJZCA9IGN1clBsYXll cjsKKysJdW5zaWduZWQgaW50IHN0YXJ0SWQgPSBjdXJQbGF5ZXI7CisgCisgCWRvIHsKKyAJCWN1 clBsYXllcisrOworQEAgLTEwNyw3ICsxMDcsNyBAQCBDbGllbnRQbGF5ZXIgKkNsaWVudEdhbWU6 OmdldE5leHRQbGF5ZXIoCisgICogcGlzIGlzIHdoYXQgY29udHJvbHMgaGF2ZSBiZWVuIGFjdGl2 YXRlZAorICAqIHJldHVybiBmbGFncyB3aGF0IGhhcyB0byBiZSByZW5kZXJlZCBuZXcKKyAgKi8K Ky1pbnQgQ2xpZW50R2FtZTo6dXBkYXRlKHVpbnQgbXMsIGRvdWJsZSByeCwgUGFkZGxlSW5wdXRT dGF0ZSAmcGlzKQorK2ludCBDbGllbnRHYW1lOjp1cGRhdGUodW5zaWduZWQgaW50IG1zLCBkb3Vi bGUgcngsIFBhZGRsZUlucHV0U3RhdGUgJnBpcykKKyB7CisgCWludCBvbGRTY29yZSA9IGdhbWUt PnBhZGRsZXNbMF0tPnNjb3JlOworIAlpbnQgcmV0ID0gMDsKKy0tLSBzcmMvY2xpZW50Z2FtZS5o CTIwMTktMDMtMDcgMTU6MzY6MDEuMDAwMDAwMDAwICswMTAwCisrKysgc3JjL2NsaWVudGdhbWUu aAkyMDE5LTA2LTEwIDExOjA0OjI1LjIyNjU1MTgwMiArMDIwMAorQEAgLTIxLDE5ICsyMSwxOSBA QAorIAorIGNsYXNzIENsaWVudFBsYXllciB7CisgCXN0cmluZyBuYW1lOworLQl1aW50IGxpdmVz OworLQl1aW50IG1heExpdmVzOworKwl1bnNpZ25lZCBpbnQgbGl2ZXM7CisrCXVuc2lnbmVkIGlu dCBtYXhMaXZlczsKKyAJaW50IHNjb3JlOworLQl1aW50IGxldmVsOworKwl1bnNpZ25lZCBpbnQg bGV2ZWw7CisgCUxldmVsIHNuYXBzaG90OworIHB1YmxpYzoKKy0JQ2xpZW50UGxheWVyKGNvbnN0 IHN0cmluZyAmbiwgdWludCBsLCB1aW50IG1sKSA6CisrCUNsaWVudFBsYXllcihjb25zdCBzdHJp bmcgJm4sIHVuc2lnbmVkIGludCBsLCB1bnNpZ25lZCBpbnQgbWwpIDoKKyAJCQluYW1lKG4pLCBs aXZlcyhsKSwgbWF4TGl2ZXMobWwpLCBzY29yZSgwKSwgbGV2ZWwoMCkgeworIAkJX2xvZ2luZm8o IkFkZGVkIHBsYXllciAlc1xuIixuLmNfc3RyKCkpOworIAl9OworIAljb25zdCBzdHJpbmcmIGdl dE5hbWUoKSB7IHJldHVybiBuYW1lOyB9CistCXVpbnQgZ2V0TGl2ZXMoKSB7IHJldHVybiBsaXZl czsgfQorLQl1aW50IGdldE1heExpdmVzKCkgeyByZXR1cm4gbWF4TGl2ZXM7IH0KKysJdW5zaWdu ZWQgaW50IGdldExpdmVzKCkgeyByZXR1cm4gbGl2ZXM7IH0KKysJdW5zaWduZWQgaW50IGdldE1h eExpdmVzKCkgeyByZXR1cm4gbWF4TGl2ZXM7IH0KKyAJdm9pZCBnYWluTGlmZSgpIHsKKyAJCWlm IChsaXZlcyA8IG1heExpdmVzKQorIAkJCWxpdmVzKys7CitAQCAtNDgsMTEgKzQ4LDExIEBAIHB1 YmxpYzoKKyAJCXNjb3JlICs9IHM7CisgCQlyZXR1cm4gc2NvcmU7CisgCX0KKy0Jdm9pZCBzZXRM aXZlcyh1aW50IGwpIHsgbGl2ZXMgPSBsOyB9CisrCXZvaWQgc2V0TGl2ZXModW5zaWduZWQgaW50 IGwpIHsgbGl2ZXMgPSBsOyB9CisgCXZvaWQgc2V0U2NvcmUoaW50IHMpIHsgc2NvcmUgPSBzOyB9 CistCXVpbnQgZ2V0TGV2ZWwoKSB7IHJldHVybiBsZXZlbDsgfQorLQl1aW50IG5leHRMZXZlbCgp IHsgcmV0dXJuICsrbGV2ZWw7IH0KKy0Jdm9pZCBzZXRMZXZlbCh1aW50IGwpIHsgbGV2ZWwgPSBs OyB9CisrCXVuc2lnbmVkIGludCBnZXRMZXZlbCgpIHsgcmV0dXJuIGxldmVsOyB9CisrCXVuc2ln bmVkIGludCBuZXh0TGV2ZWwoKSB7IHJldHVybiArK2xldmVsOyB9CisrCXZvaWQgc2V0TGV2ZWwo dW5zaWduZWQgaW50IGwpIHsgbGV2ZWwgPSBsOyB9CisgCXZvaWQgc2V0TGV2ZWxTbmFwc2hvdChj b25zdCBMZXZlbCAqbCkgeworIAkJaWYgKGwgPT0gTlVMTCkKKyAJCQlnYW1lX2dldF9sZXZlbF9z bmFwc2hvdCgmc25hcHNob3QpOworQEAgLTEwMCw3ICsxMDAsNyBAQCBjbGFzcyBDbGllbnRHYW1l IHsKKyAJR2FtZSAqZ2FtZTsgLyogY3VycmVudCBnYW1lIGNvbnRleHQgKi8KKyAJSGlzY29yZXMg aGlzY29yZXM7CisgCXZlY3Rvcjx1bmlxdWVfcHRyPENsaWVudFBsYXllcj4+IHBsYXllcnM7Cist CXVpbnQgY3VyUGxheWVyOworKwl1bnNpZ25lZCBpbnQgY3VyUGxheWVyOworIAlDbGllbnRQbGF5 ZXIgKmxhc3REZWFkUGxheWVyOworIAlzdHJpbmcgbXNnOworIAlUaW1lb3V0IGZyaWN0aW9uVGlt ZW91dDsKK0BAIC0xMTQsMTIgKzExNCwxMiBAQCBwdWJsaWM6CisgCUNsaWVudEdhbWUoQ29uZmln ICZjZmcpOworIAl+Q2xpZW50R2FtZSgpOworIAlpbnQgaW5pdChjb25zdCBzdHJpbmcmIHNldG5h bWUsIGludCBsZXZlbGlkID0gMCk7CistCWludCB1cGRhdGUodWludCBtcywgZG91YmxlIHJ4LCBQ YWRkbGVJbnB1dFN0YXRlICZwaXMpOworKwlpbnQgdXBkYXRlKHVuc2lnbmVkIGludCBtcywgZG91 YmxlIHJ4LCBQYWRkbGVJbnB1dFN0YXRlICZwaXMpOworIAlHYW1lICpnZXRHYW1lQ29udGV4dCgp IHsgcmV0dXJuIGdhbWU7IH0KKyAJc3RyaW5nIGdldExldmVsc2V0TmFtZSgpIHsgcmV0dXJuIGxl dmVsc2V0LT5uYW1lOyB9CisgCXZvaWQgZ2V0Q3VycmVudExldmVsTmFtZUFuZEF1dGhvcihzdHJp bmcgJm5hbWUsIHN0cmluZyAmYXV0aG9yKSB7CisgCQlDbGllbnRQbGF5ZXIgKnAgPSBwbGF5ZXJz W2N1clBsYXllcl0uZ2V0KCk7CistCQl1aW50IGxpZCA9IHAtPmdldExldmVsKCk7CisrCQl1bnNp Z25lZCBpbnQgbGlkID0gcC0+Z2V0TGV2ZWwoKTsKKyAJCWlmIChsaWQgPj0gKHVpbnQpbGV2ZWxz ZXQtPmNvdW50KSB7CisgCQkJbmFtZSA9ICJub25lIjsKKyAJCQlhdXRob3IgPSAibm9uZSI7IC8q IGlzIGRvbmUsIHNob3VsZCBub3QgaGFwcGVuICovCitAQCAtMTMxLDggKzEzMSw4IEBAIHB1Ymxp YzoKKyAJaW50IGdldExldmVsQ291bnQoKSB7IHJldHVybiBsZXZlbHNldC0+Y291bnQ7IH0KKyAJ SGlzY29yZUNoYXJ0ICpnZXRIaXNjb3JlQ2hhcnQoKSB7IHJldHVybiBoaXNjb3Jlcy5nZXQobGV2 ZWxzZXQtPm5hbWUpOyB9CisgCUNsaWVudFBsYXllciogZ2V0Q3VycmVudFBsYXllcigpIHtyZXR1 cm4gcGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOyB9CistCXVpbnQgZ2V0Q3VycmVudFBsYXllcklk KCkge3JldHVybiBjdXJQbGF5ZXI7IH0KKy0Jdm9pZCBzZXRDdXJyZW50UGxheWVySWQodWludCBp ZCkgeworKwl1bnNpZ25lZCBpbnQgZ2V0Q3VycmVudFBsYXllcklkKCkge3JldHVybiBjdXJQbGF5 ZXI7IH0KKysJdm9pZCBzZXRDdXJyZW50UGxheWVySWQodW5zaWduZWQgaW50IGlkKSB7CisgCQlj dXJQbGF5ZXIgPSBpZDsKKyAJCS8qIGFkanVzdCBwYWRkbGUgc2NvcmUgKi8KKyAJCWdhbWUtPnBh ZGRsZXNbMF0tPnNjb3JlID0gcGxheWVyc1tjdXJQbGF5ZXJdLT5nZXRTY29yZSgpOworQEAgLTE0 Myw3ICsxNDMsNyBAQCBwdWJsaWM6CisgCXZvaWQgdXBkYXRlSGlzY29yZXMoKTsKKyAJY29uc3Qg c3RyaW5nJiBnZXRQbGF5ZXJNZXNzYWdlKCkgeyByZXR1cm4gbXNnOyB9CisgCXZlY3Rvcjx1bmlx dWVfcHRyPENsaWVudFBsYXllcj4+JiBnZXRQbGF5ZXJzKCkgeyByZXR1cm4gcGxheWVyczsgfQor LQl2b2lkIHJlc3VtZVBsYXllcih1aW50IHBpZCwgdWludCBsaXZlcywgaW50IHNjb3JlLCB1aW50 IGxldmVsKSB7CisrCXZvaWQgcmVzdW1lUGxheWVyKHVuc2lnbmVkIGludCBwaWQsIHVuc2lnbmVk IGludCBsaXZlcywgaW50IHNjb3JlLCB1bnNpZ25lZCBpbnQgbGV2ZWwpIHsKKyAJCXBsYXllcnNb cGlkXS0+c2V0TGl2ZXMobGl2ZXMpOworIAkJcGxheWVyc1twaWRdLT5zZXRTY29yZShzY29yZSk7 CisgCQlwbGF5ZXJzW3BpZF0tPnNldExldmVsKGxldmVsKTsKKy0tLSBzcmMvbWVudS5jcHAJMjAx OC0xMS0yNCAxNDozNTo0NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBzcmMvbWVudS5jcHAJMjAxOS0w Ni0xMCAxMTowNDoyNS4yMzE1NTE4NjIgKzAyMDAKK0BAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBT RExfUmVuZGVyZXIgKm1yYzsKKyBGb250ICpNZW51SXRlbTo6Zk5vcm1hbCA9IE5VTEw7CisgRm9u dCAqTWVudUl0ZW06OmZGb2N1cyA9IE5VTEw7CisgRm9udCAqTWVudUl0ZW06OmZUb29sdGlwID0g TlVMTDsKKy11aW50IE1lbnVJdGVtOjp0b29sdGlwV2lkdGggPSAzMDA7CisrdW5zaWduZWQgaW50 IE1lbnVJdGVtOjp0b29sdGlwV2lkdGggPSAzMDA7CisgCisgLyoqIEhlbHBlciB0byByZW5kZXIg YSBwYXJ0IG9mIHRoZSBtZW51IGl0ZW0uIFBvc2l0aW9uIGlzIGRldGVybWluZWQKKyAgKiBieSBn aXZlbiBhbGlnbm1lbnQuICovCistLS0gc3JjL21lbnUuaAkyMDE4LTEyLTIyIDEzOjMwOjU4LjAw MDAwMDAwMCArMDEwMAorKysrIHNyYy9tZW51LmgJMjAxOS0wNi0xMCAxMTowNDoyNS4yMjc1NTE4 MTQgKzAyMDAKK0BAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKKyAJfQorIHB1YmxpYzoKKyAJ c3RhdGljIEZvbnQgKmZOb3JtYWwsICpmRm9jdXMsICpmVG9vbHRpcDsKKy0Jc3RhdGljIHVpbnQg dG9vbHRpcFdpZHRoOworKwlzdGF0aWMgdW5zaWduZWQgaW50IHRvb2x0aXBXaWR0aDsKKyAKKyAJ TWVudUl0ZW0oY29uc3Qgc3RyaW5nICZjLCBjb25zdCBzdHJpbmcgJnR0LCBpbnQgYWlkID0gQUlE X05PTkUpIDoKKyAJCQljYXB0aW9uKGMpLCBsYmxOb3JtYWwodHJ1ZSksIGxibEZvY3VzKHRydWUp LAorQEAgLTk3LDcgKzk3LDcgQEAgcHVibGljOgorIAkJfQorIAorIAl9CistCXZpcnR1YWwgdm9p ZCB1cGRhdGUodWludCBtcykgeworKwl2aXJ0dWFsIHZvaWQgdXBkYXRlKHVuc2lnbmVkIGludCBt cykgeworIAkJaWYgKCFmb2N1cyAmJiBmYWRpbmdBbHBoYSA+IDApIHsKKyAJCQlmYWRpbmdBbHBo YSAtPSAwLjcqbXM7CisgCQkJaWYgKGZhZGluZ0FscGhhIDwgMCkKK0BAIC0yMTEsOSArMjExLDkg QEAgcHVibGljOgorIAkJc2V0VmFsdWUob3B0aW9uc1t2XSk7CisgCX0KKyAJTWVudUl0ZW1MaXN0 KGNvbnN0IHN0cmluZyAmYywgY29uc3Qgc3RyaW5nICZ0dCwgaW50IGFpZCwKKy0JCQkJCWludCAm diwgY29uc3QgY2hhciAqKm9wdHMsIHVpbnQgb3B0TnVtKQorKwkJCQkJaW50ICZ2LCBjb25zdCBj aGFyICoqb3B0cywgdW5zaWduZWQgaW50IG9wdE51bSkKKyAJCQk6IE1lbnVJdGVtUmFuZ2UoYyx0 dCxhaWQsdiwwLG9wdE51bS0xLDEpIHsKKy0JCWZvciAodWludCBpID0gMDsgaSA8IG9wdE51bTsg aSsrKQorKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBvcHROdW07IGkrKykKKyAJCQlv cHRpb25zLnB1c2hfYmFjayhvcHRzW2ldKTsKKyAJCXNldFZhbHVlKG9wdGlvbnNbdl0pOworIAl9 CitAQCAtMjQ3LDEwICsyNDcsMTAgQEAgY2xhc3MgTWVudUl0ZW1JbnRMaXN0IDogcHVibGljIE1l bnVJdGVtUgorIAl2ZWN0b3I8aW50PiBvcHRpb25zOworIHB1YmxpYzoKKyAJTWVudUl0ZW1JbnRM aXN0KGNvbnN0IHN0cmluZyAmYywgY29uc3Qgc3RyaW5nICZ0dCwKKy0JCQkJCWludCAmdiwgY29u c3QgaW50ICpvcHRzLCB1aW50IG9wdE51bSkKKysJCQkJCWludCAmdiwgY29uc3QgaW50ICpvcHRz LCB1bnNpZ25lZCBpbnQgb3B0TnVtKQorIAkJCQk6IE1lbnVJdGVtUmFuZ2UoYyx0dCxBSURfTk9O RSxpZHgsMCxvcHROdW0tMSwxKSwgdmFsKHYpIHsKKyAJCWlkeCA9IDA7CistCQlmb3IgKHVpbnQg aSA9IDA7IGkgPCBvcHROdW07IGkrKykgeworKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBvcHROdW07IGkrKykgeworIAkJCWlmIChvcHRzW2ldID09IHZhbCkKKyAJCQkJaWR4ID0gaTsK KyAJCQlvcHRpb25zLnB1c2hfYmFjayhvcHRzW2ldKTsKK0BAIC0zMzQsNyArMzM0LDcgQEAgcHVi bGljOgorIAkJaW50IHcgPSB0aGVtZS5tZW51SXRlbVdpZHRoOworIAkJaW50IHggPSB0aGVtZS5t ZW51WCAtIHcvMjsKKyAJCWludCB5ID0gdGhlbWUubWVudVkgLSBoLzI7CistCQlmb3IgKHVpbnQg aSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgeworKwkJZm9yICh1bnNpZ25lZCBpbnQgaSA9 IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykgeworIAkJCU1lbnVJdGVtU3ViICpzdWIgPSBkeW5h bWljX2Nhc3Q8TWVudUl0ZW1TdWIqPihpdGVtc1tpXS5nZXQoKSk7CisgCQkJaXRlbXNbaV0tPnNl dEdlb21ldHJ5KHgsIHkgKyBpKnRoZW1lLm1lbnVJdGVtSGVpZ2h0LAorIAkJCQkJCXcsIHRoZW1l Lm1lbnVJdGVtSGVpZ2h0KTsKK0BAIC0zNDIsNyArMzQyLDcgQEAgcHVibGljOgorIAkJCQlzdWIt PmdldFN1Yk1lbnUoKS0+YWRqdXN0KCk7CisgCQl9CisgCX0KKy0Jdm9pZCB1cGRhdGUodWludCBt cykgeworKwl2b2lkIHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMpIHsKKyAJCWZvciAoYXV0byYgaSA6 IGl0ZW1zKQorIAkJCWktPnVwZGF0ZShtcyk7CisgCX0KKy0tLSBzcmMvbWl4ZXIuaAkyMDE5LTAz LTA3IDIwOjU0OjQ1LjAwMDAwMDAwMCArMDEwMAorKysrIHNyYy9taXhlci5oCTIwMTktMDYtMTAg MTE6MDQ6MjUuMjI4NTUxODI2ICswMjAwCitAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CisgCQkJ X2xvZ2luZm8oIk1peGVyIGNsb3NlZFxuIik7CisgCQl9CisgCX0KKy0Jdm9pZCBzZXRWb2x1bWUo dWludCB2KSB7IC8qIHYgaXMgMC4uMTAwICovCisrCXZvaWQgc2V0Vm9sdW1lKHVuc2lnbmVkIGlu dCB2KSB7IC8qIHYgaXMgMC4uMTAwICovCisgCQlpZiAodiA+IDEwMCkKKyAJCQl2ID0gMTAwOwor IAkJdiA9IHYgKiBNSVhfTUFYX1ZPTFVNRSAvIDEwMDsKKy0tLSBzcmMvc2RsLmNwcAkyMDE5LTAz LTA3IDE0OjA3OjA1LjAwMDAwMDAwMCArMDEwMAorKysrIHNyYy9zZGwuY3BwCTIwMTktMDYtMTAg MTE6MDQ6MjUuMjMxNTUxODYyICswMjAwCitAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgRm9udDo6 d3JpdGVUZXh0KGludCB4LCBpbnQgeSwgY29uc3QKKyAJU0RMX0Rlc3Ryb3lUZXh0dXJlKHRleCk7 CisgfQorIAorLXZvaWQgTGFiZWw6OnNldFRleHQoRm9udCAmZm9udCwgY29uc3Qgc3RyaW5nICZz dHIsIHVpbnQgbWF4dykKKyt2b2lkIExhYmVsOjpzZXRUZXh0KEZvbnQgJmZvbnQsIGNvbnN0IHN0 cmluZyAmc3RyLCB1bnNpZ25lZCBpbnQgbWF4dykKKyB7CisgCWlmIChzdHIgPT0gIiIpIHsKKyAJ CWVtcHR5ID0gdHJ1ZTsKKy0tLSBzcmMvc2RsLmgJMjAxOS0wMy0wNyAxMzoxNTowNy4wMDAwMDAw MDAgKzAxMDAKKysrKyBzcmMvc2RsLmgJMjAxOS0wNi0xMCAxMTowNDoyNS4yMjg1NTE4MjYgKzAy MDAKK0BAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgorIAkJCXJldHVybiBUVEZfU2l6ZVRleHQo Zm9udCxzdHIuY19zdHIoKSx3LGgpOworIAkJcmV0dXJuIDA7CisgCX07CistCWludCBnZXRXcmFw cGVkVGV4dFNpemUoY29uc3Qgc3RyaW5nJiBzdHIsIHVpbnQgbWF4dywgaW50ICp3LCBpbnQgKmgp IHsKKysJaW50IGdldFdyYXBwZWRUZXh0U2l6ZShjb25zdCBzdHJpbmcmIHN0ciwgdW5zaWduZWQg aW50IG1heHcsIGludCAqdywgaW50ICpoKSB7CisgCQkqdyA9ICpoID0gMDsKKyAJCVNETF9TdXJm YWNlICpzdXJmID0gVFRGX1JlbmRlclVURjhfQmxlbmRlZF9XcmFwcGVkKAorIAkJCQkJCWZvbnQs IHN0ci5jX3N0cigpLCBjbHIsIG1heHcpOworQEAgLTI3NSw3ICsyNzUsNyBAQCBwdWJsaWM6Cisg CQkJYiA9IC0xOworIAkJYm9yZGVyID0gYjsKKyAJfQorLQl2b2lkIHNldFRleHQoRm9udCAmZiwg Y29uc3Qgc3RyaW5nICZzdHIsIHVpbnQgbWF4ID0gMCk7CisrCXZvaWQgc2V0VGV4dChGb250ICZm LCBjb25zdCBzdHJpbmcgJnN0ciwgdW5zaWduZWQgaW50IG1heCA9IDApOworIAl2b2lkIGNsZWFy VGV4dCgpIHsKKyAJCWVtcHR5ID0gdHJ1ZTsKKyAJfQorQEAgLTI5NSwxMiArMjk1LDEyIEBAIHB1 YmxpYzoKKyAJdm9pZCBzZXRBbHBoYShpbnQgYSkgeworIAkJaW1nLnNldEFscGhhKGEpOworIAl9 CistCXVpbnQgZ2V0SGVpZ2h0KCkgeworKwl1bnNpZ25lZCBpbnQgZ2V0SGVpZ2h0KCkgeworIAkJ aWYgKGVtcHR5KQorIAkJCXJldHVybiAwOworIAkJcmV0dXJuIGltZy5nZXRIZWlnaHQoKTsKKyAJ fQorLQl1aW50IGdldFdpZHRoKCkgeworKwl1bnNpZ25lZCBpbnQgZ2V0V2lkdGgoKSB7CisgCQlp ZiAoZW1wdHkpCisgCQkJcmV0dXJuIDA7CisgCQlyZXR1cm4gaW1nLmdldFdpZHRoKCk7CistLS0g c3JjL3NlbGVjdGRsZy5jcHAJMjAxOC0xMi0yMSAyMDowMjo0OC4wMDAwMDAwMDAgKzAxMDAKKysr KyBzcmMvc2VsZWN0ZGxnLmNwcAkyMDE5LTA2LTEwIDExOjA0OjI1LjIzMjU1MTg3NCArMDIwMAor QEAgLTMxLDE3ICszMSwxNyBAQCBTZXRJbmZvOjpTZXRJbmZvKGNvbnN0IHN0cmluZyAmbiwgVGhl bWUKKyAJYXV0aG9yID0gIj8iOworIAorIAkvKiBjcmVhdGUgZW1wdHkgcHJldmlldyAqLworLQl1 aW50IHN3ID0gdGhlbWUubWVudUJhY2tncm91bmQuZ2V0V2lkdGgoKTsKKy0JdWludCBzaCA9IHRo ZW1lLm1lbnVCYWNrZ3JvdW5kLmdldEhlaWdodCgpOworLQl1aW50IGJ3ID0gdGhlbWUuYnJpY2tz LmdldEdyaWRXaWR0aCgpOworLQl1aW50IGJoID0gdGhlbWUuYnJpY2tzLmdldEdyaWRIZWlnaHQo KTsKKy0JdWludCBzb2ZmID0gYmgvMzsKKysJdW5zaWduZWQgaW50IHN3ID0gdGhlbWUubWVudUJh Y2tncm91bmQuZ2V0V2lkdGgoKTsKKysJdW5zaWduZWQgaW50IHNoID0gdGhlbWUubWVudUJhY2tn cm91bmQuZ2V0SGVpZ2h0KCk7CisrCXVuc2lnbmVkIGludCBidyA9IHRoZW1lLmJyaWNrcy5nZXRH cmlkV2lkdGgoKTsKKysJdW5zaWduZWQgaW50IGJoID0gdGhlbWUuYnJpY2tzLmdldEdyaWRIZWln aHQoKTsKKysJdW5zaWduZWQgaW50IHNvZmYgPSBiaC8zOworIAlwcmV2aWV3LmNyZWF0ZShNQVBX SURUSCp0aGVtZS5icmlja3MuZ2V0R3JpZFdpZHRoKCksCisgCQkJTUFQSEVJR0hUKnRoZW1lLmJy aWNrcy5nZXRHcmlkSGVpZ2h0KCkpOworIAlTRExfU2V0UmVuZGVyVGFyZ2V0KG1yYywgcHJldmll dy5nZXRUZXgoKSk7CisgCUltYWdlJiB3YWxscGFwZXIgPSB0aGVtZS53YWxscGFwZXJzW3JhbmQo KSV0aGVtZS5udW1XYWxscGFwZXJzXTsKKy0JZm9yICh1aW50IHd5ID0gMDsgd3kgPCBzaDsgd3kg Kz0gd2FsbHBhcGVyLmdldEhlaWdodCgpKQorLQkJZm9yICh1aW50IHd4ID0gMDsgd3ggPCBzdzsg d3ggKz0gd2FsbHBhcGVyLmdldFdpZHRoKCkpCisrCWZvciAodW5zaWduZWQgaW50IHd5ID0gMDsg d3kgPCBzaDsgd3kgKz0gd2FsbHBhcGVyLmdldEhlaWdodCgpKQorKwkJZm9yICh1bnNpZ25lZCBp bnQgd3ggPSAwOyB3eCA8IHN3OyB3eCArPSB3YWxscGFwZXIuZ2V0V2lkdGgoKSkKKyAJCQl3YWxs cGFwZXIuY29weSh3eCx3eSk7CisgCXRoZW1lLmZyYW1lU2hhZG93LmNvcHkoc29mZixzb2ZmKTsK KyAKK0BAIC02NCw3ICs2NCw3IEBAIFNldEluZm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBU aGVtZQorIAlzdHJpbmcgZnBhdGggPSBnZXRGdWxsTGV2ZWxzZXRQYXRoKG4pOworIAlzdHJpbmcg bGluZXNbNStFRElUX0hFSUdIVF07CisgCWlmc3RyZWFtIGlmcyhmcGF0aCk7CistCXVpbnQgb2Zm c2V0ID0gMDsKKysJdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisgCisgCWlmICghaWZzLmlzX29w ZW4oKSkgeworIAkJX2xvZ2VycigiTGV2ZWxzZXQgJXMgbm90IGZvdW5kLCBubyBwcmV2aWV3IGNy ZWF0ZWRcbiIsbi5jX3N0cigpKTsKK0BAIC03Miw3ICs3Miw3IEBAIFNldEluZm86OlNldEluZm8o Y29uc3Qgc3RyaW5nICZuLCBUaGVtZQorIAkJU0RMX1NldFJlbmRlclRhcmdldChtcmMsIE5VTEwp OworIAkJcmV0dXJuOworIAl9CistCWZvciAodWludCBpID0gMDsgaSA8IDUrRURJVF9IRUlHSFQ7 IGkrKykKKysJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCA1K0VESVRfSEVJR0hUOyBpKysp CisgCQlnZXRsaW5lKGlmcyxsaW5lc1tpXSk7CisgCWlmIChsaW5lc1swXS5maW5kKCJWZXJzaW9u IikgIT0gc3RyaW5nOjpucG9zKSB7CisgCQl2ZXJzaW9uID0gdHJpbVN0cmluZyhsaW5lc1swXS5z dWJzdHIobGluZXNbMF0uZmluZCgnOicpKzEpKTsKK0BAIC04OSw4ICs4OSw4IEBAIFNldEluZm86 OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBUaGVtZQorIAorIAkvKiBhZGQgYnJpY2tzIG9mIGZp cnN0IGxldmVsCisgCSAqIFhYWCBkaXJlY3QgYWNjZXNzIHRvIGJyaWNrIGNvbnZlcnNpb24gdGFi bGUgZnJvbSBsaWJnYW1lICovCistCWZvciAodWludCBqID0gMDsgaiA8IEVESVRIRUlHSFQ7IGor KykKKy0JCWZvciAodWludCBpID0gMDsgaSA8IEVESVRXSURUSDsgaSsrKSB7CisrCWZvciAodW5z aWduZWQgaW50IGogPSAwOyBqIDwgRURJVEhFSUdIVDsgaisrKQorKwkJZm9yICh1bnNpZ25lZCBp bnQgaSA9IDA7IGkgPCBFRElUV0lEVEg7IGkrKykgeworIAkJCWludCBrID0gLTE7CisgCQkJZm9y ICggayA9IDA7IGsgPCBCUklDS19DT1VOVDsgaysrICkKKyAJCQkJaWYgKGxpbmVzWzQrb2Zmc2V0 K2pdW2ldID09IGJyaWNrX2NvbnZfdGFibGVba10uYykKK0BAIC05OSw4ICs5OSw4IEBAIFNldElu Zm86OlNldEluZm8oY29uc3Qgc3RyaW5nICZuLCBUaGVtZQorIAkJCQl0aGVtZS5icmlja3NTaGFk b3cuY29weShicmlja19jb252X3RhYmxlW2tdLmlkLDAsCisgCQkJCQkJKGkrMSkqYncrYmgvMywg KDEraikqYmgrYmgvMyk7CisgCQl9CistCWZvciAodWludCBqID0gMDsgaiA8IEVESVRIRUlHSFQ7 IGorKykKKy0JCWZvciAodWludCBpID0gMDsgaSA8IEVESVRXSURUSDsgaSsrKSB7CisrCWZvciAo dW5zaWduZWQgaW50IGogPSAwOyBqIDwgRURJVEhFSUdIVDsgaisrKQorKwkJZm9yICh1bnNpZ25l ZCBpbnQgaSA9IDA7IGkgPCBFRElUV0lEVEg7IGkrKykgeworIAkJCWludCBrID0gLTE7CisgCQkJ Zm9yICggayA9IDA7IGsgPCBCUklDS19DT1VOVDsgaysrICkKKyAJCQkJaWYgKGxpbmVzWzQrb2Zm c2V0K2pdW2ldID09IGJyaWNrX2NvbnZfdGFibGVba10uYykKK0BAIC0xMTcsOCArMTE3LDggQEAg U2V0SW5mbzo6U2V0SW5mbyhjb25zdCBzdHJpbmcgJm4sIFRoZW1lCisgLyoqIENyZWF0ZSBsZXZl bHNldCBsaXN0IGFuZCBwcmV2aWV3cyArIGxheW91dC4gKi8KKyB2b2lkIFNlbGVjdERpYWxvZzo6 aW5pdCgpCisgeworLQl1aW50IHN3ID0gdGhlbWUubWVudUJhY2tncm91bmQuZ2V0V2lkdGgoKTsK Ky0JdWludCBzaCA9IHRoZW1lLm1lbnVCYWNrZ3JvdW5kLmdldEhlaWdodCgpOworKwl1bnNpZ25l ZCBpbnQgc3cgPSB0aGVtZS5tZW51QmFja2dyb3VuZC5nZXRXaWR0aCgpOworKwl1bnNpZ25lZCBp bnQgc2ggPSB0aGVtZS5tZW51QmFja2dyb3VuZC5nZXRIZWlnaHQoKTsKKyAJdmVjdG9yPHN0cmlu Zz4gbGlzdCwgbGlzdDI7CisgCisgCWxpc3QucHVzaF9iYWNrKF8oVE9VUk5BTUVOVCkpOworQEAg LTE4NSw3ICsxODUsNyBAQCB2b2lkIFNlbGVjdERpYWxvZzo6cmVuZGVyKCkKKyAJCQlmb250LnNl dENvbG9yKHRoZW1lLm1lbnVGb250Q29sb3JOb3JtYWwpOworIAkJZm9udC53cml0ZShseCwgbHkt Y2gsIF8oIjxQcmV2aW91cyBQYWdlPiIpKTsKKyAJfQorLQlmb3IgKHVpbnQgaSA9IDA7IGkgPCB2 bGVuOyBpKyssIHkgKz0gY2gpIHsKKysJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2bGVu OyBpKyssIHkgKz0gY2gpIHsKKyAJCWlmIChwb3MgKyBpIDwgZW50cmllcy5zaXplKCkgJiYgc2Vs ID09IChpbnQpKHBvcyArIGkpKQorIAkJCWZvbnQuc2V0Q29sb3IodGhlbWUubWVudUZvbnRDb2xv ckZvY3VzKTsKKyAJCWVsc2UKKy0tLSBzcmMvc2VsZWN0ZGxnLmgJMjAxOC0xMC0zMSAxODo0OToz NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBzcmMvc2VsZWN0ZGxnLmgJMjAxOS0wNi0xMCAxMTowNDoy NS4yMjg1NTE4MjYgKzAyMDAKK0BAIC0yMSw3ICsyMSw3IEBAIGNsYXNzIFNldEluZm8geworIAlz dHJpbmcgbmFtZTsKKyAJc3RyaW5nIHZlcnNpb247CisgCXN0cmluZyBhdXRob3I7CistCXVpbnQg bGV2ZWxzOworKwl1bnNpZ25lZCBpbnQgbGV2ZWxzOworIAlJbWFnZSBwcmV2aWV3OworIHB1Ymxp YzoKKyAJU2V0SW5mbyhjb25zdCBzdHJpbmcgJm5hbWUsIFRoZW1lICZ0aGVtZSk7CitAQCAtNDAs MTIgKzQwLDEyIEBAIGNsYXNzIFNlbGVjdERpYWxvZyB7CisgCWJvb2wgcXVpdFJlY2VpdmVkOwor IAl2ZWN0b3I8dW5pcXVlX3B0cjxTZXRJbmZvPj4gZW50cmllczsKKyAJaW50IHNlbDsKKy0JdWlu dCBwb3MsIG1heCwgdmxlbjsKKysJdW5zaWduZWQgaW50IHBvcywgbWF4LCB2bGVuOworIAlpbnQg dHgsIHR5OyAvKiBjZW50ZXJlZCB0aXRsZSBwb3NpdGlvbiAqLworIAlpbnQgbHgsIGx5OyAvKiBs aXN0IHN0YXJ0ICovCistCXVpbnQgY3csIGNoOyAvKiBjZWxsIHNpemUgKi8KKysJdW5zaWduZWQg aW50IGN3LCBjaDsgLyogY2VsbCBzaXplICovCisgCWludCBweCwgcHk7CistCXVpbnQgcHcsIHBo OyAvKiBwcmV2aWV3IGdlb21ldHJ5ICovCisrCXVuc2lnbmVkIGludCBwdywgcGg7IC8qIHByZXZp ZXcgZ2VvbWV0cnkgKi8KKyAKKyAJSW1hZ2UgYmFja2dyb3VuZDsKKyAKKy0tLSBzcmMvc3ByaXRl LmNwcAkyMDE4LTA5LTAyIDE4OjQ3OjE4LjAwMDAwMDAwMCArMDIwMAorKysrIHNyYy9zcHJpdGUu Y3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMyNTUxODc0ICswMjAwCitAQCAtMjQsNyArMjQsNyBA QCBleHRlcm4gU0RMX1JlbmRlcmVyICptcmM7CisgUGFydGljbGU6OlBhcnRpY2xlKEdyaWRJbWFn ZSAmc2ltZywgaW50IF9neCwgaW50IF9neSwKKyAJCQkJCWludCBfc3gsIGludCBfc3ksIGludCBf c3csIGludCBfc2gsCisgCQkJCQlkb3VibGUgcHgsIGRvdWJsZSBweSwgZG91YmxlIHZ4LCBkb3Vi bGUgdnksCistCQkJCQlkb3VibGUgdnBtcywgdWludCBsaWZldGltZSkKKysJCQkJCWRvdWJsZSB2 cG1zLCB1bnNpZ25lZCBpbnQgbGlmZXRpbWUpCisgCTogaW1nKHNpbWcpLCBneChfZ3gpLCBneShf Z3kpLCBzeChfc3gpLCBzeShfc3kpLCBzdyhfc3cpLCBzaChfc2gpLAorIAkgIHBvcyhweCxweSks IHZlbCh2eCx2eSkKKyB7CistLS0gc3JjL3Nwcml0ZS5oCTIwMTgtMDktMDIgMTg6NDc6MTguMDAw MDAwMDAwICswMjAwCisrKysgc3JjL3Nwcml0ZS5oCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjI5NTUx ODM4ICswMjAwCitAQCAtMTksMjEgKzE5LDIxIEBACisgY2xhc3MgU3ByaXRlIHsKKyBwdWJsaWM6 CisgCXZpcnR1YWwgflNwcml0ZSgpIHt9OworLQl2aXJ0dWFsIGludCB1cGRhdGUodWludCBtcykg PSAwOyAvKiByZXR1cm4gMSBpZiB0byBiZSByZW1vdmVkLCAwIG90aGVyd2lzZSAqLworKwl2aXJ0 dWFsIGludCB1cGRhdGUodW5zaWduZWQgaW50IG1zKSA9IDA7IC8qIHJldHVybiAxIGlmIHRvIGJl IHJlbW92ZWQsIDAgb3RoZXJ3aXNlICovCisgCXZpcnR1YWwgdm9pZCByZW5kZXIoKSA9IDA7Cisg fTsKKyAKKyBjbGFzcyBBbmltYXRpb24gOiBwdWJsaWMgU3ByaXRlIHsKKyAJR3JpZEltYWdlJiBp bWc7CistCXVpbnQgaWQ7CisrCXVuc2lnbmVkIGludCBpZDsKKyAJaW50IHgsIHk7IC8qIHBvc2l0 aW9uIG9uIHNjcmVlbiAqLworIAlGcmFtZUNvdW50ZXIgZmM7CisgcHVibGljOgorLQlBbmltYXRp b24oR3JpZEltYWdlICZfaW1nLCB1aW50IF9pZCwgdWludCBkZWxheSwgaW50IF94LCBpbnQgX3kp CisrCUFuaW1hdGlvbihHcmlkSW1hZ2UgJl9pbWcsIHVuc2lnbmVkIGludCBfaWQsIHVuc2lnbmVk IGludCBkZWxheSwgaW50IF94LCBpbnQgX3kpCisgCQkJCTogaW1nKF9pbWcpLCBpZChfaWQpLCB4 KF94KSwgeShfeSkgeworIAkJZmMuaW5pdChpbWcuZ2V0R3JpZFNpemVYKCksIGRlbGF5KTsKKyAJ fQorLQlpbnQgdXBkYXRlKHVpbnQgbXMpIHsKKysJaW50IHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMp IHsKKyAJCWlmIChmYy51cGRhdGUobXMpKQorIAkJCXJldHVybiAxOyAvKiBkaWUgKi8KKyAJCXJl dHVybiAwOworQEAgLTUwLDggKzUwLDggQEAgY2xhc3MgUGFydGljbGUgOiBwdWJsaWMgU3ByaXRl IHsKKyAJU21vb3RoQ291bnRlciBzYzsKKyBwdWJsaWM6CisgCVBhcnRpY2xlKEdyaWRJbWFnZSAm c2ltZywgaW50IGd4LCBpbnQgZ3ksIGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwKKy0J CQlkb3VibGUgcHgsIGRvdWJsZSBweSwgZG91YmxlIHZ4LCBkb3VibGUgdnksIGRvdWJsZSB2cG1z LCB1aW50IGxpZmV0aW1lKTsKKy0JaW50IHVwZGF0ZSh1aW50IG1zKSB7CisrCQkJZG91YmxlIHB4 LCBkb3VibGUgcHksIGRvdWJsZSB2eCwgZG91YmxlIHZ5LCBkb3VibGUgdnBtcywgdW5zaWduZWQg aW50IGxpZmV0aW1lKTsKKysJaW50IHVwZGF0ZSh1bnNpZ25lZCBpbnQgbXMpIHsKKyAJCXBvcy5h ZGQobXMsIHZlbCk7CisgCQlyZXR1cm4gc2MudXBkYXRlKG1zKTsKKyAJfQorLS0tIHNyYy90aGVt ZS5jcHAJMjAxOS0wMy0wNyAxNToxNDo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBzcmMvdGhlbWUu Y3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjMzNTUxODg2ICswMjAwCitAQCAtMjIsMTIgKzIyLDEy IEBAIGV4dGVybiBTRExfUmVuZGVyZXIgKm1yYzsKKyAKKyAvKiogTG9hZCByZXNvdXJjZXMgYW5k IHNjYWxlIGlmIG5lY2Vzc2FyeSB1c2luZyBicmlja3Mgc2NyZWVuIGhlaWdodC4KKyAgKiBXaGF0 ZXZlciBpcyBtaXNzaW5nOiBGYWxsIGJhY2sgdG8gU3RhbmRhcmQgdGhlbWUuICovCistdm9pZCBU aGVtZTo6bG9hZChzdHJpbmcgbmFtZSwgdWludCBzY3JlZW5XaWR0aCwgdWludCBzY3JlZW5IZWln aHQsCistCQkJCXVpbnQgYnJpY2tTY3JlZW5XaWR0aCwgdWludCBicmlja1NjcmVlbkhlaWdodCwK Kyt2b2lkIFRoZW1lOjpsb2FkKHN0cmluZyBuYW1lLCB1bnNpZ25lZCBpbnQgc2NyZWVuV2lkdGgs IHVuc2lnbmVkIGludCBzY3JlZW5IZWlnaHQsCisrCQkJCXVuc2lnbmVkIGludCBicmlja1NjcmVl bldpZHRoLCB1bnNpZ25lZCBpbnQgYnJpY2tTY3JlZW5IZWlnaHQsCisgCQkJCWludCBhbnRpYWxp YXNpbmcpCisgeworIAlzdHJpbmcgcGF0aCwgZnBhdGg7CistCXVpbnQgaXcsIGloOworKwl1bnNp Z25lZCBpbnQgaXcsIGloOworIAorIAlpZiAobmFtZVswXSA9PSAnficpCisgCQlwYXRoID0gZ2V0 SG9tZURpcigpICsgIi8iICsgQ09ORklHRElSICsgIi90aGVtZXMvIiArIG5hbWUuc3Vic3RyKDEp OworQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFRoZW1lOjpsb2FkKHN0cmluZyBuYW1lLCB1aW50 IHNjcmVlCisgCisgCS8qIGxvYWQgYW5kIHNjYWxlIHVwIHRvIDEwIHdhbGxwYXBlcnMgKi8KKyAJ c3RyaW5nIHdwYXRoID0gc3RkUGF0aDsKKy0JdWludCB3YmZoID0gc2JmaCwgd2JmdyA9IHNiZnc7 IC8qIGZvciBzY2FsaW5nICovCisrCXVuc2lnbmVkIGludCB3YmZoID0gc2JmaCwgd2JmdyA9IHNi Znc7IC8qIGZvciBzY2FsaW5nICovCisgCWlmIChmaWxlRXhpc3RzKHBhdGggKyAiL2JhY2swLnBu ZyIpIHx8IGZpbGVFeGlzdHMocGF0aCArICIvYmFjazAuanBnIikpIHsKKyAJCXdwYXRoID0gcGF0 aDsKKyAJCXdiZmggPSBicmlja0ZpbGVIZWlnaHQ7CistLS0gc3JjL3RoZW1lLmgJMjAxOS0wMy0w NyAxNTowNTo1My4wMDAwMDAwMDAgKzAxMDAKKysrKyBzcmMvdGhlbWUuaAkyMDE5LTA2LTEwIDEx OjA0OjI1LjIyOTU1MTgzOCArMDIwMAorQEAgLTMzLDM3ICszMywzNyBAQCBjbGFzcyBUaGVtZSB7 CisgCXN0cmluZyBzdGRQYXRoOyAvKiBwYXRoIHRvIHN0YW5kYXJkIHRoZW1lIGZvciBmYWxsYmFj a3MgKi8KKyAJYm9vbCBvbGRUaGVtZTsKKyAJaW50IGJvYXJkWDsKKy0JdWludCBib2FyZFdpZHRo OworKwl1bnNpZ25lZCBpbnQgYm9hcmRXaWR0aDsKKyAKKyAJLyogbG9hZGVkIGZyb20gdGhlbWUu aW5pICovCisgCXN0cmluZyB0aXRsZTsKKyAJc3RyaW5nIGF1dGhvcjsKKyAJc3RyaW5nIHZlcnNp b247CistCXVpbnQgYnJpY2tGaWxlV2lkdGg7CistCXVpbnQgYnJpY2tGaWxlSGVpZ2h0OworKwl1 bnNpZ25lZCBpbnQgYnJpY2tGaWxlV2lkdGg7CisrCXVuc2lnbmVkIGludCBicmlja0ZpbGVIZWln aHQ7CisgCWludCBzaGFkb3dPZmZzZXQ7CisgCXN0cmluZyBmb250U21hbGxOYW1lOworLQl1aW50 IGZvbnRTbWFsbFNpemU7CisrCXVuc2lnbmVkIGludCBmb250U21hbGxTaXplOworIAlzdHJpbmcg Zm9udE5vcm1hbE5hbWU7CistCXVpbnQgZm9udE5vcm1hbFNpemU7CisrCXVuc2lnbmVkIGludCBm b250Tm9ybWFsU2l6ZTsKKyAJU0RMX0NvbG9yIGZvbnRDb2xvck5vcm1hbDsKKyAJU0RMX0NvbG9y IGZvbnRDb2xvckhpZ2hsaWdodDsKKy0JdWludCBzaG90RnJhbWVOdW07CistCXVpbnQgc2hvdEFu aW1EZWxheTsKKy0JdWludCB3ZWFwb25GcmFtZU51bTsKKy0JdWludCB3ZWFwb25BbmltRGVsYXk7 CistCXVpbnQgZXhwbEZyYW1lTnVtOworLQl1aW50IGV4cGxBbmltRGVsYXk7CistCXVpbnQgc2hp bmVGcmFtZU51bTsKKy0JdWludCBzaGluZUFuaW1EZWxheTsKKy0JdWludCBtZW51WCwgbWVudVks IG1lbnVJdGVtV2lkdGgsIG1lbnVJdGVtSGVpZ2h0OworKwl1bnNpZ25lZCBpbnQgc2hvdEZyYW1l TnVtOworKwl1bnNpZ25lZCBpbnQgc2hvdEFuaW1EZWxheTsKKysJdW5zaWduZWQgaW50IHdlYXBv bkZyYW1lTnVtOworKwl1bnNpZ25lZCBpbnQgd2VhcG9uQW5pbURlbGF5OworKwl1bnNpZ25lZCBp bnQgZXhwbEZyYW1lTnVtOworKwl1bnNpZ25lZCBpbnQgZXhwbEFuaW1EZWxheTsKKysJdW5zaWdu ZWQgaW50IHNoaW5lRnJhbWVOdW07CisrCXVuc2lnbmVkIGludCBzaGluZUFuaW1EZWxheTsKKysJ dW5zaWduZWQgaW50IG1lbnVYLCBtZW51WSwgbWVudUl0ZW1XaWR0aCwgbWVudUl0ZW1IZWlnaHQ7 CisgCXN0cmluZyBtZW51Rm9udE5vcm1hbE5hbWUsIG1lbnVGb250Rm9jdXNOYW1lOworLQl1aW50 IG1lbnVGb250Tm9ybWFsU2l6ZSwgbWVudUZvbnRGb2N1c1NpemU7CisrCXVuc2lnbmVkIGludCBt ZW51Rm9udE5vcm1hbFNpemUsIG1lbnVGb250Rm9jdXNTaXplOworIAlTRExfQ29sb3IgbWVudUZv bnRDb2xvck5vcm1hbCwgbWVudUZvbnRDb2xvckZvY3VzOworIAorIAlJbWFnZSBtZW51QmFja2dy b3VuZDsKKyAJSW1hZ2Ugd2FsbHBhcGVyc1tNQVhXQUxMUEFQRVJTXTsKKy0JdWludCBudW1XYWxs cGFwZXJzOworKwl1bnNpZ25lZCBpbnQgbnVtV2FsbHBhcGVyczsKKyAJSW1hZ2UgZnJhbWUsIGZy YW1lU2hhZG93OworIAlHcmlkSW1hZ2UgYnJpY2tzLCBicmlja3NTaGFkb3c7CisgCUdyaWRJbWFn ZSBwYWRkbGVzLCBwYWRkbGVzU2hhZG93OworQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6Cisg CQl7CisgCQlzdGRQYXRoID0gc3RyaW5nKERBVEFESVIpICsgIi90aGVtZXMvU3RhbmRhcmQiOwor IAl9CistCXZvaWQgbG9hZChzdHJpbmcgbmFtZSwgdWludCBzY3JlZW5XaWR0aCwgdWludCBzY3Jl ZW5IZWlnaHQsCistCQkJCXVpbnQgYnJpY2tTY3JlZW5XaWR0aCwgdWludCBicmlja1NjcmVlbkhl aWdodCwKKysJdm9pZCBsb2FkKHN0cmluZyBuYW1lLCB1bnNpZ25lZCBpbnQgc2NyZWVuV2lkdGgs IHVuc2lnbmVkIGludCBzY3JlZW5IZWlnaHQsCisrCQkJCXVuc2lnbmVkIGludCBicmlja1NjcmVl bldpZHRoLCB1bnNpZ25lZCBpbnQgYnJpY2tTY3JlZW5IZWlnaHQsCisgCQkJCWludCBhbnRpYWxp YXNpbmcpOworIH07CisgCistLS0gc3JjL3Rvb2xzLmNwcAkyMDE4LTExLTA0IDEyOjA0OjE3LjAw MDAwMDAwMCArMDEwMAorKysrIHNyYy90b29scy5jcHAJMjAxOS0wNi0xMCAxMTowNDoyNS4yMzM1 NTE4ODYgKzAyMDAKK0BAIC05NCw3ICs5NCw3IEBAIGludCBGaWxlUGFyc2VyOjpnZXQoY29uc3Qg c3RyaW5nJiBrLCBpbnQKKyAJCXYgPSBzdG9pKHN0cik7CisgCXJldHVybiByZXQ7CisgfQorLWlu dCBGaWxlUGFyc2VyOjpnZXQoY29uc3Qgc3RyaW5nJiBrLCB1aW50ICZ2KQorK2ludCBGaWxlUGFy c2VyOjpnZXQoY29uc3Qgc3RyaW5nJiBrLCB1bnNpZ25lZCBpbnQgJnYpCisgeworIAlzdHJpbmcg c3RyOworIAlpbnQgcmV0ID0gZ2V0KGssc3RyKTsKKy0tLSBzcmMvdG9vbHMuaAkyMDE4LTEwLTMx IDEyOjIzOjIyLjAwMDAwMDAwMCArMDEwMAorKysrIHNyYy90b29scy5oCTIwMTktMDYtMTAgMTE6 MDQ6MjUuMjI5NTUxODM4ICswMjAwCitAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CisgCUZpbGVQ YXJzZXIoY29uc3Qgc3RyaW5nJiAgZm5hbWUpOworIAlpbnQgZ2V0KGNvbnN0IHN0cmluZyYgIGss IHN0cmluZyAmdik7CisgCWludCBnZXQoY29uc3Qgc3RyaW5nJiAgaywgaW50ICZ2KTsKKy0JaW50 IGdldChjb25zdCBzdHJpbmcmICBrLCB1aW50ICZ2KTsKKysJaW50IGdldChjb25zdCBzdHJpbmcm ICBrLCB1bnNpZ25lZCBpbnQgJnYpOworIAlpbnQgZ2V0KGNvbnN0IHN0cmluZyYgIGssIHVpbnQ4 X3QgJnYpOworIAlpbnQgZ2V0KGNvbnN0IHN0cmluZyYgIGssIGRvdWJsZSAmdik7CisgfTsKK0BA IC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgorIAorIGNsYXNzIEZyYW1lQ291bnRlciA6IHB1Ymxp YyBTbW9vdGhDb3VudGVyIHsKKyBwdWJsaWM6CistCXZvaWQgaW5pdCh1aW50IG1heCwgdWludCBk ZWxheSkgeworKwl2b2lkIGluaXQodW5zaWduZWQgaW50IG1heCwgdW5zaWduZWQgaW50IGRlbGF5 KSB7CisgCQlTbW9vdGhDb3VudGVyOjppbml0KFNDVF9SRVBFQVQsIDAsIC0wLjAxICsgbWF4LCBk ZWxheSk7CisgCX0KKyAJaW50IGdldCgpIHsgcmV0dXJuIFNtb290aENvdW50ZXI6OmdldCgpOyB9 CistLS0gc3JjL3ZpZXcuY3BwCTIwMTktMDMtMDggMTk6MTM6MzEuMDAwMDAwMDAwICswMTAwCisr Kysgc3JjL3ZpZXcuY3BwCTIwMTktMDYtMTAgMTE6MDQ6MjUuMjM0NTUxODk4ICswMjAwCitAQCAt NzQsNyArNzQsNyBAQCBWaWV3OjpWaWV3KENvbmZpZyAmY2ZnLCBDbGllbnRHYW1lICZfY2cpCisg CisgLyoqIChSZSlJbml0aWFsaXplIHdpbmRvdywgdGhlbWUgYW5kIG1lbnUuCisgICogdCBpcyB0 aGVtZSBuYW1lLCByPTAgbWVhbnMgZnVsbHNjcmVlbiwgb3RoZXJ3aXNlIHZlcnRpY2FsIHJlc29s dXRpb24uICovCistdm9pZCBWaWV3Ojppbml0KHN0cmluZyB0LCB1aW50IHIpCisrdm9pZCBWaWV3 Ojppbml0KHN0cmluZyB0LCB1bnNpZ25lZCBpbnQgcikKKyB7CisgCV9sb2dpbmZvKCJJbml0aWFs aXppbmcgVmlldyAoVGhlbWU9JXMsIFJlc29sdXRpb249JWQpXG4iLHQuY19zdHIoKSxyKTsKKyAK K0BAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBWaWV3OjpyZW5kZXJCYWNrZ3JvdW5kSW1hZ2UoKSB7 CisgCisgCS8qIGxpdmVzICovCisgCUNsaWVudFBsYXllciAqY3AgPSBjZ2FtZS5nZXRDdXJyZW50 UGxheWVyKCk7CistCWZvciAodWludCBpID0gMDsgaSA8IGNwLT5nZXRNYXhMaXZlcygpOyBpKysp CisrCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY3AtPmdldE1heExpdmVzKCk7IGkrKykK KyAJCXRoZW1lLmxpZmUuY29weSgwLCBpIDwgY3AtPmdldExpdmVzKCksIDAsIChNQVBIRUlHSFQt aS0xKSpiaCk7CisgCisgCVNETF9TZXRSZW5kZXJUYXJnZXQobXJjLE5VTEwpOworQEAgLTczOSwx MiArNzM5LDEyIEBAIHZvaWQgVmlldzo6cmVuZGVyU2NvcmVJbWFnZSgpCisgdm9pZCBWaWV3Ojpy ZW5kZXJFeHRyYXNJbWFnZSgpCisgeworIAlHYW1lICpnYW1lID0gY2dhbWUuZ2V0R2FtZUNvbnRl eHQoKTsKKy0JdWludCBidyA9IGJyaWNrU2NyZWVuV2lkdGgsIGJoID0gYnJpY2tTY3JlZW5IZWln aHQ7CistCXVpbnQgeHN0YXJ0ID0gKGltZ0V4dHJhcy5nZXRXaWR0aCgpIC0gMypidykgLyA0Owor LQl1aW50IHlzdGFydCA9IChpbWdFeHRyYXMuZ2V0SGVpZ2h0KCkgLSAzKmJoKSAvIDQ7CistCXVp bnQgeG9mZiA9IGJ3ICsgeHN0YXJ0OworLQl1aW50IHlvZmYgPSBiaCArIHlzdGFydDsKKy0JdWlu dCB4ID0geHN0YXJ0LCB5ID0geXN0YXJ0OworKwl1bnNpZ25lZCBpbnQgYncgPSBicmlja1NjcmVl bldpZHRoLCBiaCA9IGJyaWNrU2NyZWVuSGVpZ2h0OworKwl1bnNpZ25lZCBpbnQgeHN0YXJ0ID0g KGltZ0V4dHJhcy5nZXRXaWR0aCgpIC0gMypidykgLyA0OworKwl1bnNpZ25lZCBpbnQgeXN0YXJ0 ID0gKGltZ0V4dHJhcy5nZXRIZWlnaHQoKSAtIDMqYmgpIC8gNDsKKysJdW5zaWduZWQgaW50IHhv ZmYgPSBidyArIHhzdGFydDsKKysJdW5zaWduZWQgaW50IHlvZmYgPSBiaCArIHlzdGFydDsKKysJ dW5zaWduZWQgaW50IHggPSB4c3RhcnQsIHkgPSB5c3RhcnQ7CisgCisgCVNETF9TZXRSZW5kZXJU YXJnZXQobXJjLCBpbWdFeHRyYXMuZ2V0VGV4KCkpOworIAlTRExfU2V0UmVuZGVyRHJhd0NvbG9y KG1yYywwLDAsMCwwKTsKK0BAIC04NDYsMTQgKzg0NiwxNCBAQCBib29sIFZpZXc6OnNob3dJbmZv KGNvbnN0IHZlY3RvcjxzdHJpbmc+CisgeworIAlGb250ICZmb250ID0gdGhlbWUuZlNtYWxsOwor IAlib29sIHJldCA9IHRydWU7CistCXVpbnQgaCA9IHRleHQuc2l6ZSgpICogZm9udC5nZXRMaW5l SGVpZ2h0KCk7CisrCXVuc2lnbmVkIGludCBoID0gdGV4dC5zaXplKCkgKiBmb250LmdldExpbmVI ZWlnaHQoKTsKKyAJaW50IHR4ID0gbXctPmdldFdpZHRoKCkvMjsKKyAJaW50IHR5ID0gKG13LT5n ZXRIZWlnaHQoKSAtIGgpLzI7CisgCisgCWRhcmtlblNjcmVlbigpOworIAorIAlmb250LnNldEFs aWduKEFMSUdOX1hfQ0VOVEVSIHwgQUxJR05fWV9UT1ApOworLQlmb3IgKHVpbnQgaSA9IDA7IGkg PCB0ZXh0LnNpemUoKTsgaSsrKSB7CisrCWZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdGV4 dC5zaXplKCk7IGkrKykgeworIAkJZm9udC53cml0ZSh0eCx0eSx0ZXh0W2ldKTsKKyAJCXR5ICs9 IGZvbnQuZ2V0TGluZUhlaWdodCgpOworIAl9CitAQCAtOTY0LDEyICs5NjQsMTIgQEAgdm9pZCBW aWV3OjpjcmVhdGVTcHJpdGVzKCkKKyAJfQorIH0KKyAKKy12b2lkIFZpZXc6OmdldEJhbGxWaWV3 SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwgdWludCAqdHlwZSkKKyt2b2lkIFZpZXc6 OmdldEJhbGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwgdW5zaWduZWQgaW50 ICp0eXBlKQorIHsKKyAJR2FtZSAqZ2FtZSA9IGNnYW1lLmdldEdhbWVDb250ZXh0KCk7IC8qIGRp cmVjdCBsaWIgZ2FtZSBjb250ZXh0ICovCisgCVBhZGRsZSAqcGFkZGxlID0gZ2FtZS0+cGFkZGxl c1swXTsgLyogbG9jYWwgcGFkZGxlIGFsd2F5cyBhdCBib3R0b20gKi8KKyAKKy0JdWludCBidCA9 IDA7CisrCXVuc2lnbmVkIGludCBidCA9IDA7CisgCWRvdWJsZSBweCA9IGJhbGwtPmN1ci54Owor IAlkb3VibGUgcHkgPSBiYWxsLT5jdXIueTsKKyAJaWYgKGJhbGwtPmF0dGFjaGVkKSB7CitAQCAt MTM5NSw3ICsxMzk1LDcgQEAgdm9pZCBWaWV3OjpzYXZlR2FtZSgpCisgCW9mcyA8PCAiZGlmZmlj dWx0eT0iIDw8IGNvbmZpZy5kaWZmIDw8ICJcbiI7CisgCW9mcyA8PCAiY3VycGxheWVyPSIgPDwg Y2dhbWUuZ2V0Q3VycmVudFBsYXllcklkKCkgPDwgIlxuIjsKKyAJb2ZzIDw8ICJwbGF5ZXJzPSIg PDwgcGxheWVycy5zaXplKCkgPDwgIlxuIjsKKy0JZm9yICh1aW50IGkgPSAwOyBpIDwgcGxheWVy cy5zaXplKCk7IGkrKykgeworKwlmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBsYXllcnMu c2l6ZSgpOyBpKyspIHsKKyAJCW9mcyA8PCAicGxheWVyIiA8PCBpIDw8ICIge1xuIjsKKyAJCW9m cyA8PCAiCW5hbWU9IiA8PCBwbGF5ZXJzW2ldLT5nZXROYW1lKCkgPDwgIlxuIjsKKyAJCW9mcyA8 PCAiCWxldmVsPSIgPDwgcGxheWVyc1tpXS0+Z2V0TGV2ZWwoKSA8PCAiXG4iOworQEAgLTE0MzIs MTggKzE0MzIsMTggQEAgaW50IFZpZXc6OnJlc3VtZUdhbWUoKQorIAkJZnAuZ2V0KHN0cmluZygi cGxheWVyIikgKyB0b19zdHJpbmcoaSkgKyAiLm5hbWUiLGNvbmZpZy5wbGF5ZXJfbmFtZXNbaV0p OworIAorIAkvKiBpbml0aWFsaXplIGdhbWUgdG8gbGV2ZWwgb2YgY3VycmVudCBwbGF5ZXIgKi8K Ky0JdWludCBwaWQgPSAwOworKwl1bnNpZ25lZCBpbnQgcGlkID0gMDsKKyAJZnAuZ2V0KCJjdXJw bGF5ZXIiLHBpZCk7CisgCWlmIChwaWQgPj0gTUFYX1BMQVlFUlMpCisgCQlwaWQgPSAwOworLQl1 aW50IGxldmlkID0gMDsKKysJdW5zaWduZWQgaW50IGxldmlkID0gMDsKKyAJZnAuZ2V0KHN0cmlu ZygicGxheWVyIikgKyB0b19zdHJpbmcocGlkKSArICIubGV2ZWwiLGxldmlkKTsKKyAJY2dhbWUu aW5pdChzZXRuYW1lLGxldmlkKTsKKyAKKyAJLyogYWRqdXN0IHBsYXllcnMgKi8KKyAJZm9yIChp bnQgaSA9IDA7IGkgPCBjb25maWcucGxheWVyX2NvdW50OyBpKyspIHsKKyAJCXN0cmluZyBwcmVm aXggPSBzdHJpbmcoInBsYXllciIpICsgdG9fc3RyaW5nKGkpICsgIi4iOworLQkJdWludCBsZXZl bCA9IDAsIGxpdmVzID0gMzsKKysJCXVuc2lnbmVkIGludCBsZXZlbCA9IDAsIGxpdmVzID0gMzsK KyAJCWludCBzY29yZSA9IDA7CisgCQlmcC5nZXQocHJlZml4ICsgInNjb3JlIixzY29yZSk7Cisg CQlmcC5nZXQocHJlZml4ICsgImxldmVsIixsZXZlbCk7CitAQCAtMTUyOSw4ICsxNTI5LDggQEAg dm9pZCBWaWV3OjpyZW5kZXJCYWxscyhib29sIHNoYWRvdykKKyAJQmFsbCAqYmFsbDsKKyAJbGlz dF9yZXNldChnYW1lLT5iYWxscyk7CisgCXdoaWxlICggKCBiYWxsID0gKEJhbGwqKWxpc3RfbmV4 dCggZ2FtZS0+YmFsbHMgKSApICE9IDAgKSB7CistCQl1aW50IHR5cGU7CistCQl1aW50IGFscGhh ID0gMjU1OworKwkJdW5zaWduZWQgaW50IHR5cGU7CisrCQl1bnNpZ25lZCBpbnQgYWxwaGEgPSAy NTU7CisgCQlpbnQgcHgsIHB5OworIAkJZ2V0QmFsbFZpZXdJbmZvKGJhbGwsICZweCwgJnB5LCAm dHlwZSk7CisgCQlpZiAodHlwZSA9PSAxKSAvKiBlbmVyZ3kgYmFsbCAqLworQEAgLTE1NjEsNyAr MTU2MSw3IEBAIHZvaWQgVmlldzo6dXBkYXRlUmVzdW1lR2FtZVRvb2x0aXAoKQorIAkvKiBYWFgg bXVsdGlwbGUgbG9jYXRpb25zLi4uICovCisgCWNvbnN0IGNoYXIgKmRpZmZOYW1lc1tdID0ge18o IktpZHMiKSxfKCJFYXN5IiksXygiTWVkaXVtIiksXygiSGFyZCIpIH0gOworIAlzdHJpbmcgdGV4 dCwgc3RyOworLQl1aW50IGRpZmYsIHBudW07CisrCXVuc2lnbmVkIGludCBkaWZmLCBwbnVtOwor IAlGaWxlUGFyc2VyIGZwKHNhdmVGaWxlTmFtZSk7CisgCWZwLmdldCgibGV2ZWxzZXQiLHRleHQp OworIAlmcC5nZXQoImRpZmZpY3VsdHkiLGRpZmYpOworQEAgLTE1NzMsMTAgKzE1NzMsMTAgQEAg dm9pZCBWaWV3Ojp1cGRhdGVSZXN1bWVHYW1lVG9vbHRpcCgpCisgCXRleHQgKz0gdG9fc3RyaW5n KHBudW0pOworIAl0ZXh0ICs9IF8oIiBwbGF5ZXIocylcbiIpOworIAorLQlmb3IgKHVpbnQgaSA9 IDA7IGkgPCBwbnVtOyBpKyspIHsKKysJZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbnVt OyBpKyspIHsKKyAJCXN0cmluZyBwcmVmaXggPSBzdHJpbmcoInBsYXllciIpICsgdG9fc3RyaW5n KGkpICsgIi4iOworIAkJc3RyaW5nIG5hbWU7CistCQl1aW50IGxldmVsID0gMCwgbGl2ZXMgPSAz OworKwkJdW5zaWduZWQgaW50IGxldmVsID0gMCwgbGl2ZXMgPSAzOworIAkJaW50IHNjb3JlID0g MDsKKyAJCWZwLmdldChwcmVmaXggKyAibmFtZSIsbmFtZSk7CisgCQlmcC5nZXQocHJlZml4ICsg InNjb3JlIixzY29yZSk7CitAQCAtMTU5MSw3ICsxNTkxLDcgQEAgdm9pZCBWaWV3Ojp1cGRhdGVS ZXN1bWVHYW1lVG9vbHRpcCgpCisgCXJlc3VtZU1lbnVJdGVtLT5zZXRUb29sdGlwKHRleHQpOwor IH0KKyAKKy12b2lkIFZpZXc6OnJlbmRlckV4dHJhSGVscChHcmlkSW1hZ2UgJmltZywgdWludCBn eCwgdWludCBneSwgY29uc3Qgc3RyaW5nICZzdHIsIGludCB4LCBpbnQgeSkKKyt2b2lkIFZpZXc6 OnJlbmRlckV4dHJhSGVscChHcmlkSW1hZ2UgJmltZywgdW5zaWduZWQgaW50IGd4LCB1bnNpZ25l ZCBpbnQgZ3ksIGNvbnN0IHN0cmluZyAmc3RyLCBpbnQgeCwgaW50IHkpCisgeworIAlpbWcuY29w eShneCxneSx4LHkpOworIAl0aGVtZS5mU21hbGwuc2V0QWxpZ24oQUxJR05fWF9MRUZUIHwgQUxJ R05fWV9DRU5URVIpOworQEAgLTE2MjEsNyArMTYyMSw3IEBAIHZvaWQgVmlldzo6c2hvd0hlbHAo KQorIAkJOworIAorIAlpbnQgeCA9IGJyaWNrU2NyZWVuV2lkdGgsIHkgPSBicmlja1NjcmVlbkhl aWdodDsKKy0JdWludCBtYXh3ID0gYnJpY2tTY3JlZW5XaWR0aCAqIDEwOworKwl1bnNpZ25lZCBp bnQgbWF4dyA9IGJyaWNrU2NyZWVuV2lkdGggKiAxMDsKKyAKKyAJZGFya2VuU2NyZWVuKCk7Cisg CistLS0gc3JjL3ZpZXcuaAkyMDE5LTAzLTA3IDE1OjQ0OjM2LjAwMDAwMDAwMCArMDEwMAorKysr IHNyYy92aWV3LmgJMjAxOS0wNi0xMCAxMTowNDoyNS4yMjk1NTE4MzggKzAyMDAKK0BAIC0xMDUs NyArMTA1LDcgQEAgY2xhc3MgVmlldyB7CisgCXZvaWQgc2hvd0hlbHAoKTsKKyAJdm9pZCBjcmVh dGVQYXJ0aWNsZXMoQnJpY2tIaXQgKmhpdCk7CisgCXZvaWQgY3JlYXRlU3ByaXRlcygpOworLQl2 b2lkIGdldEJhbGxWaWV3SW5mbyhCYWxsICpiYWxsLCBpbnQgKngsIGludCAqeSwgdWludCAqdHlw ZSk7CisrCXZvaWQgZ2V0QmFsbFZpZXdJbmZvKEJhbGwgKmJhbGwsIGludCAqeCwgaW50ICp5LCB1 bnNpZ25lZCBpbnQgKnR5cGUpOworIAl2b2lkIHBsYXlTb3VuZHMoKTsKKyAJdm9pZCBjcmVhdGVN ZW51cygpOworIAl2b2lkIGdyYWJJbnB1dChpbnQgZ3JhYik7CitAQCAtMTE2LDE0ICsxMTYsMTQg QEAgY2xhc3MgVmlldyB7CisgCXZvaWQgZGFya2VuU2NyZWVuKGludCBhbHBoYSA9IDMyKTsKKyAJ dm9pZCBpbml0VGl0bGVMYWJlbCgpOworIAl2b2lkIHVwZGF0ZVJlc3VtZUdhbWVUb29sdGlwKCk7 CistCXZvaWQgcmVuZGVyRXh0cmFIZWxwKEdyaWRJbWFnZSAmaW1nLCB1aW50IGd4LCB1aW50IGd5 LCBjb25zdCBzdHJpbmcgJnN0ciwgaW50IHgsIGludCB5KTsKKysJdm9pZCByZW5kZXJFeHRyYUhl bHAoR3JpZEltYWdlICZpbWcsIHVuc2lnbmVkIGludCBneCwgdW5zaWduZWQgaW50IGd5LCBjb25z dCBzdHJpbmcgJnN0ciwgaW50IHgsIGludCB5KTsKKyAJdm9pZCBydW5Ccmlja0Rlc3Ryb3lEbGco KTsKKyAJdm9pZCB3YWl0Rm9ySW5wdXRSZWxlYXNlKCk7CisgCXZvaWQgZ2V0TmV3U2hpbmVQb3Np dGlvbigpOworIHB1YmxpYzoKKyAJVmlldyhDb25maWcgJmNmZywgQ2xpZW50R2FtZSAmX2NnKTsK KyAJflZpZXcoKTsKKy0Jdm9pZCBpbml0KHN0cmluZyB0LCB1aW50IHIpOworKwl2b2lkIGluaXQo c3RyaW5nIHQsIHVuc2lnbmVkIGludCByKTsKKyAJdm9pZCBydW4oKTsKKyAJdm9pZCByZW5kZXIo KTsKKyAJdm9pZCBydW5NZW51KCk7CistLS0gc3JjL2NsaWVudGdhbWUuY3BwLm9yaWcJMjAxOS0w Ni0xMCAxMTowODo1NS41MTU3NTY0ODUgKzAyMDAKKysrKyBzcmMvY2xpZW50Z2FtZS5jcHAJMjAx OS0wNi0xMCAxMTowOToxNy45NjQwMjEzNTUgKzAyMDAKK0BAIC05NSw3ICs5NSw3IEBAIENsaWVu dFBsYXllciAqQ2xpZW50R2FtZTo6Z2V0TmV4dFBsYXllcigKKyAJCWlmIChjdXJQbGF5ZXIgPT0g cGxheWVycy5zaXplKCkpCisgCQkJY3VyUGxheWVyID0gMDsKKyAJCXAgPSBwbGF5ZXJzW2N1clBs YXllcl0uZ2V0KCk7CistCQlpZiAocC0+Z2V0TGl2ZXMoKSA+IDAgJiYgcC0+Z2V0TGV2ZWwoKSA8 ICh1aW50KWxldmVsc2V0LT5jb3VudCkKKysJCWlmIChwLT5nZXRMaXZlcygpID4gMCAmJiBwLT5n ZXRMZXZlbCgpIDwgKHVuc2lnbmVkIGludClsZXZlbHNldC0+Y291bnQpCisgCQkJcmV0dXJuIHA7 CisgCX0gd2hpbGUgKGN1clBsYXllciAhPSBzdGFydElkKTsKKyAJcmV0dXJuIE5VTEw7CitAQCAt MTkyLDcgKzE5Miw3IEBAIGludCBDbGllbnRHYW1lOjp1cGRhdGUodW5zaWduZWQgaW50IG1zLAor IAkJQ2xpZW50UGxheWVyICpwID0gcGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOworIAkJLyogYm9u dXMgbGV2ZWxzIGFyZSBqdXN0IHNraXBwZWQgb24gZmFpbHVyZSAqLworIAkJaWYgKGdhbWUtPndp bm5lciA9PSBQQURETEVfQk9UVE9NIHx8IGdhbWUtPmxldmVsX3R5cGUgIT0gTFRfTk9STUFMKSB7 CistCQkJaWYgKHAtPm5leHRMZXZlbCgpIDwgKHVpbnQpbGV2ZWxzZXQtPmNvdW50KQorKwkJCWlm IChwLT5uZXh0TGV2ZWwoKSA8ICh1bnNpZ25lZCBpbnQpbGV2ZWxzZXQtPmNvdW50KQorIAkJCQlw LT5zZXRMZXZlbFNuYXBzaG90KGxldmVsc2V0LT5sZXZlbHNbcC0+Z2V0TGV2ZWwoKV0pOworIAkJ CWVsc2UgeworIAkJCQlzdHJwcmludGYobXNnLF8oIkNvbmdyYXR1bGF0aW9ucywgJXMsIHlvdSBj bGVhcmVkIGFsbCBsZXZlbHMhIikscC0+Z2V0TmFtZSgpLmNfc3RyKCkpOworLS0tIHNyYy9jbGll bnRnYW1lLmgub3JpZwkyMDE5LTA2LTEwIDExOjEwOjMwLjUwMDg3NzIzMSArMDIwMAorKysrIHNy Yy9jbGllbnRnYW1lLmgJMjAxOS0wNi0xMCAxMToxMDo0MS45NzIwMTI1ODEgKzAyMDAKK0BAIC0x MjAsNyArMTIwLDcgQEAgcHVibGljOgorIAl2b2lkIGdldEN1cnJlbnRMZXZlbE5hbWVBbmRBdXRo b3Ioc3RyaW5nICZuYW1lLCBzdHJpbmcgJmF1dGhvcikgeworIAkJQ2xpZW50UGxheWVyICpwID0g cGxheWVyc1tjdXJQbGF5ZXJdLmdldCgpOworIAkJdW5zaWduZWQgaW50IGxpZCA9IHAtPmdldExl dmVsKCk7CistCQlpZiAobGlkID49ICh1aW50KWxldmVsc2V0LT5jb3VudCkgeworKwkJaWYgKGxp ZCA+PSAodW5zaWduZWQgaW50KWxldmVsc2V0LT5jb3VudCkgeworIAkJCW5hbWUgPSAibm9uZSI7 CisgCQkJYXV0aG9yID0gIm5vbmUiOyAvKiBpcyBkb25lLCBzaG91bGQgbm90IGhhcHBlbiAqLwor IAkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGJyZWFrb3V0aGQvdGVtcGxhdGUgYi9z cmNwa2dzL2xicmVha291dGhkL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi40ZTA5Nzg4YWUwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGJyZWFr b3V0aGQvdGVtcGxhdGUKQEAgLTAsMCArMSwxMyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGJy ZWFrb3V0aGQnCitwa2duYW1lPWxicmVha291dGhkCit2ZXJzaW9uPTEuMC40CityZXZpc2lvbj0x CitidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCitjb25maWd1cmVfYXJncz0iLS1sb2NhbHN0YXRl ZGlyPS92YXIvJHtwa2duYW1lfSIKK21ha2VkZXBlbmRzPSJTREwyLWRldmVsIFNETDJfbWl4ZXIt ZGV2ZWwgU0RMMl9pbWFnZS1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKK3Nob3J0X2Rlc2M9IlNjYWxh YmxlIDE2OjkgcmVtYWtlIG9mIExCcmVha291dDIiCittYWludGFpbmVyPSJKdWFuIFJQIDx4dHJh ZW1lQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKK2hvbWVwYWdl PSJodHRwOi8vbGdhbWVzLnNvdXJjZWZvcmdlLm5ldC9MQnJlYWtvdXRIRC8iCitkaXN0ZmlsZXM9 IiR7U09VUkNFRk9SR0VfU0lURX0vbGdhbWVzLyRwa2duYW1lLSR2ZXJzaW9uLnRhci5neiIKK2No ZWNrc3VtPTQzZDJjMjY4YjA0OTRkNzI4MTZlOWYxMDZmYWUxN2IzMTFmYTY2NWExNTMzNzdlMmYw Y2MwZTAzNjJhYTMwYWYK --===============8025598791028582795==--