Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:36112 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 73252 invoked from network); 13 Mar 2008 04:14:28 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 13 Mar 2008 04:14:28 -0000 Authentication-Results: pb1.pair.com smtp.mail=m@digitalsandwich.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=m@digitalsandwich.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain digitalsandwich.com from 72.14.220.152 cause and error) X-PHP-List-Original-Sender: m@digitalsandwich.com X-Host-Fingerprint: 72.14.220.152 fg-out-1718.google.com Received: from [72.14.220.152] ([72.14.220.152:39139] helo=fg-out-1718.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 12/7B-65262-12AA8D74 for ; Wed, 12 Mar 2008 23:14:27 -0500 Received: by fg-out-1718.google.com with SMTP id 22so2709123fge.23 for ; Wed, 12 Mar 2008 21:14:23 -0700 (PDT) Received: by 10.86.36.11 with SMTP id j11mr1354110fgj.5.1205381662930; Wed, 12 Mar 2008 21:14:22 -0700 (PDT) Received: by 10.86.97.10 with HTTP; Wed, 12 Mar 2008 21:14:22 -0700 (PDT) Message-ID: <8d7b8c130803122114i1062a961t99c49c06867803e3@mail.gmail.com> Date: Wed, 12 Mar 2008 21:14:22 -0700 To: "Stanislav Malyshev" Cc: "=?ISO-8859-1?Q?Johannes_Schl=FCter?=" , "PHP Internals List" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_901_25789810.1205381662920" Subject: [PATCH] LSB - new patches for forward_static_call and parent:: forwarding (was: 5.3 Release Planning) From: m@digitalsandwich.com ("Mike Lively") ------=_Part_901_25789810.1205381662920 Content-Type: multipart/alternative; boundary="----=_Part_902_5622808.1205381662920" ------=_Part_902_5622808.1205381662920 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tue, Mar 11, 2008 at 8:42 PM, Mike Lively wrote: > If this could be overcame I think it would be relatively easy to > consolidate this code internally. I will look at it this evening and > tomorrow. > New patches attached. I have fixed the forward_static_call (I am not attached to the name and am open to suggestions) patch to use a callable. in doing this I also added an additional check to make sure the called_class is only forwarded if the class whose method being called is an ancestor of the current class. If that is not the case, then the behaviour will actually be identical to call_user_func*. I created against patch for both 5_3 and 6. I have also updated and attached that parent forwarding patch for both 5_3 and 6. In the event that someone wants to look at that. - Mike Lively ------=_Part_902_5622808.1205381662920 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Tue, Mar 11, 2008 at 8:42 PM, Mike Lively <m@digitalsandwich.com> wrote:
If this could be overcame I think it would be relatively easy to consolidate this code internally. I will look at it this evening and tomorrow.

New patches attached.

I have fixed the forward_static_call (I am not attached to the name and am open to suggestions) patch to use a callable. in doing this I also added an additional check to make sure the called_class is only forwarded if the class whose method being called is an ancestor of the current class. If that is not the case, then the behaviour will actually be identical to call_user_func*.

I created against patch for both 5_3 and 6.

I have also updated and attached that parent forwarding patch for both 5_3 and 6. In the event that someone wants to look at that.

- Mike Lively
------=_Part_902_5622808.1205381662920-- ------=_Part_901_25789810.1205381662920 Content-Type: text/x-patch; name=lsb.forward_static_call.v2.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fdqt24420 Content-Disposition: attachment; filename=lsb.forward_static_call.v2.patch SW5kZXg6IGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9waHAtc3JjL2V4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYyx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS44OTAKZGlmZiAtdSAtcjEuODkwIGJhc2ljX2Z1bmN0aW9ucy5j Ci0tLSBleHQvc3RhbmRhcmQvYmFzaWNfZnVuY3Rpb25zLmMJMjggRmViIDIwMDggMTQ6MTY6MTQg LTAwMDAJMS44OTAKKysrIGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwkxMyBNYXIgMjAw OCAwMjozNzoyMiAtMDAwMApAQCAtODA5LDYgKzgwOSwxOSBAQAogWkVORF9FTkRfQVJHX0lORk8o KQogCiBzdGF0aWMKK1pFTkRfQkVHSU5fQVJHX0lORk9fRVgoYXJnaW5mb19mb3J3YXJkX3N0YXRp Y19jYWxsLCAwLCAwLCAxKQorCVpFTkRfQVJHX0lORk8oMCwgZnVuY3Rpb25fbmFtZSkKKwlaRU5E X0FSR19JTkZPKDAsIHBhcmFtZXRlcikKKwlaRU5EX0FSR19JTkZPKDAsIC4uLikKK1pFTkRfRU5E X0FSR19JTkZPKCkKKworc3RhdGljCitaRU5EX0JFR0lOX0FSR19JTkZPX0VYKGFyZ2luZm9fZm9y d2FyZF9zdGF0aWNfY2FsbF9hcnJheSwgMCwgMCwgMikKKwlaRU5EX0FSR19JTkZPKDAsIGZ1bmN0 aW9uX25hbWUpCisJWkVORF9BUkdfSU5GTygwLCBwYXJhbWV0ZXJzKSAvKiBBUlJBWV9JTkZPKDAs IHBhcmFtZXRlcnMsIDEpICovCitaRU5EX0VORF9BUkdfSU5GTygpCisKK3N0YXRpYwogWkVORF9C RUdJTl9BUkdfSU5GTyhhcmdpbmZvX3JlZ2lzdGVyX3NodXRkb3duX2Z1bmN0aW9uLCAwKQogCVpF TkRfQVJHX0lORk8oMCwgZnVuY3Rpb25fbmFtZSkKIFpFTkRfRU5EX0FSR19JTkZPKCkKQEAgLTMz OTgsNiArMzQxMSw4IEBACiAJUEhQX0ZFKGNhbGxfdXNlcl9mdW5jX2FycmF5LAkJCQkJCQkJCQkJ YXJnaW5mb19jYWxsX3VzZXJfZnVuY19hcnJheSkKIAlQSFBfREVQX0ZFKGNhbGxfdXNlcl9tZXRo b2QsCQkJCQkJCQkJCQlhcmdpbmZvX2NhbGxfdXNlcl9tZXRob2QpCiAJUEhQX0RFUF9GRShjYWxs X3VzZXJfbWV0aG9kX2FycmF5LAkJCQkJCQkJCQlhcmdpbmZvX2NhbGxfdXNlcl9tZXRob2RfYXJy YXkpCisJUEhQX0ZFKGZvcndhcmRfc3RhdGljX2NhbGwsCQkJCQkJCQkJCQlhcmdpbmZvX2Zvcndh cmRfc3RhdGljX2NhbGwpCisJUEhQX0ZFKGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXksCQkJCQkJ CQkJCWFyZ2luZm9fZm9yd2FyZF9zdGF0aWNfY2FsbF9hcnJheSkKIAlQSFBfRkUoc2VyaWFsaXpl LAkJCQkJCQkJCQkJCQkJYXJnaW5mb19zZXJpYWxpemUpCiAJUEhQX0ZFKHVuc2VyaWFsaXplLAkJ CQkJCQkJCQkJCQkJYXJnaW5mb191bnNlcmlhbGl6ZSkKIApAQCAtNTE5Myw2ICs1MjA4LDY3IEBA CiB9CiAvKiB9fX0gKi8KIAorLyoge3t7IHByb3RvIG1peGVkIGZvcndhcmRfc3RhdGljX2NhbGwo bWl4ZWQgZnVuY3Rpb25fbmFtZSBbLCBtaXhlZCBwYXJtZXRlcl0gWywgbWl4ZWQgLi4uXSkgVQor ICAgQ2FsbCBhIHVzZXIgZnVuY3Rpb24gd2hpY2ggaXMgdGhlIGZpcnN0IHBhcmFtZXRlciAqLwor UEhQX0ZVTkNUSU9OKGZvcndhcmRfc3RhdGljX2NhbGwpCit7CisJenZhbCAqcmV0dmFsX3B0ciA9 IE5VTEw7CisJemVuZF9mY2FsbF9pbmZvIGZjaTsKKwl6ZW5kX2ZjYWxsX2luZm9fY2FjaGUgZmNp X2NhY2hlOworCisJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNS TUxTX0NDLCAiZioiLCAmZmNpLCAmZmNpX2NhY2hlLCAmZmNpLnBhcmFtcywgJmZjaS5wYXJhbV9j b3VudCkgPT0gRkFJTFVSRSkgeworCQlyZXR1cm47CisJfQorCisJaWYgKCFFRyhhY3RpdmVfb3Bf YXJyYXkpLT5zY29wZSkgeworCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDYW5ub3QgY2FsbCBmb3J3 YXJkX3N0YXRpY19jYWxsKCkgd2hlbiBubyBjbGFzcyBzY29wZSBpcyBhY3RpdmUiKTsKKwl9CisK KwlmY2kucmV0dmFsX3B0cl9wdHIgPSAmcmV0dmFsX3B0cjsKKworCWlmIChFRyhjYWxsZWRfc2Nv cGUpICYmCisJCWluc3RhbmNlb2ZfZnVuY3Rpb24oRUcoY2FsbGVkX3Njb3BlKSwgZmNpX2NhY2hl LmNhbGxpbmdfc2NvcGUgVFNSTUxTX0NDKSkgeworCQkJZmNpX2NhY2hlLmNhbGxpbmdfc2NvcGUg PSBFRyhjYWxsZWRfc2NvcGUpOworCX0KKwkKKwlpZiAoemVuZF9jYWxsX2Z1bmN0aW9uKCZmY2ks ICZmY2lfY2FjaGUgVFNSTUxTX0NDKSA9PSBTVUNDRVNTICYmIGZjaS5yZXR2YWxfcHRyX3B0ciAm JiAqZmNpLnJldHZhbF9wdHJfcHRyKSB7CisJCUNPUFlfUFpWQUxfVE9fWlZBTCgqcmV0dXJuX3Zh bHVlLCAqZmNpLnJldHZhbF9wdHJfcHRyKTsKKwl9CisKKwlpZiAoZmNpLnBhcmFtcykgeworCQll ZnJlZShmY2kucGFyYW1zKTsKKwl9Cit9CisvKiB9fX0gKi8KKworLyoge3t7IHByb3RvIG1peGVk IGNhbGxfdXNlcl9mdW5jX2FycmF5KHN0cmluZyBmdW5jdGlvbl9uYW1lLCBhcnJheSBwYXJhbWV0 ZXJzKSBVCisgICBDYWxsIGEgdXNlciBmdW5jdGlvbiB3aGljaCBpcyB0aGUgZmlyc3QgcGFyYW1l dGVyIHdpdGggdGhlIGFyZ3VtZW50cyBjb250YWluZWQgaW4gYXJyYXkgKi8KK1BIUF9GVU5DVElP Tihmb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KQoreworCXp2YWwgKnBhcmFtcywgKnJldHZhbF9w dHIgPSBOVUxMOworCXplbmRfZmNhbGxfaW5mbyBmY2k7CisJemVuZF9mY2FsbF9pbmZvX2NhY2hl IGZjaV9jYWNoZTsKKworCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygp IFRTUk1MU19DQywgImZhLyIsICZmY2ksICZmY2lfY2FjaGUsICZwYXJhbXMpID09IEZBSUxVUkUp IHsKKwkJcmV0dXJuOworCX0KKworCXplbmRfZmNhbGxfaW5mb19hcmdzKCZmY2ksIHBhcmFtcyBU U1JNTFNfQ0MpOworCWZjaS5yZXR2YWxfcHRyX3B0ciA9ICZyZXR2YWxfcHRyOworCisJaWYgKEVH KGNhbGxlZF9zY29wZSkgJiYKKwkJaW5zdGFuY2VvZl9mdW5jdGlvbihFRyhjYWxsZWRfc2NvcGUp LCBmY2lfY2FjaGUuY2FsbGluZ19zY29wZSBUU1JNTFNfQ0MpKSB7CisJCQlmY2lfY2FjaGUuY2Fs bGluZ19zY29wZSA9IEVHKGNhbGxlZF9zY29wZSk7CisJfQorCisJaWYgKHplbmRfY2FsbF9mdW5j dGlvbigmZmNpLCAmZmNpX2NhY2hlIFRTUk1MU19DQykgPT0gU1VDQ0VTUyAmJiBmY2kucmV0dmFs X3B0cl9wdHIgJiYgKmZjaS5yZXR2YWxfcHRyX3B0cikgeworCQlDT1BZX1BaVkFMX1RPX1pWQUwo KnJldHVybl92YWx1ZSwgKmZjaS5yZXR2YWxfcHRyX3B0cik7CisJfQorCisJemVuZF9mY2FsbF9p bmZvX2FyZ3NfY2xlYXIoJmZjaSwgMSk7Cit9CisvKiB9fX0gKi8KKwogdm9pZCB1c2VyX3NodXRk b3duX2Z1bmN0aW9uX2R0b3IocGhwX3NodXRkb3duX2Z1bmN0aW9uX2VudHJ5ICpzaHV0ZG93bl9m dW5jdGlvbl9lbnRyeSkgLyoge3t7ICovCiB7CiAJaW50IGk7CkluZGV4OiBleHQvc3RhbmRhcmQv YmFzaWNfZnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwLXNy Yy9leHQvc3RhbmRhcmQvYmFzaWNfZnVuY3Rpb25zLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTYxCmRpZmYgLXUgLXIxLjE2MSBiYXNpY19mdW5jdGlvbnMuaAotLS0gZXh0L3N0YW5kYXJkL2Jh c2ljX2Z1bmN0aW9ucy5oCTMgRmViIDIwMDggMTQ6NDQ6MzAgLTAwMDAJMS4xNjEKKysrIGV4dC9z dGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuaAkxMyBNYXIgMjAwOCAwMjozNzoyMiAtMDAwMApAQCAt ODQsNiArODQsOCBAQAogUEhQX0ZVTkNUSU9OKGNhbGxfdXNlcl9mdW5jX2FycmF5KTsKIFBIUF9G VU5DVElPTihjYWxsX3VzZXJfbWV0aG9kKTsKIFBIUF9GVU5DVElPTihjYWxsX3VzZXJfbWV0aG9k X2FycmF5KTsKK1BIUF9GVU5DVElPTihmb3J3YXJkX3N0YXRpY19jYWxsKTsKK1BIUF9GVU5DVElP Tihmb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KTsKIAogUEhQX0ZVTkNUSU9OKHJlZ2lzdGVyX3No dXRkb3duX2Z1bmN0aW9uKTsKIFBIUF9GVU5DVElPTihoaWdobGlnaHRfZmlsZSk7Cg== ------=_Part_901_25789810.1205381662920 Content-Type: text/x-patch; name=lsb.forward_static_call.v2.php53.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fdqt2b8d1 Content-Disposition: attachment; filename=lsb.forward_static_call.v2.php53.patch SW5kZXg6IGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9waHAtc3JjL2V4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYyx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS43MjUuMi4zMS4yLjY0LjIuMjEKZGlmZiAtdSAtcjEuNzI1LjIu MzEuMi42NC4yLjIxIGJhc2ljX2Z1bmN0aW9ucy5jCi0tLSBleHQvc3RhbmRhcmQvYmFzaWNfZnVu Y3Rpb25zLmMJMTAgTWFyIDIwMDggMjI6MTI6MzYgLTAwMDAJMS43MjUuMi4zMS4yLjY0LjIuMjEK KysrIGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwkxMyBNYXIgMjAwOCAwMjo0NjozNSAt MDAwMApAQCAtODExLDYgKzgxMSwxOSBAQAogWkVORF9FTkRfQVJHX0lORk8oKQogCiBzdGF0aWMK K1pFTkRfQkVHSU5fQVJHX0lORk9fRVgoYXJnaW5mb19mb3J3YXJkX3N0YXRpY19jYWxsLCAwLCAw LCAxKQorCVpFTkRfQVJHX0lORk8oMCwgZnVuY3Rpb25fbmFtZSkKKwlaRU5EX0FSR19JTkZPKDAs IHBhcmFtZXRlcikKKwlaRU5EX0FSR19JTkZPKDAsIC4uLikKK1pFTkRfRU5EX0FSR19JTkZPKCkK Kworc3RhdGljCitaRU5EX0JFR0lOX0FSR19JTkZPX0VYKGFyZ2luZm9fZm9yd2FyZF9zdGF0aWNf Y2FsbF9hcnJheSwgMCwgMCwgMikKKwlaRU5EX0FSR19JTkZPKDAsIGZ1bmN0aW9uX25hbWUpCisJ WkVORF9BUkdfSU5GTygwLCBwYXJhbWV0ZXJzKSAvKiBBUlJBWV9JTkZPKDAsIHBhcmFtZXRlcnMs IDEpICovCitaRU5EX0VORF9BUkdfSU5GTygpCisKK3N0YXRpYwogWkVORF9CRUdJTl9BUkdfSU5G TyhhcmdpbmZvX3JlZ2lzdGVyX3NodXRkb3duX2Z1bmN0aW9uLCAwKQogCVpFTkRfQVJHX0lORk8o MCwgZnVuY3Rpb25fbmFtZSkKIFpFTkRfRU5EX0FSR19JTkZPKCkKQEAgLTMzNjQsNiArMzM3Nyw4 IEBACiAJUEhQX0ZFKGNhbGxfdXNlcl9mdW5jX2FycmF5LAkJCQkJCQkJCQkJYXJnaW5mb19jYWxs X3VzZXJfZnVuY19hcnJheSkKIAlQSFBfREVQX0ZFKGNhbGxfdXNlcl9tZXRob2QsCQkJCQkJCQkJ CQlhcmdpbmZvX2NhbGxfdXNlcl9tZXRob2QpCiAJUEhQX0RFUF9GRShjYWxsX3VzZXJfbWV0aG9k X2FycmF5LAkJCQkJCQkJCQlhcmdpbmZvX2NhbGxfdXNlcl9tZXRob2RfYXJyYXkpCisJUEhQX0ZF KGZvcndhcmRfc3RhdGljX2NhbGwsCQkJCQkJCQkJCQlhcmdpbmZvX2ZvcndhcmRfc3RhdGljX2Nh bGwpCisJUEhQX0ZFKGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXksCQkJCQkJCQkJCWFyZ2luZm9f Zm9yd2FyZF9zdGF0aWNfY2FsbF9hcnJheSkKIAlQSFBfRkUoc2VyaWFsaXplLAkJCQkJCQkJCQkJ CQkJYXJnaW5mb19zZXJpYWxpemUpCiAJUEhQX0ZFKHVuc2VyaWFsaXplLAkJCQkJCQkJCQkJCQkJ YXJnaW5mb191bnNlcmlhbGl6ZSkKIApAQCAtNTIyNCw2ICs1MjM5LDY3IEBACiB9CiAvKiB9fX0g Ki8KIAorLyoge3t7IHByb3RvIG1peGVkIGZvcndhcmRfc3RhdGljX2NhbGwobWl4ZWQgZnVuY3Rp b25fbmFtZSBbLCBtaXhlZCBwYXJtZXRlcl0gWywgbWl4ZWQgLi4uXSkgVQorICAgQ2FsbCBhIHVz ZXIgZnVuY3Rpb24gd2hpY2ggaXMgdGhlIGZpcnN0IHBhcmFtZXRlciAqLworUEhQX0ZVTkNUSU9O KGZvcndhcmRfc3RhdGljX2NhbGwpCit7CisJenZhbCAqcmV0dmFsX3B0ciA9IE5VTEw7CisJemVu ZF9mY2FsbF9pbmZvIGZjaTsKKwl6ZW5kX2ZjYWxsX2luZm9fY2FjaGUgZmNpX2NhY2hlOworCisJ aWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAiZioi LCAmZmNpLCAmZmNpX2NhY2hlLCAmZmNpLnBhcmFtcywgJmZjaS5wYXJhbV9jb3VudCkgPT0gRkFJ TFVSRSkgeworCQlyZXR1cm47CisJfQorCisJaWYgKCFFRyhhY3RpdmVfb3BfYXJyYXkpLT5zY29w ZSkgeworCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDYW5ub3QgY2FsbCBmb3J3YXJkX3N0YXRpY19j YWxsKCkgd2hlbiBubyBjbGFzcyBzY29wZSBpcyBhY3RpdmUiKTsKKwl9CisKKwlmY2kucmV0dmFs X3B0cl9wdHIgPSAmcmV0dmFsX3B0cjsKKworCWlmIChFRyhjYWxsZWRfc2NvcGUpICYmCisJCWlu c3RhbmNlb2ZfZnVuY3Rpb24oRUcoY2FsbGVkX3Njb3BlKSwgZmNpX2NhY2hlLmNhbGxpbmdfc2Nv cGUgVFNSTUxTX0NDKSkgeworCQkJZmNpX2NhY2hlLmNhbGxpbmdfc2NvcGUgPSBFRyhjYWxsZWRf c2NvcGUpOworCX0KKwkKKwlpZiAoemVuZF9jYWxsX2Z1bmN0aW9uKCZmY2ksICZmY2lfY2FjaGUg VFNSTUxTX0NDKSA9PSBTVUNDRVNTICYmIGZjaS5yZXR2YWxfcHRyX3B0ciAmJiAqZmNpLnJldHZh bF9wdHJfcHRyKSB7CisJCUNPUFlfUFpWQUxfVE9fWlZBTCgqcmV0dXJuX3ZhbHVlLCAqZmNpLnJl dHZhbF9wdHJfcHRyKTsKKwl9CisKKwlpZiAoZmNpLnBhcmFtcykgeworCQllZnJlZShmY2kucGFy YW1zKTsKKwl9Cit9CisvKiB9fX0gKi8KKworLyoge3t7IHByb3RvIG1peGVkIGNhbGxfdXNlcl9m dW5jX2FycmF5KHN0cmluZyBmdW5jdGlvbl9uYW1lLCBhcnJheSBwYXJhbWV0ZXJzKSBVCisgICBD YWxsIGEgdXNlciBmdW5jdGlvbiB3aGljaCBpcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpdGggdGhl IGFyZ3VtZW50cyBjb250YWluZWQgaW4gYXJyYXkgKi8KK1BIUF9GVU5DVElPTihmb3J3YXJkX3N0 YXRpY19jYWxsX2FycmF5KQoreworCXp2YWwgKnBhcmFtcywgKnJldHZhbF9wdHIgPSBOVUxMOwor CXplbmRfZmNhbGxfaW5mbyBmY2k7CisJemVuZF9mY2FsbF9pbmZvX2NhY2hlIGZjaV9jYWNoZTsK KworCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywg ImZhLyIsICZmY2ksICZmY2lfY2FjaGUsICZwYXJhbXMpID09IEZBSUxVUkUpIHsKKwkJcmV0dXJu OworCX0KKworCXplbmRfZmNhbGxfaW5mb19hcmdzKCZmY2ksIHBhcmFtcyBUU1JNTFNfQ0MpOwor CWZjaS5yZXR2YWxfcHRyX3B0ciA9ICZyZXR2YWxfcHRyOworCisJaWYgKEVHKGNhbGxlZF9zY29w ZSkgJiYKKwkJaW5zdGFuY2VvZl9mdW5jdGlvbihFRyhjYWxsZWRfc2NvcGUpLCBmY2lfY2FjaGUu Y2FsbGluZ19zY29wZSBUU1JNTFNfQ0MpKSB7CisJCQlmY2lfY2FjaGUuY2FsbGluZ19zY29wZSA9 IEVHKGNhbGxlZF9zY29wZSk7CisJfQorCisJaWYgKHplbmRfY2FsbF9mdW5jdGlvbigmZmNpLCAm ZmNpX2NhY2hlIFRTUk1MU19DQykgPT0gU1VDQ0VTUyAmJiBmY2kucmV0dmFsX3B0cl9wdHIgJiYg KmZjaS5yZXR2YWxfcHRyX3B0cikgeworCQlDT1BZX1BaVkFMX1RPX1pWQUwoKnJldHVybl92YWx1 ZSwgKmZjaS5yZXR2YWxfcHRyX3B0cik7CisJfQorCisJemVuZF9mY2FsbF9pbmZvX2FyZ3NfY2xl YXIoJmZjaSwgMSk7Cit9CisvKiB9fX0gKi8KKwogdm9pZCB1c2VyX3NodXRkb3duX2Z1bmN0aW9u X2R0b3IocGhwX3NodXRkb3duX2Z1bmN0aW9uX2VudHJ5ICpzaHV0ZG93bl9mdW5jdGlvbl9lbnRy eSkgLyoge3t7ICovCiB7CiAJaW50IGk7CkluZGV4OiBleHQvc3RhbmRhcmQvYmFzaWNfZnVuY3Rp b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwLXNyYy9leHQvc3RhbmRh cmQvYmFzaWNfZnVuY3Rpb25zLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTM5LjIuNC4yLjYu Mi42CmRpZmYgLXUgLXIxLjEzOS4yLjQuMi42LjIuNiBiYXNpY19mdW5jdGlvbnMuaAotLS0gZXh0 L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5oCTMgRmViIDIwMDggMTQ6NDU6MDAgLTAwMDAJMS4x MzkuMi40LjIuNi4yLjYKKysrIGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuaAkxMyBNYXIg MjAwOCAwMjo0NjozNSAtMDAwMApAQCAtODQsNiArODQsOCBAQAogUEhQX0ZVTkNUSU9OKGNhbGxf dXNlcl9mdW5jX2FycmF5KTsKIFBIUF9GVU5DVElPTihjYWxsX3VzZXJfbWV0aG9kKTsKIFBIUF9G VU5DVElPTihjYWxsX3VzZXJfbWV0aG9kX2FycmF5KTsKK1BIUF9GVU5DVElPTihmb3J3YXJkX3N0 YXRpY19jYWxsKTsKK1BIUF9GVU5DVElPTihmb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KTsKIAog UEhQX0ZVTkNUSU9OKHJlZ2lzdGVyX3NodXRkb3duX2Z1bmN0aW9uKTsKIFBIUF9GVU5DVElPTiho aWdobGlnaHRfZmlsZSk7Cg== ------=_Part_901_25789810.1205381662920 Content-Type: text/x-patch; name=lsb.parent-forwarding.v2.php53.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fdqt2m9k3 Content-Disposition: attachment; filename=lsb.parent-forwarding.v2.php53.patch SW5kZXg6IFplbmQvemVuZF9BUEkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9a ZW5kRW5naW5lMi96ZW5kX0FQSS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI5Ni4yLjI3LjIu MzQuMi4zMQpkaWZmIC11IC1yMS4yOTYuMi4yNy4yLjM0LjIuMzEgemVuZF9BUEkuYwotLS0gWmVu ZC96ZW5kX0FQSS5jCTYgTWFyIDIwMDggMTc6Mjg6MjYgLTAwMDAJMS4yOTYuMi4yNy4yLjM0LjIu MzEKKysrIFplbmQvemVuZF9BUEkuYwkxMyBNYXIgMjAwOCAwMzoxNDo1NiAtMDAwMApAQCAtMjMx Miw3ICsyMzEyLDcgQEAKIH0KIC8qIH19fSAqLwogCi1zdGF0aWMgaW50IHplbmRfaXNfY2FsbGFi bGVfY2hlY2tfZnVuYyhpbnQgY2hlY2tfZmxhZ3MsIHp2YWwgKioqem9ial9wdHJfcHRyLCB6ZW5k X2NsYXNzX2VudHJ5ICpjZV9vcmcsIHp2YWwgKmNhbGxhYmxlLCB6ZW5kX2NsYXNzX2VudHJ5ICoq Y2VfcHRyLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIGNoYXIgKiplcnJvciBUU1JNTFNfREMp IC8qIHt7eyAqLworc3RhdGljIGludCB6ZW5kX2lzX2NhbGxhYmxlX2NoZWNrX2Z1bmMoaW50IGNo ZWNrX2ZsYWdzLCB6dmFsICoqKnpvYmpfcHRyX3B0ciwgemVuZF9jbGFzc19lbnRyeSAqY2Vfb3Jn LCB6dmFsICpjYWxsYWJsZSwgemVuZF9jbGFzc19lbnRyeSAqKmNlX3B0ciwgemVuZF91aW50ICpm ZXRjaF90eXBlLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIGNoYXIgKiplcnJvciBUU1JNTFNf REMpIC8qIHt7eyAqLwogewogCWludCByZXR2YWw7CiAJY2hhciAqbG1uYW1lLCAqY29sb247CkBA IC0yMzcxLDYgKzIzNzEsNyBAQAogCQkJRUcoc2NvcGUpID0gY2Vfb3JnOwogCQl9CiAJCSpjZV9w dHIgPSB6ZW5kX2ZldGNoX2NsYXNzKFpfU1RSVkFMX1AoY2FsbGFibGUpLCBjbGVuLCBaRU5EX0ZF VENIX0NMQVNTX0FVVE8gfCBaRU5EX0ZFVENIX0NMQVNTX1NJTEVOVCBUU1JNTFNfQ0MpOworCQkq ZmV0Y2hfdHlwZSA9IHplbmRfZ2V0X2NsYXNzX2ZldGNoX3R5cGUoWl9TVFJWQUxfUChjYWxsYWJs ZSksIGNsZW4pOwogCQlFRyhzY29wZSkgPSBsYXN0X3Njb3BlOwogCQlpZiAoISpjZV9wdHIpIHsK IAkJCWlmIChlcnJvcikgemVuZF9zcHByaW50ZihlcnJvciwgMCwgImNsYXNzICclLipaJyBub3Qg Zm91bmQiLCBjbGVuLCBjYWxsYWJsZSk7CkBAIC0yNDcyLDExICsyNDczLDEyIEBACiB9CiAvKiB9 fX0gKi8KIAotWkVORF9BUEkgemVuZF9ib29sIHplbmRfaXNfY2FsbGFibGVfZXgoenZhbCAqY2Fs bGFibGUsIHVpbnQgY2hlY2tfZmxhZ3MsIGNoYXIgKipjYWxsYWJsZV9uYW1lLCBpbnQgKmNhbGxh YmxlX25hbWVfbGVuLCB6ZW5kX2NsYXNzX2VudHJ5ICoqY2VfcHRyLCB6ZW5kX2Z1bmN0aW9uICoq ZnB0cl9wdHIsIHp2YWwgKioqem9ial9wdHJfcHRyLCBjaGFyICoqZXJyb3IgVFNSTUxTX0RDKSAv KiB7e3sgKi8KK1pFTkRfQVBJIHplbmRfYm9vbCB6ZW5kX2lzX2NhbGxhYmxlX2V4KHp2YWwgKmNh bGxhYmxlLCB1aW50IGNoZWNrX2ZsYWdzLCBjaGFyICoqY2FsbGFibGVfbmFtZSwgaW50ICpjYWxs YWJsZV9uYW1lX2xlbiwgemVuZF9jbGFzc19lbnRyeSAqKmNlX3B0ciwgemVuZF91aW50ICpmZXRj aF90eXBlLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIHp2YWwgKioqem9ial9wdHJfcHRyLCBj aGFyICoqZXJyb3IgVFNSTUxTX0RDKSAvKiB7e3sgKi8KIHsKIAljaGFyICpsY25hbWU7CiAJaW50 IGNhbGxhYmxlX25hbWVfbGVuX2xvY2FsOwogCXplbmRfY2xhc3NfZW50cnkgKmNlX2xvY2FsLCAq KnBjZTsKKwl6ZW5kX3VpbnQgZmV0Y2hfdHlwZV9sb2NhbDsKIAl6ZW5kX2Z1bmN0aW9uICpmcHRy X2xvY2FsOwogCXp2YWwgKip6b2JqX3B0cl9sb2NhbDsKIApAQCAtMjQ5OCw3ICsyNTAwLDEyIEBA CiAJaWYgKGVycm9yKSB7CiAJCSplcnJvciA9IE5VTEw7CiAJfQorCWlmIChmZXRjaF90eXBlID09 IE5VTEwpIHsKKwkJZmV0Y2hfdHlwZSA9ICZmZXRjaF90eXBlX2xvY2FsOworCX0KKwkKIAkqY2Vf cHRyID0gTlVMTDsKKwkqZmV0Y2hfdHlwZSA9IDA7CiAJKmZwdHJfcHRyID0gTlVMTDsKIAkqem9i al9wdHJfcHRyID0gTlVMTDsKIApAQCAtMjUxMiw3ICsyNTE5LDcgQEAKIAkJCQlyZXR1cm4gMTsK IAkJCX0KIAotCQkJcmV0dXJuIHplbmRfaXNfY2FsbGFibGVfY2hlY2tfZnVuYyhjaGVja19mbGFn cywgem9ial9wdHJfcHRyLCBOVUxMLCBjYWxsYWJsZSwgY2VfcHRyLCBmcHRyX3B0ciwgZXJyb3Ig VFNSTUxTX0NDKTsKKwkJCXJldHVybiB6ZW5kX2lzX2NhbGxhYmxlX2NoZWNrX2Z1bmMoY2hlY2tf ZmxhZ3MsIHpvYmpfcHRyX3B0ciwgTlVMTCwgY2FsbGFibGUsIGNlX3B0ciwgZmV0Y2hfdHlwZSwg ZnB0cl9wdHIsIGVycm9yIFRTUk1MU19DQyk7CiAKIAkJY2FzZSBJU19BUlJBWToKIAkJCXsKQEAg LTI1NTIsMTMgKzI1NTksMTYgQEAKIAkJCQkJCQlaX1NUUkxFTl9QUChvYmopID09IHNpemVvZigi c2VsZiIpIC0gMSAmJgogCQkJCQkJCSFtZW1jbXAobGNuYW1lLCAic2VsZiIsIHNpemVvZigic2Vs ZiIpIC0gMSkpIHsKIAkJCQkJCQljZSA9IEVHKGFjdGl2ZV9vcF9hcnJheSktPnNjb3BlOworCQkJ CQkJCSpmZXRjaF90eXBlID0gWkVORF9GRVRDSF9DTEFTU19TRUxGOwogCQkJCQkJfSBlbHNlIGlm IChFRyhhY3RpdmVfb3BfYXJyYXkpICYmIEVHKGFjdGl2ZV9vcF9hcnJheSktPnNjb3BlICYmCiAJ CQkJCQkJWl9TVFJMRU5fUFAob2JqKSA9PSBzaXplb2YoInBhcmVudCIpIC0gMSAmJiAKIAkJCQkJ CQkhbWVtY21wKGxjbmFtZSwgInBhcmVudCIsIHNpemVvZigicGFyZW50IikgLSAxKSkgewogCQkJ CQkJCWNlID0gRUcoYWN0aXZlX29wX2FycmF5KS0+c2NvcGUtPnBhcmVudDsKKwkJCQkJCQkqZmV0 Y2hfdHlwZSA9IFpFTkRfRkVUQ0hfQ0xBU1NfUEFSRU5UOwogCQkJCQkJfSBlbHNlIGlmIChaX1NU UkxFTl9QUChvYmopID09IHNpemVvZigic3RhdGljIikgLSAxICYmCiAJCQkJCQkJIW1lbWNtcChs Y25hbWUsICJzdGF0aWMiLCBzaXplb2YoInN0YXRpYyIpIC0gMSkpIHsKIAkJCQkJCQljZSA9IEVH KGNhbGxlZF9zY29wZSk7CisJCQkJCQkJKmZldGNoX3R5cGUgPSBaRU5EX0ZFVENIX0NMQVNTX1NU QVRJQzsKIAkJCQkJCX0gZWxzZSBpZiAoemVuZF9sb29rdXBfY2xhc3MoWl9TVFJWQUxfUFAob2Jq KSwgWl9TVFJMRU5fUFAob2JqKSwgJnBjZSBUU1JNTFNfQ0MpID09IFNVQ0NFU1MpIHsKIAkJCQkJ CQljZSA9ICpwY2U7CiAJCQkJCQl9CkBAIC0yNTg3LDcgKzI1OTcsNyBAQAogCQkJCQl9CiAKIAkJ CQkJaWYgKGNlKSB7Ci0JCQkJCQlyZXR1cm4gemVuZF9pc19jYWxsYWJsZV9jaGVja19mdW5jKGNo ZWNrX2ZsYWdzLCB6b2JqX3B0cl9wdHIsIGNlLCAqbWV0aG9kLCBjZV9wdHIsIGZwdHJfcHRyLCBl cnJvciBUU1JNTFNfQ0MpOworCQkJCQkJcmV0dXJuIHplbmRfaXNfY2FsbGFibGVfY2hlY2tfZnVu YyhjaGVja19mbGFncywgem9ial9wdHJfcHRyLCBjZSwgKm1ldGhvZCwgY2VfcHRyLCBmZXRjaF90 eXBlLCBmcHRyX3B0ciwgZXJyb3IgVFNSTUxTX0NDKTsKIAkJCQkJfSBlbHNlIHsKIAkJCQkJCWlm IChlcnJvcikgemVuZF9zcHByaW50ZihlcnJvciwgMCwgImZpcnN0IGFycmF5IG1lbWJlciBpcyBu b3QgYSB2YWxpZCAlcyIsIFpfVFlQRV9QUChvYmopID09IElTX1NUUklORyA/ICJjbGFzcyBuYW1l IiA6ICJvYmplY3QiKTsKIAkJCQkJfQpAQCAtMjYzMCw3ICsyNjQwLDcgQEAKIHsKIAlUU1JNTFNf RkVUQ0goKTsKIAotCXJldHVybiB6ZW5kX2lzX2NhbGxhYmxlX2V4KGNhbGxhYmxlLCBjaGVja19m bGFncywgY2FsbGFibGVfbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCBUU1JNTFNf Q0MpOworCXJldHVybiB6ZW5kX2lzX2NhbGxhYmxlX2V4KGNhbGxhYmxlLCBjaGVja19mbGFncywg Y2FsbGFibGVfbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCBUU1JNTFNf Q0MpOwogfQogLyogfX19ICovCiAKQEAgLTI2NDAsNyArMjY1MCw3IEBACiAJemVuZF9mdW5jdGlv biAqZnB0cjsKIAl6dmFsICoqem9ial9wdHI7CiAKLQlpZiAoemVuZF9pc19jYWxsYWJsZV9leChj YWxsYWJsZSwgSVNfQ0FMTEFCTEVfU1RSSUNULCBjYWxsYWJsZV9uYW1lLCBOVUxMLCAmY2UsICZm cHRyLCAmem9ial9wdHIsIE5VTEwgVFNSTUxTX0NDKSkgeworCWlmICh6ZW5kX2lzX2NhbGxhYmxl X2V4KGNhbGxhYmxlLCBJU19DQUxMQUJMRV9TVFJJQ1QsIGNhbGxhYmxlX25hbWUsIE5VTEwsICZj ZSwgTlVMTCwgJmZwdHIsICZ6b2JqX3B0ciwgTlVMTCBUU1JNTFNfQ0MpKSB7CiAJCWlmIChaX1RZ UEVfUChjYWxsYWJsZSkgPT0gSVNfU1RSSU5HICYmIGNlKSB7CiAJCQl6dmFsX2R0b3IoY2FsbGFi bGUpOwogCQkJYXJyYXlfaW5pdChjYWxsYWJsZSk7CkBAIC0yNjYwLDggKzI2NzAsOSBAQAogCXpl bmRfY2xhc3NfZW50cnkgKmNlOwogCXplbmRfZnVuY3Rpb24gKmZ1bmM7CiAJenZhbCAqKm9iajsK Kwl6ZW5kX3VpbnQgZmV0Y2hfdHlwZTsKIAotCWlmICghemVuZF9pc19jYWxsYWJsZV9leChjYWxs YWJsZSwgY2hlY2tfZmxhZ3MsIGNhbGxhYmxlX25hbWUsIE5VTEwsICZjZSwgJmZ1bmMsICZvYmos IGVycm9yIFRTUk1MU19DQykpIHsKKwlpZiAoIXplbmRfaXNfY2FsbGFibGVfZXgoY2FsbGFibGUs IGNoZWNrX2ZsYWdzLCBjYWxsYWJsZV9uYW1lLCBOVUxMLCAmY2UsICZmZXRjaF90eXBlLCAmZnVu YywgJm9iaiwgZXJyb3IgVFNSTUxTX0NDKSkgewogCQlyZXR1cm4gRkFJTFVSRTsKIAl9CiAKQEAg LTI2ODcsNyArMjY5OCwxMSBAQAogCX0gZWxzZSB7CiAJCWZjYy0+aW5pdGlhbGl6ZWQgPSAxOwog CQlmY2MtPmZ1bmN0aW9uX2hhbmRsZXIgPSBmdW5jOwotCQlmY2MtPmNhbGxpbmdfc2NvcGUgPSBj ZTsKKwkJaWYgKGZldGNoX3R5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJFTlQpIHsKKwkJCWZj Yy0+Y2FsbGluZ19zY29wZSA9IEVHKGNhbGxlZF9zY29wZSk7CisJCX0gZWxzZSB7CisJCQlmY2Mt PmNhbGxpbmdfc2NvcGUgPSBjZTsKKwkJfQogCQlmY2MtPm9iamVjdF9wcCA9IG9iajsKIAl9CiAJ ZWZyZWUobGNuYW1lKTsKSW5kZXg6IFplbmQvemVuZF9BUEkuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX0FQSS5oLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjIwNy4yLjguMi44LjIuOQpkaWZmIC11IC1yMS4yMDcuMi44LjIuOC4yLjkgemVuZF9BUEku aAotLS0gWmVuZC96ZW5kX0FQSS5oCTEwIE1hciAyMDA4IDIyOjAyOjQxIC0wMDAwCTEuMjA3LjIu OC4yLjguMi45CisrKyBaZW5kL3plbmRfQVBJLmgJMTMgTWFyIDIwMDggMDM6MTQ6NTcgLTAwMDAK QEAgLTIyOSw3ICsyMjksNyBAQAogCiAjZGVmaW5lIElTX0NBTExBQkxFX1NUUklDVCAgKElTX0NB TExBQkxFX0NIRUNLX0lTX1NUQVRJQykKIAotWkVORF9BUEkgemVuZF9ib29sIHplbmRfaXNfY2Fs bGFibGVfZXgoenZhbCAqY2FsbGFibGUsIHVpbnQgY2hlY2tfZmxhZ3MsIGNoYXIgKipjYWxsYWJs ZV9uYW1lLCBpbnQgKmNhbGxhYmxlX25hbWVfbGVuLCB6ZW5kX2NsYXNzX2VudHJ5ICoqY2VfcHRy LCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIHp2YWwgKioqem9ial9wdHJfcHRyLCBjaGFyICoq ZXJyb3IgVFNSTUxTX0RDKTsKK1pFTkRfQVBJIHplbmRfYm9vbCB6ZW5kX2lzX2NhbGxhYmxlX2V4 KHp2YWwgKmNhbGxhYmxlLCB1aW50IGNoZWNrX2ZsYWdzLCBjaGFyICoqY2FsbGFibGVfbmFtZSwg aW50ICpjYWxsYWJsZV9uYW1lX2xlbiwgemVuZF9jbGFzc19lbnRyeSAqKmNlX3B0ciwgemVuZF91 aW50ICpmZXRjaF90eXBlLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIHp2YWwgKioqem9ial9w dHJfcHRyLCBjaGFyICoqZXJyb3IgVFNSTUxTX0RDKTsKIFpFTkRfQVBJIHplbmRfYm9vbCB6ZW5k X2lzX2NhbGxhYmxlKHp2YWwgKmNhbGxhYmxlLCB1aW50IGNoZWNrX2ZsYWdzLCBjaGFyICoqY2Fs bGFibGVfbmFtZSk7CiBaRU5EX0FQSSB6ZW5kX2Jvb2wgemVuZF9tYWtlX2NhbGxhYmxlKHp2YWwg KmNhbGxhYmxlLCBjaGFyICoqY2FsbGFibGVfbmFtZSBUU1JNTFNfREMpOwogWkVORF9BUEkgY29u c3QgY2hhciAqemVuZF9nZXRfbW9kdWxlX3ZlcnNpb24oY29uc3QgY2hhciAqbW9kdWxlX25hbWUp OwpJbmRleDogWmVuZC96ZW5kX2V4ZWN1dGVfQVBJLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9leGVjdXRlX0FQSS5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjMzMS4yLjIwLjIuMjQuMi4yOApkaWZmIC11IC1yMS4zMzEuMi4yMC4yLjI0LjIuMjgg emVuZF9leGVjdXRlX0FQSS5jCi0tLSBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwk5IE1hciAyMDA4 IDIwOjUyOjI5IC0wMDAwCTEuMzMxLjIuMjAuMi4yNC4yLjI4CisrKyBaZW5kL3plbmRfZXhlY3V0 ZV9BUEkuYwkxMyBNYXIgMjAwOCAwMzoxNDo1NyAtMDAwMApAQCAtNzczLDYgKzc3Myw3IEBACiAJ CQkJCWZvdW5kID0gKCpjZSAhPSBOVUxMP1NVQ0NFU1M6RkFJTFVSRSk7CiAJCQkJCWZjaS0+b2Jq ZWN0X3BwID0gRUcoVGhpcyk/JkVHKFRoaXMpOk5VTEw7CiAJCQkJCUVYKG9iamVjdCkgPSBFRyhU aGlzKTsKKwkJCQkJY2FsbGluZ19zY29wZSA9ICpjZTsKIAkJCQl9IGVsc2UgaWYgKHN0cmNtcCha X1NUUlZBTF9QUChmY2ktPm9iamVjdF9wcCksICJwYXJlbnQiKSA9PSAwICYmIEVHKGFjdGl2ZV9v cF9hcnJheSkpIHsKIAogCQkJCQlpZiAoIUVHKGFjdGl2ZV9vcF9hcnJheSktPnNjb3BlKSB7CkBA IC03ODUsNiArNzg2LDExIEBACiAJCQkJCWZvdW5kID0gKCpjZSAhPSBOVUxMP1NVQ0NFU1M6RkFJ TFVSRSk7CiAJCQkJCWZjaS0+b2JqZWN0X3BwID0gRUcoVGhpcyk/JkVHKFRoaXMpOk5VTEw7CiAJ CQkJCUVYKG9iamVjdCkgPSBFRyhUaGlzKTsKKwkJCQkJaWYgKEVHKGNhbGxlZF9zY29wZSkpIHsK KwkJCQkJCWNhbGxpbmdfc2NvcGUgPSBFRyhjYWxsZWRfc2NvcGUpOworCQkJCQl9IGVsc2Ugewor CQkJCQkJY2FsbGluZ19zY29wZSA9ICpjZTsKKwkJCQkJfQogCQkJCX0gZWxzZSBpZiAoWl9TVFJM RU5fUFAoZmNpLT5vYmplY3RfcHApID09IHNpemVvZigic3RhdGljIikgLSAxICYmCiAJCQkJCSFt ZW1jbXAoWl9TVFJWQUxfUFAoZmNpLT5vYmplY3RfcHApLCAic3RhdGljIiwgc2l6ZW9mKCJzdGF0 aWMiKSAtIDEpCiAJCQkJKSB7CkBAIC03OTUsNiArODAxLDcgQEAKIAkJCQkJZm91bmQgPSAoKmNl ICE9IE5VTEw/U1VDQ0VTUzpGQUlMVVJFKTsKIAkJCQkJZmNpLT5vYmplY3RfcHAgPSBFRyhUaGlz KT8mRUcoVGhpcyk6TlVMTDsKIAkJCQkJRVgob2JqZWN0KSA9IEVHKFRoaXMpOworCQkJCQljYWxs aW5nX3Njb3BlID0gKmNlOwogCQkJCX0gZWxzZSB7CiAJCQkJCXplbmRfY2xhc3NfZW50cnkgKnNj b3BlOwogCQkJCQlzY29wZSA9IEVHKGFjdGl2ZV9vcF9hcnJheSkgPyBFRyhhY3RpdmVfb3BfYXJy YXkpLT5zY29wZSA6IE5VTEw7CkBAIC04MTEsMTIgKzgxOCwxMiBAQAogCQkJCQl9IGVsc2Ugewog CQkJCQkJZmNpLT5vYmplY3RfcHAgPSBOVUxMOwogCQkJCQl9CisJCQkJCWNhbGxpbmdfc2NvcGUg PSAqY2U7CiAJCQkJfQogCQkJCWlmIChmb3VuZCA9PSBGQUlMVVJFKQogCQkJCQlyZXR1cm4gRkFJ TFVSRTsKIAogCQkJCWZjaS0+ZnVuY3Rpb25fdGFibGUgPSAmKCpjZSktPmZ1bmN0aW9uX3RhYmxl OwotCQkJCWNhbGxpbmdfc2NvcGUgPSAqY2U7CiAJCQl9IGVsc2UgewogCQkJCXplbmRfZXJyb3Io RV9OT1RJQ0UsICJOb24tY2FsbGFibGUgYXJyYXkgcGFzc2VkIHRvIHplbmRfY2FsbF9mdW5jdGlv bigpIik7CiAJCQkJcmV0dXJuIEZBSUxVUkU7CkluZGV4OiBaZW5kL3plbmRfdm1fZGVmLmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF92bV9kZWYuaCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS41OS4yLjI5LjIuNDguMi40MgpkaWZmIC11IC1yMS41OS4y LjI5LjIuNDguMi40MiB6ZW5kX3ZtX2RlZi5oCi0tLSBaZW5kL3plbmRfdm1fZGVmLmgJMTIgTWFy IDIwMDggMTA6MzI6MTEgLTAwMDAJMS41OS4yLjI5LjIuNDguMi40MgorKysgWmVuZC96ZW5kX3Zt X2RlZi5oCTEzIE1hciAyMDA4IDAzOjE0OjU4IC0wMDAwCkBAIC0xOTM2LDggKzE5MzYsMTUgQEAK IAkJaWYgKCFjZSkgewogCQkJemVuZF9lcnJvcihFX0VSUk9SLCAiQ2xhc3MgJyVzJyBub3QgZm91 bmQiLCBaX1NUUlZBTChvcGxpbmUtPm9wMS51LmNvbnN0YW50KSk7CiAJCX0KKwkJRVgoY2FsbGVk X3Njb3BlKSA9IGNlOwogCX0gZWxzZSB7CiAJCWNlID0gRVhfVChvcGxpbmUtPm9wMS51LnZhciku Y2xhc3NfZW50cnk7CisJCQorCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpFTkRfRkVU Q0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVkX3Njb3Bl KTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0KIAlpZihP UDJfVFlQRSAhPSBJU19VTlVTRUQpIHsKIAkJY2hhciAqZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBA IC0xOTc3LDggKzE5ODQsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAot CUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3Mg JiBaRU5EX0FDQ19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKSW5k ZXg6IFplbmQvemVuZF92bV9leGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRv cnkvWmVuZEVuZ2luZTIvemVuZF92bV9leGVjdXRlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NjIuMi4zMC4yLjQ5LjIuNDEKZGlmZiAtdSAtcjEuNjIuMi4zMC4yLjQ5LjIuNDEgemVuZF92bV9l eGVjdXRlLmgKLS0tIFplbmQvemVuZF92bV9leGVjdXRlLmgJMTIgTWFyIDIwMDggMTA6MzI6MTIg LTAwMDAJMS42Mi4yLjMwLjIuNDkuMi40MQorKysgWmVuZC96ZW5kX3ZtX2V4ZWN1dGUuaAkxMyBN YXIgMjAwOCAwMzoxNTowNiAtMDAwMApAQCAtMjM4Myw4ICsyMzgzLDE1IEBACiAJCWlmICghY2Up IHsKIAkJCXplbmRfZXJyb3IoRV9FUlJPUiwgIkNsYXNzICclcycgbm90IGZvdW5kIiwgWl9TVFJW QUwob3BsaW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBj ZTsKIAl9IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5 OworCisJCWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJF TlQpIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9IGVsc2Ug eworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJfQogCWlmKElTX0NPTlNUICE9IElT X1VOVVNFRCkgewogCQljaGFyICpmdW5jdGlvbl9uYW1lX3N0cnZhbDsKQEAgLTI0MjQsOCArMjQz MSw2IEBACiAJCUVYKGZiYykgPSBjZS0+Y29uc3RydWN0b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Nj b3BlKSA9IGNlOwotCiAJaWYgKEVYKGZiYyktPmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NU QVRJQykgewogCQlFWChvYmplY3QpID0gTlVMTDsKIAl9IGVsc2UgewpAQCAtMjk1Myw4ICsyOTU4 LDE1IEBACiAJCWlmICghY2UpIHsKIAkJCXplbmRfZXJyb3IoRV9FUlJPUiwgIkNsYXNzICclcycg bm90IGZvdW5kIiwgWl9TVFJWQUwob3BsaW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJCUVY KGNhbGxlZF9zY29wZSkgPSBjZTsKIAl9IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5vcDEu dS52YXIpLmNsYXNzX2VudHJ5OworCisJCWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0gWkVO RF9GRVRDSF9DTEFTU19QQVJFTlQpIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxsZWRf c2NvcGUpOworCQl9IGVsc2UgeworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJfQog CWlmKElTX1RNUF9WQVIgIT0gSVNfVU5VU0VEKSB7CiAJCWNoYXIgKmZ1bmN0aW9uX25hbWVfc3Ry dmFsOwpAQCAtMjk5NCw4ICszMDA2LDYgQEAKIAkJRVgoZmJjKSA9IGNlLT5jb25zdHJ1Y3RvcjsK IAl9CiAKLQlFWChjYWxsZWRfc2NvcGUpID0gY2U7Ci0KIAlpZiAoRVgoZmJjKS0+Y29tbW9uLmZu X2ZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSB7CiAJCUVYKG9iamVjdCkgPSBOVUxMOwogCX0gZWxz ZSB7CkBAIC0zNDE4LDggKzM0MjgsMTUgQEAKIAkJaWYgKCFjZSkgewogCQkJemVuZF9lcnJvcihF X0VSUk9SLCAiQ2xhc3MgJyVzJyBub3QgZm91bmQiLCBaX1NUUlZBTChvcGxpbmUtPm9wMS51LmNv bnN0YW50KSk7CiAJCX0KKwkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwogCX0gZWxzZSB7CiAJCWNl ID0gRVhfVChvcGxpbmUtPm9wMS51LnZhcikuY2xhc3NfZW50cnk7CisKKwkJaWYgKG9wbGluZS0+ b3AxLnUuRUEudHlwZSA9PSBaRU5EX0ZFVENIX0NMQVNTX1BBUkVOVCkgeworCQkJRVgoY2FsbGVk X3Njb3BlKSA9IEVHKGNhbGxlZF9zY29wZSk7CisJCX0gZWxzZSB7CisJCQlFWChjYWxsZWRfc2Nv cGUpID0gY2U7CisJCX0KIAl9CiAJaWYoSVNfVkFSICE9IElTX1VOVVNFRCkgewogCQljaGFyICpm dW5jdGlvbl9uYW1lX3N0cnZhbDsKQEAgLTM0NTksOCArMzQ3Niw2IEBACiAJCUVYKGZiYykgPSBj ZS0+Y29uc3RydWN0b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJaWYgKEVY KGZiYyktPmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChvYmplY3Qp ID0gTlVMTDsKIAl9IGVsc2UgewpAQCAtMzY0MCw4ICszNjU1LDE1IEBACiAJCWlmICghY2UpIHsK IAkJCXplbmRfZXJyb3IoRV9FUlJPUiwgIkNsYXNzICclcycgbm90IGZvdW5kIiwgWl9TVFJWQUwo b3BsaW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsK IAl9IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5Owor CisJCWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJFTlQp IHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9IGVsc2Ugewor CQkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJfQogCWlmKElTX1VOVVNFRCAhPSBJU19V TlVTRUQpIHsKIAkJY2hhciAqZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBAIC0zNjgxLDggKzM3MDMs NiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAotCUVYKGNhbGxlZF9zY29w ZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3MgJiBaRU5EX0FDQ19TVEFU SUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKQEAgLTQwNzMsOCArNDA5Mywx NSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJXMnIG5v dCBmb3VuZCIsIFpfU1RSVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlFWChj YWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3AxLnUu dmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpFTkRf RkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVkX3Nj b3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0KIAlp ZihJU19DViAhPSBJU19VTlVTRUQpIHsKIAkJY2hhciAqZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBA IC00MTE0LDggKzQxNDEsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAot CUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3Mg JiBaRU5EX0FDQ19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKQEAg LTk5NDIsOCArOTk2NywxNSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1Is ICJDbGFzcyAnJXMnIG5vdCBmb3VuZCIsIFpfU1RSVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQp KTsKIAkJfQorCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9U KG9wbGluZS0+b3AxLnUudmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5F QS50eXBlID09IFpFTkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUp ID0gRUcoY2FsbGVkX3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBj ZTsKKwkJfQogCX0KIAlpZihJU19DT05TVCAhPSBJU19VTlVTRUQpIHsKIAkJY2hhciAqZnVuY3Rp b25fbmFtZV9zdHJ2YWw7CkBAIC05OTgzLDggKzEwMDE1LDYgQEAKIAkJRVgoZmJjKSA9IGNlLT5j b25zdHJ1Y3RvcjsKIAl9CiAKLQlFWChjYWxsZWRfc2NvcGUpID0gY2U7Ci0KIAlpZiAoRVgoZmJj KS0+Y29tbW9uLmZuX2ZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSB7CiAJCUVYKG9iamVjdCkgPSBO VUxMOwogCX0gZWxzZSB7CkBAIC0xMTc3MSw4ICsxMTgwMSwxNSBAQAogCQlpZiAoIWNlKSB7CiAJ CQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJXMnIG5vdCBmb3VuZCIsIFpfU1RSVkFMKG9w bGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CiAJ fSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3AxLnUudmFyKS5jbGFzc19lbnRyeTsKKwor CQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpFTkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7 CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVkX3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJ CUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0KIAlpZihJU19UTVBfVkFSICE9IElTX1VO VVNFRCkgewogCQljaGFyICpmdW5jdGlvbl9uYW1lX3N0cnZhbDsKQEAgLTExODEyLDggKzExODQ5 LDYgQEAKIAkJRVgoZmJjKSA9IGNlLT5jb25zdHJ1Y3RvcjsKIAl9CiAKLQlFWChjYWxsZWRfc2Nv cGUpID0gY2U7Ci0KIAlpZiAoRVgoZmJjKS0+Y29tbW9uLmZuX2ZsYWdzICYgWkVORF9BQ0NfU1RB VElDKSB7CiAJCUVYKG9iamVjdCkgPSBOVUxMOwogCX0gZWxzZSB7CkBAIC0xMzU3MCw4ICsxMzYw NSwxNSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJXMn IG5vdCBmb3VuZCIsIFpfU1RSVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlF WChjYWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3Ax LnUudmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpF TkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVk X3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0K IAlpZihJU19WQVIgIT0gSVNfVU5VU0VEKSB7CiAJCWNoYXIgKmZ1bmN0aW9uX25hbWVfc3RydmFs OwpAQCAtMTM2MTEsOCArMTM2NTMsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwog CX0KIAotCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5f ZmxhZ3MgJiBaRU5EX0FDQ19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNl IHsKQEAgLTE0NDczLDggKzE0NTEzLDE1IEBACiAJCWlmICghY2UpIHsKIAkJCXplbmRfZXJyb3Io RV9FUlJPUiwgIkNsYXNzICclcycgbm90IGZvdW5kIiwgWl9TVFJWQUwob3BsaW5lLT5vcDEudS5j b25zdGFudCkpOwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKIAl9IGVsc2UgewogCQlj ZSA9IEVYX1Qob3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5OworCisJCWlmIChvcGxpbmUt Pm9wMS51LkVBLnR5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJFTlQpIHsKKwkJCUVYKGNhbGxl ZF9zY29wZSkgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9IGVsc2UgeworCQkJRVgoY2FsbGVkX3Nj b3BlKSA9IGNlOworCQl9CiAJfQogCWlmKElTX1VOVVNFRCAhPSBJU19VTlVTRUQpIHsKIAkJY2hh ciAqZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBAIC0xNDUxNCw4ICsxNDU2MSw2IEBACiAJCUVYKGZi YykgPSBjZS0+Y29uc3RydWN0b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJ aWYgKEVYKGZiYyktPmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChv YmplY3QpID0gTlVMTDsKIAl9IGVsc2UgewpAQCAtMTU5NzMsOCArMTYwMTgsMTUgQEAKIAkJaWYg KCFjZSkgewogCQkJemVuZF9lcnJvcihFX0VSUk9SLCAiQ2xhc3MgJyVzJyBub3QgZm91bmQiLCBa X1NUUlZBTChvcGxpbmUtPm9wMS51LmNvbnN0YW50KSk7CiAJCX0KKwkJRVgoY2FsbGVkX3Njb3Bl KSA9IGNlOwogCX0gZWxzZSB7CiAJCWNlID0gRVhfVChvcGxpbmUtPm9wMS51LnZhcikuY2xhc3Nf ZW50cnk7CisKKwkJaWYgKG9wbGluZS0+b3AxLnUuRUEudHlwZSA9PSBaRU5EX0ZFVENIX0NMQVNT X1BBUkVOVCkgeworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IEVHKGNhbGxlZF9zY29wZSk7CisJCX0g ZWxzZSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CisJCX0KIAl9CiAJaWYoSVNfQ1YgIT0g SVNfVU5VU0VEKSB7CiAJCWNoYXIgKmZ1bmN0aW9uX25hbWVfc3RydmFsOwpAQCAtMTYwMTQsOCAr MTYwNjYsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAotCUVYKGNhbGxl ZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3MgJiBaRU5EX0FD Q19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKSW5kZXg6IGV4dC9z cGwvcGhwX3NwbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMvZXh0 L3NwbC9waHBfc3BsLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTIuMi4yOC4yLjE3LjIuMTQK ZGlmZiAtdSAtcjEuNTIuMi4yOC4yLjE3LjIuMTQgcGhwX3NwbC5jCi0tLSBleHQvc3BsL3BocF9z cGwuYwkyOSBGZWIgMjAwOCAxMzo1NToyMyAtMDAwMAkxLjUyLjIuMjguMi4xNy4yLjE0CisrKyBl eHQvc3BsL3BocF9zcGwuYwkxMyBNYXIgMjAwOCAwMzoxNTowOSAtMDAwMApAQCAtNDI3LDcgKzQy Nyw3IEBACiAJCQl9CiAJCX0KIAkKLQkJaWYgKCF6ZW5kX2lzX2NhbGxhYmxlX2V4KHpjYWxsYWJs ZSwgSVNfQ0FMTEFCTEVfU1RSSUNULCAmZnVuY19uYW1lLCAmZnVuY19uYW1lX2xlbiwgJmFsZmku Y2UsICZhbGZpLmZ1bmNfcHRyLCAmb2JqX3B0ciwgJmVycm9yIFRTUk1MU19DQykpIHsKKwkJaWYg KCF6ZW5kX2lzX2NhbGxhYmxlX2V4KHpjYWxsYWJsZSwgSVNfQ0FMTEFCTEVfU1RSSUNULCAmZnVu Y19uYW1lLCAmZnVuY19uYW1lX2xlbiwgJmFsZmkuY2UsIE5VTEwsICZhbGZpLmZ1bmNfcHRyLCAm b2JqX3B0ciwgJmVycm9yIFRTUk1MU19DQykpIHsKIAkJCWlmIChaX1RZUEVfUCh6Y2FsbGFibGUp ID09IElTX0FSUkFZKSB7CiAJCQkJaWYgKCFvYmpfcHRyICYmIGFsZmkuZnVuY19wdHIgJiYgIShh bGZpLmZ1bmNfcHRyLT5jb21tb24uZm5fZmxhZ3MgJiBaRU5EX0FDQ19TVEFUSUMpKSB7CiAJCQkJ CWlmIChkb190aHJvdykgewpAQCAtNTM0LDcgKzUzNCw3IEBACiAJCXJldHVybjsKIAl9CiAKLQlp ZiAoIXplbmRfaXNfY2FsbGFibGVfZXgoemNhbGxhYmxlLCBJU19DQUxMQUJMRV9DSEVDS19TWU5U QVhfT05MWSwgJmZ1bmNfbmFtZSwgJmZ1bmNfbmFtZV9sZW4sIE5VTEwsIE5VTEwsICZvYmpfcHRy LCAmZXJyb3IgVFNSTUxTX0NDKSkgeworCWlmICghemVuZF9pc19jYWxsYWJsZV9leCh6Y2FsbGFi bGUsIElTX0NBTExBQkxFX0NIRUNLX1NZTlRBWF9PTkxZLCAmZnVuY19uYW1lLCAmZnVuY19uYW1l X2xlbiwgTlVMTCwgTlVMTCwgTlVMTCwgJm9ial9wdHIsICZlcnJvciBUU1JNTFNfQ0MpKSB7CiAJ CXplbmRfdGhyb3dfZXhjZXB0aW9uX2V4KHNwbF9jZV9Mb2dpY0V4Y2VwdGlvbiwgMCBUU1JNTFNf Q0MsICJVbmFibGUgdG8gdW5yZWdpc3RlciBpbnZhbGlkIGZ1bmN0aW9uICglcykiLCBlcnJvcik7 CiAJCWlmIChlcnJvcikgewogCQkJZWZyZWUoZXJyb3IpOwo= ------=_Part_901_25789810.1205381662920 Content-Type: text/x-patch; name=lsb.parent-forwarding.v2.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fdqt3jvv3 Content-Disposition: attachment; filename=lsb.parent-forwarding.v2.patch SW5kZXg6IFplbmQvemVuZF9BUEkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9a ZW5kRW5naW5lMi96ZW5kX0FQSS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ2NQpkaWZmIC11 IC1yMS40NjUgemVuZF9BUEkuYwotLS0gWmVuZC96ZW5kX0FQSS5jCTUgTWFyIDIwMDggMTQ6Mzk6 MDUgLTAwMDAJMS40NjUKKysrIFplbmQvemVuZF9BUEkuYwkxMyBNYXIgMjAwOCAwMzozOToxNSAt MDAwMApAQCAtMjY0NCw3ICsyNjQ0LDcgQEAKIH0KIC8qIH19fSAqLwogCi1zdGF0aWMgaW50IHpl bmRfaXNfY2FsbGFibGVfY2hlY2tfZnVuYyhpbnQgY2hlY2tfZmxhZ3MsIHp2YWwgKioqem9ial9w dHJfcHRyLCB6ZW5kX2NsYXNzX2VudHJ5ICpjZV9vcmcsIHp2YWwgKmNhbGxhYmxlLCB6ZW5kX2Ns YXNzX2VudHJ5ICoqY2VfcHRyLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIGNoYXIgKiplcnJv ciBUU1JNTFNfREMpIC8qIHt7eyAqLworc3RhdGljIGludCB6ZW5kX2lzX2NhbGxhYmxlX2NoZWNr X2Z1bmMoaW50IGNoZWNrX2ZsYWdzLCB6dmFsICoqKnpvYmpfcHRyX3B0ciwgemVuZF9jbGFzc19l bnRyeSAqY2Vfb3JnLCB6dmFsICpjYWxsYWJsZSwgemVuZF9jbGFzc19lbnRyeSAqKmNlX3B0ciwg emVuZF91aW50ICpmZXRjaF90eXBlLCB6ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIGNoYXIgKipl cnJvciBUU1JNTFNfREMpIC8qIHt7eyAqLwogewogCWludCByZXR2YWw7CiAJenN0ciBsbW5hbWUs IG1uYW1lLCBjb2xvbiA9IE5VTExfWlNUUjsKQEAgLTI3MjcsNiArMjcyNyw3IEBACiAJCQlFRyhz Y29wZSkgPSBjZV9vcmc7CiAJCX0KIAkJKmNlX3B0ciA9IHplbmRfdV9mZXRjaF9jbGFzcyhaX1RZ UEVfUChjYWxsYWJsZSksIFpfVU5JVkFMX1AoY2FsbGFibGUpLCBjbGVuLCBaRU5EX0ZFVENIX0NM QVNTX0FVVE8gfCBaRU5EX0ZFVENIX0NMQVNTX1NJTEVOVCBUU1JNTFNfQ0MpOworCQkqZmV0Y2hf dHlwZSA9IHplbmRfZ2V0X2NsYXNzX2ZldGNoX3R5cGUoWl9UWVBFX1AoY2FsbGFibGUpLCBaX1VO SVZBTF9QKGNhbGxhYmxlKSwgY2xlbik7CiAJCUVHKHNjb3BlKSA9IGxhc3Rfc2NvcGU7CiAJCWlm ICghKmNlX3B0cikgewogCQkJaWYgKGVycm9yKSB7CkBAIC0yODI5LDExICsyODMwLDEyIEBACiB9 CiAvKiB9fX0gKi8KIAotWkVORF9BUEkgemVuZF9ib29sIHplbmRfaXNfY2FsbGFibGVfZXgoenZh bCAqY2FsbGFibGUsIHVpbnQgY2hlY2tfZmxhZ3MsIHp2YWwgKmNhbGxhYmxlX25hbWUsIHplbmRf Y2xhc3NfZW50cnkgKipjZV9wdHIsIHplbmRfZnVuY3Rpb24gKipmcHRyX3B0ciwgenZhbCAqKip6 b2JqX3B0cl9wdHIsIGNoYXIgKiplcnJvciBUU1JNTFNfREMpIC8qIHt7eyAqLworWkVORF9BUEkg emVuZF9ib29sIHplbmRfaXNfY2FsbGFibGVfZXgoenZhbCAqY2FsbGFibGUsIHVpbnQgY2hlY2tf ZmxhZ3MsIHp2YWwgKmNhbGxhYmxlX25hbWUsIHplbmRfY2xhc3NfZW50cnkgKipjZV9wdHIsIHpl bmRfdWludCAqZmV0Y2hfdHlwZSwgemVuZF9mdW5jdGlvbiAqKmZwdHJfcHRyLCB6dmFsICoqKnpv YmpfcHRyX3B0ciwgY2hhciAqKmVycm9yIFRTUk1MU19EQykgLyoge3t7ICovCiB7CiAJenN0ciBs Y25hbWU7CiAJdW5zaWduZWQgaW50IGxjbmFtZV9sZW47CiAJemVuZF9jbGFzc19lbnRyeSAqY2Vf bG9jYWwsICoqcGNlOworCXplbmRfdWludCBmZXRjaF90eXBlX2xvY2FsOwogCXplbmRfZnVuY3Rp b24gKmZwdHJfbG9jYWw7CiAJenZhbCAqKnpvYmpfcHRyX2xvY2FsOwogCkBAIC0yODUyLDcgKzI4 NTQsMTIgQEAKIAlpZiAoZXJyb3IpIHsKIAkJKmVycm9yID0gTlVMTDsKIAl9CisJaWYgKGZldGNo X3R5cGUgPT0gTlVMTCkgeworCQlmZXRjaF90eXBlID0gJmZldGNoX3R5cGVfbG9jYWw7CisJfQor CQogCSpjZV9wdHIgPSBOVUxMOworCSpmZXRjaF90eXBlID0gMDsKIAkqZnB0cl9wdHIgPSBOVUxM OwogCSp6b2JqX3B0cl9wdHIgPSBOVUxMOwogCkBAIC0yODY4LDcgKzI4NzUsNyBAQAogCQkJCXJl dHVybiAxOwogCQkJfQogCi0JCQlyZXR1cm4gemVuZF9pc19jYWxsYWJsZV9jaGVja19mdW5jKGNo ZWNrX2ZsYWdzLCB6b2JqX3B0cl9wdHIsIE5VTEwsIGNhbGxhYmxlLCBjZV9wdHIsIGZwdHJfcHRy LCBlcnJvciBUU1JNTFNfQ0MpOworCQkJcmV0dXJuIHplbmRfaXNfY2FsbGFibGVfY2hlY2tfZnVu YyhjaGVja19mbGFncywgem9ial9wdHJfcHRyLCBOVUxMLCBjYWxsYWJsZSwgY2VfcHRyLCBmZXRj aF90eXBlLCBmcHRyX3B0ciwgZXJyb3IgVFNSTUxTX0NDKTsKIAogCQljYXNlIElTX0FSUkFZOgog CQkJewpAQCAtMjk1MiwxMyArMjk1OSwxNiBAQAogCQkJCQkJCWxjbmFtZV9sZW4gPT0gc2l6ZW9m KCJzZWxmIiktMSAmJgogCQkJCQkJCVpFTkRfVV9FUVVBTChaX1RZUEVfUFAob2JqKSwgbGNuYW1l LCBsY25hbWVfbGVuLCAic2VsZiIsIHNpemVvZigic2VsZiIpLTEpKSB7CiAJCQkJCQkJY2UgPSBF RyhhY3RpdmVfb3BfYXJyYXkpLT5zY29wZTsKKwkJCQkJCQkqZmV0Y2hfdHlwZSA9IFpFTkRfRkVU Q0hfQ0xBU1NfU0VMRjsKIAkJCQkJCX0gZWxzZSBpZiAoRUcoYWN0aXZlX29wX2FycmF5KSAmJiBF RyhhY3RpdmVfb3BfYXJyYXkpLT5zY29wZSAmJgogCQkJCQkJCWxjbmFtZV9sZW4gPT0gc2l6ZW9m KCJwYXJlbnQiKS0xICYmCiAJCQkJCQkJWkVORF9VX0VRVUFMKFpfVFlQRV9QUChvYmopLCBsY25h bWUsIGxjbmFtZV9sZW4sICJwYXJlbnQiLCBzaXplb2YoInBhcmVudCIpLTEpKSB7CiAJCQkJCQkJ Y2UgPSBFRyhhY3RpdmVfb3BfYXJyYXkpLT5zY29wZS0+cGFyZW50OworCQkJCQkJCSpmZXRjaF90 eXBlID0gWkVORF9GRVRDSF9DTEFTU19QQVJFTlQ7CiAJCQkJCQl9IGVsc2UgaWYgKGxjbmFtZV9s ZW4gPT0gc2l6ZW9mKCJzdGF0aWMiKS0xICYmCiAJCQkJCQkJWkVORF9VX0VRVUFMKFpfVFlQRV9Q UChvYmopLCBsY25hbWUsIGxjbmFtZV9sZW4sICJzdGF0aWMiLCBzaXplb2YoInN0YXRpYyIpLTEp KSB7CiAJCQkJCQkJY2UgPSBFRyhjYWxsZWRfc2NvcGUpOworCQkJCQkJCSpmZXRjaF90eXBlID0g WkVORF9GRVRDSF9DTEFTU19TVEFUSUM7CiAJCQkJCQl9IGVsc2UgaWYgKHplbmRfdV9sb29rdXBf Y2xhc3MoWl9UWVBFX1BQKG9iaiksIFpfVU5JVkFMX1BQKG9iaiksIFpfVU5JTEVOX1BQKG9iaiks ICZwY2UgVFNSTUxTX0NDKSA9PSBTVUNDRVNTKSB7CiAJCQkJCQkJY2UgPSAqcGNlOwogCQkJCQkJ fQpAQCAtMzAxMyw3ICszMDIzLDcgQEAKIAkJCQkJfQogCiAJCQkJCWlmIChjZSkgewotCQkJCQkJ cmV0dXJuIHplbmRfaXNfY2FsbGFibGVfY2hlY2tfZnVuYyhjaGVja19mbGFncywgem9ial9wdHJf cHRyLCBjZSwgKm1ldGhvZCwgY2VfcHRyLCBmcHRyX3B0ciwgZXJyb3IgVFNSTUxTX0NDKTsKKwkJ CQkJCXJldHVybiB6ZW5kX2lzX2NhbGxhYmxlX2NoZWNrX2Z1bmMoY2hlY2tfZmxhZ3MsIHpvYmpf cHRyX3B0ciwgY2UsICptZXRob2QsIGNlX3B0ciwgZmV0Y2hfdHlwZSwgZnB0cl9wdHIsIGVycm9y IFRTUk1MU19DQyk7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQlpZiAoZXJyb3IpIHplbmRfc3Bwcmlu dGYoZXJyb3IsIDAsICJmaXJzdCBhcnJheSBtZW1iZXIgaXMgbm90IGEgdmFsaWQgJXMiLCAoWl9U WVBFX1BQKG9iaikgPT0gSVNfU1RSSU5HIHx8IFpfVFlQRV9QUChvYmopID09IElTX1VOSUNPREUp ID8gImNsYXNzIG5hbWUiIDogIm9iamVjdCIpOwogCQkJCQl9CkBAIC0zMDUxLDcgKzMwNjEsNyBA QAogewogCVRTUk1MU19GRVRDSCgpOwogCi0JcmV0dXJuIHplbmRfaXNfY2FsbGFibGVfZXgoY2Fs bGFibGUsIGNoZWNrX2ZsYWdzLCBjYWxsYWJsZV9uYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM IFRTUk1MU19DQyk7CisJcmV0dXJuIHplbmRfaXNfY2FsbGFibGVfZXgoY2FsbGFibGUsIGNoZWNr X2ZsYWdzLCBjYWxsYWJsZV9uYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIFRTUk1M U19DQyk7CiB9CiAvKiB9fX0gKi8KIApAQCAtMzA2MSw3ICszMDcxLDcgQEAKIAl6ZW5kX2Z1bmN0 aW9uICpmcHRyOwogCXp2YWwgKip6b2JqX3B0cjsKIAotCWlmICh6ZW5kX2lzX2NhbGxhYmxlX2V4 KGNhbGxhYmxlLCBJU19DQUxMQUJMRV9TVFJJQ1QsIGNhbGxhYmxlX25hbWUsICZjZSwgJmZwdHIs ICZ6b2JqX3B0ciwgTlVMTCBUU1JNTFNfQ0MpKSB7CisJaWYgKHplbmRfaXNfY2FsbGFibGVfZXgo Y2FsbGFibGUsIElTX0NBTExBQkxFX1NUUklDVCwgY2FsbGFibGVfbmFtZSwgJmNlLCBOVUxMLCAm ZnB0ciwgJnpvYmpfcHRyLCBOVUxMIFRTUk1MU19DQykpIHsKIAkJaWYgKChaX1RZUEVfUChjYWxs YWJsZSkgPT0gSVNfU1RSSU5HIHx8IFpfVFlQRV9QKGNhbGxhYmxlKSA9PSBJU19VTklDT0RFKSAm JiBjZSkgewogCQkJenZhbF9kdG9yKGNhbGxhYmxlKTsKIAkJCWFycmF5X2luaXQoY2FsbGFibGUp OwpAQCAtMzA3OSw4ICszMDg5LDkgQEAKIAl6ZW5kX2NsYXNzX2VudHJ5ICpjZTsKIAl6ZW5kX2Z1 bmN0aW9uICpmdW5jOwogCXp2YWwgKipvYmo7CisJemVuZF91aW50IGZldGNoX3R5cGU7CiAKLQlp ZiAoIXplbmRfaXNfY2FsbGFibGVfZXgoY2FsbGFibGUsIGNoZWNrX2ZsYWdzLCBjYWxsYWJsZV9u YW1lLCAmY2UsICZmdW5jLCAmb2JqLCBlcnJvciBUU1JNTFNfQ0MpKSB7CisJaWYgKCF6ZW5kX2lz X2NhbGxhYmxlX2V4KGNhbGxhYmxlLCBjaGVja19mbGFncywgY2FsbGFibGVfbmFtZSwgJmNlLCAm ZmV0Y2hfdHlwZSwgJmZ1bmMsICZvYmosIGVycm9yIFRTUk1MU19DQykpIHsKIAkJcmV0dXJuIEZB SUxVUkU7CiAJfQogCkBAIC0zMTA0LDcgKzMxMTUsMTEgQEAKIAl9IGVsc2UgewogCQlmY2MtPmlu aXRpYWxpemVkID0gMTsKIAkJZmNjLT5mdW5jdGlvbl9oYW5kbGVyID0gZnVuYzsKLQkJZmNjLT5j YWxsaW5nX3Njb3BlID0gY2U7CisJCWlmIChmZXRjaF90eXBlID09IFpFTkRfRkVUQ0hfQ0xBU1Nf UEFSRU5UKSB7CisJCQlmY2MtPmNhbGxpbmdfc2NvcGUgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9 IGVsc2UgeworCQkJZmNjLT5jYWxsaW5nX3Njb3BlID0gY2U7CisJCX0KIAkJZmNjLT5vYmplY3Rf cHAgPSBvYmo7CiAJfQogCkluZGV4OiBaZW5kL3plbmRfQVBJLmgKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9BUEkuaCx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4yOTgKZGlmZiAtdSAtcjEuMjk4IHplbmRfQVBJLmgKLS0tIFplbmQvemVuZF9BUEkuaAky OCBGZWIgMjAwOCAxMzozMDo0MyAtMDAwMAkxLjI5OAorKysgWmVuZC96ZW5kX0FQSS5oCTEzIE1h ciAyMDA4IDAzOjM5OjE2IC0wMDAwCkBAIC0yMzUsNyArMjM1LDcgQEAKIAogI2RlZmluZSBJU19D QUxMQUJMRV9TVFJJQ1QgIChJU19DQUxMQUJMRV9DSEVDS19JU19TVEFUSUMpCiAKLVpFTkRfQVBJ IHplbmRfYm9vbCB6ZW5kX2lzX2NhbGxhYmxlX2V4KHp2YWwgKmNhbGxhYmxlLCB1aW50IGNoZWNr X2ZsYWdzLCB6dmFsICpjYWxsYWJsZV9uYW1lLCB6ZW5kX2NsYXNzX2VudHJ5ICoqY2VfcHRyLCB6 ZW5kX2Z1bmN0aW9uICoqZnB0cl9wdHIsIHp2YWwgKioqem9ial9wdHJfcHRyLCBjaGFyICoqZXJy b3IgVFNSTUxTX0RDKTsKK1pFTkRfQVBJIHplbmRfYm9vbCB6ZW5kX2lzX2NhbGxhYmxlX2V4KHp2 YWwgKmNhbGxhYmxlLCB1aW50IGNoZWNrX2ZsYWdzLCB6dmFsICpjYWxsYWJsZV9uYW1lLCB6ZW5k X2NsYXNzX2VudHJ5ICoqY2VfcHRyLCB6ZW5kX3VpbnQgKmZldGNoX3R5cGUsIHplbmRfZnVuY3Rp b24gKipmcHRyX3B0ciwgenZhbCAqKip6b2JqX3B0cl9wdHIsIGNoYXIgKiplcnJvciBUU1JNTFNf REMpOwogWkVORF9BUEkgemVuZF9ib29sIHplbmRfaXNfY2FsbGFibGUoenZhbCAqY2FsbGFibGUs IHVpbnQgY2hlY2tfZmxhZ3MsIHp2YWwgKmNhbGxhYmxlX25hbWUpOwogWkVORF9BUEkgemVuZF9i b29sIHplbmRfbWFrZV9jYWxsYWJsZSh6dmFsICpjYWxsYWJsZSwgenZhbCAqY2FsbGFibGVfbmFt ZSBUU1JNTFNfREMpOwogWkVORF9BUEkgY29uc3QgY2hhciAqemVuZF9nZXRfbW9kdWxlX3ZlcnNp b24oY29uc3QgY2hhciAqbW9kdWxlX25hbWUpOwpJbmRleDogWmVuZC96ZW5kX2V4ZWN1dGVfQVBJ LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9leGVj dXRlX0FQSS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ0MApkaWZmIC11IC1yMS40NDAgemVu ZF9leGVjdXRlX0FQSS5jCi0tLSBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwk3IE1hciAyMDA4IDAw OjUxOjAyIC0wMDAwCTEuNDQwCisrKyBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwkxMyBNYXIgMjAw OCAwMzozOToxNiAtMDAwMApAQCAtODI5LDYgKzgyOSw3IEBACiAJCQkJCWZvdW5kID0gKCpjZSAh PSBOVUxMP1NVQ0NFU1M6RkFJTFVSRSk7CiAJCQkJCWZjaS0+b2JqZWN0X3BwID0gRUcoVGhpcyk/ JkVHKFRoaXMpOk5VTEw7CiAJCQkJCUVYKG9iamVjdCkgPSBFRyhUaGlzKTsKKwkJCQkJY2FsbGlu Z19zY29wZSA9ICpjZTsKIAkJCQl9IGVsc2UgaWYgKEVHKGFjdGl2ZV9vcF9hcnJheSkgJiYKIAkJ CQkJWl9VTklMRU5fUFAoZmNpLT5vYmplY3RfcHApID09IHNpemVvZigicGFyZW50IikgLSAxICYm CiAJCQkJCVpFTkRfVV9FUVVBTChaX1RZUEVfUFAoZmNpLT5vYmplY3RfcHApLCBaX1VOSVZBTF9Q UChmY2ktPm9iamVjdF9wcCksIFpfVU5JTEVOX1BQKGZjaS0+b2JqZWN0X3BwKSwgInBhcmVudCIs IHNpemVvZigicGFyZW50IikgLSAxKQpAQCAtODQzLDYgKzg0NCwxMSBAQAogCQkJCQlmb3VuZCA9 ICgqY2UgIT0gTlVMTD9TVUNDRVNTOkZBSUxVUkUpOwogCQkJCQlmY2ktPm9iamVjdF9wcCA9IEVH KFRoaXMpPyZFRyhUaGlzKTpOVUxMOwogCQkJCQlFWChvYmplY3QpID0gRUcoVGhpcyk7CisJCQkJ CWlmIChFRyhjYWxsZWRfc2NvcGUpKSB7CisJCQkJCQljYWxsaW5nX3Njb3BlID0gRUcoY2FsbGVk X3Njb3BlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWNhbGxpbmdfc2NvcGUgPSAqY2U7CisJCQkJ CX0KIAkJCQl9IGVsc2UgaWYgKFpfVU5JTEVOX1BQKGZjaS0+b2JqZWN0X3BwKSA9PSBzaXplb2Yo InN0YXRpYyIpIC0gMSAmJgogCQkJCQlaRU5EX1VfRVFVQUwoWl9UWVBFX1BQKGZjaS0+b2JqZWN0 X3BwKSwgWl9VTklWQUxfUFAoZmNpLT5vYmplY3RfcHApLCBaX1VOSUxFTl9QUChmY2ktPm9iamVj dF9wcCksICJzdGF0aWMiLCBzaXplb2YoInN0YXRpYyIpIC0gMSkKIAkJCQkpIHsKQEAgLTg1Myw2 ICs4NTksNyBAQAogCQkJCQlmb3VuZCA9ICgqY2UgIT0gTlVMTD9TVUNDRVNTOkZBSUxVUkUpOwog CQkJCQlmY2ktPm9iamVjdF9wcCA9IEVHKFRoaXMpPyZFRyhUaGlzKTpOVUxMOwogCQkJCQlFWChv YmplY3QpID0gRUcoVGhpcyk7CisJCQkJCWNhbGxpbmdfc2NvcGUgPSAqY2U7CiAJCQkJfSBlbHNl IHsKIAkJCQkJemVuZF9jbGFzc19lbnRyeSAqc2NvcGU7CiAJCQkJCXNjb3BlID0gRUcoYWN0aXZl X29wX2FycmF5KSA/IEVHKGFjdGl2ZV9vcF9hcnJheSktPnNjb3BlIDogTlVMTDsKQEAgLTg2OSwx MiArODc2LDEyIEBACiAJCQkJCX0gZWxzZSB7CiAJCQkJCQlmY2ktPm9iamVjdF9wcCA9IE5VTEw7 CiAJCQkJCX0KKwkJCQkJY2FsbGluZ19zY29wZSA9ICpjZTsKIAkJCQl9CiAJCQkJaWYgKGZvdW5k ID09IEZBSUxVUkUpCiAJCQkJCXJldHVybiBGQUlMVVJFOwogCiAJCQkJZmNpLT5mdW5jdGlvbl90 YWJsZSA9ICYoKmNlKS0+ZnVuY3Rpb25fdGFibGU7Ci0JCQkJY2FsbGluZ19zY29wZSA9ICpjZTsK IAkJCX0gZWxzZSB7CiAJCQkJemVuZF9lcnJvcihFX05PVElDRSwgIk5vbi1jYWxsYWJsZSBhcnJh eSBwYXNzZWQgdG8gemVuZF9jYWxsX2Z1bmN0aW9uKCkiKTsKIAkJCQlyZXR1cm4gRkFJTFVSRTsK SW5kZXg6IFplbmQvemVuZF92bV9kZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9aZW5kRW5naW5lMi96ZW5kX3ZtX2RlZi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyMApk aWZmIC11IC1yMS4yMjAgemVuZF92bV9kZWYuaAotLS0gWmVuZC96ZW5kX3ZtX2RlZi5oCTEyIE1h ciAyMDA4IDEwOjMyOjM5IC0wMDAwCTEuMjIwCisrKyBaZW5kL3plbmRfdm1fZGVmLmgJMTMgTWFy IDIwMDggMDM6Mzk6MTcgLTAwMDAKQEAgLTE5OTEsOCArMTk5MSwxNSBAQAogCQlpZiAoIWNlKSB7 CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJVInIG5vdCBmb3VuZCIsIFpfVFlQRShv cGxpbmUtPm9wMS51LmNvbnN0YW50KSwgWl9VTklWQUwob3BsaW5lLT5vcDEudS5jb25zdGFudCkp OwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKIAl9IGVsc2UgewogCQljZSA9IEVYX1Qo b3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5OworCQkKKwkJaWYgKG9wbGluZS0+b3AxLnUu RUEudHlwZSA9PSBaRU5EX0ZFVENIX0NMQVNTX1BBUkVOVCkgeworCQkJRVgoY2FsbGVkX3Njb3Bl KSA9IEVHKGNhbGxlZF9zY29wZSk7CisJCX0gZWxzZSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0g Y2U7CisJCX0KIAl9CiAJaWYoT1AyX1RZUEUgIT0gSVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rp b25fbmFtZV9zdHJ2YWw7CkBAIC0yMDM0LDggKzIwNDEsNiBAQAogCQlFWChmYmMpID0gY2UtPmNv bnN0cnVjdG9yOwogCX0KIAotCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMp LT5jb21tb24uZm5fZmxhZ3MgJiBaRU5EX0FDQ19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5V TEw7CiAJfSBlbHNlIHsKSW5kZXg6IFplbmQvemVuZF92bV9leGVjdXRlLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF92bV9leGVjdXRlLmgsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMjI0CmRpZmYgLXUgLXIxLjIyNCB6ZW5kX3ZtX2V4ZWN1dGUuaAot LS0gWmVuZC96ZW5kX3ZtX2V4ZWN1dGUuaAkxMiBNYXIgMjAwOCAxMDozMjozOSAtMDAwMAkxLjIy NAorKysgWmVuZC96ZW5kX3ZtX2V4ZWN1dGUuaAkxMyBNYXIgMjAwOCAwMzozOToyNSAtMDAwMApA QCAtMjQ2Miw4ICsyNDYyLDE1IEBACiAJCWlmICghY2UpIHsKIAkJCXplbmRfZXJyb3IoRV9FUlJP UiwgIkNsYXNzICclUicgbm90IGZvdW5kIiwgWl9UWVBFKG9wbGluZS0+b3AxLnUuY29uc3RhbnQp LCBaX1VOSVZBTChvcGxpbmUtPm9wMS51LmNvbnN0YW50KSk7CiAJCX0KKwkJRVgoY2FsbGVkX3Nj b3BlKSA9IGNlOwogCX0gZWxzZSB7CiAJCWNlID0gRVhfVChvcGxpbmUtPm9wMS51LnZhcikuY2xh c3NfZW50cnk7CisKKwkJaWYgKG9wbGluZS0+b3AxLnUuRUEudHlwZSA9PSBaRU5EX0ZFVENIX0NM QVNTX1BBUkVOVCkgeworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IEVHKGNhbGxlZF9zY29wZSk7CisJ CX0gZWxzZSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CisJCX0KIAl9CiAJaWYoSVNfQ09O U1QgIT0gSVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBAIC0yNTA1 LDggKzI1MTIsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAotCUVYKGNh bGxlZF9zY29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3MgJiBaRU5E X0FDQ19TVEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKQEAgLTMwNDAs OCArMzA0NSwxNSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFz cyAnJVInIG5vdCBmb3VuZCIsIFpfVFlQRShvcGxpbmUtPm9wMS51LmNvbnN0YW50KSwgWl9VTklW QUwob3BsaW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBj ZTsKIAl9IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5 OworCisJCWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJF TlQpIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9IGVsc2Ug eworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJfQogCWlmKElTX1RNUF9WQVIgIT0g SVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBAIC0zMDgzLDggKzMw OTUsNiBAQAogCQlFWChmYmMpID0gY2UtPmNvbnN0cnVjdG9yOwogCX0KIAotCUVYKGNhbGxlZF9z Y29wZSkgPSBjZTsKLQogCWlmIChFWChmYmMpLT5jb21tb24uZm5fZmxhZ3MgJiBaRU5EX0FDQ19T VEFUSUMpIHsKIAkJRVgob2JqZWN0KSA9IE5VTEw7CiAJfSBlbHNlIHsKQEAgLTM1MDksOCArMzUx OSwxNSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJVIn IG5vdCBmb3VuZCIsIFpfVFlQRShvcGxpbmUtPm9wMS51LmNvbnN0YW50KSwgWl9VTklWQUwob3Bs aW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKIAl9 IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5vcDEudS52YXIpLmNsYXNzX2VudHJ5OworCisJ CWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0gWkVORF9GRVRDSF9DTEFTU19QQVJFTlQpIHsK KwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxsZWRfc2NvcGUpOworCQl9IGVsc2UgeworCQkJ RVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJfQogCWlmKElTX1ZBUiAhPSBJU19VTlVTRUQp IHsKIAkJenN0ciBmdW5jdGlvbl9uYW1lX3N0cnZhbDsKQEAgLTM1NTIsOCArMzU2OSw2IEBACiAJ CUVYKGZiYykgPSBjZS0+Y29uc3RydWN0b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNl OwotCiAJaWYgKEVYKGZiYyktPmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewog CQlFWChvYmplY3QpID0gTlVMTDsKIAl9IGVsc2UgewpAQCAtMzczNCw4ICszNzQ5LDE1IEBACiAJ CWlmICghY2UpIHsKIAkJCXplbmRfZXJyb3IoRV9FUlJPUiwgIkNsYXNzICclUicgbm90IGZvdW5k IiwgWl9UWVBFKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpLCBaX1VOSVZBTChvcGxpbmUtPm9wMS51 LmNvbnN0YW50KSk7CiAJCX0KKwkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwogCX0gZWxzZSB7CiAJ CWNlID0gRVhfVChvcGxpbmUtPm9wMS51LnZhcikuY2xhc3NfZW50cnk7CisKKwkJaWYgKG9wbGlu ZS0+b3AxLnUuRUEudHlwZSA9PSBaRU5EX0ZFVENIX0NMQVNTX1BBUkVOVCkgeworCQkJRVgoY2Fs bGVkX3Njb3BlKSA9IEVHKGNhbGxlZF9zY29wZSk7CisJCX0gZWxzZSB7CisJCQlFWChjYWxsZWRf c2NvcGUpID0gY2U7CisJCX0KIAl9CiAJaWYoSVNfVU5VU0VEICE9IElTX1VOVVNFRCkgewogCQl6 c3RyIGZ1bmN0aW9uX25hbWVfc3RydmFsOwpAQCAtMzc3Nyw4ICszNzk5LDYgQEAKIAkJRVgoZmJj KSA9IGNlLT5jb25zdHJ1Y3RvcjsKIAl9CiAKLQlFWChjYWxsZWRfc2NvcGUpID0gY2U7Ci0KIAlp ZiAoRVgoZmJjKS0+Y29tbW9uLmZuX2ZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSB7CiAJCUVYKG9i amVjdCkgPSBOVUxMOwogCX0gZWxzZSB7CkBAIC00MTcxLDggKzQxOTEsMTUgQEAKIAkJaWYgKCFj ZSkgewogCQkJemVuZF9lcnJvcihFX0VSUk9SLCAiQ2xhc3MgJyVSJyBub3QgZm91bmQiLCBaX1RZ UEUob3BsaW5lLT5vcDEudS5jb25zdGFudCksIFpfVU5JVkFMKG9wbGluZS0+b3AxLnUuY29uc3Rh bnQpKTsKIAkJfQorCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBF WF9UKG9wbGluZS0+b3AxLnUudmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEu dS5FQS50eXBlID09IFpFTkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2Nv cGUpID0gRUcoY2FsbGVkX3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkg PSBjZTsKKwkJfQogCX0KIAlpZihJU19DViAhPSBJU19VTlVTRUQpIHsKIAkJenN0ciBmdW5jdGlv bl9uYW1lX3N0cnZhbDsKQEAgLTQyMTQsOCArNDI0MSw2IEBACiAJCUVYKGZiYykgPSBjZS0+Y29u c3RydWN0b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJaWYgKEVYKGZiYykt PmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChvYmplY3QpID0gTlVM TDsKIAl9IGVsc2UgewpAQCAtMTAzMDQsOCArMTAzMjksMTUgQEAKIAkJaWYgKCFjZSkgewogCQkJ emVuZF9lcnJvcihFX0VSUk9SLCAiQ2xhc3MgJyVSJyBub3QgZm91bmQiLCBaX1RZUEUob3BsaW5l LT5vcDEudS5jb25zdGFudCksIFpfVU5JVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJ fQorCQlFWChjYWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGlu ZS0+b3AxLnUudmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBl ID09IFpFTkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUco Y2FsbGVkX3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJ fQogCX0KIAlpZihJU19DT05TVCAhPSBJU19VTlVTRUQpIHsKIAkJenN0ciBmdW5jdGlvbl9uYW1l X3N0cnZhbDsKQEAgLTEwMzQ3LDggKzEwMzc5LDYgQEAKIAkJRVgoZmJjKSA9IGNlLT5jb25zdHJ1 Y3RvcjsKIAl9CiAKLQlFWChjYWxsZWRfc2NvcGUpID0gY2U7Ci0KIAlpZiAoRVgoZmJjKS0+Y29t bW9uLmZuX2ZsYWdzICYgWkVORF9BQ0NfU1RBVElDKSB7CiAJCUVYKG9iamVjdCkgPSBOVUxMOwog CX0gZWxzZSB7CkBAIC0xMjE5Miw4ICsxMjIyMiwxNSBAQAogCQlpZiAoIWNlKSB7CiAJCQl6ZW5k X2Vycm9yKEVfRVJST1IsICJDbGFzcyAnJVInIG5vdCBmb3VuZCIsIFpfVFlQRShvcGxpbmUtPm9w MS51LmNvbnN0YW50KSwgWl9VTklWQUwob3BsaW5lLT5vcDEudS5jb25zdGFudCkpOwogCQl9CisJ CUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKIAl9IGVsc2UgewogCQljZSA9IEVYX1Qob3BsaW5lLT5v cDEudS52YXIpLmNsYXNzX2VudHJ5OworCisJCWlmIChvcGxpbmUtPm9wMS51LkVBLnR5cGUgPT0g WkVORF9GRVRDSF9DTEFTU19QQVJFTlQpIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBFRyhjYWxs ZWRfc2NvcGUpOworCQl9IGVsc2UgeworCQkJRVgoY2FsbGVkX3Njb3BlKSA9IGNlOworCQl9CiAJ fQogCWlmKElTX1RNUF9WQVIgIT0gSVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rpb25fbmFtZV9z dHJ2YWw7CkBAIC0xMjIzNSw4ICsxMjI3Miw2IEBACiAJCUVYKGZiYykgPSBjZS0+Y29uc3RydWN0 b3I7CiAJfQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJaWYgKEVYKGZiYyktPmNvbW1v bi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChvYmplY3QpID0gTlVMTDsKIAl9 IGVsc2UgewpAQCAtMTQwNTAsOCArMTQwODUsMTUgQEAKIAkJaWYgKCFjZSkgewogCQkJemVuZF9l cnJvcihFX0VSUk9SLCAiQ2xhc3MgJyVSJyBub3QgZm91bmQiLCBaX1RZUEUob3BsaW5lLT5vcDEu dS5jb25zdGFudCksIFpfVU5JVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlF WChjYWxsZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3Ax LnUudmFyKS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpF TkRfRkVUQ0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVk X3Njb3BlKTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0K IAlpZihJU19WQVIgIT0gSVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rpb25fbmFtZV9zdHJ2YWw7 CkBAIC0xNDA5Myw4ICsxNDEzNSw2IEBACiAJCUVYKGZiYykgPSBjZS0+Y29uc3RydWN0b3I7CiAJ fQogCi0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJaWYgKEVYKGZiYyktPmNvbW1vbi5mbl9m bGFncyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChvYmplY3QpID0gTlVMTDsKIAl9IGVsc2Ug ewpAQCAtMTUwMDYsOCArMTUwNDYsMTUgQEAKIAkJaWYgKCFjZSkgewogCQkJemVuZF9lcnJvcihF X0VSUk9SLCAiQ2xhc3MgJyVSJyBub3QgZm91bmQiLCBaX1RZUEUob3BsaW5lLT5vcDEudS5jb25z dGFudCksIFpfVU5JVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlFWChjYWxs ZWRfc2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3AxLnUudmFy KS5jbGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpFTkRfRkVU Q0hfQ0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVkX3Njb3Bl KTsKKwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0KIAlpZihJ U19VTlVTRUQgIT0gSVNfVU5VU0VEKSB7CiAJCXpzdHIgZnVuY3Rpb25fbmFtZV9zdHJ2YWw7CkBA IC0xNTA0OSw4ICsxNTA5Niw2IEBACiAJCUVYKGZiYykgPSBjZS0+Y29uc3RydWN0b3I7CiAJfQog Ci0JRVgoY2FsbGVkX3Njb3BlKSA9IGNlOwotCiAJaWYgKEVYKGZiYyktPmNvbW1vbi5mbl9mbGFn cyAmIFpFTkRfQUNDX1NUQVRJQykgewogCQlFWChvYmplY3QpID0gTlVMTDsKIAl9IGVsc2UgewpA QCAtMTY1MTQsOCArMTY1NTksMTUgQEAKIAkJaWYgKCFjZSkgewogCQkJemVuZF9lcnJvcihFX0VS Uk9SLCAiQ2xhc3MgJyVSJyBub3QgZm91bmQiLCBaX1RZUEUob3BsaW5lLT5vcDEudS5jb25zdGFu dCksIFpfVU5JVkFMKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpKTsKIAkJfQorCQlFWChjYWxsZWRf c2NvcGUpID0gY2U7CiAJfSBlbHNlIHsKIAkJY2UgPSBFWF9UKG9wbGluZS0+b3AxLnUudmFyKS5j bGFzc19lbnRyeTsKKworCQlpZiAob3BsaW5lLT5vcDEudS5FQS50eXBlID09IFpFTkRfRkVUQ0hf Q0xBU1NfUEFSRU5UKSB7CisJCQlFWChjYWxsZWRfc2NvcGUpID0gRUcoY2FsbGVkX3Njb3BlKTsK KwkJfSBlbHNlIHsKKwkJCUVYKGNhbGxlZF9zY29wZSkgPSBjZTsKKwkJfQogCX0KIAlpZihJU19D ViAhPSBJU19VTlVTRUQpIHsKIAkJenN0ciBmdW5jdGlvbl9uYW1lX3N0cnZhbDsKQEAgLTE2NTU3 LDggKzE2NjA5LDYgQEAKIAkJRVgoZmJjKSA9IGNlLT5jb25zdHJ1Y3RvcjsKIAl9CiAKLQlFWChj YWxsZWRfc2NvcGUpID0gY2U7Ci0KIAlpZiAoRVgoZmJjKS0+Y29tbW9uLmZuX2ZsYWdzICYgWkVO RF9BQ0NfU1RBVElDKSB7CiAJCUVYKG9iamVjdCkgPSBOVUxMOwogCX0gZWxzZSB7CkluZGV4OiBl eHQvc3BsL3BocF9zcGwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3Jj L2V4dC9zcGwvcGhwX3NwbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyNwpkaWZmIC11IC1y MS4xMjcgcGhwX3NwbC5jCi0tLSBleHQvc3BsL3BocF9zcGwuYwkyOSBGZWIgMjAwOCAxMzo0ODow OSAtMDAwMAkxLjEyNworKysgZXh0L3NwbC9waHBfc3BsLmMJMTMgTWFyIDIwMDggMDM6Mzk6Mjkg LTAwMDAKQEAgLTQzMCw3ICs0MzAsNyBAQAogCQkJenZhbF9kdG9yKCZ6dG1wKTsKIAkJfQogCQot CQlpZiAoIXplbmRfaXNfY2FsbGFibGVfZXgoemNhbGxhYmxlLCBJU19DQUxMQUJMRV9TVFJJQ1Qs ICZ6ZnVuY19uYW1lLCAmYWxmaS5jZSwgJmFsZmkuZnVuY19wdHIsICZvYmpfcHRyLCAmZXJyb3Ig VFNSTUxTX0NDKSkgeworCQlpZiAoIXplbmRfaXNfY2FsbGFibGVfZXgoemNhbGxhYmxlLCBJU19D QUxMQUJMRV9TVFJJQ1QsICZ6ZnVuY19uYW1lLCAmYWxmaS5jZSwgTlVMTCwgJmFsZmkuZnVuY19w dHIsICZvYmpfcHRyLCAmZXJyb3IgVFNSTUxTX0NDKSkgewogCQkJaWYgKFpfVFlQRV9QKHpjYWxs YWJsZSkgPT0gSVNfQVJSQVkpIHsKIAkJCQlpZiAoIW9ial9wdHIgJiYgYWxmaS5mdW5jX3B0ciAm JiAhKGFsZmkuZnVuY19wdHItPmNvbW1vbi5mbl9mbGFncyAmIFpFTkRfQUNDX1NUQVRJQykpIHsK IAkJCQkJaWYgKGRvX3Rocm93KSB7CkBAIC01NDUsNyArNTQ1LDcgQEAKIAkJcmV0dXJuOwogCX0K IAotCWlmICghemVuZF9pc19jYWxsYWJsZV9leCh6Y2FsbGFibGUsIElTX0NBTExBQkxFX0NIRUNL X1NZTlRBWF9PTkxZLCAmemZ1bmNfbmFtZSwgTlVMTCwgTlVMTCwgJm9ial9wdHIsICZlcnJvciBU U1JNTFNfQ0MpKSB7CisJIGlmICghemVuZF9pc19jYWxsYWJsZV9leCh6Y2FsbGFibGUsIElTX0NB TExBQkxFX0NIRUNLX1NZTlRBWF9PTkxZLCAmemZ1bmNfbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwg Jm9ial9wdHIsICZlcnJvciBUU1JNTFNfQ0MpKSB7CiAJCXplbmRfdGhyb3dfZXhjZXB0aW9uX2V4 KHNwbF9jZV9Mb2dpY0V4Y2VwdGlvbiwgMCBUU1JNTFNfQ0MsICJVbmFibGUgdG8gdW5yZWdpc3Rl ciBpbnZhbGlkIGZ1bmN0aW9uICglcykiLCBlcnJvcik7CiAJCWlmIChlcnJvcikgewogCQkJZWZy ZWUoZXJyb3IpOwpJbmRleDogZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMvZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0 aW9ucy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjg5MApkaWZmIC11IC1yMS44OTAgYmFzaWNf ZnVuY3Rpb25zLmMKLS0tIGV4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwkyOCBGZWIgMjAw OCAxNDoxNjoxNCAtMDAwMAkxLjg5MAorKysgZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5j CTEzIE1hciAyMDA4IDAzOjM5OjMwIC0wMDAwCkBAIC04MDksNiArODA5LDE5IEBACiBaRU5EX0VO RF9BUkdfSU5GTygpCiAKIHN0YXRpYworWkVORF9CRUdJTl9BUkdfSU5GT19FWChhcmdpbmZvX2Zv cndhcmRfc3RhdGljX2NhbGwsIDAsIDAsIDEpCisJWkVORF9BUkdfSU5GTygwLCBmdW5jdGlvbl9u YW1lKQorCVpFTkRfQVJHX0lORk8oMCwgcGFyYW1ldGVyKQorCVpFTkRfQVJHX0lORk8oMCwgLi4u KQorWkVORF9FTkRfQVJHX0lORk8oKQorCitzdGF0aWMKK1pFTkRfQkVHSU5fQVJHX0lORk9fRVgo YXJnaW5mb19mb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5LCAwLCAwLCAyKQorCVpFTkRfQVJHX0lO Rk8oMCwgZnVuY3Rpb25fbmFtZSkKKwlaRU5EX0FSR19JTkZPKDAsIHBhcmFtZXRlcnMpIC8qIEFS UkFZX0lORk8oMCwgcGFyYW1ldGVycywgMSkgKi8KK1pFTkRfRU5EX0FSR19JTkZPKCkKKworc3Rh dGljCiBaRU5EX0JFR0lOX0FSR19JTkZPKGFyZ2luZm9fcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rp b24sIDApCiAJWkVORF9BUkdfSU5GTygwLCBmdW5jdGlvbl9uYW1lKQogWkVORF9FTkRfQVJHX0lO Rk8oKQpAQCAtMzM5OCw2ICszNDExLDggQEAKIAlQSFBfRkUoY2FsbF91c2VyX2Z1bmNfYXJyYXks CQkJCQkJCQkJCQlhcmdpbmZvX2NhbGxfdXNlcl9mdW5jX2FycmF5KQogCVBIUF9ERVBfRkUoY2Fs bF91c2VyX21ldGhvZCwJCQkJCQkJCQkJCWFyZ2luZm9fY2FsbF91c2VyX21ldGhvZCkKIAlQSFBf REVQX0ZFKGNhbGxfdXNlcl9tZXRob2RfYXJyYXksCQkJCQkJCQkJCWFyZ2luZm9fY2FsbF91c2Vy X21ldGhvZF9hcnJheSkKKwlQSFBfRkUoZm9yd2FyZF9zdGF0aWNfY2FsbCwJCQkJCQkJCQkJCWFy Z2luZm9fZm9yd2FyZF9zdGF0aWNfY2FsbCkKKwlQSFBfRkUoZm9yd2FyZF9zdGF0aWNfY2FsbF9h cnJheSwJCQkJCQkJCQkJYXJnaW5mb19mb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KQogCVBIUF9G RShzZXJpYWxpemUsCQkJCQkJCQkJCQkJCQlhcmdpbmZvX3NlcmlhbGl6ZSkKIAlQSFBfRkUodW5z ZXJpYWxpemUsCQkJCQkJCQkJCQkJCQlhcmdpbmZvX3Vuc2VyaWFsaXplKQogCkBAIC01MTkzLDYg KzUyMDgsNjcgQEAKIH0KIC8qIH19fSAqLwogCisvKiB7e3sgcHJvdG8gbWl4ZWQgZm9yd2FyZF9z dGF0aWNfY2FsbChtaXhlZCBmdW5jdGlvbl9uYW1lIFssIG1peGVkIHBhcm1ldGVyXSBbLCBtaXhl ZCAuLi5dKSBVCisgICBDYWxsIGEgdXNlciBmdW5jdGlvbiB3aGljaCBpcyB0aGUgZmlyc3QgcGFy YW1ldGVyICovCitQSFBfRlVOQ1RJT04oZm9yd2FyZF9zdGF0aWNfY2FsbCkKK3sKKwl6dmFsICpy ZXR2YWxfcHRyID0gTlVMTDsKKwl6ZW5kX2ZjYWxsX2luZm8gZmNpOworCXplbmRfZmNhbGxfaW5m b19jYWNoZSBmY2lfY2FjaGU7CisKKwlpZiAoemVuZF9wYXJzZV9wYXJhbWV0ZXJzKFpFTkRfTlVN X0FSR1MoKSBUU1JNTFNfQ0MsICJmKiIsICZmY2ksICZmY2lfY2FjaGUsICZmY2kucGFyYW1zLCAm ZmNpLnBhcmFtX2NvdW50KSA9PSBGQUlMVVJFKSB7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIUVH KGFjdGl2ZV9vcF9hcnJheSktPnNjb3BlKSB7CisJCXplbmRfZXJyb3IoRV9FUlJPUiwgIkNhbm5v dCBjYWxsIGZvcndhcmRfc3RhdGljX2NhbGwoKSB3aGVuIG5vIGNsYXNzIHNjb3BlIGlzIGFjdGl2 ZSIpOworCX0KKworCWZjaS5yZXR2YWxfcHRyX3B0ciA9ICZyZXR2YWxfcHRyOworCisJaWYgKEVH KGNhbGxlZF9zY29wZSkgJiYKKwkJaW5zdGFuY2VvZl9mdW5jdGlvbihFRyhjYWxsZWRfc2NvcGUp LCBmY2lfY2FjaGUuY2FsbGluZ19zY29wZSBUU1JNTFNfQ0MpKSB7CisJCQlmY2lfY2FjaGUuY2Fs bGluZ19zY29wZSA9IEVHKGNhbGxlZF9zY29wZSk7CisJfQorCQorCWlmICh6ZW5kX2NhbGxfZnVu Y3Rpb24oJmZjaSwgJmZjaV9jYWNoZSBUU1JNTFNfQ0MpID09IFNVQ0NFU1MgJiYgZmNpLnJldHZh bF9wdHJfcHRyICYmICpmY2kucmV0dmFsX3B0cl9wdHIpIHsKKwkJQ09QWV9QWlZBTF9UT19aVkFM KCpyZXR1cm5fdmFsdWUsICpmY2kucmV0dmFsX3B0cl9wdHIpOworCX0KKworCWlmIChmY2kucGFy YW1zKSB7CisJCWVmcmVlKGZjaS5wYXJhbXMpOworCX0KK30KKy8qIH19fSAqLworCisvKiB7e3sg cHJvdG8gbWl4ZWQgY2FsbF91c2VyX2Z1bmNfYXJyYXkoc3RyaW5nIGZ1bmN0aW9uX25hbWUsIGFy cmF5IHBhcmFtZXRlcnMpIFUKKyAgIENhbGwgYSB1c2VyIGZ1bmN0aW9uIHdoaWNoIGlzIHRoZSBm aXJzdCBwYXJhbWV0ZXIgd2l0aCB0aGUgYXJndW1lbnRzIGNvbnRhaW5lZCBpbiBhcnJheSAqLwor UEhQX0ZVTkNUSU9OKGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXkpCit7CisJenZhbCAqcGFyYW1z LCAqcmV0dmFsX3B0ciA9IE5VTEw7CisJemVuZF9mY2FsbF9pbmZvIGZjaTsKKwl6ZW5kX2ZjYWxs X2luZm9fY2FjaGUgZmNpX2NhY2hlOworCisJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5E X05VTV9BUkdTKCkgVFNSTUxTX0NDLCAiZmEvIiwgJmZjaSwgJmZjaV9jYWNoZSwgJnBhcmFtcykg PT0gRkFJTFVSRSkgeworCQlyZXR1cm47CisJfQorCisJemVuZF9mY2FsbF9pbmZvX2FyZ3MoJmZj aSwgcGFyYW1zIFRTUk1MU19DQyk7CisJZmNpLnJldHZhbF9wdHJfcHRyID0gJnJldHZhbF9wdHI7 CisKKwlpZiAoRUcoY2FsbGVkX3Njb3BlKSAmJgorCQlpbnN0YW5jZW9mX2Z1bmN0aW9uKEVHKGNh bGxlZF9zY29wZSksIGZjaV9jYWNoZS5jYWxsaW5nX3Njb3BlIFRTUk1MU19DQykpIHsKKwkJCWZj aV9jYWNoZS5jYWxsaW5nX3Njb3BlID0gRUcoY2FsbGVkX3Njb3BlKTsKKwl9CisKKwlpZiAoemVu ZF9jYWxsX2Z1bmN0aW9uKCZmY2ksICZmY2lfY2FjaGUgVFNSTUxTX0NDKSA9PSBTVUNDRVNTICYm IGZjaS5yZXR2YWxfcHRyX3B0ciAmJiAqZmNpLnJldHZhbF9wdHJfcHRyKSB7CisJCUNPUFlfUFpW QUxfVE9fWlZBTCgqcmV0dXJuX3ZhbHVlLCAqZmNpLnJldHZhbF9wdHJfcHRyKTsKKwl9CisKKwl6 ZW5kX2ZjYWxsX2luZm9fYXJnc19jbGVhcigmZmNpLCAxKTsKK30KKy8qIH19fSAqLworCiB2b2lk IHVzZXJfc2h1dGRvd25fZnVuY3Rpb25fZHRvcihwaHBfc2h1dGRvd25fZnVuY3Rpb25fZW50cnkg KnNodXRkb3duX2Z1bmN0aW9uX2VudHJ5KSAvKiB7e3sgKi8KIHsKIAlpbnQgaTsKSW5kZXg6IGV4 dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3Np dG9yeS9waHAtc3JjL2V4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuaCx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4xNjEKZGlmZiAtdSAtcjEuMTYxIGJhc2ljX2Z1bmN0aW9ucy5oCi0tLSBleHQv c3RhbmRhcmQvYmFzaWNfZnVuY3Rpb25zLmgJMyBGZWIgMjAwOCAxNDo0NDozMCAtMDAwMAkxLjE2 MQorKysgZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5oCTEzIE1hciAyMDA4IDAzOjM5OjMw IC0wMDAwCkBAIC04NCw2ICs4NCw4IEBACiBQSFBfRlVOQ1RJT04oY2FsbF91c2VyX2Z1bmNfYXJy YXkpOwogUEhQX0ZVTkNUSU9OKGNhbGxfdXNlcl9tZXRob2QpOwogUEhQX0ZVTkNUSU9OKGNhbGxf dXNlcl9tZXRob2RfYXJyYXkpOworUEhQX0ZVTkNUSU9OKGZvcndhcmRfc3RhdGljX2NhbGwpOwor UEhQX0ZVTkNUSU9OKGZvcndhcmRfc3RhdGljX2NhbGxfYXJyYXkpOwogCiBQSFBfRlVOQ1RJT04o cmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24pOwogUEhQX0ZVTkNUSU9OKGhpZ2hsaWdodF9maWxl KTsK ------=_Part_901_25789810.1205381662920--