From kfm-devel Fri Oct 26 08:39:52 2001 From: Martijn Klingens Date: Fri, 26 Oct 2001 08:39:52 +0000 To: kfm-devel Subject: Re: Please Review: CSS Media X-MARC-Message: https://marc.info/?l=kfm-devel&m=100408550128515 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_GE1T8JL3LTBH0D04C102" --------------Boundary-00=_GE1T8JL3LTBH0D04C102 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit On Friday 26 October 2001 09:03, Simon Hausmann wrote: > On Thu, Oct 25, 2001 at 02:42:36PM +0200, Martijn Klingens wrote: > > Ok, this is hopefully the definitive patch to add CSS2 media support to > > A micro nitpick from me ;-) > > QString KHTMLView::mediaType() and bool MediaListImpl::contains( > const QString & ) should probably be const :-) Yeah... Somehow I automatically add const in front of function arguments, but I always forget to make the whole method const when applicable, not only in this case :( Is this better? :-) Martijn --------------Boundary-00=_GE1T8JL3LTBH0D04C102 Content-Type: text/x-diff; charset="iso-8859-1"; name="media2.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="media2.diff" SW5kZXg6IGtodG1sdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZWxp YnMva2h0bWwva2h0bWx2aWV3LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MTkKZGlmZiAt dSAtMyAtcCAtcjEuNDE5IGtodG1sdmlldy5jcHAKLS0tIGtodG1sdmlldy5jcHAJMjAwMS8xMC8y MiAyMDoxMzozMwkxLjQxOQorKysga2h0bWx2aWV3LmNwcAkyMDAxLzEwLzI2IDA3OjQ5OjAzCkBA IC0xNzQsNiArMTc0LDggQEAgdm9pZCBLSFRNTFRvb2xUaXA6Om1heWJlVGlwKGNvbnN0IFFQb2lu dAogS0hUTUxWaWV3OjpLSFRNTFZpZXcoIEtIVE1MUGFydCAqcGFydCwgUVdpZGdldCAqcGFyZW50 LCBjb25zdCBjaGFyICpuYW1lKQogICAgIDogUVNjcm9sbFZpZXcoIHBhcmVudCwgbmFtZSwgV1Jl c2l6ZU5vRXJhc2UgfCBXUmVwYWludE5vRXJhc2UgKQogeworICAgIG1fbWVkaXVtID0gInNjcmVl biI7CisKICAgICBtX3BhcnQgPSBwYXJ0OwogICAgIGQgPSBuZXcgS0hUTUxWaWV3UHJpdmF0ZTsK ICAgICBRU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1vZGUoZC0+dm1vZGUpOwpAQCAtODY3LDYg Kzg2OSwxNiBAQCBib29sIEtIVE1MVmlldzo6Z290b0xpbmtJbnRlcm5hbChib29sIGZvCiAgICAg cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgS0hUTUxWaWV3OjpzZXRNZWRpYVR5cGUoIGNvbnN0IFFT dHJpbmcgJm1lZGl1bSApCit7CisgICAgbV9tZWRpdW0gPSBtZWRpdW07Cit9CisKK1FTdHJpbmcg S0hUTUxWaWV3OjptZWRpYVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGl1bTsKK30K Kwogdm9pZCBLSFRNTFZpZXc6OnByaW50KCkKIHsKICAgICBpZighbV9wYXJ0LT54bWxEb2NJbXBs KCkpIHJldHVybjsKQEAgLTg4NSw5ICs4OTcsMTEgQEAgdm9pZCBLSFRNTFZpZXc6OnByaW50KCkK IAogICAgICAgICBRUGFpbnRlciAqcCA9IG5ldyBRUGFpbnRlcjsKICAgICAgICAgcC0+YmVnaW4o IHByaW50ZXIgKTsKLQlraHRtbDo6c2V0UHJpbnRQYWludGVyKCBwICk7CisgICAgICAgIGtodG1s OjpzZXRQcmludFBhaW50ZXIoIHAgKTsKIAogICAgICAgICBtX3BhcnQtPnhtbERvY0ltcGwoKS0+ c2V0UGFpbnREZXZpY2UoIHByaW50ZXIgKTsKKyAgICAgICAgUVN0cmluZyBvbGRNZWRpYVR5cGUg PSBtZWRpYVR5cGUoKTsKKyAgICAgICAgc2V0TWVkaWFUeXBlKCAicHJpbnQiICk7CiAKICAgICAg ICAgUVBhaW50RGV2aWNlTWV0cmljcyBtZXRyaWNzKCBwcmludGVyICk7CiAKQEAgLTk1NCw3ICs5 NjgsOCBAQCB2b2lkIEtIVE1MVmlldzo6cHJpbnQoKQogCiAgICAgICAgIC8vIGFuZCBub3cgcmVz ZXQgdGhlIGxheW91dCB0byB0aGUgdXN1YWwgb25lLi4uCiAgICAgICAgIHJvb3QtPnNldFByaW50 aW5nTW9kZShmYWxzZSk7Ci0Ja2h0bWw6OnNldFByaW50UGFpbnRlciggMCApOworICAgICAgICBr aHRtbDo6c2V0UHJpbnRQYWludGVyKCAwICk7CisgICAgICAgIHNldE1lZGlhVHlwZSggb2xkTWVk aWFUeXBlICk7CiAgICAgICAgIG1fcGFydC0+eG1sRG9jSW1wbCgpLT5zZXRQYWludERldmljZSgg dGhpcyApOwogICAgICAgICBtX3BhcnQtPnNldEZvbnRTaXplcyhvbGRTaXplcyk7CiAgICAgICAg IG1fcGFydC0+eG1sRG9jSW1wbCgpLT5hcHBseUNoYW5nZXMoKTsKSW5kZXg6IGtodG1sdmlldy5o Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJzL2todG1sL2todG1sdmlldy5o LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0NQpkaWZmIC11IC0zIC1wIC1yMS4xNDUga2h0bWx2 aWV3LmgKLS0tIGtodG1sdmlldy5oCTIwMDEvMTAvMDggMDE6MTM6NTMJMS4xNDUKKysrIGtodG1s dmlldy5oCTIwMDEvMTAvMjYgMDc6NDk6MDMKQEAgLTE1MSw2ICsxNTEsMTkgQEAgcHVibGljOgog CiAgICAgdm9pZCBsYXlvdXQoYm9vbCBmb3JjZSA9IGZhbHNlKTsKIAorICAgIC8qKgorICAgICAq IEdldC9zZXQgdGhlIENTUyBNZWRpYSBUeXBlLgorICAgICAqCisgICAgICogTWVkaWEgdHlwZSBp cyBzZXQgdG8gInNjcmVlbiIgZm9yIG9uLXNjcmVlbiByZW5kZXJpbmcgYW5kICJwcmludCIKKyAg ICAgKiBkdXJpbmcgcHJpbnRpbmcuIE90aGVyIG1lZGlhIHR5cGVzIGxhY2sgdGhlIHByb3BlciBz dXBwb3J0IGluIHRoZQorICAgICAqIHJlbmRlcmVyIGFuZCBhcmUgbm90IGFjdGl2YXRlZC4gVGhl IERPTSB0cmVlIGFuZCB0aGUgcGFyc2VyIGl0c2VsZiwKKyAgICAgKiBob3dldmVyLCBwcm9wZXJs eSBoYW5kbGUgb3RoZXIgbWVkaWEgdHlwZXMuIFRvIG1ha2UgdGhlbSBhY3R1YWxseSB3b3JrCisg ICAgICogeW91IG9ubHkgbmVlZCB0byBlbmFibGUgdGhlIG1lZGlhIHR5cGUgaW4gdGhlIHZpZXcg YW5kIGlmIG5lY2Vzc2FyeQorICAgICAqIGFkZCB0aGUgbWVkaWEgdHlwZSBkZXBlbmRlbnQgY2hh bmdlcyB0byB0aGUgcmVuZGVyZXIuCisgICAgICovCisgICAgdm9pZCBzZXRNZWRpYVR5cGUoIGNv bnN0IFFTdHJpbmcgJm1lZGl1bSApOworICAgIFFTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7CisK IHNpZ25hbHM6CiAgICAgdm9pZCBjbGVhcmVkKCk7CiAKQEAgLTIyMyw2ICsyMzYsOCBAQCBwcml2 YXRlOgogCiAgICAgS0hUTUxQYXJ0ICptX3BhcnQ7CiAgICAgS0hUTUxWaWV3UHJpdmF0ZSAqZDsK KworICAgIFFTdHJpbmcgbV9tZWRpdW07ICAgLy8gbWVkaWEgdHlwZQogfTsKIAogI2VuZGlmCklu ZGV4OiBjc3MvY3NzX3J1bGVpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUv a2RlbGlicy9raHRtbC9jc3MvY3NzX3J1bGVpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4yMwpkaWZmIC11IC0zIC1wIC1yMS4yMyBjc3NfcnVsZWltcGwuY3BwCi0tLSBjc3MvY3NzX3J1 bGVpbXBsLmNwcAkyMDAxLzEwLzIyIDE5OjI5OjQ4CTEuMjMKKysrIGNzcy9jc3NfcnVsZWltcGwu Y3BwCTIwMDEvMTAvMjYgMDc6NDk6MDMKQEAgLTEwOCwxMiArMTA4LDE2IEBAIENTU1N0eWxlRGVj bGFyYXRpb25JbXBsICpDU1NGb250RmFjZVJ1bGUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot Q1NTSW1wb3J0UnVsZUltcGw6OkNTU0ltcG9ydFJ1bGVJbXBsKFN0eWxlQmFzZUltcGwgKnBhcmVu dCwgY29uc3QgRE9NOjpET01TdHJpbmcgJmhyZWYsCi0JCQkJICAgICBNZWRpYUxpc3RJbXBsICpt ZWRpYSkKK0NTU0ltcG9ydFJ1bGVJbXBsOjpDU1NJbXBvcnRSdWxlSW1wbCggU3R5bGVCYXNlSW1w bCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBE T006OkRPTVN0cmluZyAmaHJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgRE9NOjpET01TdHJpbmcgJm1lZGlhICkKICAgICA6IENTU1J1bGVJbXBsKHBhcmVu dCkKIHsKICAgICBtX3R5cGUgPSBDU1NSdWxlOjpJTVBPUlRfUlVMRTsKLSAgICBtX2xzdE1lZGlh ID0gbWVkaWE7CisKKyAgICBtX2xzdE1lZGlhID0gbmV3IE1lZGlhTGlzdEltcGwoIHRoaXMsIG1l ZGlhICk7CisgICAgbV9sc3RNZWRpYS0+cmVmKCk7CisgICAgCiAgICAgbV9zdHJIcmVmID0gaHJl ZjsKICAgICBtX3N0eWxlU2hlZXQgPSAwOwogCkBAIC0xODQsMjEgKzE4OCw0MiBAQCBib29sIENT U0ltcG9ydFJ1bGVJbXBsOjppc0xvYWRpbmcoKQogCiAKIENTU01lZGlhUnVsZUltcGw6OkNTU01l ZGlhUnVsZUltcGwoU3R5bGVCYXNlSW1wbCAqcGFyZW50KQotICAgIDogQ1NTUnVsZUltcGwocGFy ZW50KQorICAgIDogICBDU1NSdWxlSW1wbCggcGFyZW50ICkKK3sKKyAgICBtX3R5cGUgPSBDU1NS dWxlOjpNRURJQV9SVUxFOworICAgIG1fbHN0TWVkaWEgPSAwOworICAgIG1fbHN0Q1NTUnVsZXMg PSBuZXcgQ1NTUnVsZUxpc3RJbXBsKCk7CisgICAgbV9sc3RDU1NSdWxlcy0+cmVmKCk7Cit9CisK K0NTU01lZGlhUnVsZUltcGw6OkNTU01lZGlhUnVsZUltcGwoIFN0eWxlQmFzZUltcGwgKnBhcmVu dCwgY29uc3QgUUNoYXIgKiZjdXJQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgUUNoYXIgKmVuZFAsIGNvbnN0IERPTTo6RE9NU3RyaW5nICZtZWRpYSApCis6ICAgQ1NTUnVs ZUltcGwoIHBhcmVudCApCiB7CiAgICAgbV90eXBlID0gQ1NTUnVsZTo6TUVESUFfUlVMRTsKLSAg ICBtX2xzdE1lZGlhID0gbmV3IE1lZGlhTGlzdEltcGwoIHRoaXMgKTsKKyAgICBtX2xzdE1lZGlh ID0gbmV3IE1lZGlhTGlzdEltcGwoIHRoaXMsIG1lZGlhICk7CiAgICAgbV9sc3RNZWRpYS0+cmVm KCk7CiAgICAgbV9sc3RDU1NSdWxlcyA9IG5ldyBDU1NSdWxlTGlzdEltcGwoKTsKICAgICBtX2xz dENTU1J1bGVzLT5yZWYoKTsKKworICAgIC8vIFBhcnNlIENTUyBkYXRhCisgICAgd2hpbGUoIGN1 clAgPCBlbmRQICkKKyAgICB7ICAgCisgICAgICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICJTdHls ZSBydWxlOiAnIiA8PCBRU3RyaW5nKCBjdXJQLCBlbmRQIC0gY3VyUCApCisgICAgICAgIC8vICAg ICAgICAgICAgICAgIDw8ICInIiA8PCBlbmRsOworICAgICAgICBDU1NSdWxlSW1wbCAqcnVsZSA9 IHBhcnNlU3R5bGVSdWxlKCBjdXJQLCBlbmRQICk7CisgICAgICAgIHJ1bGUtPnJlZigpOworICAg ICAgICBhcHBlbmRSdWxlKCBydWxlICk7CisgICAgICAgIHdoaWxlKCBjdXJQIDwgZW5kUCAmJiAq Y3VyUCA9PSBRQ2hhciggJyAnICkgKQorICAgICAgICAgICAgY3VyUCsrOworICAgIH0KIH0KIAog Q1NTTWVkaWFSdWxlSW1wbDo6fkNTU01lZGlhUnVsZUltcGwoKQogewogICAgIGlmKCBtX2xzdE1l ZGlhICkKICAgICAgICAgbV9sc3RNZWRpYS0+ZGVyZWYoKTsKLSAgICBpZiggbV9sc3RDU1NSdWxl cyApCi0gICAgICAgIG1fbHN0Q1NTUnVsZXMtPmRlcmVmKCk7CisgICAgbV9sc3RDU1NSdWxlcy0+ ZGVyZWYoKTsKIH0KIAogTWVkaWFMaXN0SW1wbCAqQ1NTTWVkaWFSdWxlSW1wbDo6bWVkaWEoKSBj b25zdApAQCAtMjExLDYgKzIzNiwxNCBAQCBDU1NSdWxlTGlzdEltcGwgKkNTU01lZGlhUnVsZUlt cGw6OmNzc1J1CiAgICAgcmV0dXJuIG1fbHN0Q1NTUnVsZXM7CiB9CiAKK3Vuc2lnbmVkIGxvbmcg Q1NTTWVkaWFSdWxlSW1wbDo6YXBwZW5kUnVsZSggQ1NTUnVsZUltcGwgKnJ1bGUgKQoreworICAg IGlmKCBydWxlICkKKyAgICAgICAgcmV0dXJuIG1fbHN0Q1NTUnVsZXMtPmluc2VydFJ1bGUoIHJ1 bGUsIG1fbHN0Q1NTUnVsZXMtPmxlbmd0aCgpICk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4g MDsKK30KKwogdW5zaWduZWQgbG9uZyBDU1NNZWRpYVJ1bGVJbXBsOjppbnNlcnRSdWxlKCBjb25z dCBET01TdHJpbmcgJnJ1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgaW5kZXggKQogewpAQCAtMjE4LDEyICsyNTEsOSBAQCB1bnNp Z25lZCBsb25nIENTU01lZGlhUnVsZUltcGw6Omluc2VydFJ1CiAgICAgQ1NTUnVsZUltcGwgKm5l d1J1bGUgPSBwYXJzZVJ1bGUoIGN1clAsIGN1clAgKyBydWxlLmxlbmd0aCgpICk7CiAKICAgICBp ZiggbmV3UnVsZSApCi0gICAgewotICAgICAgICBuZXdSdWxlLT5yZWYoKTsKICAgICAgICAgcmV0 dXJuIG1fbHN0Q1NTUnVsZXMtPmluc2VydFJ1bGUoIG5ld1J1bGUsIGluZGV4ICk7Ci0gICAgfQot ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBD U1NNZWRpYVJ1bGVJbXBsOjpkZWxldGVSdWxlKCB1bnNpZ25lZCBsb25nIGluZGV4ICkKQEAgLTIz MSw2ICsyNjEsMTMgQEAgdm9pZCBDU1NNZWRpYVJ1bGVJbXBsOjpkZWxldGVSdWxlKCB1bnNpZwog ICAgIG1fbHN0Q1NTUnVsZXMtPmRlbGV0ZVJ1bGUoIGluZGV4ICk7CiB9CiAKK0NTU1J1bGVMaXN0 SW1wbDo6fkNTU1J1bGVMaXN0SW1wbCgpCit7CisgICAgQ1NTUnVsZUltcGwqIHJ1bGU7CisgICAg d2hpbGUgKCAoIHJ1bGUgPSBtX2xzdENTU1J1bGVzLnRha2UoIDAgKSApICkKKyAgICAgICAgcnVs ZS0+ZGVyZWYoKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENTU1BhZ2VSdWxlSW1w bDo6Q1NTUGFnZVJ1bGVJbXBsKFN0eWxlQmFzZUltcGwgKnBhcmVudCkKQEAgLTM1MywyMiArMzkw LDIzIEBAIENTU1J1bGVJbXBsICpDU1NSdWxlTGlzdEltcGw6Oml0ZW0gKCB1bnMKIAogdm9pZCBD U1NSdWxlTGlzdEltcGw6OmRlbGV0ZVJ1bGUgKCB1bnNpZ25lZCBsb25nIGluZGV4ICkKIHsKLSAg ICBDU1NSdWxlSW1wbCAqcnVsZSA9IG1fbHN0Q1NTUnVsZXMuYXQoIGluZGV4ICk7CisgICAgQ1NT UnVsZUltcGwgKnJ1bGUgPSBtX2xzdENTU1J1bGVzLnRha2UoIGluZGV4ICk7CiAgICAgaWYoIHJ1 bGUgKQotICAgIHsKLSAgICAgICAgbV9sc3RDU1NSdWxlcy5yZW1vdmUoIGluZGV4ICk7CiAgICAg ICAgIHJ1bGUtPmRlcmVmKCk7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgOyAvLyAjIyMgVGhy b3cgSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uIGhlcmUgKFRPRE8pCiB9CiAKIHVuc2lnbmVkIGxv bmcgQ1NTUnVsZUxpc3RJbXBsOjppbnNlcnRSdWxlKCBDU1NSdWxlSW1wbCAqcnVsZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGluZGV4 ICkKIHsKLSAgICBpZiggbV9sc3RDU1NSdWxlcy5pbnNlcnQoIGluZGV4LCBydWxlICkgKQorICAg IGlmKCBydWxlICYmIG1fbHN0Q1NTUnVsZXMuaW5zZXJ0KCBpbmRleCwgcnVsZSApICkKKyAgICB7 CisgICAgICAgIHJ1bGUtPnJlZigpOwogICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgZWxzZQot ICAgICAgICBydWxlLT5kZXJlZigpOyAgICAvLyBpbnNlcnRpb24gZmFpbGVkCi0KKyAgICB9Cisg ICAgICAgCisgICAgLy8gIyMjIFNob3VsZCB0aHJvdyBJTkRFWF9TSVpFX0VSUiBleGNlcHRpb24g aW5zdGVhZCEgKFRPRE8pCiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IGNzcy9jc3NfcnVsZWlt cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9rZGUva2RlbGlicy9raHRtbC9jc3MvY3Nz X3J1bGVpbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMKZGlmZiAtdSAtMyAtcCAtcjEu MTMgY3NzX3J1bGVpbXBsLmgKLS0tIGNzcy9jc3NfcnVsZWltcGwuaAkyMDAxLzEwLzA3IDEzOjEy OjE5CTEuMTMKKysrIGNzcy9jc3NfcnVsZWltcGwuaAkyMDAxLzEwLzI2IDA3OjQ5OjAzCkBAIC05 OSw3ICs5OSw4IEBAIHByb3RlY3RlZDoKIGNsYXNzIENTU0ltcG9ydFJ1bGVJbXBsIDogcHVibGlj IGtodG1sOjpDYWNoZWRPYmplY3RDbGllbnQsIHB1YmxpYyBDU1NSdWxlSW1wbAogewogcHVibGlj OgotICAgIENTU0ltcG9ydFJ1bGVJbXBsKFN0eWxlQmFzZUltcGwgKnBhcmVudCwgY29uc3QgRE9N OjpET01TdHJpbmcgJmhyZWYsIE1lZGlhTGlzdEltcGwgKm1lZGlhID0gMCk7CisgICAgQ1NTSW1w b3J0UnVsZUltcGwoIFN0eWxlQmFzZUltcGwgKnBhcmVudCwgY29uc3QgRE9NOjpET01TdHJpbmcg JmhyZWYsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTTo6RE9NU3RyaW5nICZtZWRp YSApOwogCiAgICAgdmlydHVhbCB+Q1NTSW1wb3J0UnVsZUltcGwoKTsKIApAQCAtMTI4LDcgKzEy OSw5IEBAIGNsYXNzIENTU1J1bGVMaXN0OwogY2xhc3MgQ1NTTWVkaWFSdWxlSW1wbCA6IHB1Ymxp YyBDU1NSdWxlSW1wbAogewogcHVibGljOgotICAgIENTU01lZGlhUnVsZUltcGwoU3R5bGVCYXNl SW1wbCAqcGFyZW50KTsKKyAgICBDU1NNZWRpYVJ1bGVJbXBsKCBTdHlsZUJhc2VJbXBsICpwYXJl bnQgKTsKKyAgICBDU1NNZWRpYVJ1bGVJbXBsKCBTdHlsZUJhc2VJbXBsICpwYXJlbnQsIGNvbnN0 IFFDaGFyIComY3VyUCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ2hhciAqIGVuZFAs IGNvbnN0IERPTTo6RE9NU3RyaW5nICZtZWRpYSApOwogCiAgICAgdmlydHVhbCB+Q1NTTWVkaWFS dWxlSW1wbCgpOwogCkBAIC0xNDAsNyArMTQzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv b2wgaXNNZWRpYVJ1bGUoKSB7IHJldHVybiB0cnVlOyB9CiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFM aXN0SW1wbCAqbV9sc3RNZWRpYTsKLQlDU1NSdWxlTGlzdEltcGwgKm1fbHN0Q1NTUnVsZXM7Cisg ICAgQ1NTUnVsZUxpc3RJbXBsICptX2xzdENTU1J1bGVzOworCisgICAgLyogTm90IHBhcnQgb2Yg dGhlIERPTSAqLworICAgIHVuc2lnbmVkIGxvbmcgYXBwZW5kUnVsZSggQ1NTUnVsZUltcGwgKnJ1 bGUgKTsKIH07CiAKIApAQCAtMjAxLDMwICsyMDcsMjUgQEAgcHVibGljOgogCiAgICAgfkNTU1Vu a25vd25SdWxlSW1wbCgpOwogCi0gICAgIHZpcnR1YWwgYm9vbCBpc1Vua25vd25SdWxlKCkgeyBy ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Vua25vd25SdWxlKCkgeyByZXR1cm4g dHJ1ZTsgfQogfTsKIAorCiBjbGFzcyBDU1NSdWxlTGlzdEltcGwgOiBwdWJsaWMgRG9tU2hhcmVk CiB7CiBwdWJsaWM6CiAgICAgQ1NTUnVsZUxpc3RJbXBsKCk7CisgICAgfkNTU1J1bGVMaXN0SW1w bCgpOwogCiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKICAgICBDU1NSdWxlSW1w bCAqaXRlbSAoIHVuc2lnbmVkIGxvbmcgaW5kZXggKTsKICAgIAotICAgIC8qKgotICAgICAqIElu dGVybmFsIEFQSSwgX05PVF8gdG8gYmUgZXhwb3NlZCBvdXRzaWRlISAoVXNlZCBieSBDU1NNZWRp YVJ1bGVJbXBsKQotICAgICAqLworICAgIC8qIG5vdCBwYXJ0IG9mIHRoZSBET00gKi8KICAgICB1 bnNpZ25lZCBsb25nIGluc2VydFJ1bGUgKCBDU1NSdWxlSW1wbCAqcnVsZSwgdW5zaWduZWQgbG9u ZyBpbmRleCApOwogICAgIHZvaWQgZGVsZXRlUnVsZSAoIHVuc2lnbmVkIGxvbmcgaW5kZXggKTsK ICAgICAKIHByb3RlY3RlZDoKLSNpZiBRVF9WRVJTSU9OIDwgMzAwCiAgICAgUUxpc3Q8Q1NTUnVs ZUltcGw+IG1fbHN0Q1NTUnVsZXM7Ci0jZWxzZQotICAgIFFQdHJMaXN0PENTU1J1bGVJbXBsPiBt X2xzdENTU1J1bGVzOwotI2VuZGlmCi0KIH07CiAKIH07IC8vIG5hbWVzcGFjZQpJbmRleDogY3Nz L2Nzc19zdHlsZXNoZWV0aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tk ZWxpYnMva2h0bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMzIKZGlmZiAtdSAtMyAtcCAtcjEuMzIgY3NzX3N0eWxlc2hlZXRpbXBsLmNwcAotLS0g Y3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5jcHAJMjAwMS8wOS8yNCAxNTozMTo1OAkxLjMyCisrKyBj c3MvY3NzX3N0eWxlc2hlZXRpbXBsLmNwcAkyMDAxLzEwLzI2IDA3OjQ5OjAzCkBAIC0xMTksNiAr MTE5LDE1IEBAIE1lZGlhTGlzdEltcGwgKlN0eWxlU2hlZXRJbXBsOjptZWRpYSgpIGMKICAgICBy ZXR1cm4gbV9tZWRpYTsKIH0KIAordm9pZCBTdHlsZVNoZWV0SW1wbDo6c2V0TWVkaWEoIE1lZGlh TGlzdEltcGwgKm1lZGlhICkKK3sKKyAgICBpZiggbV9tZWRpYSApCisgICAgICAgIG1fbWVkaWEt PmRlcmVmKCk7CisgICAgbV9tZWRpYSA9IG1lZGlhOworICAgIGlmKCBtX21lZGlhICkKKyAgICAg ICAgbV9tZWRpYS0+cmVmKCk7ICAgIAorfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKQEAgLTM2 MiwxNSArMzcxLDM0IEBAIE1lZGlhTGlzdEltcGw6Ok1lZGlhTGlzdEltcGwoQ1NTU3R5bGVTaGUK IHsKIH0KIAorTWVkaWFMaXN0SW1wbDo6TWVkaWFMaXN0SW1wbCggQ1NTU3R5bGVTaGVldEltcGwg KnBhcmVudFNoZWV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE9NU3Ry aW5nICZtZWRpYSApCisgICAgOiBTdHlsZUJhc2VJbXBsKCBwYXJlbnRTaGVldCApCit7CisgICAg c2V0TWVkaWFUZXh0KCBtZWRpYSApOworfQorCiBNZWRpYUxpc3RJbXBsOjpNZWRpYUxpc3RJbXBs KENTU1J1bGVJbXBsICpwYXJlbnRSdWxlKQogICAgIDogU3R5bGVCYXNlSW1wbChwYXJlbnRSdWxl KQogewogfQogCitNZWRpYUxpc3RJbXBsOjpNZWRpYUxpc3RJbXBsKCBDU1NSdWxlSW1wbCAqcGFy ZW50UnVsZSwgY29uc3QgRE9NU3RyaW5nICZtZWRpYSApCisgICAgOiBTdHlsZUJhc2VJbXBsKHBh cmVudFJ1bGUpCit7CisgICAgc2V0TWVkaWFUZXh0KCBtZWRpYSApOworfQorCiBNZWRpYUxpc3RJ bXBsOjp+TWVkaWFMaXN0SW1wbCgpCiB7CiB9CiAKK2Jvb2wgTWVkaWFMaXN0SW1wbDo6Y29udGFp bnMoIGNvbnN0IERPTVN0cmluZyAmbWVkaXVtICkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sc3RN ZWRpYS5jb3VudCgpID09IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucyggbWVkaXVtICkgfHwKKyAg ICAgICAgICAgIG1fbHN0TWVkaWEuY29udGFpbnMoICJhbGwiICk7Cit9CisKIENTU1N0eWxlU2hl ZXRJbXBsICpNZWRpYUxpc3RJbXBsOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKIHsKICAgICBp ZiggbV9wYXJlbnQtPmlzQ1NTU3R5bGVTaGVldCgpICkgcmV0dXJuIHN0YXRpY19jYXN0PENTU1N0 eWxlU2hlZXRJbXBsICo+KG1fcGFyZW50KTsKQEAgLTM4OCw3ICs0MTYsNyBAQCB1bnNpZ25lZCBs b25nIE1lZGlhTGlzdEltcGw6Omxlbmd0aCgpIGNvCiAgICAgcmV0dXJuIG1fbHN0TWVkaWEuY291 bnQoKTsKIH0KIAotRE9NU3RyaW5nIE1lZGlhTGlzdEltcGw6Oml0ZW0oIHVuc2lnbmVkIGxvbmcg aW5kZXggKQorRE9NU3RyaW5nIE1lZGlhTGlzdEltcGw6Oml0ZW0oIHVuc2lnbmVkIGxvbmcgaW5k ZXggKSBjb25zdAogewogICAgIHJldHVybiBtX2xzdE1lZGlhW2luZGV4XTsKIH0KQEAgLTQyNCw1 ICs0NTIsOSBAQCB2b2lkIE1lZGlhTGlzdEltcGw6OnNldE1lZGlhVGV4dChjb25zdCBECiAgICAg UVN0cmluZyB2YWwgPSB2YWx1ZS5zdHJpbmcoKTsKICAgICBRU3RyaW5nTGlzdCBsaXN0ID0gUVN0 cmluZ0xpc3Q6OnNwbGl0KCAnLCcsIHZhbHVlLnN0cmluZygpICk7CiAgICAgZm9yICggUVN0cmlu Z0xpc3Q6Okl0ZXJhdG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0 ICkKLSAgICAgICAgbV9sc3RNZWRpYS5hcHBlbmQoIERPTVN0cmluZyggKCppdCkuc3RyaXBXaGl0 ZVNwYWNlKCkgKSApOworICAgIHsKKyAgICAgICAgRE9NU3RyaW5nIG1lZGl1bSA9ICgqaXQpLnN0 cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBpZiggbWVkaXVtICE9ICIiICkKKyAgICAgICAgICAg IG1fbHN0TWVkaWEuYXBwZW5kKCBtZWRpdW0gKTsKKyAgICB9CiB9CkluZGV4OiBjc3MvY3NzX3N0 eWxlc2hlZXRpbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZWxpYnMva2h0 bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5CmRp ZmYgLXUgLTMgLXAgLXIxLjE5IGNzc19zdHlsZXNoZWV0aW1wbC5oCi0tLSBjc3MvY3NzX3N0eWxl c2hlZXRpbXBsLmgJMjAwMS8xMC8yMiAxOToyOTo0OAkxLjE5CisrKyBjc3MvY3NzX3N0eWxlc2hl ZXRpbXBsLmgJMjAwMS8xMC8yNiAwNzo0OTowMwpAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAg ICAgRE9NOjpET01TdHJpbmcgaHJlZigpIGNvbnN0OwogICAgIERPTTo6RE9NU3RyaW5nIHRpdGxl KCkgY29uc3Q7CiAgICAgTWVkaWFMaXN0SW1wbCAqbWVkaWEoKSBjb25zdDsKKyAgICB2b2lkIHNl dE1lZGlhKCBNZWRpYUxpc3RJbXBsICptZWRpYSApOwogCiBwcm90ZWN0ZWQ6CiAgICAgRE9NOjpO b2RlSW1wbCAqbV9wYXJlbnROb2RlOwpAQCAtMTQwLDggKzE0MSwxMSBAQCBwdWJsaWM6CiBjbGFz cyBNZWRpYUxpc3RJbXBsIDogcHVibGljIFN0eWxlQmFzZUltcGwKIHsKIHB1YmxpYzoKLSAgICBN ZWRpYUxpc3RJbXBsKENTU1N0eWxlU2hlZXRJbXBsICpwYXJlbnRTaGVldCk7Ci0gICAgTWVkaWFM aXN0SW1wbChDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSk7CisgICAgTWVkaWFMaXN0SW1wbCggQ1NT U3R5bGVTaGVldEltcGwgKnBhcmVudFNoZWV0ICk7CisgICAgTWVkaWFMaXN0SW1wbCggQ1NTU3R5 bGVTaGVldEltcGwgKnBhcmVudFNoZWV0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTTo6 RE9NU3RyaW5nICZtZWRpYSApOworICAgIE1lZGlhTGlzdEltcGwoIENTU1J1bGVJbXBsICpwYXJl bnRSdWxlICk7CisgICAgTWVkaWFMaXN0SW1wbCggQ1NTUnVsZUltcGwgKnBhcmVudFJ1bGUsIGNv bnN0IERPTTo6RE9NU3RyaW5nICZtZWRpYSApOwogCiAgICAgdmlydHVhbCB+TWVkaWFMaXN0SW1w bCgpOwogCkBAIC0xNTAsMTIgKzE1NCwyMiBAQCBwdWJsaWM6CiAgICAgQ1NTU3R5bGVTaGVldElt cGwgKnBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICBDU1NSdWxlSW1wbCAqcGFyZW50UnVs ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgRE9NOjpE T01TdHJpbmcgaXRlbSAoIHVuc2lnbmVkIGxvbmcgaW5kZXggKTsKKyAgICBET006OkRPTVN0cmlu ZyBpdGVtICggdW5zaWduZWQgbG9uZyBpbmRleCApIGNvbnN0OwogICAgIHZvaWQgZGVsZXRlTWVk aXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm9sZE1lZGl1bSApOwogICAgIHZvaWQgYXBwZW5k TWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApOwogCiAgICAgRE9NOjpE T01TdHJpbmcgbWVkaWFUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVRleHQoY29uc3Qg RE9NOjpET01TdHJpbmcgJnZhbHVlKTsKKworICAgIC8qKgorICAgICAqIENoZWNrIGlmIHRoZSBs aXN0IGNvbnRhaW5zIGVpdGhlciB0aGUgcmVxdWVzdGVkIG1lZGl1bSwgb3IgdGhlCisgICAgICog Y2F0Y2gtYWxsICJhbGwiIG1lZGlhIHR5cGUuIFJldHVybnMgdHJ1ZSB3aGVuIGZvdW5kLCBmYWxz ZSBvdGhlcndpc2UuCisgICAgICogU2luY2Ugbm90IHNwZWNpZnlpbmcgbWVkaWEgdHlwZXMgc2hv dWxkIGJlIHRyZWF0ZWQgYXMgImFsbCIgYWNjb3JkaW5nCisgICAgICogdG8gRE9NIHNwZWNzLCBh biBlbXB0eSBsaXN0IGFsd2F5cyByZXR1cm5zIHRydWUuCisgICAgICoKKyAgICAgKiBfTk9UXyBw YXJ0IG9mIHRoZSBET00hCisgICAgICovCisgICAgYm9vbCBjb250YWlucyggY29uc3QgRE9NOjpE T01TdHJpbmcgJm1lZGl1bSApIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgUVZhbHVlTGlzdDxE T006OkRPTVN0cmluZz4gbV9sc3RNZWRpYTsKSW5kZXg6IGNzcy9jc3NwYXJzZXIuY3BwCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJzL2todG1sL2Nzcy9jc3NwYXJzZXIuY3Bw LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE3MQpkaWZmIC11IC0zIC1wIC1yMS4xNzEgY3NzcGFy c2VyLmNwcAotLS0gY3NzL2Nzc3BhcnNlci5jcHAJMjAwMS8xMC8yNCAxODoyOToyNAkxLjE3MQor KysgY3NzL2Nzc3BhcnNlci5jcHAJMjAwMS8xMC8yNiAwNzo0OTowMwpAQCAtMjM2LDEzICsyMzYs MTMgQEAgU3R5bGVCYXNlSW1wbDo6cGFyc2VBdFJ1bGUoY29uc3QgUUNoYXIgKgogICAgICAgICBp ZigqY3VyUCAhPSAnOycpCiAgICAgICAgICAgICBjdXJQID0gcGFyc2VUb0NoYXIoc3RhcnRQLCBl bmRQLCAnOycsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgaWYoIWN1clApIHJldHVybiAwOwotICAg ICAgICBRU3RyaW5nIG1lZGlhKHN0YXJ0UCwgY3VyUCAtIHN0YXJ0UCk7Ci0JbWVkaWEgPSBtZWRp YS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgCisgICAgICAgIERPTVN0cmluZyBtZWRpYUxp c3QgPSBET01TdHJpbmcoIHN0YXJ0UCwgY3VyUCAtIHN0YXJ0UCk7CiAgICAgICAgIC8vICMjIyBj aGVjayBpZiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHlsZXNoZWV0IChubyBzdHlsZSBydWxl CiAgICAgICAgIC8vICAgICBiZWZvcmUgdGhlIGltcG9ydCBydWxlKQogI2lmZGVmIENTU19ERUJV RwotICAgICAgICBrZERlYnVnKCA2MDgwICkgPDwgImF0IHJ1bGU6IHVybCA9ICciIDw8IHVybC5z dHJpbmcoKQotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIicgbWVkaWEgPSAnIiA8PCBtZWRp YSA8PCAiJyI8PCBlbmRsOworICAgICAgICBrZERlYnVnKCA2MDgwICkgPDwgImltcG9ydCBydWxl ID0gIiA8PCB1cmwuc3RyaW5nKCkgPDwgIiwgbWVkaWFMaXN0ID0gIgorICAgICAgICAgICAgICAg ICAgICAgICAgPDwgbWVkaWFMaXN0LnN0cmluZyA8PCBlbmRsOwogI2VuZGlmCiAgICAgICAgIC8v IGlnbm9yZSBibG9jayBmb2xsb3dpbmcgQGltcG9ydCBydWxlCiAgICAgICAgIGlmKCAqY3VyUCA9 PSAneycgKSB7CkBAIC0yNTEsMTIgKzI1MSw5IEBAIFN0eWxlQmFzZUltcGw6OnBhcnNlQXRSdWxl KGNvbnN0IFFDaGFyICoKICAgICAgICAgICAgIGlmKGN1clApCiAgICAgICAgICAgICAgICAgY3Vy UCsrOwogICAgICAgICB9Ci0gICAgICAgIC8vICMjIyBvbmx5IG1lZGlhPSIiLCAic2NyZWVuIGFu ZCAiYWxsIiBhcmUgaW1wb3J0ZWQgZm9yIHRoZSBtb21lbnQuLi4KLSAgICAgICAgLy8gIyMjIGFk ZCBhdCBsZWFzdCAicHJpbnQiIGhlcmUgb25jZSB0aGUgTWVkaWFMaXN0IGNsYXNzIGlzIGltcGxl bWVudGVkCi0gICAgICAgIGlmKCAhbWVkaWEuaXNFbXB0eSgpICYmICEobWVkaWEuY29udGFpbnMo ImFsbCIpIHx8IG1lZGlhLmNvbnRhaW5zKCJzY3JlZW4iKSApICkKLSAgICAgICAgICAgIHJldHVy biAwOwogICAgICAgICBpZighdGhpcy0+aXNDU1NTdHlsZVNoZWV0KCkpIHJldHVybiAwOwotICAg ICAgICByZXR1cm4gbmV3IENTU0ltcG9ydFJ1bGVJbXBsKHRoaXMsIHVybCwgMCk7CisgICAgICAg IAorICAgICAgICByZXR1cm4gbmV3IENTU0ltcG9ydFJ1bGVJbXBsKCB0aGlzLCB1cmwsIG1lZGlh TGlzdCApOwogICAgIH0KICAgICBlbHNlIGlmKHJ1bGUgPT0gImNoYXJzZXQiKQogICAgIHsKQEAg LTI4NCw3ICsyODEsNyBAQCBTdHlsZUJhc2VJbXBsOjpwYXJzZUF0UnVsZShjb25zdCBRQ2hhciAq CiAgICAgICAgIGN1clAgPSBwYXJzZVRvQ2hhcihzdGFydFAsIGVuZFAsICd7JywgZmFsc2UpOwog CS8vcURlYnVnKCJtZWRpYUxpc3QgPSAnJXMnIiwgbWVkaWFMaXN0LmxhdGluMSgpICk7CiAgICAg ICAgIGlmICggIWN1clAgfHwgY3VyUCA+PSBlbmRQICkgcmV0dXJuIDA7Ci0JUVN0cmluZyBtZWRp YUxpc3QgPSBRU3RyaW5nKCBzdGFydFAsIGN1clAgLSBzdGFydFApOworCURPTVN0cmluZyBtZWRp YUxpc3QgPSBET01TdHJpbmcoIHN0YXJ0UCwgY3VyUCAtIHN0YXJ0UCk7CiAgICAgICAgIGN1clAr KzsKIAlzdGFydFAgPSBjdXJQOwogCWlmICggY3VyUCA+PSBlbmRQICkgcmV0dXJuIDA7CkBAIC0y OTIsMTAgKzI4OSwxMCBAQCBTdHlsZUJhc2VJbXBsOjpwYXJzZUF0UnVsZShjb25zdCBRQ2hhciAq CiAJaWYgKCAhY3VyUCB8fCBzdGFydFAgPj0gY3VyUCApCiAJICAgIHJldHVybiAwOwogI2lmZGVm IENTU19ERUJVRwotICAgICAgICBrZERlYnVnKCA2MDgwICkgPDwgIm1lZGlhIHJ1bGUgPSAiIDw8 IFFTdHJpbmcoc3RhcnRQLCBjdXJQIC0gc3RhcnRQKSA8PCBlbmRsOworICAgICAgICBrZERlYnVn KCA2MDgwICkgPDwgIm1lZGlhIHJ1bGUgPSAiIDw8IFFTdHJpbmcoc3RhcnRQLCBjdXJQIC0gc3Rh cnRQKQorICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiwgbWVkaWFMaXN0ID0gIiA8PCBtZWRp YUxpc3Quc3RyaW5nKCkgPDwgZW5kbDsKICNlbmRpZgotCWlmICggbWVkaWFMaXN0LmNvbnRhaW5z KCAic2NyZWVuIiApIHx8IG1lZGlhTGlzdC5jb250YWlucyggImFsbCIgKSApCi0JICAgIHJldHVy biBwYXJzZVN0eWxlUnVsZShzdGFydFAsIGN1clApOworICAgICAgICByZXR1cm4gbmV3IENTU01l ZGlhUnVsZUltcGwoIHRoaXMsIHN0YXJ0UCwgY3VyUCwgbWVkaWFMaXN0ICk7CiAgICAgfQogICAg IGVsc2UgaWYocnVsZSA9PSAicGFnZSIpCiAgICAgewpJbmRleDogY3NzL2Nzc3N0eWxlc2VsZWN0 b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJzL2todG1sL2Nzcy9j c3NzdHlsZXNlbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNzcKZGlmZiAtdSAt MyAtcCAtcjEuMTc3IGNzc3N0eWxlc2VsZWN0b3IuY3BwCi0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rv ci5jcHAJMjAwMS8wOS8yNSAyMDoyNjoyNwkxLjE3NworKysgY3NzL2Nzc3N0eWxlc2VsZWN0b3Iu Y3BwCTIwMDEvMTAvMjYgMDc6NDk6MDQKQEAgLTkyLDE0ICs5MiwyMSBAQCBDU1NTdHlsZVNlbGVj dG9yOjpDU1NTdHlsZVNlbGVjdG9yKERvY3VtCiAgICAgICAgIHVzZXJTaGVldC0+cGFyc2VTdHJp bmcoIERPTVN0cmluZyggZG9jLT51c2VyU3R5bGVTaGVldCgpICkgKTsKIAogICAgICAgICB1c2Vy U3R5bGUgPSBuZXcgQ1NTU3R5bGVTZWxlY3Rvckxpc3QoKTsKLSAgICAgICAgdXNlclN0eWxlLT5h cHBlbmQodXNlclNoZWV0KTsKKyAgICAgICAgdXNlclN0eWxlLT5hcHBlbmQoIHVzZXJTaGVldCwg ZG9jLT52aWV3KCktPm1lZGlhVHlwZSgpICk7CiAgICAgfQogCiAgICAgLy8gYWRkIHN0eWxlc2hl ZXRzIGZyb20gZG9jdW1lbnQKICAgICBhdXRob3JTdHlsZSA9IG5ldyBDU1NTdHlsZVNlbGVjdG9y TGlzdCgpOwogICAgIFN0eWxlU2hlZXRMaXN0SW1wbCogc3MgPSBkb2MtPnN0eWxlU2hlZXRzKCk7 Ci0gICAgZm9yICggUUxpc3RJdGVyYXRvcjxTdHlsZVNoZWV0SW1wbD4gaXQoIHNzLT5zdHlsZVNo ZWV0cyApOyBpdC5jdXJyZW50KCk7ICsraXQgKQotIAkgICAgYXV0aG9yU3R5bGUtPmFwcGVuZCgg aXQuY3VycmVudCgpKTsKKyAgICAKKyAgICBRTGlzdEl0ZXJhdG9yPFN0eWxlU2hlZXRJbXBsPiBp dCggc3MtPnN0eWxlU2hlZXRzICk7CisgICAgZm9yICggOyBpdC5jdXJyZW50KCk7ICsraXQgKQor ICAgIHsKKyAgICAgICAgQ1NTU3R5bGVTaGVldEltcGwgKmN1clNoZWV0ID0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkeW5hbWljX2Nhc3Q8Q1NTU3R5bGVTaGVldEltcGwgKj4oIGl0LmN1 cnJlbnQoKSApOworICAgICAgICBpZiggY3VyU2hlZXQgKQorICAgICAJICAgIGF1dGhvclN0eWxl LT5hcHBlbmQoIGN1clNoZWV0LCBkb2MtPnZpZXcoKS0+bWVkaWFUeXBlKCkgKTsKKyAgICB9CiAK ICAgICBidWlsZExpc3RzKCk7CiAKQEAgLTEyMywxMiArMTMwLDEyIEBAIENTU1N0eWxlU2VsZWN0 b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICAvL2tkRGVidWcoKSA8PCAiQ1NTU3R5bGVT ZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvciBlbmNvZGVkIHVybCAiIDw8IGVuY29kZWR1cmwucGF0 aCA8PCBlbmRsOwogfQogCi1DU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKFN0eWxl U2hlZXRJbXBsICpzaGVldCkKK0NTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoIENT U1N0eWxlU2hlZXRJbXBsICpzaGVldCApCiB7CiAgICAgaWYoIWRlZmF1bHRTdHlsZSkgbG9hZERl ZmF1bHRTdHlsZSgpOwogCiAgICAgYXV0aG9yU3R5bGUgPSBuZXcgQ1NTU3R5bGVTZWxlY3Rvckxp c3QoKTsKLSAgICBhdXRob3JTdHlsZS0+YXBwZW5kKHNoZWV0KTsKKyAgICBhdXRob3JTdHlsZS0+ YXBwZW5kKCBzaGVldCwgc2hlZXQtPmRvYygpLT52aWV3KCktPm1lZGlhVHlwZSgpICk7CiB9CiAK IENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9yKCkKQEAgLTEzOSw5ICsxNDYsOSBA QCBDU1NTdHlsZVNlbGVjdG9yOjp+Q1NTU3R5bGVTZWxlY3RvcigpCiAgICAgZGVsZXRlIHVzZXJT aGVldDsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGRTaGVldChTdHlsZVNoZWV0SW1w bCAqc2hlZXQpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZFNoZWV0KCBDU1NTdHlsZVNoZWV0 SW1wbCAqc2hlZXQgKQogewotICAgIGF1dGhvclN0eWxlLT5hcHBlbmQoc2hlZXQpOworICAgIGF1 dGhvclN0eWxlLT5hcHBlbmQoIHNoZWV0LCBzaGVldC0+ZG9jKCktPnZpZXcoKS0+bWVkaWFUeXBl KCkgKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKGNvbnN0 IEtIVE1MU2V0dGluZ3MgKnMpCkBAIC0xNjYsNyArMTczLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj dG9yOjpsb2FkRGVmYXVsdFN0eWxlKAogICAgIGRlZmF1bHRTaGVldC0+cGFyc2VTdHJpbmcoIHN0 ciApOwogCiAgICAgZGVmYXVsdFN0eWxlID0gbmV3IENTU1N0eWxlU2VsZWN0b3JMaXN0KCk7Ci0g ICAgZGVmYXVsdFN0eWxlLT5hcHBlbmQoZGVmYXVsdFNoZWV0KTsKKyAgICBkZWZhdWx0U3R5bGUt PmFwcGVuZCggZGVmYXVsdFNoZWV0ICk7CiAgICAgLy9rZERlYnVnKCkgPDwgIkNTU1N0eWxlU2Vs ZWN0b3I6IGRlZmF1bHQgc3R5bGUgaGFzICIgPDwgZGVmYXVsdFN0eWxlLT5jb3VudCgpIDw8ICIg ZWxlbWVudHMiPDwgZW5kbDsKIH0KIApAQCAtNzQzLDExICs3NTAsMTYgQEAgQ1NTU3R5bGVTZWxl Y3Rvckxpc3Q6On5DU1NTdHlsZVNlbGVjdG9yTAogewogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0 b3JMaXN0OjphcHBlbmQoU3R5bGVTaGVldEltcGwgKnNoZWV0KQordm9pZCBDU1NTdHlsZVNlbGVj dG9yTGlzdDo6YXBwZW5kKCBDU1NTdHlsZVNoZWV0SW1wbCAqc2hlZXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyAmbWVkaXVtICkKIHsKLQogICAg IGlmKCFzaGVldCB8fCAhc2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKSByZXR1cm47CiAKKyAgICAv LyBObyBtZWRpYSBpbXBsaWVzICJhbGwiLCBidXQgaWYgYSBtZWRpYWxpc3QgZXhpc3RzIGl0IG11 c3QKKyAgICAvLyBjb250YWluIG91ciBjdXJyZW50IG1lZGl1bQorICAgIGlmKCBzaGVldC0+bWVk aWEoKSAmJiAhc2hlZXQtPm1lZGlhKCktPmNvbnRhaW5zKCBtZWRpdW0gKSApCisgICAgICAgIHJl dHVybjsgLy8gc3R5bGUgc2hlZXQgbm90IGFwcGxpY2FibGUgZm9yIHRoaXMgbWVkaXVtCisKICAg ICBpbnQgbGVuID0gc2hlZXQtPmxlbmd0aCgpOwogCiAgICAgZm9yKGludCBpID0gMDsgaTwgbGVu OyBpKyspCkBAIC03NjcsMTEgKzc3OSw2MyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3JMaXN0Ojph cHBlbmQoU3R5bGVTCiAgICAgICAgIGVsc2UgaWYoaXRlbS0+aXNJbXBvcnRSdWxlKCkpCiAgICAg ICAgIHsKICAgICAgICAgICAgIENTU0ltcG9ydFJ1bGVJbXBsICppbXBvcnQgPSBzdGF0aWNfY2Fz dDxDU1NJbXBvcnRSdWxlSW1wbCAqPihpdGVtKTsKLSAgICAgICAgICAgIC8vICMjIyBjaGVjayBt ZWRpYSB0eXBlCi0gICAgICAgICAgICBTdHlsZVNoZWV0SW1wbCAqaW1wb3J0ZWRTaGVldCA9IGlt cG9ydC0+c3R5bGVTaGVldCgpOwotICAgICAgICAgICAgYXBwZW5kKGltcG9ydGVkU2hlZXQpOwor CisgICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiQGltcG9ydDogTWVkaWE6ICIKKyAg ICAgICAgICAgIC8vICAgICAgICAgICAgICAgIDw8IGltcG9ydC0+bWVkaWEoKS0+bWVkaWFUZXh0 KCkuc3RyaW5nKCkgPDwgZW5kbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYoICFpbXBv cnQtPm1lZGlhKCkgfHwgaW1wb3J0LT5tZWRpYSgpLT5jb250YWlucyggbWVkaXVtICkgKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIENTU1N0eWxlU2hlZXRJbXBsICppbXBvcnRlZFNo ZWV0ID0gaW1wb3J0LT5zdHlsZVNoZWV0KCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKCBpbXBv cnRlZFNoZWV0LCBtZWRpdW0gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBl bHNlIGlmKCBpdGVtLT5pc01lZGlhUnVsZSgpICkKKyAgICAgICAgeworICAgICAgICAgICAgQ1NT TWVkaWFSdWxlSW1wbCAqciA9IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZUltcGwgKj4oIGl0ZW0g KTsKKyAgICAgICAgICAgIENTU1J1bGVMaXN0SW1wbCAqcnVsZXMgPSByLT5jc3NSdWxlcygpOwor CisgICAgICAgICAgICAvL0RPTVN0cmluZyBtZWRpYVRleHQgPSBtZWRpYS0+bWVkaWFUZXh0KCk7 CisgICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiQG1lZGlhOiBNZWRpYTogIgorICAg ICAgICAgICAgLy8gICAgICAgICAgICAgICAgPDwgci0+bWVkaWEoKS0+bWVkaWFUZXh0KCkuc3Ry aW5nKCkgPDwgZW5kbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYoICggIXItPm1lZGlh KCkgfHwgci0+bWVkaWEoKS0+Y29udGFpbnMoIG1lZGl1bSApICkgJiYgcnVsZXMpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgLy8gVHJhdmVyc2UgY2hpbGQgZWxlbWVudHMgb2YgdGhl IEBpbXBvcnQgcnVsZS4gU2luY2UKKyAgICAgICAgICAgICAgICAvLyBtYW55IGVsZW1lbnRzIGFy ZSBub3QgYWxsb3dlZCBhcyBjaGlsZCB3ZSBkbyBub3QgdXNlCisgICAgICAgICAgICAgICAgLy8g YSByZWN1cnNpdmUgY2FsbCB0byBhcHBlbmQoKSBoZXJlCisgICAgICAgICAgICAgICAgZm9yKCBp bnQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKyApCisgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiKioqIFJ1bGUgIyIgPDwg aiA8PCBlbmRsOworICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQ1NTUnVsZUltcGwgKmNo aWxkSXRlbSA9IHJ1bGVzLT5pdGVtKCBqICk7CisgICAgICAgICAgICAgICAgICAgIGlmKCBjaGls ZEl0ZW0tPmlzU3R5bGVSdWxlKCkgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICAvLyBJdCBpcyBhIFN0eWxlUnVsZSwgc28gYXBwZW5kIGl0IHRvIG91ciBs aXN0CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NTdHlsZVJ1bGVJbXBsICpzdHlsZVJ1bGUg PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1 bGVJbXBsICo+KCBjaGlsZEl0ZW0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgICAgICAgICAgICBRTGlzdDxDU1NTZWxlY3Rvcj4gKnMgPSBzdHlsZVJ1 bGUtPnNlbGVjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoIGludCBqID0gMDsg aiA8ICggaW50ICkgcy0+Y291bnQoKTsgaisrICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NPcmRlcmVkUnVsZSAqb3JkZXJlZFJ1bGUg PSBuZXcgQ1NTT3JkZXJlZFJ1bGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0eWxlUnVsZSwgcy0+YXQoIGogKSwgY291bnQoKSApOworICAgICAgICAgICAg ICAgIAkgICAgUUxpc3Q8Q1NTT3JkZXJlZFJ1bGU+OjphcHBlbmQoIG9yZGVyZWRSdWxlICk7Cisg ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAvL2tkRGVidWcoIDYwODAgKSA8PCAiSWdub3JpbmcgY2hpbGQgcnVsZSBvZiAiCisg ICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAiSW1wb3J0UnVsZTogcnVsZSBpcyBub3QgYSBT dHlsZVJ1bGUhIiA8PCBlbmRsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfSAgIC8vIGZvciBydWxlcworICAgICAgICAgICAgfSAgIC8vIGlmIHJ1bGVzCisgICAgICAg ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgw ICkgPDwgIkNTU01lZGlhUnVsZSBub3QgcmVuZGVyZWQ6ICIKKyAgICAgICAgICAgICAgICAvLyAg ICAgICAgICAgICAgICA8PCAicnVsZSBlbXB0eSBvciB3cm9uZyBtZWRpdW0hIiA8PCBlbmRsOwor ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIC8vICMjIyBpbmNsdWRlIG1lZGlhLCBp bXBvcnQgcnVsZXMgYW5kIG90aGVyCisgICAgICAgIC8vICMjIyBpbmNsdWRlIG90aGVyIHJ1bGVz CiAgICAgfQogfQogCkluZGV4OiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9ob21lL2tkZS9rZGVsaWJzL2todG1sL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMjAKZGlmZiAtdSAtMyAtcCAtcjEuMjAgY3Nzc3R5bGVzZWxl Y3Rvci5oCi0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCTIwMDEvMTAvMDcgMTM6MTI6MTkJMS4y MAorKysgY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkyMDAxLzEwLzI2IDA3OjQ5OjA0CkBAIC0xMDcs MTUgKzEwNywxNSBAQCBuYW1lc3BhY2Uga2h0bWwKIAkgKiBBbHNvIHRha2VzIGludG8gYWNjb3Vu dCBzcGVjaWFsIGNhc2VzIGZvciBIVE1MIGRvY3VtZW50cywKIAkgKiBpbmNsdWRpbmcgdGhlIGRl ZmF1bHRTdHlsZSAod2hpY2ggaXMgaHRtbCBvbmx5KQogCSAqLwotCUNTU1N0eWxlU2VsZWN0b3Io RE9NOjpEb2N1bWVudEltcGwgKmRvYyk7CisJQ1NTU3R5bGVTZWxlY3RvciggRE9NOjpEb2N1bWVu dEltcGwgKmRvYyApOwogCS8qKgogCSAqIHNhbWUgYXMgYWJvdmUgYnV0IGZvciBhIHNpbmdsZSBz dHlsZXNoZWV0LgogCSAqLwotCUNTU1N0eWxlU2VsZWN0b3IoRE9NOjpTdHlsZVNoZWV0SW1wbCAq c2hlZXQpOworCUNTU1N0eWxlU2VsZWN0b3IoIERPTTo6Q1NTU3R5bGVTaGVldEltcGwgKnNoZWV0 ICk7CiAKIAl2aXJ0dWFsIH5DU1NTdHlsZVNlbGVjdG9yKCk7CiAJCi0Jdm9pZCBhZGRTaGVldChE T006OlN0eWxlU2hlZXRJbXBsICpzaGVldCk7CisJdm9pZCBhZGRTaGVldCggRE9NOjpDU1NTdHls ZVNoZWV0SW1wbCAqc2hlZXQgKTsKICAgICAgICAgCiAJc3RhdGljIHZvaWQgbG9hZERlZmF1bHRT dHlsZShjb25zdCBLSFRNTFNldHRpbmdzICpzID0gMCk7CiAJc3RhdGljIHZvaWQgY2xlYXIoKTsK QEAgLTIyOSw3ICsyMjksOCBAQCBuYW1lc3BhY2Uga2h0bWwKIAlDU1NTdHlsZVNlbGVjdG9yTGlz dCgpOwogCXZpcnR1YWwgfkNTU1N0eWxlU2VsZWN0b3JMaXN0KCk7CiAJCi0Jdm9pZCBhcHBlbmQo RE9NOjpTdHlsZVNoZWV0SW1wbCAqc2hlZXQpOworCXZvaWQgYXBwZW5kKCBET006OkNTU1N0eWxl U2hlZXRJbXBsICpzaGVldCwKKyAgICAgICAgICAgICAgICAgY29uc3QgRE9NOjpET01TdHJpbmcg Jm1lZGl1bSA9ICJzY3JlZW4iICk7CiAJCiAJdm9pZCBjb2xsZWN0KCBRTGlzdDxET006OkNTU1Nl bGVjdG9yPiAqc2VsZWN0b3JMaXN0LCBDU1NPcmRlcmVkUHJvcGVydHlMaXN0ICpwcm9wTGlzdCwK IAkJICAgICAgU291cmNlIHJlZ3VsYXIsIFNvdXJjZSBpbXBvcnRhbnQgKTsKSW5kZXg6IGh0bWwv aHRtbF9oZWFkaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUva2RlL2tkZWxpYnMv a2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43Ngpk aWZmIC11IC0zIC1wIC1yMS43NiBodG1sX2hlYWRpbXBsLmNwcAotLS0gaHRtbC9odG1sX2hlYWRp bXBsLmNwcAkyMDAxLzA5LzExIDEzOjA1OjU0CTEuNzYKKysrIGh0bWwvaHRtbF9oZWFkaW1wbC5j cHAJMjAwMS8xMC8yNiAwNzo0OTowNApAQCAtMTgwLDEwICsxODAsMTYgQEAgdm9pZCBIVE1MTGlu a0VsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZQogdm9pZCBIVE1MTGlua0VsZW1lbnRJbXBsOjpz ZXRTdHlsZVNoZWV0KGNvbnN0IERPTTo6RE9NU3RyaW5nICZ1cmwsIGNvbnN0IERPTTo6RE9NU3Ry aW5nICZzaGVldFN0cikKIHsKIC8vICAgIGtkRGVidWcoIDYwMzAgKSA8PCAiSFRNTExpbmtFbGVt ZW50OjpzZXRTdHlsZVNoZWV0KCkiIDw8IGVuZGw7CisvLyAgICBrZERlYnVnKCA2MDMwICkgPDwg IioqKiogY3VycmVudCBtZWRpdW06ICIgPDwgbV9tZWRpYSA8PCBlbmRsOworICAgIAogICAgIGlm KCBtX3NoZWV0ICkgcmV0dXJuOwogICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwo dGhpcywgdXJsKTsKICAgICBtX3NoZWV0LT5yZWYoKTsKICAgICBtX3NoZWV0LT5wYXJzZVN0cmlu ZyhzaGVldFN0cik7CisgICAgCisgICAgTWVkaWFMaXN0SW1wbCAqbWVkaWEgPSBuZXcgTWVkaWFM aXN0SW1wbCggbV9zaGVldCwgbV9tZWRpYSApOworICAgIG1fc2hlZXQtPnNldE1lZGlhKCBtZWRp YSApOworICAgIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwogCiAgICAgaWYgKCBzaGVldCgpICkg IGdldERvY3VtZW50KCktPmNyZWF0ZVNlbGVjdG9yKCk7CkBAIC0yMDUsMTUgKzIxMSw5IEBAIHZv aWQgSFRNTExpbmtFbGVtZW50SW1wbDo6c2hlZXRMb2FkZWQoKQogCiBTdHlsZVNoZWV0SW1wbCAq SFRNTExpbmtFbGVtZW50SW1wbDo6c2hlZXQoKSBjb25zdAogewotICAgIGlmICgga2h0bWw6OnBy aW50cGFpbnRlciApIHsKLSAgICAgICAgLy8gd2UncmUgY3VycmVudGx5IHByaW50aW5nLCByZXR1 cm4gYWxsIGFuZCBwcmludCBzdHlsZSBzaGVldHMKLSAgICAgICAgaWYoIG1fbWVkaWEuaXNOdWxs KCkgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikgfHwgbV9tZWRpYS5jb250YWlucygicHJpbnQi KSApCi0gICAgICAgICAgICByZXR1cm4gbV9zaGVldDsKLSAgICB9IGVsc2UgewotICAgICAgICBp ZiggbV9tZWRpYS5pc051bGwoKSB8fCBtX21lZGlhLmNvbnRhaW5zKCJzY3JlZW4iKSB8fCBtX21l ZGlhLmNvbnRhaW5zKCJhbGwiKSApCi0gICAgICAgICAgICByZXR1cm4gbV9zaGVldDsKLSAgICB9 Ci0gICAgcmV0dXJuIDA7CisgICAgLy9rZERlYnVnKCA2MDMwICkgPDwgIioqKiogSFRNTExpbmtF bGVtZW50SW1wbDo6c2hlZXQoKSIgPDwgZW5kbDsKKworICAgIHJldHVybiBtX3NoZWV0OwogfQog CiAKSW5kZXg6IGh0bWwvaHRtbF9oZWFkaW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21l L2tkZS9rZGVsaWJzL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5oLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjI3CmRpZmYgLXUgLTMgLXAgLXIxLjI3IGh0bWxfaGVhZGltcGwuaAotLS0gaHRtbC9o dG1sX2hlYWRpbXBsLmgJMjAwMS8xMC8wNyAxMzoxMjoxOQkxLjI3CisrKyBodG1sL2h0bWxfaGVh ZGltcGwuaAkyMDAxLzEwLzI2IDA3OjQ5OjA0CkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBE T00gewogY2xhc3MgRE9NU3RyaW5nOwogY2xhc3MgSFRNTEZvcm1FbGVtZW50SW1wbDsKIGNsYXNz IFN0eWxlU2hlZXRJbXBsOworY2xhc3MgQ1NTU3R5bGVTaGVldEltcGw7CiAKIGNsYXNzIEhUTUxC YXNlRWxlbWVudEltcGwgOiBwdWJsaWMgSFRNTEVsZW1lbnRJbXBsCiB7CkBAIC04Niw3ICs4Nyw3 IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGtodG1sOjpDYWNoZWRDU1NTdHlsZVNoZWV0 ICptX2NhY2hlZFNoZWV0OwotICAgIFN0eWxlU2hlZXRJbXBsICptX3NoZWV0OworICAgIENTU1N0 eWxlU2hlZXRJbXBsICptX3NoZWV0OwogICAgIERPTVN0cmluZyBtX3VybDsKICAgICBET01TdHJp bmcgbV90eXBlOwogICAgIFFTdHJpbmcgbV9tZWRpYTsK --------------Boundary-00=_GE1T8JL3LTBH0D04C102--