Re: texinfo 4.11.90 pretest
Peter Breitenlohner <[email protected]> Mon, 25 Feb 2008 16:15:31 +0100 (CET)
| Newsgroups | gmane.comp.tex.texinfo.bugs,gmane.comp.tex.texinfo.pretest |
|---|---|
| Message-ID | <[email protected]> |
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1803957763-510385146-1203952531=:15997 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Fri, 22 Feb 2008, Karl Berry wrote: > I uploaded a texinfo pretest release at > http://alpha.gnu.org/gnu/texinfo/texinfo-4.11.90.tar.gz. Please try it > if you can. Hi Karl, just fetched this and did ../SRCDIR/configure --disable-nls make make check make DESTRIR=somewhere install At first two of the tests (ii-0041-test, ii-0050-test) went into an endless loop, caused by the buggy zdiff from gzip-1.3.9. After upgrading to gzip-1.3.12 everything was fine. However, there were two gcc warnings (`discards qualifier'). I think they prevent texinfo from being built with a C++ compiler. Anyway, attached is a patch cleaning some of that `const' mess, and at the same time removing quite a lot of `(char *)' casts. Another patch adds a space in install-info's usage message, such that help2man handles this correctly. Maybe you prefer to move everything one column to the right? I'll have a look at texi2dvi's usage message and see what can be done there. Thus another patch might follow. regards Peter --1803957763-510385146-1203952531=:15997 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-04-const Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-04-const Q2hhbmdlTG9nOg0KDQoyMDA4LTAyLTI1ICBQZXRlciBCcmVpdGVubG9obmVy IDxwZWJAbXBwbXUubXBnLmRlPg0KDQoJKiBpbmZvL2RvYy5oLCBpbmZvL2Vj aG8tYXJlYS5jLCBpbmZvL2VjaG8tYXJlYS5oLA0KCWluZm8vZm9vdG5vdGVz LmMsIGluZm8vaW5kaWNlcy5jLCBpbmZvL2luZm8uYywgaW5mby9pbmZvLmgs DQoJaW5mby9pbmZvZG9jLmMsIGluZm8vaW5mb2tleS5jLCBpbmZvL2luZm9t YXAuYywgaW5mby9tLXguYywNCglpbmZvL25vZGVtZW51LmMsIGluZm8vc2Vz c2lvbi5jLCBpbmZvL3Nlc3Npb24uaCwNCglpbmZvL3ZhcmlhYmxlcy5jLCBp bmZvL3ZhcmlhYmxlcy5oLCBpbmZvL3dpbmRvdy5jLA0KCWluZm8vd2luZG93 Lmg6IGRlY2xhcmUgY29uc3RhbnQgc3RyaW5ncyBhcyBzdWNoIGFuZCByZW1v dmUNCgltYW55IGAoY2hhciAqKScgY2FzdHMgLS0gaW4gcGFydGljdWxhciBm b3IgYF8oLi4uKScuDQoJQXZvaWQgZ2NjIHdhcm5pbmdzIChmb3IgLS1kaXNh YmxlLW5scyBhbmQgbWF5YmUgd2l0aG91dCkuDQoNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAu b3JpZy9pbmZvL2RvYy5oIHRleGluZm8tNC4xMS45MC9pbmZvL2RvYy5oDQot LS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9kb2MuaAkyMDA3LTA3LTAx IDIzOjIwOjI5LjAwMDAwMDAwMCArMDIwMA0KKysrIHRleGluZm8tNC4xMS45 MC9pbmZvL2RvYy5oCTIwMDgtMDItMjUgMTE6Mjk6NDMuMDAwMDAwMDAwICsw MTAwDQpAQCAtOTYsNyArOTYsNyBAQA0KIGV4dGVybiBjaGFyICpwcmV0dHlf a2V5bmFtZSAodW5zaWduZWQgY2hhciBrZXkpOw0KIGV4dGVybiBjaGFyICpw cmV0dHlfa2V5c2VxIChjaGFyICprZXlzZXEpOw0KIGV4dGVybiBjaGFyICp3 aGVyZV9pcyAoS2V5bWFwIG1hcCwgSW5mb0NvbW1hbmQgKmNtZCk7DQotZXh0 ZXJuIGNoYXIgKnJlcGxhY2VfaW5fZG9jdW1lbnRhdGlvbiAoY2hhciAqc3Ry aW5nLCBpbnQgaGVscF9pc19vbmx5X3dpbmRvd19wKTsNCitleHRlcm4gY2hh ciAqcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uIChjb25zdCBjaGFyICpzdHJp bmcsIGludCBoZWxwX2lzX29ubHlfd2luZG93X3ApOw0KIGV4dGVybiB2b2lk IGR1bXBfbWFwX3RvX21lc3NhZ2VfYnVmZmVyIChjaGFyICpwcmVmaXgsIEtl eW1hcCBtYXApOw0KIA0KICNlbmRpZiAvKiAhRE9DX0ggKi8NCmRpZmYgLXVy IHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vZWNoby1hcmVhLmMgdGV4aW5m by00LjExLjkwL2luZm8vZWNoby1hcmVhLmMNCi0tLSB0ZXhpbmZvLTQuMTEu OTAub3JpZy9pbmZvL2VjaG8tYXJlYS5jCTIwMDctMTItMDMgMDI6Mzg6NDIu MDAwMDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vZWNo by1hcmVhLmMJMjAwOC0wMi0yNSAxMzozMTo1Mi4wMDAwMDAwMDAgKzAxMDAN CkBAIC00NCw3ICs0NCw3IEBADQogDQogLyogVmFyaWFibGVzIHdoaWNoIGhv bGQgb24gdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGlucHV0IGxpbmUu ICovDQogc3RhdGljIGNoYXIgaW5wdXRfbGluZVsxICsgRUFfTUFYX0lOUFVU XTsNCi1zdGF0aWMgY2hhciAqaW5wdXRfbGluZV9wcm9tcHQ7DQorc3RhdGlj IGNvbnN0IGNoYXIgKmlucHV0X2xpbmVfcHJvbXB0Ow0KIHN0YXRpYyBpbnQg aW5wdXRfbGluZV9wb2ludDsNCiBzdGF0aWMgaW50IGlucHV0X2xpbmVfYmVn Ow0KIHN0YXRpYyBpbnQgaW5wdXRfbGluZV9lbmQ7DQpAQCAtMTU5LDcgKzE1 OSw3IEBADQogDQogLyogU2V0IHVwIGEgbmV3IGlucHV0IGxpbmUgd2l0aCBQ Uk9NUFQuICovDQogc3RhdGljIHZvaWQNCi1pbml0aWFsaXplX2lucHV0X2xp bmUgKGNoYXIgKnByb21wdCkNCitpbml0aWFsaXplX2lucHV0X2xpbmUgKGNv bnN0IGNoYXIgKnByb21wdCkNCiB7DQogICBpbnB1dF9saW5lX3Byb21wdCA9 IHByb21wdDsNCiAgIGlmIChwcm9tcHQpDQpAQCAtMjAwLDcgKzIwMCw3IEBA DQogICAgYWN0aXZlIHdpbmRvdywgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZSBp dCB3aGVuIHdlIG5lZWQgdG8uICBQUk9NUFQsIGlmDQogICAgbm9uLW51bGws IGlzIGEgcHJvbXB0IHRvIHByaW50IGJlZm9yZSByZWFkaW5nIHRoZSBsaW5l LiAqLw0KIGNoYXIgKg0KLWluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKFdJTkRP VyAqd2luZG93LCBjaGFyICpwcm9tcHQpDQoraW5mb19yZWFkX2luX2VjaG9f YXJlYSAoV0lORE9XICp3aW5kb3csIGNvbnN0IGNoYXIgKnByb21wdCkNCiB7 DQogICBjaGFyICpsaW5lOw0KIA0KQEAgLTU1OSw3ICs1NTksNyBAQA0KIA0K ICAgaWYgKCFraWxsX3JpbmdfaW5kZXgpDQogICAgIHsNCi0gICAgICBpbmZv cm1faW5fZWNob19hcmVhICgoY2hhciAqKSBfKCJLaWxsIHJpbmcgaXMgZW1w dHkiKSk7DQorICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoXygiS2lsbCBy aW5nIGlzIGVtcHR5IikpOw0KICAgICAgIHJldHVybjsNCiAgICAgfQ0KIA0K QEAgLTc5OCw3ICs3OTgsNyBAQA0KIC8qIFdvcmtob3JzZSBmb3IgY29tcGxl dGlvbiByZWFkZXJzLiAgSWYgRk9SQ0UgaXMgbm9uLXplcm8sIHRoZSB1c2Vy IGNhbm5vdA0KICAgIGV4aXQgdW5sZXNzIHRoZSBsaW5lIHJlYWQgY29tcGxl dGVzLCBvciBpcyBlbXB0eS4gKi8NCiBjaGFyICoNCi1pbmZvX3JlYWRfY29t cGxldGluZ19pbnRlcm5hbCAoV0lORE9XICp3aW5kb3csIGNoYXIgKnByb21w dCwNCitpbmZvX3JlYWRfY29tcGxldGluZ19pbnRlcm5hbCAoV0lORE9XICp3 aW5kb3csIGNvbnN0IGNoYXIgKnByb21wdCwNCiAgICAgUkVGRVJFTkNFICoq Y29tcGxldGlvbnMsIGludCBmb3JjZSkNCiB7DQogICBjaGFyICpsaW5lOw0K QEAgLTg2NCw5ICs4NjQsOSBAQA0KICAgICAgICAgICBpZiAoaSA9PSBjb21w bGV0aW9uc19mb3VuZF9pbmRleCkNCiAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICBpZiAoIWNvbXBsZXRpb25zX2ZvdW5kX2luZGV4KQ0KLSAgICAg ICAgICAgICAgICBpbmZvcm1faW5fZWNob19hcmVhICgoY2hhciAqKSBfKCJO byBjb21wbGV0aW9ucyIpKTsNCisgICAgICAgICAgICAgICAgaW5mb3JtX2lu X2VjaG9fYXJlYSAoXygiTm8gY29tcGxldGlvbnMiKSk7DQogICAgICAgICAg ICAgICBlbHNlDQotICAgICAgICAgICAgICAgIGluZm9ybV9pbl9lY2hvX2Fy ZWEgKChjaGFyICopIF8oIk5vdCBjb21wbGV0ZSIpKTsNCisgICAgICAgICAg ICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoXygiTm90IGNvbXBsZXRlIikp Ow0KICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgfQ0K ICAgICAgICAgfQ0KQEAgLTg5Myw3ICs4OTMsNyBAQA0KIC8qIFJlYWQgYSBs aW5lIGluIHRoZSBlY2hvIGFyZWEgd2l0aCBjb21wbGV0aW9uIG92ZXIgQ09N UExFVElPTlMuICovDQogY2hhciAqDQogaW5mb19yZWFkX2NvbXBsZXRpbmdf aW5fZWNob19hcmVhIChXSU5ET1cgKndpbmRvdywNCi0gICAgY2hhciAqcHJv bXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucykNCisgICAgY29uc3QgY2hh ciAqcHJvbXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucykNCiB7DQogICBy ZXR1cm4gKGluZm9fcmVhZF9jb21wbGV0aW5nX2ludGVybmFsICh3aW5kb3cs IHByb21wdCwgY29tcGxldGlvbnMsIDEpKTsNCiB9DQpAQCAtOTAyLDcgKzkw Miw3IEBADQogICAgbm90IHJlcXVpcmluZyBpdC4gKi8NCiBjaGFyICoNCiBp bmZvX3JlYWRfbWF5YmVfY29tcGxldGluZyAoV0lORE9XICp3aW5kb3csDQot ICAgIGNoYXIgKnByb21wdCwgUkVGRVJFTkNFICoqY29tcGxldGlvbnMpDQor ICAgIGNvbnN0IGNoYXIgKnByb21wdCwgUkVGRVJFTkNFICoqY29tcGxldGlv bnMpDQogew0KICAgcmV0dXJuIChpbmZvX3JlYWRfY29tcGxldGluZ19pbnRl cm5hbCAod2luZG93LCBwcm9tcHQsIGNvbXBsZXRpb25zLCAwKSk7DQogfQ0K QEAgLTkyMCwxMSArOTIwLDExIEBADQogICBpZiAoIWNvbXBsZXRpb25zX2Zv dW5kX2luZGV4KQ0KICAgICB7DQogICAgICAgdGVybWluYWxfcmluZ19iZWxs ICgpOw0KLSAgICAgIGluZm9ybV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8o Ik5vIGNvbXBsZXRpb25zIikpOw0KKyAgICAgIGluZm9ybV9pbl9lY2hvX2Fy ZWEgKF8oIk5vIGNvbXBsZXRpb25zIikpOw0KICAgICB9DQogICBlbHNlIGlm ICgoY29tcGxldGlvbnNfZm91bmRfaW5kZXggPT0gMSkgJiYgKGtleSAhPSAn PycpKQ0KICAgICB7DQotICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoKGNo YXIgKikgXygiU29sZSBjb21wbGV0aW9uIikpOw0KKyAgICAgIGluZm9ybV9p bl9lY2hvX2FyZWEgKF8oIlNvbGUgY29tcGxldGlvbiIpKTsNCiAgICAgfQ0K ICAgZWxzZQ0KICAgICB7DQpAQCAtOTMzLDggKzkzMyw4IEBADQogDQogICAg ICAgaW5pdGlhbGl6ZV9tZXNzYWdlX2J1ZmZlciAoKTsNCiAgICAgICBwcmlu dGZfdG9fbWVzc2FnZV9idWZmZXIgKGNvbXBsZXRpb25zX2ZvdW5kX2luZGV4 ID09IDENCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGNo YXIgKikgXygiT25lIGNvbXBsZXRpb246XG4iKQ0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiAoY2hhciAqKSBfKCIlZCBjb21wbGV0aW9u czpcbiIpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBf KCJPbmUgY29tcGxldGlvbjpcbiIpDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6IF8oIiVkIGNvbXBsZXRpb25zOlxuIiksDQogCQkJCSh2 b2lkICopIChsb25nKSBjb21wbGV0aW9uc19mb3VuZF9pbmRleCwNCiAJCQkJ TlVMTCwgTlVMTCk7DQogDQpAQCAtMTIxNiw3ICsxMjE2LDcgQEANCiAgICAg ICBpZiAoIWluZm9ybWVkX29mX2xlbmd0aHlfam9iICYmIGNvbXBsZXRpb25z X2ZvdW5kX2luZGV4ID4gMTAwKQ0KICAgICAgICAgew0KICAgICAgICAgICBp bmZvcm1lZF9vZl9sZW5ndGh5X2pvYiA9IDE7DQotICAgICAgICAgIHdpbmRv d19tZXNzYWdlX2luX2VjaG9fYXJlYSAoKGNoYXIgKikgXygiQnVpbGRpbmcg Y29tcGxldGlvbnMuLi4iKSwNCisgICAgICAgICAgd2luZG93X21lc3NhZ2Vf aW5fZWNob19hcmVhIChfKCJCdWlsZGluZyBjb21wbGV0aW9ucy4uLiIpLA0K ICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQogICAgICAgICB9DQogICAg IH0NCkBAIC0xMzgyLDcgKzEzODIsNyBAQA0KIC8qIFB1c2ggYW5kIFBvcCB0 aGUgZWNobyBhcmVhLiAqLw0KIHR5cGVkZWYgc3RydWN0IHsNCiAgIGNoYXIg KmxpbmU7DQotICBjaGFyICpwcm9tcHQ7DQorICBjb25zdCBjaGFyICpwcm9t cHQ7DQogICBSRUZFUkVOQ0UgKipjb21wX2l0ZW1zOw0KICAgaW50IHBvaW50 LCBiZWcsIGVuZDsNCiAgIGludCBtdXN0X2NvbXBsZXRlOw0KZGlmZiAtdXIg dGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9lY2hvLWFyZWEuaCB0ZXhpbmZv LTQuMTEuOTAvaW5mby9lY2hvLWFyZWEuaA0KLS0tIHRleGluZm8tNC4xMS45 MC5vcmlnL2luZm8vZWNoby1hcmVhLmgJMjAwNy0wNy0wMSAyMzoyMDoyOS4w MDAwMDAwMDAgKzAyMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9lY2hv LWFyZWEuaAkyMDA4LTAyLTI1IDEzOjMxOjU1LjAwMDAwMDAwMCArMDEwMA0K QEAgLTM2LDI1ICszNiwyNSBAQA0KIGV4dGVybiB2b2lkIGVjaG9fYXJlYV9p bmZvcm1fb2ZfZGVsZXRlZF93aW5kb3cgKFdJTkRPVyAqd2luZG93KTsNCiBl eHRlcm4gdm9pZCBlY2hvX2FyZWFfcHJlcF9yZWFkICh2b2lkKTsNCiBleHRl cm4gVkZ1bmN0aW9uICplYV9sYXN0X2V4ZWN1dGVkX2NvbW1hbmQ7DQotZXh0 ZXJuIGNoYXIgKiBpbmZvX3JlYWRfY29tcGxldGluZ19pbnRlcm5hbCAoV0lO RE9XICp3aW5kb3csIGNoYXIgKnByb21wdCwNCitleHRlcm4gY2hhciAqIGlu Zm9fcmVhZF9jb21wbGV0aW5nX2ludGVybmFsIChXSU5ET1cgKndpbmRvdywg Y29uc3QgY2hhciAqcHJvbXB0LA0KICAgICBSRUZFUkVOQ0UgKipjb21wbGV0 aW9ucywgaW50IGZvcmNlKTsNCiANCiAvKiBSZWFkIGEgbGluZSBvZiB0ZXh0 IGluIHRoZSBlY2hvIGFyZWEuICBSZXR1cm4gYSBtYWxsb2MgKCknZWQgc3Ry aW5nLA0KICAgIG9yIE5VTEwgaWYgdGhlIHVzZXIgYWJvcnRlZCBvdXQgb2Yg dGhpcyByZWFkLiAgV0lORE9XIGlzIHRoZSBjdXJyZW50bHkNCiAgICBhY3Rp dmUgd2luZG93LCBzbyB0aGF0IHdlIGNhbiByZXN0b3JlIGl0IHdoZW4gd2Ug bmVlZCB0by4gIFBST01QVCwgaWYNCiAgICBub24tbnVsbCwgaXMgYSBwcm9t cHQgdG8gcHJpbnQgYmVmb3JlIHJlYWRpbmcgdGhlIGxpbmUuICovDQotZXh0 ZXJuIGNoYXIgKmluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKFdJTkRPVyAqd2lu ZG93LCBjaGFyICpwcm9tcHQpOw0KK2V4dGVybiBjaGFyICppbmZvX3JlYWRf aW5fZWNob19hcmVhIChXSU5ET1cgKndpbmRvdywgY29uc3QgY2hhciAqcHJv bXB0KTsNCiANCiAvKiBSZWFkIGEgbGluZSBpbiB0aGUgZWNobyBhcmVhIHdp dGggY29tcGxldGlvbiBvdmVyIENPTVBMRVRJT05TLg0KICAgIFRha2VzIGFy Z3VtZW50cyBvZiBXSU5ET1csIFBST01QVCwgYW5kIENPTVBMRVRJT05TLCBh IFJFRkVSRU5DRSAqKi4gKi8NCiBjaGFyICppbmZvX3JlYWRfY29tcGxldGlu Z19pbl9lY2hvX2FyZWEgKFdJTkRPVyAqd2luZG93LA0KLSAgICBjaGFyICpw cm9tcHQsIFJFRkVSRU5DRSAqKmNvbXBsZXRpb25zKTsNCisgICAgY29uc3Qg Y2hhciAqcHJvbXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucyk7DQogDQog LyogUmVhZCBhIGxpbmUgaW4gdGhlIGVjaG8gYXJlYSBhbGxvd2luZyBjb21w bGV0aW9uIG92ZXIgQ09NUExFVElPTlMsIGJ1dA0KICAgIG5vdCByZXF1aXJp bmcgaXQuICBUYWtlcyBhcmd1bWVudHMgb2YgV0lORE9XLCBQUk9NUFQsIGFu ZCBDT01QTEVUSU9OUywNCiAgICBhIFJFRkVSRU5DRSAqKi4gKi8NCiBleHRl cm4gY2hhciAqaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKFdJTkRPVyAq d2luZG93LA0KLSAgICBjaGFyICpwcm9tcHQsIFJFRkVSRU5DRSAqKmNvbXBs ZXRpb25zKTsNCisgICAgY29uc3QgY2hhciAqcHJvbXB0LCBSRUZFUkVOQ0Ug Kipjb21wbGV0aW9ucyk7DQogDQogZXh0ZXJuIHZvaWQgZWFfaW5zZXJ0IChX SU5ET1cgKndpbmRvdywgaW50IGNvdW50LCB1bnNpZ25lZCBjaGFyIGtleSk7 DQogZXh0ZXJuIHZvaWQgZWFfcXVvdGVkX2luc2VydCAoV0lORE9XICp3aW5k b3csIGludCBjb3VudCwgdW5zaWduZWQgY2hhciBrZXkpOw0KZGlmZiAtdXIg dGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9mb290bm90ZXMuYyB0ZXhpbmZv LTQuMTEuOTAvaW5mby9mb290bm90ZXMuYw0KLS0tIHRleGluZm8tNC4xMS45 MC5vcmlnL2luZm8vZm9vdG5vdGVzLmMJMjAwNy0xMi0wMyAwMjoxOToyNy4w MDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9mb290 bm90ZXMuYwkyMDA4LTAyLTI1IDEyOjA5OjM4LjAwMDAwMDAwMCArMDEwMA0K QEAgLTIwOSw3ICsyMDksNyBAQA0KICAgICAgICAgICAvKiBJZiB3ZSBhcmUg aGFja2luZyBhdXRvbWF0aWMgZm9vdG5vdGVzLCBhbmQgdGhlcmUgYXJlIGZv b3Rub3Rlcw0KICAgICAgICAgICAgICBidXQgd2UgY291bGRuJ3QgZGlzcGxh eSB0aGVtLCBwcmludCBhIG1lc3NhZ2UgdG8gdGhhdCBlZmZlY3QuICovDQog ICAgICAgICAgIGlmIChhdXRvX2Zvb3Rub3Rlc19wKQ0KLSAgICAgICAgICAg IGluZm9ybV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIkZvb3Rub3RlcyBj b3VsZCBub3QgYmUgZGlzcGxheWVkIikpOw0KKyAgICAgICAgICAgIGluZm9y bV9pbl9lY2hvX2FyZWEgKF8oIkZvb3Rub3RlcyBjb3VsZCBub3QgYmUgZGlz cGxheWVkIikpOw0KICAgICAgICAgICByZXR1cm4gKEZOX1VOQUJMRSk7DQog ICAgICAgICB9DQogICAgIH0NCkBAIC0yNTYsMTEgKzI1NiwxMSBAQA0KICAg ICAgIHN3aXRjaCAocmVzdWx0KQ0KICAgICAgICAgew0KICAgICAgICAgY2Fz ZSBGTl9VTkZPVU5EOg0KLSAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAq KSBtc2dfbm9fZm9vdF9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICAgICAg aW5mb19lcnJvciAobXNnX25vX2Zvb3Rfbm9kZSwgTlVMTCwgTlVMTCk7DQog ICAgICAgICAgIGJyZWFrOw0KIA0KICAgICAgICAgY2FzZSBGTl9VTkFCTEU6 DQotICAgICAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIG1zZ193aW5fdG9v X3NtYWxsLCBOVUxMLCBOVUxMKTsNCisgICAgICAgICAgaW5mb19lcnJvciAo bXNnX3dpbl90b29fc21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICBi cmVhazsNCiAgICAgICAgIH0NCiAgICAgfQ0KZGlmZiAtdXIgdGV4aW5mby00 LjExLjkwLm9yaWcvaW5mby9pbmRpY2VzLmMgdGV4aW5mby00LjExLjkwL2lu Zm8vaW5kaWNlcy5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9p bmRpY2VzLmMJMjAwNy0xMi0wMyAwMjoxOToyNy4wMDAwMDAwMDAgKzAxMDAN CisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmRpY2VzLmMJMjAwOC0wMi0y NSAxMzoyMTo0Ny4wMDAwMDAwMDAgKzAxMDANCkBAIC0xOTUsNyArMTk1LDcg QEANCiAgICAgICAoRklMRU5BTUVfQ01QIChpbml0aWFsX2luZGV4X2ZpbGVu YW1lLCBmYi0+ZmlsZW5hbWUpICE9IDApKQ0KICAgICB7DQogICAgICAgaW5m b19mcmVlX3JlZmVyZW5jZXMgKGluZGV4X2luZGV4KTsNCi0gICAgICB3aW5k b3dfbWVzc2FnZV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIkZpbmRpbmcg aW5kZXggZW50cmllcy4uLiIpLA0KKyAgICAgIHdpbmRvd19tZXNzYWdlX2lu X2VjaG9fYXJlYSAoXygiRmluZGluZyBpbmRleCBlbnRyaWVzLi4uIiksDQog ICAgICAgICAgIE5VTEwsIE5VTEwpOw0KICAgICAgIGluZGV4X2luZGV4ID0g aW5mb19pbmRpY2VzX29mX2ZpbGVfYnVmZmVyIChmYik7DQogICAgIH0NCkBA IC0yMDMsNyArMjAzLDcgQEANCiAgIC8qIElmIHRoZXJlIGlzIG5vIGluZGV4 LCBxdWl0IG5vdy4gKi8NCiAgIGlmICghaW5kZXhfaW5kZXgpDQogICAgIHsN Ci0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJObyBpbmRpY2VzIGZv dW5kLiIpLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJO byBpbmRpY2VzIGZvdW5kLiIpLCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1 cm47DQogICAgIH0NCiANCkBAIC0yMTMsNyArMjEzLDcgQEANCiAgICAgbGlu ZSA9IHhzdHJkdXAgKHNlYXJjaF9zdHJpbmcpOw0KICAgZWxzZQ0KICAgICB7 DQotICAgICAgbGluZSA9IGluZm9fcmVhZF9tYXliZV9jb21wbGV0aW5nICh3 aW5kb3csIChjaGFyICopIF8oIkluZGV4IGVudHJ5OiAiKSwNCisgICAgICBs aW5lID0gaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKHdpbmRvdywgXygi SW5kZXggZW50cnk6ICIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZXhfaW5kZXgpOw0KICAgICAgIHdpbmRvdyA9 IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAtMzMxLDE0ICszMzEsMTQgQEANCiAg ICAgIHlldC4gKi8NCiAgIGlmICghaW5kZXhfc2VhcmNoKQ0KICAgICB7DQot ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiTm8gcHJldmlvdXMgaW5k ZXggc2VhcmNoIHN0cmluZy4iKSwgTlVMTCwgTlVMTCk7DQorICAgICAgaW5m b19lcnJvciAoXygiTm8gcHJldmlvdXMgaW5kZXggc2VhcmNoIHN0cmluZy4i KSwgTlVMTCwgTlVMTCk7DQogICAgICAgcmV0dXJuOw0KICAgICB9DQogDQog ICAvKiBJZiB0aGVyZSBpcyBubyBpbmRleCwgdGhhdCBpcyBhbiBlcnJvci4g Ki8NCiAgIGlmICghaW5kZXhfaW5kZXgpDQogICAgIHsNCi0gICAgICBpbmZv X2Vycm9yICgoY2hhciAqKSBfKCJObyBpbmRleCBlbnRyaWVzLiIpLCBOVUxM LCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJObyBpbmRleCBlbnRy aWVzLiIpLCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1cm47DQogICAgIH0N CiANCkBAIC0zNzEsNyArMzcxLDcgQEANCiAgIC8qIElmIHRoYXQgZmFpbGVk LCBwcmludCBhbiBlcnJvci4gKi8NCiAgIGlmICgoaSA8IDApIHx8ICghaW5k ZXhfaW5kZXhbaV0pKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNo YXIgKikgXygiTm8gJXNpbmRleCBlbnRyaWVzIGNvbnRhaW5pbmcgYCVzJy4i KSwNCisgICAgICBpbmZvX2Vycm9yIChfKCJObyAlc2luZGV4IGVudHJpZXMg Y29udGFpbmluZyBgJXMnLiIpLA0KICAgICAgICAgICAgICAgICAgIGluZGV4 X29mZnNldCA+IDAgPyAoY2hhciAqKSBfKCJtb3JlICIpIDogIiIsIGluZGV4 X3NlYXJjaCk7DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtNDE4LDcg KzQxOCw3IEBADQogICAgICAgY2hhciAqZm9ybWF0Ow0KIA0KICAgICAgIGZv cm1hdCA9IHJlcGxhY2VfaW5fZG9jdW1lbnRhdGlvbg0KLSAgICAgICAgKChj aGFyICopIF8oIkZvdW5kIGAlcycgaW4gJXMuIChgXFxbbmV4dC1pbmRleC1t YXRjaF0nIHRyaWVzIHRvIGZpbmQgbmV4dC4pIiksDQorICAgICAgICAoXygi Rm91bmQgYCVzJyBpbiAlcy4gKGBcXFtuZXh0LWluZGV4LW1hdGNoXScgdHJp ZXMgdG8gZmluZCBuZXh0LikiKSwNCiAgICAgICAgICAwKTsNCiANCiAgICAg ICB3aW5kb3dfbWVzc2FnZV9pbl9lY2hvX2FyZWEgKGZvcm1hdCwgbWF0Y2gs IChjaGFyICopIG5hbWUpOw0KQEAgLTQzMiw3ICs0MzIsNyBAQA0KIA0KICAg aWYgKCFub2RlKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNoYXIg KikgbXNnX2NhbnRfZmlsZV9ub2RlLA0KKyAgICAgIGluZm9fZXJyb3IgKG1z Z19jYW50X2ZpbGVfbm9kZSwNCiAgICAgICAgICAgICAgICAgICBpbmRleF9p bmRleFtpXS0+ZmlsZW5hbWUsIGluZGV4X2luZGV4W2ldLT5ub2RlbmFtZSk7 DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtNTQ2LDcgKzU0Niw3IEBA DQogCSAgfQ0KIA0KICAgICAgICAgaWYgKHRoaXNfZmIgJiYgaW5mb3JtKQ0K LSAgICAgICAgICBtZXNzYWdlX2luX2VjaG9fYXJlYSAoKGNoYXIgKikgXygi U2Nhbm5pbmcgaW5kaWNlcyBvZiBgJXMnLi4uIiksDQorICAgICAgICAgIG1l c3NhZ2VfaW5fZWNob19hcmVhIChfKCJTY2FubmluZyBpbmRpY2VzIG9mIGAl cycuLi4iKSwNCiAgICAgICAgICAgICAgIGZpbGVzX25hbWUsIE5VTEwpOw0K IA0KICAgICAgICAgdGhpc19pbmRleCA9IGluZm9faW5kaWNlc19vZl9maWxl X2J1ZmZlciAodGhpc19mYik7DQpAQCAtNjExLDcgKzYxMSw3IEBADQogICBh cHJvcG9zX2xpc3QgPSBhcHJvcG9zX2luX2FsbF9pbmRpY2VzIChzdHJpbmcs IDApOw0KIA0KICAgaWYgKCFhcHJvcG9zX2xpc3QpDQotICAgIGluZm9fZXJy b3IgKChjaGFyICopIF8oQVBST1BPU19OT05FKSwgc3RyaW5nLCBOVUxMKTsN CisgICAgaW5mb19lcnJvciAoXyhBUFJPUE9TX05PTkUpLCBzdHJpbmcsIE5V TEwpOw0KICAgZWxzZQ0KICAgICB7DQogICAgICAgcmVnaXN0ZXIgaW50IGk7 DQpAQCAtNjMxLDcgKzYzMSw3IEBADQogew0KICAgY2hhciAqbGluZTsNCiAN Ci0gIGxpbmUgPSBpbmZvX3JlYWRfaW5fZWNob19hcmVhICh3aW5kb3csIChj aGFyICopIF8oIkluZGV4IGFwcm9wb3M6ICIpKTsNCisgIGxpbmUgPSBpbmZv X3JlYWRfaW5fZWNob19hcmVhICh3aW5kb3csIF8oIkluZGV4IGFwcm9wb3M6 ICIpKTsNCiANCiAgIHdpbmRvdyA9IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAt NjUxLDcgKzY1MSw3IEBADQogICAgICAgYXByb3Bvc19saXN0ID0gYXByb3Bv c19pbl9hbGxfaW5kaWNlcyAobGluZSwgMSk7DQogDQogICAgICAgaWYgKCFh cHJvcG9zX2xpc3QpDQotICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBf KEFQUk9QT1NfTk9ORSksIGxpbmUsIE5VTEwpOw0KKyAgICAgICAgaW5mb19l cnJvciAoXyhBUFJPUE9TX05PTkUpLCBsaW5lLCBOVUxMKTsNCiAgICAgICBl bHNlDQogICAgICAgICB7DQogICAgICAgICAgIHJlZ2lzdGVyIGludCBpOw0K QEAgLTY1OSw3ICs2NTksNyBAQA0KIA0KICAgICAgICAgICBpbml0aWFsaXpl X21lc3NhZ2VfYnVmZmVyICgpOw0KICAgICAgICAgICBwcmludGZfdG9fbWVz c2FnZV9idWZmZXINCi0gICAgICAgICAgICAoKGNoYXIgKikgXygiXG4qIE1l bnU6IE5vZGVzIHdob3NlIGluZGljZXMgY29udGFpbiBgJXMnOlxuIiksDQor ICAgICAgICAgICAgKF8oIlxuKiBNZW51OiBOb2RlcyB3aG9zZSBpbmRpY2Vz IGNvbnRhaW4gYCVzJzpcbiIpLA0KICAgICAgICAgICAgICBsaW5lLCBOVUxM LCBOVUxMKTsNCiAgICAgICAgICAgbGluZV9idWZmZXIgPSAoY2hhciAqKXht YWxsb2MgKDUwMCk7DQogDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3Jp Zy9pbmZvL2luZm8uYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvLmMNCi0t LSB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL2luZm8uYwkyMDA4LTAyLTIy IDIwOjE4OjI1LjAwMDAwMDAwMCArMDEwMA0KKysrIHRleGluZm8tNC4xMS45 MC9pbmZvL2luZm8uYwkyMDA4LTAyLTI1IDEyOjA0OjA3LjAwMDAwMDAwMCAr MDEwMA0KQEAgLTM2NSw3ICszNjUsNyBAQA0KICAgICAgIGlmIChpbmZvX3Jl Y2VudF9maWxlX2Vycm9yKQ0KICAgICAgICAgaW5mb19lcnJvciAoaW5mb19y ZWNlbnRfZmlsZV9lcnJvciwgTlVMTCwgTlVMTCk7DQogICAgICAgZWxzZQ0K LSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF9u b2RlLA0KKyAgICAgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmluZF9ub2Rl LA0KICAgICAgICAgICAgICAgICAgICAgdXNlcl9ub2RlbmFtZXMgPyB1c2Vy X25vZGVuYW1lc1swXSA6ICJUb3AiLCBOVUxMKTsNCiAgICAgICB4ZXhpdCAo MSk7DQogICAgIH0NCkBAIC00MzAsMTMgKzQzMCwxMyBAQA0KICAgICAgICAg ICBkdW1wX25vZGVfdG9fZmlsZSAoaW5pdGlhbF9ub2RlLCB1c2VyX291dHB1 dF9maWxlbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1 bXBfc3Vibm9kZXMpOw0KICAgICAgICAgZWxzZQ0KLSAgICAgICAgICBpbmZv X2Vycm9yICgoY2hhciAqKSBlcnJzdHIsIGVycmFyZzEsIGVycmFyZzIpOw0K KyAgICAgICAgICBpbmZvX2Vycm9yIChlcnJzdHIsIGVycmFyZzEsIGVycmFy ZzIpOw0KICAgICAgIH0NCiAgICAgZWxzZQ0KICAgICAgIHsNCiANCiAgICAg ICAgIGlmIChlcnJzdHIpDQotICAgICAgICAgIGJlZ2luX2luZm9fc2Vzc2lv bl93aXRoX2Vycm9yIChpbml0aWFsX25vZGUsIChjaGFyICopIGVycnN0ciwN CisgICAgICAgICAgYmVnaW5faW5mb19zZXNzaW9uX3dpdGhfZXJyb3IgKGlu aXRpYWxfbm9kZSwgZXJyc3RyLA0KICAgICAgICAgICAgICAgZXJyYXJnMSwg ZXJyYXJnMik7DQogICAgICAgICAvKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQg YC0taW5kZXgtc2VhcmNoPVNUUklORycgb3INCiAgICAgICAgICAgIC0tc2hv dy1vcHRpb25zLCBzdGFydCB0aGUgaW5mbyBzZXNzaW9uIGluIHRoZSBub2Rl DQpAQCAtNTUzLDcgKzU1Myw3IEBADQogICAgdGhlbiB0aGUgbWVzc2FnZSBp cyBwcmludGVkIGluIHRoZSBlY2hvIGFyZWEuICBPdGhlcndpc2UsIGEgbWVz c2FnZSBpcw0KICAgIG91dHB1dCB0byBzdGRlcnIuICovDQogdm9pZA0KLWlu Zm9fZXJyb3IgKGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn MikNCitpbmZvX2Vycm9yIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQgKmFy ZzEsIHZvaWQgKmFyZzIpDQogew0KICAgaW5mb19lcnJvcl93YXNfcHJpbnRl ZCA9IDE7DQogDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZv L2luZm8uaCB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvLmgNCi0tLSB0ZXhp bmZvLTQuMTEuOTAub3JpZy9pbmZvL2luZm8uaAkyMDA3LTA3LTAxIDIzOjIw OjMwLjAwMDAwMDAwMCArMDIwMA0KKysrIHRleGluZm8tNC4xMS45MC9pbmZv L2luZm8uaAkyMDA4LTAyLTI1IDEzOjI5OjM4LjAwMDAwMDAwMCArMDEwMA0K QEAgLTEyNSw3ICsxMjUsNyBAQA0KIC8qIFByaW50IEZPUk1BVCB3aXRoIEFS RzEgYW5kIEFSRzIuICBJZiB0aGUgd2luZG93IHN5c3RlbSB3YXMgaW5pdGlh bGl6ZWQsDQogICAgdGhlbiB0aGUgbWVzc2FnZSBpcyBwcmludGVkIGluIHRo ZSBlY2hvIGFyZWEuICBPdGhlcndpc2UsIGEgbWVzc2FnZSBpcw0KICAgIG91 dHB1dCB0byBzdGRlcnIuICovDQotZXh0ZXJuIHZvaWQgaW5mb19lcnJvciAo Y2hhciAqZm9ybWF0LCB2b2lkICphcmcxLCB2b2lkICphcmcyKTsNCitleHRl cm4gdm9pZCBpbmZvX2Vycm9yIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQg KmFyZzEsIHZvaWQgKmFyZzIpOw0KIA0KIGV4dGVybiB2b2lkIGFkZF9maWxl X2RpcmVjdG9yeV90b19wYXRoIChjaGFyICpmaWxlbmFtZSk7DQogDQpAQCAt MTU0LDYgKzE1NCw2IEBADQogI2VuZGlmIC8qIElORk9LRVkgKi8NCiANCiAv KiBGb3VuZCBpbiBtLXguYy4gICovDQotZXh0ZXJuIGNoYXIgKnJlYWRfZnVu Y3Rpb25fbmFtZSAoY2hhciAqcHJvbXB0LCBXSU5ET1cgKndpbmRvdyk7DQor ZXh0ZXJuIGNoYXIgKnJlYWRfZnVuY3Rpb25fbmFtZSAoY29uc3QgY2hhciAq cHJvbXB0LCBXSU5ET1cgKndpbmRvdyk7DQogDQogI2VuZGlmIC8qICFJTkZP X0ggKi8NCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5m b2RvYy5jIHRleGluZm8tNC4xMS45MC9pbmZvL2luZm9kb2MuYw0KLS0tIHRl eGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5mb2RvYy5jCTIwMDgtMDItMjIg MDA6MzY6MTYuMDAwMDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkw L2luZm8vaW5mb2RvYy5jCTIwMDgtMDItMjUgMTM6Mjk6MDIuMDAwMDAwMDAw ICswMTAwDQpAQCAtMjk0LDcgKzI5NCw3IEBADQogICAgICAgICB7DQogI2lm ZGVmIElORk9LRVkNCiAgICAgICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVm ZmVyIChyZXBsYWNlX2luX2RvY3VtZW50YXRpb24NCi0gICAgICAgICAgICAg ICgoY2hhciAqKSBfKGluZm9faW50ZXJuYWxfaGVscF90ZXh0W2ldKSwgaGVs cF9pc19vbmx5X3dpbmRvd19wKSwNCisgICAgICAgICAgICAgIChfKGluZm9f aW50ZXJuYWxfaGVscF90ZXh0W2ldKSwgaGVscF9pc19vbmx5X3dpbmRvd19w KSwNCiAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOw0KICNlbHNl DQogICAgICAgICAgIC8qIERvbid0IHRyYW5zbGF0ZSBibGFuayBsaW5lcywg Z2V0dGV4dCBvdXRwdXRzIHRoZSBwbyBmaWxlDQpAQCAtMzE0LDE1ICszMTQs MTUgQEANCiAgICAgICAgIH0NCiANCiAgICAgICBwcmludGZfdG9fbWVzc2Fn ZV9idWZmZXIgKCItLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIiwgTlVMTCwg TlVMTCwgTlVMTCk7DQotICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy ICgoY2hhciAqKSBfKCJUaGUgY3VycmVudCBzZWFyY2ggcGF0aCBpczpcbiIp LA0KKyAgICAgIHByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoXygiVGhlIGN1 cnJlbnQgc2VhcmNoIHBhdGggaXM6XG4iKSwNCiAgICAgICAgICAgTlVMTCwg TlVMTCwgTlVMTCk7DQogICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy ICgiICAlc1xuIiwgaW5mb3BhdGgsIE5VTEwsIE5VTEwpOw0KICAgICAgIHBy aW50Zl90b19tZXNzYWdlX2J1ZmZlciAoIi0tLS0tLS0tLS0tLS0tLS0tLS0t LVxuXG4iLCBOVUxMLCBOVUxMLCBOVUxMKTsNCi0gICAgICBwcmludGZfdG9f bWVzc2FnZV9idWZmZXIgKChjaGFyICopIF8oIkNvbW1hbmRzIGF2YWlsYWJs ZSBpbiBJbmZvIHdpbmRvd3M6XG5cbiIpLA0KKyAgICAgIHByaW50Zl90b19t ZXNzYWdlX2J1ZmZlciAoXygiQ29tbWFuZHMgYXZhaWxhYmxlIGluIEluZm8g d2luZG93czpcblxuIiksDQogICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwp Ow0KICAgICAgIGR1bXBfbWFwX3RvX21lc3NhZ2VfYnVmZmVyICgiIiwgaW5m b19rZXltYXApOw0KICAgICAgIHByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAo Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iLCBOVUxMLCBOVUxMLCBOVUxM KTsNCi0gICAgICBwcmludGZfdG9fbWVzc2FnZV9idWZmZXIgKChjaGFyICop IF8oIkNvbW1hbmRzIGF2YWlsYWJsZSBpbiB0aGUgZWNobyBhcmVhOlxuXG4i KSwNCisgICAgICBwcmludGZfdG9fbWVzc2FnZV9idWZmZXIgKF8oIkNvbW1h bmRzIGF2YWlsYWJsZSBpbiB0aGUgZWNobyBhcmVhOlxuXG4iKSwNCiAgICAg ICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7DQogICAgICAgZHVtcF9tYXBfdG9f bWVzc2FnZV9idWZmZXIgKCIiLCBlY2hvX2FyZWFfa2V5bWFwKTsNCiANCkBA IC0zNDUsMTEgKzM0NSwxMSBAQA0KICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMLCBOVUxMKTsNCiAgICAgICAgICAgICAgICAgICBpZiAoZXhl Y19rZXlzICYmIGV4ZWNfa2V5c1swXSkNCiAgICAgICAgICAgICAgICAgICAg ICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVyDQotICAgICAgICAgICAgICAg ICAgICAgICAgKChjaGFyICopIF8oIlRoZSBmb2xsb3dpbmcgY29tbWFuZHMg Y2FuIG9ubHkgYmUgaW52b2tlZCB2aWEgJXM6XG5cbiIpLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgIChfKCJUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGNh biBvbmx5IGJlIGludm9rZWQgdmlhICVzOlxuXG4iKSwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhlY19rZXlzLCBOVUxMLCBOVUxMKTsNCiAgICAg ICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgIHBy aW50Zl90b19tZXNzYWdlX2J1ZmZlcg0KLSAgICAgICAgICAgICAgICAgICAg ICAgICgoY2hhciAqKSBfKCJUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGNhbm5v dCBiZSBpbnZva2VkIGF0IGFsbDpcblxuIiksDQorICAgICAgICAgICAgICAg ICAgICAgICAgKF8oIlRoZSBmb2xsb3dpbmcgY29tbWFuZHMgY2Fubm90IGJl IGludm9rZWQgYXQgYWxsOlxuXG4iKSwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7DQogICAgICAgICAgICAgICAgICAg cHJpbnRlZF9vbmVfbXggPSAxOw0KICAgICAgICAgICAgICAgICB9DQpAQCAt MzU5LDcgKzM1OSw3IEBADQogICAgICAgICAgICAgICAgICBleGVjX2tleXMs DQogICAgICAgICAgICAgICAgICBmdW5jdGlvbl9kb2NfYXJyYXlbaV0uZnVu Y19uYW1lLA0KICAgICAgICAgICAgICAgICAgcmVwbGFjZV9pbl9kb2N1bWVu dGF0aW9uIChzdHJsZW4gKGZ1bmN0aW9uX2RvY19hcnJheVtpXS5kb2MpDQot ICAgICAgICAgICAgICAgICAgID8gKGNoYXIgKikgXyhmdW5jdGlvbl9kb2Nf YXJyYXlbaV0uZG9jKSA6ICIiLCAwKQ0KKyAgICAgICAgICAgICAgICAgICA/ IF8oZnVuY3Rpb25fZG9jX2FycmF5W2ldLmRvYykgOiAiIiwgMCkNCiAgICAg ICAgICAgICAgICAgKTsNCiANCiAgICAgICAgICAgICB9DQpAQCAtMzczLDcg KzM3Myw3IEBADQogDQogICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy DQogICAgICAgICAoIiVzIiwgcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uDQot ICAgICAgICAgKChjaGFyICopIF8oIi0tLSBVc2UgYFxcW2hpc3Rvcnktbm9k ZV0nIG9yIGBcXFtraWxsLW5vZGVdJyB0byBleGl0IC0tLVxuIiksIDApLA0K KyAgICAgICAgIChfKCItLS0gVXNlIGBcXFtoaXN0b3J5LW5vZGVdJyBvciBg XFxba2lsbC1ub2RlXScgdG8gZXhpdCAtLS1cbiIpLCAwKSwNCiAgICAgICAg ICBOVUxMLCBOVUxMKTsNCiAgICAgICBub2RlID0gbWVzc2FnZV9idWZmZXJf dG9fbm9kZSAoKTsNCiAgICAgICBpbnRlcm5hbF9pbmZvX2hlbHBfbm9kZV9j b250ZW50cyA9IG5vZGUtPmNvbnRlbnRzOw0KQEAgLTQ5NSw3ICs0OTUsNyBA QA0KICAgICB9DQogICBlbHNlDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9y ICgoY2hhciAqKSBtc2dfY2FudF9tYWtlX2hlbHAsIE5VTEwsIE5VTEwpOw0K KyAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50X21ha2VfaGVscCwgTlVMTCwg TlVMTCk7DQogICAgIH0NCiB9DQogDQpAQCAtNTM5LDcgKzUzOSw3IEBADQog ICAgICAgaWYgKGluZm9fcmVjZW50X2ZpbGVfZXJyb3IpDQogICAgICAgICBp bmZvX2Vycm9yIChpbmZvX3JlY2VudF9maWxlX2Vycm9yLCBOVUxMLCBOVUxM KTsNCiAgICAgICBlbHNlDQotICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAq KSBtc2dfY2FudF9maWxlX25vZGUsICJJbmZvIiwgbm9kZW5hbWUpOw0KKyAg ICAgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmlsZV9ub2RlLCAiSW5mbyIs IG5vZGVuYW1lKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7DQpAQCAtNTg3 LDcgKzU4Nyw3IEBADQogDQogI2VuZGlmIC8qICFJTkZPS0VZICovDQogDQot ICByZXR1cm4gcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uICgoc3RybGVuIChk b2MpID09IDApID8gZG9jIDogKGNoYXIgKikgXyhkb2MpLCAwKTsNCisgIHJl dHVybiByZXBsYWNlX2luX2RvY3VtZW50YXRpb24gKChzdHJsZW4gKGRvYykg PT0gMCkgPyBkb2MgOiBfKGRvYyksIDApOw0KIH0NCiANCiAjaWYgZGVmaW5l ZCAoTkFNRURfRlVOQ1RJT05TKQ0KQEAgLTY1MSw3ICs2NTEsNyBAQA0KIA0K ICAgZm9yICg7OykNCiAgICAgew0KLSAgICAgIG1lc3NhZ2VfaW5fZWNob19h cmVhICgoY2hhciAqKSBfKCJEZXNjcmliZSBrZXk6ICVzIiksDQorICAgICAg bWVzc2FnZV9pbl9lY2hvX2FyZWEgKF8oIkRlc2NyaWJlIGtleTogJXMiKSwN CiAgICAgICAgICAgcHJldHR5X2tleXNlcSAoa2V5cyksIE5VTEwpOw0KICAg ICAgIGtleXN0cm9rZSA9IGluZm9fZ2V0X2lucHV0X2NoYXIgKCk7DQogICAg ICAgdW5tZXNzYWdlX2luX2VjaG9fYXJlYSAoKTsNCkBAIC02NzgsNyArNjc4 LDcgQEANCiANCiAgICAgICBpZiAobWFwW2tleXN0cm9rZV0uZnVuY3Rpb24g PT0gKEluZm9Db21tYW5kICopTlVMTCkNCiAgICAgICAgIHsNCi0gICAgICAg ICAgbWVzc2FnZV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIiVzIGlzIHVu ZGVmaW5lZC4iKSwNCisgICAgICAgICAgbWVzc2FnZV9pbl9lY2hvX2FyZWEg KF8oIiVzIGlzIHVuZGVmaW5lZC4iKSwNCiAgICAgICAgICAgICAgIHByZXR0 eV9rZXlzZXEgKGtleXMpLCBOVUxMKTsNCiAgICAgICAgICAgcmV0dXJuOw0K ICAgICAgICAgfQ0KQEAgLTcwNyw3ICs3MDcsNyBAQA0KIA0KICAgICAgICAg ICAgICAgaWYgKG1hcFtsb3dlcmtleV0uZnVuY3Rpb24gPT0gKEluZm9Db21t YW5kICopTlVMTCkNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAg ICAgICAgIG1lc3NhZ2VfaW5fZWNob19hcmVhICgoY2hhciAqKSBfKCIlcyBp cyB1bmRlZmluZWQuIiksDQorICAgICAgICAgICAgICAgICAgbWVzc2FnZV9p bl9lY2hvX2FyZWEgKF8oIiVzIGlzIHVuZGVmaW5lZC4iKSwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldHR5X2tleXNl cSAoa2V5cyksIE5VTEwpOw0KICAgICAgICAgICAgICAgICAgIHJldHVybjsN CiAgICAgICAgICAgICAgICAgfQ0KQEAgLTg4OCw3ICs4ODgsNyBAQA0KIA0K IC8qIFJlcGxhY2UgdGhlIG5hbWVzIG9mIGZ1bmN0aW9ucyB3aXRoIHRoZSBr ZXkgdGhhdCBpbnZva2VzIHRoZW0uICovDQogY2hhciAqDQotcmVwbGFjZV9p bl9kb2N1bWVudGF0aW9uIChjaGFyICpzdHJpbmcsIGludCBoZWxwX2lzX29u bHlfd2luZG93X3ApDQorcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uIChjb25z dCBjaGFyICpzdHJpbmcsIGludCBoZWxwX2lzX29ubHlfd2luZG93X3ApDQog ew0KICAgdW5zaWduZWQgcmVzbGVuID0gc3RybGVuIChzdHJpbmcpOw0KICAg cmVnaXN0ZXIgaW50IGksIHN0YXJ0LCBuZXh0Ow0KQEAgLTExNTUsNyArMTE1 NSw3IEBADQogew0KICAgY2hhciAqY29tbWFuZF9uYW1lOw0KIA0KLSAgY29t bWFuZF9uYW1lID0gcmVhZF9mdW5jdGlvbl9uYW1lICgoY2hhciAqKSBfKCJX aGVyZSBpcyBjb21tYW5kOiAiKSwgd2luZG93KTsNCisgIGNvbW1hbmRfbmFt ZSA9IHJlYWRfZnVuY3Rpb25fbmFtZSAoXygiV2hlcmUgaXMgY29tbWFuZDog IiksIHdpbmRvdyk7DQogDQogICBpZiAoIWNvbW1hbmRfbmFtZSkNCiAgICAg ew0KQEAgLTExNzcsMjMgKzExNzcsMjMgQEANCiANCiAgICAgICAgICAgaWYg KCFsb2NhdGlvbiB8fCAhbG9jYXRpb25bMF0pDQogICAgICAgICAgICAgew0K LSAgICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiYCVzJyBp cyBub3Qgb24gYW55IGtleXMiKSwNCisgICAgICAgICAgICAgIGluZm9fZXJy b3IgKF8oImAlcycgaXMgbm90IG9uIGFueSBrZXlzIiksDQogICAgICAgICAg ICAgICAgICAgY29tbWFuZF9uYW1lLCBOVUxMKTsNCiAgICAgICAgICAgICB9 DQogICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICB7DQogICAgICAgICAg ICAgICBpZiAoc3Ryc3RyIChsb2NhdGlvbiwgZnVuY3Rpb25fbmFtZSAoY29t bWFuZCkpKQ0KICAgICAgICAgICAgICAgICB3aW5kb3dfbWVzc2FnZV9pbl9l Y2hvX2FyZWENCi0gICAgICAgICAgICAgICAgICAoKGNoYXIgKikgXygiJXMg Y2FuIG9ubHkgYmUgaW52b2tlZCB2aWEgJXMuIiksDQorICAgICAgICAgICAg ICAgICAgKF8oIiVzIGNhbiBvbmx5IGJlIGludm9rZWQgdmlhICVzLiIpLA0K ICAgICAgICAgICAgICAgICAgICBjb21tYW5kX25hbWUsIGxvY2F0aW9uKTsN CiAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgd2luZG93 X21lc3NhZ2VfaW5fZWNob19hcmVhDQotICAgICAgICAgICAgICAgICAgKChj aGFyICopIF8oIiVzIGNhbiBiZSBpbnZva2VkIHZpYSAlcy4iKSwNCisgICAg ICAgICAgICAgICAgICAoXygiJXMgY2FuIGJlIGludm9rZWQgdmlhICVzLiIp LA0KICAgICAgICAgICAgICAgICAgICBjb21tYW5kX25hbWUsIGxvY2F0aW9u KTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgZWxzZQ0K LSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiVGhlcmUgaXMgbm8g ZnVuY3Rpb24gbmFtZWQgYCVzJyIpLA0KKyAgICAgICAgaW5mb19lcnJvciAo XygiVGhlcmUgaXMgbm8gZnVuY3Rpb24gbmFtZWQgYCVzJyIpLA0KICAgICAg ICAgICAgIGNvbW1hbmRfbmFtZSwgTlVMTCk7DQogICAgIH0NCiANCmRpZmYg LXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5mb2tleS5jIHRleGlu Zm8tNC4xMS45MC9pbmZvL2luZm9rZXkuYw0KLS0tIHRleGluZm8tNC4xMS45 MC5vcmlnL2luZm8vaW5mb2tleS5jCTIwMDgtMDItMjIgMjA6MjE6MTguMDAw MDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vaW5mb2tl eS5jCTIwMDgtMDItMjUgMTM6MzY6MjUuMDAwMDAwMDAwICswMTAwDQpAQCAt NjM4LDcgKzYzOCw3IEBADQogCSAgICAgIGVsc2UNCiAJCXsNCiAJCSAgc3lu dGF4X2Vycm9yIChmaWxlbmFtZSwgbG51bSwNCi0gICAgICAgICAgICAgICAg ICAgICAgKGNoYXIgKikgXygiTlVMIGNoYXJhY3RlciAoXiVjKSBub3QgcGVy bWl0dGVkIiksDQorICAgICAgICAgICAgICAgICAgICAgIF8oIk5VTCBjaGFy YWN0ZXIgKF4lYykgbm90IHBlcm1pdHRlZCIpLA0KICAgICAgICAgICAgICAg ICAgICAgICAodm9pZCAqKSAobG9uZykgYywgTlVMTCwgTlVMTCwgTlVMTCk7 DQogCQkgIGVycm9yID0gMTsNCiAJCX0NCkBAIC02NjIsNyArNjYyLDcgQEAN CiAJICAgICAgcmVzY2FuID0gMTsNCiAJICAgICAgaWYgKGFsZW4gPT0gMCkN CiAJCXsNCi0JCSAgc3ludGF4X2Vycm9yIChmaWxlbmFtZSwgbG51bSwgKGNo YXIgKikgXygibWlzc2luZyBhY3Rpb24gbmFtZSIpLA0KKwkJICBzeW50YXhf ZXJyb3IgKGZpbGVuYW1lLCBsbnVtLCBfKCJtaXNzaW5nIGFjdGlvbiBuYW1l IiksDQogCQkJCSh2b2lkICopIChsb25nKSBjLCBOVUxMLCBOVUxMLCBOVUxM KTsNCiAJCSAgZXJyb3IgPSAxOw0KIAkJfQ0KZGlmZiAtdXIgdGV4aW5mby00 LjExLjkwLm9yaWcvaW5mby9pbmZvbWFwLmMgdGV4aW5mby00LjExLjkwL2lu Zm8vaW5mb21hcC5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9p bmZvbWFwLmMJMjAwOC0wMi0xOSAxNTo1ODoyOS4wMDAwMDAwMDAgKzAxMDAN CisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvbWFwLmMJMjAwOC0wMi0y NSAxMTo1NDowMy4wMDAwMDAwMDAgKzAxMDANCkBAIC0xNTA1LDEwICsxNTA1 LDEwIEBADQogICAgICAgICAgICAgICAgIC8qIEJhZCBmaWxlIChhIHZhbGlk IGZpbGUgbXVzdCBoYXZlIGF0IGxlYXN0IDkgY2hhcnMsIGFuZA0KICAgICAg ICAgICAgICAgICAgICBtb3JlIHRoYW4gMTAwIEtCIGlzIGEgcHJvYmxlbSku ICovDQogICAgICAgICAgICAgICAgIGlmIChsZW4gPCBJTkZPS0VZX05NQUdJ QyArIDIpDQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigo Y2hhciAqKSBfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMn IC0gdG9vIHNtYWxsIiksDQorICAgICAgICAgICAgICAgICAgICAgICAgaW5m b19lcnJvcihfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMn IC0gdG9vIHNtYWxsIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGVs c2UNCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yKChjaGFy ICopIF8oIklnbm9yaW5nIGludmFsaWQgaW5mb2tleSBmaWxlIGAlcycgLSB0 b28gYmlnIiksDQorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJv cihfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIC0gdG9v IGJpZyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmlsZW5hbWUsIE5VTEwpOw0KICAgICAgICAgICAgICAgICBjbG9zZShmKTsN CiAgICAgICAgICAgICAgICAgZnJlZShmaWxlbmFtZSk7DQpAQCAtMTUyMSw3 ICsxNTIxLDcgQEANCiAgICAgICAgIGNsb3NlKGYpOw0KICAgICAgICAgaWYg KCh1bnNpZ25lZCBpbnQpIG5yZWFkICE9IGxlbikNCiAgICAgICAgIHsNCi0g ICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAqKSBfKCJFcnJvciBy ZWFkaW5nIGluZm9rZXkgZmlsZSBgJXMnIC0gc2hvcnQgcmVhZCIpLA0KKyAg ICAgICAgICAgICAgICBpbmZvX2Vycm9yKF8oIkVycm9yIHJlYWRpbmcgaW5m b2tleSBmaWxlIGAlcycgLSBzaG9ydCByZWFkIiksDQogICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGZy ZWUoYnVmKTsNCiAgICAgICAgICAgICAgICAgZnJlZShmaWxlbmFtZSk7DQpA QCAtMTU0MCw3ICsxNTQwLDcgQEANCiAgICAgICAgICAgICAgICAgfHwgYnVm W2xlbiAtIDFdICE9IElORk9LRVlfTUFHSUNfRTMNCiAgICAgICAgICkNCiAg ICAgICAgIHsNCi0gICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAq KSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgbWFnaWMgbnVt YmVycykgLS0gcnVuIGluZm9rZXkgdG8gdXBkYXRlIGl0IiksDQorICAgICAg ICAgICAgICAgIGluZm9fZXJyb3IoXygiSW52YWxpZCBpbmZva2V5IGZpbGUg YCVzJyAoYmFkIG1hZ2ljIG51bWJlcnMpIC0tIHJ1biBpbmZva2V5IHRvIHVw ZGF0ZSBpdCIpLA0KICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIE5V TEwpOw0KICAgICAgICAgICAgICAgICBmcmVlKGZpbGVuYW1lKTsNCiAgICAg ICAgICAgICAgICAgcmV0dXJuIDA7DQpAQCAtMTU0OSw3ICsxNTQ5LDcgQEAN CiAgICAgICAgICAgICB8fCBzdHJjbXAoVkVSU0lPTiwgKGNoYXIgKikgKGJ1 ZiArIDQpKSAhPSAwKQ0KICAgICAgICAgew0KICAgICAgICAgICAgICAgICBp bmZvX2Vycm9yDQotICAgICAgICAgICAgICAgICAgKChjaGFyICopIF8oIllv dXIgaW5mb2tleSBmaWxlIGAlcycgaXMgb3V0IG9mIGRhdGUgLS0gcnVuIGlu Zm9rZXkgdG8gdXBkYXRlIGl0IiksDQorICAgICAgICAgICAgICAgICAgKF8o IllvdXIgaW5mb2tleSBmaWxlIGAlcycgaXMgb3V0IG9mIGRhdGUgLS0gcnVu IGluZm9rZXkgdG8gdXBkYXRlIGl0IiksDQogICAgICAgICAgICAgICAgICAg ICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGZyZWUoZmls ZW5hbWUpOw0KICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCkBAIC0xNTY1 LDcgKzE1NjUsNyBAQA0KICAgICAgICAgICAgICAgICBuID0gZ2V0aW50KCZw KTsNCiAgICAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8ICh1bnNpZ25lZCBp bnQpIG4gPiBsZW4gLSA0IC0gKHAgLSBidWYpKQ0KICAgICAgICAgICAgICAg ICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hh ciAqKSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgc2VjdGlv biBsZW5ndGgpIC0tIHJ1biBpbmZva2V5IHRvIHVwZGF0ZSBpdCIpLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGluZm9fZXJyb3IoXygiSW52YWxpZCBp bmZva2V5IGZpbGUgYCVzJyAoYmFkIHNlY3Rpb24gbGVuZ3RoKSAtLSBydW4g aW5mb2tleSB0byB1cGRhdGUgaXQiKSwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmlsZW5hbWUsIE5VTEwpOw0KICAgICAgICAgICAgICAgICAg ICAgICAgIGZyZWUoZmlsZW5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAwOw0KQEAgLTE1ODYsNyArMTU4Niw3IEBADQogICAgICAg ICAgICAgICAgICAgICAgICAgdXNlcl92YXJzX2xlbiA9IG47DQogICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgIGRl ZmF1bHQ6DQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigo Y2hhciAqKSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgc2Vj dGlvbiBjb2RlKSAtLSBydW4gaW5mb2tleSB0byB1cGRhdGUgaXQiKSwNCisg ICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yKF8oIkludmFsaWQg aW5mb2tleSBmaWxlIGAlcycgKGJhZCBzZWN0aW9uIGNvZGUpIC0tIHJ1biBp bmZva2V5IHRvIHVwZGF0ZSBpdCIpLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgICAg ICAgICAgZnJlZShmaWxlbmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIDA7DQpAQCAtMTcyMSw3ICsxNzIxLDcgQEANCiAgICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKHN0YXRlICE9 IGdldHNlcSkNCi0gICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAq KSBfKCJCYWQgZGF0YSBpbiBpbmZva2V5IGZpbGUgLS0gc29tZSBrZXkgYmlu ZGluZ3MgaWdub3JlZCIpLA0KKyAgICAgICAgICAgICAgICBpbmZvX2Vycm9y KF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBzb21lIGtleSBiaW5k aW5ncyBpZ25vcmVkIiksDQogICAgICAgICAgICAgICAgICAgICBOVUxMLCBO VUxMKTsNCiAgICAgICAgIHJldHVybiAhc3RvcDsNCiB9DQpAQCAtMTc3MSw3 ICsxNzcxLDcgQEANCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgfQ0K ICAgICAgIGlmIChzdGF0ZSAhPSBnZXR2YXIpDQotICAgICAgICBpbmZvX2Vy cm9yKChjaGFyICopIF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBz b21lIHZhciBzZXR0aW5ncyBpZ25vcmVkIiksDQorICAgICAgICBpbmZvX2Vy cm9yKF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBzb21lIHZhciBz ZXR0aW5ncyBpZ25vcmVkIiksDQogICAgICAgICAgICAgTlVMTCwgTlVMTCk7 DQogfQ0KIA0KZGlmZiAtdXIgdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9t LXguYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9tLXguYw0KLS0tIHRleGluZm8t NC4xMS45MC5vcmlnL2luZm8vbS14LmMJMjAwNy0xMi0wMyAwMjoxOToyNy4w MDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9tLXgu YwkyMDA4LTAyLTI1IDEzOjI5OjMxLjAwMDAwMDAwMCArMDEwMA0KQEAgLTMy LDcgKzMyLDcgQEANCiAgICBuYW1lLiAgQSByZXR1cm4gdmFsdWUgb2YgTlVM TCBpbmRpY2F0ZXMgdGhhdCBubyBmdW5jdGlvbiBuYW1lIGNvdWxkDQogICAg YmUgcmVhZC4gKi8NCiBjaGFyICoNCi1yZWFkX2Z1bmN0aW9uX25hbWUgKGNo YXIgKnByb21wdCwgV0lORE9XICp3aW5kb3cpDQorcmVhZF9mdW5jdGlvbl9u YW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93KQ0KIHsN CiAgIHJlZ2lzdGVyIGludCBpOw0KICAgY2hhciAqbGluZTsNCkBAIC02OSw3 ICs2OSw3IEBADQogew0KICAgY2hhciAqbGluZTsNCiANCi0gIGxpbmUgPSBy ZWFkX2Z1bmN0aW9uX25hbWUgKChjaGFyICopIF8oIkRlc2NyaWJlIGNvbW1h bmQ6ICIpLCB3aW5kb3cpOw0KKyAgbGluZSA9IHJlYWRfZnVuY3Rpb25fbmFt ZSAoXygiRGVzY3JpYmUgY29tbWFuZDogIiksIHdpbmRvdyk7DQogDQogICBp ZiAoIWxpbmUpDQogICAgIHsNCkBAIC0xMzYsNyArMTM2LDcgQEANCiAgICAg ICAgIChzdHJuY21wIChsaW5lLCAiZWNoby1hcmVhLSIsIDEwKSA9PSAwKSkN CiAgICAgICB7DQogICAgICAgICBmcmVlIChsaW5lKTsNCi0gICAgICAgIGlu Zm9fZXJyb3IgKChjaGFyICopIF8oIkNhbm5vdCBleGVjdXRlIGFuIGBlY2hv LWFyZWEnIGNvbW1hbmQgaGVyZS4iKSwNCisgICAgICAgIGluZm9fZXJyb3Ig KF8oIkNhbm5vdCBleGVjdXRlIGFuIGBlY2hvLWFyZWEnIGNvbW1hbmQgaGVy ZS4iKSwNCiAgICAgICAgICAgICBOVUxMLCBOVUxMKTsNCiAgICAgICAgIHJl dHVybjsNCiAgICAgICB9DQpAQCAtMTUwLDcgKzE1MCw3IEBADQogICAgIGlm IChJbmZvRnVuY3Rpb24oY29tbWFuZCkpDQogICAgICAgKCpJbmZvRnVuY3Rp b24oY29tbWFuZCkpIChhY3RpdmVfd2luZG93LCBjb3VudCwgMCk7DQogICAg IGVsc2UNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJVbmRlZmlu ZWQgY29tbWFuZDogJXMiKSwgbGluZSwgTlVMTCk7DQorICAgICAgaW5mb19l cnJvciAoXygiVW5kZWZpbmVkIGNvbW1hbmQ6ICVzIiksIGxpbmUsIE5VTEwp Ow0KICAgfQ0KIH0NCiANCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmln L2luZm8vbm9kZW1lbnUuYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9ub2RlbWVu dS5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9ub2RlbWVudS5j CTIwMDctMTItMDMgMDI6Mzg6NDIuMDAwMDAwMDAwICswMTAwDQorKysgdGV4 aW5mby00LjExLjkwL2luZm8vbm9kZW1lbnUuYwkyMDA4LTAyLTI1IDEzOjMx OjE1LjAwMDAwMDAwMCArMDEwMA0KQEAgLTE5OCw3ICsxOTgsNyBAQA0KIA0K ICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVyDQogICAgICgiJXMiLCByZXBs YWNlX2luX2RvY3VtZW50YXRpb24NCi0gICAgICgoY2hhciAqKSBfKCJIZXJl IGlzIHRoZSBtZW51IG9mIG5vZGVzIHlvdSBoYXZlIHJlY2VudGx5IHZpc2l0 ZWQuXG5cDQorICAgICAoXygiSGVyZSBpcyB0aGUgbWVudSBvZiBub2RlcyB5 b3UgaGF2ZSByZWNlbnRseSB2aXNpdGVkLlxuXA0KIFNlbGVjdCBvbmUgZnJv bSB0aGlzIG1lbnUsIG9yIHVzZSBgXFxbaGlzdG9yeS1ub2RlXScgaW4gYW5v dGhlciB3aW5kb3cuXG4iKSwgMCksDQogICAgICBOVUxMLCBOVUxMKTsNCiAN CkBAIC0zMTMsNyArMzEzLDcgQEANCiANCiAgIGxpbmUgPQ0KICAgICBpbmZv X3JlYWRfY29tcGxldGluZ19pbl9lY2hvX2FyZWEgKHdpbmRvdywNCi0gICAg ICAgIChjaGFyICopIF8oIlNlbGVjdCB2aXNpdGVkIG5vZGU6ICIpLCBtZW51 KTsNCisgICAgICAgIF8oIlNlbGVjdCB2aXNpdGVkIG5vZGU6ICIpLCBtZW51 KTsNCiANCiAgIHdpbmRvdyA9IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAtMzMz LDcgKzMzMyw3IEBADQogICAgICAgZW50cnkgPSBpbmZvX2dldF9sYWJlbGVk X3JlZmVyZW5jZSAobGluZSwgbWVudSk7DQogDQogICAgICAgaWYgKCFlbnRy eSkNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIF8oIlRoZSByZWZl cmVuY2UgZGlzYXBwZWFyZWQhICglcykuIiksIGxpbmUsIE5VTEwpOw0KKyAg ICAgICAgaW5mb19lcnJvciAoXygiVGhlIHJlZmVyZW5jZSBkaXNhcHBlYXJl ZCEgKCVzKS4iKSwgbGluZSwgTlVMTCk7DQogICAgICAgZWxzZQ0KICAgICAg ICAgaW5mb19zZWxlY3RfcmVmZXJlbmNlICh3aW5kb3csIGVudHJ5KTsNCiAg ICAgfQ0KZGlmZiAtdXIgdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9zZXNz aW9uLmMgdGV4aW5mby00LjExLjkwL2luZm8vc2Vzc2lvbi5jDQotLS0gdGV4 aW5mby00LjExLjkwLm9yaWcvaW5mby9zZXNzaW9uLmMJMjAwOC0wMi0xOSAx NTo1ODoyOS4wMDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAv aW5mby9zZXNzaW9uLmMJMjAwOC0wMi0yNSAxMzozNDowNC4wMDAwMDAwMDAg KzAxMDANCkBAIC0xMTIsNyArMTEyLDcgQEANCiAgICAgICAgICAgaWYgKCFs YXJnZXN0KQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIGRpc3Bs YXlfdXBkYXRlX2Rpc3BsYXkgKHdpbmRvd3MpOw0KLSAgICAgICAgICAgICAg aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF93aW5kb3csIE5V TEwsIE5VTEwpOw0KKyAgICAgICAgICAgICAgaW5mb19lcnJvciAobXNnX2Nh bnRfZmluZF93aW5kb3csIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAg aW5mb19zZXNzaW9uICgpOw0KICAgICAgICAgICAgICAgeGV4aXQgKDApOw0K ICAgICAgICAgICAgIH0NCkBAIC0xMjcsNyArMTI3LDcgQEANCiAgICAgICAg ICAgZWxzZQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIGRpc3Bs YXlfdXBkYXRlX2Rpc3BsYXkgKHdpbmRvd3MpOw0KLSAgICAgICAgICAgICAg aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX3dpbl90b29fc21hbGwsIE5VTEws IE5VTEwpOw0KKyAgICAgICAgICAgICAgaW5mb19lcnJvciAobXNnX3dpbl90 b29fc21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAgaW5mb19z ZXNzaW9uICgpOw0KICAgICAgICAgICAgICAgeGV4aXQgKDApOw0KICAgICAg ICAgICAgIH0NCkBAIC0xMzksNyArMTM5LDcgQEANCiAvKiBTdGFydCBhbiBp bmZvIHNlc3Npb24gd2l0aCBJTklUSUFMX05PREUsIGFuZCBhbiBlcnJvciBt ZXNzYWdlIGluIHRoZSBlY2hvDQogICAgYXJlYSBtYWRlIGZyb20gRk9STUFU IGFuZCBBUkcuICovDQogdm9pZA0KLWJlZ2luX2luZm9fc2Vzc2lvbl93aXRo X2Vycm9yIChOT0RFICppbml0aWFsX25vZGUsIGNoYXIgKmZvcm1hdCwNCiti ZWdpbl9pbmZvX3Nlc3Npb25fd2l0aF9lcnJvciAoTk9ERSAqaW5pdGlhbF9u b2RlLCBjb25zdCBjaGFyICpmb3JtYXQsDQogICAgIHZvaWQgKmFyZzEsIHZv aWQgKmFyZzIpDQogew0KICAgaW5pdGlhbGl6ZV9pbmZvX3Nlc3Npb24gKGlu aXRpYWxfbm9kZSwgMSk7DQpAQCAtMTYxLDcgKzE2MSw3IEBADQogICBjaGFy ICpmb3JtYXQ7DQogDQogICBmb3JtYXQgPSByZXBsYWNlX2luX2RvY3VtZW50 YXRpb24NCi0gICAgKChjaGFyICopIF8oIldlbGNvbWUgdG8gSW5mbyB2ZXJz aW9uICVzLiBUeXBlIFxcW2dldC1oZWxwLXdpbmRvd10gZm9yIGhlbHAsIFxc W21lbnUtaXRlbV0gZm9yIG1lbnUgaXRlbS4iKSwNCisgICAgKF8oIldlbGNv bWUgdG8gSW5mbyB2ZXJzaW9uICVzLiBUeXBlIFxcW2dldC1oZWxwLXdpbmRv d10gZm9yIGhlbHAsIFxcW21lbnUtaXRlbV0gZm9yIG1lbnUgaXRlbS4iKSwN CiAgICAgIDApOw0KIA0KICAgd2luZG93X21lc3NhZ2VfaW5fZWNob19hcmVh IChmb3JtYXQsIFZFUlNJT04sIE5VTEwpOw0KQEAgLTI2OCw3ICsyNjgsNyBA QA0KICAgICAgIGlmICghdGVybV9uYW1lKQ0KICAgICAgICAgdGVybV9uYW1l ID0gImR1bWIiOw0KIA0KLSAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIG1z Z190ZXJtX3Rvb19kdW1iLCB0ZXJtX25hbWUsIE5VTEwpOw0KKyAgICAgIGlu Zm9fZXJyb3IgKG1zZ190ZXJtX3Rvb19kdW1iLCB0ZXJtX25hbWUsIE5VTEwp Ow0KICAgICAgIHhleGl0ICgxKTsNCiAgICAgfQ0KIA0KQEAgLTYwMCw3ICs2 MDAsNyBAQA0KIHsNCiAgIGlmIChvbGQgPT0gLTEpDQogICAgIHsNCi0gICAg ICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX3BvaW50LCBO VUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maW5k X3BvaW50LCBOVUxMLCBOVUxMKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7 DQpAQCAtOTc2LDE0ICs5NzYsMTQgQEANCiAgIHN3aXRjaCAoYmVoYXZpb3Vy KQ0KICAgICB7DQogICAgIGNhc2UgSVNfUGFnZU9ubHk6DQotICAgICAgaW5m b19lcnJvciAoKGNoYXIgKikgbXNnX2F0X25vZGVfYm90dG9tLCBOVUxMLCBO VUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChtc2dfYXRfbm9kZV9ib3R0b20s IE5VTEwsIE5VTEwpOw0KICAgICAgIHJldHVybiAxOw0KIA0KICAgICBjYXNl IElTX05leHRPbmx5Og0KICAgICAgIGluZm9fbmV4dF9sYWJlbF9vZl9ub2Rl ICh3aW5kb3ctPm5vZGUpOw0KICAgICAgIGlmICghaW5mb19wYXJzZWRfbm9k ZW5hbWUgJiYgIWluZm9fcGFyc2VkX2ZpbGVuYW1lKQ0KICAgICAgICAgew0K LSAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfbm9fcG9pbnRl ciwgKGNoYXIgKikgXygiTmV4dCIpLCBOVUxMKTsNCisgICAgICAgICAgaW5m b19lcnJvciAobXNnX25vX3BvaW50ZXIsIChjaGFyICopIF8oIk5leHQiKSwg TlVMTCk7DQogICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgfQ0KICAg ICAgIGVsc2UNCkBAIC0xMTAzLDcgKzExMDMsNyBAQA0KICAgICAgICAgICAg ICAgICAgIHdpbmRvdy0+cG9pbnQgPSBpbmZvX3dpbi0+cG9pbnRzW29sZF9j dXJyZW50XTsNCiAgICAgICAgICAgICAgICAgICByZWNhbGN1bGF0ZV9saW5l X3N0YXJ0cyAod2luZG93KTsNCiAgICAgICAgICAgICAgICAgICB3aW5kb3ct PmZsYWdzIHw9IFdfVXBkYXRlV2luZG93Ow0KLSAgICAgICAgICAgICAgICAg IGluZm9fZXJyb3IgKChjaGFyICopIF8oIk5vIG1vcmUgbm9kZXMgd2l0aGlu IHRoaXMgZG9jdW1lbnQuIiksDQorICAgICAgICAgICAgICAgICAgaW5mb19l cnJvciAoXygiTm8gbW9yZSBub2RlcyB3aXRoaW4gdGhpcyBkb2N1bWVudC4i KSwNCiAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQogICAg ICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgIH0N CkBAIC0xMTIyLDE0ICsxMTIyLDE0IEBADQogICBzd2l0Y2ggKGJlaGF2aW91 cikNCiAgICAgew0KICAgICBjYXNlIElTX1BhZ2VPbmx5Og0KLSAgICAgIGlu Zm9fZXJyb3IgKChjaGFyICopIG1zZ19hdF9ub2RlX3RvcCwgTlVMTCwgTlVM TCk7DQorICAgICAgaW5mb19lcnJvciAobXNnX2F0X25vZGVfdG9wLCBOVUxM LCBOVUxMKTsNCiAgICAgICByZXR1cm4gMTsNCiANCiAgICAgY2FzZSBJU19O ZXh0T25seToNCiAgICAgICBpbmZvX3ByZXZfbGFiZWxfb2Zfbm9kZSAod2lu ZG93LT5ub2RlKTsNCiAgICAgICBpZiAoIWluZm9fcGFyc2VkX25vZGVuYW1l ICYmICFpbmZvX3BhcnNlZF9maWxlbmFtZSkNCiAgICAgICAgIHsNCi0gICAg ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiTm8gYFByZXYnIGZvciB0 aGlzIG5vZGUuIiksIE5VTEwsIE5VTEwpOw0KKyAgICAgICAgICBpbmZvX2Vy cm9yIChfKCJObyBgUHJldicgZm9yIHRoaXMgbm9kZS4iKSwgTlVMTCwgTlVM TCk7DQogICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgfQ0KICAgICAg IGVsc2UNCkBAIC0xMTQ4LDcgKzExNDgsNyBAQA0KICAgICAgICAgICBpZiAo IWluZm9fcGFyc2VkX25vZGVuYW1lICYmICghaW5mb19wYXJzZWRfZmlsZW5h bWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fHwgaXNfZGlyX25hbWUgKGluZm9fcGFyc2VkX2ZpbGVuYW1lKSkpDQogICAg ICAgICAgICAgew0KLSAgICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIg KikNCisgICAgICAgICAgICAgIGluZm9fZXJyb3IgKA0KICAgICAgICAgICAg ICAgICAgICAgXygiTm8gYFByZXYnIG9yIGBVcCcgZm9yIHRoaXMgbm9kZSB3 aXRoaW4gdGhpcyBkb2N1bWVudC4iKSwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAgcmV0dXJuIDE7 DQpAQCAtMTUwMSw3ICsxNTAxLDcgQEANCiAgIC8qIElmIG5vIG90aGVyIHdp bmRvdywgZXJyb3Igbm93LiAqLw0KICAgaWYgKCF3aW5kb3dzLT5uZXh0ICYm ICFlY2hvX2FyZWFfaXNfYWN0aXZlKQ0KICAgICB7DQotICAgICAgaW5mb19l cnJvciAoKGNoYXIgKikgbXNnX29uZV93aW5kb3csIE5VTEwsIE5VTEwpOw0K KyAgICAgIGluZm9fZXJyb3IgKG1zZ19vbmVfd2luZG93LCBOVUxMLCBOVUxM KTsNCiAgICAgICByZXR1cm47DQogICAgIH0NCiANCkBAIC0xNTQxLDcgKzE1 NDEsNyBAQA0KIA0KICAgaWYgKCF3aW5kb3dzLT5uZXh0ICYmICFlY2hvX2Fy ZWFfaXNfYWN0aXZlKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNo YXIgKikgbXNnX29uZV93aW5kb3csIE5VTEwsIE5VTEwpOw0KKyAgICAgIGlu Zm9fZXJyb3IgKG1zZ19vbmVfd2luZG93LCBOVUxMLCBOVUxMKTsNCiAgICAg ICByZXR1cm47DQogICAgIH0NCiANCkBAIC0xNTk3LDcgKzE1OTcsNyBAQA0K IA0KICAgaWYgKCFzcGxpdCkNCiAgICAgew0KLSAgICAgIGluZm9fZXJyb3Ig KChjaGFyICopIG1zZ193aW5fdG9vX3NtYWxsLCBOVUxMLCBOVUxMKTsNCisg ICAgICBpbmZvX2Vycm9yIChtc2dfd2luX3Rvb19zbWFsbCwgTlVMTCwgTlVM TCk7DQogICAgIH0NCiAgIGVsc2UNCiAgICAgew0KQEAgLTE2NjUsMTEgKzE2 NjUsMTEgQEANCiB7DQogICBpZiAoIXdpbmRvd3MtPm5leHQpDQogICAgIHsN Ci0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9raWxsX2xh c3QsIE5VTEwsIE5VTEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50 X2tpbGxfbGFzdCwgTlVMTCwgTlVMTCk7DQogICAgIH0NCiAgIGVsc2UgaWYg KHdpbmRvdy0+ZmxhZ3MgJiBXX1dpbmRvd0lzUGVybSkNCiAgICAgew0KLSAg ICAgIGluZm9fZXJyb3IgKChjaGFyICopIF8oIkNhbm5vdCBkZWxldGUgYSBw ZXJtYW5lbnQgd2luZG93IiksIE5VTEwsIE5VTEwpOw0KKyAgICAgIGluZm9f ZXJyb3IgKF8oIkNhbm5vdCBkZWxldGUgYSBwZXJtYW5lbnQgd2luZG93Iiks IE5VTEwsIE5VTEwpOw0KICAgICB9DQogICBlbHNlDQogICAgIHsNCkBAIC0x NzU0LDcgKzE3NTQsNyBAQA0KICAgLyogSWYgb25seSBvbmUgd2luZG93LCBn aXZlIHVwLiAqLw0KICAgaWYgKCF3aW5kb3dzLT5uZXh0KQ0KICAgICB7DQot ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX29uZV93aW5kb3csIE5V TEwsIE5VTEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19vbmVfd2luZG93 LCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1cm47DQogICAgIH0NCiANCkBA IC0xODg1LDcgKzE4ODUsNyBAQA0KICAgICAgIGlmIChmaWxlX3N5c3RlbV9l cnJvcikNCiAgICAgICAgIGluZm9fZXJyb3IgKGZpbGVfc3lzdGVtX2Vycm9y LCBOVUxMLCBOVUxMKTsNCiAgICAgICBlbHNlDQotICAgICAgICBpbmZvX2Vy cm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX25vZGUsIG5vZGVuYW1lLCBO VUxMKTsNCisgICAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50X2ZpbmRfbm9k ZSwgbm9kZW5hbWUsIE5VTEwpOw0KICAgICB9DQogDQogICBtYXliZV9mcmVl IChmaWxlX3N5c3RlbV9lcnJvcik7DQpAQCAtMTk2MSw3ICsxOTYxLDcgQEAN CiAgICAgICAgICAgaWYgKGluZm9fcmVjZW50X2ZpbGVfZXJyb3IpDQogICAg ICAgICAgICAgaW5mb19lcnJvciAoaW5mb19yZWNlbnRfZmlsZV9lcnJvciwg TlVMTCwgTlVMTCk7DQogICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICBp bmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maWxlX25vZGUsIGZpbGVu YW1lLCBub2RlbmFtZSk7DQorICAgICAgICAgICAgaW5mb19lcnJvciAobXNn X2NhbnRfZmlsZV9ub2RlLCBmaWxlbmFtZSwgbm9kZW5hbWUpOw0KICAgICAg ICAgfQ0KIA0KICAgICAgIGZyZWUgKGZpbGVuYW1lKTsNCkBAIC0xOTY5LDcg KzE5NjksNyBAQA0KICAgICB9DQogICBlbHNlDQogICAgIHsNCi0gICAgICBp bmZvX2Vycm9yICgoY2hhciAqKSBtc2dfbm9fcG9pbnRlciwgbGFiZWwsIE5V TEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19ub19wb2ludGVyLCBsYWJl bCwgTlVMTCk7DQogICAgIH0NCiB9DQogDQpAQCAtMjAyNSw3ICsyMDI1LDcg QEANCiAgICAgfQ0KIA0KICAgaWYgKCFub2RlKQ0KLSAgICBpbmZvX2Vycm9y ICgoY2hhciAqKSBfKCJUaGlzIHdpbmRvdyBoYXMgbm8gYWRkaXRpb25hbCBu b2RlcyIpLCBOVUxMLCBOVUxMKTsNCisgICAgaW5mb19lcnJvciAoXygiVGhp cyB3aW5kb3cgaGFzIG5vIGFkZGl0aW9uYWwgbm9kZXMiKSwgTlVMTCwgTlVM TCk7DQogICBlbHNlDQogICAgIGluZm9fc2V0X25vZGVfb2Zfd2luZG93ICgx LCB3aW5kb3csIG5vZGUpOw0KIH0NCkBAIC0yMDU4LDcgKzIwNTgsNyBAQA0K ICAgICB9DQogDQogICBpZiAoIW5vZGUpDQotICAgIGluZm9fZXJyb3IgKChj aGFyICopIF8oIlRoaXMgd2luZG93IGhhcyBubyBhZGRpdGlvbmFsIG5vZGVz IiksIE5VTEwsIE5VTEwpOw0KKyAgICBpbmZvX2Vycm9yIChfKCJUaGlzIHdp bmRvdyBoYXMgbm8gYWRkaXRpb25hbCBub2RlcyIpLCBOVUxMLCBOVUxMKTsN CiAgIGVsc2UNCiAgICAgaW5mb19zZXRfbm9kZV9vZl93aW5kb3cgKDEsIHdp bmRvdywgbm9kZSk7DQogfQ0KQEAgLTIwODAsNyArMjA4MCw3IEBADQogDQog ICBpZiAoIW1lbnUpDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hh ciAqKSBtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICBp bmZvX2Vycm9yIChtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCiAg ICAgICByZXR1cm47DQogICAgIH0NCiANCkBAIC0yMTA0LDcgKzIxMDQsNyBA QA0KICAgICAgICAgaW5mb19uZXh0X2xpbmUgKHdpbmRvdywgbWVudVtpXS0+ bGluZV9udW1iZXIgLSAxLCBrZXkpOw0KICAgICB9DQogICBlbHNlDQotICAg IGluZm9fZXJyb3IgKChjaGFyICopIF8oIlRoZXJlIGFyZW4ndCAlZCBpdGVt cyBpbiB0aGlzIG1lbnUuIiksDQorICAgIGluZm9fZXJyb3IgKF8oIlRoZXJl IGFyZW4ndCAlZCBpdGVtcyBpbiB0aGlzIG1lbnUuIiksDQogICAgICAgICAg ICAgICAgICh2b2lkICopIChsb25nKSBpdGVtLCBOVUxMKTsNCiANCiAgIGlu Zm9fZnJlZV9yZWZlcmVuY2VzIChtZW51KTsNCkBAIC0yMTkzLDkgKzIxOTMs OSBAQA0KICAgaWYgKCFtZW51KQ0KICAgICB7DQogICAgICAgaWYgKGJ1aWxk ZXIgPT0gaW5mb19tZW51X29mX25vZGUpDQotICAgICAgICBpbmZvX2Vycm9y ICgoY2hhciAqKSBtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCisg ICAgICAgIGluZm9fZXJyb3IgKG1zZ19ub19tZW51X25vZGUsIE5VTEwsIE5V TEwpOw0KICAgICAgIGVsc2UNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFy ICopIG1zZ19ub194cmVmX25vZGUsIE5VTEwsIE5VTEwpOw0KKyAgICAgICAg aW5mb19lcnJvciAobXNnX25vX3hyZWZfbm9kZSwgTlVMTCwgTlVMTCk7DQog ICAgICAgcmV0dXJuOw0KICAgICB9DQogDQpAQCAtMjM5MSw3ICsyMzkxLDcg QEANCiAgICAgICAgIH0NCiANCiAgICAgICBpZiAoIWVudHJ5ICYmIGRlZmVu dHJ5KQ0KLSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiVGhlIHJl ZmVyZW5jZSBkaXNhcHBlYXJlZCEgKCVzKS4iKSwgbGluZSwgTlVMTCk7DQor ICAgICAgICBpbmZvX2Vycm9yIChfKCJUaGUgcmVmZXJlbmNlIGRpc2FwcGVh cmVkISAoJXMpLiIpLCBsaW5lLCBOVUxMKTsNCiAgICAgICBlbHNlDQogICAg ICAgICB7DQogICAgICAgICAgIE5PREUgKm9yaWcgPSB3aW5kb3ctPm5vZGU7 DQpAQCAtMjQ2OSw3ICsyNDY5LDcgQEANCiAgIHBvc2l0aW9uID0gc2VhcmNo IChJTkZPX01FTlVfTEFCRUwsICZiaW5kaW5nKTsNCiANCiAgIGlmIChwb3Np dGlvbiA9PSAtMSkNCi0gICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX25v X21lbnVfbm9kZSwgTlVMTCwgTlVMTCk7DQorICAgIGluZm9fZXJyb3IgKG1z Z19ub19tZW51X25vZGUsIE5VTEwsIE5VTEwpOw0KICAgZWxzZQ0KICAgICB7 DQogICAgICAgd2luZG93LT5wb2ludCA9IHBvc2l0aW9uOw0KQEAgLTI0ODgs NyArMjQ4OCw3IEBADQogICBtZW51ID0gaW5mb19tZW51X29mX25vZGUgKHdp bmRvdy0+bm9kZSk7DQogDQogICBpZiAoIW1lbnUpDQotICAgIGluZm9fZXJy b3IgKChjaGFyICopIG1zZ19ub19tZW51X25vZGUsIE5VTEwsIE5VTEwpOw0K KyAgICBpbmZvX2Vycm9yIChtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxM KTsNCiANCiAgIGZvciAoaSA9IDA7ICghaW5mb19lcnJvcl93YXNfcHJpbnRl ZCkgJiYgKGVudHJ5ID0gbWVudVtpXSk7IGkrKykNCiAgICAgew0KQEAgLTI0 OTgsNyArMjQ5OCw3IEBADQogICAgICAgd2luZG93X3RpbGVfd2luZG93cyAo VElMRV9JTlRFUk5BTFMpOw0KIA0KICAgICAgIGlmICghbmV3KQ0KLSAgICAg ICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX3dpbl90b29fc21hbGwsIE5V TEwsIE5VTEwpOw0KKyAgICAgICAgaW5mb19lcnJvciAobXNnX3dpbl90b29f c21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgIGVsc2UNCiAgICAgICAgIHsN CiAgICAgICAgICAgYWN0aXZlX3dpbmRvdyA9IG5ldzsNCkBAIC0yNTYzLDEy ICsyNTYzLDEyIEBADQogICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0N CiAgICAgICB9DQotICAgIGxpbmUgPSBpbmZvX3JlYWRfbWF5YmVfY29tcGxl dGluZyAod2luZG93LCAoY2hhciAqKSBfKCJHb3RvIG5vZGU6ICIpLA0KKyAg ICBsaW5lID0gaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKHdpbmRvdywg XygiR290byBub2RlOiAiKSwNCiAgICAgICAgIGl0ZW1zKTsNCiAgICAgaW5m b19mcmVlX3JlZmVyZW5jZXMgKGl0ZW1zKTsNCiAgIH0NCiAjZWxzZSAvKiAh R09UT19DT01QTEVURVMgKi8NCi0gIGxpbmUgPSBpbmZvX3JlYWRfaW5fZWNo b19hcmVhICh3aW5kb3csIChjaGFyICopIF8oIkdvdG8gbm9kZTogIikpOw0K KyAgbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygi R290byBub2RlOiAiKSk7DQogI2VuZGlmIC8qICFHT1RPX0NPTVBMRVRFUyAq Lw0KIA0KICAgLyogSWYgdGhlIHVzZXIgYWJvcnRlZCwgcXVpdCBub3cuICov DQpAQCAtMjc2MCw3ICsyNzYwLDcgQEANCiBERUNMQVJFX0lORk9fQ09NTUFO RCAoaW5mb19tZW51X3NlcXVlbmNlLA0KICAgIF8oIlJlYWQgYSBsaXN0IG9m IG1lbnVzIHN0YXJ0aW5nIGZyb20gZGlyIGFuZCBmb2xsb3cgdGhlbSIpKQ0K IHsNCi0gIGNoYXIgKmxpbmUgPSBpbmZvX3JlYWRfaW5fZWNob19hcmVhICh3 aW5kb3csIChjaGFyICopIF8oIkZvbGxvdyBtZW51czogIikpOw0KKyAgY2hh ciAqbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygi Rm9sbG93IG1lbnVzOiAiKSk7DQogDQogICAvKiBJZiB0aGUgdXNlciBhYm9y dGVkLCBxdWl0IG5vdy4gKi8NCiAgIGlmICghbGluZSkNCkBAIC0yNzkzLDcg KzI3OTMsNyBAQA0KICAgICAgIC8qIElmIHdlIHN0aWxsIGNhbm5vdCBmaW5k IHRoZSBzdGFydGluZyBwb2ludCwgZ2l2ZSB1cC4NCiAgICAgICAgICBXZSBj YW5ub3QgYWxsb3cgYSBOVUxMIHBvaW50ZXIgaW5zaWRlIGluZm9fZm9sbG93 X21lbnVzLiAgKi8NCiAgICAgICBpZiAoIWRpcl9ub2RlKQ0KLSAgICAgICAg aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF9ub2RlLCAiVG9w IiwgTlVMTCk7DQorICAgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maW5k X25vZGUsICJUb3AiLCBOVUxMKTsNCiAgICAgICBlbHNlDQogICAgICAgICBu b2RlID0gaW5mb19mb2xsb3dfbWVudXMgKGRpcl9ub2RlLCBub2RlcywgJmVy cnN0ciwgJmVycmFyZzEsICZlcnJhcmcyKTsNCiANCkBAIC0yODAxLDcgKzI4 MDEsNyBAQA0KICAgICAgIGlmICghZXJyc3RyKQ0KICAgICAgICAgaW5mb19z ZXRfbm9kZV9vZl93aW5kb3cgKDEsIHdpbmRvdywgbm9kZSk7DQogICAgICAg ZWxzZQ0KLSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgZXJyc3RyLCBl cnJhcmcxLCBlcnJhcmcyKTsNCisgICAgICAgIGluZm9fZXJyb3IgKGVycnN0 ciwgZXJyYXJnMSwgZXJyYXJnMik7DQogICAgIH0NCiANCiAgIGZyZWUgKGxp bmUpOw0KQEAgLTI5ODUsNyArMjk4NSw3IEBADQogICAgICBmcm9tIHRoZSBU b3Agbm9kZS4gICovDQogICB0b3Bfbm9kZSA9IGluZm9fZ2V0X25vZGUgKGZp bGVfbmFtZSwgTlVMTCk7DQogICBpZiAoIXRvcF9ub2RlKQ0KLSAgICBpbmZv X2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX25vZGUsICJUb3AiLCBO VUxMKTsNCisgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmluZF9ub2RlLCAi VG9wIiwgTlVMTCk7DQogDQogICBpbmZvX2ludHVpdF9vcHRpb25zX25vZGUg KHdpbmRvdywgdG9wX25vZGUsIHByb2dyYW1fbmFtZSk7DQogICBmcmVlIChs aW5lKTsNCkBAIC0yOTk3LDcgKzI5OTcsNyBAQA0KIHsNCiAgIGNoYXIgKmxp bmU7DQogDQotICBsaW5lID0gaW5mb19yZWFkX2luX2VjaG9fYXJlYSAod2lu ZG93LCAoY2hhciAqKSBfKCJHZXQgTWFucGFnZTogIikpOw0KKyAgbGluZSA9 IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygiR2V0IE1hbnBh Z2U6ICIpKTsNCiANCiAgIGlmICghbGluZSkNCiAgICAgew0KQEAgLTMxMDQs NyArMzEwNCw3IEBADQogICBpZiAoIWluZm9fd2luKQ0KICAgICB7DQogICAg ICAgaWYgKCpub2RlbmFtZSkNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFy ICopIF8oIkNhbm5vdCBraWxsIG5vZGUgYCVzJyIpLCBub2RlbmFtZSwgTlVM TCk7DQorICAgICAgICBpbmZvX2Vycm9yIChfKCJDYW5ub3Qga2lsbCBub2Rl IGAlcyciKSwgbm9kZW5hbWUsIE5VTEwpOw0KICAgICAgIGVsc2UNCiAgICAg ICAgIHdpbmRvd19jbGVhcl9lY2hvX2FyZWEgKCk7DQogDQpAQCAtMzExNCw3 ICszMTE0LDcgQEANCiAgIC8qIElmIHRoZXJlIGFyZSBubyBtb3JlIG5vZGVz IGxlZnQgYW55d2hlcmUgdG8gdmlldywgY29tcGxhaW4gYW5kIGV4aXQuICov DQogICBpZiAoaW5mb193aW5kb3dzX2luZGV4ID09IDEgJiYgaW5mb193aW5k b3dzWzBdLT5ub2Rlc19pbmRleCA9PSAxKQ0KICAgICB7DQotICAgICAgaW5m b19lcnJvciAoKGNoYXIgKikgXygiQ2Fubm90IGtpbGwgdGhlIGxhc3Qgbm9k ZSIpLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJDYW5u b3Qga2lsbCB0aGUgbGFzdCBub2RlIiksIE5VTEwsIE5VTEwpOw0KICAgICAg IHJldHVybjsNCiAgICAgfQ0KIA0KQEAgLTMyMTgsNyArMzIxOCw3IEBADQog ew0KICAgY2hhciAqbGluZTsNCiANCi0gIGxpbmUgPSBpbmZvX3JlYWRfaW5f ZWNob19hcmVhICh3aW5kb3csIChjaGFyICopIF8oIkZpbmQgZmlsZTogIikp Ow0KKyAgbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywg XygiRmluZCBmaWxlOiAiKSk7DQogICBpZiAoIWxpbmUpDQogICAgIHsNCiAg ICAgICBpbmZvX2Fib3J0X2tleSAoYWN0aXZlX3dpbmRvdywgMSwgMCk7DQpA QCAtMzIzNSw3ICszMjM1LDcgQEANCiAgICAgICAgICAgaWYgKGluZm9fcmVj ZW50X2ZpbGVfZXJyb3IpDQogICAgICAgICAgICAgaW5mb19lcnJvciAoaW5m b19yZWNlbnRfZmlsZV9lcnJvciwgTlVMTCwgTlVMTCk7DQogICAgICAgICAg IGVsc2UNCi0gICAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJD YW5ub3QgZmluZCBgJXMnLiIpLCBsaW5lLCBOVUxMKTsNCisgICAgICAgICAg ICBpbmZvX2Vycm9yIChfKCJDYW5ub3QgZmluZCBgJXMnLiIpLCBsaW5lLCBO VUxMKTsNCiAgICAgICAgIH0NCiAgICAgICBlbHNlDQogICAgICAgICBpbmZv X3NldF9ub2RlX29mX3dpbmRvdyAoMSwgd2luZG93LCBub2RlKTsNCkBAIC0z Mjc4LDcgKzMyNzgsNyBAQA0KIA0KICAgaWYgKCFvdXRwdXRfc3RyZWFtKQ0K ICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiQ291bGQg bm90IGNyZWF0ZSBvdXRwdXQgZmlsZSBgJXMnLiIpLA0KKyAgICAgIGluZm9f ZXJyb3IgKF8oIkNvdWxkIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGUgYCVzJy4i KSwNCiAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLCBOVUxMKTsNCiAgICAg ICByZXR1cm47DQogICAgIH0NCkBAIC0zMjkyLDcgKzMyOTIsNyBAQA0KICAg ICBmY2xvc2UgKG91dHB1dF9zdHJlYW0pOw0KIA0KICNpZiBkZWZpbmVkIChW RVJCT1NFX05PREVfRFVNUElORykNCi0gIGluZm9fZXJyb3IgKChjaGFyICop IF8oIkRvbmUuIiksIE5VTEwsIE5VTEwpOw0KKyAgaW5mb19lcnJvciAoXygi RG9uZS4iKSwgTlVMTCwgTlVMTCk7DQogI2VuZGlmIC8qIFZFUkJPU0VfTk9E RV9EVU1QSU5HICovDQogfQ0KIA0KQEAgLTMzMjYsMTEgKzMzMjYsMTEgQEAN CiAgICAgICBlbHNlDQogICAgICAgICB7DQogICAgICAgICAgIGlmIChmaWxl bmFtZSAmJiAqbm9kZW5hbWUgIT0gJygnKQ0KLSAgICAgICAgICAgIGluZm9f ZXJyb3IgKChjaGFyICopIG1zZ19jYW50X2ZpbGVfbm9kZSwNCisgICAgICAg ICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maWxlX25vZGUsDQogICAgICAg ICAgICAgICAgIGZpbGVuYW1lX25vbl9kaXJlY3RvcnkgKGZpbGVuYW1lKSwN CiAgICAgICAgICAgICAgICAgbm9kZW5hbWUpOw0KICAgICAgICAgICBlbHNl DQotICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRf ZmluZF9ub2RlLCBub2RlbmFtZSwgTlVMTCk7DQorICAgICAgICAgICAgaW5m b19lcnJvciAobXNnX2NhbnRfZmluZF9ub2RlLCBub2RlbmFtZSwgTlVMTCk7 DQogICAgICAgICB9DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtMzM0 Nyw3ICszMzQ3LDcgQEANCiANCiAjaWYgZGVmaW5lZCAoVkVSQk9TRV9OT0RF X0RVTVBJTkcpDQogICAvKiBNYXliZSB3ZSBzaG91bGQgcHJpbnQgc29tZSBp bmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZSBiZWluZyBvdXRwdXQuICovDQot ICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJXcml0aW5nIG5vZGUgJXMuLi4i KSwgbm9kZV9wcmludGVkX3JlcCAobm9kZSksIE5VTEwpOw0KKyAgaW5mb19l cnJvciAoXygiV3JpdGluZyBub2RlICVzLi4uIiksIG5vZGVfcHJpbnRlZF9y ZXAgKG5vZGUpLCBOVUxMKTsNCiAjZW5kaWYgLyogVkVSQk9TRV9OT0RFX0RV TVBJTkcgKi8NCiANCiAgIHdyaXRlX25vZGVfdG9fc3RyZWFtIChub2RlLCBz dHJlYW0pOw0KQEAgLTMzOTYsNyArMzM5Niw3IEBADQogDQogICBpZiAoIW91 dHB1dF9zdHJlYW0pDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hh ciAqKSBfKCJDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBmaWxlIGAlcycuIiks IGZpbGVuYW1lLA0KKyAgICAgIGluZm9fZXJyb3IgKF8oIkNvdWxkIG5vdCBj cmVhdGUgb3V0cHV0IGZpbGUgYCVzJy4iKSwgZmlsZW5hbWUsDQogICAgICAg ICAgIE5VTEwpOw0KICAgICAgIHJldHVybjsNCiAgICAgfQ0KQEAgLTM0MTQs NyArMzQxNCw3IEBADQogICAgIGZjbG9zZSAob3V0cHV0X3N0cmVhbSk7DQog DQogI2lmIGRlZmluZWQgKFZFUkJPU0VfTk9ERV9EVU1QSU5HKQ0KLSAgaW5m b19lcnJvciAoKGNoYXIgKikgXygiRG9uZS4iKSwgTlVMTCwgTlVMTCk7DQor ICBpbmZvX2Vycm9yIChfKCJEb25lLiIpLCBOVUxMLCBOVUxMKTsNCiAjZW5k aWYgLyogVkVSQk9TRV9OT0RFX0RVTVBJTkcgKi8NCiB9DQogDQpAQCAtMzQ1 OCwxMyArMzQ1OCwxMyBAQA0KIA0KICAgaWYgKCFwcmludGVyX3BpcGUpDQog ICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJDYW5ub3Qg b3BlbiBwaXBlIHRvIGAlcycuIiksIHByaW50X2NvbW1hbmQsIE5VTEwpOw0K KyAgICAgIGluZm9fZXJyb3IgKF8oIkNhbm5vdCBvcGVuIHBpcGUgdG8gYCVz Jy4iKSwgcHJpbnRfY29tbWFuZCwgTlVMTCk7DQogICAgICAgcmV0dXJuOw0K ICAgICB9DQogDQogI2lmIGRlZmluZWQgKFZFUkJPU0VfTk9ERV9EVU1QSU5H KQ0KICAgLyogTWF5YmUgd2Ugc2hvdWxkIHByaW50IHNvbWUgaW5mb3JtYXRp b24gYWJvdXQgdGhlIG5vZGUgYmVpbmcgb3V0cHV0LiAqLw0KLSAgaW5mb19l cnJvciAoKGNoYXIgKikgXygiUHJpbnRpbmcgbm9kZSAlcy4uLiIpLCBub2Rl X3ByaW50ZWRfcmVwIChub2RlKSwgTlVMTCk7DQorICBpbmZvX2Vycm9yIChf KCJQcmludGluZyBub2RlICVzLi4uIiksIG5vZGVfcHJpbnRlZF9yZXAgKG5v ZGUpLCBOVUxMKTsNCiAjZW5kaWYgLyogVkVSQk9TRV9OT0RFX0RVTVBJTkcg Ki8NCiANCiAgIHdyaXRlX25vZGVfdG9fc3RyZWFtIChub2RlLCBwcmludGVy X3BpcGUpOw0KQEAgLTM0NzQsNyArMzQ3NCw3IEBADQogICAgIGZjbG9zZSAo cHJpbnRlcl9waXBlKTsNCiANCiAjaWYgZGVmaW5lZCAoVkVSQk9TRV9OT0RF X0RVTVBJTkcpDQotICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJEb25lLiIp LCBOVUxMLCBOVUxMKTsNCisgIGluZm9fZXJyb3IgKF8oIkRvbmUuIiksIE5V TEwsIE5VTEwpOw0KICNlbmRpZiAvKiBWRVJCT1NFX05PREVfRFVNUElORyAq Lw0KIH0NCiANCkBAIC0zNjk2LDcgKzM2OTYsNyBAQA0KICAgICAgICAgICBp ZiAoIWVjaG9fYXJlYV9pc19hY3RpdmUgJiYgKGxhc3Rfc3ViZmlsZSAhPSB0 YWctPmZpbGVuYW1lKSkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAg ICB3aW5kb3dfbWVzc2FnZV9pbl9lY2hvX2FyZWENCi0gICAgICAgICAgICAg ICAgKChjaGFyICopIF8oIlNlYXJjaGluZyBzdWJmaWxlICVzIC4uLiIpLA0K KyAgICAgICAgICAgICAgICAoXygiU2VhcmNoaW5nIHN1YmZpbGUgJXMgLi4u IiksDQogICAgICAgICAgICAgICAgICBmaWxlbmFtZV9ub25fZGlyZWN0b3J5 ICh0YWctPmZpbGVuYW1lKSwgTlVMTCk7DQogDQogICAgICAgICAgICAgICBs YXN0X3N1YmZpbGUgPSB0YWctPmZpbGVuYW1lOw0KQEAgLTM3MTIsNyArMzcx Miw3IEBADQogICAgICAgICAgICAgICAgICAgaWYgKGluZm9fcmVjZW50X2Zp bGVfZXJyb3IpDQogICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yIChp bmZvX3JlY2VudF9maWxlX2Vycm9yLCBOVUxMLCBOVUxMKTsNCiAgICAgICAg ICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgICAgICBpbmZvX2Vy cm9yICgoY2hhciAqKSBtc2dfY2FudF9maWxlX25vZGUsDQorICAgICAgICAg ICAgICAgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maWxlX25vZGUsDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9ub25f ZGlyZWN0b3J5IChmaWxlX2J1ZmZlci0+ZmlsZW5hbWUpLA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFnLT5ub2RlbmFtZSk7DQogICAg ICAgICAgICAgICAgIH0NCkBAIC0zODQ3LDcgKzM4NDcsNyBAQA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlX3dpbmRvdywg ZGlyZWN0aW9uLCBjYXNlX3NlbnNpdGl2ZSk7DQogDQogICBpZiAocmVzdWx0 ICE9IDAgJiYgIWluZm9fZXJyb3Jfd2FzX3ByaW50ZWQpDQotICAgIGluZm9f ZXJyb3IgKChjaGFyICopIF8oIlNlYXJjaCBmYWlsZWQuIiksIE5VTEwsIE5V TEwpOw0KKyAgICBpbmZvX2Vycm9yIChfKCJTZWFyY2ggZmFpbGVkLiIpLCBO VUxMLCBOVUxMKTsNCiAgIGVsc2UgaWYgKG9sZF9wYWdldG9wICE9IGFjdGl2 ZV93aW5kb3ctPnBhZ2V0b3ApDQogICAgIHsNCiAgICAgICBpbnQgbmV3X3Bh Z2V0b3A7DQpAQCAtMzg2OCw3ICszODY4LDcgQEANCiAgICAgICAgICAgICAg ICAgICAgICAgXygiUmVwZWF0IGxhc3Qgc2VhcmNoIGluIHRoZSBzYW1lIGRp cmVjdGlvbiIpKQ0KIHsNCiAgIGlmICghbGFzdF9zZWFyY2hfZGlyZWN0aW9u KQ0KLSAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJObyBwcmV2aW91cyBz ZWFyY2ggc3RyaW5nIiksIE5VTEwsIE5VTEwpOw0KKyAgICBpbmZvX2Vycm9y IChfKCJObyBwcmV2aW91cyBzZWFyY2ggc3RyaW5nIiksIE5VTEwsIE5VTEwp Ow0KICAgZWxzZQ0KICAgICBpbmZvX3NlYXJjaF8xICh3aW5kb3csIGxhc3Rf c2VhcmNoX2RpcmVjdGlvbiAqIGNvdW50LA0KICAgICAgICAgICAgICAgICAg ICBrZXksIGxhc3Rfc2VhcmNoX2Nhc2Vfc2Vuc2l0aXZlLCAwKTsNCkBAIC0z ODc4LDcgKzM4NzgsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICBfKCJS ZXBlYXQgbGFzdCBzZWFyY2ggaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIikp DQogew0KICAgaWYgKCFsYXN0X3NlYXJjaF9kaXJlY3Rpb24pDQotICAgIGlu Zm9fZXJyb3IgKChjaGFyICopIF8oIk5vIHByZXZpb3VzIHNlYXJjaCBzdHJp bmciKSwgTlVMTCwgTlVMTCk7DQorICAgIGluZm9fZXJyb3IgKF8oIk5vIHBy ZXZpb3VzIHNlYXJjaCBzdHJpbmciKSwgTlVMTCwgTlVMTCk7DQogICBlbHNl DQogICAgIGluZm9fc2VhcmNoXzEgKHdpbmRvdywgLWxhc3Rfc2VhcmNoX2Rp cmVjdGlvbiAqIGNvdW50LA0KICAgICAgICAgICAgICAgICAgICBrZXksIGxh c3Rfc2VhcmNoX2Nhc2Vfc2Vuc2l0aXZlLCAwKTsNCkBAIC00NDE4LDcgKzQ0 MTgsNyBAQA0KIA0KICAgaWYgKGZpcnN0bWVudSA9PSAtMSAmJiBmaXJzdHhy ZWYgPT0gLTEpDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAq KSBtc2dfbm9feHJlZl9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZv X2Vycm9yIChtc2dfbm9feHJlZl9ub2RlLCBOVUxMLCBOVUxMKTsNCiAgICAg ICB1c2VfcmVnZXggPSBzYXZlX3VzZV9yZWdleDsNCiAgICAgICByZXR1cm4g Y3Vyc29yX21vdmVtZW50X3Njcm9sbHNfcDsNCiAgICAgfQ0KQEAgLTQ1NjUs NyArNDU2NSw3IEBADQogICAgICBkbyBpdC4gKi8NCiAgIGlmICghaW5mb19l cnJvcl9yaW5nc19iZWxsX3ApDQogICAgIHRlcm1pbmFsX3JpbmdfYmVsbCAo KTsNCi0gIGluZm9fZXJyb3IgKChjaGFyICopIF8oIlF1aXQiKSwgTlVMTCwg TlVMTCk7DQorICBpbmZvX2Vycm9yIChfKCJRdWl0IiksIE5VTEwsIE5VTEwp Ow0KIA0KICAgaW5mb19pbml0aWFsaXplX251bWVyaWNfYXJnICgpOw0KICAg aW5mb19jbGVhcl9wZW5kaW5nX2lucHV0ICgpOw0KQEAgLTQ2NjcsNyArNDY2 Nyw3IEBADQogICByZXAgPSBwcmV0dHlfa2V5c2VxIChrZXlzZXEpOw0KIA0K ICAgaWYgKCFlY2hvX2FyZWFfaXNfYWN0aXZlKQ0KLSAgICBpbmZvX2Vycm9y ICgoY2hhciAqKSBfKCJVbmtub3duIGNvbW1hbmQgKCVzKS4iKSwgcmVwLCBO VUxMKTsNCisgICAgaW5mb19lcnJvciAoXygiVW5rbm93biBjb21tYW5kICgl cykuIiksIHJlcCwgTlVMTCk7DQogICBlbHNlDQogICAgIHsNCiAgICAgICBj aGFyICp0ZW1wID0geG1hbGxvYyAoMSArIHN0cmxlbiAocmVwKSArIHN0cmxl biAoXygiXCIlc1wiIGlzIGludmFsaWQiKSkpOw0KZGlmZiAtdXIgdGV4aW5m by00LjExLjkwLm9yaWcvaW5mby9zZXNzaW9uLmggdGV4aW5mby00LjExLjkw L2luZm8vc2Vzc2lvbi5oDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5m by9zZXNzaW9uLmgJMjAwNy0xMi0xNyAyMDoxMjoxMS4wMDAwMDAwMDAgKzAx MDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9zZXNzaW9uLmgJMjAwOC0w Mi0yNSAxMjowMzoyMC4wMDAwMDAwMDAgKzAxMDANCkBAIC0xMDksNyArMTA5 LDcgQEANCiAgICAgY2hhciAqKm5vZGVuYW1lcyk7DQogZXh0ZXJuIHZvaWQg YmVnaW5faW5mb19zZXNzaW9uIChOT0RFICppbml0aWFsX25vZGUpOw0KIGV4 dGVybiB2b2lkIGJlZ2luX2luZm9fc2Vzc2lvbl93aXRoX2Vycm9yIChOT0RF ICppbml0aWFsX25vZGUsDQotICAgIGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJn MSwgdm9pZCAqYXJnMik7DQorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9p ZCAqYXJnMSwgdm9pZCAqYXJnMik7DQogZXh0ZXJuIHZvaWQgaW5mb19zZXNz aW9uICh2b2lkKTsNCiBleHRlcm4gdm9pZCBpbml0aWFsaXplX2luZm9fc2Vz c2lvbiAoTk9ERSAqbm9kZSwgaW50IGNsZWFyX3NjcmVlbik7DQogZXh0ZXJu IHZvaWQgaW5mb19yZWFkX2FuZF9kaXNwYXRjaCAodm9pZCk7DQpkaWZmIC11 ciB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL3ZhcmlhYmxlcy5jIHRleGlu Zm8tNC4xMS45MC9pbmZvL3ZhcmlhYmxlcy5jDQotLS0gdGV4aW5mby00LjEx LjkwLm9yaWcvaW5mby92YXJpYWJsZXMuYwkyMDA3LTEyLTAzIDAyOjE5OjI3 LjAwMDAwMDAwMCArMDEwMA0KKysrIHRleGluZm8tNC4xMS45MC9pbmZvL3Zh cmlhYmxlcy5jCTIwMDgtMDItMjUgMTI6MTQ6MjQuMDAwMDAwMDAwICswMTAw DQpAQCAtODYsNyArODYsNyBAQA0KICAgY2hhciAqZGVzY3JpcHRpb247DQog DQogICAvKiBHZXQgdGhlIHZhcmlhYmxlJ3MgbmFtZS4gKi8NCi0gIHZhciA9 IHJlYWRfdmFyaWFibGVfbmFtZSAoKGNoYXIgKikgXygiRGVzY3JpYmUgdmFy aWFibGU6ICIpLCB3aW5kb3cpOw0KKyAgdmFyID0gcmVhZF92YXJpYWJsZV9u YW1lIChfKCJEZXNjcmliZSB2YXJpYWJsZTogIiksIHdpbmRvdyk7DQogDQog ICBpZiAoIXZhcikNCiAgICAgcmV0dXJuOw0KQEAgLTExMSw3ICsxMTEsNyBA QA0KICAgY2hhciAqbGluZTsNCiANCiAgIC8qIEdldCB0aGUgdmFyaWFibGUn cyBuYW1lIGFuZCB2YWx1ZS4gKi8NCi0gIHZhciA9IHJlYWRfdmFyaWFibGVf bmFtZSAoKGNoYXIgKikgXygiU2V0IHZhcmlhYmxlOiAiKSwgd2luZG93KTsN CisgIHZhciA9IHJlYWRfdmFyaWFibGVfbmFtZSAoXygiU2V0IHZhcmlhYmxl OiAiKSwgd2luZG93KTsNCiANCiAgIGlmICghdmFyKQ0KICAgICByZXR1cm47 DQpAQCAtMjEwLDcgKzIxMCw3IEBADQogICAgYWRkcmVzcyBvZiBhIFZBUklB QkxFX0FMSVNUIG1lbWJlci4gIEEgcmV0dXJuIHZhbHVlIG9mIE5VTEwgaW5k aWNhdGVzDQogICAgdGhhdCBubyB2YXJpYWJsZSBjb3VsZCBiZSByZWFkLiAq Lw0KIFZBUklBQkxFX0FMSVNUICoNCi1yZWFkX3ZhcmlhYmxlX25hbWUgKGNo YXIgKnByb21wdCwgV0lORE9XICp3aW5kb3cpDQorcmVhZF92YXJpYWJsZV9u YW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93KQ0KIHsN CiAgIHJlZ2lzdGVyIGludCBpOw0KICAgY2hhciAqbGluZTsNCmRpZmYgLXVy IHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vdmFyaWFibGVzLmggdGV4aW5m by00LjExLjkwL2luZm8vdmFyaWFibGVzLmgNCi0tLSB0ZXhpbmZvLTQuMTEu OTAub3JpZy9pbmZvL3ZhcmlhYmxlcy5oCTIwMDctMDgtMDcgMTA6MjQ6NDYu MDAwMDAwMDAwICswMjAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vdmFy aWFibGVzLmgJMjAwOC0wMi0yNSAxMjoxNDoyOS4wMDAwMDAwMDAgKzAxMDAN CkBAIC00MSw3ICs0MSw3IEBADQogLyogUmVhZCB0aGUgbmFtZSBvZiBhbiBJ bmZvIHZhcmlhYmxlIGluIHRoZSBlY2hvIGFyZWEgYW5kIHJldHVybiB0aGUN CiAgICBhZGRyZXNzIG9mIGEgVkFSSUFCTEVfQUxJU1QgbWVtYmVyLiAgQSBy ZXR1cm4gdmFsdWUgb2YgTlVMTCBpbmRpY2F0ZXMNCiAgICB0aGF0IG5vIHZh cmlhYmxlIGNvdWxkIGJlIHJlYWQuICovDQotZXh0ZXJuIFZBUklBQkxFX0FM SVNUICpyZWFkX3ZhcmlhYmxlX25hbWUgKGNoYXIgKnByb21wdCwgV0lORE9X ICp3aW5kb3cpOw0KK2V4dGVybiBWQVJJQUJMRV9BTElTVCAqcmVhZF92YXJp YWJsZV9uYW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93 KTsNCiANCiAvKiBNYWtlIGFuIGFycmF5IG9mIFJFRkVSRU5DRSB3aGljaCBh Y3R1YWxseSBjb250YWlucyB0aGUgbmFtZXMgb2YgdGhlDQogICAgdmFyaWFi bGVzIGF2YWlsYWJsZSBpbiBJbmZvLiAqLw0KZGlmZiAtdXIgdGV4aW5mby00 LjExLjkwLm9yaWcvaW5mby93aW5kb3cuYyB0ZXhpbmZvLTQuMTEuOTAvaW5m by93aW5kb3cuYw0KLS0tIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vd2lu ZG93LmMJMjAwOC0wMi0xOSAxNTo1ODoyOS4wMDAwMDAwMDAgKzAxMDANCisr KyB0ZXhpbmZvLTQuMTEuOTAvaW5mby93aW5kb3cuYwkyMDA4LTAyLTI1IDEx OjQxOjQxLjAwMDAwMDAwMCArMDEwMA0KQEAgLTEyNjksNyArMTI2OSw3IEBA DQogICAgcHJpbnRmICgpIGhhaXIgaXMgcHJlc2VudC4gIFRoZSBtZXNzYWdl IGFwcGVhcnMgaW1tZWRpYXRlbHkuICBJZiB0aGVyZSB3YXMNCiAgICBhbHJl YWR5IGEgbWVzc2FnZSBhcHBlYXJpbmcgaW4gdGhlIGVjaG8gYXJlYSwgaXQg aXMgcmVtb3ZlZC4gKi8NCiB2b2lkDQotd2luZG93X21lc3NhZ2VfaW5fZWNo b19hcmVhIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIp DQord2luZG93X21lc3NhZ2VfaW5fZWNob19hcmVhIChjb25zdCBjaGFyICpm b3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIpDQogew0KICAgZnJlZV9l Y2hvX2FyZWEgKCk7DQogICBlY2hvX2FyZWFfbm9kZSA9IGJ1aWxkX21lc3Nh Z2Vfbm9kZSAoZm9ybWF0LCBhcmcxLCBhcmcyKTsNCkBAIC0xMjg2LDcgKzEy ODYsNyBAQA0KIHN0YXRpYyBpbnQgb2xkX2VjaG9fYXJlYV9ub2Rlc19zbG90 cyA9IDA7DQogDQogdm9pZA0KLW1lc3NhZ2VfaW5fZWNob19hcmVhIChjaGFy ICpmb3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIpDQorbWVzc2FnZV9p bl9lY2hvX2FyZWEgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwg dm9pZCAqYXJnMikNCiB7DQogICBpZiAoZWNob19hcmVhX25vZGUpDQogICAg IHsNCkBAIC0xMzM2LDcgKzEzMzYsNyBAQA0KIC8qIEZvcm1hdCBNRVNTQUdF X0JVRkZFUiB3aXRoIHRoZSByZXN1bHRzIG9mIHByaW50aW5nIEZPUk1BVCB3 aXRoIEFSRzEgYW5kDQogICAgQVJHMi4gKi8NCiBzdGF0aWMgdm9pZA0KLWJ1 aWxkX21lc3NhZ2VfYnVmZmVyIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs IHZvaWQgKmFyZzIsIHZvaWQgKmFyZzMpDQorYnVpbGRfbWVzc2FnZV9idWZm ZXIgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn Miwgdm9pZCAqYXJnMykNCiB7DQogICByZWdpc3RlciBpbnQgaSwgbGVuOw0K ICAgdm9pZCAqYXJnc1szXTsNCkBAIC0xMzYwLDcgKzEzNjAsNyBAQA0KICAg ICAgIGVsc2UNCiAgICAgICAgIHsNCiAgICAgICAgICAgY2hhciBjOw0KLSAg ICAgICAgICBjaGFyICpmbXRfc3RhcnQgPSBmb3JtYXQgKyBpOw0KKyAgICAg ICAgICBjb25zdCBjaGFyICpmbXRfc3RhcnQgPSBmb3JtYXQgKyBpOw0KICAg ICAgICAgICBjaGFyICpmbXQ7DQogICAgICAgICAgIGludCBmbXRfbGVuLCBm b3JtYXR0ZWRfbGVuOw0KIAkgIGludCBwYXJhbWVkID0gMDsNCkBAIC0xNDgz LDcgKzE0ODMsNyBAQA0KIC8qIEJ1aWxkIGEgbmV3IG5vZGUgd2hpY2ggaGFz IEZPUk1BVCBwcmludGVkIHdpdGggQVJHMSBhbmQgQVJHMiBhcyB0aGUNCiAg ICBjb250ZW50cy4gKi8NCiBOT0RFICoNCi1idWlsZF9tZXNzYWdlX25vZGUg KGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJnMikNCitidWls ZF9tZXNzYWdlX25vZGUgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJn MSwgdm9pZCAqYXJnMikNCiB7DQogICBOT0RFICpub2RlOw0KIA0KQEAgLTE1 MjUsNyArMTUyNSw3IEBADQogDQogLyogUHJpbnQgRk9STUFUIHdpdGggQVJH MSwyIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWVzc2FnZSBidWZmZXIu ICovDQogdm9pZA0KLXByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoY2hhciAq Zm9ybWF0LCB2b2lkICphcmcxLCB2b2lkICphcmcyLCB2b2lkICphcmczKQ0K K3ByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoY29uc3QgY2hhciAqZm9ybWF0 LCB2b2lkICphcmcxLCB2b2lkICphcmcyLCB2b2lkICphcmczKQ0KIHsNCiAg IGJ1aWxkX21lc3NhZ2VfYnVmZmVyIChmb3JtYXQsIGFyZzEsIGFyZzIsIGFy ZzMpOw0KIH0NCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8v d2luZG93LmggdGV4aW5mby00LjExLjkwL2luZm8vd2luZG93LmgNCi0tLSB0 ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL3dpbmRvdy5oCTIwMDctMDctMDEg MjM6MjA6MzEuMDAwMDAwMDAwICswMjAwDQorKysgdGV4aW5mby00LjExLjkw L2luZm8vd2luZG93LmgJMjAwOC0wMi0yNSAxMTo0MTozMi4wMDAwMDAwMDAg KzAxMDANCkBAIC0xNjYsMTMgKzE2NiwxMyBAQA0KIA0KIC8qIEJ1aWxkIGEg bmV3IG5vZGUgd2hpY2ggaGFzIEZPUk1BVCBwcmludGVkIHdpdGggQVJHMSBh bmQgQVJHMiBhcyB0aGUNCiAgICBjb250ZW50cy4gKi8NCi1leHRlcm4gTk9E RSAqYnVpbGRfbWVzc2FnZV9ub2RlIChjaGFyICpmb3JtYXQsIHZvaWQgKmFy ZzEsIHZvaWQgKmFyZzIpOw0KK2V4dGVybiBOT0RFICpidWlsZF9tZXNzYWdl X25vZGUgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAq YXJnMik7DQogDQogLyogVXNlZnVsIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVk IGZyb20gb3V0c2lkZSBvZiB3aW5kb3cuYy4gKi8NCiBleHRlcm4gdm9pZCBp bml0aWFsaXplX21lc3NhZ2VfYnVmZmVyICh2b2lkKTsNCiANCiAvKiBQcmlu dCBGT1JNQVQgd2l0aCBBUkcxLDIgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVu dCBtZXNzYWdlIGJ1ZmZlci4gKi8NCi1leHRlcm4gdm9pZCBwcmludGZfdG9f bWVzc2FnZV9idWZmZXIgKGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9p ZCAqYXJnMiwNCitleHRlcm4gdm9pZCBwcmludGZfdG9fbWVzc2FnZV9idWZm ZXIgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn MiwNCiAgICAgdm9pZCAqYXJnMyk7DQogDQogLyogQ29udmVydCB0aGUgY29u dGVudHMgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRvIGEgbm9kZS4gKi8NCkBA IC0xODgsMTMgKzE4OCwxMyBAQA0KICAgIFRoZSBhcmd1bWVudHMgYXJlIHRy ZWF0ZWQgc2ltaWxhciB0byBwcmludGYgKCkgYXJndW1lbnRzLCBidXQgbm90 IGFsbCBvZg0KICAgIHByaW50ZiAoKSBoYWlyIGlzIHByZXNlbnQuICBUaGUg bWVzc2FnZSBhcHBlYXJzIGltbWVkaWF0ZWx5LiAgSWYgdGhlcmUgd2FzDQog ICAgYWxyZWFkeSBhIG1lc3NhZ2UgYXBwZWFyaW5nIGluIHRoZSBlY2hvIGFy ZWEsIGl0IGlzIHJlbW92ZWQuICovDQotZXh0ZXJuIHZvaWQgd2luZG93X21l c3NhZ2VfaW5fZWNob19hcmVhIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs IHZvaWQgKmFyZzIpOw0KK2V4dGVybiB2b2lkIHdpbmRvd19tZXNzYWdlX2lu X2VjaG9fYXJlYSAoY29uc3QgY2hhciAqZm9ybWF0LCB2b2lkICphcmcxLCB2 b2lkICphcmcyKTsNCiANCiAvKiBQbGFjZSBhIHRlbXBvcmFyeSBtZXNzYWdl IGluIHRoZSBlY2hvIGFyZWEgYnVpbHQgZnJvbSBGT1JNQVQsIEFSRzENCiAg ICBhbmQgQVJHMi4gIFRoZSBtZXNzYWdlIGFwcGVhcnMgaW1tZWRpYXRlbHks IGJ1dCBkb2VzIG5vdCBkZXN0cm95DQogICAgYW55IGV4aXN0aW5nIG1lc3Nh Z2UuICBBIGZ1dHVyZSBjYWxsIHRvIHVubWVzc2FnZV9pbl9lY2hvX2FyZWEg KCkNCiAgICByZXN0b3JlcyB0aGUgb2xkIGNvbnRlbnRzLiAqLw0KLWV4dGVy biB2b2lkIG1lc3NhZ2VfaW5fZWNob19hcmVhIChjaGFyICpmb3JtYXQsIHZv aWQgKmFyZzEsIHZvaWQgKmFyZzIpOw0KK2V4dGVybiB2b2lkIG1lc3NhZ2Vf aW5fZWNob19hcmVhIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs IHZvaWQgKmFyZzIpOw0KIGV4dGVybiB2b2lkIHVubWVzc2FnZV9pbl9lY2hv X2FyZWEgKHZvaWQpOw0KIA0KIC8qIENsZWFyIHRoZSBlY2hvIGFyZWEsIHJl bW92aW5nIGFueSBtZXNzYWdlIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50Lg0K --1803957763-510385146-1203952531=:15997 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-05-install-info-help2man Content-Transfer-Encoding: BASE64 Content-ID: <[email protected]> Content-Description: Content-Disposition: attachment; filename=patch-05-install-info-help2man Q2hhbmdlTG9nOg0KDQoyMDA4LTAyLTI1ICBQZXRlciBCcmVpdGVubG9obmVy IDxwZWJAbXBwbXUubXBnLmRlPg0KDQoJKiBpbnN0YWxsLWluZm8vaW5zdGFs bC1pbmZvLmM6IHNsaWdodGx5IHJlZm9ybWF0IHVzYWdlIG1lc3NhZ2UNCgko aGVscDJtYW4gcmVxdWlyZXMgdHdvIHNwYWNlcykuDQoNCgkqIGRvYy9pbnN0 YWxsLWluZm8uMTogcmVnZW5lcmF0ZWQuDQoNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3Jp Zy9kb2MvaW5zdGFsbC1pbmZvLjEgdGV4aW5mby00LjExLjkwL2RvYy9pbnN0 YWxsLWluZm8uMQ0KLS0tIHRleGluZm8tNC4xMS45MC5vcmlnL2RvYy9pbnN0 YWxsLWluZm8uMQkyMDA4LTAyLTIzIDAwOjM1OjE0LjAwMDAwMDAwMCArMDEw MA0KKysrIHRleGluZm8tNC4xMS45MC9kb2MvaW5zdGFsbC1pbmZvLjEJMjAw OC0wMi0yNSAxNTo0MzoyNC4wMDAwMDAwMDAgKzAxMDANCkBAIC0xNiw3ICsx Niw4IEBADQogZGVsZXRlIGV4aXN0aW5nIGVudHJpZXMgZm9yIElORk9cLUZJ TEUgZnJvbSBESVJcLUZJTEU7DQogZG9uJ3QgaW5zZXJ0IGFueSBuZXcgZW50 cmllcy4NCiAuVFANCi1cZkJcLVwtZGVzY3JpcHRpb25cZlI9XGZJVEVYVFxm UiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGVudHJ5IGlzIFRFWFQ7IHVzZWQg d2l0aA0KK1xmQlwtXC1kZXNjcmlwdGlvblxmUj1cZklURVhUXGZSDQordGhl IGRlc2NyaXB0aW9uIG9mIHRoZSBlbnRyeSBpcyBURVhUOyB1c2VkIHdpdGgN CiB0aGUgXGZCXC1cLW5hbWVcZlIgb3B0aW9uIHRvIGJlY29tZSBzeW5vbnlt b3VzIHdpdGggdGhlDQogXGZCXC1cLWVudHJ5XGZSIG9wdGlvbi4NCiAuVFAN CmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luc3RhbGwtaW5mby9p bnN0YWxsLWluZm8uYyB0ZXhpbmZvLTQuMTEuOTAvaW5zdGFsbC1pbmZvL2lu c3RhbGwtaW5mby5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5zdGFs bC1pbmZvL2luc3RhbGwtaW5mby5jCTIwMDgtMDItMjIgMjA6MTg6MjUuMDAw MDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luc3RhbGwtaW5m by9pbnN0YWxsLWluZm8uYwkyMDA4LTAyLTI1IDE1OjQzOjE0LjAwMDAwMDAw MCArMDEwMA0KQEAgLTUxMCw3ICs1MTAsNyBAQA0KICAtLWRlYnVnICAgICAg ICAgICAgcmVwb3J0IHdoYXQgaXMgYmVpbmcgZG9uZS5cblwNCiAgLS1kZWxl dGUgICAgICAgICAgIGRlbGV0ZSBleGlzdGluZyBlbnRyaWVzIGZvciBJTkZP LUZJTEUgZnJvbSBESVItRklMRTtcblwNCiAgICAgICAgICAgICAgICAgICAg ICBkb24ndCBpbnNlcnQgYW55IG5ldyBlbnRyaWVzLlxuXA0KLSAtLWRlc2Ny aXB0aW9uPVRFWFQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBlbnRyeSBpcyBU RVhUOyB1c2VkIHdpdGhcblwNCisgLS1kZXNjcmlwdGlvbj1URVhUICB0aGUg ZGVzY3JpcHRpb24gb2YgdGhlIGVudHJ5IGlzIFRFWFQ7IHVzZWQgd2l0aFxu XA0KICAgICAgICAgICAgICAgICAgICAgIHRoZSAtLW5hbWUgb3B0aW9uIHRv IGJlY29tZSBzeW5vbnltb3VzIHdpdGggdGhlXG5cDQogCQkgICAgIC0tZW50 cnkgb3B0aW9uLlxuXA0KICAtLWRpci1maWxlPU5BTUUgICAgc3BlY2lmeSBm aWxlIG5hbWUgb2YgSW5mbyBkaXJlY3RvcnkgZmlsZTtcblwNCg== --1803957763-510385146-1203952531=:15997--