From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Tue, 29 Jun 2021 07:13:52 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1ly64F-0007Io-WC for lore@lore.pengutronix.de; Tue, 29 Jun 2021 07:13:52 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1ly64F-0002E2-NR; Tue, 29 Jun 2021 07:13:51 +0200 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ly609-0005lu-4t; Tue, 29 Jun 2021 07:09:37 +0200 Received: from [2a0a:edc0:0:1101:1d::39] (helo=dude03.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1ly608-0005dh-KA; Tue, 29 Jun 2021 07:09:36 +0200 Received: from mol by dude03.red.stw.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1ly608-00Aat6-H5; Tue, 29 Jun 2021 07:09:36 +0200 From: Michael Olbrich To: ptxdist@pengutronix.de Date: Tue, 29 Jun 2021 07:09:36 +0200 Message-Id: <20210629050936.2525033-1-m.olbrich@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210623073309.23058-6-ada@thorsis.com> References: <20210623073309.23058-6-ada@thorsis.com> MIME-Version: 1.0 Subject: Re: [ptxdist] [APPLIED] ppp: version bump 2.4.7 -> 2.4.9 X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: Alexander Dahl Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false VGhhbmtzLCBhcHBsaWVkIGFzIDM0ZWE2YTM3YjBjYmZlNjRmMTc4OTBhYTM3YjFiM2E0YTFlZmM0 ODYuCgpNaWNoYWVsCgpbc2VudCBmcm9tIHBvc3QtcmVjZWl2ZSBob29rXQoKT24gVHVlLCAyOSBK dW4gMjAyMSAwNzowOTozNiArMDIwMCwgQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4g d3JvdGU6Cj4gLSBpbXBvcnRlZCB0d28gcG9zdCAyLjQuOSB1cHN0cmVhbSBwYXRjaGVzCj4gLSBp bXBvcnRlZCBEZWJpYW4gcGF0Y2hlcyBmcm9tIHBhY2thZ2UgcHBwICgyLjQuOS0xKzEpCj4gLSBh ZGFwdGVkIHB0eCBwYXRjaGVzCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIERhaGwgPGFk YUB0aG9yc2lzLmNvbT4KPiBNZXNzYWdlLUlkOiA8MjAyMTA2MjMwNzMzMDkuMjMwNTgtNi1hZGFA dGhvcnNpcy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hA cGVuZ3V0cm9uaXguZGU+Cj4gCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDEt YWJvcnQtb24tZXJyb3JzLWluLXN1YmRpci1idWlsZHMucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQu Ny8wMDAxLWFib3J0LW9uLWVycm9ycy1pbi1zdWJkaXItYnVpbGRzLnBhdGNoCj4gZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggYzZhNzZjZTY1NjdhLi4wMDAwMDAwMDAwMDAKPiAtLS0g YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDAxLWFib3J0LW9uLWVycm9ycy1pbi1zdWJkaXItYnVpbGRz LnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDQ4ICswLDAgQEAKPiAtRnJvbTogTWFydGlu IHZvbiBHYWdlcm4gPE1hcnRpbi52R2FnZXJuQGdteC5uZXQ+Cj4gLURhdGU6IFNhdCwgOSBBdWcg MjAxNCAyMjo0NDo0NSAtMDQwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIGFib3J0IG9uIGVycm9ycyBp biBzdWJkaXIgYnVpbGRzCj4gLQo+IC1UaGUgY3VycmVudCByZWN1cnNpdmUgbG9vcHMgZG8gbm90 IGNoZWNrIHRoZSBleGl0IHN0YXR1cyBvZiBtYWtlCj4gLWluIHN1YmRpcnMgd2hpY2ggbGVhZHMg dG8gYG1ha2VgIHBhc3NpbmcgZXZlbiB3aGVuIGEgc3ViZGlyIGZhaWxlZAo+IC10byBjb21waWxl IG9yIGluc3RhbGwuCj4gLQo+IC1VUkw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnLzMzNDcyNwo+ IC1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gdm9uIEdhZ2VybiA8TWFydGluLnZHYWdlcm5AZ214Lm5l dD4KPiAtU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgo+ IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAt U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4IHwgOCArKysrLS0tLQo+IC0g MSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAtCj4gLWRp ZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvTWFr ZWZpbGUubGludXgKPiAtaW5kZXggYWI4Y2Y1MGQ5NDcyLi44YTkwZTM5M2EwNTcgMTAwNjQ0Cj4g LS0tLSBhL3BwcGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAo+IC0rKysgYi9wcHBkL3BsdWdpbnMv TWFrZWZpbGUubGludXgKPiAtQEAgLTI3LDcgKzI3LDcgQEAgaW5jbHVkZSAuZGVwZW5kCj4gLSBl bmRpZgo+IC0gCj4gLSBhbGw6CSQoUExVR0lOUykKPiAtLQlmb3IgZCBpbiAkKFNVQkRJUlMpOyBk byAkKE1BS0UpICQoTUZMQUdTKSAtQyAkJGQgYWxsOyBkb25lCj4gLSsJZm9yIGQgaW4gJChTVUJE SVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMgJCRkIGFsbCB8fCBleGl0ICQkPzsgZG9uZQo+ IC0gCj4gLSAlLnNvOiAlLmMKPiAtIAkkKENDKSAtbyAkQCAkKExERkxBR1MpICQoQ0ZMQUdTKSAk Xgo+IC1AQCAtMzcsMTIgKzM3LDEyIEBAIFZFUlNJT04gPSAkKHNoZWxsIGF3ayAtRiAnIicgJy9W RVJTSU9OLyB7IHByaW50ICQkMjsgfScgLi4vcGF0Y2hsZXZlbC5oKQo+IC0gaW5zdGFsbDogJChQ TFVHSU5TKQo+IC0gCSQoSU5TVEFMTCkgLWQgJChMSUJESVIpCj4gLSAJJChJTlNUQUxMKSAkPyAk KExJQkRJUikKPiAtLQlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQoTUZMQUdTKSAt QyAkJGQgaW5zdGFsbDsgZG9uZQo+IC0rCWZvciBkIGluICQoU1VCRElSUyk7IGRvICQoTUFLRSkg JChNRkxBR1MpIC1DICQkZCBpbnN0YWxsIHx8IGV4aXQgJCQ/OyBkb25lCj4gLSAKPiAtIGNsZWFu Ogo+IC0gCXJtIC1mICoubyAqLnNvICouYQo+IC0tCWZvciBkIGluICQoU1VCRElSUyk7IGRvICQo TUFLRSkgJChNRkxBR1MpIC1DICQkZCBjbGVhbjsgZG9uZQo+IC0rCWZvciBkIGluICQoU1VCRElS Uyk7IGRvICQoTUFLRSkgJChNRkxBR1MpIC1DICQkZCBjbGVhbiB8fCBleGl0ICQkPzsgZG9uZQo+ IC0gCj4gLSBkZXBlbmQ6Cj4gLSAJJChDUFApIC1NICQoQ0ZMQUdTKSAqLmMgPi5kZXBlbmQKPiAt LQlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQoTUZMQUdTKSAtQyAkJGQgZGVwZW5k OyBkb25lCj4gLSsJZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChNQUtFKSAkKE1GTEFHUykgLUMg JCRkIGRlcGVuZCB8fCBleGl0ICQkPzsgZG9uZQo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDAyLXNjcmlwdHMtQXZvaWQta2lsbGluZy13cm9uZy1wcHBkLnBhdGNoIGIvcGF0Y2hl cy9wcHAtMi40LjcvMDAwMi1zY3JpcHRzLUF2b2lkLWtpbGxpbmctd3JvbmctcHBwZC5wYXRjaAo+ IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGRjMjRjMjI4ZWFmYS4uMDAwMDAwMDAw MDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMi1zY3JpcHRzLUF2b2lkLWtpbGxpbmct d3JvbmctcHBwZC5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyOSArMCwwIEBACj4gLUZy b206IHJhZGFpbWluZyA8cmFkYWltaW5nQGdtYWlsLmNvbT4KPiAtRGF0ZTogU2F0LCAxMyBEZWMg MjAxNCAxNDo0MjozNCArMDgwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIHNjcmlwdHM6IEF2b2lkIGtp bGxpbmcgd3JvbmcgcHBwZAo+IC0KPiAtIHBvZmYgY291bGQga2lsbCBvdGhlciBwcHBkIHByb2Nl c3NlcyB3aGVuIHRoZXJlIGFyZSBtYW55IHBwcGQKPiAtIHJ1bm5pbmcgb24gZGlmZmVyZW50IHNl cmlhbCBwb3J0Lgo+IC0KPiAtIFNpZ25lZC1vZmYtYnk6IE1pbmcgRGFpIDxyYWRhaW1pbmdAZ21h aWwuY29tPgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54 ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0 cm9uaXguZGU+Cj4gLS0tLQo+IC0gc2NyaXB0cy9wb2ZmIHwgMiArLQo+IC0gMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvc2Ny aXB0cy9wb2ZmIGIvc2NyaXB0cy9wb2ZmCj4gLWluZGV4IDNmNTVhN2Y0MDAxMC4uNWI0NWQ5OGEy YjZhIDEwMDY0NAo+IC0tLS0gYS9zY3JpcHRzL3BvZmYKPiAtKysrIGIvc2NyaXB0cy9wb2ZmCj4g LUBAIC05MSw3ICs5MSw3IEBAIGlmIHRlc3QgIiQjIiAtZXEgMCAtbyAiJE1PREUiID0gImFsbCIg OyB0aGVuCj4gLSBmaQo+IC0gCj4gLSAjIFRoZXJlIGlzIGFuIGFyZ3VtZW50LCBzbyBraWxsIHRo ZSBwcHBkIHN0YXJ0ZWQgb24gdGhhdCBwcm92aWRlci4KPiAtLVBJRD1gcHMgYXh3IHwgZ3JlcCAi WyAvXXBwcGQgY2FsbCAkMSIgfCBhd2sgJ3twcmludCAkMX0nYAo+IC0rUElEPWBwcyBheHcgfCBn cmVwICJbIC9dcHBwZCBjYWxsICQxIiB8IGdyZXAgLXcgIiQxIiB8IGF3ayAne3ByaW50ICQxfSdg Cj4gLSBpZiB0ZXN0IC1uICIkUElEIiA7IHRoZW4KPiAtICAgICAkS0lMTCAtJFNJRyAkUElEIHx8 IHsKPiAtICAgICAgICAgZWNobyAiJDA6ICRLSUxMIGZhaWxlZC4gIE5vbmUgJHtET05FfS4iCj4g ZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDMtcHBwZC1GaXgtc2lnbi1leHRlbnNp b24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43 LzAwMDMtcHBwZC1GaXgtc2lnbi1leHRlbnNpb24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9j dC5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDJiZDIzYjkyMTZlYy4u MDAwMDAwMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAwMy1wcHBkLUZpeC1zaWdu LWV4dGVuc2lvbi13aGVuLWRpc3BsYXlpbmctYnl0ZXMtaW4tb2N0LnBhdGNoCj4gKysrIC9kZXYv bnVsbAo+IEBAIC0xLDMwICswLDAgQEAKPiAtRnJvbTogIlBoaWxpcCBBLiBQcmluZGV2aWxsZSIg PHBoaWxpcHBAcmVkZmlzaC1zb2x1dGlvbnMuY29tPgo+IC1EYXRlOiBGcmksIDE5IERlYyAyMDE0 IDE3OjUyOjU4IC0wNzAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gcHBwZDogRml4IHNpZ24tZXh0ZW5z aW9uIHdoZW4gZGlzcGxheWluZyBieXRlcyBpbiBvY3RhbAo+IC0KPiAtcHJpbnRfc3RyaW5nKCkg ZGlzcGxheXMgY2hhcmFjdGVycyBhcyBcXCUuMDNvIGJ1dCB3aXRob3V0IGZpcnN0Cj4gLWNhc3Rp bmcgaXQgZnJvbSAiY2hhciIgdG8gInVuc2lnbmVkIGNoYXIiIHNvIGl0IGdldHMgc2lnbi1leHRl bmRlZAo+IC10byBhbiBpbnQuIFRoaXMgY2F1c2VzIG91dHB1dCBsaWtlIFwzNzc3Nzc3NzYzMCBp bnN0ZWFkIG9mIFwyMzAuCj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBQaGlsaXAgQS4gUHJpbmRldmls bGUgPHBoaWxpcHBAcmVkZmlzaC1zb2x1dGlvbnMuY29tPgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBw cHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFl bCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC91dGls cy5jIHwgMiArLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC91dGlscy5jIGIvcHBwZC91dGlscy5jCj4gLWlu ZGV4IDI5YmY5NzA5MDVkNS4uM2FjMWI2MDkyNmQyIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3V0aWxz LmMKPiAtKysrIGIvcHBwZC91dGlscy5jCj4gLUBAIC02MjUsNyArNjI1LDcgQEAgcHJpbnRfc3Ry aW5nKHAsIGxlbiwgcHJpbnRlciwgYXJnKQo+IC0gCQlwcmludGVyKGFyZywgIlxcdCIpOwo+IC0g CQlicmVhazsKPiAtIAkgICAgZGVmYXVsdDoKPiAtLQkJcHJpbnRlcihhcmcsICJcXCUuM28iLCBj KTsKPiAtKwkJcHJpbnRlcihhcmcsICJcXCUuM28iLCAodW5zaWduZWQgY2hhcikgYyk7Cj4gLSAJ ICAgIH0KPiAtIAl9Cj4gLSAgICAgfQo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRj aCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDQtU3VwcHJlc3MtZmFsc2UtZXJyb3ItbWVzc2FnZS1v bi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggNmQ0YmQ1YzEwNmJiLi4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29ubmVjdC5wYXRj aAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwzMyArMCwwIEBACj4gLUZyb206IFNpbW9uIEZhcm5z d29ydGggPHNpbW9uQGZhcm56Lm9yZy51az4KPiAtRGF0ZTogU3VuLCAxIE1hciAyMDE1IDExOjQ5 OjA2ICswMDAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gU3VwcHJlc3MgZmFsc2UgZXJyb3IgbWVzc2Fn ZSBvbiBQUFBvRSBkaXNjb25uZWN0Cj4gLQo+IC1PbmNlIHRoZSBrZXJuZWwgaGFuZGxlcyBQUFBv RSBQQURUcyBjb3JyZWN0bHlbMV0sIGEgUEFEVCB0cmlnZ2VyZWQKPiAtZGlzY29ubmVjdCB3aWxs IHJlc3VsdCBpbiBFQUxSRUFEWSB3aGVuIHBwcGQgdHJpZXMgdG8gY2xlYXIgdGhlIHNlc3Npb24g SUQuCj4gLQo+IC1TaW1wbHkgaWdub3JlIHRoZSBlcnJvciBpZiwgYW5kIG9ubHkgaWYsIHRoZSBl cnJvciBpcyBFQUxSRUFEWQo+IC0KPiAtWzFdIGh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcv cGF0Y2gvNDQ0NzE3Lwo+IC0KPiAtU2lnbmVkLW9mZi1ieTogU2ltb24gRmFybnN3b3J0aCA8c2lt b25AZmFybnoub3JnLnVrPgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGVi aWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdp bi5jIHwgMiArLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIGIv cHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCj4gLWluZGV4IGE4YzJiYjRmNGE2YS4uZGE1 MGNkZjJiOWQzIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMK PiAtKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCj4gLUBAIC0yNzAsNyArMjcw LDcgQEAgUFBQT0VEaXNjb25uZWN0RGV2aWNlKHZvaWQpCj4gLSAgICAgbWVtY3B5KHNwLnNhX2Fk ZHIucHBwb2UuZGV2LCBjb25uLT5pZk5hbWUsIElGTkFNU0laKTsKPiAtICAgICBtZW1jcHkoc3Au c2FfYWRkci5wcHBvZS5yZW1vdGUsIGNvbm4tPnBlZXJFdGgsIEVUSF9BTEVOKTsKPiAtICAgICBp ZiAoY29ubmVjdChjb25uLT5zZXNzaW9uU29ja2V0LCAoc3RydWN0IHNvY2thZGRyICopICZzcCwK PiAtLQkJc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9wcHBveCkpIDwgMCkKPiAtKwkJc2l6ZW9mKHN0 cnVjdCBzb2NrYWRkcl9wcHBveCkpIDwgMCAmJiBlcnJubyAhPSBFQUxSRUFEWSkKPiAtIAllcnJv cigiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgUFBQb0Ugc29ja2V0OiAlZCAlbSIsIGVycm5vKTsKPiAt ICAgICBjbG9zZShjb25uLT5zZXNzaW9uU29ja2V0KTsKPiAtICAgICAvKiBkb24ndCBzZW5kIFBB RFQ/PyAqLwo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA1LVNlbmQtUEFEVC1v bi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwNS1TZW5kLVBB RFQtb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDI4ZWZkZmM3MTNhNS4uMDAwMDAwMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40 LjcvMDAwNS1TZW5kLVBBRFQtb24tUFBQb0UtZGlzY29ubmVjdC5wYXRjaAo+ICsrKyAvZGV2L251 bGwKPiBAQCAtMSwzNiArMCwwIEBACj4gLUZyb206IFNpbW9uIEZhcm5zd29ydGggPHNpbW9uQGZh cm56Lm9yZy51az4KPiAtRGF0ZTogU3VuLCAxIE1hciAyMDE1IDExOjUzOjU4ICswMDAwCj4gLVN1 YmplY3Q6IFtQQVRDSF0gU2VuZCBQQURUIG9uIFBQUG9FIGRpc2Nvbm5lY3QKPiAtCj4gLU9uY2Ug d2UndmUgdGVybWluYXRlZCB0aGUgUFBQIHNlc3Npb24sIHRoZXJlIGlzIG5vIGNoYW5jZSBvZiBh IFBQUCBsYXllcgo+IC1kaXNjb25uZWN0LiBTb21lIFBQUG9FIHJlbGF5cyBkb24ndCBkZXRlY3Qg dGhlIFBQUCBzZXNzaW9uIGdvaW5nIGRvd24sIGFuZAo+IC1kZXBlbmQgb24gYSBsb25nIHRpbWVv dXQgb3IgYSBQUFBvRSBQQURUIHRvIHRlcm1pbmF0ZSB0aGUgc2Vzc2lvbi4KPiAtCj4gLVNlbmQg YSBQQURUIG9uIGRpc2Nvbm5lY3QgdG8gd29yayBhcm91bmQgdGhlc2UgYnVnZ3kgcmVsYXlzLgo+ IC0KPiAtU2lnbmVkLW9mZi1ieTogU2ltb24gRmFybnN3b3J0aCA8c2ltb25AZmFybnoub3JnLnVr Pgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0K PiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXgu ZGU+Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIHwgNSArKystLQo+ IC0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAtCj4g LWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMgYi9wcHBkL3BsdWdp bnMvcnAtcHBwb2UvcGx1Z2luLmMKPiAtaW5kZXggZGE1MGNkZjJiOWQzLi5jODliZTk0MjUwYmMg MTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wbHVnaW4uYwo+IC0rKysgYi9w cHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKPiAtQEAgLTI3Myw5ICsyNzMsMTAgQEAgUFBQ T0VEaXNjb25uZWN0RGV2aWNlKHZvaWQpCj4gLSAJCXNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfcHBw b3gpKSA8IDAgJiYgZXJybm8gIT0gRUFMUkVBRFkpCj4gLSAJZXJyb3IoIkZhaWxlZCB0byBkaXNj b25uZWN0IFBQUG9FIHNvY2tldDogJWQgJW0iLCBlcnJubyk7Cj4gLSAgICAgY2xvc2UoY29ubi0+ c2Vzc2lvblNvY2tldCk7Cj4gLS0gICAgLyogZG9uJ3Qgc2VuZCBQQURUPz8gKi8KPiAtLSAgICBp ZiAoY29ubi0+ZGlzY292ZXJ5U29ja2V0ID49IDApCj4gLSsgICAgaWYgKGNvbm4tPmRpc2NvdmVy eVNvY2tldCA+PSAwKSB7Cj4gLSsgICAgICAgIHNlbmRQQURUKGNvbm4sIE5VTEwpOwo+IC0gCWNs b3NlKGNvbm4tPmRpc2NvdmVyeVNvY2tldCk7Cj4gLSsgICAgfQo+IC0gfQo+IC0gCj4gLSBzdGF0 aWMgdm9pZAo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3At UHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1vdGUtcm91dGVyLW4ucGF0Y2ggYi9wYXRjaGVz L3BwcC0yLjQuNy8wMDA2LXBwcGQtaXB4Y3AtUHJldmVudC1idWZmZXItb3ZlcnJ1bi1vbi1yZW1v dGUtcm91dGVyLW4ucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA3ZDk4 MTI3YzI4NmYuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMDYtcHBw ZC1pcHhjcC1QcmV2ZW50LWJ1ZmZlci1vdmVycnVuLW9uLXJlbW90ZS1yb3V0ZXItbi5wYXRjaAo+ ICsrKyAvZGV2L251bGwKPiBAQCAtMSwzMCArMCwwIEBACj4gLUZyb206IFBhdWwgTWFja2VycmFz IDxwYXVsdXNAc2FtYmEub3JnPgo+IC1EYXRlOiBGcmksIDE0IEF1ZyAyMDE1IDE3OjU2OjI2ICsx MDAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gcHBwZDogaXB4Y3A6IFByZXZlbnQgYnVmZmVyIG92ZXJy dW4gb24gcmVtb3RlIHJvdXRlciBuYW1lCj4gLQo+IC1UaGlzIGZpeGVzIGFuIGlmIGNvbmRpdGlv biB0byBwcmV2ZW50IGEgcG9zc2libGUgMS1ieXRlIG92ZXJydW4KPiAtb24gaXB4Y3BfaGlzb3B0 aW9uc1swXS5uYW1lLgo+IC0KPiAtUmVwb3J0ZWQtYnk6ICJTYWJhcyBSb3NhbGVzLCBCbGFuY2Eg RSIgPGJsYW5jYS5lLnNhYmFzLnJvc2FsZXNAaW50ZWwuY29tPgo+IC1TaWduZWQtb2ZmLWJ5OiBQ YXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+Cj4gLQo+IC1JbXBvcnRlZCBmcm9tIHBw cF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVs IE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBwcHBkL2lweGNw LmMgfCAyICstCj4gLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL2lweGNwLmMgYi9wcHBkL2lweGNwLmMKPiAtaW5k ZXggN2IyMzQzZTE1NTM3Li5hYWZmMTBmNzYyMDAgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvaXB4Y3Au Ywo+IC0rKysgYi9wcHBkL2lweGNwLmMKPiAtQEAgLTExOTQsNyArMTE5NCw3IEBAIGlweGNwX3Jl cWNpKGYsIGlucCwgbGVuLCByZWplY3RfaWZfZGlzYWdyZWUpCj4gLSAJY2FzZSBJUFhfUk9VVEVS X05BTUU6Cj4gLSAJICAgIGlmIChjaWxlbiA+PSBDSUxFTl9OQU1FKSB7Cj4gLSAJCWludCBuYW1l X3NpemUgPSBjaWxlbiAtIENJTEVOX05BTUU7Cj4gLS0JCWlmIChuYW1lX3NpemUgPiBzaXplb2Yg KGhvLT5uYW1lKSkKPiAtKwkJaWYgKG5hbWVfc2l6ZSA+PSBzaXplb2YgKGhvLT5uYW1lKSkKPiAt IAkJICAgIG5hbWVfc2l6ZSA9IHNpemVvZiAoaG8tPm5hbWUpIC0gMTsKPiAtIAkJbWVtc2V0ICho by0+bmFtZSwgMCwgc2l6ZW9mIChoby0+bmFtZSkpOwo+IC0gCQltZW1jcHkgKGhvLT5uYW1lLCBw LCBuYW1lX3NpemUpOwo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDA3LXBwcGQt Rml4LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMDct cHBwZC1GaXgtY2NwX29wdGlvbnMubXBwZS10eXBlLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggNDc1ZWRhZTI0OTM1Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaAo+ICsr KyAvZGV2L251bGwKPiBAQCAtMSwzMCArMCwwIEBACj4gLUZyb206IFN5bHZhaW4gUm9jaGV0IDxn cmFkYXRvckBncmFkYXRvci5uZXQ+Cj4gLURhdGU6IFdlZCwgMjUgTWFyIDIwMTUgMDA6MjU6MTgg KzAxMDAKPiAtU3ViamVjdDogW1BBVENIXSBwcHBkOiBGaXggY2NwX29wdGlvbnMubXBwZSB0eXBl Cj4gLQo+IC1UaGlzIGNvcnJlY3RzIHRoZSB0eXBlIG9mIGNjcF9vcHRpb25zLm1wcGU7IGl0IGlz IGFjdHVhbGx5IGEgYml0ZmllbGQgb2YKPiAtTVBQRV9PUFRfKiBhbmQgbm90IGEgYm9vbGVhbi4K PiAtCj4gLVNpZ25lZC1vZmYtYnk6IFN5bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5u ZXQ+Cj4gLVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAc2FtYmEub3JnPgo+ IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAt U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Cj4gLS0tLQo+IC0gcHBwZC9jY3AuaCB8IDIgKy0KPiAtIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3BwcGQvY2NwLmggYi9w cHBkL2NjcC5oCj4gLWluZGV4IDZmNGEyZmVlMGEyYy4uNzY0NDZkYjAwN2MwIDEwMDY0NAo+IC0t LS0gYS9wcHBkL2NjcC5oCj4gLSsrKyBiL3BwcGQvY2NwLmgKPiAtQEAgLTM3LDcgKzM3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgY2NwX29wdGlvbnMgewo+IC0gICAgIGJvb2wgcHJlZGljdG9yXzI7CQkv KiBkbyBQcmVkaWN0b3ItMj8gKi8KPiAtICAgICBib29sIGRlZmxhdGVfY29ycmVjdDsJLyogdXNl IGNvcnJlY3QgY29kZSBmb3IgZGVmbGF0ZT8gKi8KPiAtICAgICBib29sIGRlZmxhdGVfZHJhZnQ7 CQkvKiB1c2UgZHJhZnQgUkZDIGNvZGUgZm9yIGRlZmxhdGU/ICovCj4gLS0gICAgYm9vbCBtcHBl OwkJCS8qIGRvIE1QUEU/ICovCj4gLSsgICAgdV9jaGFyIG1wcGU7CQkvKiBNUFBFIGJpdGZpZWxk ICovCj4gLSAgICAgdV9zaG9ydCBic2RfYml0czsJCS8qICMgYml0cy9jb2RlIGZvciBCU0QgQ29t cHJlc3MgKi8KPiAtICAgICB1X3Nob3J0IGRlZmxhdGVfc2l6ZTsJLyogbGcod2luZG93IHNpemUp IGZvciBEZWZsYXRlICovCj4gLSAgICAgc2hvcnQgbWV0aG9kOwkJLyogY29kZSBmb3IgY2hvc2Vu IGNvbXByZXNzaW9uIG1ldGhvZCAqLwo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8w MDA4LXBwcGQtRml4LWNjcF9jaWxlbi1jYWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2Mu cGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDA4LXBwcGQtRml4LWNjcF9jaWxlbi1jYWxjdWxh dGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2MucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCBkNzNiNGRlMzJiMzguLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBw LTIuNC43LzAwMDgtcHBwZC1GaXgtY2NwX2NpbGVuLWNhbGN1bGF0ZWQtc2l6ZS1pZi1ib3RoLWRl ZmxhdGVfYy5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwzMyArMCwwIEBACj4gLUZyb206 IFN5bHZhaW4gUm9jaGV0IDxncmFkYXRvckBncmFkYXRvci5uZXQ+Cj4gLURhdGU6IFR1ZSwgMjQg TWFyIDIwMTUgMjE6MjE6NDAgKzAxMDAKPiAtU3ViamVjdDogW1BBVENIXSBwcHBkOiBGaXggY2Nw X2NpbGVuIGNhbGN1bGF0ZWQgc2l6ZSBpZiBib3RoIGRlZmxhdGVfY29ycmVjdAo+IC0gYW5kIGRl ZmxhdGVfZHJhZnQgYXJlIGVuYWJsZWQKPiAtCj4gLVRoaXMgZml4ZXMgYSBidWcgd2hlcmUgY2Nw X2NpbGVuKCkgd2lsbCByZXR1cm4gNCBieXRlcyBsZXNzIHRoYW4KPiAtbmVjZXNzYXJ5IGZvciB0 aGUgYWRkY2kgYnVmZmVyIGlmIGJvdGggZGVmbGF0ZV9jb3JyZWN0IGFuZAo+IC1kZWZsYXRlX2Ry YWZ0IGFyZSBlbmFibGVkLgo+IC0KPiAtU2lnbmVkLW9mZi1ieTogU3lsdmFpbiBSb2NoZXQgPGdy YWRhdG9yQGdyYWRhdG9yLm5ldD4KPiAtU2lnbmVkLW9mZi1ieTogUGF1bCBNYWNrZXJyYXMgPHBh dWx1c0BzYW1iYS5vcmc+Cj4gLQo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBwcHBkL2NjcC5jIHwgMyArKy0KPiAtIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAtCj4gLWRpZmYgLS1n aXQgYS9wcHBkL2NjcC5jIGIvcHBwZC9jY3AuYwo+IC1pbmRleCA1ODE0ZjM1OGViNDQuLjdkNzky MmFmY2ZjMCAxMDA2NDQKPiAtLS0tIGEvcHBwZC9jY3AuYwo+IC0rKysgYi9wcHBkL2NjcC5jCj4g LUBAIC02NzYsNyArNjc2LDggQEAgY2NwX2NpbGVuKGYpCj4gLSAgICAgY2NwX29wdGlvbnMgKmdv ID0gJmNjcF9nb3RvcHRpb25zW2YtPnVuaXRdOwo+IC0gCj4gLSAgICAgcmV0dXJuIChnby0+YnNk X2NvbXByZXNzPyBDSUxFTl9CU0RfQ09NUFJFU1M6IDApCj4gLS0JKyAoZ28tPmRlZmxhdGU/IENJ TEVOX0RFRkxBVEU6IDApCj4gLSsJKyAoZ28tPmRlZmxhdGUgJiYgZ28tPmRlZmxhdGVfY29ycmVj dD8gQ0lMRU5fREVGTEFURTogMCkKPiAtKwkrIChnby0+ZGVmbGF0ZSAmJiBnby0+ZGVmbGF0ZV9k cmFmdD8gQ0lMRU5fREVGTEFURTogMCkKPiAtIAkrIChnby0+cHJlZGljdG9yXzE/IENJTEVOX1BS RURJQ1RPUl8xOiAwKQo+IC0gCSsgKGdvLT5wcmVkaWN0b3JfMj8gQ0lMRU5fUFJFRElDVE9SXzI6 IDApCj4gLSAJKyAoZ28tPm1wcGU/IENJTEVOX01QUEU6IDApOwo+IGRpZmYgLS1naXQgYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDA5LUZpeC1hLXR5cG8taW4tY29tbWVudC4tRGlmZi1mcm9tLVl1dWlj aGktU29tZXlhLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAwOS1GaXgtYS10eXBvLWluLWNv bW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNvbWV5YS5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDM5YWY4Y2YzM2IxYy4uMDAwMDAwMDAwMDAwCj4gLS0tIGEvcGF0Y2hl cy9wcHAtMi40LjcvMDAwOS1GaXgtYS10eXBvLWluLWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hp LVNvbWV5YS5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyNCArMCwwIEBACj4gLUZyb206 IFlBU1VPS0EgTWFzYWhpa28gPHlhc3Vva2FAeWFzdW9rYS5uZXQ+Cj4gLURhdGU6IFdlZCwgMTYg TWFyIDIwMTYgMTM6Mzk6MTkgKzA5MDAKPiAtU3ViamVjdDogW1BBVENIXSBGaXggYSB0eXBvIGlu IGNvbW1lbnQuIERpZmYgZnJvbSBZdXVpY2hpIFNvbWV5YS4KPiAtCj4gLUltcG9ydGVkIGZyb20g cHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1pY2hh ZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIHBwcGQvZnNt LmMgfCAyICstCj4gLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL2ZzbS5jIGIvcHBwZC9mc20uYwo+IC1pbmRleCBj MjAwY2MzYTg0MzguLmU5YmQzNGYwZThmNCAxMDA2NDQKPiAtLS0tIGEvcHBwZC9mc20uYwo+IC0r KysgYi9wcHBkL2ZzbS5jCj4gLUBAIC00NjgsNyArNDY4LDcgQEAgZnNtX3Jjb25mcmVxKGYsIGlk LCBpbnAsIGxlbikKPiAtIAlmLT5uYWtsb29wcyA9IDA7Cj4gLSAKPiAtICAgICB9IGVsc2Ugewo+ IC0tCS8qIHdlIHNlbnQgQ09ORkFDSyBvciBDT05GUkVKICovCj4gLSsJLyogd2Ugc2VudCBDT05G TkFLIG9yIENPTkZSRUogKi8KPiAtIAlpZiAoZi0+c3RhdGUgIT0gQUNLUkNWRCkKPiAtIAkgICAg Zi0+c3RhdGUgPSBSRVFTRU5UOwo+IC0gCWlmKCBjb2RlID09IENPTkZOQUsgKQo+IGRpZmYgLS1n aXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5l cy1mcm9tLXN5c2xvZy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTAtcGxvZy1jb3VudC1v bmx5LXJlbGV2YW50LWxpbmVzLWZyb20tc3lzbG9nLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggYzlkNTZjZGJiYWQ1Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5c2xv Zy5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyNCArMCwwIEBACj4gLUZyb206IERtaXRy eSBEZXNoZXZveSA8bWl0eWFkYUBnbWFpbC5jb20+Cj4gLURhdGU6IFRodSwgMzEgTWFyIDIwMTYg MjM6Mzk6MzIgKzA0MDAKPiAtU3ViamVjdDogW1BBVENIXSBwbG9nOiBjb3VudCBvbmx5IHJlbGV2 YW50IGxpbmVzIGZyb20gc3lzbG9nCj4gLQo+IC1DbG9zZXMgcGF1bHVzbWFjay9wcHAjNDIKPiAt Cj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNp Z25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+ IC0tLS0KPiAtIHNjcmlwdHMvcGxvZyB8IDIgKy0KPiAtIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3NjcmlwdHMvcGxvZyBi L3NjcmlwdHMvcGxvZwo+IC1pbmRleCA4NGQyYzczNDBjYzYuLjdjYjUzMzQ2NDEzZCAxMDA2NDQK PiAtLS0tIGEvc2NyaXB0cy9wbG9nCj4gLSsrKyBiL3NjcmlwdHMvcGxvZwo+IC1AQCAtMyw1ICsz LDUgQEAKPiAtIGlmIFsgLXMgL3Zhci9sb2cvcHBwLmxvZyBdOyB0aGVuCj4gLSAgIGV4ZWMgdGFp bCAiJEAiIC92YXIvbG9nL3BwcC5sb2cKPiAtIGVsc2UKPiAtLSAgZXhlYyB0YWlsICIkQCIgL3Zh ci9sb2cvc3lzbG9nIHwgZ3JlcCAnIFwocHBwZFx8Y2hhdFwpXFsnCj4gLSsgIGV4ZWMgZ3JlcCAn IFwocHBwZFx8Y2hhdFwpXFsnIC92YXIvbG9nL3N5c2xvZyB8IHRhaWwgIiRAIgo+IC0gZmkKPiBk aWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9tLXN5 cy1lcnJuby5oLXRvLWVycm5vLmgucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDExLUNoYW5n ZS1pbmNsdWRlLWZyb20tc3lzLWVycm5vLmgtdG8tZXJybm8uaC5wYXRjaAo+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IGVkMzEzZWVhYTZkNC4uMDAwMDAwMDAwMDAwCj4gLS0tIGEv cGF0Y2hlcy9wcHAtMi40LjcvMDAxMS1DaGFuZ2UtaW5jbHVkZS1mcm9tLXN5cy1lcnJuby5oLXRv LWVycm5vLmgucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzMgKzAsMCBAQAo+IC1Gcm9t OiBTdGVmYW4gTmlja2wgPFN0ZWZhbi5OaWNrbEBnbWFpbC5jb20+Cj4gLURhdGU6IFdlZCwgMTAg QXVnIDIwMTYgMjE6MzI6MjEgKzAyMDAKPiAtU3ViamVjdDogW1BBVENIXSBDaGFuZ2UgaW5jbHVk ZSBmcm9tIHN5cy9lcnJuby5oIHRvIGVycm5vLmgKPiAtCj4gLUFjY29yZGluZyB0byBQT1NJWCwg dGhlIGNhbm9uaWNhbCBsb2NhdGlvbiBmb3IgZXJybm8uaCBpcyBvbiB0aGUgdG9wIGxldmVsLgo+ IC0KPiAtU2lnbmVkLW9mZi1ieTogU3RlZmFuIE5pY2tsIDxTdGVmYW4uTmlja2xAZ21haWwuY29t Pgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0K PiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXgu ZGU+Cj4gLS0tLQo+IC0gcHBwZC9zeXMtbGludXguYyB8IDIgKy0KPiAtIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3BwcGQv c3lzLWxpbnV4LmMgYi9wcHBkL3N5cy1saW51eC5jCj4gLWluZGV4IGU1ZTliYWY4ODIxZi4uOTA4 YWE0ZjIyMjk3IDEwMDY0NAo+IC0tLS0gYS9wcHBkL3N5cy1saW51eC5jCj4gLSsrKyBiL3BwcGQv c3lzLWxpbnV4LmMKPiAtQEAgLTczLDEyICs3MywxMiBAQAo+IC0gI2luY2x1ZGUgPHN5cy90eXBl cy5oPgo+IC0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KPiAtICNpbmNsdWRlIDxzeXMvdGltZS5o Pgo+IC0tI2luY2x1ZGUgPHN5cy9lcnJuby5oPgo+IC0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Cj4g LSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiAtICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgo+IC0g I2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KPiAtIAo+IC0rI2luY2x1ZGUgPGVycm5vLmg+Cj4g LSAjaW5jbHVkZSA8c3RkaW8uaD4KPiAtICNpbmNsdWRlIDxzdGRsaWIuaD4KPiAtICNpbmNsdWRl IDxzeXNsb2cuaD4KPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxMi1wcHBkLWFs bG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBhdGNoIGIvcGF0Y2hlcy9wcHAt Mi40LjcvMDAxMi1wcHBkLWFsbG93LXVzZS1vZi1hcmJpdHJhcnktaW50ZXJmYWNlLW5hbWVzLnBh dGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMjZkNTZkZTFkNDNhLi4wMDAw MDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEyLXBwcGQtYWxsb3ctdXNlLW9m LWFyYml0cmFyeS1pbnRlcmZhY2UtbmFtZXMucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEs MjE0ICswLDAgQEAKPiAtRnJvbTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+Cj4g LURhdGU6IFR1ZSwgMjMgQXVnIDIwMTYgMTY6MTA6MjEgKzEwMDAKPiAtU3ViamVjdDogW1BBVENI XSBwcHBkOiBhbGxvdyB1c2Ugb2YgYXJiaXRyYXJ5IGludGVyZmFjZSBuYW1lcwo+IC0KPiAtVGhp cyBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgYSBwYXRjaCBmcm9tIG9wZW5TVVNFIHRoYXQgZW5h YmxlcyBQUFAgaW50ZXJmYWNlcwo+IC10byBiZSBjYWxsZWQgYXJiaXRyYXJ5IG5hbWVzLCByYXRo ZXIgdGhhbiBzaW1wbHkgcHBwWCB3aGVyZSBYIGlzIHRoZSB1bml0Cj4gLW51bWJlci4KPiAtCj4g LVRoZSBtb2RpZmljYXRpb25zIGZyb20gdGhlIHN0b2NrIG9wZW5TVVNFIHBhdGNoIGFyZToKPiAt ICByZWZyZXNoIHBhdGNoIG9uIHRvcCBvZiAwMThfaXAgdXBfb3B0aW9uLmRpZmYKPiAtLSBmaXgg YSBwcmludGYgZm9ybWF0LXN0cmluZyB2dWxuZXJhYmlsaXR5IGluIHBwcGQvbWFpbi5jOnNldF9p ZnVuaXQoKQo+IC0tIGNsYXJpZnkgdGhlIHBwcGQuOCBtYW5wYWdlIGFkZGl0aW9ucwo+IC0tIHBh dGNoIHBwcHN0YXRzL3BwcHN0YXRzLmMgdG8gcXVlcnkgcmVuYW1lZCBpbnRlcmZhY2VzIHdpdGhv dXQgY29tcGxhaW50Cj4gLQo+IC1PcmlnaW46IFNVU0UKPiAtQnVnLURlYmlhbjogaHR0cDovL2J1 Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTQ1ODY0Ngo+IC1Gb3J3YXJk ZWQ6IG5vCj4gLVJldmlld2VkLWJ5OiBDaHJpcyBCb290IDxib290Y0BkZWJpYW4ub3JnPgo+IC1T aWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+Cj4gLQo+IC1J bXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Cj4gLQo+IC1TaWduZWQt b2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtLS0t Cj4gLSBwcHBkL21haW4uYyAgICAgICAgIHwgMTYgKysrKysrLS0tLS0tLS0tLQo+IC0gcHBwZC9v cHRpb25zLmMgICAgICB8ICA1ICsrKysrCj4gLSBwcHBkL3BwcGQuOCAgICAgICAgIHwgIDggKysr KysrKy0KPiAtIHBwcGQvcHBwZC5oICAgICAgICAgfCAxMSArKysrKysrKysrKwo+IC0gcHBwZC9z eXMtbGludXguYyAgICB8IDE1ICsrKysrKysrKysrKysrKwo+IC0gcHBwc3RhdHMvcHBwc3RhdHMu YyB8IDEyICsrKysrKy0tLS0tLQo+IC0gNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCsp LCAxNyBkZWxldGlvbnMoLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL21haW4uYyBiL3BwcGQv bWFpbi5jCj4gLWluZGV4IDZkNTBkMWJhYzFkOS4uZjE5ODZlZDY4ZDBiIDEwMDY0NAo+IC0tLS0g YS9wcHBkL21haW4uYwo+IC0rKysgYi9wcHBkL21haW4uYwo+IC1AQCAtMTI0LDcgKzEyNCw3IEBA Cj4gLSBzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gUkNTSUQ7Cj4gLSAKPiAtIC8qIGludGVy ZmFjZSB2YXJzICovCj4gLS1jaGFyIGlmbmFtZVszMl07CQkvKiBJbnRlcmZhY2UgbmFtZSAqLwo+ IC0rY2hhciBpZm5hbWVbTUFYSUZOQU1FTEVOXTsJLyogSW50ZXJmYWNlIG5hbWUgKi8KPiAtIGlu dCBpZnVuaXQ7CQkJLyogSW50ZXJmYWNlIHVuaXQgbnVtYmVyICovCj4gLSAKPiAtIHN0cnVjdCBj aGFubmVsICp0aGVfY2hhbm5lbDsKPiAtQEAgLTI5OCwxMyArMjk4LDYgQEAgc3RydWN0IHByb3Rl bnQgKnByb3RvY29sc1tdID0gewo+IC0gICAgIE5VTEwKPiAtIH07Cj4gLSAKPiAtLS8qCj4gLS0g KiBJZiBQUFBfRFJWX05BTUUgaXMgbm90IGRlZmluZWQsIHVzZSB0aGUgZGVmYXVsdCAicHBwIiBh cyB0aGUgZGV2aWNlIG5hbWUuCj4gLS0gKi8KPiAtLSNpZiAhZGVmaW5lZChQUFBfRFJWX05BTUUp Cj4gLS0jZGVmaW5lIFBQUF9EUlZfTkFNRQkicHBwIgo+IC0tI2VuZGlmIC8qICFkZWZpbmVkKFBQ UF9EUlZfTkFNRSkgKi8KPiAtLQo+IC0gaW50Cj4gLSBtYWluKGFyZ2MsIGFyZ3YpCj4gLSAgICAg aW50IGFyZ2M7Cj4gLUBAIC03MzcsOCArNzMwLDExIEBAIHZvaWQKPiAtIHNldF9pZnVuaXQoaXNr ZXkpCj4gLSAgICAgaW50IGlza2V5Owo+IC0gewo+IC0tICAgIGluZm8oIlVzaW5nIGludGVyZmFj ZSAlcyVkIiwgUFBQX0RSVl9OQU1FLCBpZnVuaXQpOwo+IC0tICAgIHNscHJpbnRmKGlmbmFtZSwg c2l6ZW9mKGlmbmFtZSksICIlcyVkIiwgUFBQX0RSVl9OQU1FLCBpZnVuaXQpOwo+IC0rICAgIGlm IChyZXFfaWZuYW1lWzBdICE9ICdcMCcpCj4gLSsJc2xwcmludGYoaWZuYW1lLCBzaXplb2YoaWZu YW1lKSwgIiVzIiwgcmVxX2lmbmFtZSk7Cj4gLSsgICAgZWxzZQo+IC0rCXNscHJpbnRmKGlmbmFt ZSwgc2l6ZW9mKGlmbmFtZSksICIlcyVkIiwgUFBQX0RSVl9OQU1FLCBpZnVuaXQpOwo+IC0rICAg IGluZm8oIlVzaW5nIGludGVyZmFjZSAlcyIsIGlmbmFtZSk7Cj4gLSAgICAgc2NyaXB0X3NldGVu digiSUZOQU1FIiwgaWZuYW1lLCBpc2tleSk7Cj4gLSAgICAgaWYgKGlza2V5KSB7Cj4gLSAJY3Jl YXRlX3BpZGZpbGUoZ2V0cGlkKCkpOwkvKiB3cml0ZSBwaWQgdG8gZmlsZSAqLwo+IC1kaWZmIC0t Z2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29wdGlvbnMuYwo+IC1pbmRleCBmNjZiNzY1N2Jj MzEuLjkxZGE1MTVhYzUzMyAxMDA2NDQKPiAtLS0tIGEvcHBwZC9vcHRpb25zLmMKPiAtKysrIGIv cHBwZC9vcHRpb25zLmMKPiAtQEAgLTExNCw2ICsxMTQsNyBAQCBjaGFyCWxpbmtuYW1lW01BWFBB VEhMRU5dOwkvKiBsb2dpY2FsIG5hbWUgZm9yIGxpbmsgKi8KPiAtIGJvb2wJdHVuZV9rZXJuZWw7 CQkvKiBtYXkgYWx0ZXIga2VybmVsIHNldHRpbmdzICovCj4gLSBpbnQJY29ubmVjdF9kZWxheSA9 IDEwMDA7CS8qIHdhaXQgdGhpcyBtYW55IG1zIGFmdGVyIGNvbm5lY3Qgc2NyaXB0ICovCj4gLSBp bnQJcmVxX3VuaXQgPSAtMTsJCS8qIHJlcXVlc3RlZCBpbnRlcmZhY2UgdW5pdCAqLwo+IC0rY2hh cglyZXFfaWZuYW1lW01BWElGTkFNRUxFTl07CS8qIHJlcXVlc3RlZCBpbnRlcmZhY2UgbmFtZSAq Lwo+IC0gYm9vbAltdWx0aWxpbmsgPSAwOwkJLyogRW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24g Ki8KPiAtIGNoYXIJKmJ1bmRsZV9uYW1lID0gTlVMTDsJLyogYnVuZGxlIG5hbWUgZm9yIG11bHRp bGluayAqLwo+IC0gYm9vbAlkdW1wX29wdGlvbnM7CQkvKiBwcmludCBvdXQgb3B0aW9uIHZhbHVl cyAqLwo+IC1AQCAtMjgzLDYgKzI4NCwxMCBAQCBvcHRpb25fdCBnZW5lcmFsX29wdGlvbnNbXSA9 IHsKPiAtICAgICAgICJQUFAgaW50ZXJmYWNlIHVuaXQgbnVtYmVyIHRvIHVzZSBpZiBwb3NzaWJs ZSIsCj4gLSAgICAgICBPUFRfUFJJTyB8IE9QVF9MTElNSVQsIDAsIDAgfSwKPiAtIAo+IC0rICAg IHsgImlmbmFtZSIsIG9fc3RyaW5nLCByZXFfaWZuYW1lLAo+IC0rICAgICAgIlNldCBQUFAgaW50 ZXJmYWNlIG5hbWUiLAo+IC0rICAgICAgT1BUX1BSSU8gfCBPUFRfUFJJViB8IE9QVF9TVEFUSUMs IE5VTEwsIE1BWElGTkFNRUxFTiB9LAo+IC0rCj4gLSAgICAgeyAiZHVtcCIsIG9fYm9vbCwgJmR1 bXBfb3B0aW9ucywKPiAtICAgICAgICJQcmludCBvdXQgb3B0aW9uIHZhbHVlcyBhZnRlciBwYXJz aW5nIGFsbCBvcHRpb25zIiwgMSB9LAo+IC0gICAgIHsgImRyeXJ1biIsIG9fYm9vbCwgJmRyeXJ1 biwKPiAtZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIvcHBwZC9wcHBkLjgKPiAtaW5kZXggZTI3 NjhiMTM1MjczLi42NDY1OWNmODY3YjIgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcHBwZC44Cj4gLSsr KyBiL3BwcGQvcHBwZC44Cj4gLUBAIC0xMDczLDcgKzEwNzMsMTMgQEAgdW5kZXIgTGludXggYW5k IEZyZWVCU0QgMi4yLjggYW5kIGxhdGVyLgo+IC0gLlRQCj4gLSAuQiB1bml0IFxmSW51bQo+IC0g U2V0cyB0aGUgcHBwIHVuaXQgbnVtYmVyIChmb3IgYSBwcHAwIG9yIHBwcDEgZXRjIGludGVyZmFj ZSBuYW1lKSBmb3Igb3V0Ym91bmQKPiAtLWNvbm5lY3Rpb25zLgo+IC0rY29ubmVjdGlvbnMuICBJ ZiB0aGUgdW5pdCBpcyBhbHJlYWR5IGluIHVzZSBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBudW1i ZXIgd2lsbAo+IC0rYmUgdXNlZC4KPiAtKy5UUAo+IC0rLkIgaWZuYW1lIFxmSXN0cmluZwo+IC0r U2V0IHRoZSBwcHAgaW50ZXJmYWNlIG5hbWUgZm9yIG91dGJvdW5kIGNvbm5lY3Rpb25zLiAgSWYg dGhlIGludGVyZmFjZSBuYW1lIGlzCj4gLSthbHJlYWR5IGluIHVzZSwgb3IgaWYgdGhlIG5hbWUg Y2Fubm90IGJlIHVzZWQgZm9yIGFueSBvdGhlciByZWFzb24sIHBwcGQgd2lsbAo+IC0rdGVybWlu YXRlLgo+IC0gLlRQCj4gLSAuQiB1bnNldCBcZkluYW1lCj4gLSBSZW1vdmUgYSB2YXJpYWJsZSBm cm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3Igc2NyaXB0cyB0aGF0IGFyZQo+IC1kaWZm IC0tZ2l0IGEvcHBwZC9wcHBkLmggYi9wcHBkL3BwcGQuaAo+IC1pbmRleCAyNDdmYTE1MzczOWIu LjFhMWJmMGI5OTU4MiAxMDA2NDQKPiAtLS0tIGEvcHBwZC9wcHBkLmgKPiAtKysrIGIvcHBwZC9w cHBkLmgKPiAtQEAgLTgwLDYgKzgwLDE2IEBACj4gLSAjZGVmaW5lIE1BWEFSR1MJCTEJLyogbWF4 ICMgYXJncyB0byBhIGNvbW1hbmQgKi8KPiAtICNkZWZpbmUgTUFYTkFNRUxFTgkyNTYJLyogbWF4 IGxlbmd0aCBvZiBob3N0bmFtZSBvciBuYW1lIGZvciBhdXRoICovCj4gLSAjZGVmaW5lIE1BWFNF Q1JFVExFTgkyNTYJLyogbWF4IGxlbmd0aCBvZiBwYXNzd29yZCBvciBzZWNyZXQgKi8KPiAtKyNk ZWZpbmUgTUFYSUZOQU1FTEVOCTMyCS8qIG1heCBsZW5ndGggb2YgaW50ZXJmYWNlIG5hbWU7IG9y IHVzZSBJRk5BTVNJWiwgY2FuIHdlCj4gLSsJCQkJICAgYWx3YXlzIGluY2x1ZGUgbmV0L2lmLmg/ ICovCj4gLSsKPiAtKy8qCj4gLSsgKiBJZiBQUFBfRFJWX05BTUUgaXMgbm90IGRlZmluZWQsIHVz ZSB0aGUgZGVmYXVsdCAicHBwIiBhcyB0aGUgZGV2aWNlIG5hbWUuCj4gLSsgKiBXaGVyZSBzaG91 bGQgUFBQX0RSVl9OQU1FIGNvbWUgZnJvbT8gRG8gd2UgaW5jbHVkZSBpdCBoZXJlPwo+IC0rICov Cj4gLSsjaWYgIWRlZmluZWQoUFBQX0RSVl9OQU1FKQo+IC0rI2RlZmluZSBQUFBfRFJWX05BTUUJ InBwcCIKPiAtKyNlbmRpZiAvKiAhZGVmaW5lZChQUFBfRFJWX05BTUUpICovCj4gLSAKPiAtIC8q Cj4gLSAgKiBPcHRpb24gZGVzY3JpcHRvciBzdHJ1Y3R1cmUuCj4gLUBAIC0zMTgsNiArMzI4LDcg QEAgZXh0ZXJuIGJvb2wJdHVuZV9rZXJuZWw7CS8qIE1heSBhbHRlciBrZXJuZWwgc2V0dGluZ3Mg YXMgbmVjZXNzYXJ5ICovCj4gLSBleHRlcm4gaW50CWNvbm5lY3RfZGVsYXk7CS8qIFRpbWUgdG8g ZGVsYXkgYWZ0ZXIgY29ubmVjdCBzY3JpcHQgKi8KPiAtIGV4dGVybiBpbnQJbWF4X2RhdGFfcmF0 ZTsJLyogbWF4IGJ5dGVzL3NlYyB0aHJvdWdoIGNoYXJzaHVudCAqLwo+IC0gZXh0ZXJuIGludAly ZXFfdW5pdDsJLyogaW50ZXJmYWNlIHVuaXQgbnVtYmVyIHRvIHVzZSAqLwo+IC0rZXh0ZXJuIGNo YXIJcmVxX2lmbmFtZVtNQVhJRk5BTUVMRU5dOyAvKiBpbnRlcmZhY2UgbmFtZSB0byB1c2UgKi8K PiAtIGV4dGVybiBib29sCW11bHRpbGluazsJLyogZW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24g Ki8KPiAtIGV4dGVybiBib29sCW5vZW5kcG9pbnQ7CS8qIGRvbid0IHNlbmQgb3IgYWNjZXB0IGVu ZHB0LiBkaXNjcmltLiAqLwo+IC0gZXh0ZXJuIGNoYXIJKmJ1bmRsZV9uYW1lOwkvKiBidW5kbGUg bmFtZSBmb3IgbXVsdGlsaW5rICovCj4gLWRpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51eC5jIGIv cHBwZC9zeXMtbGludXguYwo+IC1pbmRleCA5MDhhYTRmMjIyOTcuLjliMmYyOTMwMjRhYyAxMDA2 NDQKPiAtLS0tIGEvcHBwZC9zeXMtbGludXguYwo+IC0rKysgYi9wcHBkL3N5cy1saW51eC5jCj4g LUBAIC02NDEsNiArNjQxLDIxIEBAIHN0YXRpYyBpbnQgbWFrZV9wcHBfdW5pdCgpCj4gLSAJfQo+ IC0gCWlmICh4IDwgMCkKPiAtIAkJZXJyb3IoIkNvdWxkbid0IGNyZWF0ZSBuZXcgcHBwIHVuaXQ6 ICVtIik7Cj4gLSsKPiAtKwlpZiAoeCA9PSAwICYmIHJlcV9pZm5hbWVbMF0gIT0gJ1wwJykgewo+ IC0rCQlzdHJ1Y3QgaWZyZXEgaWZyOwo+IC0rCQljaGFyIHRbTUFYSUZOQU1FTEVOXTsKPiAtKwkJ bWVtc2V0KCZpZnIsIDAsIHNpemVvZihzdHJ1Y3QgaWZyZXEpKTsKPiAtKwkJc2xwcmludGYodCwg c2l6ZW9mKHQpLCAiJXMlZCIsIFBQUF9EUlZfTkFNRSwgaWZ1bml0KTsKPiAtKwkJc3RybmNweShp ZnIuaWZyX25hbWUsIHQsIElGX05BTUVTSVpFKTsKPiAtKwkJc3RybmNweShpZnIuaWZyX25ld25h bWUsIHJlcV9pZm5hbWUsIElGX05BTUVTSVpFKTsKPiAtKwkJeCA9IGlvY3RsKHNvY2tfZmQsIFNJ T0NTSUZOQU1FLCAmaWZyKTsKPiAtKwkJaWYgKHggPCAwKQo+IC0rCQkgICAgZXJyb3IoIkNvdWxk bid0IHJlbmFtZSBpbnRlcmZhY2UgJXMgdG8gJXM6ICVtIiwgdCwgcmVxX2lmbmFtZSk7Cj4gLSsJ CWVsc2UKPiAtKwkJICAgIGluZm8oIlJlbmFtZWQgaW50ZXJmYWNlICVzIHRvICVzIiwgdCwgcmVx X2lmbmFtZSk7Cj4gLSsJfQo+IC0rCj4gLSAJcmV0dXJuIHg7Cj4gLSB9Cj4gLSAKPiAtZGlmZiAt LWdpdCBhL3BwcHN0YXRzL3BwcHN0YXRzLmMgYi9wcHBzdGF0cy9wcHBzdGF0cy5jCj4gLWluZGV4 IDYzNjc5ODhlYjk2Yi4uNDZjYjljMjQ5NDJiIDEwMDY0NAo+IC0tLS0gYS9wcHBzdGF0cy9wcHBz dGF0cy5jCj4gLSsrKyBiL3BwcHN0YXRzL3BwcHN0YXRzLmMKPiAtQEAgLTg4LDcgKzg4LDYgQEAg aW50CWFmbGFnOwkJCS8qIHByaW50IGFic29sdXRlIHZhbHVlcywgbm90IGRlbHRhcyAqLwo+IC0g aW50CWRmbGFnOwkJCS8qIHByaW50IGRhdGEgcmF0ZXMsIG5vdCBieXRlcyAqLwo+IC0gaW50CWlu dGVydmFsLCBjb3VudDsKPiAtIGludAlpbmZpbml0ZTsKPiAtLWludAl1bml0Owo+IC0gaW50CXM7 CQkJLyogc29ja2V0IG9yIC9kZXYvcHBwIGZpbGUgZGVzY3JpcHRvciAqLwo+IC0gaW50CXNpZ25h bGxlZDsJCS8qIHNldCBpZiBhbGFybSBnb2VzIG9mZiAiZWFybHkiICovCj4gLSBjaGFyCSpwcm9n bmFtZTsKPiAtQEAgLTQ0OSw2ICs0NDgsNyBAQCBtYWluKGFyZ2MsIGFyZ3YpCj4gLSB7Cj4gLSAg ICAgaW50IGM7Cj4gLSAjaWZkZWYgU1RSRUFNUwo+IC0rICAgIGludCB1bml0Owo+IC0gICAgIGNo YXIgKmRldjsKPiAtICNlbmRpZgo+IC0gCj4gLUBAIC01MDYsMTEgKzUwNiw2IEBAIG1haW4oYXJn YywgYXJndikKPiAtICAgICBpZiAoYXJnYyA+IDApCj4gLSAJaW50ZXJmYWNlID0gYXJndlswXTsK PiAtIAo+IC0tICAgIGlmIChzc2NhbmYoaW50ZXJmYWNlLCBQUFBfRFJWX05BTUUgIiVkIiwgJnVu aXQpICE9IDEpIHsKPiAtLQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIGludGVyZmFjZSAn JXMnIHNwZWNpZmllZFxuIiwKPiAtLQkJcHJvZ25hbWUsIGludGVyZmFjZSk7Cj4gLS0gICAgfQo+ IC0tCj4gLSAjaWZuZGVmIFNUUkVBTVMKPiAtICAgICB7Cj4gLSAJc3RydWN0IGlmcmVxIGlmcjsK PiAtQEAgLTUzNSw2ICs1MzAsMTEgQEAgbWFpbihhcmdjLCBhcmd2KQo+IC0gICAgIH0KPiAtIAo+ IC0gI2Vsc2UJLyogU1RSRUFNUyAqLwo+IC0rICAgIGlmIChzc2NhbmYoaW50ZXJmYWNlLCBQUFBf RFJWX05BTUUgIiVkIiwgJnVuaXQpICE9IDEpIHsKPiAtKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBp bnZhbGlkIGludGVyZmFjZSAnJXMnIHNwZWNpZmllZFxuIiwKPiAtKwkJcHJvZ25hbWUsIGludGVy ZmFjZSk7Cj4gLSsgICAgfQo+IC0rCj4gLSAjaWZkZWYgX19vc2ZfXwo+IC0gICAgIGRldiA9ICIv ZGV2L3N0cmVhbXMvcHBwIjsKPiAtICNlbHNlCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIu NC43LzAwMTMtcHBwZC1SZW1vdmUtdW51c2VkLWRlY2xhcmF0aW9uLW9mLXR0eW5hbWUucGF0Y2gg Yi9wYXRjaGVzL3BwcC0yLjQuNy8wMDEzLXBwcGQtUmVtb3ZlLXVudXNlZC1kZWNsYXJhdGlvbi1v Zi10dHluYW1lLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMjE5OWU3 ZjdkZmRmLi4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDEzLXBwcGQt UmVtb3ZlLXVudXNlZC1kZWNsYXJhdGlvbi1vZi10dHluYW1lLnBhdGNoCj4gKysrIC9kZXYvbnVs bAo+IEBAIC0xLDI1ICswLDAgQEAKPiAtRnJvbTogR2VvcmdlIEJ1cmdlc3MgSVYgPGdlb3JnZUBn Yml2Lm5ldD4KPiAtRGF0ZTogRnJpLCA5IFNlcCAyMDE2IDE3OjM2OjU0IC0wNzAwCj4gLVN1Ympl Y3Q6IFtQQVRDSF0gcHBwZDogUmVtb3ZlIHVudXNlZCBkZWNsYXJhdGlvbiBvZiB0dHluYW1lLgo+ IC0KPiAtU2lnbmVkLW9mZi1ieTogR2VvcmdlIEJ1cmdlc3MgSVYgPGdlb3JnZUBnYml2Lm5ldD4K PiAtCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4g LVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRl Pgo+IC0tLS0KPiAtIHBwcGQvbWFpbi5jIHwgMSAtCj4gLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxl dGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKPiAt aW5kZXggZjE5ODZlZDY4ZDBiLi43NmI2N2QyNDg1YjcgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvbWFp bi5jCj4gLSsrKyBiL3BwcGQvbWFpbi5jCj4gLUBAIC0yNTcsNyArMjU3LDYgQEAgc3RhdGljIHZv aWQgY2xlYW51cF9kYiBfX1AoKHZvaWQpKTsKPiAtIHN0YXRpYyB2b2lkIGhhbmRsZV9ldmVudHMg X19QKCh2b2lkKSk7Cj4gLSB2b2lkIHByaW50X2xpbmtfc3RhdHMgX19QKCh2b2lkKSk7Cj4gLSAK PiAtLWV4dGVybgljaGFyCSp0dHluYW1lIF9fUCgoaW50KSk7Cj4gLSBleHRlcm4JY2hhcgkqZ2V0 bG9naW4gX19QKCh2b2lkKSk7Cj4gLSBpbnQgbWFpbiBfX1AoKGludCwgY2hhciAqW10pKTsKPiAt IAo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE0LXBwcGQtUHJvdmlkZS1lcnJv ci1pbXBsZW1lbnRhdGlvbi1pbi1wcHBvZS1kaXNjb3ZlcnkucGF0Y2ggYi9wYXRjaGVzL3BwcC0y LjQuNy8wMDE0LXBwcGQtUHJvdmlkZS1lcnJvci1pbXBsZW1lbnRhdGlvbi1pbi1wcHBvZS1kaXNj b3ZlcnkucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAzOWZjM2Q0ZjZm ODYuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTQtcHBwZC1Qcm92 aWRlLWVycm9yLWltcGxlbWVudGF0aW9uLWluLXBwcG9lLWRpc2NvdmVyeS5wYXRjaAo+ICsrKyAv ZGV2L251bGwKPiBAQCAtMSw1MiArMCwwIEBACj4gLUZyb206IFN0ZWZhbiBOaWNrbCA8U3RlZmFu Lk5pY2tsQGdtYWlsLmNvbT4KPiAtRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxNjo1MjoxMiArMDIw MAo+IC1TdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IFByb3ZpZGUgZXJyb3IoKSBpbXBsZW1lbnRhdGlv biBpbiBwcHBvZS1kaXNjb3ZlcnkKPiAtCj4gLVRoZSBwcHBvZS1kaXNjb3ZlcnkgcHJvZ3JhbSBj YWxscyBlcnJvcigpIGZyb20gdGhlIENIRUNLX1JPT00gbWFjcm8KPiAtZGVmaW5lZCBpbiBwcHBv ZS5oLiBTaW5jZSBwcHBvZS1kaXNjb3ZlcnkgaXMgYSBzdGFuZGFsb25lIHByb2dyYW0gbm90Cj4g LWxpbmtlZCB3aXRoIHRoZSByZXN0IG9mIHBwcGQsIHRoZSBvbmx5IHdheSB0aGlzIGNvdWxkIGJ1 aWxkIGlzIGJ5Cj4gLWxpbmtpbmcgdG8gZ2xpYmMncyBwcm9wcmlldGFyeSBlcnJvcigzKSBmdW5j dGlvbiBpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbgo+IC1vZiB0aGUgc2FtZSBuYW1lIChidXQgd2l0 aCBkaWZmZXJlbnQgYXJndW1lbnRzKSBkZWZpbmVkIGluIHBwcGQvdXRpbHMuYy4KPiAtCj4gLVNv IHdpdGggZ2xpYmMgdGhpcyBidWlsZHMsIGJ1dCB3aWxsIHByb2JhYmx5IGNyYXNoIHdoZW4gdGhl IGFzc2VydGlvbiBpcwo+IC10cmlnZ2VyZWQuIEFzIHRoZSBhc3NlcnRpb24gaXMgdW5saWtlbHkg dG8gZmFpbCwgbm9ib2R5IGhhcyBub3RpY2VkLgo+IC0KPiAtVGhlIGJ1aWxkIGhvd2V2ZXIgZmFp bHMgd2l0aCBtdXNsIGxpYmMgb3IgdUNsaWJjIHNpbmNlIHRoZXkgZG9uJ3QKPiAtcHJvdmlkZSB0 aGUgZG9wcGVsZ2FuZ2VyLgo+IC0KPiAtU2lnbmVkLW9mZi1ieTogU3RlZmFuIE5pY2tsIDxTdGVm YW4uTmlja2xAZ21haWwuY29tPgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEu ZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9s YnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3Bw cG9lLWRpc2NvdmVyeS5jIHwgOSArKysrKysrKysKPiAtIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2Vy dGlvbnMoKykKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2Ut ZGlzY292ZXJ5LmMgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMKPiAt aW5kZXggM2QzYmY0ZWVjYzgxLi41NTAzN2RmZmIwMjMgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcGx1 Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYwo+IC0rKysgYi9wcHBkL3BsdWdpbnMvcnAt cHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMKPiAtQEAgLTksNiArOSw3IEBACj4gLSAgKgo+IC0gICov Cj4gLSAKPiAtKyNpbmNsdWRlIDxzdGRhcmcuaD4KPiAtICNpbmNsdWRlIDxzdGRpby5oPgo+IC0g I2luY2x1ZGUgPHN0ZGxpYi5oPgo+IC0gI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IC1AQCAtNTUsNiAr NTYsMTQgQEAgdm9pZCBkaWUoaW50IHN0YXR1cykKPiAtIAlleGl0KHN0YXR1cyk7Cj4gLSB9Cj4g LSAKPiAtK3ZvaWQgZXJyb3IoY2hhciAqZm10LCAuLi4pCj4gLSt7Cj4gLSsgICAgdmFfbGlzdCBw dmFyOwo+IC0rICAgIHZhX3N0YXJ0KHB2YXIsIGZtdCk7Cj4gLSsgICAgdmZwcmludGYoc3RkZXJy LCBmbXQsIHB2YXIpOwo+IC0rICAgIHZhX2VuZChwdmFyKTsKPiAtK30KPiAtKwo+IC0gLyogSW5p dGlhbGl6ZSBmcmFtZSB0eXBlcyB0byBSRkMgMjUxNiB2YWx1ZXMuICBTb21lIGJyb2tlbiBwZWVy cyBhcHBhcmVudGx5Cj4gLSAgICB1c2UgZGlmZmVyZW50IGZyYW1lIHR5cGVzLi4uIHNpZ2guLi4g Ki8KPiAtIAo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE1LXBwcG9lLWluY2x1 ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40 LjcvMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRj aAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGIyNGU1ZWY1ODUyZi4uMDAwMDAw MDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGlu ZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw0 OSArMCwwIEBACj4gLUZyb206IEx1Ym9taXIgUmludGVsIDxsa3VuZHJha0B2My5zaz4KPiAtRGF0 ZTogTW9uLCA5IEphbiAyMDE3IDEzOjM0OjIzICswMDAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gcHBw b2U6IGluY2x1ZGUgbmV0aW5ldC9pbi5oIGJlZm9yZSBsaW51eC9pbi5oCj4gLQo+IC1UaGlzIGZp eGVzIGJ1aWxkcyB3aXRoIG5ld2VyIGtlcm5lbHMuIEJhc2ljYWxseSwgPG5ldGluZXQvaW4uaD4g bmVlZHMgdG8gYmUKPiAtaW5jbHVkZWQgYmVmb3JlIDxsaW51eC9pbi5oPiBvdGhlcndpc2UgdGhl IGVhcmxpZXIsIHVuYXdhcmUgb2YgdGhlIGxhdHRlciwKPiAtdHJpZXMgdG8gcmVkZWZpbmUgc3lt Ym9scyBhbmQgc3RydWN0dXJlcy4gQWxzbywgPGxpbnV4L2lmX3BwcG94Lmg+IGRvZXNuJ3Qgd29y awo+IC1hbG9uZSBhbnltb3JlLCBzaW5jZSBpdCBwdWxscyB0aGUgaGVhZGVycyBpbiB0aGUgd3Jv bmcgb3JkZXIsIHNvIHdlIGJldHRlcgo+IC1pbmNsdWRlIDxuZXRpbmV0L2luLmg+IGVhcmx5Lgo+ IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAt U2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmggfCA3ICsrKystLS0KPiAt IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gLQo+IC1k aWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmggYi9wcHBkL3BsdWdpbnMv cnAtcHBwb2UvcHBwb2UuaAo+IC1pbmRleCA5YWIyZWVlMzkxNGMuLmM0YWFhNmU2ODg1NiAxMDA2 NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKPiAtKysrIGIvcHBwZC9w bHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKPiAtQEAgLTQ3LDYgKzQ3LDEwIEBACj4gLSAjaW5jbHVk ZSA8c3lzL3NvY2tldC5oPgo+IC0gI2VuZGlmCj4gLSAKPiAtKy8qIFRoaXMgaGFzIHRvIGJlIGlu Y2x1ZGVkIGJlZm9yZSBMaW51eCA0LjgncyBsaW51eC9pbi5oCj4gLSsgKiBnZXRzIGRyYWdnZWQg aW4uICovCj4gLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgo+IC0rCj4gLSAvKiBVZ2x5IGhlYWRl ciBmaWxlcyBvbiBzb21lIExpbnV4IGJveGVzLi4uICovCj4gLSAjaWYgZGVmaW5lZChIQVZFX0xJ TlVYX0lGX0gpCj4gLSAjaW5jbHVkZSA8bGludXgvaWYuaD4KPiAtQEAgLTg0LDggKzg4LDYgQEAg dHlwZWRlZiB1bnNpZ25lZCBsb25nIFVJTlQzMl90Owo+IC0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0 aGVyLmg+Cj4gLSAjZW5kaWYKPiAtIAo+IC0tI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KPiAtLQo+ IC0gI2lmZGVmIEhBVkVfTkVUSU5FVF9JRl9FVEhFUl9ICj4gLSAjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+Cj4gLSAKPiAtQEAgLTk4LDcgKzEwMCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5U MzJfdDsKPiAtICNlbmRpZgo+IC0gCj4gLSAKPiAtLQo+IC0gLyogRXRoZXJuZXQgZnJhbWUgdHlw ZXMgYWNjb3JkaW5nIHRvIFJGQyAyNTE2ICovCj4gLSAjZGVmaW5lIEVUSF9QUFBPRV9ESVNDT1ZF UlkgMHg4ODYzCj4gLSAjZGVmaW5lIEVUSF9QUFBPRV9TRVNTSU9OICAgMHg4ODY0Cj4gZGlmZiAt LWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTYtYWRhcHRpdmVfZWNob3MucGF0Y2ggYi9wYXRj aGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggYzBmMjIyODI0MDM2Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+ IEBAIC0xLDcyICswLDAgQEAKPiAtRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Cj4gLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKPiAt U3ViamVjdDogW1BBVENIXSBhZGFwdGl2ZV9lY2hvcwo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBf Mi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBP bGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9sY3AuYyAg fCAxOSArKysrKysrKysrKysrKysrKysrCj4gLSBwcHBkL3BwcGQuOCB8ICA1ICsrKysrCj4gLSAy IGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKykKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBk L2xjcC5jIGIvcHBwZC9sY3AuYwo+IC1pbmRleCA4ZWQyNzc4YmZiNjcuLmM5N2E2NGI3Nzc0ZiAx MDA2NDQKPiAtLS0tIGEvcHBwZC9sY3AuYwo+IC0rKysgYi9wcHBkL2xjcC5jCj4gLUBAIC03Myw2 ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGxjcF9kZWxheWVkX3VwIF9fUCgodm9pZCAqKSk7Cj4gLSAg Ki8KPiAtIGludAlsY3BfZWNob19pbnRlcnZhbCA9IDA7IAkvKiBJbnRlcnZhbCBiZXR3ZWVuIExD UCBlY2hvLXJlcXVlc3RzICovCj4gLSBpbnQJbGNwX2VjaG9fZmFpbHMgPSAwOwkvKiBUb2xlcmFu Y2UgdG8gdW5hbnN3ZXJlZCBlY2hvLXJlcXVlc3RzICovCj4gLStib29sCWxjcF9lY2hvX2FkYXB0 aXZlID0gMDsJLyogcmVxdWVzdCBlY2hvIG9ubHkgaWYgdGhlIGxpbmsgd2FzIGlkbGUgKi8KPiAt IGJvb2wJbGF4X3JlY3YgPSAwOwkJLyogYWNjZXB0IGNvbnRyb2wgY2hhcnMgaW4gYXN5bmNtYXAg Ki8KPiAtIGJvb2wJbm9lbmRwb2ludCA9IDA7CQkvKiBkb24ndCBzZW5kL2FjY2VwdCBlbmRwb2lu dCBkaXNjcmltaW5hdG9yICovCj4gLSAKPiAtQEAgLTE1MSw2ICsxNTIsOCBAQCBzdGF0aWMgb3B0 aW9uX3QgbGNwX29wdGlvbl9saXN0W10gPSB7Cj4gLSAgICAgICBPUFRfUFJJTyB9LAo+IC0gICAg IHsgImxjcC1lY2hvLWludGVydmFsIiwgb19pbnQsICZsY3BfZWNob19pbnRlcnZhbCwKPiAtICAg ICAgICJTZXQgdGltZSBpbiBzZWNvbmRzIGJldHdlZW4gTENQIGVjaG8gcmVxdWVzdHMiLCBPUFRf UFJJTyB9LAo+IC0rICAgIHsgImxjcC1lY2hvLWFkYXB0aXZlIiwgb19ib29sLCAmbGNwX2VjaG9f YWRhcHRpdmUsCj4gLSsgICAgICAiU3VwcHJlc3MgTENQIGVjaG8gcmVxdWVzdHMgaWYgdHJhZmZp YyB3YXMgcmVjZWl2ZWQiLCAxIH0sCj4gLSAgICAgeyAibGNwLXJlc3RhcnQiLCBvX2ludCwgJmxj cF9mc21bMF0udGltZW91dHRpbWUsCj4gLSAgICAgICAiU2V0IHRpbWUgaW4gc2Vjb25kcyBiZXR3 ZWVuIExDUCByZXRyYW5zbWlzc2lvbnMiLCBPUFRfUFJJTyB9LAo+IC0gICAgIHsgImxjcC1tYXgt dGVybWluYXRlIiwgb19pbnQsICZsY3BfZnNtWzBdLm1heHRlcm10cmFuc21pdHMsCj4gLUBAIC0y MzMxLDYgKzIzMzQsMjIgQEAgTGNwU2VuZEVjaG9SZXF1ZXN0IChmKQo+IC0gCX0KPiAtICAgICB9 Cj4gLSAKPiAtKyAgICAvKgo+IC0rICAgICAqIElmIGFkYXB0aXZlIGVjaG9zIGhhdmUgYmVlbiBl bmFibGVkLCBvbmx5IHNlbmQgdGhlIGVjaG8gcmVxdWVzdCBpZgo+IC0rICAgICAqIG5vIHRyYWZm aWMgd2FzIHJlY2VpdmVkIHNpbmNlIHRoZSBsYXN0IG9uZS4KPiAtKyAgICAgKi8KPiAtKyAgICBp ZiAobGNwX2VjaG9fYWRhcHRpdmUpIHsKPiAtKwlzdGF0aWMgdW5zaWduZWQgaW50IGxhc3RfcGt0 c19pbiA9IDA7Cj4gLSsKPiAtKwl1cGRhdGVfbGlua19zdGF0cyhmLT51bml0KTsKPiAtKwlsaW5r X3N0YXRzX3ZhbGlkID0gMDsKPiAtKwo+IC0rCWlmIChsaW5rX3N0YXRzLnBrdHNfaW4gIT0gbGFz dF9wa3RzX2luKSB7Cj4gLSsJICAgIGxhc3RfcGt0c19pbiA9IGxpbmtfc3RhdHMucGt0c19pbjsK PiAtKwkgICAgcmV0dXJuOwo+IC0rCX0KPiAtKyAgICB9Cj4gLSsKPiAtICAgICAvKgo+IC0gICAg ICAqIE1ha2UgYW5kIHNlbmQgdGhlIGVjaG8gcmVxdWVzdCBmcmFtZS4KPiAtICAgICAgKi8KPiAt ZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIvcHBwZC9wcHBkLjgKPiAtaW5kZXggNjQ2NTljZjg2 N2IyLi5lYzhiZmQ1YzA2MTcgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcHBwZC44Cj4gLSsrKyBiL3Bw cGQvcHBwZC44Cj4gLUBAIC01NTgsNiArNTU4LDExIEBAIHRvIDEpIGlmIHRoZSBcZklwcm94eWFy cFxmUiBvcHRpb24gaXMgdXNlZCwgYW5kIHdpbGwgZW5hYmxlIHRoZQo+IC0gZHluYW1pYyBJUCBh ZGRyZXNzIG9wdGlvbiAoaS5lLiBzZXQgL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2R5bmFkZHIgdG8K PiAtIDEpIGluIGRlbWFuZCBtb2RlIGlmIHRoZSBsb2NhbCBhZGRyZXNzIGNoYW5nZXMuCj4gLSAu VFAKPiAtKy5CIGxjcFwtZWNob1wtYWRhcHRpdmUKPiAtK0lmIHRoaXMgb3B0aW9uIGlzIHVzZWQg d2l0aCB0aGUgXGZJbGNwXC1lY2hvXC1mYWlsdXJlXGZSIG9wdGlvbiB0aGVuCj4gLStwcHBkIHdp bGwgc2VuZCBMQ1AgZWNob1wtcmVxdWVzdCBmcmFtZXMgb25seSBpZiBubyB0cmFmZmljIHdhcyBy ZWNlaXZlZAo+IC0rZnJvbSB0aGUgcGVlciBzaW5jZSB0aGUgbGFzdCBlY2hvXC1yZXF1ZXN0IHdh cyBzZW50Lgo+IC0rLlRQCj4gLSAuQiBsY3BcLWVjaG9cLWZhaWx1cmUgXGZJbgo+IC0gSWYgdGhp cyBvcHRpb24gaXMgZ2l2ZW4sIHBwcGQgd2lsbCBwcmVzdW1lIHRoZSBwZWVyIHRvIGJlIGRlYWQK PiAtIGlmIFxmSW5cZlIgTENQIGVjaG9cLXJlcXVlc3RzIGFyZSBzZW50IHdpdGhvdXQgcmVjZWl2 aW5nIGEgdmFsaWQgTENQCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTctTWFr ZWZpbGVzLWNsZWFudXAucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDE3LU1ha2VmaWxlcy1j bGVhbnVwLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZmY5MDk2Zjcw MzY5Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE3LU1ha2VmaWxl cy1jbGVhbnVwLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDI5NiArMCwwIEBACj4gLUZy b206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBT YXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZp bGVzIGNsZWFudXAKPiAtCj4gLUZhY3Rvci1vdXQgJENPUFRTIGFuZCAkTERPUFRTIHRvIGFsbG93 IGRpc3RyaWJ1dGlvbnMgdG8gZWFzaWx5IG92ZXJyaWRlCj4gLXRoZW0uIFByb3Blcmx5IHVzZSAk TERGTEFHUyB3aGVuIGxpbmtpbmcgYW5kICRDRkxBR1Mgd2hlbiBjb21waWxpbmcuCj4gLURvIG5v dCBzdHJpcCB0aGUgaW5zdGFsbGVkIGJpbmFyaWVzOiB0aGlzIHNob3VsZCBiZSBkb25lIGJ5IHRo ZQo+IC1wYWNrYWdpbmcgc3lzdGVtIGlmIHJlcXVpcmVkLgo+IC0KPiAtCj4gLUltcG9ydGVkIGZy b20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1p Y2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIGNoYXQv TWFrZWZpbGUubGludXggICAgICAgICAgICAgICAgICB8ICA1ICsrKy0tCj4gLSBwcHBkL01ha2Vm aWxlLmxpbnV4ICAgICAgICAgICAgICAgICAgfCAgNyArKysrLS0tCj4gLSBwcHBkL3BsdWdpbnMv TWFrZWZpbGUubGludXggICAgICAgICAgfCAgNCArKy0tCj4gLSBwcHBkL3BsdWdpbnMvcHBwb2F0 bS9NYWtlZmlsZS5saW51eCAgfCAgNCArKy0tCj4gLSBwcHBkL3BsdWdpbnMvcHBwb2wydHAvTWFr ZWZpbGUubGludXggfCAgNCArKy0tCj4gLSBwcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxp bnV4ICAgfCAxNiArKysrKysrKystLS0tLS0tCj4gLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvTWFr ZWZpbGUubGludXggfCAxMCArKysrKystLS0tCj4gLSBwcHBkdW1wL01ha2VmaWxlLmxpbnV4ICAg ICAgICAgICAgICAgfCAgOSArKysrKystLS0KPiAtIHBwcHN0YXRzL01ha2VmaWxlLmxpbnV4ICAg ICAgICAgICAgICB8ICA3ICsrKystLS0KPiAtIDkgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9u cygrKSwgMjggZGVsZXRpb25zKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvY2hhdC9NYWtlZmlsZS5s aW51eCBiL2NoYXQvTWFrZWZpbGUubGludXgKPiAtaW5kZXggMTA2NWFjNTE5NTc2Li5hNDFkNDg1 YjQxNjggMTAwNjQ0Cj4gLS0tLSBhL2NoYXQvTWFrZWZpbGUubGludXgKPiAtKysrIGIvY2hhdC9N YWtlZmlsZS5saW51eAo+IC1AQCAtMTIsMjAgKzEyLDIxIEBAIENERUZTPQkkKENERUYxKSAkKENE RUYyKSAkKENERUYzKSAkKENERUY0KQo+IC0gCj4gLSBDT1BUUz0JLU8yIC1nIC1waXBlCj4gLSBD RkxBR1M9CSQoQ09QVFMpICQoQ0RFRlMpCj4gLStMREZMQUdTPSQoTERPUFRTKQo+IC0gCj4gLSBJ TlNUQUxMPSBpbnN0YWxsCj4gLSAKPiAtIGFsbDoJY2hhdAo+IC0gCj4gLSBjaGF0OgljaGF0Lm8K PiAtLQkkKENDKSAtbyBjaGF0IGNoYXQubwo+IC0rCSQoQ0MpICQoTERGTEFHUykgLW8gY2hhdCBj aGF0Lm8KPiAtIAo+IC0gY2hhdC5vOgljaGF0LmMKPiAtIAkkKENDKSAtYyAkKENGTEFHUykgLW8g Y2hhdC5vIGNoYXQuYwo+IC0gCj4gLSBpbnN0YWxsOiBjaGF0Cj4gLSAJbWtkaXIgLXAgJChCSU5E SVIpICQoTUFORElSKQo+IC0tCSQoSU5TVEFMTCkgLXMgLWMgY2hhdCAkKEJJTkRJUikKPiAtKwkk KElOU1RBTEwpIC1jIGNoYXQgJChCSU5ESVIpCj4gLSAJJChJTlNUQUxMKSAtYyAtbSA2NDQgY2hh dC44ICQoTUFORElSKQo+IC0gCj4gLSBjbGVhbjoKPiAtZGlmZiAtLWdpdCBhL3BwcGQvTWFrZWZp bGUubGludXggYi9wcHBkL01ha2VmaWxlLmxpbnV4Cj4gLWluZGV4IGE3NGM5MTRmZDNhYy4uMTZi M2VlODc5NzkxIDEwMDY0NAo+IC0tLS0gYS9wcHBkL01ha2VmaWxlLmxpbnV4Cj4gLSsrKyBiL3Bw cGQvTWFrZWZpbGUubGludXgKPiAtQEAgLTgzLDYgKzgzLDcgQEAgSU5DTFVERV9ESVJTPSAtSS4u L2luY2x1ZGUKPiAtIENPTVBJTEVfRkxBR1M9IC1ESEFWRV9QQVRIU19IIC1ESVBYX0NIQU5HRSAt REhBVkVfTU1BUAo+IC0gCj4gLSBDRkxBR1M9ICQoQ09QVFMpICQoQ09NUElMRV9GTEFHUykgJChJ TkNMVURFX0RJUlMpICctRERFU1RESVI9IkBERVNURElSQCInCj4gLStMREZMQUdTPSQoTERPUFRT KQo+IC0gCj4gLSBpZmRlZiBDSEFQTVMKPiAtIENGTEFHUyAgICs9IC1EQ0hBUE1TPTEKPiAtQEAg LTEwMiw3ICsxMDMsNyBAQCBpZmRlZiBVU0VfU1JQCj4gLSBDRkxBR1MJKz0gLURVU0VfU1JQIC1E T1BFTlNTTCAtSS91c3IvbG9jYWwvc3NsL2luY2x1ZGUKPiAtIExJQlMJKz0gLWxzcnAgLUwvdXNy L2xvY2FsL3NzbC9saWIgLWxjcnlwdG8KPiAtIFRBUkdFVFMJKz0gc3JwLWVudHJ5Cj4gLS1FWFRS QUlOU1RBTEwgPSAkKElOU1RBTEwpIC1zIC1jIC1tIDU1NSBzcnAtZW50cnkgJChCSU5ESVIpL3Ny cC1lbnRyeQo+IC0rRVhUUkFJTlNUQUxMID0gJChJTlNUQUxMKSAtYyAtbSA1NTUgc3JwLWVudHJ5 ICQoQklORElSKS9zcnAtZW50cnkKPiAtIE1BTlBBR0VTICs9IHNycC1lbnRyeS44Cj4gLSBFWFRS QUNMRUFOICs9IHNycC1lbnRyeS5vCj4gLSBORUVEREVTPXkKPiAtQEAgLTIwOCwxMyArMjA5LDEz IEBAIGFsbDogJChUQVJHRVRTKQo+IC0gaW5zdGFsbDogcHBwZAo+IC0gCW1rZGlyIC1wICQoQklO RElSKSAkKE1BTkRJUikKPiAtIAkkKEVYVFJBSU5TVEFMTCkKPiAtLQkkKElOU1RBTEwpIC1zIC1j IC1tIDU1NSBwcHBkICQoQklORElSKS9wcHBkCj4gLSsJJChJTlNUQUxMKSAtYyAtbSA1NTUgcHBw ZCAkKEJJTkRJUikvcHBwZAo+IC0gCWlmIGNoZ3JwIHBwcHVzZXJzICQoQklORElSKS9wcHBkIDI+ L2Rldi9udWxsOyB0aGVuIFwKPiAtIAkgIGNobW9kIG8tcngsdStzICQoQklORElSKS9wcHBkOyBm aQo+IC0gCSQoSU5TVEFMTCkgLWMgLW0gNDQ0IHBwcGQuOCAkKE1BTkRJUikKPiAtIAo+IC0gcHBw ZDogJChQUFBET0JKUykKPiAtLQkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyBwcHBkICQo UFBQRE9CSlMpICQoTElCUykKPiAtKwkkKENDKSAkKExERkxBR1MpIC1vIHBwcGQgJChQUFBET0JK UykgJChMSUJTKQo+IC0gCj4gLSBzcnAtZW50cnk6CXNycC1lbnRyeS5jCj4gLSAJJChDQykgJChD RkxBR1MpICQoTERGTEFHUykgLW8gJEAgc3JwLWVudHJ5LmMgJChMSUJTKQo+IC1kaWZmIC0tZ2l0 IGEvcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9wbHVnaW5zL01ha2VmaWxlLmxp bnV4Cj4gLWluZGV4IDhhOTBlMzkzYTA1Ny4uMGY5ZDM3ZDI5NTNiIDEwMDY0NAo+IC0tLS0gYS9w cHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKPiAtKysrIGIvcHBwZC9wbHVnaW5zL01ha2VmaWxl LmxpbnV4Cj4gLUBAIC0xLDcgKzEsNyBAQAo+IC0gI0NDCT0gZ2NjCj4gLSBDT1BUUwk9IC1PMiAt Zwo+IC0gQ0ZMQUdTCT0gJChDT1BUUykgLUkuLiAtSS4uLy4uL2luY2x1ZGUgLWZQSUMKPiAtLUxE RkxBR1MJPSAtc2hhcmVkCj4gLStMREZMQUdTCT0gJChMRE9QVFMpCj4gLSBJTlNUQUxMCT0gaW5z dGFsbAo+IC0gCj4gLSBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKPiAtQEAgLTMwLDcg KzMwLDcgQEAgYWxsOgkkKFBMVUdJTlMpCj4gLSAJZm9yIGQgaW4gJChTVUJESVJTKTsgZG8gJChN QUtFKSAkKE1GTEFHUykgLUMgJCRkIGFsbCB8fCBleGl0ICQkPzsgZG9uZQo+IC0gCj4gLSAlLnNv OiAlLmMKPiAtLQkkKENDKSAtbyAkQCAkKExERkxBR1MpICQoQ0ZMQUdTKSAkXgo+IC0rCSQoQ0Mp IC1vICRAICQoTERGTEFHUykgLXNoYXJlZCAkKENGTEFHUykgJF4KPiAtIAo+IC0gVkVSU0lPTiA9 ICQoc2hlbGwgYXdrIC1GICciJyAnL1ZFUlNJT04vIHsgcHJpbnQgJCQyOyB9JyAuLi9wYXRjaGxl dmVsLmgpCj4gLSAKPiAtZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9wcHBvYXRtL01ha2VmaWxl LmxpbnV4IGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGludXgKPiAtaW5kZXggMjBm NjJlNjMxZDIzLi4wMDI2MDNjNmNiZWYgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcGx1Z2lucy9wcHBv YXRtL01ha2VmaWxlLmxpbnV4Cj4gLSsrKyBiL3BwcGQvcGx1Z2lucy9wcHBvYXRtL01ha2VmaWxl LmxpbnV4Cj4gLUBAIC0xLDcgKzEsNyBAQAo+IC0gI0NDCT0gZ2NjCj4gLSBDT1BUUwk9IC1PMiAt Zwo+IC0gQ0ZMQUdTCT0gJChDT1BUUykgLUkuLi8uLiAtSS4uLy4uLy4uL2luY2x1ZGUgLWZQSUMK PiAtLUxERkxBR1MJPSAtc2hhcmVkCj4gLStMREZMQUdTCT0gJChMRE9QVFMpCj4gLSBJTlNUQUxM CT0gaW5zdGFsbAo+IC0gCj4gLSAjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiAtQEAgLTMzLDcgKzMzLDcgQEAg ZW5kaWYKPiAtIGFsbDogJChQTFVHSU4pCj4gLSAKPiAtICQoUExVR0lOKTogJChQTFVHSU5fT0JK UykKPiAtLQkkKENDKSAkKENGTEFHUykgLW8gJEAgLXNoYXJlZCAkXiAkKExJQlMpCj4gLSsJJChD QykgJChMREZMQUdTKSAtbyAkQCAtc2hhcmVkICReICQoTElCUykKPiAtIAo+IC0gaW5zdGFsbDog YWxsCj4gLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChMSUJESVIpCj4gLWRpZmYgLS1naXQgYS9w cHBkL3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvcHBwb2wy dHAvTWFrZWZpbGUubGludXgKPiAtaW5kZXggZWEzNTM4ZTIyZDU2Li5kZTVjYzEyZTc5YzMgMTAw NjQ0Cj4gLS0tLSBhL3BwcGQvcGx1Z2lucy9wcHBvbDJ0cC9NYWtlZmlsZS5saW51eAo+IC0rKysg Yi9wcHBkL3BsdWdpbnMvcHBwb2wydHAvTWFrZWZpbGUubGludXgKPiAtQEAgLTEsNyArMSw3IEBA Cj4gLSAjQ0MJPSBnY2MKPiAtIENPUFRTCT0gLU8yIC1nCj4gLSBDRkxBR1MJPSAkKENPUFRTKSAt SS4gLUkuLi8uLiAtSS4uLy4uLy4uL2luY2x1ZGUgLWZQSUMKPiAtLUxERkxBR1MJPSAtc2hhcmVk Cj4gLStMREZMQUdTCT0gJChMRE9QVFMpCj4gLSBJTlNUQUxMCT0gaW5zdGFsbAo+IC0gCj4gLSAj KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiAtQEAgLTE2LDcgKzE2LDcgQEAgUExVR0lOUyA6PSBwcHBvbDJ0cC5z byBvcGVubDJ0cC5zbwo+IC0gYWxsOiAkKFBMVUdJTlMpCj4gLSAKPiAtICUuc286ICUubwo+IC0t CSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAtc2hhcmVkICReICQoTElCUykKPiAtKwkkKENDKSAkKExE RkxBR1MpIC1vICRAIC1zaGFyZWQgJF4gJChMSUJTKQo+IC0gCj4gLSBpbnN0YWxsOiBhbGwKPiAt IAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKExJQkRJUikKPiAtZGlmZiAtLWdpdCBhL3BwcGQvcGx1 Z2lucy9yYWRpdXMvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxl LmxpbnV4Cj4gLWluZGV4IDI0ZWQzZTU4MGM0ZC4uNDM2ZmYyZmQwYzIzIDEwMDY0NAo+IC0tLS0g YS9wcHBkL3BsdWdpbnMvcmFkaXVzL01ha2VmaWxlLmxpbnV4Cj4gLSsrKyBiL3BwcGQvcGx1Z2lu cy9yYWRpdXMvTWFrZWZpbGUubGludXgKPiAtQEAgLTEyLDcgKzEyLDkgQEAgVkVSU0lPTiA9ICQo c2hlbGwgYXdrIC1GICciJyAnL1ZFUlNJT04vIHsgcHJpbnQgJCQyOyB9JyAuLi8uLi9wYXRjaGxl dmVsLmgpCj4gLSBJTlNUQUxMCT0gaW5zdGFsbAo+IC0gCj4gLSBQTFVHSU49cmFkaXVzLnNvIHJh ZGF0dHIuc28gcmFkcmVhbG1zLnNvCj4gLS1DRkxBR1M9LUkuIC1JLi4vLi4gLUkuLi8uLi8uLi9p bmNsdWRlIC1PMiAtZlBJQyAtRFJDX0xPR19GQUNJTElUWT1MT0dfREFFTU9OCj4gLStDT1BUUz0t ZyAtTzIKPiAtK0NGTEFHUyA9ICQoQ09QVFMpIC1JLiAtSS4uLy4uIC1JLi4vLi4vLi4vaW5jbHVk ZSAtZlBJQyAtRFJDX0xPR19GQUNJTElUWT1MT0dfREFFTU9OCj4gLStMREZMQUdTPSAkKExET1BU UykKPiAtIAo+IC0gIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byBpbmNsdWRlIHN1cHBvcnQg Zm9yIE1pY3Jvc29mdCdzCj4gLSAjIE1TLUNIQVAgYXV0aGVudGljYXRpb24gcHJvdG9jb2wuCj4g LUBAIC0zNiwyMCArMzgsMjAgQEAgYWxsOiAkKFBMVUdJTikKPiAtIAo+IC0gaW5zdGFsbDogYWxs Cj4gLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChMSUJESVIpCj4gLS0JJChJTlNUQUxMKSAtcyAt YyAtbSA3NTUgcmFkaXVzLnNvICQoTElCRElSKQo+IC0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNzU1 IHJhZGF0dHIuc28gJChMSUJESVIpCj4gLS0JJChJTlNUQUxMKSAtcyAtYyAtbSA3NTUgcmFkcmVh bG1zLnNvICQoTElCRElSKQo+IC0rCSQoSU5TVEFMTCkgLWMgLW0gNzU1IHJhZGl1cy5zbyAkKExJ QkRJUikKPiAtKwkkKElOU1RBTEwpIC1jIC1tIDc1NSByYWRhdHRyLnNvICQoTElCRElSKQo+IC0r CSQoSU5TVEFMTCkgLWMgLW0gNzU1IHJhZHJlYWxtcy5zbyAkKExJQkRJUikKPiAtIAkkKElOU1RB TEwpIC1jIC1tIDQ0NCBwcHBkLXJhZGl1cy44ICQoTUFORElSKQo+IC0gCSQoSU5TVEFMTCkgLWMg LW0gNDQ0IHBwcGQtcmFkYXR0ci44ICQoTUFORElSKQo+IC0gCj4gLSByYWRpdXMuc286IHJhZGl1 cy5vIGxpYnJhZGl1c2NsaWVudC5hCj4gLS0JJChDQykgLW8gcmFkaXVzLnNvIC1zaGFyZWQgcmFk aXVzLm8gbGlicmFkaXVzY2xpZW50LmEKPiAtKwkkKENDKSAkKExERkxBR1MpIC1vIHJhZGl1cy5z byAtc2hhcmVkIHJhZGl1cy5vIGxpYnJhZGl1c2NsaWVudC5hCj4gLSAKPiAtIHJhZGF0dHIuc286 IHJhZGF0dHIubwo+IC0tCSQoQ0MpIC1vIHJhZGF0dHIuc28gLXNoYXJlZCByYWRhdHRyLm8KPiAt KwkkKENDKSAkKExERkxBR1MpIC1vIHJhZGF0dHIuc28gLXNoYXJlZCByYWRhdHRyLm8KPiAtIAo+ IC0gcmFkcmVhbG1zLnNvOiByYWRyZWFsbXMubwo+IC0tCSQoQ0MpIC1vIHJhZHJlYWxtcy5zbyAt c2hhcmVkIHJhZHJlYWxtcy5vCj4gLSsJJChDQykgJChMREZMQUdTKSAtbyByYWRyZWFsbXMuc28g LXNoYXJlZCByYWRyZWFsbXMubwo+IC0gCj4gLSBDTElFTlRPQkpTID0gYXZwYWlyLm8gYnVpbGRy ZXEubyBjb25maWcubyBkaWN0Lm8gaXBfdXRpbC5vIFwKPiAtIAljbGllbnRpZC5vIHNlbmRzZXJ2 ZXIubyBsb2NrLm8gdXRpbC5vIG1kNS5vCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAt cHBwb2UvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvTWFrZWZpbGUubGlu dXgKPiAtaW5kZXggNWQ3YTI3MTk1NDVkLi4wMGUwYWY2ZGEyMGMgMTAwNjQ0Cj4gLS0tLSBhL3Bw cGQvcGx1Z2lucy9ycC1wcHBvZS9NYWtlZmlsZS5saW51eAo+IC0rKysgYi9wcHBkL3BsdWdpbnMv cnAtcHBwb2UvTWFrZWZpbGUubGludXgKPiAtQEAgLTI3LDEwICsyNywxMiBAQCBSUF9WRVJTSU9O PTMuOHAKPiAtIAo+IC0gQ09QVFM9LU8yIC1nCj4gLSBDRkxBR1M9JChDT1BUUykgLUkuLi8uLi8u Li9pbmNsdWRlICctRFJQX1ZFUlNJT049IiQoUlBfVkVSU0lPTikiJwo+IC0rTERGTEFHUz0kKExE T1BUUykKPiAtKwo+IC0gYWxsOiBycC1wcHBvZS5zbyBwcHBvZS1kaXNjb3ZlcnkKPiAtIAo+IC0g cHBwb2UtZGlzY292ZXJ5OiBwcHBvZS1kaXNjb3ZlcnkubyBkZWJ1Zy5vCj4gLS0JJChDQykgLW8g cHBwb2UtZGlzY292ZXJ5IHBwcG9lLWRpc2NvdmVyeS5vIGRlYnVnLm8KPiAtKwkkKENDKSAkKExE RkxBR1MpIC1vIHBwcG9lLWRpc2NvdmVyeSBwcHBvZS1kaXNjb3ZlcnkubyBkZWJ1Zy5vCj4gLSAK PiAtIHBwcG9lLWRpc2NvdmVyeS5vOiBwcHBvZS1kaXNjb3ZlcnkuYwo+IC0gCSQoQ0MpICQoQ0ZM QUdTKSAtYyAtbyBwcHBvZS1kaXNjb3ZlcnkubyBwcHBvZS1kaXNjb3ZlcnkuYwo+IC1AQCAtMzks MTMgKzQxLDEzIEBAIGRlYnVnLm86IGRlYnVnLmMKPiAtIAkkKENDKSAkKENGTEFHUykgLWMgLW8g ZGVidWcubyBkZWJ1Zy5jCj4gLSAKPiAtIHJwLXBwcG9lLnNvOiBwbHVnaW4ubyBkaXNjb3Zlcnku byBpZi5vIGNvbW1vbi5vCj4gLS0JJChDQykgLW8gcnAtcHBwb2Uuc28gLXNoYXJlZCBwbHVnaW4u byBkaXNjb3ZlcnkubyBpZi5vIGNvbW1vbi5vCj4gLSsJJChDQykgJChMREZMQUdTKSAtbyBycC1w cHBvZS5zbyAtc2hhcmVkICReCj4gLSAKPiAtIGluc3RhbGw6IGFsbAo+IC0gCSQoSU5TVEFMTCkg LWQgLW0gNzU1ICQoTElCRElSKQo+IC0tCSQoSU5TVEFMTCkgLXMgLWMgLW0gNDU1MCBycC1wcHBv ZS5zbyAkKExJQkRJUikKPiAtKwkkKElOU1RBTEwpIC1jIC1tIDQ1NTAgcnAtcHBwb2Uuc28gJChM SUJESVIpCj4gLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChCSU5ESVIpCj4gLS0JJChJTlNUQUxM KSAtcyAtYyAtbSA1NTUgcHBwb2UtZGlzY292ZXJ5ICQoQklORElSKQo+IC0rCSQoSU5TVEFMTCkg LWMgLW0gNTU1IHBwcG9lLWRpc2NvdmVyeSAkKEJJTkRJUikKPiAtIAo+IC0gY2xlYW46Cj4gLSAJ cm0gLWYgKi5vICouc28gcHBwb2UtZGlzY292ZXJ5Cj4gLWRpZmYgLS1naXQgYS9wcHBkdW1wL01h a2VmaWxlLmxpbnV4IGIvcHBwZHVtcC9NYWtlZmlsZS5saW51eAo+IC1pbmRleCBhYzAyOGY2YmY0 ZjAuLjY1ZTVjMTQ5MTRmYiAxMDA2NDQKPiAtLS0tIGEvcHBwZHVtcC9NYWtlZmlsZS5saW51eAo+ IC0rKysgYi9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Cj4gLUBAIC0yLDcgKzIsMTAgQEAgREVTVERJ UiA9ICQoSU5TVFJPT1QpQERFU1RESVJACj4gLSBCSU5ESVIgPSAkKERFU1RESVIpL3NiaW4KPiAt IE1BTkRJUiA9ICQoREVTVERJUikvc2hhcmUvbWFuL21hbjgKPiAtIAo+IC0tQ0ZMQUdTPSAtTyAt SS4uL2luY2x1ZGUvbmV0Cj4gLStDT1BUUz0tTzIgLWcKPiAtK0NGTEFHUz0gJChDT1BUUykgLUku Li9pbmNsdWRlL25ldAo+IC0rTERGTEFHUz0kKExET1BUUykKPiAtKwo+IC0gT0JKUyA9IHBwcGR1 bXAubyBic2QtY29tcC5vIGRlZmxhdGUubyB6bGliLm8KPiAtIAo+IC0gSU5TVEFMTD0gaW5zdGFs bAo+IC1AQCAtMTAsMTIgKzEzLDEyIEBAIElOU1RBTEw9IGluc3RhbGwKPiAtIGFsbDoJcHBwZHVt cAo+IC0gCj4gLSBwcHBkdW1wOiAkKE9CSlMpCj4gLS0JJChDQykgLW8gcHBwZHVtcCAkKE9CSlMp Cj4gLSsJJChDQykgJChMREZMQUdTKSAtbyBwcHBkdW1wICQoT0JKUykKPiAtIAo+IC0gY2xlYW46 Cj4gLSAJcm0gLWYgcHBwZHVtcCAkKE9CSlMpICp+Cj4gLSAKPiAtIGluc3RhbGw6Cj4gLSAJbWtk aXIgLXAgJChCSU5ESVIpICQoTUFORElSKQo+IC0tCSQoSU5TVEFMTCkgLXMgLWMgcHBwZHVtcCAk KEJJTkRJUikKPiAtKwkkKElOU1RBTEwpIC1jIHBwcGR1bXAgJChCSU5ESVIpCj4gLSAJJChJTlNU QUxMKSAtYyAtbSA0NDQgcHBwZHVtcC44ICQoTUFORElSKQo+IC1kaWZmIC0tZ2l0IGEvcHBwc3Rh dHMvTWFrZWZpbGUubGludXggYi9wcHBzdGF0cy9NYWtlZmlsZS5saW51eAo+IC1pbmRleCBjY2E2 ZjBmNjFkODcuLjllYzhlODAzNjY1YSAxMDA2NDQKPiAtLS0tIGEvcHBwc3RhdHMvTWFrZWZpbGUu bGludXgKPiAtKysrIGIvcHBwc3RhdHMvTWFrZWZpbGUubGludXgKPiAtQEAgLTEwLDIzICsxMCwy NCBAQCBQUFBTVEFUU1JDUyA9IHBwcHN0YXRzLmMKPiAtIFBQUFNUQVRPQkpTID0gcHBwc3RhdHMu bwo+IC0gCj4gLSAjQ0MgPSBnY2MKPiAtLUNPUFRTID0gLU8KPiAtK0NPUFRTID0gLU8yIC1nCj4g LSBDT01QSUxFX0ZMQUdTID0gLUkuLi9pbmNsdWRlCj4gLSBMSUJTID0KPiAtIAo+IC0gSU5TVEFM TD0gaW5zdGFsbAo+IC0gCj4gLSBDRkxBR1MgPSAkKENPUFRTKSAkKENPTVBJTEVfRkxBR1MpCj4g LStMREZMQUdTPSAkKExET1BUUykKPiAtIAo+IC0gYWxsOiBwcHBzdGF0cwo+IC0gCj4gLSBpbnN0 YWxsOiBwcHBzdGF0cwo+IC0gCS1ta2RpciAtcCAkKE1BTkRJUikKPiAtLQkkKElOU1RBTEwpIC1z IC1jIHBwcHN0YXRzICQoQklORElSKQo+IC0rCSQoSU5TVEFMTCkgLWMgcHBwc3RhdHMgJChCSU5E SVIpCj4gLSAJJChJTlNUQUxMKSAtYyAtbSA0NDQgcHBwc3RhdHMuOCAkKE1BTkRJUikKPiAtIAo+ IC0gcHBwc3RhdHM6ICQoUFBQU1RBVFNSQ1MpCj4gLS0JJChDQykgJChDRkxBR1MpIC1vIHBwcHN0 YXRzIHBwcHN0YXRzLmMgJChMSUJTKQo+IC0rCSQoQ0MpICQoTERGTEFHUykgJChDRkxBR1MpIC1v IHBwcHN0YXRzIHBwcHN0YXRzLmMgJChMSUJTKQo+IC0gCj4gLSBjbGVhbjoKPiAtIAlybSAtZiBw cHBzdGF0cyAqfiAjKiBjb3JlCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTgt QnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90LXByb3Blcmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRj aCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMTgtQnVnLTMwNjI2MS1wcHBkLWRvZXMtbm90LXByb3Bl cmx5LWNsb3NlLWRldi1wcHAtb24tcC5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDQxNjY5ZDEyYTQzZi4uMDAwMDAwMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40 LjcvMDAxOC1CdWctMzA2MjYxLXBwcGQtZG9lcy1ub3QtcHJvcGVybHktY2xvc2UtZGV2LXBwcC1v bi1wLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDQ0ICswLDAgQEAKPiAtRnJvbTogU2lt b24gUGV0ZXIgPGRuLnRscEBnbXgubmV0Pgo+IC1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjEx OjQ5ICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gQnVnIzMwNjI2MTogcHBwZCBkb2VzIG5vdCBw cm9wZXJseSBjbG9zZSAvZGV2L3BwcCBvbiBwZXJzaXN0Cj4gLQo+IC1XaGVuIHVzaW5nIHRoZSBr ZXJuZWwgUFBQb0UgZHJpdmVyLCBwcHBkIG5ldmVyCj4gLWNsb3NlcyAvZGV2L3BwcCB3aGVuIHRo ZSBsaW5rIGhhcyBjb21lIGRvd24uCj4gLQo+IC1JdCBvcGVucyBzdXBlcmZsdW91cyBmZHMgdG8g dGhlIGRldmljZSBlYWNoIHRpbWUgaXQgcmUtb3BlbnMgdGhlCj4gLWNvbm5lY3Rpb24sIHdpdGgg dGhlIHVuY2xvc2VkIG9uZXMgZmFsc2VseSByZXBvcnRlZCBhbHdheXMgcmVhZHkgZm9yCj4gLWRh dGEgYnkgc2VsZWN0KCkuCj4gLQo+IC1UaGlzIG1ha2VzIHBwcGQgZWF0IHVwIDEwMCUgQ1BVIHRp bWUgYWZ0ZXIgdGhlIGZpcnN0IHBlcnNpc3QgYmVjYXVzZSBvZgo+IC10aGUgYWx3YXlzIGluc3Rh bnRseSByZXR1cm5pbmcgc2VsZWN0KCkgb24gdGhlIHVuY2xvc2VkIGZkcy4KPiAtCj4gLVRoZSBw cm9ibGVtIGFsc28gb2NjdXJzIHdpdGggdGhlIHVwc3RyZWFtIHZlcnNpb24sIGJ1dCBkb2VzIG5v dCBvY2N1cgo+IC13aGVuIGEgcHR5L3R0eSBkZXZpY2UgaXMgdXNlZCBmb3IgdGhlIHBwcCBjb25u ZWN0aW9uLgo+IC0KPiAtCj4gLQo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBwcHBkL3N5cy1saW51eC5jIHwgNyArKysrKysr Cj4gLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCj4gLQo+IC1kaWZmIC0tZ2l0IGEv cHBwZC9zeXMtbGludXguYyBiL3BwcGQvc3lzLWxpbnV4LmMKPiAtaW5kZXggOWIyZjI5MzAyNGFj Li42ZDI5ZGM4ZTg1OTQgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvc3lzLWxpbnV4LmMKPiAtKysrIGIv cHBwZC9zeXMtbGludXguYwo+IC1AQCAtNDU4LDYgKzQ1OCwxMyBAQCBpbnQgZ2VuZXJpY19lc3Rh Ymxpc2hfcHBwIChpbnQgZmQpCj4gLSAgICAgaWYgKG5ld19zdHlsZV9kcml2ZXIpIHsKPiAtIAlp bnQgZmxhZ3M7Cj4gLSAKPiAtKyAgICAgICAgLyogaWYgYSBwcHBfZmQgaXMgYWxyZWFkeSBvcGVu LCBjbG9zZSBpdCBmaXJzdCAqLwo+IC0rICAgICAgICBpZihwcHBfZmQgPiAwKSB7Cj4gLSsgICAg ICAgICAgY2xvc2UocHBwX2ZkKTsKPiAtKyAgICAgICAgICByZW1vdmVfZmQocHBwX2ZkKTsKPiAt KyAgICAgICAgICBwcHBfZmQgPSAtMTsKPiAtKyAgICAgICAgfQo+IC0rCj4gLSAJLyogT3BlbiBh biBpbnN0YW5jZSBvZiAvZGV2L3BwcCBhbmQgY29ubmVjdCB0aGUgY2hhbm5lbCB0byBpdCAqLwo+ IC0gCWlmIChpb2N0bChmZCwgUFBQSU9DR0NIQU4sICZjaGluZGV4KSA9PSAtMSkgewo+IC0gCSAg ICBlcnJvcigiQ291bGRuJ3QgZ2V0IGNoYW5uZWwgbnVtYmVyOiAlbSIpOwo+IGRpZmYgLS1naXQg YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDE5LUJ1Zy0yODQzODItcHBwLWxpbmtwaWRmaWxlLWlzLW5v dC1jcmVhdGVkLXVwb24tZGV0YWMucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDE5LUJ1Zy0y ODQzODItcHBwLWxpbmtwaWRmaWxlLWlzLW5vdC1jcmVhdGVkLXVwb24tZGV0YWMucGF0Y2gKPiBk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBmNzg1Yzc1ZDg3YmIuLjAwMDAwMDAwMDAw MAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMTktQnVnLTI4NDM4Mi1wcHAtbGlua3BpZGZp bGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAt MSw0OCArMCwwIEBACj4gLUZyb206ICJoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXUiIDxoZXJi ZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+Cj4gLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6 NDkgKzAyMDAKPiAtU3ViamVjdDogW1BBVENIXSBCdWcjMjg0MzgyOiBwcHA6IGxpbmtwaWRmaWxl IGlzIG5vdCBjcmVhdGVkIHVwb24gZGV0YWNobWVudAo+IC0KPiAtUGFja2FnZTogcHBwCj4gLVZl cnNpb246IDIuNC4yKzIwMDQwNDI4LTIKPiAtU2V2ZXJpdHk6IHdpc2hsaXN0Cj4gLQo+IC1XaGVu IHBwcGQgZGV0YWNoZXMgZnJvbSB0aGUgcGFyZW50IG5vcm1hbGx5LCB0aGF0IGlzLCB3aXRob3V0 IG5vZGV0YWNoCj4gLW9yIHVwZGV0YWNoIHNldCwgdGhlIGxpbmtwaWRmaWxlIGlzIG5vdCBjcmVh dGVkIGV2ZW4gd2hlbiBsaW5rbmFtZSBpcwo+IC1zZXQuCj4gLQo+IC1UaGlzIGlzIGJlY2F1c2Ug dGhlIGNyZWF0ZV9saW5rcGlkZmlsZSBjYWxsIGluIGRldGFjaCgpIGlzIG9ubHkgbWFkZQo+IC1p ZiB0aGUgbGlua3BpZGZpbGUgaXMgZmlsbGVkIGluLiAgSG93ZXZlciwgbGlua3BpZGZpbGUgaXMg bmV2ZXIgZmlsbGVkCj4gLWluIHVudGlsIGNyZWF0ZV9saW5rcGlkZmlsZSBoYXMgYmVlbiBjYWxs ZWQuCj4gLQo+IC1JTUhPIHRoZSBjYWxsIHNob3VsZCBiZSBtYWRlIHVuY29uZHRpb25hbGx5IGlu IGRldGFjaCgpIHNpbmNlCj4gLWNyZWF0ZV9saW5rcGlkZmlsZSBkb2VzIGl0cyBvd24gY2hlY2sg b24gbGlua25hbWUgYW55d2F5Lgo+IC0KPiAtUGxlYXNlIG5vdGUgdGhhdCB0aGUgdmVyc2lvbiBv ZiBwcHBkIGluIHdvb2R5IGFsd2F5cyB3cm90ZSB0aGUKPiAtbGlua3BpZGZpbGUgYWZ0ZXIgZGV0 YWNoaW5nLiAgSXQgZGlkIHNvIGluIG1haW4oKSBob3dldmVyLiAgVGhhdAo+IC1jYWxsIGhhcyBu b3cgYmVlbiByZW1vdmVkIHdoaWNoIGlzIHdoeSBJJ20gc2VlaW5nIHRoaXMgcHJvYmxlbS4KPiAt Cj4gLVsuLi5dCj4gLQo+IC0tLQo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEu ZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9s YnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9tYWluLmMgfCAzICstLQo+IC0g MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQo+IC0KPiAtZGlm ZiAtLWdpdCBhL3BwcGQvbWFpbi5jIGIvcHBwZC9tYWluLmMKPiAtaW5kZXggNzZiNjdkMjQ4NWI3 Li44ZTMxMzY1ZjBjNTggMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvbWFpbi5jCj4gLSsrKyBiL3BwcGQv bWFpbi5jCj4gLUBAIC03NjUsOCArNzY1LDcgQEAgZGV0YWNoKCkKPiAtIAkvKiB1cGRhdGUgcGlk IGZpbGVzIGlmIHRoZXkgaGF2ZSBiZWVuIHdyaXR0ZW4gYWxyZWFkeSAqLwo+IC0gCWlmIChwaWRm aWxlbmFtZVswXSkKPiAtIAkgICAgY3JlYXRlX3BpZGZpbGUocGlkKTsKPiAtLQlpZiAobGlua3Bp ZGZpbGVbMF0pCj4gLS0JICAgIGNyZWF0ZV9saW5rcGlkZmlsZShwaWQpOwo+IC0rCWNyZWF0ZV9s aW5rcGlkZmlsZShwaWQpOwo+IC0gCWV4aXQoMCk7CQkvKiBwYXJlbnQgZGllcyAqLwo+IC0gICAg IH0KPiAtICAgICBzZXRzaWQoKTsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAy Mi1jb3NtZXRpYy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaCBiL3BhdGNoZXMv cHBwLTIuNC43LzAwMjItY29zbWV0aWMtY2xlYW51cC1vZi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0 Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBlZTIyYzc0YjY0MDUuLjAwMDAw MDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjItY29zbWV0aWMtY2xlYW51cC1v Zi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsOTAgKzAs MCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4K PiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFU Q0hdIGNvc21ldGljIGNsZWFudXAgb2YgdGhlIHBwcG9hdG0gcGx1Z2luCj4gLQo+IC1SZW1vdmVk IHNvbWUgZGVidWdnaW5nIG1lc3NhZ2VzIGFuZCBnZW5lcmFsbHkgY2xlYW5lZCB1cCB0aGUgc291 cmNlLgo+IC0KPiAtCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIu eHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1 dHJvbml4LmRlPgo+IC0tLS0KPiAtIHBwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYyB8IDIz ICsrKysrKysrKysrKystLS0tLS0tLS0tCj4gLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9u cygrKSwgMTAgZGVsZXRpb25zKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3Bw cG9hdG0vcHBwb2F0bS5jIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5jCj4gLWluZGV4 IGE3NTYwZTlmYjBjNi4uOTBkMGM5YTg1ZDlmIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BsdWdpbnMv cHBwb2F0bS9wcHBvYXRtLmMKPiAtKysrIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5j Cj4gLUBAIC03MCwxOCArNzAsMjAgQEAgc3RhdGljIGludCBzZXRkZXZuYW1lX3BwcG9hdG0oY29u c3QgY2hhciAqY3AsIGNvbnN0IGNoYXIgKiphcmd2LCBpbnQgZG9pdCkKPiAtIHsKPiAtIAlzdHJ1 Y3Qgc29ja2FkZHJfYXRtcHZjIGFkZHI7Cj4gLSAJZXh0ZXJuIHN0cnVjdCBzdGF0IGRldnN0YXQ7 Cj4gLSsKPiAtIAlpZiAoZGV2aWNlX2dvdF9zZXQpCj4gLSAJCXJldHVybiAwOwo+IC0tCS8vaW5m bygiUFBQb0FUTSBzZXRkZXZuYW1lX3BwcG9hdG06ICclcyciLCBjcCk7Cj4gLSsKPiAtIAltZW1z ZXQoJmFkZHIsIDAsIHNpemVvZiBhZGRyKTsKPiAtIAlpZiAodGV4dDJhdG0oY3AsIChzdHJ1Y3Qg c29ja2FkZHIgKikgJmFkZHIsIHNpemVvZihhZGRyKSwKPiAtLQkgICAgVDJBX1BWQyB8IFQyQV9O QU1FKSA8IDApIHsKPiAtLSAgICAgICAgICAgICAgIGlmKGRvaXQpCj4gLS0gICAgICAgICAgICAg ICAgICAgaW5mbygiYXRtIGRvZXMgbm90IHJlY29nbml6ZTogJXMiLCBjcCk7Cj4gLSsJICAgIFQy QV9QVkMgfCBUMkFfTkFNRSB8IFQyQV9XSUxEQ0FSRCkgPCAwKSB7Cj4gLSsJCWlmIChkb2l0KQo+ IC0rCQkJaW5mbygiY2Fubm90IHBhcnNlIHRoZSBBVE0gYWRkcmVzczogJXMiLCBjcCk7Cj4gLSAJ CXJldHVybiAwOwo+IC0tICAgICAgICAgICB9Cj4gLS0JaWYgKCFkb2l0KSByZXR1cm4gMTsKPiAt LQkvL2lmICghZGV2X3NldF9vaygpKSByZXR1cm4gLTE7Cj4gLSsJfQo+IC0rCWlmICghZG9pdCkK PiAtKwkJcmV0dXJuIDE7Cj4gLSsKPiAtIAltZW1jcHkoJnB2Y2FkZHIsICZhZGRyLCBzaXplb2Yg cHZjYWRkcik7Cj4gLSAJc3RybGNweShkZXZuYW0sIGNwLCBzaXplb2YgZGV2bmFtKTsKPiAtIAlk ZXZzdGF0LnN0X21vZGUgPSBTX0lGU09DSzsKPiAtQEAgLTkzLDcgKzk1LDYgQEAgc3RhdGljIGlu dCBzZXRkZXZuYW1lX3BwcG9hdG0oY29uc3QgY2hhciAqY3AsIGNvbnN0IGNoYXIgKiphcmd2LCBp bnQgZG9pdCkKPiAtIAkJbGNwX2FsbG93b3B0aW9uc1swXS5uZWdfYXN5bmNtYXAgPSAwOwo+IC0g CQlsY3Bfd2FudG9wdGlvbnNbMF0ubmVnX3Bjb21wcmVzc2lvbiA9IDA7Cj4gLSAJfQo+IC0tCWlu Zm8oIlBQUG9BVE0gc2V0ZGV2bmFtZV9wcHBvYXRtIC0gU1VDQ0VTUzolcyIsIGNwKTsKPiAtIAlk ZXZpY2VfZ290X3NldCA9IDE7Cj4gLSAJcmV0dXJuIDE7Cj4gLSB9Cj4gLUBAIC0xMDgsNiArMTA5 LDcgQEAgc3RhdGljIHZvaWQgbm9fZGV2aWNlX2dpdmVuX3BwcG9hdG0odm9pZCkKPiAtIHN0YXRp YyB2b2lkIHNldF9saW5lX2Rpc2NpcGxpbmVfcHBwb2F0bShpbnQgZmQpCj4gLSB7Cj4gLSAJc3Ry dWN0IGF0bV9iYWNrZW5kX3BwcCBiZTsKPiAtKwo+IC0gCWJlLmJhY2tlbmRfbnVtID0gQVRNX0JB Q0tFTkRfUFBQOwo+IC0gCWlmICghbGxjX2VuY2FwcykKPiAtIAkJYmUuZW5jYXBzID0gUFBQT0FU TV9FTkNBUFNfVkM7Cj4gLUBAIC0xMTUsNiArMTE3LDcgQEAgc3RhdGljIHZvaWQgc2V0X2xpbmVf ZGlzY2lwbGluZV9wcHBvYXRtKGludCBmZCkKPiAtIAkJYmUuZW5jYXBzID0gUFBQT0FUTV9FTkNB UFNfTExDOwo+IC0gCWVsc2UKPiAtIAkJYmUuZW5jYXBzID0gUFBQT0FUTV9FTkNBUFNfQVVUT0RF VEVDVDsKPiAtKwo+IC0gCWlmIChpb2N0bChmZCwgQVRNX1NFVEJBQ0tFTkQsICZiZSkgPCAwKQo+ IC0gCQlmYXRhbCgiaW9jdGwoQVRNX1NFVEJBQ0tFTkQpOiAlbSIpOwo+IC0gfQo+IC1AQCAtMTcy LDcgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIGRpc2Nvbm5lY3RfcHBwb2F0bSh2b2lkKQo+IC0gCj4g LSB2b2lkIHBsdWdpbl9pbml0KHZvaWQpCj4gLSB7Cj4gLS0jaWYgZGVmaW5lZChfX2xpbnV4X18p Cj4gLSsjaWZkZWYgbGludXgKPiAtIAlleHRlcm4gaW50IG5ld19zdHlsZV9kcml2ZXI7CS8qIEZy b20gc3lzLWxpbnV4LmMgKi8KPiAtIAlpZiAoIXBwcF9hdmFpbGFibGUoKSAmJiAhbmV3X3N0eWxl X2RyaXZlcikKPiAtIAkJZmF0YWwoIktlcm5lbCBkb2Vzbid0IHN1cHBvcnQgcHBwX2dlbmVyaWMg LSAiCj4gLUBAIC0xODAsOSArMTgzLDkgQEAgdm9pZCBwbHVnaW5faW5pdCh2b2lkKQo+IC0gI2Vs c2UKPiAtIAlmYXRhbCgiTm8gUFBQb0FUTSBzdXBwb3J0IG9uIHRoaXMgT1MiKTsKPiAtICNlbmRp Zgo+IC0tCWluZm8oIlBQUG9BVE0gcGx1Z2luX2luaXQiKTsKPiAtIAlhZGRfb3B0aW9ucyhwcHBv YV9vcHRpb25zKTsKPiAtIH0KPiAtKwo+IC0gc3RydWN0IGNoYW5uZWwgcHBwb2FfY2hhbm5lbCA9 IHsKPiAtICAgICBvcHRpb25zOiBwcHBvYV9vcHRpb25zLAo+IC0gICAgIHByb2Nlc3NfZXh0cmFf b3B0aW9uczogTlVMTCwKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMy1wcHBv ZV9ub2Fkcy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMjMtcHBwb2Vfbm9hZHMucGF0Y2gK PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBiNDcxMmRlMTdhN2YuLjAwMDAwMDAw MDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjMtcHBwb2Vfbm9hZHMucGF0Y2gKPiAr KysgL2Rldi9udWxsCj4gQEAgLTEsMjUgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2gg PG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODox MTo0OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIHBwcG9lX25vYWRzCj4gLQo+IC1JbXBvcnRl ZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5 OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBw cHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMgfCAzIC0tLQo+IC0gMSBmaWxlIGNoYW5nZWQs IDMgZGVsZXRpb25zKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9l L3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCj4gLWluZGV4IGM4OWJl OTQyNTBiYy4uNzgwNGIxODRmMGNiIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBw b2UvcGx1Z2luLmMKPiAtKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCj4gLUBA IC0zNzcsOSArMzc3LDYgQEAgcGx1Z2luX2luaXQodm9pZCkKPiAtICAgICB9Cj4gLSAKPiAtICAg ICBhZGRfb3B0aW9ucyhPcHRpb25zKTsKPiAtLQo+IC0tICAgIGluZm8oIlJQLVBQUG9FIHBsdWdp biB2ZXJzaW9uICVzIGNvbXBpbGVkIGFnYWluc3QgcHBwZCAlcyIsCj4gLS0JIFJQX1ZFUlNJT04s IFZFUlNJT04pOwo+IC0gfQo+IC0gCj4gLSB2b2lkIHBwcG9lX2NoZWNrX29wdGlvbnModm9pZCkK PiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRIX0NPTk5FUlJT LXdvcmxkLXJlYWRhYmxlLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNC1tYWtlLV9QQVRI X0NPTk5FUlJTLXdvcmxkLXJlYWRhYmxlLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggNTU3YjE2OTAxZjE4Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDI0LW1ha2UtX1BBVEhfQ09OTkVSUlMtd29ybGQtcmVhZGFibGUucGF0Y2gKPiArKysg L2Rldi9udWxsCj4gQEAgLTEsMjcgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0u b2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0 OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UgX1BBVEhfQ09OTkVSUlMgd29ybGQgcmVh ZGFibGUKPiAtCj4gLVRoZXJlIGlzIG5vdGhpbmcgc2VjdXJpdHktc2Vuc2l0aXZlIHRoZXJlLgo+ IC0KPiAtCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAt Cj4gLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4 LmRlPgo+IC0tLS0KPiAtIHBwcGQvbWFpbi5jIHwgMiArLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9tYWlu LmMgYi9wcHBkL21haW4uYwo+IC1pbmRleCA4ZTMxMzY1ZjBjNTguLmVkNTQ0MzE1YzFkZiAxMDA2 NDQKPiAtLS0tIGEvcHBwZC9tYWluLmMKPiAtKysrIGIvcHBwZC9tYWluLmMKPiAtQEAgLTE2NzMs NyArMTY3Myw3IEBAIGRldmljZV9zY3JpcHQocHJvZ3JhbSwgaW4sIG91dCwgZG9udF93YWl0KQo+ IC0gICAgIGlmIChsb2dfdG9fZmQgPj0gMCkKPiAtIAllcnJmZCA9IGxvZ190b19mZDsKPiAtICAg ICBlbHNlCj4gLS0JZXJyZmQgPSBvcGVuKF9QQVRIX0NPTk5FUlJTLCBPX1dST05MWSB8IE9fQVBQ RU5EIHwgT19DUkVBVCwgMDYwMCk7Cj4gLSsJZXJyZmQgPSBvcGVuKF9QQVRIX0NPTk5FUlJTLCBP X1dST05MWSB8IE9fQVBQRU5EIHwgT19DUkVBVCwgMDY0NCk7Cj4gLSAKPiAtICAgICArK2Nvbm5f cnVubmluZzsKPiAtICAgICBwaWQgPSBzYWZlX2ZvcmsoaW4sIG91dCwgZXJyZmQpOwo+IGRpZmYg LS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlw by5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMjUtQ29ycmVjdC11bmtvd24tdW5rbm93bi10 eXBvLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZmViZmFmODY5ZjIy Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI1LUNvcnJlY3QtdW5r b3duLXVua25vd24tdHlwby5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw0NiArMCwwIEBA Cj4gLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC1E YXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjQ5ICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0g Q29ycmVjdCB1bmtvd24gPT4gdW5rbm93biB0eXBvCj4gLQo+IC1BdXRob3I6IENocmlzIEJvb3Qg PGJvb3RjQGRlYmlhbi5vcmc+Cj4gLUxhc3QtVXBkYXRlOiAyMDEzLTA5LTA5Cj4gLQo+IC0KPiAt SW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVk LW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0t LQo+IC0gcHBwZC9wbHVnaW5zL3JhZGl1cy9jb25maWcuYyB8IDYgKysrLS0tCj4gLSAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+IC0KPiAtZGlmZiAtLWdp dCBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvY29uZmlnLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL2Nv bmZpZy5jCj4gLWluZGV4IGEyOWU1ZThkYTkwOS4uZjg5MmNhN2IxYmY1IDEwMDY0NAo+IC0tLS0g YS9wcHBkL3BsdWdpbnMvcmFkaXVzL2NvbmZpZy5jCj4gLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRp dXMvY29uZmlnLmMKPiAtQEAgLTI3MSw3ICsyNzEsNyBAQCBjaGFyICpyY19jb25mX3N0cihjaGFy ICpvcHRuYW1lKQo+IC0gCW9wdGlvbiA9IGZpbmRfb3B0aW9uKG9wdG5hbWUsIE9UX1NUUik7Cj4g LSAKPiAtIAlpZiAob3B0aW9uID09IE5VTEwpCj4gLS0JCWZhdGFsKCJyY19jb25mX3N0cjogdW5r b3duIGNvbmZpZyBvcHRpb24gcmVxdWVzdGVkOiAlcyIsIG9wdG5hbWUpOwo+IC0rCQlmYXRhbCgi cmNfY29uZl9zdHI6IHVua25vd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFt ZSk7Cj4gLSAJCXJldHVybiAoY2hhciAqKW9wdGlvbi0+dmFsOwo+IC0gfQo+IC0gCj4gLUBAIC0y ODIsNyArMjgyLDcgQEAgaW50IHJjX2NvbmZfaW50KGNoYXIgKm9wdG5hbWUpCj4gLSAJb3B0aW9u ID0gZmluZF9vcHRpb24ob3B0bmFtZSwgT1RfSU5UfE9UX0FVTyk7Cj4gLSAKPiAtIAlpZiAob3B0 aW9uID09IE5VTEwpCj4gLS0JCWZhdGFsKCJyY19jb25mX2ludDogdW5rb3duIGNvbmZpZyBvcHRp b24gcmVxdWVzdGVkOiAlcyIsIG9wdG5hbWUpOwo+IC0rCQlmYXRhbCgicmNfY29uZl9pbnQ6IHVu a25vd24gY29uZmlnIG9wdGlvbiByZXF1ZXN0ZWQ6ICVzIiwgb3B0bmFtZSk7Cj4gLSAJcmV0dXJu ICooKGludCAqKW9wdGlvbi0+dmFsKTsKPiAtIH0KPiAtIAo+IC1AQCAtMjkzLDcgKzI5Myw3IEBA IFNFUlZFUiAqcmNfY29uZl9zcnYoY2hhciAqb3B0bmFtZSkKPiAtIAlvcHRpb24gPSBmaW5kX29w dGlvbihvcHRuYW1lLCBPVF9TUlYpOwo+IC0gCj4gLSAJaWYgKG9wdGlvbiA9PSBOVUxMKQo+IC0t CQlmYXRhbCgicmNfY29uZl9zcnY6IHVua293biBjb25maWcgb3B0aW9uIHJlcXVlc3RlZDogJXMi LCBvcHRuYW1lKTsKPiAtKwkJZmF0YWwoInJjX2NvbmZfc3J2OiB1bmtub3duIGNvbmZpZyBvcHRp b24gcmVxdWVzdGVkOiAlcyIsIG9wdG5hbWUpOwo+IC0gCXJldHVybiAoU0VSVkVSICopb3B0aW9u LT52YWw7Cj4gLSB9Cj4gLSAKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNi1w cHBvZS1jdXN0b20taG9zdC11bmlxLXRhZy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMjYt cHBwb2UtY3VzdG9tLWhvc3QtdW5pcS10YWcucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCA1Y2YyNjZkMTA5NzEuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBw LTIuNC43LzAwMjYtcHBwb2UtY3VzdG9tLWhvc3QtdW5pcS10YWcucGF0Y2gKPiArKysgL2Rldi9u dWxsCj4gQEAgLTEsMzAyICswLDAgQEAKPiAtRnJvbTogTWF0dGVvIENyb2NlIDxtYXR0ZW9Ab3Bl bndydC5vcmc+Cj4gLURhdGU6IFNhdCwgMjEgTm92IDIwMTUgMTg6NDU6NDMgKzAxMDAKPiAtU3Vi amVjdDogW1BBVENIXSBwcHBvZTogY3VzdG9tIGhvc3QtdW5pcSB0YWcKPiAtCj4gLUFkZCBwcHBv ZSAnaG9zdC11bmlxJyBvcHRpb24gdG8gc2V0IGFuIGFyYml0cmFyeQo+IC1ob3N0LXVuaXEgdGFn IGluc3RlYWQgb2YgdGhlIHBwcGQgcGlkLgo+IC1Tb21lIElTUHMgdXNlIHN1Y2ggdGFnIHRvIGF1 dGhlbnRpY2F0ZSB0aGUgQ1BFLAo+IC1zbyBpdCBtdXN0IGJlIHNldCB0byBhIHByb3BlciB2YWx1 ZSB0byBjb25uZWN0Lgo+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWF0dGVvIENyb2NlIDxtYXR0ZW9A b3BlbndydC5vcmc+Cj4gLVNpZ25lZC1vZmYtYnk6IEpvLVBoaWxpcHAgV2ljaCA8am93QG9wZW53 cnQub3JnPgo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54 ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0 cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9wbHVnaW5zL3JwLXBwcG9lL2NvbW1vbi5jICAgICAg ICAgIHwgMTQgKysrKy0tLS0tCj4gLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvZGlzY292ZXJ5LmMg ICAgICAgfCA1MSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtIHBwcGQvcGx1 Z2lucy9ycC1wcHBvZS9wbHVnaW4uYyAgICAgICAgICB8ICA3ICsrKystCj4gLSBwcHBkL3BsdWdp bnMvcnAtcHBwb2UvcHBwb2UtZGlzY292ZXJ5LmMgfCAzOCArKysrKysrKysrKysrKystLS0tLS0t LS0KPiAtIHBwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oICAgICAgICAgICB8IDMxICsrKysr KysrKysrKysrKysrKystCj4gLSA1IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDU1 IGRlbGV0aW9ucygtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9j b21tb24uYyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYwo+IC1pbmRleCA4OWM2MzNj NzczZjkuLjhmMTc1ZWNlMzQ1YiAxMDA2NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9l L2NvbW1vbi5jCj4gLSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9jb21tb24uYwo+IC1AQCAt MTE5LDE1ICsxMTksMTEgQEAgc2VuZFBBRFQoUFBQb0VDb25uZWN0aW9uICpjb25uLCBjaGFyIGNv bnN0ICptc2cpCj4gLSAgICAgY29ubi0+c2Vzc2lvbiA9IDA7Cj4gLSAKPiAtICAgICAvKiBJZiB3 ZSdyZSB1c2luZyBIb3N0LVVuaXEsIGNvcHkgaXQgb3ZlciAqLwo+IC0tICAgIGlmIChjb25uLT51 c2VIb3N0VW5pcSkgewo+IC0tCVBQUG9FVGFnIGhvc3RVbmlxOwo+IC0tCXBpZF90IHBpZCA9IGdl dHBpZCgpOwo+IC0tCWhvc3RVbmlxLnR5cGUgPSBodG9ucyhUQUdfSE9TVF9VTklRKTsKPiAtLQlo b3N0VW5pcS5sZW5ndGggPSBodG9ucyhzaXplb2YocGlkKSk7Cj4gLS0JbWVtY3B5KGhvc3RVbmlx LnBheWxvYWQsICZwaWQsIHNpemVvZihwaWQpKTsKPiAtLQltZW1jcHkoY3Vyc29yLCAmaG9zdFVu aXEsIHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsKPiAtLQljdXJzb3IgKz0gc2l6ZW9mKHBp ZCkgKyBUQUdfSERSX1NJWkU7Cj4gLS0JcGxlbiArPSBzaXplb2YocGlkKSArIFRBR19IRFJfU0la RTsKPiAtKyAgICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Cj4gLSsJaW50IGxlbiA9IG50 b2hzKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCk7Cj4gLSsJbWVtY3B5KGN1cnNvciwgJmNvbm4tPmhv c3RVbmlxLCBsZW4gKyBUQUdfSERSX1NJWkUpOwo+IC0rCWN1cnNvciArPSBsZW4gKyBUQUdfSERS X1NJWkU7Cj4gLSsJcGxlbiArPSBsZW4gKyBUQUdfSERSX1NJWkU7Cj4gLSAgICAgfQo+IC0gCj4g LSAgICAgLyogQ29weSBlcnJvciBtZXNzYWdlICovCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdp bnMvcnAtcHBwb2UvZGlzY292ZXJ5LmMgYi9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvZGlzY292ZXJ5 LmMKPiAtaW5kZXggMDQ4NzdjYjgyOTVmLi41ZGI4ZDBkZWZjMzcgMTAwNjQ0Cj4gLS0tLSBhL3Bw cGQvcGx1Z2lucy9ycC1wcHBvZS9kaXNjb3ZlcnkuYwo+IC0rKysgYi9wcHBkL3BsdWdpbnMvcnAt cHBwb2UvZGlzY292ZXJ5LmMKPiAtQEAgLTgwLDEzICs4MCwxMCBAQCBzdGF0aWMgdm9pZAo+IC0g cGFyc2VGb3JIb3N0VW5pcShVSU5UMTZfdCB0eXBlLCBVSU5UMTZfdCBsZW4sIHVuc2lnbmVkIGNo YXIgKmRhdGEsCj4gLSAJCSB2b2lkICpleHRyYSkKPiAtIHsKPiAtLSAgICBpbnQgKnZhbCA9IChp bnQgKikgZXh0cmE7Cj4gLS0gICAgaWYgKHR5cGUgPT0gVEFHX0hPU1RfVU5JUSAmJiBsZW4gPT0g c2l6ZW9mKHBpZF90KSkgewo+IC0tCXBpZF90IHRtcDsKPiAtLQltZW1jcHkoJnRtcCwgZGF0YSwg bGVuKTsKPiAtLQlpZiAodG1wID09IGdldHBpZCgpKSB7Cj4gLS0JICAgICp2YWwgPSAxOwo+IC0t CX0KPiAtKyAgICBQUFBvRVRhZyAqdGFnID0gZXh0cmE7Cj4gLSsKPiAtKyAgICBpZiAodHlwZSA9 PSBUQUdfSE9TVF9VTklRICYmIGxlbiA9PSBudG9ocyh0YWctPmxlbmd0aCkpIHsKPiAtKwl0YWct Pmxlbmd0aCA9IG1lbWNtcChkYXRhLCB0YWctPnBheWxvYWQsIGxlbik7Cj4gLSAgICAgfQo+IC0g fQo+IC0gCj4gLUBAIC0xMDQsMTYgKzEwMSwxNiBAQCBwYXJzZUZvckhvc3RVbmlxKFVJTlQxNl90 IHR5cGUsIFVJTlQxNl90IGxlbiwgdW5zaWduZWQgY2hhciAqZGF0YSwKPiAtIHN0YXRpYyBpbnQK PiAtIHBhY2tldElzRm9yTWUoUFBQb0VDb25uZWN0aW9uICpjb25uLCBQUFBvRVBhY2tldCAqcGFj a2V0KQo+IC0gewo+IC0tICAgIGludCBmb3JNZSA9IDA7Cj4gLSsgICAgUFBQb0VUYWcgaG9zdFVu aXEgPSBjb25uLT5ob3N0VW5pcTsKPiAtIAo+IC0gICAgIC8qIElmIHBhY2tldCBpcyBub3QgZGly ZWN0ZWQgdG8gb3VyIE1BQyBhZGRyZXNzLCBmb3JnZXQgaXQgKi8KPiAtICAgICBpZiAobWVtY21w KHBhY2tldC0+ZXRoSGRyLmhfZGVzdCwgY29ubi0+bXlFdGgsIEVUSF9BTEVOKSkgcmV0dXJuIDA7 Cj4gLSAKPiAtICAgICAvKiBJZiB3ZSdyZSBub3QgdXNpbmcgdGhlIEhvc3QtVW5pcXVlIHRhZywg dGhlbiBhY2NlcHQgdGhlIHBhY2tldCAqLwo+IC0tICAgIGlmICghY29ubi0+dXNlSG9zdFVuaXEp IHJldHVybiAxOwo+IC0rICAgIGlmICghY29ubi0+aG9zdFVuaXEubGVuZ3RoKSByZXR1cm4gMTsK PiAtIAo+IC0tICAgIHBhcnNlUGFja2V0KHBhY2tldCwgcGFyc2VGb3JIb3N0VW5pcSwgJmZvck1l KTsKPiAtLSAgICByZXR1cm4gZm9yTWU7Cj4gLSsgICAgcGFyc2VQYWNrZXQocGFja2V0LCBwYXJz ZUZvckhvc3RVbmlxLCAmaG9zdFVuaXEpOwo+IC0rICAgIHJldHVybiAhaG9zdFVuaXEubGVuZ3Ro Owo+IC0gfQo+IC0gCj4gLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IC1AQCAtMzAxLDE2ICsyOTgsMTIgQEAg c2VuZFBBREkoUFBQb0VDb25uZWN0aW9uICpjb25uKQo+IC0gICAgIH0KPiAtIAo+IC0gICAgIC8q IElmIHdlJ3JlIHVzaW5nIEhvc3QtVW5pcSwgY29weSBpdCBvdmVyICovCj4gLS0gICAgaWYgKGNv bm4tPnVzZUhvc3RVbmlxKSB7Cj4gLS0JUFBQb0VUYWcgaG9zdFVuaXE7Cj4gLS0JcGlkX3QgcGlk ID0gZ2V0cGlkKCk7Cj4gLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwo+ IC0tCWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQpKTsKPiAtLQltZW1jcHkoaG9z dFVuaXEucGF5bG9hZCwgJnBpZCwgc2l6ZW9mKHBpZCkpOwo+IC0tCUNIRUNLX1JPT00oY3Vyc29y LCBwYWNrZXQucGF5bG9hZCwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwo+IC0tCW1lbWNw eShjdXJzb3IsICZob3N0VW5pcSwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwo+IC0tCWN1 cnNvciArPSBzaXplb2YocGlkKSArIFRBR19IRFJfU0laRTsKPiAtLQlwbGVuICs9IHNpemVvZihw aWQpICsgVEFHX0hEUl9TSVpFOwo+IC0rICAgIGlmIChjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHsK PiAtKwlpbnQgbGVuID0gbnRvaHMoY29ubi0+aG9zdFVuaXEubGVuZ3RoKTsKPiAtKwlDSEVDS19S T09NKGN1cnNvciwgcGFja2V0LnBheWxvYWQsIGxlbiArIFRBR19IRFJfU0laRSk7Cj4gLSsJbWVt Y3B5KGN1cnNvciwgJmNvbm4tPmhvc3RVbmlxLCBsZW4gKyBUQUdfSERSX1NJWkUpOwo+IC0rCWN1 cnNvciArPSBsZW4gKyBUQUdfSERSX1NJWkU7Cj4gLSsJcGxlbiArPSBsZW4gKyBUQUdfSERSX1NJ WkU7Cj4gLSAgICAgfQo+IC0gCj4gLSAgICAgLyogQWRkIG91ciBtYXhpbXVtIE1UVS9NUlUgKi8K PiAtQEAgLTQ3OCwxNiArNDcxLDEyIEBAIHNlbmRQQURSKFBQUG9FQ29ubmVjdGlvbiAqY29ubikK PiAtICAgICBjdXJzb3IgKz0gbmFtZWxlbiArIFRBR19IRFJfU0laRTsKPiAtIAo+IC0gICAgIC8q IElmIHdlJ3JlIHVzaW5nIEhvc3QtVW5pcSwgY29weSBpdCBvdmVyICovCj4gLS0gICAgaWYgKGNv bm4tPnVzZUhvc3RVbmlxKSB7Cj4gLS0JUFBQb0VUYWcgaG9zdFVuaXE7Cj4gLS0JcGlkX3QgcGlk ID0gZ2V0cGlkKCk7Cj4gLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwo+ IC0tCWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQpKTsKPiAtLQltZW1jcHkoaG9z dFVuaXEucGF5bG9hZCwgJnBpZCwgc2l6ZW9mKHBpZCkpOwo+IC0tCUNIRUNLX1JPT00oY3Vyc29y LCBwYWNrZXQucGF5bG9hZCwgc2l6ZW9mKHBpZCkrVEFHX0hEUl9TSVpFKTsKPiAtLQltZW1jcHko Y3Vyc29yLCAmaG9zdFVuaXEsIHNpemVvZihwaWQpICsgVEFHX0hEUl9TSVpFKTsKPiAtLQljdXJz b3IgKz0gc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkU7Cj4gLS0JcGxlbiArPSBzaXplb2YocGlk KSArIFRBR19IRFJfU0laRTsKPiAtKyAgICBpZiAoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Cj4g LSsJaW50IGxlbiA9IG50b2hzKGNvbm4tPmhvc3RVbmlxLmxlbmd0aCk7Cj4gLSsJQ0hFQ0tfUk9P TShjdXJzb3IsIHBhY2tldC5wYXlsb2FkLCBsZW4rVEFHX0hEUl9TSVpFKTsKPiAtKwltZW1jcHko Y3Vyc29yLCAmY29ubi0+aG9zdFVuaXEsIGxlbiArIFRBR19IRFJfU0laRSk7Cj4gLSsJY3Vyc29y ICs9IGxlbiArIFRBR19IRFJfU0laRTsKPiAtKwlwbGVuICs9IGxlbiArIFRBR19IRFJfU0laRTsK PiAtICAgICB9Cj4gLSAKPiAtICAgICAvKiBBZGQgb3VyIG1heGltdW0gTVRVL01SVSAqLwo+IC1k aWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jIGIvcHBwZC9wbHVnaW5z L3JwLXBwcG9lL3BsdWdpbi5jCj4gLWluZGV4IDc4MDRiMTg0ZjBjYi4uMTI3NzhkMGQ5OTkxIDEw MDY0NAo+IC0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcGx1Z2luLmMKPiAtKysrIGIvcHBw ZC9wbHVnaW5zL3JwLXBwcG9lL3BsdWdpbi5jCj4gLUBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyBj aGFyICpleGlzdGluZ1Nlc3Npb24gPSBOVUxMOwo+IC0gc3RhdGljIGludCBwcmludEFDTmFtZXMg PSAwOwo+IC0gc3RhdGljIGNoYXIgKnBwcG9lX3JlcWRfbWFjID0gTlVMTDsKPiAtIHVuc2lnbmVk IGNoYXIgcHBwb2VfcmVxZF9tYWNfYWRkcls2XTsKPiAtK3N0YXRpYyBjaGFyICpob3N0X3VuaXEg PSBOVUxMOwo+IC0gCj4gLSBzdGF0aWMgaW50IFBQUG9FRGV2bmFtZUhvb2soY2hhciAqY21kLCBj aGFyICoqYXJndiwgaW50IGRvaXQpOwo+IC0gc3RhdGljIG9wdGlvbl90IE9wdGlvbnNbXSA9IHsK PiAtQEAgLTg1LDYgKzg2LDggQEAgc3RhdGljIG9wdGlvbl90IE9wdGlvbnNbXSA9IHsKPiAtICAg ICAgICJCZSB2ZXJib3NlIGFib3V0IGRpc2NvdmVyZWQgYWNjZXNzIGNvbmNlbnRyYXRvcnMifSwK PiAtICAgICB7ICJwcHBvZS1tYWMiLCBvX3N0cmluZywgJnBwcG9lX3JlcWRfbWFjLAo+IC0gICAg ICAgIk9ubHkgY29ubmVjdCB0byBzcGVjaWZpZWQgTUFDIGFkZHJlc3MiIH0sCj4gLSsgICAgeyAi aG9zdC11bmlxIiwgb19zdHJpbmcsICZob3N0X3VuaXEsCj4gLSsgICAgICAiU3BlY2lmeSBjdXN0 b20gSG9zdC1VbmlxIiB9LAo+IC0gICAgIHsgTlVMTCB9Cj4gLSB9Owo+IC0gaW50ICgqT2xkRGV2 bmFtZUhvb2spKGNoYXIgKmNtZCwgY2hhciAqKmFyZ3YsIGludCBkb2l0KSA9IE5VTEw7Cj4gLUBA IC0xMTAsNyArMTEzLDYgQEAgUFBQT0VJbml0RGV2aWNlKHZvaWQpCj4gLSAgICAgY29ubi0+aWZO YW1lID0gZGV2bmFtOwo+IC0gICAgIGNvbm4tPmRpc2NvdmVyeVNvY2tldCA9IC0xOwo+IC0gICAg IGNvbm4tPnNlc3Npb25Tb2NrZXQgPSAtMTsKPiAtLSAgICBjb25uLT51c2VIb3N0VW5pcSA9IDE7 Cj4gLSAgICAgY29ubi0+cHJpbnRBQ05hbWVzID0gcHJpbnRBQ05hbWVzOwo+IC0gICAgIGNvbm4t PmRpc2NvdmVyeVRpbWVvdXQgPSBQQURJX1RJTUVPVVQ7Cj4gLSAgICAgcmV0dXJuIDE7Cj4gLUBA IC0xNjYsNiArMTY4LDkgQEAgUFBQT0VDb25uZWN0RGV2aWNlKHZvaWQpCj4gLSAgICAgaWYgKGxj cF93YW50b3B0aW9uc1swXS5tcnUgPiBpZnIuaWZyX210dSAtIFRPVEFMX09WRVJIRUFEKQo+IC0g CWxjcF93YW50b3B0aW9uc1swXS5tcnUgPSBpZnIuaWZyX210dSAtIFRPVEFMX09WRVJIRUFEOwo+ IC0gCj4gLSsgICAgaWYgKGhvc3RfdW5pcSAmJiAhcGFyc2VIb3N0VW5pcShob3N0X3VuaXEsICZj b25uLT5ob3N0VW5pcSkpCj4gLSsJZmF0YWwoIklsbGVnYWwgdmFsdWUgZm9yIGhvc3QtdW5pcSBv cHRpb24iKTsKPiAtKwo+IC0gICAgIGNvbm4tPmFjTmFtZSA9IGFjTmFtZTsKPiAtICAgICBjb25u LT5zZXJ2aWNlTmFtZSA9IHBwcGRfcHBwb2Vfc2VydmljZTsKPiAtICAgICBzdHJsY3B5KHBwcF9k ZXZuYW0sIGRldm5hbSwgc2l6ZW9mKHBwcF9kZXZuYW0pKTsKPiAtZGlmZiAtLWdpdCBhL3BwcGQv cGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBv ZS9wcHBvZS1kaXNjb3ZlcnkuYwo+IC1pbmRleCA1NTAzN2RmZmIwMjMuLmZmNGM0ODdmZmFhOSAx MDA2NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLWRpc2NvdmVyeS5jCj4g LSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS1kaXNjb3ZlcnkuYwo+IC1AQCAtMzU2 LDcgKzM1Niw3IEBAIHBhY2tldElzRm9yTWUoUFBQb0VDb25uZWN0aW9uICpjb25uLCBQUFBvRVBh Y2tldCAqcGFja2V0KQo+IC0gICAgIGlmIChtZW1jbXAocGFja2V0LT5ldGhIZHIuaF9kZXN0LCBj b25uLT5teUV0aCwgRVRIX0FMRU4pKSByZXR1cm4gMDsKPiAtIAo+IC0gICAgIC8qIElmIHdlJ3Jl IG5vdCB1c2luZyB0aGUgSG9zdC1VbmlxdWUgdGFnLCB0aGVuIGFjY2VwdCB0aGUgcGFja2V0ICov Cj4gLS0gICAgaWYgKCFjb25uLT51c2VIb3N0VW5pcSkgcmV0dXJuIDE7Cj4gLSsgICAgaWYgKCFj b25uLT5ob3N0VW5pcS5sZW5ndGgpIHJldHVybiAxOwo+IC0gCj4gLSAgICAgcGFyc2VQYWNrZXQo cGFja2V0LCBwYXJzZUZvckhvc3RVbmlxLCAmZm9yTWUpOwo+IC0gICAgIHJldHVybiBmb3JNZTsK PiAtQEAgLTQ4MiwxNiArNDgyLDEyIEBAIHNlbmRQQURJKFBQUG9FQ29ubmVjdGlvbiAqY29ubikK PiAtICAgICBjdXJzb3IgKz0gbmFtZWxlbiArIFRBR19IRFJfU0laRTsKPiAtIAo+IC0gICAgIC8q IElmIHdlJ3JlIHVzaW5nIEhvc3QtVW5pcSwgY29weSBpdCBvdmVyICovCj4gLS0gICAgaWYgKGNv bm4tPnVzZUhvc3RVbmlxKSB7Cj4gLS0JUFBQb0VUYWcgaG9zdFVuaXE7Cj4gLS0JcGlkX3QgcGlk ID0gZ2V0cGlkKCk7Cj4gLS0JaG9zdFVuaXEudHlwZSA9IGh0b25zKFRBR19IT1NUX1VOSVEpOwo+ IC0tCWhvc3RVbmlxLmxlbmd0aCA9IGh0b25zKHNpemVvZihwaWQpKTsKPiAtLQltZW1jcHkoaG9z dFVuaXEucGF5bG9hZCwgJnBpZCwgc2l6ZW9mKHBpZCkpOwo+IC0tCUNIRUNLX1JPT00oY3Vyc29y LCBwYWNrZXQucGF5bG9hZCwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwo+IC0tCW1lbWNw eShjdXJzb3IsICZob3N0VW5pcSwgc2l6ZW9mKHBpZCkgKyBUQUdfSERSX1NJWkUpOwo+IC0tCWN1 cnNvciArPSBzaXplb2YocGlkKSArIFRBR19IRFJfU0laRTsKPiAtLQlwbGVuICs9IHNpemVvZihw aWQpICsgVEFHX0hEUl9TSVpFOwo+IC0rICAgIGlmIChjb25uLT5ob3N0VW5pcS5sZW5ndGgpIHsK PiAtKwlpbnQgbGVuID0gbnRvaHMoY29ubi0+aG9zdFVuaXEubGVuZ3RoKTsKPiAtKwlDSEVDS19S T09NKGN1cnNvciwgcGFja2V0LnBheWxvYWQsIGxlbiArIFRBR19IRFJfU0laRSk7Cj4gLSsJbWVt Y3B5KGN1cnNvciwgJmNvbm4tPmhvc3RVbmlxLCBsZW4gKyBUQUdfSERSX1NJWkUpOwo+IC0rCWN1 cnNvciArPSBsZW4gKyBUQUdfSERSX1NJWkU7Cj4gLSsJcGxlbiArPSBsZW4gKyBUQUdfSERSX1NJ WkU7Cj4gLSAgICAgfQo+IC0gCj4gLSAgICAgcGFja2V0Lmxlbmd0aCA9IGh0b25zKHBsZW4pOwo+ IC1AQCAtNjUzLDcgKzY0OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4g LSAKPiAtICAgICBtZW1zZXQoY29ubiwgMCwgc2l6ZW9mKFBQUG9FQ29ubmVjdGlvbikpOwo+IC0g Cj4gLS0gICAgd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgIkk6RDpWVUFTOkM6aCIp KSA+IDApIHsKPiAtKyAgICB3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiSTpEOlZV VzpBUzpDOmgiKSkgPiAwKSB7Cj4gLSAJc3dpdGNoKG9wdCkgewo+IC0gCWNhc2UgJ1MnOgo+IC0g CSAgICBjb25uLT5zZXJ2aWNlTmFtZSA9IHhzdHJkdXAob3B0YXJnKTsKPiAtQEAgLTY2Miw3ICs2 NTgsMjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiAtIAkgICAgY29ubi0+ YWNOYW1lID0geHN0cmR1cChvcHRhcmcpOwo+IC0gCSAgICBicmVhazsKPiAtIAljYXNlICdVJzoK PiAtLQkgICAgY29ubi0+dXNlSG9zdFVuaXEgPSAxOwo+IC0rCSAgICBpZihjb25uLT5ob3N0VW5p cS5sZW5ndGgpIHsKPiAtKwkJZnByaW50ZihzdGRlcnIsICItVSBhbmQgLVcgYXJlIG11dHVhbGx5 IGV4Y2x1c2l2ZVxuIik7Cj4gLSsJCWV4aXQoRVhJVF9GQUlMVVJFKTsKPiAtKwkgICAgfQo+IC0r ICAgICAgICAgICAgY2hhciBwaWRidWZbNV07Cj4gLSsgICAgICAgICAgICBzbnByaW50ZihwaWRi dWYsIHNpemVvZihwaWRidWYpLCAiJTA0eCIsIGdldHBpZCgpKTsKPiAtKyAgICAgICAgICAgIHBh cnNlSG9zdFVuaXEocGlkYnVmLCAmY29ubi0+aG9zdFVuaXEpOwo+IC0rCSAgICBicmVhazsKPiAt KwljYXNlICdXJzoKPiAtKwkgICAgaWYoY29ubi0+aG9zdFVuaXEubGVuZ3RoKSB7Cj4gLSsJCWZw cmludGYoc3RkZXJyLCAiLVUgYW5kIC1XIGFyZSBtdXR1YWxseSBleGNsdXNpdmVcbiIpOwo+IC0r CQlleGl0KEVYSVRfRkFJTFVSRSk7Cj4gLSsJICAgIH0KPiAtKwkgICAgaWYgKCFwYXJzZUhvc3RV bmlxKG9wdGFyZywgJmNvbm4tPmhvc3RVbmlxKSkgewo+IC0rICAgICAgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiSW52YWxpZCBob3N0LXVuaXEgYXJndW1lbnQ6ICVzXG4iLCBvcHRhcmcpOwo+ IC0rICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKPiAtKyAgICAgICAgICAgIH0K PiAtIAkgICAgYnJlYWs7Cj4gLSAJY2FzZSAnRCc6Cj4gLSAJICAgIGNvbm4tPmRlYnVnRmlsZSA9 IGZvcGVuKG9wdGFyZywgInciKTsKPiAtZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBv ZS9wcHBvZS5oIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKPiAtaW5kZXggYzRhYWE2 ZTY4ODU2Li4wODAyNmY1NzcwMjggMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvcGx1Z2lucy9ycC1wcHBv ZS9wcHBvZS5oCj4gLSsrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCj4gLUBAIC0y MSw2ICsyMSw4IEBACj4gLSAKPiAtICNpbmNsdWRlIDxzdGRpby5oPgkJLyogRm9yIEZJTEUgKi8K PiAtICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4JCS8qIEZvciBwaWRfdCAqLwo+IC0rI2luY2x1ZGUg PGN0eXBlLmg+Cj4gLSsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gLSAKPiAtIC8qIEhvdyBkbyB3ZSBh Y2Nlc3MgcmF3IEV0aGVybmV0IGRldmljZXM/ICovCj4gLSAjdW5kZWYgVVNFX0xJTlVYX1BBQ0tF VAo+IC1AQCAtMjM2LDcgKzIzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBQUG9FQ29ubmVjdGlvblN0 cnVjdCB7Cj4gLSAgICAgY2hhciAqc2VydmljZU5hbWU7CQkvKiBEZXNpcmVkIHNlcnZpY2UgbmFt ZSwgaWYgYW55ICovCj4gLSAgICAgY2hhciAqYWNOYW1lOwkJLyogRGVzaXJlZCBBQyBuYW1lLCBp ZiBhbnkgKi8KPiAtICAgICBpbnQgc3luY2hyb25vdXM7CQkvKiBVc2Ugc3luY2hyb25vdXMgUFBQ ICovCj4gLS0gICAgaW50IHVzZUhvc3RVbmlxOwkJLyogVXNlIEhvc3QtVW5pcSB0YWcgKi8KPiAt KyAgICBQUFBvRVRhZyBob3N0VW5pcTsJCS8qIFVzZSBIb3N0LVVuaXEgdGFnICovCj4gLSAgICAg aW50IHByaW50QUNOYW1lczsJCS8qIEp1c3QgcHJpbnQgQUMgbmFtZXMgKi8KPiAtICAgICBGSUxF ICpkZWJ1Z0ZpbGU7CQkvKiBEZWJ1ZyBmaWxlIGZvciBkdW1waW5nIHBhY2tldHMgKi8KPiAtICAg ICBpbnQgbnVtUEFET3M7CQkvKiBOdW1iZXIgb2YgUEFETyBwYWNrZXRzIHJlY2VpdmVkICovCj4g LUBAIC0yOTIsNiArMjk0LDMzIEBAIHZvaWQgcHBwb2VfcHJpbnRwa3QoUFBQb0VQYWNrZXQgKnBh Y2tldCwKPiAtIAkJICAgIHZvaWQgKCpwcmludGVyKSh2b2lkICosIGNoYXIgKiwgLi4uKSwgdm9p ZCAqYXJnKTsKPiAtIHZvaWQgcHBwb2VfbG9nX3BhY2tldChjb25zdCBjaGFyICpwcmVmaXgsIFBQ UG9FUGFja2V0ICpwYWNrZXQpOwo+IC0gCj4gLStzdGF0aWMgaW5saW5lIGludCBwYXJzZUhvc3RV bmlxKGNvbnN0IGNoYXIgKnVuaXEsIFBQUG9FVGFnICp0YWcpCj4gLSt7Cj4gLSsgICAgaW50IGks IGxlbiA9IHN0cmxlbih1bmlxKTsKPiAtKwo+IC0rI2RlZmluZSBoZXgoeCkgXAo+IC0rICAgICgo KHgpIDw9ICc5JykgPyAoKHgpIC0gJzAnKSA6IFwKPiAtKyAgICAgICAgKCgoeCkgPD0gJ0YnKSA/ ICgoeCkgLSAnQScgKyAxMCkgOiBcCj4gLSsgICAgICAgICAgICAoKHgpIC0gJ2EnICsgMTApKSkK PiAtKwo+IC0rICAgIGlmIChsZW4gJSAyKQo+IC0rICAgICAgICByZXR1cm4gMDsKPiAtKwo+IC0r ICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMikKPiAtKyAgICB7Cj4gLSsgICAgICAgIGlm ICghaXN4ZGlnaXQodW5pcVtpXSkgfHwgIWlzeGRpZ2l0KHVuaXFbaSsxXSkpCj4gLSsgICAgICAg ICAgICByZXR1cm4gMDsKPiAtKwo+IC0rICAgICAgICB0YWctPnBheWxvYWRbaSAvIDJdID0gKGNo YXIpKDE2ICogaGV4KHVuaXFbaV0pICsgaGV4KHVuaXFbaSsxXSkpOwo+IC0rICAgIH0KPiAtKwo+ IC0rI3VuZGVmIGhleAo+IC0rCj4gLSsgICAgdGFnLT50eXBlID0gaHRvbnMoVEFHX0hPU1RfVU5J USk7Cj4gLSsgICAgdGFnLT5sZW5ndGggPSBodG9ucyhsZW4gLyAyKTsKPiAtKyAgICByZXR1cm4g MTsKPiAtK30KPiAtKwo+IC0gI2RlZmluZSBTRVRfU1RSSU5HKHZhciwgdmFsKSBkbyB7IGlmICh2 YXIpIGZyZWUodmFyKTsgdmFyID0gc3RyRHVwKHZhbCk7IH0gd2hpbGUoMCk7Cj4gLSAKPiAtICNk ZWZpbmUgQ0hFQ0tfUk9PTShjdXJzb3IsIHN0YXJ0LCBsZW4pIFwKPiBkaWZmIC0tZ2l0IGEvcGF0 Y2hlcy9wcHAtMi40LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1bHRyb3V0ZS1vcHRpb24ucGF0Y2gg Yi9wYXRjaGVzL3BwcC0yLjQuNy8wMDI3LUFkZC1yZXBsYWNlZGVmYXVsdHJvdXRlLW9wdGlvbi5w YXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDE5ZjkzMWIxMjQ0Zi4uMDAw MDAwMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyNy1BZGQtcmVwbGFjZWRlZmF1 bHRyb3V0ZS1vcHRpb24ucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzI0ICswLDAgQEAK PiAtRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLURh dGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKPiAtU3ViamVjdDogW1BBVENIXSBB ZGQgcmVwbGFjZWRlZmF1bHRyb3V0ZSBvcHRpb24KPiAtCj4gLUFkZHMgYW4gb3B0aW9uIHRvIHBw cGQgdG8gY29udHJvbCB3aGV0aGVyIHRvIHJlcGxhY2UgZXhpc3RpbmcgZGVmYXVsdCByb3V0ZXMK PiAtd2hlbiB1c2luZyB0aGUgJ2RlZmF1bHRyb3V0ZScgb3B0aW9uLgo+IC0KPiAtSWYgZGVmYXVs dHJvdXRlIGFuZCByZXBsYWNlZGVmYXVsdHJvdXRlIGFyZSBib3RoIHNldCwgcHBwZCByZXBsYWNl cyBhbiBleGlzdGluZwo+IC1kZWZhdWx0IHJvdXRlIHdpdGggdGhlIG5ldyBkZWZhdWx0IHJvdXRl LiBUaGUgb2xkIGRlZmF1bHQgcm91dGUgaXMgcmVzdG9yZWQgd2hlbgo+IC10aGUgY29ubmVjdGlv biBpcyB0YWtlbiBkb3duLgo+IC0KPiAtT3JpZ2luOiB2ZW5kb3IsIGh0dHBzOi8vYnVpbGQub3Bl bnN1c2Uub3JnL3NvdXJjZS9uZXR3b3JrL3BwcC9wcHAtMi40LjItY2lmZGVmcm91dGUuZGlmZj9y ZXY9N2EwZmRlZmYwYjI5NDM3ZGQ3ZjQ1ODFjOTVjNzI1NWEKPiAtRm9yd2FyZGVkOiBubwo+IC1S ZXZpZXdlZC1ieTogQ2hyaXMgQm9vdCA8Ym9vdGNAZGViaWFuLm9yZz4KPiAtTGFzdC1VcGRhdGU6 IDIwMTQtMDEtMjYKPiAtCj4gLQo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJp YW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBwcHBkL2lwY3AuYyAgICAgIHwgNDUgKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQo+IC0gcHBwZC9pcGNwLmggICAgICB8ICAxICsKPiAt IHBwcGQvcHBwZC44ICAgICAgfCAxMiArKysrKysrKy0KPiAtIHBwcGQvcHBwZC5oICAgICAgfCAg NCArKysKPiAtIHBwcGQvc3lzLWxpbnV4LmMgfCA4MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+IC0gNSBmaWxlcyBjaGFuZ2VkLCAxMjMg aW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9p cGNwLmMgYi9wcHBkL2lwY3AuYwo+IC1pbmRleCBlOTczOGZlNGQ4OTQuLmM4ZmUyNzlkNGVkZSAx MDA2NDQKPiAtLS0tIGEvcHBwZC9pcGNwLmMKPiAtKysrIGIvcHBwZC9pcGNwLmMKPiAtQEAgLTE5 OCw2ICsxOTgsMTYgQEAgc3RhdGljIG9wdGlvbl90IGlwY3Bfb3B0aW9uX2xpc3RbXSA9IHsKPiAt ICAgICAgICJkaXNhYmxlIGRlZmF1bHRyb3V0ZSBvcHRpb24iLCBPUFRfQUxJQVMgfCBPUFRfQTJD TFIsCj4gLSAgICAgICAmaXBjcF93YW50b3B0aW9uc1swXS5kZWZhdWx0X3JvdXRlIH0sCj4gLSAK PiAtKyNpZmRlZiBfX2xpbnV4X18KPiAtKyAgICB7ICJyZXBsYWNlZGVmYXVsdHJvdXRlIiwgb19i b29sLAo+IC0rCQkJCSZpcGNwX3dhbnRvcHRpb25zWzBdLnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSwK PiAtKyAgICAgICJSZXBsYWNlIGRlZmF1bHQgcm91dGUiLCAxCj4gLSsgICAgfSwKPiAtKyAgICB7 ICJub3JlcGxhY2VkZWZhdWx0cm91dGUiLCBvX2Jvb2wsCj4gLSsJCQkJJmlwY3BfYWxsb3dvcHRp b25zWzBdLnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSwKPiAtKyAgICAgICJOZXZlciByZXBsYWNlIGRl ZmF1bHQgcm91dGUiLCBPUFRfQTJDT1BZLAo+IC0rCQkJCSZpcGNwX3dhbnRvcHRpb25zWzBdLnJl cGxhY2VfZGVmYXVsdF9yb3V0ZSB9LAo+IC0rI2VuZGlmCj4gLSAgICAgeyAicHJveHlhcnAiLCBv X2Jvb2wsICZpcGNwX3dhbnRvcHRpb25zWzBdLnByb3h5X2FycCwKPiAtICAgICAgICJBZGQgcHJv eHkgQVJQIGVudHJ5IiwgT1BUX0VOQUJMRXwxLCAmaXBjcF9hbGxvd29wdGlvbnNbMF0ucHJveHlf YXJwIH0sCj4gLSAgICAgeyAibm9wcm94eWFycCIsIG9fYm9vbCwgJmlwY3BfYWxsb3dvcHRpb25z WzBdLnByb3h5X2FycCwKPiAtQEAgLTI3MSw3ICsyODEsNyBAQCBzdHJ1Y3QgcHJvdGVudCBpcGNw X3Byb3RlbnQgPSB7Cj4gLSAgICAgaXBfYWN0aXZlX3BrdAo+IC0gfTsKPiAtIAo+IC0tc3RhdGlj IHZvaWQgaXBjcF9jbGVhcl9hZGRycyBfX1AoKGludCwgdV9pbnQzMl90LCB1X2ludDMyX3QpKTsK PiAtK3N0YXRpYyB2b2lkIGlwY3BfY2xlYXJfYWRkcnMgX19QKChpbnQsIHVfaW50MzJfdCwgdV9p bnQzMl90LCBib29sKSk7Cj4gLSBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdCBfX1AoKGNoYXIgKiwg aW50KSk7CS8qIFJ1biBhbiB1cC9kb3duIHNjcmlwdCAqLwo+IC0gc3RhdGljIHZvaWQgaXBjcF9z Y3JpcHRfZG9uZSBfX1AoKHZvaWQgKikpOwo+IC0gCj4gLUBAIC0xNzYxLDcgKzE3NzEsMTIgQEAg aXBfZGVtYW5kX2NvbmYodSkKPiAtICAgICBpZiAoIXNpZm5wbW9kZSh1LCBQUFBfSVAsIE5QTU9E RV9RVUVVRSkpCj4gLSAJcmV0dXJuIDA7Cj4gLSAgICAgaWYgKHdvLT5kZWZhdWx0X3JvdXRlKQo+ IC0rI2lmbmRlZiBfX2xpbnV4X18KPiAtIAlpZiAoc2lmZGVmYXVsdHJvdXRlKHUsIHdvLT5vdXJh ZGRyLCB3by0+aGlzYWRkcikpCj4gLSsjZWxzZQo+IC0rCWlmIChzaWZkZWZhdWx0cm91dGUodSwg d28tPm91cmFkZHIsIHdvLT5oaXNhZGRyLAo+IC0rCQkJCQkgICAgd28tPnJlcGxhY2VfZGVmYXVs dF9yb3V0ZSkpCj4gLSsjZW5kaWYKPiAtIAkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbdV0gPSAxOwo+ IC0gICAgIGlmICh3by0+cHJveHlfYXJwKQo+IC0gCWlmIChzaWZwcm94eWFycCh1LCB3by0+aGlz YWRkcikpCj4gLUBAIC0xODQ5LDcgKzE4NjQsOCBAQCBpcGNwX3VwKGYpCj4gLSAgICAgICovCj4g LSAgICAgaWYgKGRlbWFuZCkgewo+IC0gCWlmIChnby0+b3VyYWRkciAhPSB3by0+b3VyYWRkciB8 fCBoby0+aGlzYWRkciAhPSB3by0+aGlzYWRkcikgewo+IC0tCSAgICBpcGNwX2NsZWFyX2FkZHJz KGYtPnVuaXQsIHdvLT5vdXJhZGRyLCB3by0+aGlzYWRkcik7Cj4gLSsJICAgIGlwY3BfY2xlYXJf YWRkcnMoZi0+dW5pdCwgd28tPm91cmFkZHIsIHdvLT5oaXNhZGRyLAo+IC0rCQkJCSAgICAgIHdv LT5yZXBsYWNlX2RlZmF1bHRfcm91dGUpOwo+IC0gCSAgICBpZiAoZ28tPm91cmFkZHIgIT0gd28t Pm91cmFkZHIpIHsKPiAtIAkJd2FybigiTG9jYWwgSVAgYWRkcmVzcyBjaGFuZ2VkIHRvICVJIiwg Z28tPm91cmFkZHIpOwo+IC0gCQlzY3JpcHRfc2V0ZW52KCJPTERJUExPQ0FMIiwgaXBfbnRvYSh3 by0+b3VyYWRkciksIDApOwo+IC1AQCAtMTg3NCw3ICsxODkwLDEyIEBAIGlwY3BfdXAoZikKPiAt IAo+IC0gCSAgICAvKiBhc3NpZ24gYSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggdGhlIGludGVyZmFj ZSBpZiByZXF1aXJlZCAqLwo+IC0gCSAgICBpZiAoaXBjcF93YW50b3B0aW9uc1tmLT51bml0XS5k ZWZhdWx0X3JvdXRlKSAKPiAtKyNpZm5kZWYgX19saW51eF9fCj4gLSAJCWlmIChzaWZkZWZhdWx0 cm91dGUoZi0+dW5pdCwgZ28tPm91cmFkZHIsIGhvLT5oaXNhZGRyKSkKPiAtKyNlbHNlCj4gLSsJ CWlmIChzaWZkZWZhdWx0cm91dGUoZi0+dW5pdCwgZ28tPm91cmFkZHIsIGhvLT5oaXNhZGRyLAo+ IC0rCQkJCQkgICAgIHdvLT5yZXBsYWNlX2RlZmF1bHRfcm91dGUpKQo+IC0rI2VuZGlmCj4gLSAJ CSAgICBkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7Cj4gLSAKPiAtIAkgICAgLyogTWFr ZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCj4gLUBAIC0xOTI0LDcgKzE5NDUs MTIgQEAgaXBjcF91cChmKQo+IC0gCj4gLSAJLyogYXNzaWduIGEgZGVmYXVsdCByb3V0ZSB0aHJv dWdoIHRoZSBpbnRlcmZhY2UgaWYgcmVxdWlyZWQgKi8KPiAtIAlpZiAoaXBjcF93YW50b3B0aW9u c1tmLT51bml0XS5kZWZhdWx0X3JvdXRlKSAKPiAtKyNpZm5kZWYgX19saW51eF9fCj4gLSAJICAg IGlmIChzaWZkZWZhdWx0cm91dGUoZi0+dW5pdCwgZ28tPm91cmFkZHIsIGhvLT5oaXNhZGRyKSkK PiAtKyNlbHNlCj4gLSsJICAgIGlmIChzaWZkZWZhdWx0cm91dGUoZi0+dW5pdCwgZ28tPm91cmFk ZHIsIGhvLT5oaXNhZGRyLAo+IC0rCQkJCQkgd28tPnJlcGxhY2VfZGVmYXVsdF9yb3V0ZSkpCj4g LSsjZW5kaWYKPiAtIAkJZGVmYXVsdF9yb3V0ZV9zZXRbZi0+dW5pdF0gPSAxOwo+IC0gCj4gLSAJ LyogTWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCj4gLUBAIC0yMDAyLDcg KzIwMjgsNyBAQCBpcGNwX2Rvd24oZikKPiAtIAlzaWZucG1vZGUoZi0+dW5pdCwgUFBQX0lQLCBO UE1PREVfRFJPUCk7Cj4gLSAJc2lmZG93bihmLT51bml0KTsKPiAtIAlpcGNwX2NsZWFyX2FkZHJz KGYtPnVuaXQsIGlwY3BfZ290b3B0aW9uc1tmLT51bml0XS5vdXJhZGRyLAo+IC0tCQkJIGlwY3Bf aGlzb3B0aW9uc1tmLT51bml0XS5oaXNhZGRyKTsKPiAtKwkJCSBpcGNwX2hpc29wdGlvbnNbZi0+ dW5pdF0uaGlzYWRkciwgMCk7Cj4gLSAgICAgfQo+IC0gCj4gLSAgICAgLyogRXhlY3V0ZSB0aGUg aXAtZG93biBzY3JpcHQgKi8KPiAtQEAgLTIwMTgsMTYgKzIwNDQsMjUgQEAgaXBjcF9kb3duKGYp Cj4gLSAgKiBwcm94eSBhcnAgZW50cmllcywgZXRjLgo+IC0gICovCj4gLSBzdGF0aWMgdm9pZAo+ IC0taXBjcF9jbGVhcl9hZGRycyh1bml0LCBvdXJhZGRyLCBoaXNhZGRyKQo+IC0raXBjcF9jbGVh cl9hZGRycyh1bml0LCBvdXJhZGRyLCBoaXNhZGRyLCByZXBsYWNlZGVmYXVsdHJvdXRlKQo+IC0g ICAgIGludCB1bml0Owo+IC0gICAgIHVfaW50MzJfdCBvdXJhZGRyOyAgLyogbG9jYWwgYWRkcmVz cyAqLwo+IC0gICAgIHVfaW50MzJfdCBoaXNhZGRyOyAgLyogcmVtb3RlIGFkZHJlc3MgKi8KPiAt KyAgICBib29sIHJlcGxhY2VkZWZhdWx0cm91dGU7Cj4gLSB7Cj4gLSAgICAgaWYgKHByb3h5X2Fy cF9zZXRbdW5pdF0pIHsKPiAtIAljaWZwcm94eWFycCh1bml0LCBoaXNhZGRyKTsKPiAtIAlwcm94 eV9hcnBfc2V0W3VuaXRdID0gMDsKPiAtICAgICB9Cj4gLS0gICAgaWYgKGRlZmF1bHRfcm91dGVf c2V0W3VuaXRdKSB7Cj4gLSsgICAgLyogSWYgcmVwbGFjZWRlZmF1bHRyb3V0ZSwgc2lmZGVmYXVs dHJvdXRlIHdpbGwgYmUgY2FsbGVkIHNvb24KPiAtKyAgICAgKiB3aXRoIHJlcGxhY2VkZWZhdWx0 cm91dGUgc2V0IGFuZCB0aGF0IHdpbGwgb3ZlcndyaXRlIHRoZSBjdXJyZW50Cj4gLSsgICAgICog ZGVmYXVsdCByb3V0ZS4gVGhpcyBpcyB0aGUgY2FzZSBvbmx5IHdoZW4gZG9pbmcgZGVtYW5kLCBv dGhlcndpc2UKPiAtKyAgICAgKiBkdXJpbmcgZGVtYW5kLCB0aGlzIGNpZmRlZmF1bHRyb3V0ZSB3 b3VsZCByZXN0b3JlIHRoZSBvbGQgZGVmYXVsdAo+IC0rICAgICAqIHJvdXRlIHdoaWNoIGlzIG5v dCB3aGF0IHdlIHdhbnQgaW4gdGhpcyBjYXNlLiBJbiB0aGUgbm9uLWRlbWFuZAo+IC0rICAgICAq IGNhc2UsIHdlJ2xsIGRlbGV0ZSB0aGUgZGVmYXVsdCByb3V0ZSBhbmQgcmVzdG9yZSB0aGUgb2xk IGlmIHRoZXJlCj4gLSsgICAgICogaXMgb25lIHNhdmVkIGJ5IGFuIHNpZmRlZmF1bHRyb3V0ZSB3 aXRoIHJlcGxhY2VkZWZhdWx0cm91dGUuCj4gLSsgICAgICovCj4gLSsgICAgaWYgKCFyZXBsYWNl ZGVmYXVsdHJvdXRlICYmIGRlZmF1bHRfcm91dGVfc2V0W3VuaXRdKSB7Cj4gLSAJY2lmZGVmYXVs dHJvdXRlKHVuaXQsIG91cmFkZHIsIGhpc2FkZHIpOwo+IC0gCWRlZmF1bHRfcm91dGVfc2V0W3Vu aXRdID0gMDsKPiAtICAgICB9Cj4gLWRpZmYgLS1naXQgYS9wcHBkL2lwY3AuaCBiL3BwcGQvaXBj cC5oCj4gLWluZGV4IDZjZjE0Yzk5MDU3OC4uN2VjZmE3OWQ4NjY4IDEwMDY0NAo+IC0tLS0gYS9w cHBkL2lwY3AuaAo+IC0rKysgYi9wcHBkL2lwY3AuaAo+IC1AQCAtNzAsNiArNzAsNyBAQCB0eXBl ZGVmIHN0cnVjdCBpcGNwX29wdGlvbnMgewo+IC0gICAgIGJvb2wgb2xkX2FkZHJzOwkJLyogVXNl IG9sZCAoSVAtQWRkcmVzc2VzKSBvcHRpb24/ICovCj4gLSAgICAgYm9vbCByZXFfYWRkcjsJCS8q IEFzayBwZWVyIHRvIHNlbmQgSVAgYWRkcmVzcz8gKi8KPiAtICAgICBib29sIGRlZmF1bHRfcm91 dGU7CQkvKiBBc3NpZ24gZGVmYXVsdCByb3V0ZSB0aHJvdWdoIGludGVyZmFjZT8gKi8KPiAtKyAg ICBib29sIHJlcGxhY2VfZGVmYXVsdF9yb3V0ZTsJLyogUmVwbGFjZSBkZWZhdWx0IHJvdXRlIHRo cm91Z2ggaW50ZXJmYWNlPyAqLwo+IC0gICAgIGJvb2wgcHJveHlfYXJwOwkJLyogTWFrZSBwcm94 eSBBUlAgZW50cnkgZm9yIHBlZXI/ICovCj4gLSAgICAgYm9vbCBuZWdfdmo7CQkvKiBWYW4gSmFj b2Jzb24gQ29tcHJlc3Npb24/ICovCj4gLSAgICAgYm9vbCBvbGRfdmo7CQkvKiB1c2Ugb2xkIChz aG9ydCkgZm9ybSBvZiBWSiBvcHRpb24/ICovCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuOCBi L3BwcGQvcHBwZC44Cj4gLWluZGV4IGVjOGJmZDVjMDYxNy4uNDgxYWE4YmU2NzJiIDEwMDY0NAo+ IC0tLS0gYS9wcHBkL3BwcGQuOAo+IC0rKysgYi9wcHBkL3BwcGQuOAo+IC1AQCAtMTIxLDYgKzEy MSwxMSBAQCB0aGUgZ2F0ZXdheSwgd2hlbiBJUENQIG5lZ290aWF0aW9uIGlzIHN1Y2Nlc3NmdWxs eSBjb21wbGV0ZWQuCj4gLSBUaGlzIGVudHJ5IGlzIHJlbW92ZWQgd2hlbiB0aGUgUFBQIGNvbm5l Y3Rpb24gaXMgYnJva2VuLiAgVGhpcyBvcHRpb24KPiAtIGlzIHByaXZpbGVnZWQgaWYgdGhlIFxm SW5vZGVmYXVsdHJvdXRlXGZSIG9wdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQuCj4gLSAuVFAKPiAt Ky5CIHJlcGxhY2VkZWZhdWx0cm91dGUKPiAtK1RoaXMgb3B0aW9uIGlzIGEgZmxhZyB0byB0aGUg ZGVmYXVsdHJvdXRlIG9wdGlvbi4gSWYgZGVmYXVsdHJvdXRlIGlzCj4gLStzZXQgYW5kIHRoaXMg ZmxhZyBpcyBhbHNvIHNldCwgcHBwZCByZXBsYWNlcyBhbiBleGlzdGluZyBkZWZhdWx0IHJvdXRl Cj4gLSt3aXRoIHRoZSBuZXcgZGVmYXVsdCByb3V0ZS4KPiAtKy5UUAo+IC0gLkIgZGlzY29ubmVj dCBcZklzY3JpcHQKPiAtIEV4ZWN1dGUgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFxmSXNjcmlw dFxmUiwgYnkgcGFzc2luZyBpdCB0byBhCj4gLSBzaGVsbCwgYWZ0ZXIKPiAtQEAgLTczOSw3ICs3 NDQsMTIgQEAgZGlzYWJsZSBib3RoIGZvcm1zIG9mIGhhcmR3YXJlIGZsb3cgY29udHJvbC4KPiAt IC5UUAo+IC0gLkIgbm9kZWZhdWx0cm91dGUKPiAtIERpc2FibGUgdGhlIFxmSWRlZmF1bHRyb3V0 ZVxmUiBvcHRpb24uICBUaGUgc3lzdGVtIGFkbWluaXN0cmF0b3Igd2hvCj4gLS13aXNoZXMgdG8g cHJldmVudCB1c2VycyBmcm9tIGNyZWF0aW5nIGRlZmF1bHQgcm91dGVzIHdpdGggcHBwZAo+IC0r d2lzaGVzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSBhZGRpbmcgYSBkZWZhdWx0IHJvdXRlIHdpdGgg cHBwZAo+IC0rY2FuIGRvIHNvIGJ5IHBsYWNpbmcgdGhpcyBvcHRpb24gaW4gdGhlIC9ldGMvcHBw L29wdGlvbnMgZmlsZS4KPiAtKy5UUAo+IC0rLkIgbm9yZXBsYWNlZGVmYXVsdHJvdXRlCj4gLStE aXNhYmxlIHRoZSBcZklyZXBsYWNlZGVmYXVsdHJvdXRlXGZSIG9wdGlvbi4gVGhlIHN5c3RlbSBh ZG1pbmlzdHJhdG9yIHdobwo+IC0rd2lzaGVzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSByZXBsYWNp bmcgYSBkZWZhdWx0IHJvdXRlIHdpdGggcHBwZAo+IC0gY2FuIGRvIHNvIGJ5IHBsYWNpbmcgdGhp cyBvcHRpb24gaW4gdGhlIC9ldGMvcHBwL29wdGlvbnMgZmlsZS4KPiAtIC5UUAo+IC0gLkIgbm9k ZWZsYXRlCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCj4gLWluZGV4 IDFhMWJmMGI5OTU4Mi4uNzQ5NWRmNjU3ZmU5IDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BwcGQuaAo+ IC0rKysgYi9wcHBkL3BwcGQuaAo+IC1AQCAtNjc2LDcgKzY3NiwxMSBAQCBpbnQgIHNpZjZhZGRy IF9fUCgoaW50LCBldWk2NF90LCBldWk2NF90KSk7Cj4gLSBpbnQgIGNpZjZhZGRyIF9fUCgoaW50 LCBldWk2NF90LCBldWk2NF90KSk7Cj4gLSAJCQkJLyogUmVtb3ZlIGFuIElQdjYgYWRkcmVzcyBm cm9tIGkvZiAqLwo+IC0gI2VuZGlmCj4gLSsjaWZuZGVmIF9fbGludXhfXwo+IC0gaW50ICBzaWZk ZWZhdWx0cm91dGUgX19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90KSk7Cj4gLSsjZWxzZQo+ IC0raW50ICBzaWZkZWZhdWx0cm91dGUgX19QKChpbnQsIHVfaW50MzJfdCwgdV9pbnQzMl90LCBi b29sIHJlcGxhY2VfZGVmYXVsdF9ydCkpOwo+IC0rI2VuZGlmCj4gLSAJCQkJLyogQ3JlYXRlIGRl ZmF1bHQgcm91dGUgdGhyb3VnaCBpL2YgKi8KPiAtIGludCAgY2lmZGVmYXVsdHJvdXRlIF9fUCgo aW50LCB1X2ludDMyX3QsIHVfaW50MzJfdCkpOwo+IC0gCQkJCS8qIERlbGV0ZSBkZWZhdWx0IHJv dXRlIHRocm91Z2ggaS9mICovCj4gLWRpZmYgLS1naXQgYS9wcHBkL3N5cy1saW51eC5jIGIvcHBw ZC9zeXMtbGludXguYwo+IC1pbmRleCA2ZDI5ZGM4ZTg1OTQuLjNmMGJiYzMzYzYwNSAxMDA2NDQK PiAtLS0tIGEvcHBwZC9zeXMtbGludXguYwo+IC0rKysgYi9wcHBkL3N5cy1saW51eC5jCj4gLUBA IC0yMDcsNiArMjA3LDggQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5idWZbNTEyXTsgLyogYnVm ZmVyIGZvciBjaGFycyByZWFkIGZyb20gbG9vcGJhY2sgKi8KPiAtIHN0YXRpYyBpbnQJaWZfaXNf dXA7CS8qIEludGVyZmFjZSBoYXMgYmVlbiBtYXJrZWQgdXAgKi8KPiAtIHN0YXRpYyBpbnQJaWY2 X2lzX3VwOwkvKiBJbnRlcmZhY2UgaGFzIGJlZW4gbWFya2VkIHVwIGZvciBJUHY2LCB0byBoZWxw IGRpZmZlcmVudGlhdGUgKi8KPiAtIHN0YXRpYyBpbnQJaGF2ZV9kZWZhdWx0X3JvdXRlOwkvKiBH YXRld2F5IGZvciBkZWZhdWx0IHJvdXRlIGFkZGVkICovCj4gLStzdGF0aWMgc3RydWN0IHJ0ZW50 cnkgb2xkX2RlZl9ydDsgICAgICAgLyogT2xkIGRlZmF1bHQgcm91dGUgKi8KPiAtK3N0YXRpYyBp bnQgICAgICAgZGVmYXVsdF9ydF9yZXBsX3Jlc3Q7ICAvKiByZXBsYWNlIGFuZCByZXN0b3JlIG9s ZCBkZWZhdWx0IHJ0ICovCj4gLSBzdGF0aWMgdV9pbnQzMl90IHByb3h5X2FycF9hZGRyOwkvKiBB ZGRyIGZvciBwcm94eSBhcnAgZW50cnkgYWRkZWQgKi8KPiAtIHN0YXRpYyBjaGFyIHByb3h5X2Fy cF9kZXZbMTZdOwkJLyogRGV2aWNlIGZvciBwcm94eSBhcnAgZW50cnkgKi8KPiAtIHN0YXRpYyB1 X2ludDMyX3Qgb3VyX29sZF9hZGRyOwkJLyogZm9yIGRldGVjdGluZyBhZGRyZXNzIGNoYW5nZXMg Ki8KPiAtQEAgLTE1NjcsNiArMTU2OSw5IEBAIHN0YXRpYyBpbnQgcmVhZF9yb3V0ZV90YWJsZShz dHJ1Y3QgcnRlbnRyeSAqcnQpCj4gLSAJcCA9IE5VTEw7Cj4gLSAgICAgfQo+IC0gCj4gLSsgICAg U0VUX1NBX0ZBTUlMWSAocnQtPnJ0X2RzdCwgICAgIEFGX0lORVQpOwo+IC0rICAgIFNFVF9TQV9G QU1JTFkgKHJ0LT5ydF9nYXRld2F5LCBBRl9JTkVUKTsKPiAtKwo+IC0gICAgIFNJTl9BRERSKHJ0 LT5ydF9kc3QpID0gc3RydG91bChjb2xzW3JvdXRlX2Rlc3RfY29sXSwgTlVMTCwgMTYpOwo+IC0g ICAgIFNJTl9BRERSKHJ0LT5ydF9nYXRld2F5KSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9nd19jb2xd LCBOVUxMLCAxNik7Cj4gLSAgICAgU0lOX0FERFIocnQtPnJ0X2dlbm1hc2spID0gc3RydG91bChj b2xzW3JvdXRlX21hc2tfY29sXSwgTlVMTCwgMTYpOwo+IC1AQCAtMTYzNiwyMiArMTY0MSw1MyBA QCBpbnQgaGF2ZV9yb3V0ZV90byh1X2ludDMyX3QgYWRkcikKPiAtIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+IC0g ICoKPiAtICAqIHNpZmRlZmF1bHRyb3V0ZSAtIGFzc2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3Vn aCB0aGUgYWRkcmVzcyBnaXZlbi4KPiAtLSAqLwo+IC0tCj4gLS1pbnQgc2lmZGVmYXVsdHJvdXRl IChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFkZHIsIHVfaW50MzJfdCBnYXRld2F5KQo+IC0tewo+ IC0tICAgIHN0cnVjdCBydGVudHJ5IHJ0Owo+IC0tCj4gLS0gICAgaWYgKGRlZmF1bHRyb3V0ZV9l eGlzdHMoJnJ0KSAmJiBzdHJjbXAocnQucnRfZGV2LCBpZm5hbWUpICE9IDApIHsKPiAtLQlpZiAo cnQucnRfZmxhZ3MgJiBSVEZfR0FURVdBWSkKPiAtLQkgICAgZXJyb3IoIm5vdCByZXBsYWNpbmcg ZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSB2aWEgJUkiLAo+IC0tCQkgIFNJTl9BRERSKHJ0LnJ0X2dh dGV3YXkpKTsKPiAtLQllbHNlCj4gLS0JICAgIGVycm9yKCJub3QgcmVwbGFjaW5nIGV4aXN0aW5n IGRlZmF1bHQgcm91dGUgdGhyb3VnaCAlcyIsCj4gLS0JCSAgcnQucnRfZGV2KTsKPiAtLQlyZXR1 cm4gMDsKPiAtKyAqCj4gLSsgKiBJZiB0aGUgZ2xvYmFsIGRlZmF1bHRfcnRfcmVwbF9yZXN0IGZs YWcgaXMgc2V0LCB0aGVuIHRoaXMgZnVuY3Rpb24KPiAtKyAqIGFscmVhZHkgcmVwbGFjZWQgdGhl IG9yaWdpbmFsIHN5c3RlbSBkZWZhdWx0cm91dGUgd2l0aCBzb21lIG90aGVyCj4gLSsgKiByb3V0 ZSBhbmQgaXQgc2hvdWxkIGp1c3QgcmVwbGFjZSB0aGUgY3VycmVudCBkZWZhdWx0cm91dGUgd2l0 aAo+IC0rICogYW5vdGhlciBvbmUsIHdpdGhvdXQgc2F2aW5nIHRoZSBjdXJyZW50IHJvdXRlLiBV c2U6IGRlbWFuZCBtb2RlLAo+IC0rICogd2hlbiBwcHBkIHNldHMgZmlyc3QgYSBkZWZhdWx0cm91 dGUgaXQgaXQncyB0ZW1wb3JhcnkgcHBwMCBhZGRyZXNzZXMKPiAtKyAqIGFuZCB0aGVuIGNoYW5n ZXMgdGhlIHRlbXBvcmFyeSBhZGRyZXNzZXMgdG8gdGhlIGFkZHJlc3NlcyBmb3IgdGhlIHJlYWwK PiAtKyAqIHBwcCBjb25uZWN0aW9uIHdoZW4gaXQgaGFzIGNvbWUgdXAuCj4gLSsgKi8KPiAtKwo+ IC0raW50IHNpZmRlZmF1bHRyb3V0ZSAoaW50IHVuaXQsIHVfaW50MzJfdCBvdXJhZGRyLCB1X2lu dDMyX3QgZ2F0ZXdheSwgYm9vbCByZXBsYWNlKQo+IC0rewo+IC0rICAgIHN0cnVjdCBydGVudHJ5 IHJ0LCB0bXBfcnQ7Cj4gLSsgICAgc3RydWN0IHJ0ZW50cnkgKmRlbF9ydCA9IE5VTEw7Cj4gLSsK PiAtKyAgICBpZiAoZGVmYXVsdF9ydF9yZXBsX3Jlc3QpIHsKPiAtKyAgICAgICAvKiBXZSBoYXZl IGFscmVhZHkgcmVjbGFjZWQgdGhlIG9yaWdpbmFsIGRlZmF1bHRyb3V0ZSwgaWYgd2UKPiAtKyAg ICAgICAgICogYXJlIGNhbGxlZCBhZ2Fpbiwgd2Ugd2lsbCBkZWxldGUgdGhlIGN1cnJlbnQgZGVm YXVsdCByb3V0ZQo+IC0rICAgICAgICAgKiBhbmQgc2V0IHRoZSBuZXcgZGVmYXVsdCByb3V0ZSBp biB0aGlzIGZ1bmN0aW9uLgo+IC0rICAgICAgICAgKiAtIHRoaXMgaXMgbm9ybWFsbHkgb25seSB0 aGUgY2FzZSB0aGUgZG9pbmcgZGVtYW5kOiAqLwo+IC0rICAgICAgIGlmIChkZWZhdWx0cm91dGVf ZXhpc3RzKCAmdG1wX3J0ICkpCj4gLSsgICAgICAgICAgICAgICBkZWxfcnQgPSAmdG1wX3J0Owo+ IC0rICAgIH0gZWxzZSBpZiAoIGRlZmF1bHRyb3V0ZV9leGlzdHMoICZvbGRfZGVmX3J0ICAgICAg ICAgICAgICAgICkgJiYKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoICBv bGRfZGVmX3J0LnJ0X2RldiwgaWZuYW1lICkgIT0gMCkgewo+IC0rICAgICAgIC8qIFdlIGRpZCBu b3QgeWV0IHJlcGxhY2UgYW4gZXhpc3RpbmcgZGVmYXVsdCByb3V0ZSwgbGV0J3MKPiAtKyAgICAg ICAgKiBjaGVjayBpZiB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVwbGFjZSBhIGRlZmF1bHQgcm91dGU6 Cj4gLSsgICAgICAgICAqLwo+IC0rICAgICAgIHVfaW50MzJfdCBvbGRfZ2F0ZXdheSA9IFNJTl9B RERSKG9sZF9kZWZfcnQucnRfZ2F0ZXdheSk7Cj4gLSsKPiAtKyAgICAgICBpZiAob2xkX2dhdGV3 YXkgIT0gZ2F0ZXdheSkgewo+IC0rICAgICAgICAgICBpZiAoIXJlcGxhY2UpIHsKPiAtKyAgICAg ICAgICAgICAgIGVycm9yKCJub3QgcmVwbGFjaW5nIGRlZmF1bHQgcm91dGUgdG8gJXMgWyVJXSIs Cj4gLSsgICAgICAgICAgICAgICAgICAgICAgIG9sZF9kZWZfcnQucnRfZGV2LCBvbGRfZ2F0ZXdh eSk7Cj4gLSsgICAgICAgICAgICAgICByZXR1cm4gMDsKPiAtKyAgICAgICAgICAgfSBlbHNlIHsK PiAtKyAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gY29weSBydF9kZXYgYmVjYXVzZSB3ZSBu ZWVkIGl0IHBlcm1hbmVudCB0b286Cj4gLSsgICAgICAgICAgICAgICBjaGFyICogdG1wX2RldiA9 IG1hbGxvYyhzdHJsZW4ob2xkX2RlZl9ydC5ydF9kZXYpKzEpOwo+IC0rICAgICAgICAgICAgICAg c3RyY3B5KHRtcF9kZXYsIG9sZF9kZWZfcnQucnRfZGV2KTsKPiAtKyAgICAgICAgICAgICAgIG9s ZF9kZWZfcnQucnRfZGV2ID0gdG1wX2RldjsKPiAtKwo+IC0rICAgICAgICAgICAgICAgbm90aWNl KCJyZXBsYWNpbmcgb2xkIGRlZmF1bHQgcm91dGUgdG8gJXMgWyVJXSIsCj4gLSsgICAgICAgICAg ICAgICAgICAgICAgIG9sZF9kZWZfcnQucnRfZGV2LCBvbGRfZ2F0ZXdheSk7Cj4gLSsgICAgICAg ICAgICAgICBkZWZhdWx0X3J0X3JlcGxfcmVzdCA9IDE7Cj4gLSsgICAgICAgICAgICAgICBkZWxf cnQgPSAmb2xkX2RlZl9ydDsKPiAtKyAgICAgICAgICAgfQo+IC0rICAgICAgIH0KPiAtICAgICB9 Cj4gLS0KPiAtICAgICBtZW1zZXQgKCZydCwgMCwgc2l6ZW9mIChydCkpOwo+IC0gICAgIFNFVF9T QV9GQU1JTFkgKHJ0LnJ0X2RzdCwgQUZfSU5FVCk7Cj4gLSAKPiAtQEAgLTE2NjgsNiArMTcwNCwx MiBAQCBpbnQgc2lmZGVmYXVsdHJvdXRlIChpbnQgdW5pdCwgdV9pbnQzMl90IG91cmFkZHIsIHVf aW50MzJfdCBnYXRld2F5KQo+IC0gCSAgICBlcnJvcigiZGVmYXVsdCByb3V0ZSBpb2N0bChTSU9D QUREUlQpOiAlbSIpOwo+IC0gCXJldHVybiAwOwo+IC0gICAgIH0KPiAtKyAgICBpZiAoZGVmYXVs dF9ydF9yZXBsX3Jlc3QgJiYgZGVsX3J0KQo+IC0rICAgICAgICBpZiAoaW9jdGwoc29ja19mZCwg U0lPQ0RFTFJULCBkZWxfcnQpIDwgMCkgewo+IC0rCSAgICBpZiAoICEgb2tfZXJyb3IgKCBlcnJu byApKQo+IC0rCSAgICAgICAgZXJyb3IoImRlbCBvbGQgZGVmYXVsdCByb3V0ZSBpb2N0bChTSU9D REVMUlQpOiAlbSglZCkiLCBlcnJubyk7Cj4gLSsJICAgIHJldHVybiAwOwo+IC0rICAgICAgICB9 Cj4gLSAKPiAtICAgICBoYXZlX2RlZmF1bHRfcm91dGUgPSAxOwo+IC0gICAgIHJldHVybiAxOwo+ IC1AQCAtMTcwMyw2ICsxNzQ1LDE2IEBAIGludCBjaWZkZWZhdWx0cm91dGUgKGludCB1bml0LCB1 X2ludDMyX3Qgb3VyYWRkciwgdV9pbnQzMl90IGdhdGV3YXkpCj4gLSAJICAgIHJldHVybiAwOwo+ IC0gCX0KPiAtICAgICB9Cj4gLSsgICAgaWYgKGRlZmF1bHRfcnRfcmVwbF9yZXN0KSB7Cj4gLSsJ bm90aWNlKCJyZXN0b3Jpbmcgb2xkIGRlZmF1bHQgcm91dGUgdG8gJXMgWyVJXSIsCj4gLSsJCQlv bGRfZGVmX3J0LnJ0X2RldiwgU0lOX0FERFIob2xkX2RlZl9ydC5ydF9nYXRld2F5KSk7Cj4gLSsg ICAgICAgIGlmIChpb2N0bChzb2NrX2ZkLCBTSU9DQUREUlQsICZvbGRfZGVmX3J0KSA8IDApIHsK PiAtKwkgICAgaWYgKCAhIG9rX2Vycm9yICggZXJybm8gKSkKPiAtKwkgICAgICAgIGVycm9yKCJy ZXN0b3JlIGRlZmF1bHQgcm91dGUgaW9jdGwoU0lPQ0FERFJUKTogJW0oJWQpIiwgZXJybm8pOwo+ IC0rCSAgICByZXR1cm4gMDsKPiAtKyAgICAgICAgfQo+IC0rICAgICAgICBkZWZhdWx0X3J0X3Jl cGxfcmVzdCA9IDA7Cj4gLSsgICAgfQo+IC0gCj4gLSAgICAgcmV0dXJuIDE7Cj4gLSB9Cj4gZGlm ZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMjktYWRkLXN1cHBvcnQtZm9yLXRoZS1GcmFt ZWQtTVRVLVJhZGl1cy1hdHRyaWJ1dGUucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFk ZC1zdXBwb3J0LWZvci10aGUtRnJhbWVkLU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoCj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggM2NkMWI3OGU3MDEyLi4wMDAwMDAwMDAwMDAK PiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI5LWFkZC1zdXBwb3J0LWZvci10aGUtRnJhbWVk LU1UVS1SYWRpdXMtYXR0cmlidXRlLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDQyICsw LDAgQEAKPiAtRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+ Cj4gLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKPiAtU3ViamVjdDogW1BB VENIXSBhZGQgc3VwcG9ydCBmb3IgdGhlIEZyYW1lZC1NVFUgUmFkaXVzIGF0dHJpYnV0ZQo+IC0K PiAtaHR0cDovL3BwcC5zYW1iYS5vcmcvY2dpLWJpbi9wcHAtYnVncy9pbmNvbWluZz9pZD0xNTMy Cj4gLQo+IC1Gcm9tOiBrbGVwaWtvdl9hQHVwLnVhCj4gLVRvOiBwcHAtYnVnc0BwcHAuc2FtYmEu b3JnCj4gLVN1YmplY3Q6IFJhZGl1cyBwbHVnaW4gZG9lcyBub3Qgc2V0IE1UVSBvbiBwcHAgaW50 ZXJmYWNlCj4gLURhdGU6IE1vbiwgMjIgSmFuIDIwMDcgMTI6MzY6NTkgKzAwMDAgKEdNVCkKPiAt Cj4gLUZ1bGxfTmFtZTogQWxleGFuZGVyIEtsZXBpa292Cj4gLVZlcnNpb246IDIuNC4zCj4gLU9T OiByaGwgNy4zICgyLjQuMjAtMjguN2JpZ21lbSkKPiAtU3VibWlzc2lvbiBmcm9tOiAoTlVMTCkg KDIxMy4xMzAuMjEuNzMpCj4gLQo+IC0KPiAtVGhpcyBwYXRjaCBhbGxvd3MgcmFkaXVzIHBsdWdp biB0byBkZWFsIHdpdGggRnJhbWVkLU1UVSBSYWRpdXMgYXR0cmlidXRlIGFuZCB0bwo+IC1zZXQg TVRVIG9uIGludGVyZmFjZS4KPiAtCj4gLQo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQu MS5kZWJpYW4udGFyLnh6Cj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0u b2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBwcHBkL3BsdWdpbnMvcmFkaXVzL3Jh ZGl1cy5jIHwgMyArKysKPiAtIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKPiAtCj4g LWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcmFkaXVzL3JhZGl1cy5jIGIvcHBwZC9wbHVnaW5z L3JhZGl1cy9yYWRpdXMuYwo+IC1pbmRleCA0YmE1ZjUyM2VhMDcuLjA2ZTAwNTkwYjYzNSAxMDA2 NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMuYwo+IC0rKysgYi9wcHBkL3Bs dWdpbnMvcmFkaXVzL3JhZGl1cy5jCj4gLUBAIC02NTEsNiArNjUxLDkgQEAgcmFkaXVzX3NldHBh cmFtcyhWQUxVRV9QQUlSICp2cCwgY2hhciAqbXNnLCBSRVFVRVNUX0lORk8gKnJlcV9pbmZvLAo+ IC0gCQkgICAgbWVtY3B5KHJzdGF0ZS5jbGFzcywgdnAtPnN0cnZhbHVlLCByc3RhdGUuY2xhc3Nf bGVuKTsKPiAtIAkJfSAvKiBlbHNlIHRvbyBiaWcgZm9yIG91ciBidWZmZXIgLSBpZ25vcmUgaXQg Ki8KPiAtIAkJYnJlYWs7Cj4gLSsJICAgIGNhc2UgUFdfRlJBTUVEX01UVToKPiAtKwkJbmV0aWZf c2V0X210dShyc3RhdGUuY2xpZW50X3BvcnQsTUlOKG5ldGlmX2dldF9tdHUocnN0YXRlLmNsaWVu dF9wb3J0KSx2cC0+bHZhbHVlKSk7Cj4gLSsJCWJyZWFrOwo+IC0gCSAgICB9Cj4gLSAKPiAtIAo+ IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMwLTAxOF9pcC11cF9vcHRpb24ucGF0 Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDMwLTAxOF9pcC11cF9vcHRpb24ucGF0Y2gKPiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwNmNiMmU1YmIzYTYuLjAwMDAwMDAwMDAwMAo+ IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzAtMDE4X2lwLXVwX29wdGlvbi5wYXRjaAo+ICsr KyAvZGV2L251bGwKPiBAQCAtMSwxMDYgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2gg PG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODox MTo0OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIDAxOF9pcCB1cF9vcHRpb24KPiAtCj4gLUlt cG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1v ZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0K PiAtIHBwcGQvaXBjcC5jICAgIHwgOCArKysrLS0tLQo+IC0gcHBwZC9tYWluLmMgICAgfCAzICsr Kwo+IC0gcHBwZC9vcHRpb25zLmMgfCA5ICsrKysrKysrKwo+IC0gcHBwZC9wcHBkLmggICAgfCAy ICsrCj4gLSA0IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p Cj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9pcGNwLmMgYi9wcHBkL2lwY3AuYwo+IC1pbmRleCBk Y2VjYTgwNzU0MmEuLmQ2ZTBlMmE2OTlmZSAxMDA2NDQKPiAtLS0tIGEvcHBwZC9pcGNwLmMKPiAt KysrIGIvcHBwZC9pcGNwLmMKPiAtQEAgLTE5ODQsNyArMTk4NCw3IEBAIGlwY3BfdXAoZikKPiAt ICAgICAgKi8KPiAtICAgICBpZiAoaXBjcF9zY3JpcHRfc3RhdGUgPT0gc19kb3duICYmIGlwY3Bf c2NyaXB0X3BpZCA9PSAwKSB7Cj4gLSAJaXBjcF9zY3JpcHRfc3RhdGUgPSBzX3VwOwo+IC0tCWlw Y3Bfc2NyaXB0KF9QQVRIX0lQVVAsIDApOwo+IC0rCWlwY3Bfc2NyaXB0KHBhdGhfaXB1cCwgMCk7 Cj4gLSAgICAgfQo+IC0gfQo+IC0gCj4gLUBAIC0yMDM0LDcgKzIwMzQsNyBAQCBpcGNwX2Rvd24o ZikKPiAtICAgICAvKiBFeGVjdXRlIHRoZSBpcC1kb3duIHNjcmlwdCAqLwo+IC0gICAgIGlmIChp cGNwX3NjcmlwdF9zdGF0ZSA9PSBzX3VwICYmIGlwY3Bfc2NyaXB0X3BpZCA9PSAwKSB7Cj4gLSAJ aXBjcF9zY3JpcHRfc3RhdGUgPSBzX2Rvd247Cj4gLS0JaXBjcF9zY3JpcHQoX1BBVEhfSVBET1dO LCAwKTsKPiAtKwlpcGNwX3NjcmlwdChwYXRoX2lwZG93biwgMCk7Cj4gLSAgICAgfQo+IC0gfQo+ IC0gCj4gLUBAIC0yMDk3LDEzICsyMDk3LDEzIEBAIGlwY3Bfc2NyaXB0X2RvbmUoYXJnKQo+IC0g ICAgIGNhc2Ugc191cDoKPiAtIAlpZiAoaXBjcF9mc21bMF0uc3RhdGUgIT0gT1BFTkVEKSB7Cj4g LSAJICAgIGlwY3Bfc2NyaXB0X3N0YXRlID0gc19kb3duOwo+IC0tCSAgICBpcGNwX3NjcmlwdChf UEFUSF9JUERPV04sIDApOwo+IC0rCSAgICBpcGNwX3NjcmlwdChwYXRoX2lwZG93biwgMCk7Cj4g LSAJfQo+IC0gCWJyZWFrOwo+IC0gICAgIGNhc2Ugc19kb3duOgo+IC0gCWlmIChpcGNwX2ZzbVsw XS5zdGF0ZSA9PSBPUEVORUQpIHsKPiAtIAkgICAgaXBjcF9zY3JpcHRfc3RhdGUgPSBzX3VwOwo+ IC0tCSAgICBpcGNwX3NjcmlwdChfUEFUSF9JUFVQLCAwKTsKPiAtKwkgICAgaXBjcF9zY3JpcHQo cGF0aF9pcHVwLCAwKTsKPiAtIAl9Cj4gLSAJYnJlYWs7Cj4gLSAgICAgfQo+IC1kaWZmIC0tZ2l0 IGEvcHBwZC9tYWluLmMgYi9wcHBkL21haW4uYwo+IC1pbmRleCBlZDU0NDMxNWMxZGYuLjkxNjRh MWViMGY5NSAxMDA2NDQKPiAtLS0tIGEvcHBwZC9tYWluLmMKPiAtKysrIGIvcHBwZC9tYWluLmMK PiAtQEAgLTMwOCw2ICszMDgsOSBAQCBtYWluKGFyZ2MsIGFyZ3YpCj4gLSAgICAgc3RydWN0IHBy b3RlbnQgKnByb3RwOwo+IC0gICAgIGNoYXIgbnVtYnVmWzE2XTsKPiAtIAo+IC0rICAgIHN0cmxj cHkocGF0aF9pcHVwLCBfUEFUSF9JUFVQLCBzaXplb2YocGF0aF9pcHVwKSk7Cj4gLSsgICAgc3Ry bGNweShwYXRoX2lwZG93biwgX1BBVEhfSVBET1dOLCBzaXplb2YocGF0aF9pcGRvd24pKTsKPiAt Kwo+IC0gICAgIGxpbmtfc3RhdHNfdmFsaWQgPSAwOwo+IC0gICAgIG5ld19waGFzZShQSEFTRV9J TklUSUFMSVpFKTsKPiAtIAo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29w dGlvbnMuYwo+IC1pbmRleCA5MWRhNTE1YWM1MzMuLmE4ZjNhYTQ1OTBhMyAxMDA2NDQKPiAtLS0t IGEvcHBwZC9vcHRpb25zLmMKPiAtKysrIGIvcHBwZC9vcHRpb25zLmMKPiAtQEAgLTExNCw2ICsx MTQsOCBAQCBjaGFyCWxpbmtuYW1lW01BWFBBVEhMRU5dOwkvKiBsb2dpY2FsIG5hbWUgZm9yIGxp bmsgKi8KPiAtIGJvb2wJdHVuZV9rZXJuZWw7CQkvKiBtYXkgYWx0ZXIga2VybmVsIHNldHRpbmdz ICovCj4gLSBpbnQJY29ubmVjdF9kZWxheSA9IDEwMDA7CS8qIHdhaXQgdGhpcyBtYW55IG1zIGFm dGVyIGNvbm5lY3Qgc2NyaXB0ICovCj4gLSBpbnQJcmVxX3VuaXQgPSAtMTsJCS8qIHJlcXVlc3Rl ZCBpbnRlcmZhY2UgdW5pdCAqLwo+IC0rY2hhcglwYXRoX2lwdXBbTUFYUEFUSExFTl07CS8qIHBh dGhuYW1lIG9mIGlwLXVwIHNjcmlwdCAqLwo+IC0rY2hhcglwYXRoX2lwZG93bltNQVhQQVRITEVO XTsvKiBwYXRobmFtZSBvZiBpcC1kb3duIHNjcmlwdCAqLwo+IC0gY2hhcglyZXFfaWZuYW1lW01B WElGTkFNRUxFTl07CS8qIHJlcXVlc3RlZCBpbnRlcmZhY2UgbmFtZSAqLwo+IC0gYm9vbAltdWx0 aWxpbmsgPSAwOwkJLyogRW5hYmxlIG11bHRpbGluayBvcGVyYXRpb24gKi8KPiAtIGNoYXIJKmJ1 bmRsZV9uYW1lID0gTlVMTDsJLyogYnVuZGxlIG5hbWUgZm9yIG11bHRpbGluayAqLwo+IC1AQCAt MzA0LDYgKzMwNiwxMyBAQCBvcHRpb25fdCBnZW5lcmFsX29wdGlvbnNbXSA9IHsKPiAtICAgICAg ICJVbnNldCB1c2VyIGVudmlyb25tZW50IHZhcmlhYmxlIiwKPiAtICAgICAgIE9QVF9BMlBSSU5U RVIgfCBPUFRfTk9QUklOVCwgKHZvaWQgKil1c2VyX3Vuc2V0cHJpbnQgfSwKPiAtIAo+IC0rICAg IHsgImlwLXVwLXNjcmlwdCIsIG9fc3RyaW5nLCBwYXRoX2lwdXAsCj4gLSsgICAgICAiU2V0IHBh dGhuYW1lIG9mIGlwLXVwIHNjcmlwdCIsCj4gLSsgICAgICBPUFRfUFJJVnxPUFRfU1RBVElDLCBO VUxMLCBNQVhQQVRITEVOIH0sCj4gLSsgICAgeyAiaXAtZG93bi1zY3JpcHQiLCBvX3N0cmluZywg cGF0aF9pcGRvd24sCj4gLSsgICAgICAiU2V0IHBhdGhuYW1lIG9mIGlwLWRvd24gc2NyaXB0IiwK PiAtKyAgICAgIE9QVF9QUklWfE9QVF9TVEFUSUMsIE5VTEwsIE1BWFBBVEhMRU4gfSwKPiAtKwo+ IC0gI2lmZGVmIEhBVkVfTVVMVElMSU5LCj4gLSAgICAgeyAibXVsdGlsaW5rIiwgb19ib29sLCAm bXVsdGlsaW5rLAo+IC0gICAgICAgIkVuYWJsZSBtdWx0aWxpbmsgb3BlcmF0aW9uIiwgT1BUX1BS SU8gfCAxIH0sCj4gLWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCj4gLWlu ZGV4IGU2NTEwNmQ0YzEyNi4uYjExNjcwNTg2MjQ0IDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BwcGQu aAo+IC0rKysgYi9wcHBkL3BwcGQuaAo+IC1AQCAtMzI4LDYgKzMyOCw4IEBAIGV4dGVybiBib29s CXR1bmVfa2VybmVsOwkvKiBNYXkgYWx0ZXIga2VybmVsIHNldHRpbmdzIGFzIG5lY2Vzc2FyeSAq Lwo+IC0gZXh0ZXJuIGludAljb25uZWN0X2RlbGF5OwkvKiBUaW1lIHRvIGRlbGF5IGFmdGVyIGNv bm5lY3Qgc2NyaXB0ICovCj4gLSBleHRlcm4gaW50CW1heF9kYXRhX3JhdGU7CS8qIG1heCBieXRl cy9zZWMgdGhyb3VnaCBjaGFyc2h1bnQgKi8KPiAtIGV4dGVybiBpbnQJcmVxX3VuaXQ7CS8qIGlu dGVyZmFjZSB1bml0IG51bWJlciB0byB1c2UgKi8KPiAtK2V4dGVybiBjaGFyCXBhdGhfaXB1cFtN QVhQQVRITEVOXTsgLyogcGF0aG5hbWUgb2YgaXAtdXAgc2NyaXB0ICovCj4gLStleHRlcm4gY2hh cglwYXRoX2lwZG93bltNQVhQQVRITEVOXTsgLyogcGF0aG5hbWUgb2YgaXAtZG93biBzY3JpcHQg Ki8KPiAtIGV4dGVybiBjaGFyCXJlcV9pZm5hbWVbTUFYSUZOQU1FTEVOXTsgLyogaW50ZXJmYWNl IG5hbWUgdG8gdXNlICovCj4gLSBleHRlcm4gYm9vbAltdWx0aWxpbms7CS8qIGVuYWJsZSBtdWx0 aWxpbmsgb3BlcmF0aW9uICovCj4gLSBleHRlcm4gYm9vbAlub2VuZHBvaW50OwkvKiBkb24ndCBz ZW5kIG9yIGFjY2VwdCBlbmRwdC4gZGlzY3JpbS4gKi8KPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9w cHAtMi40LjcvMDAzMS1wcHAtMi40LjItc3RyaXBNU2RvbWFpbi5wYXRjaCBiL3BhdGNoZXMvcHBw LTIuNC43LzAwMzEtcHBwLTIuNC4yLXN0cmlwTVNkb21haW4ucGF0Y2gKPiBkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAzMjYyOTAyNmNhZDUuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3Bh dGNoZXMvcHBwLTIuNC43LzAwMzEtcHBwLTIuNC4yLXN0cmlwTVNkb21haW4ucGF0Y2gKPiArKysg L2Rldi9udWxsCj4gQEAgLTEsNDcgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0u b2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo0 OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIHBwcC0yLjQuMi1zdHJpcE1TZG9tYWluCj4gLQo+ IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Cj4gLQo+IC1TaWdu ZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAt LS0tCj4gLSBwcHBkL2NoYXAtbmV3LmMgfCAxMSArKysrKysrKysrKwo+IC0gMSBmaWxlIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKykKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL2NoYXAtbmV3LmMg Yi9wcHBkL2NoYXAtbmV3LmMKPiAtaW5kZXggMjcxNGJmZjY0Nzg1Li43ZmQ3MDg3YTVlMmMgMTAw NjQ0Cj4gLS0tLSBhL3BwcGQvY2hhcC1uZXcuYwo+IC0rKysgYi9wcHBkL2NoYXAtbmV3LmMKPiAt QEAgLTU4LDYgKzU4LDcgQEAgaW50ICgqY2hhcF92ZXJpZnlfaG9vaykoY2hhciAqbmFtZSwgY2hh ciAqb3VybmFtZSwgaW50IGlkLAo+IC0gaW50IGNoYXBfdGltZW91dF90aW1lID0gMzsKPiAtIGlu dCBjaGFwX21heF90cmFuc21pdHMgPSAxMDsKPiAtIGludCBjaGFwX3JlY2hhbGxlbmdlX3RpbWUg PSAwOwo+IC0raW50IGNoYXBtc19zdHJpcF9kb21haW4gPSAwOwo+IC0gCj4gLSAvKgo+IC0gICog Q29tbWFuZC1saW5lIG9wdGlvbnMuCj4gLUBAIC02OSw2ICs3MCw4IEBAIHN0YXRpYyBvcHRpb25f dCBjaGFwX29wdGlvbl9saXN0W10gPSB7Cj4gLSAJICAiU2V0IG1heCAjeG1pdHMgZm9yIGNoYWxs ZW5nZSIsIE9QVF9QUklPIH0sCj4gLSAJeyAiY2hhcC1pbnRlcnZhbCIsIG9faW50LCAmY2hhcF9y ZWNoYWxsZW5nZV90aW1lLAo+IC0gCSAgIlNldCBpbnRlcnZhbCBmb3IgcmVjaGFsbGVuZ2UiLCBP UFRfUFJJTyB9LAo+IC0rCXsgImNoYXBtcy1zdHJpcC1kb21haW4iLCBvX2Jvb2wsICZjaGFwbXNf c3RyaXBfZG9tYWluLAo+IC0rCSAgIlN0cmlwIHRoZSBkb21haW4gcHJlZml4IGJlZm9yZSB0aGUg VXNlcm5hbWUiLCAxIH0sCj4gLSAJeyBOVUxMIH0KPiAtIH07Cj4gLSAKPiAtQEAgLTMzNiw2ICsz MzksMTQgQEAgY2hhcF9oYW5kbGVfcmVzcG9uc2Uoc3RydWN0IGNoYXBfc2VydmVyX3N0YXRlICpz cywgaW50IGlkLAo+IC0gCQkJLyogTnVsbCB0ZXJtaW5hdGUgYW5kIGNsZWFuIHJlbW90ZSBuYW1l LiAqLwo+IC0gCQkJc2xwcmludGYocm5hbWUsIHNpemVvZihybmFtZSksICIlLip2IiwgbGVuLCBu YW1lKTsKPiAtIAkJCW5hbWUgPSBybmFtZTsKPiAtKwo+IC0rCQkJLyogc3RyaXAgdGhlIE1TIGRv bWFpbiBuYW1lICovCj4gLSsJCQlpZiAoY2hhcG1zX3N0cmlwX2RvbWFpbiAmJiBzdHJyY2hyKHJu YW1lLCAnXFwnKSkgewo+IC0rCQkJCWNoYXIgdG1wW01BWE5BTUVMRU4rMV07Cj4gLSsKPiAtKwkJ CQlzdHJjcHkodG1wLCBzdHJyY2hyKHJuYW1lLCAnXFwnKSArIDEpOwo+IC0rCQkJCXN0cmNweShy bmFtZSwgdG1wKTsKPiAtKwkJCX0KPiAtIAkJfQo+IC0gCj4gLSAJCWlmIChjaGFwX3ZlcmlmeV9o b29rKQo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDMyLWV4cG9ydC1DQUxMX0ZJ TEUtdG8tdGhlLWxpbmstc2NyaXB0cy5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMzItZXhw b3J0LUNBTExfRklMRS10by10aGUtbGluay1zY3JpcHRzLnBhdGNoCj4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggNmEyZTE3MDg4MzM2Li4wMDAwMDAwMDAwMDAKPiAtLS0gYS9wYXRj aGVzL3BwcC0yLjQuNy8wMDMyLWV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2NyaXB0cy5w YXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwzOCArMCwwIEBACj4gLUZyb206IE1pY2hhZWwg T2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBTYXQsIDI4IFNlcCAy MDE5IDA4OjExOjUwICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gZXhwb3J0ICRDQUxMX0ZJTEUg dG8gdGhlIGxpbmsgc2NyaXB0cwo+IC0KPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEu ZGViaWFuLnRhci54ego+IC0KPiAtU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9s YnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gcHBwZC9vcHRpb25zLmMgfCAxICsKPiAt IHBwcGQvcHBwZC44ICAgIHwgMyArKysKPiAtIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9vcHRpb25zLmMgYi9wcHBkL29wdGlvbnMuYwo+ IC1pbmRleCBhOGYzYWE0NTkwYTMuLjM0MDc5NzM4NmRkNiAxMDA2NDQKPiAtLS0tIGEvcHBwZC9v cHRpb25zLmMKPiAtKysrIGIvcHBwZC9vcHRpb25zLmMKPiAtQEAgLTE0ODIsNiArMTQ4Miw3IEBA IGNhbGxmaWxlKGFyZ3YpCj4gLSAgICAgaWYgKChmbmFtZSA9IChjaGFyICopIG1hbGxvYyhsKSkg PT0gTlVMTCkKPiAtIAlub3ZtKCJjYWxsIGZpbGUgbmFtZSIpOwo+IC0gICAgIHNscHJpbnRmKGZu YW1lLCBsLCAiJXMlcyIsIF9QQVRIX1BFRVJGSUxFUywgYXJnKTsKPiAtKyAgICBzY3JpcHRfc2V0 ZW52KCJDQUxMX0ZJTEUiLCBhcmcsIDApOwo+IC0gCj4gLSAgICAgb2sgPSBvcHRpb25zX2Zyb21f ZmlsZShmbmFtZSwgMSwgMSwgMSk7Cj4gLSAKPiAtZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIv cHBwZC9wcHBkLjgKPiAtaW5kZXggNDgxYWE4YmU2NzJiLi44NDhjYThhMTZiNzcgMTAwNjQ0Cj4g LS0tLSBhL3BwcGQvcHBwZC44Cj4gLSsrKyBiL3BwcGQvcHBwZC44Cj4gLUBAIC0xNjYyLDYgKzE2 NjIsOSBAQCB0aGUgY29ubmVjdGlvbi4KPiAtIC5CIExJTktOQU1FCj4gLSBUaGUgbG9naWNhbCBu YW1lIG9mIHRoZSBsaW5rLCBzZXQgd2l0aCB0aGUgXGZJbGlua25hbWVcZlIgb3B0aW9uLgo+IC0g LlRQCj4gLSsuQiBDQUxMX0ZJTEUKPiAtK1RoZSB2YWx1ZSBvZiB0aGUgXGZJY2FsbFxmUiBvcHRp b24uCj4gLSsuVFAKPiAtIC5CIEROUzEKPiAtIElmIHRoZSBwZWVyIHN1cHBsaWVzIEROUyBzZXJ2 ZXIgYWRkcmVzc2VzLCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUKPiAtIGZpcnN0IEROUyBz ZXJ2ZXIgYWRkcmVzcyBzdXBwbGllZCAod2hldGhlciBvciBub3QgdGhlIHVzZXBlZXJkbnMKPiBk aWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAzMy1pcHY2LWFjY2VwdC1yZW1vdGUucGF0 Y2ggYi9wYXRjaGVzL3BwcC0yLjQuNy8wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaAo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAxMzc2Y2YxNDBlMi4uMDAwMDAwMDAwMDAw Cj4gLS0tIGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAzMy1pcHY2LWFjY2VwdC1yZW1vdGUucGF0Y2gK PiArKysgL2Rldi9udWxsCj4gQEAgLTEsNzMgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJp Y2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAw ODoxMTo1MCArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIGlwdjYtYWNjZXB0LXJlbW90ZQo+IC0K PiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjctMis0LjEuZGViaWFuLnRhci54ego+IC0KPiAtU2ln bmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4g LS0tLQo+IC0gcHBwZC9pcHY2Y3AuYyB8IDUgKysrKy0KPiAtIHBwcGQvaXB2NmNwLmggfCAzICsr LQo+IC0gcHBwZC9wcHBkLjggICB8IDUgKysrKysKPiAtIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9wcHBkL2lwdjZj cC5jIGIvcHBwZC9pcHY2Y3AuYwo+IC1pbmRleCBjMTYwMmY0MWMyMDYuLjQzMjE3MDQ2MjE5NiAx MDA2NDQKPiAtLS0tIGEvcHBwZC9pcHY2Y3AuYwo+IC0rKysgYi9wcHBkL2lwdjZjcC5jCj4gLUBA IC0yNDUsNiArMjQ1LDggQEAgc3RhdGljIG9wdGlvbl90IGlwdjZjcF9vcHRpb25fbGlzdFtdID0g ewo+IC0gCj4gLSAgICAgeyAiaXB2NmNwLWFjY2VwdC1sb2NhbCIsIG9fYm9vbCwgJmlwdjZjcF9h bGxvd29wdGlvbnNbMF0uYWNjZXB0X2xvY2FsLAo+IC0gICAgICAgIkFjY2VwdCBwZWVyJ3MgaW50 ZXJmYWNlIGlkZW50aWZpZXIgZm9yIHVzIiwgMSB9LAo+IC0rICAgIHsgImlwdjZjcC1hY2NlcHQt cmVtb3RlIiwgb19ib29sLCAmaXB2NmNwX2FsbG93b3B0aW9uc1swXS5hY2NlcHRfcmVtb3RlLAo+ IC0rICAgICAgIkFjY2VwdCBwZWVyJ3MgaW50ZXJmYWNlIGlkZW50aWZpZXIgZm9yIGl0c2VsZiIs IDEgfSwKPiAtIAo+IC0gICAgIHsgImlwdjZjcC11c2UtaXBhZGRyIiwgb19ib29sLCAmaXB2NmNw X2FsbG93b3B0aW9uc1swXS51c2VfaXAsCj4gLSAgICAgICAiVXNlIChkZWZhdWx0KSBJUHY0IGFk ZHJlc3MgYXMgaW50ZXJmYWNlIGlkZW50aWZpZXIiLCAxIH0sCj4gLUBAIC00MzUsNiArNDM3LDcg QEAgaXB2NmNwX2luaXQodW5pdCkKPiAtICAgICBtZW1zZXQoYW8sIDAsIHNpemVvZigqYW8pKTsK PiAtIAo+IC0gICAgIHdvLT5hY2NlcHRfbG9jYWwgPSAxOwo+IC0rICAgIHdvLT5hY2NlcHRfcmVt b3RlID0gMTsKPiAtICAgICB3by0+bmVnX2lmYWNlaWQgPSAxOwo+IC0gICAgIGFvLT5uZWdfaWZh Y2VpZCA9IDE7Cj4gLSAKPiAtQEAgLTk2MCw3ICs5NjMsNyBAQCBpcHY2Y3BfcmVxY2koZiwgaW5w LCBsZW4sIHJlamVjdF9pZl9kaXNhZ3JlZSkKPiAtIAkJb3JjID0gQ09ORlJFSjsJCS8qIFJlamVj dCBDSSAqLwo+IC0gCQlicmVhazsKPiAtIAkgICAgfQo+IC0tCSAgICBpZiAoIWV1aTY0X2lzemVy byh3by0+aGlzaWQpICYmIAo+IC0rCSAgICBpZiAoIWV1aTY0X2lzemVybyh3by0+aGlzaWQpICYm ICF3by0+YWNjZXB0X3JlbW90ZSAmJgo+IC0gCQkhZXVpNjRfZXF1YWxzKGlmYWNlaWQsIHdvLT5o aXNpZCkgJiYgCj4gLSAJCWV1aTY0X2lzemVybyhnby0+aGlzaWQpKSB7Cj4gLSAJCSAgICAKPiAt ZGlmZiAtLWdpdCBhL3BwcGQvaXB2NmNwLmggYi9wcHBkL2lwdjZjcC5oCj4gLWluZGV4IDJmNGMw NmRkYzE4OS4uMTYxNzcwN2ViYmRlIDEwMDY0NAo+IC0tLS0gYS9wcHBkL2lwdjZjcC5oCj4gLSsr KyBiL3BwcGQvaXB2NmNwLmgKPiAtQEAgLTE1MCw3ICsxNTAsOCBAQAo+IC0gdHlwZWRlZiBzdHJ1 Y3QgaXB2NmNwX29wdGlvbnMgewo+IC0gICAgIGludCBuZWdfaWZhY2VpZDsJCS8qIE5lZ290aWF0 ZSBpbnRlcmZhY2UgaWRlbnRpZmllcj8gKi8KPiAtICAgICBpbnQgcmVxX2lmYWNlaWQ7CQkvKiBB c2sgcGVlciB0byBzZW5kIGludGVyZmFjZSBpZGVudGlmaWVyPyAqLwo+IC0tICAgIGludCBhY2Nl cHRfbG9jYWw7CQkvKiBhY2NlcHQgcGVlcidzIHZhbHVlIGZvciBpZmFjZSBpZD8gKi8KPiAtKyAg ICBpbnQgYWNjZXB0X2xvY2FsOwkJLyogYWNjZXB0IHBlZXIncyB2YWx1ZSBmb3Igb3VyIGlmYWNl IGlkPyAqLwo+IC0rICAgIGludCBhY2NlcHRfcmVtb3RlOwkJLyogYWNjZXB0IHBlZXIncyB2YWx1 ZSBmb3IgaGlzIGlmYWNlIGlkPyAqLwo+IC0gICAgIGludCBvcHRfbG9jYWw7CQkvKiBvdXJ0b2tl biBzZXQgYnkgb3B0aW9uICovCj4gLSAgICAgaW50IG9wdF9yZW1vdGU7CQkvKiBoaXN0b2tlbiBz ZXQgYnkgb3B0aW9uICovCj4gLSAgICAgaW50IHVzZV9pcDsJCQkvKiB1c2UgSVAgYXMgaW50ZXJm YWNlIGlkZW50aWZpZXIgKi8KPiAtZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC44IGIvcHBwZC9wcHBk LjgKPiAtaW5kZXggODQ4Y2E4YTE2Yjc3Li42NWJiZTcyMWY3NjEgMTAwNjQ0Cj4gLS0tLSBhL3Bw cGQvcHBwZC44Cj4gLSsrKyBiL3BwcGQvcHBwZC44Cj4gLUBAIC00NjMsNiArNDYzLDExIEBAIFdp dGggdGhpcyBvcHRpb24sIHBwcGQgd2lsbCBhY2NlcHQgdGhlIHBlZXIncyBpZGVhIG9mIG91ciBs b2NhbCBJUHY2Cj4gLSBpbnRlcmZhY2UgaWRlbnRpZmllciwgZXZlbiBpZiB0aGUgbG9jYWwgSVB2 NiBpbnRlcmZhY2UgaWRlbnRpZmllcgo+IC0gd2FzIHNwZWNpZmllZCBpbiBhbiBvcHRpb24uCj4g LSAuVFAKPiAtKy5CIGlwdjZjcFwtYWNjZXB0XC1yZW1vdGUKPiAtK1dpdGggdGhpcyBvcHRpb24s IHBwcGQgd2lsbCBhY2NlcHQgdGhlIHBlZXIncyBpZGVhIG9mIGl0cyAocmVtb3RlKQo+IC0rSVB2 NiBpbnRlcmZhY2UgaWRlbnRpZmllciwgZXZlbiBpZiB0aGUgcmVtb3RlIElQdjYgaW50ZXJmYWNl Cj4gLStpZGVudGlmaWVyIHdhcyBzcGVjaWZpZWQgaW4gYW4gb3B0aW9uLgo+IC0rLlRQCj4gLSAu QiBpcHY2Y3BcLW1heFwtY29uZmlndXJlIFxmSW4KPiAtIFNldCB0aGUgbWF4aW11bSBudW1iZXIg b2YgSVB2NkNQIGNvbmZpZ3VyZS1yZXF1ZXN0IHRyYW5zbWlzc2lvbnMgdG8KPiAtIFxmSW5cZlIg KGRlZmF1bHQgMTApLgo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1h LXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuNy8wMDM0LWZpeC1hLXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4t Y2xpZW50aWQuYy1yY19tYXAucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAyYThhMDI5ZGY2MmIuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAw MzQtZml4LWEtcG90ZW50aWFsLWJ1ZmZlci1vdmVyZmxvdy1pbi1jbGllbnRpZC5jLXJjX21hcC5w YXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw0MyArMCwwIEBACj4gLUZyb206IE1pY2hhZWwg T2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBTYXQsIDI4IFNlcCAy MDE5IDA4OjExOjUwICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gZml4IGEgcG90ZW50aWFsIGJ1 ZmZlciBvdmVyZmxvdyBpbiBjbGllbnRpZC5jOnJjX21hcDJpZCgpCj4gLQo+IC1UaGlzIGZpeGVz IHRoZSBmb2xsb3dpbmcgY29tcGlsZS10aW1lIHdhcm5pbmcgd2hlbiBidWlsZGluZyB3aXRoCj4g LS1EX0ZPUlRJRllfU09VUkNFPTI6Cj4gLQo+IC1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9p bmNsdWRlL3N0cmluZy5oOjYzODowLAo+IC0gICAgICAgICAgICAgICAgIGZyb20gLi9pbmNsdWRl cy5oOjI2LAo+IC0gICAgICAgICAgICAgICAgIGZyb20gY2xpZW50aWQuYzoxMjoKPiAtSW4gZnVu Y3Rpb24gJ3N0cm5jYXQnLAo+IC0gICAgaW5saW5lZCBmcm9tICdyY19tYXAyaWQnIGF0IGNsaWVu dGlkLmM6MTEzOjk6Cj4gLS91c3IvaW5jbHVkZS9pMzg2LWxpbnV4LWdudS9iaXRzL3N0cmluZzMu aDoxNTA6Mzogd2FybmluZzogY2FsbCB0bwo+IC1fX2J1aWx0aW5fX19zdHJuY2F0X2NoayBtaWdo dCBvdmVyZmxvdyBkZXN0aW5hdGlvbiBidWZmZXIgW2VuYWJsZWQgYnkgZGVmYXVsdF0KPiAtICAg cmV0dXJuIF9fYnVpbHRpbl9fX3N0cm5jYXRfY2hrIChfX2Rlc3QsIF9fc3JjLCBfX2xlbiwgX19i b3MgKF9fZGVzdCkpOwo+IC0gICBeCj4gLQo+IC1PcmlnaW46IHZlbmRvciwgaHR0cHM6Ly9idWls ZC5vcGVuc3VzZS5vcmcvc291cmNlL25ldHdvcmsvcHBwL3BwcC0yLjQuNC1zdHJuY2F0Zml4LnBh dGNoP3Jldj03YTBmZGVmZjBiMjk0MzdkZDdmNDU4MWM5NWM3MjU1YQo+IC1Gb3J3YXJkZWQ6IG5v Cj4gLVJldmlld2VkLWJ5OiBDaHJpcyBCb290IDxib290Y0BkZWJpYW4ub3JnPgo+IC1MYXN0LVVw ZGF0ZTogMjAxNC0wMS0xMgo+IC0KPiAtCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4x LmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5v bGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIHBwcGQvcGx1Z2lucy9yYWRpdXMvY2xp ZW50aWQuYyB8IDIgKy0KPiAtIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQu YyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYwo+IC1pbmRleCBkNDk1NzljNDNjYzMu LjdkZTAyMTEzOWI1NiAxMDA2NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9jbGllbnRp ZC5jCj4gLSsrKyBiL3BwcGQvcGx1Z2lucy9yYWRpdXMvY2xpZW50aWQuYwo+IC1AQCAtMTEwLDcg KzExMCw3IEBAIFVJTlQ0IHJjX21hcDJpZChjaGFyICpuYW1lKQo+IC0gCWlmICgqbmFtZSAhPSAn LycpCj4gLSAJCXN0cmNweSh0dHluYW1lLCAiL2Rldi8iKTsKPiAtIAo+IC0tCXN0cm5jYXQodHR5 bmFtZSwgbmFtZSwgc2l6ZW9mKHR0eW5hbWUpKTsKPiAtKwlzdHJuY2F0KHR0eW5hbWUsIG5hbWUs IHNpemVvZih0dHluYW1lKS1zdHJsZW4odHR5bmFtZSktMSk7Cj4gLSAKPiAtIAlmb3IocCA9IG1h cDJpZF9saXN0OyBwOyBwID0gcC0+bmV4dCkKPiAtIAkJaWYgKCFzdHJjbXAodHR5bmFtZSwgcC0+ bmFtZSkpIHJldHVybiBwLT5pZDsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAz Ny1GaXgtYnVmZmVyLW92ZXJmbG93LWluLXJjX21rc2lkLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40 LjcvMDAzNy1GaXgtYnVmZmVyLW92ZXJmbG93LWluLXJjX21rc2lkLnBhdGNoCj4gZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggZTIxZjEyOWFkOWE5Li4wMDAwMDAwMDAwMDAKPiAtLS0g YS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM3LUZpeC1idWZmZXItb3ZlcmZsb3ctaW4tcmNfbWtzaWQu cGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzYgKzAsMCBAQAo+IC1Gcm9tOiBNaWNoYWVs IE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAg MjAxOSAwODoxMTo1MCArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWZmZXIgb3ZlcmZs b3cgaW4gcmNfbWtzaWQoKQo+IC0KPiAtIHJjX21rc2lkIGNvbnZlcnRzIHRoZSBQSUQgb2YgcHBw ZCB0byBoZXggdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tdW5pcXVlIHN0cmluZy4KPiAtIC4KPiAtIElm IHRoZSBwcm9jZXNzIGlkIGlzIGJpZ2dlciB0aGFuIDY1NTM1IChGRkZGKSwgaXRzIGhleCByZXBy ZXNlbnRhdGlvbiB3aWxsIGJlCj4gLSBsb25nZXIgdGhhbiA0IGNoYXJhY3RlcnMsIHJlc3VsdGlu ZyBpbiBhIGJ1ZmZlciBvdmVyZmxvdy4KPiAtIC4KPiAtIFRoZSBidWcgY2FuIGJlIGV4cGxvaXRl ZCB0byBjYXVzZSBhIHJlbW90ZSBEb1MuCj4gLSAuCj4gLUF1dGhvcjogRW1hbnVlbGUgUm9jY2Eg PGVtYUBkZWJpYW4ub3JnPgo+IC1CdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83 ODI0NTAKPiAtTGFzdC1VcGRhdGU6IDwyMDE1LTA0LTE0Pgo+IC0KPiAtCj4gLUltcG9ydGVkIGZy b20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1p Y2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIHBwcGQv cGx1Z2lucy9yYWRpdXMvdXRpbC5jIHwgMiArLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCj4gLQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3Jh ZGl1cy91dGlsLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL3V0aWwuYwo+IC1pbmRleCA2Zjk3NmE3 MTI5NTEuLjE2NmJkNWYzMWQ3YSAxMDA2NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3JhZGl1cy91 dGlsLmMKPiAtKysrIGIvcHBwZC9wbHVnaW5zL3JhZGl1cy91dGlsLmMKPiAtQEAgLTc3LDcgKzc3 LDcgQEAgcmNfbWtzaWQgKHZvaWQpCj4gLSAgIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbnQgY250 ID0gMDsKPiAtICAgc3ByaW50ZiAoYnVmLCAiJTA4bFglMDRYJTAyaFgiLAo+IC0gCSAgICh1bnNp Z25lZCBsb25nIGludCkgdGltZSAoTlVMTCksCj4gLS0JICAgKHVuc2lnbmVkIGludCkgZ2V0cGlk ICgpLAo+IC0rCSAgICh1bnNpZ25lZCBpbnQpIGdldHBpZCAoKSAlIDY1NTM1LAo+IC0gCSAgIGNu dCAmIDB4RkYpOwo+IC0gICBjbnQrKzsKPiAtICAgcmV0dXJuIGJ1ZjsKPiBkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9wcHAtMi40LjcvMDAzOC1FQVAtVExTLWF1dGhlbnRpY2F0aW9uLXN1cHBvcnQtZm9y LVBQUC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC43LzAwMzgtRUFQLVRMUy1hdXRoZW50aWNhdGlv bi1zdXBwb3J0LWZvci1QUFAucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCBiZDQ2MmQ0ZjgzZjkuLjAwMDAwMDAwMDAwMAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAw MzgtRUFQLVRMUy1hdXRoZW50aWNhdGlvbi1zdXBwb3J0LWZvci1QUFAucGF0Y2gKPiArKysgL2Rl di9udWxsCj4gQEAgLTEsMzM4MyArMCwwIEBACj4gLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5v bGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUw ICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gRUFQLVRMUyBhdXRoZW50aWNhdGlvbiBzdXBwb3J0 IGZvciBQUFAKPiAtCj4gLU9yaWdpbjogaHR0cHM6Ly93d3cubmlraGVmLm5sL35qYW5qdXN0L3Bw cC9kb3dubG9hZC5odG1sCj4gLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzYw MjUwMwo+IC1CdWctVWJ1bnR1OiBodHRwczovL2xhdW5jaHBhZC5uZXQvYnVncy82NDM0MTcKPiAt Rm9yd2FyZGVkOiBub3QtbmVlZGVkCj4gLUF1dGhvcjogSmFuIEp1c3QgS2VpanNlciA8amFuanVz dEBuaWtoZWYubmw+Cj4gLUxhc3QtVXBkYXRlOiAyMDE4LTExLTA0Cj4gLQo+IC1UaGlzIHBhdGNo IGlzIGJhc2VkIG9uIHBwcC0yLjQuNy1lYXB0bHMtbXBwZS0xLjEwMi5wYXRjaCwgd2l0aCB0aGUg Zm9sbG93aW5nCj4gLWNoYW5nZXM6Cj4gLQo+IC0gLSBQYXRjaCByZWZyZXNoZWQgdG8gcmVtb3Zl IGZ1enouCj4gLSAtIFRyYWlsaW5nIHNwYWNlcyByZW1vdmVkLgo+IC0KPiAtCj4gLUltcG9ydGVk IGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIFJF QURNRS5lYXAtdGxzICAgICAgICAgICAgICB8ICAyOTEgKysrKysrKysrCj4gLSBldGMucHBwL2Vh cHRscy1jbGllbnQgICAgICAgfCAgIDEwICsKPiAtIGV0Yy5wcHAvZWFwdGxzLXNlcnZlciAgICAg ICB8ICAgMTEgKwo+IC0gZXRjLnBwcC9vcGVuc3NsLmNuZiAgICAgICAgIHwgICAxNCArCj4gLSBs aW51eC9NYWtlZmlsZS50b3AgICAgICAgICAgfCAgICA2ICstCj4gLSBwcHBkL01ha2VmaWxlLmxp bnV4ICAgICAgICAgfCAgIDEyICsKPiAtIHBwcGQvYXV0aC5jICAgICAgICAgICAgICAgICB8ICA0 MTMgKysrKysrKysrKysrLQo+IC0gcHBwZC9jY3AuYyAgICAgICAgICAgICAgICAgIHwgICAyMCAr LQo+IC0gcHBwZC9jaGFwLW1kNS5jICAgICAgICAgICAgIHwgICAgNCArCj4gLSBwcHBkL2VhcC10 bHMuYyAgICAgICAgICAgICAgfCAxMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAtIHBwcGQvZWFwLXRscy5oICAgICAgICAgICAgICB8ICAxMDcgKysrKwo+ IC0gcHBwZC9lYXAuYyAgICAgICAgICAgICAgICAgIHwgIDQ2MyArKysrKysrKysrKysrKy0KPiAt IHBwcGQvZWFwLmggICAgICAgICAgICAgICAgICB8ICAgMzIgKy0KPiAtIHBwcGQvbWQ1LmMgICAg ICAgICAgICAgICAgICB8ICAgIDQgKwo+IC0gcHBwZC9tZDUuaCAgICAgICAgICAgICAgICAgIHwg ICAgMyArCj4gLSBwcHBkL3BhdGhuYW1lcy5oICAgICAgICAgICAgfCAgICA3ICsKPiAtIHBwcGQv cGx1Z2lucy9NYWtlZmlsZS5saW51eCB8ICAgIDMgKwo+IC0gcHBwZC9wbHVnaW5zL3Bhc3Nwcm9t cHQuYyAgIHwgICAgMyArCj4gLSBwcHBkL3BsdWdpbnMvcGFzc3dvcmRmZC5jICAgfCAgICA0ICsK PiAtIHBwcGQvcHBwZC44ICAgICAgICAgICAgICAgICB8ICAgMzMgKysKPiAtIHBwcGQvcHBwZC5o ICAgICAgICAgICAgICAgICB8ICAgIDkgKwo+IC0gMjEgZmlsZXMgY2hhbmdlZCwgMjgyNSBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+IC0gY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5l YXAtdGxzCj4gLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXRjLnBwcC9lYXB0bHMtY2xpZW50Cj4gLSBj cmVhdGUgbW9kZSAxMDA2NDQgZXRjLnBwcC9lYXB0bHMtc2VydmVyCj4gLSBjcmVhdGUgbW9kZSAx MDA2NDQgZXRjLnBwcC9vcGVuc3NsLmNuZgo+IC0gY3JlYXRlIG1vZGUgMTAwNjQ0IHBwcGQvZWFw LXRscy5jCj4gLSBjcmVhdGUgbW9kZSAxMDA2NDQgcHBwZC9lYXAtdGxzLmgKPiAtCj4gLWRpZmYg LS1naXQgYS9SRUFETUUuZWFwLXRscyBiL1JFQURNRS5lYXAtdGxzCj4gLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gLWluZGV4IDAwMDAwMDAwMDAwMC4uMTA3ZTg0ZGI1ZTgxCj4gLS0tLSAvZGV2L251 bGwKPiAtKysrIGIvUkVBRE1FLmVhcC10bHMKPiAtQEAgLTAsMCArMSwyOTEgQEAKPiAtK0VBUC1U TFMgYXV0aGVudGljYXRpb24gc3VwcG9ydCBmb3IgUFBQCj4gLSs9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQo+IC0rCj4gLSsxLiBJbnRybwo+IC0rCj4gLSsgICAgVGhlIEV4 dGVuc2libGUgQXV0aGVudGljYXRpb24gUHJvdG9jb2wgKEVBUDsgUkZDIDM3NDgpIGlzIGEKPiAt KyAgICBzZWN1cml0eSBwcm90b2NvbCB0aGF0IGNhbiBiZSB1c2VkIHdpdGggUFBQLiAgSXQgcHJv dmlkZXMgYSBtZWFucwo+IC0rICAgIHRvIHBsdWcgaW4gbXVsdGlwbGUgb3B0aW9uYWwgYXV0aGVu dGljYXRpb24gbWV0aG9kcy4KPiAtKwo+IC0rICAgIFRyYW5zcG9ydCBMZXZlbCBTZWN1cml0eSAo VExTOyBSRkMgNTIxNikgcHJvdmlkZXMgZm9yIG11dHVhbAo+IC0rICAgIGF1dGhlbnRpY2F0aW9u LCBpbnRlZ3JpdHktcHJvdGVjdGVkIGNpcGhlcnN1aXRlIG5lZ290aWF0aW9uIGFuZAo+IC0rICAg IGtleSBleGNoYW5nZSBiZXR3ZWVuIHR3byBlbmRwb2ludHMuICBJdCBhbHNvIHByb3ZpZGVzIGZv ciBvcHRpb25hbAo+IC0rICAgIE1QUEUgZW5jcnlwdGlvbi4KPiAtKwo+IC0rICAgIEVBUC1UTFMg KFJGQyAyNzE2KSBpbmNhcHN1bGF0ZXMgdGhlIFRMUyBtZXNzYWdlcyBpbiBFQVAgcGFja2V0cywK PiAtKyAgICBhbGxvd2luZyBUTFMgbXV0dWFsIGF1dGhlbnRpY2F0aW9uIHRvIGJlIHVzZWQgYXMg YSBnZW5lcmljIEVBUAo+IC0rICAgIG1lY2hhbmlzbS4gSXQgYWxzbyBwcm92aWRlcyBvcHRpb25h bCBlbmNyeXB0aW9uIHVzaW5nIHRoZSBNUFBFCj4gLSsgICAgcHJvdG9jb2wuCj4gLSsKPiAtKyAg ICBUaGlzIHBhdGNoIHByb3ZpZGUgRUFQLVRMUyBzdXBwb3J0IHRvIHBwcGQuCj4gLSsgICAgVGhp cyBhdXRoZW50aWNhdGlvbiBtZXRob2QgY2FuIGJlIHVzZWQgaW4gYm90aCBjbGllbnQgb3Igc2Vy dmVyCj4gLSsgICAgbW9kZS4KPiAtKwo+IC0rMi4gQnVpbGRpbmcKPiAtKwo+IC0rICAgIFRvIGJ1 aWxkIHBwcGQgd2l0aCBFQVAtVExTIHN1cHBvcnQsIE9wZW5TU0wgKGh0dHA6Ly93d3cub3BlbnNz bC5vcmcpCj4gLSsgICAgaXMgcmVxdWlyZWQuIEFueSB2ZXJzaW9uIGZyb20gMC45Ljcgc2hvdWxk IHdvcmsuCj4gLSsKPiAtKyAgICBDb25maWd1cmUsIGNvbXBpbGUsIGFuZCBpbnN0YWxsIGFzIHVz dWFsLgo+IC0rCj4gLSszLiBDb25maWd1cmF0aW9uCj4gLSsKPiAtKyAgICBPbiB0aGUgY2xpZW50 IHNpZGUgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGNvbmZpZ3VyZSBFQVAtVExTOgo+IC0rCj4gLSsg ICAgMS4gc3VwcGx5IHRoZSBhcHByb3ByaWF0ZSAnY2EnLCAnY2VydCcgYW5kICdrZXknIGNvbW1h bmQtbGluZSBwYXJhbWV0ZXJzCj4gLSsKPiAtKyAgICAyLiBlZGl0IHRoZSAvZXRjL3BwcC9lYXB0 bHMtY2xpZW50IGZpbGUuCj4gLSsgICAgSW5zZXJ0IGEgbGluZSBmb3IgZWFjaCBzeXN0ZW0gd2l0 aCB3aGljaCB5b3UgdXNlIEVBUC1UTFMuCj4gLSsgICAgVGhlIGxpbmUgaXMgY29tcG9zZWQgb2Yg dGhpcyBmaWVsZHMgc2VwYXJhdGVkIGJ5IHRhYjoKPiAtKwo+IC0rICAgICAgLSBDbGllbnQgbmFt ZQo+IC0rICAgICAgICBUaGUgbmFtZSB1c2VkIGJ5IHRoZSBjbGllbnQgZm9yIGF1dGhlbnRpY2F0 aW9uLCBjYW4gYmUgKgo+IC0rICAgICAgLSBTZXJ2ZXIgbmFtZQo+IC0rICAgICAgICBUaGUgbmFt ZSBvZiB0aGUgc2VydmVyLCBjYW4gYmUgKgo+IC0rICAgICAgLSBDbGllbnQgY2VydGlmaWNhdGUg ZmlsZQo+IC0rICAgICAgICBUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0ZSBjaGFp biBmb3IgdGhlCj4gLSsgICAgICAgIGNsaWVudCBpbiBQRU0gZm9ybWF0Cj4gLSsgICAgICAtIFNl cnZlciBjZXJ0aWZpY2F0ZSBmaWxlCj4gLSsgICAgICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkg dGhlIGNlcnRpZmljYXRlIHRoYXQgdGhlCj4gLSsgICAgICAgIHNlcnZlciBpcyBhbGxvd2VkIHRv IHVzZSwgcHV0IHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUuCj4gLSsgICAgICAgIEVsc2UgcHV0 IGEgZGFzaCAnLScuCj4gLSsgICAgICAtIENBIGNlcnRpZmljYXRlIGZpbGUKPiAtKyAgICAgICAg VGhlIGZpbGUgY29udGFpbmluZyB0aGUgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZXMgaW4gUEVNCj4g LSsgICAgICAgIGZvcm1hdC4KPiAtKyAgICAgIC0gQ2xpZW50IHByaXZhdGUga2V5IGZpbGUKPiAt KyAgICAgICAgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgY2xpZW50IHByaXZhdGUga2V5IGluIFBF TSBmb3JtYXQuCj4gLSsKPiAtKwo+IC0rICAgIE9uIHRoZSBzZXJ2ZXIgc2lkZSBlZGl0IHRoZSAv ZXRjL3BwcC9lYXB0bHMtc2VydmVyIGZpbGUuCj4gLSsgICAgSW5zZXJ0IGEgbGluZSBmb3IgZWFj aCBzeXN0ZW0gd2l0aCB3aGljaCB5b3UgdXNlIEVBUC1UTFMuCj4gLSsgICAgVGhlIGxpbmUgaXMg Y29tcG9zZWQgb2YgdGhpcyBmaWVsZHMgc2VwYXJhdGVkIGJ5IHRhYjoKPiAtKwo+IC0rICAgICAg LSBDbGllbnQgbmFtZQo+IC0rICAgICAgICBUaGUgbmFtZSB1c2VkIGJ5IHRoZSBjbGllbnQgZm9y IGF1dGhlbnRpY2F0aW9uLCBjYW4gYmUgKgo+IC0rICAgICAgLSBTZXJ2ZXIgbmFtZQo+IC0rICAg ICAgICBUaGUgbmFtZSBvZiB0aGUgc2VydmVyLCBjYW4gYmUgKgo+IC0rICAgICAgLSBDbGllbnQg Y2VydGlmaWNhdGUgZmlsZQo+IC0rICAgICAgICBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IHRoZSBj ZXJ0aWZpY2F0ZSB0aGF0IHRoZQo+IC0rICAgICAgICBjbGllbnQgaXMgYWxsb3dlZCB0byB1c2Us IHB1dCB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lLgo+IC0rICAgICAgICBFbHNlIHB1dCBhIGRh c2ggJy0nLgo+IC0rICAgICAgLSBTZXJ2ZXIgY2VydGlmaWNhdGUgZmlsZQo+IC0rICAgICAgICBU aGUgZmlsZSBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3IgdGhlCj4gLSsgICAg ICAgIHNlcnZlciBpbiBQRU0gZm9ybWF0Cj4gLSsgICAgICAtIENBIGNlcnRpZmljYXRlIGZpbGUK PiAtKyAgICAgICAgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0 ZXMgaW4gUEVNIGZvcm1hdC4KPiAtKyAgICAgIC0gQ2xpZW50IHByaXZhdGUga2V5IGZpbGUKPiAt KyAgICAgICAgVGhlIGZpbGUgY29udGFpbmluZyB0aGUgc2VydmVyIHByaXZhdGUga2V5IGluIFBF TSBmb3JtYXQuCj4gLSsgICAgICAtIGFkZHJlc3Nlcwo+IC0rICAgICAgICBBIGxpc3Qgb2YgSVAg YWRkcmVzc2VzIHRoZSBjbGllbnQgaXMgYWxsb3dlZCB0byB1c2UuCj4gLSsKPiAtKwo+IC0rICAg IE9wZW5TU0wgZW5naW5lIHN1cHBvcnQgaXMgaW5jbHVkZWQgc3RhcnRpbmcgd2l0aCB2MC45NSBv ZiB0aGlzIHBhdGNoLgo+IC0rICAgIEN1cnJlbnRseSB0aGUgb25seSBlbmdpbmUgdGVzdGVkIGlz IHRoZSAncGtjczExJyBlbmdpbmUgKGhhcmR3YXJlIHRva2VuCj4gLSsgICAgc3VwcG9ydCkuIFRv IHVzZSB0aGUgJ3Brc2MxMScgZW5naW5lOgo+IC0rICAgICAgLSBVc2UgYSBzcGVjaWFsIHByaXZh dGUga2V5IGZpbGVpbmFtZSBpbiB0aGUgL2V0Yy9wcHAvZWFwdGxzLWNsaWVudCBmaWxlOgo+IC0r ICAgICAgICAgIDxlbmdpbmU+OjxpZGVudGlmaWVyPgo+IC0rICAgICAgICBlLmcuCj4gLSsgICAg ICAgICAgcGtjczExOjEyMzQ1Ngo+IC0rCj4gLSsgICAgICAtIFRoZSBjZXJ0aWZpY2F0ZSBjYW4g YWxzbyBiZSBsb2FkZWQgZnJvbSB0aGUgJ3BrY3MxMScgZW5naW5lIHVzaW5nCj4gLSsgICAgICAg IGEgc3BlY2lhbCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZW5hbWUgaW4gdGhlIC9ldGMvcHBwL2Vh cHRscy1jbGllbnQgZmlsZToKPiAtKyAgICAgICAgICA8ZW5naW5lPjo8aWRlbnRpZmllcj4KPiAt KyAgICAgICAgZS5nLgo+IC0rICAgICAgICAgIHBrY3MxMToxMjM0NTYKPiAtKwo+IC0rICAgICAg LSBDcmVhdGUgYW4gL2V0Yy9wcHAvb3BlbnNzbC5jbmYgZmlsZSB0byBsb2FkIHRoZSByaWdodCBP cGVuU1NMIGVuZ2luZSBwcmlvcgo+IC0rICAgICAgICB0byBzdGFydGluZyAncHBwZCcuIEEgc2Ft cGxlIG9wZW5zc2wuY25mIGZpbGUgaXMKPiAtKwo+IC0rICAgICAgICBvcGVuc3NsX2NvbmYgPSBv cGVuc3NsX2RlZgo+IC0rCj4gLSsgICAgICAgIFsgb3BlbnNzbF9kZWYgXQo+IC0rICAgICAgICBl bmdpbmVzID0gZW5naW5lX3NlY3Rpb24KPiAtKwo+IC0rICAgICAgICBbIGVuZ2luZV9zZWN0aW9u IF0KPiAtKyAgICAgICAgcGtjczExID0gcGtjczExX3NlY3Rpb24KPiAtKwo+IC0rICAgICAgICBb IHBrY3MxMV9zZWN0aW9uIF0KPiAtKyAgICAgICAgZW5naW5lX2lkID0gcGtjczExCj4gLSsgICAg ICAgIGR5bmFtaWNfcGF0aCA9IC91c3IvbGliNjQvb3BlbnNzbC9lbmdpbmVzL2VuZ2luZV9wa2Nz MTEuc28KPiAtKyAgICAgICAgTU9EVUxFX1BBVEggPSAvdXNyL2xpYjY0L2xpYmVUUGtjczExLnNv Cj4gLSsgICAgICAgIGluaXQgPSAwCj4gLSsKPiAtKyAgICAgIC0gVGhlcmUgYXJlIHR3byB3YXlz IHRvIHNwZWNpZnkgYSBwYXNzd29yZC9QSU4gZm9yIHRoZSBQS0NTMTEgZW5naW5lOgo+IC0rICAg ICAgICAgIC0gaW5zaWRlIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHVzaW5nCj4gLSsgICAgICAgICAg ICAgIFBJTiA9IHlvdXItc2VjcmV0LXBpbgo+IC0rICAgICAgICAgICAgTm90ZSBUaGUga2V5d29y ZCAnUElOJyBpcyBjYXNlIHNlbnNpdGl2ZSEKPiAtKyAgICAgICAgICAtIFVzaW5nIHRoZSAncGFz c3dvcmQnIGluIHRoZSBwcHAgb3B0aW9ucyBmaWxlLgo+IC0rICAgICAgICBGcm9tIHYwLjk3IG9m IHRoZSBlYXAtdGxzIHBhdGNoIHRoZSBwYXNzd29yZCBjYW4gYWxzbyBiZSBzdXBwbGllZAo+IC0r ICAgICAgICB1c2luZyB0aGUgYXBwcm9wcmlhdGUgJ2VhcHRsc19wYXNzd2RfaG9vaycgKHNlZSBw bHVnaW5zL3Bhc3Nwcm9tcHQuYwo+IC0rICAgICAgICBmb3IgYW4gZXhhbXBsZSkuCj4gLSsKPiAt Kwo+IC0rNC4gT3B0aW9ucwo+IC0rCj4gLSsgICAgVGhlc2UgcHBwZCBvcHRpb25zIGFyZSBhdmFp bGFibGU6Cj4gLSsKPiAtKyAgICAgIGNhIDxjYS1maWxlPgo+IC0rICAgICAgICBVc2UgdGhlIENB IHB1YmxpYyBjZXJ0aWZpY2F0ZSBmb3VuZCBpbiA8Y2EtZmlsZT4gaW4gUEVNIGZvcm1hdAo+IC0r ICAgICAgY2VydCA8Y2VydC1maWxlPgo+IC0rICAgICAgICBVc2UgdGhlIGNsaWVudCBwdWJsaWMg Y2VydGlmaWNhdGUgZm91bmQgaW4gPGNlcnQtZmlsZT4gaW4gUEVNIGZvcm1hdAo+IC0rICAgICAg ICBvciBpbiBlbmdpbmU6ZW5naW5lX2lkIGZvcm1hdAo+IC0rICAgICAga2V5IDxrZXktZmlsZT4K PiAtKyAgICAgICAgVXNlIHRoZSBjbGllbnQgcHJpdmF0ZSBrZXkgZm91bmQgaW4gPGtleS1maWxl PiBpbiBQRU0gZm9ybWF0Cj4gLSsgICAgICAgIG9yIGluIGVuZ2luZTplbmdpbmVfaWQgZm9ybWF0 Cj4gLSsgICAgICBjcmwgPGNybC1maWxlPgo+IC0rICAgICAgICBVc2UgdGhlIENlcnRpZmljYXRl IFJldm9jYXRpb24gTGlzdCAoQ1JMKSBmaWxlIDxjcmwtZmlsZT4gaW4gUEVNIGZvcm1hdC4KPiAt KyAgICAgIGNybC1kaXIgPGRpcj4KPiAtKyAgICAgICAgVXNlIENSTCBmaWxlcyBmcm9tIGRpcmVj dG9yeSA8ZGlyPi4gSXQgY29udGFpbnMgQ1JMIGZpbGVzIGluIFBFTQo+IC0rICAgICAgICBmb3Jt YXQgYW5kIGVhY2ggZmlsZSBjb250YWlucyBhIENSTC4gVGhlIGZpbGVzIGFyZSBsb29rZWQgdXAK PiAtKyAgICAgICAgYnkgdGhlIGlzc3VlciBuYW1lIGhhc2ggdmFsdWUuIFVzZSB0aGUgY19yZWhh c2ggdXRpbGl0eQo+IC0rICAgICAgICB0byBjcmVhdGUgbmVjZXNzYXJ5IGxpbmtzLgo+IC0rICAg ICAgbmVlZC1wZWVyLWVhcAo+IC0rICAgICAgICBJZiB0aGUgcGVlciBkb2Vzbid0IGFzayB1cyB0 byBhdXRoZW50aWNhdGUgb3IgZG9lc24ndCB1c2UgZWFwCj4gLSsgICAgICAgIHRvIGF1dGhlbnRp Y2F0ZSB1cywgZGlzY29ubmVjdC4KPiAtKwo+IC0rICAgIE5vdGU6Cj4gLSsgICAgICBwYXNzd29y ZC1lbmNyeXB0ZWQgY2VydGlmaWNhdGVzIGNhbiBiZSB1c2VkIGFzIG9mIHYwLjk0IG9mIHRoaXMK PiAtKyAgICAgIHBhdGNoLiBUaGUgcGFzc3dvcmQgZm9yIHRoZSBlYXAtdGxzLmtleSBmaWxlIGlz IHNwZWNpZmllZCB1c2luZwo+IC0rICAgICAgdGhlIHJlZ3VsYXIKPiAtKyAgICAgICAgICBwYXNz d29yZCAuLi4uCj4gLSsgICAgICBzdGF0ZW1lbnQgaW4gdGhlIHBwcCBvcHRpb25zIGZpbGUsIG9y IGJ5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZQo+IC0rICAgICAgcGx1Z2luIHdoaWNoIHN1cHBsaWVz IGEgJ2VhcHRsc19wYXNzd2RfaG9vaycgcm91dGluZS4KPiAtKwo+IC0rNS4gQ29ubmVjdGluZwo+ IC0rCj4gLSsgICAgSWYgeW91J3JlIHNldHRpbmcgdXAgYSBwcHBkIHNlcnZlciwgZWRpdCB0aGUg RUFQLVRMUyBjb25maWd1cmF0aW9uIGZpbGUKPiAtKyAgICBhcyB3cml0dGVuIGFib3ZlIGFuZCB0 aGVuIHJ1biBwcHBkIHdpdGggdGhlICdhdXRoJyBvcHRpb24gdG8gYXV0aGVudGljYXRlCj4gLSsg ICAgdGhlIGNsaWVudC4gVGhlIEVBUC1UTFMgbWV0aG9kIHdpbGwgYmUgdXNlZCBpZiB0aGUgb3Ro ZXIgZWFwIG1ldGhvZHMgY2FuJ3QKPiAtKyAgICBiZSB1c2VkIChubyBzZWNyZXRzKS4KPiAtKwo+ IC0rICAgIElmIHlvdSdyZSBzZXR0aW5nIHVwIGEgY2xpZW50LCBlZGl0IHRoZSBjb25maWd1cmF0 aW9uIGZpbGUgYW5kIHRoZW4gcnVuCj4gLSsgICAgcHBwZCB3aXRoICdyZW1vdGVuYW1lJyBvcHRp b24gdG8gc3BlY2lmeSB0aGUgc2VydmVyIG5hbWUuIEFkZCB0aGUKPiAtKyAgICAnbmVlZC1wZWVy LWVhcCcgb3B0aW9uIGlmIHlvdSB3YW50IHRvIGJlIHN1cmUgdGhlIHBlZXIgYXNrIHlvdSB0bwo+ IC0rICAgIGF1dGhlbnRpY2F0ZSAoYW5kIHRvIHVzZSBlYXApIGFuZCB0byBkaXNjb25uZWN0IGlm IGl0IGRvZXNuJ3QuCj4gLSsKPiAtKzYuIEV4YW1wbGUKPiAtKwo+IC0rICAgIFRoZSBmb2xsb3dp bmcgZXhhbXBsZSBjYW4gYmUgdXNlZCB0byBjb25uZWN0IGEgTGludXggY2xpZW50IHdpdGggdGhl ICdwcHRwJwo+IC0rICAgIHBhY2thZ2UgdG8gYSBMaW51eCBzZXJ2ZXIgcnVubmluZyB0aGUgJ3Bw dHBkJyAoUG9QVG9QKSBwYWNrYWdlLiBUaGUgc2VydmVyCj4gLSsgICAgd2FzIGNvbmZpZ3VyZWQg d2l0aCBhIGNlcnRpZmljYXRlIHdpdGggbmFtZSAoQ04pICdwcHRwLXNlcnZlcicsIHRoZSBjbGll bnQKPiAtKyAgICB3YXMgY29uZmlndXJlZCB3aXRoIGEgY2VydGlmaWNhdGUgd2l0aCBuYW1lIChD TikgJ3BwdHAtY2xpZW50JywgYm90aAo+IC0rICAgIHNpZ25lZCBieSB0aGUgc2FtZSBDZXJ0aWZp Y2F0ZSBBdXRob3JpdHkgKENBKS4KPiAtKwo+IC0rICAgIFNlcnZlciBzaWRlOgo+IC0rICAgICAg LSAvZXRjL3BwdHBkLmNvbmYgZmlsZToKPiAtKyAgICAgICAgICBvcHRpb24gL2V0Yy9wcHAvb3B0 aW9ucy1wcHRwZC1lYXB0bHMKPiAtKyAgICAgICAgICBsb2NhbGlwIDE3Mi4xNi4xLjEKPiAtKyAg ICAgICAgICByZW1vdGVpcCAxNzIuMTYuMS4xMC0yMAo+IC0rICAgICAgLSAvZXRjL3BwcC9vcHRp b25zLXBwdHBkLWVhcHRscyBmaWxlOgo+IC0rICAgICAgICAgIG5hbWUgcHB0cC1zZXJ2ZXIKPiAt KyAgICAgICAgICBsb2NrCj4gLSsgICAgICAgICAgbXR1IDE1MDAKPiAtKyAgICAgICAgICBtcnUg MTQ1MAo+IC0rICAgICAgICAgIGF1dGgKPiAtKyAgICAgICAgICBsY3AtZWNoby1mYWlsdXJlIDMK PiAtKyAgICAgICAgICBsY3AtZWNoby1pbnRlcnZhbCA1Cj4gLSsgICAgICAgICAgbm9kZWZsYXRl Cj4gLSsgICAgICAgICAgbm9ic2Rjb21wCj4gLSsgICAgICAgICAgbm9wcmVkaWN0b3IxCj4gLSsg ICAgICAgICAgbm9wY29tcAo+IC0rICAgICAgICAgIG5vYWNjb21wCj4gLSsKPiAtKyAgICAgICAg ICByZXF1aXJlLWVhcAo+IC0rICAgICAgICAgIHJlcXVpcmUtbXBwZS0xMjgKPiAtKwo+IC0rICAg ICAgICAgIGNybCAvaG9tZS9qYW5qdXN0L3BwcC9rZXlzL2NybC5wZW0KPiAtKwo+IC0rICAgICAg ICAgIGRlYnVnCj4gLSsgICAgICAgICAgbG9nZmlsZSAvdG1wL3BwcGQubG9nCj4gLSsKPiAtKyAg ICAgIC0gL2V0Yy9wcHAvZWFwdGxzLXNlcnZlciBmaWxlOgo+IC0rICAgICAgICAgICAqIHBwdHAt c2VydmVyIC0gL2V0Yy9wcHAvcHB0cC1zZXJ2ZXIuY3J0IC9ldGMvcHBwL2NhLmNydCAvZXRjL3Bw cC9wcHRwLXNlcnZlci5rZXkgKgo+IC0rCj4gLSsgICAgICAtIE9uIHRoZSBzZXJ2ZXIsIHJ1bgo+ IC0rICAgICAgICAgIHBwdGRwIC0tY29uZiAvZXRjL3BwdHBkLmNvbmYKPiAtKwo+IC0rICAgIENs aWVudCBzaWRlOgo+IC0rICAgICAgLSBSdW4KPiAtKyAgICAgICAgICBwcHBkIG5vYXV0aCByZXF1 aXJlLWVhcCByZXF1aXJlLW1wcGUtMTI4IFwKPiAtKyAgICAgICAgICAgIGlwY3AtYWNjZXB0LWxv Y2FsIGlwY3AtYWNjZXB0LXJlbW90ZSBub2lwZGVmYXVsdCBcCj4gLSsgICAgICAgICAgICBjZXJ0 ICAvZXRjL3BwcC9rZXlzL3BwdHAtY2xpZW50LmNydCBcCj4gLSsgICAgICAgICAgICBrZXkgICAv ZXRjL3BwcC9rZXlzL3BwdHAtY2xpZW50LmtleSBcCj4gLSsgICAgICAgICAgICBjYSAgICAvZXRj L3BwcC9rZXlzL2NhLmNydCBcCj4gLSsgICAgICAgICAgICBuYW1lIHBwdHAtY2xpZW50IHJlbW90 ZW5hbWUgcHB0cC1zZXJ2ZXIgXAo+IC0rICAgICAgICAgICAgZGVidWcgbG9nZmlsZSAvdG1wL3Bw cGQubG9nCj4gLSsgICAgICAgICAgICBwdHkgInBwdHAgcHB0cC1zZXJ2ZXIuZXhhbXBsZS5jb20g LS1ub2xhdW5jaHBwcGQiCj4gLSsKPiAtKyAgICBDaGVjayAvdmFyL2xvZy9tZXNzYWdlcyBhbmQg dGhlIGZpbGVzIC90bXAvcHBwZC5sb2cgb24gYm90aCBzaWRlcyBmb3IgZGVidWdnaW5nIGluZm8u Cj4gLSsKPiAtKzcuIE5vdGVzCj4gLSsKPiAtKyAgICBUaGlzIGlzIGV4cGVyaW1lbnRhbCBjb2Rl Lgo+IC0rICAgIFNlbmQgc3VnZ2VzdGlvbnMgYW5kIGNvbW1lbnRzIHRvIEphbiBKdXN0IEtlaWpz ZXIgPGphbmp1c3RAbmlraGVmLm5sPgo+IC0rCj4gLSs4LiBDaGFuZ2Vsb2cgb2YgcHBwLTw+LWVh cHRscy1tcHBlLSogcGF0Y2hlcwo+IC0rCj4gLSt2MC43ICAgICAoMjItTm92LTIwMDUpCj4gLSsg LSBGaXJzdCB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB0byBpbmNsdWRlIE1QUEUgc3VwcG9ydAo+IC0r IC0gcHBwLTIuNC4zIG9ubHkKPiAtK3YwLjkgICAgICgyNS1KdWwtMjAwNikKPiAtKyAtIEJ1ZyBm aXhlcwo+IC0rIC0gRmlyc3QgdmVyc2lvbiBmb3IgcHBwLTIuNC40Cj4gLSt2MC45MSAgICAoMDMt U2VwLTIwMDYpCj4gLSsgLSBBZGRlZCBtaXNzaW5nICNpbmNsdWRlIGZvciBtZDUuaAo+IC0rIC0g TGFzdCB2ZXJzaW9uIGZvciBwcHAtMi40LjMKPiAtK3YwLjkyICAgICgyMi1BcHItMjAwOCkKPiAt KyAtIEZpeCBmb3Igb3BlbnNzbCAwLjkuOCBpc3N1ZSB3aXRoIG1kNSBmdW5jdGlvbiBvdmVybG9h ZC4KPiAtK3YwLjkzICAgICgxNC1BdWctMjAwOCkKPiAtKyAtIE1ha2Ugc3VyZSAnbm9hdXRoJyBv cHRpb24gY2FuIGJlIHVzZWQgdG8gYnlwYXNzIHNlcnZlciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRp b24uCj4gLSt2MC45NCAgICAoMTUtT2N0LTIwMDgpCj4gLSsgLSBBZGRlZCBzdXBwb3J0IGZvciBw YXNzd29yZC1wcm90ZWN0ZWQgcHJpdmF0ZSBrZXlzIGJ5IChhYil1c2luZyB0aGUgJ3Bhc3N3b3Jk JyBmaWVsZC4KPiAtK3YwLjk1ICAgICgyMy1EZWMtMjAwOSkKPiAtKyAtIEZpcnN0IHZlcnNpb24g d2l0aCBPcGVuU1NMIGVuZ2luZSBzdXBwb3J0Lgo+IC0rdjAuOTYgICAgKDI3LUphbi0yMDEwKQo+ IC0rIC0gQWRkZWQgZnVsbHkgZnVuY3Rpb25hbCBzdXBwb3J0IGZvciBPcGVuU1NMIGVuZ2luZXMg KFBLQ1MjMTEpCj4gLSsgLSBGaXJzdCB2ZXJzaW9uIGZvciBwcHAtMi40LjUKPiAtK3YwLjk3ICAg ICgyMC1BcHItMjAxMCkKPiAtKyAtIFNvbWUgYnVnIGZpeGVzIGZvciB2MC45Ngo+IC0rIC0gQWRk ZWQgc3VwcG9ydCBmb3IgZW50ZXJpbmcgdGhlIHBhc3N3b3JkIHZpYSBhIHBsdWdpbi4gVGhlIHNh bXBsZSBwbHVnaW4KPiAtKyAgICAgLi4uL3BwcGQvcGx1Z2lucy9wYXNzcHJvbXB0LmMgaGFzIGJl ZW4gZXh0ZW5kZWQgd2l0aCBFQVAtVExTIHN1cHBvcnQuCj4gLSsgICBUaGUgIm9sZCIgbWV0aG9k cyB1c2luZyB0aGUgcGFzc3dvcmQgb3B0aW9uIG9yIHRoZSAvZXRjL3BwcC9vcGVuc3NsLmNuZiBm aWxlIHN0aWxsIHdvcmsuCj4gLSsgLSBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHRoZSBj bGllbnQgQ0EsIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBvbiB0aGUgY29tbWFuZC1saW5l Cj4gLSsgICBvciB2aWEgdGhlIHBwcCBjb25maWcgZmlsZS4KPiAtK3YwLjk4ICAgICgyMC1BcHIt MjAxMCkKPiAtKyAtIEZpeCBpbml0aWFsaXNhdGlvbiBidWcgd2hlbiB1c2luZyBjYS9jZXJ0L2tl eSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KPiAtKyAtIExhc3QgdmVyc2lvbiBmb3IgcHBwLTIuNC40 Cj4gLSt2MC45OSAgICAoMDUtT2N0LTIwMTApCj4gLSsgLSBGaXggY29yZWR1bXAgd2hlbiB1c2lu ZyBtdWx0aWxpbmsgb3B0aW9uLgo+IC0rdjAuOTkxICAgKDA4LUF1Zy0yMDExKQo+IC0rIC0gRml4 IGNvbXBpbGF0aW9uIGlzc3VlIHdpdGggb3BlbnNzbCAxLjAuCj4gLSt2MC45OTIgICAoMDEtRGVj LTIwMTEpCj4gLSsgLSBGaXggY29tcGlsYXRpb24gaXNzdWUgd2l0aCBlYXB0bHNfY2hlY2tfaG9v ayBhbmQgcGFzc3dvcmRmZCBwbHVnaW4uCj4gLSt2MC45OTMgICAoMjQtQXByLTIwMTIpCj4gLSsg LSBGaXggY29tcGlsYXRpb24gaXNzdWUgd2hlbiBFQVBfVExTPW4gaW4gcHBwZC9NYWtlZmlsZS4K PiAtK3YwLjk5NCAgICgxMS1KdW4tMjAxMikKPiAtKyAtIEZpeCBjb21waWxhdGlvbiBpc3N1ZSBv biBVYnVudHUgMTEuMTAuCj4gLSt2MC45OTUgICAoMjctTWF5LTIwMTQpCj4gLSsgLSBBZGQgc3Vw cG9ydCBmb3IgYSBDUkwgZmlsZSB1c2luZyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiAnY3JsJwo+ IC0rICAgKHByaW9yIG9ubHkgJ2NybC1kaXInIHdhcyBzdXBwb3J0ZWQpLgo+IC0rIC0gRml4IHNl Z2ZhdWx0IHdoZW4gcGtjczExIGVuZ2luZW5hbWUgd2FzIG5vdCBzcGVjaWZpZWQgY29ycmVjdGx5 Lgo+IC0rIC0gRml4IHNlZ2ZhdWx0IHdoZW4gY2xpZW50IHdhcyBtaXNjb25maWd1cmVkLgo+IC0r IC0gRGlzYWJsZSBTU0wgU2Vzc2lvbiBUaWNrZXQgc3VwcG9ydCBhcyBXaW5kb3dzIDggZG9lcyBu b3Qgc3VwcG9ydCB0aGlzLgo+IC0rdjAuOTk2ICAgKDI4LU1heS0yMDE0KQo+IC0rIC0gRml4IG1p bm9yIGJ1ZyB3aGVyZSBTZXNzaW9uVGlja2V0IG1lc3NhZ2Ugd2FzIHByaW50ZWQgYXMgJ1Vua25v d24gU1NMMyBjb2RlIDQnCj4gLSsgLSBBZGQgRUFQLVRMUy1zcGVjaWZpYyBvcHRpb25zIHRvIHBw cGQuOCBtYW51YWwgcGFnZS4KPiAtKyAtIFVwZGF0ZWQgUkVBRE1FLmVhcC10bHMgZmlsZSB3aXRo IG5ldyBvcHRpb25zIGFuZCBwcm92aWRlIGFuIGV4YW1wbGUuCj4gLSt2MC45OTcgICAoMTktSnVu LTIwMTQpCj4gLSsgLSBDaGFuZ2UgU1NMX09QX05PX1RJQ0tFVFMgdG8gU1NMX09QX05PX1RJQ0tF VAo+IC0rIC0gRml4IGJ1ZyBpbiBpbml0aWFsaXNhdGlvbiBjb2RlIHdpdGggZnJhZ21lbnRlZCBw YWNrZXRzLgo+IC0rdjAuOTk4ICAgKDEzLU1hci0yMDE1KQo+IC0rIC0gQWRkIGZpeCBmb3IgaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMDIzNjIwCj4gLSt2MC45 OTkgICAoMTEtTWF5LTIwMTcpCj4gLSsgLSBBZGQgc3VwcG9ydCBmb3IgT3BlblNTTCAxLjE6IHRo ZSBjb2RlIHdpbGwgbm93IGNvbXBpbGUgYWdhaW5zdCBPcGVuU1NMIDEuMC54IG9yIDEuMS54Lgo+ IC0rdjEuMTAxICgxLUp1bi0yMDE4KQo+IC0rIC0gRml4IHZ1bG5lcmFiaWxpdGllcyBDVkUtMjAx OC0xMTU3NC4KPiAtK3YxLjEwMiAoMi1Ob3YtMjAxOCkKPiAtKyAtIEFkZCBUTFMgMS4yIHN1cHBv cnQuIFdpbmRvd3MgNy84IHdpbGwgY29ubmVjdCB1c2luZyBUTFMgMS4wLCBXaW5kb3dzIDEwIGNs aWVudHMgdXNpbmcgVExTIDEuMi4KPiAtKyAgIFRoaXMgd29ya3MgYm90aCB3aGVuIGNvbXBpbGlu ZyBhZ2FpbnN0IE9wZW5TU0wgMS4wLjErIGFuZCAxLjErLgo+IC0rIC0gUHJpbnQgd2FybmluZyB3 aGVuIGNlcnRpZmljYXRlIGlzIGVpdGhlciBub3QgeWV0IHZhbGlkIG9yIGhhcyBleHBpcmVkLgo+ IC0rIC0gUGVyZm9ybSBiZXR0ZXIgcGVlciBjZXJ0aWZpY2F0ZSBjaGVja3MuCj4gLSsgLSBBbGxv dyBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlcyB0byBiZSB1c2VkLgo+IC1kaWZmIC0tZ2l0IGEvZXRj LnBwcC9lYXB0bHMtY2xpZW50IGIvZXRjLnBwcC9lYXB0bHMtY2xpZW50Cj4gLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gLWluZGV4IDAwMDAwMDAwMDAwMC4uNzc4MmYwZTJhMDY1Cj4gLS0tLSAvZGV2 L251bGwKPiAtKysrIGIvZXRjLnBwcC9lYXB0bHMtY2xpZW50Cj4gLUBAIC0wLDAgKzEsMTAgQEAK PiAtKyMgUGFyYW1ldGVycyBmb3IgYXV0aGVudGljYXRpb24gdXNpbmcgRUFQLVRMUyAoY2xpZW50 KQo+IC0rCj4gLSsjIGNsaWVudCBuYW1lIChjYW4gYmUgKikKPiAtKyMgc2VydmVyIG5hbWUgKGNh biBiZSAqKQo+IC0rIyBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSAocmVxdWlyZWQpCj4gLSsjIHNl cnZlciBjZXJ0aWZpY2F0ZSBmaWxlIChvcHRpb25hbCwgaWYgdW51c2VkIHB1dCAnLScpCj4gLSsj IENBIGNlcnRpZmljYXRlIGZpbGUgKHJlcXVpcmVkKQo+IC0rIyBjbGllbnQgcHJpdmF0ZSBrZXkg ZmlsZSAocmVxdWlyZWQpCj4gLSsKPiAtKyNjbGllbnQJc2VydmVyCS9yb290L2NlcnQvY2xpZW50 LmNydAktCS9yb290L2NlcnQvY2EuY3J0CS9yb290L2NlcnQvY2xpZW50LmtleQo+IC1kaWZmIC0t Z2l0IGEvZXRjLnBwcC9lYXB0bHMtc2VydmVyIGIvZXRjLnBwcC9lYXB0bHMtc2VydmVyCj4gLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gLWluZGV4IDAwMDAwMDAwMDAwMC4uZmE1M2NiZDE5N2NmCj4g LS0tLSAvZGV2L251bGwKPiAtKysrIGIvZXRjLnBwcC9lYXB0bHMtc2VydmVyCj4gLUBAIC0wLDAg KzEsMTEgQEAKPiAtKyMgUGFyYW1ldGVycyBmb3IgYXV0aGVudGljYXRpb24gdXNpbmcgRUFQLVRM UyAoc2VydmVyKQo+IC0rCj4gLSsjIGNsaWVudCBuYW1lIChjYW4gYmUgKikKPiAtKyMgc2VydmVy IG5hbWUgKGNhbiBiZSAqKQo+IC0rIyBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSAob3B0aW9uYWws IGlmIHVudXNlZCBwdXQgJy0nKQo+IC0rIyBzZXJ2ZXIgY2VydGlmaWNhdGUgZmlsZSAocmVxdWly ZWQpCj4gLSsjIENBIGNlcnRpZmljYXRlIGZpbGUgKHJlcXVpcmVkKQo+IC0rIyBzZXJ2ZXIgcHJp dmF0ZSBrZXkgZmlsZSAocmVxdWlyZWQpCj4gLSsjIGFsbG93ZWQgYWRkcmVzc2VzIChyZXF1aXJl ZCwgY2FuIGJlICopCj4gLSsKPiAtKyNjbGllbnQJc2VydmVyCS0JL3Jvb3QvY2VydC9zZXJ2ZXIu Y3J0CS9yb290L2NlcnQvY2EuY3J0CS9yb290L2NlcnQvc2VydmVyLmtleQkxOTIuMTY4LjEuMC8y NAo+IC1kaWZmIC0tZ2l0IGEvZXRjLnBwcC9vcGVuc3NsLmNuZiBiL2V0Yy5wcHAvb3BlbnNzbC5j bmYKPiAtbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiAtaW5kZXggMDAwMDAwMDAwMDAwLi5kZDMyZjMw NWQ2ODAKPiAtLS0tIC9kZXYvbnVsbAo+IC0rKysgYi9ldGMucHBwL29wZW5zc2wuY25mCj4gLUBA IC0wLDAgKzEsMTQgQEAKPiAtK29wZW5zc2xfY29uZiA9IG9wZW5zc2xfZGVmCj4gLSsKPiAtK1sg b3BlbnNzbF9kZWYgXQo+IC0rZW5naW5lcyA9IGVuZ2luZV9zZWN0aW9uCj4gLSsKPiAtK1sgZW5n aW5lX3NlY3Rpb24gXQo+IC0rcGtjczExID0gcGtjczExX3NlY3Rpb24KPiAtKwo+IC0rWyBwa2Nz MTFfc2VjdGlvbiBdCj4gLStlbmdpbmVfaWQgPSBwa2NzMTEKPiAtK2R5bmFtaWNfcGF0aCA9IC91 c3IvbGliNjQvb3BlbnNzbC9lbmdpbmVzL2VuZ2luZV9wa2NzMTEuc28KPiAtK01PRFVMRV9QQVRI ID0gL3Vzci9saWI2NC9saWJlVFBrY3MxMS5zbwo+IC0raW5pdCA9IDAKPiAtKwo+IC1kaWZmIC0t Z2l0IGEvbGludXgvTWFrZWZpbGUudG9wIGIvbGludXgvTWFrZWZpbGUudG9wCj4gLWluZGV4IGY2 M2Q0NWU1OGE3OC4uODk0ZjhmMzJjOWU0IDEwMDY0NAo+IC0tLS0gYS9saW51eC9NYWtlZmlsZS50 b3AKPiAtKysrIGIvbGludXgvTWFrZWZpbGUudG9wCj4gLUBAIC0yNiw3ICsyNiw3IEBAIGluc3Rh bGwtcHJvZ3M6Cj4gLSAJY2QgcHBwZHVtcDsgJChNQUtFKSAkKE1GTEFHUykgaW5zdGFsbAo+IC0g Cj4gLSBpbnN0YWxsLWV0Y3BwcDogJChFVENESVIpICQoRVRDRElSKS9vcHRpb25zICQoRVRDRElS KS9wYXAtc2VjcmV0cyBcCj4gLS0JJChFVENESVIpL2NoYXAtc2VjcmV0cwo+IC0rCSQoRVRDRElS KS9jaGFwLXNlY3JldHMgJChFVENESVIpL2VhcHRscy1zZXJ2ZXIgJChFVENESVIpL2VhcHRscy1j bGllbnQKPiAtIAo+IC0gaW5zdGFsbC1kZXZlbDoKPiAtIAljZCBwcHBkOyAkKE1BS0UpICQoTUZM QUdTKSBpbnN0YWxsLWRldmVsCj4gLUBAIC0zNyw2ICszNywxMCBAQCAkKEVUQ0RJUikvcGFwLXNl Y3JldHM6Cj4gLSAJJChJTlNUQUxMKSAtYyAtbSA2MDAgZXRjLnBwcC9wYXAtc2VjcmV0cyAkQAo+ IC0gJChFVENESVIpL2NoYXAtc2VjcmV0czoKPiAtIAkkKElOU1RBTEwpIC1jIC1tIDYwMCBldGMu cHBwL2NoYXAtc2VjcmV0cyAkQAo+IC0rJChFVENESVIpL2VhcHRscy1zZXJ2ZXI6Cj4gLSsJJChJ TlNUQUxMKSAtYyAtbSA2MDAgZXRjLnBwcC9lYXB0bHMtc2VydmVyICRACj4gLSskKEVUQ0RJUikv ZWFwdGxzLWNsaWVudDoKPiAtKwkkKElOU1RBTEwpIC1jIC1tIDYwMCBldGMucHBwL2VhcHRscy1j bGllbnQgJEAKPiAtIAo+IC0gJChCSU5ESVIpOgo+IC0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICRA Cj4gLWRpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5saW51 eAo+IC1pbmRleCA1NTQ5MTQ1ZTU3OTEuLjRhMTFkNWZlYTc0OCAxMDA2NDQKPiAtLS0tIGEvcHBw ZC9NYWtlZmlsZS5saW51eAo+IC0rKysgYi9wcHBkL01ha2VmaWxlLmxpbnV4Cj4gLUBAIC03Niw2 ICs3Niw5IEBAIENCQ1A9eQo+IC0gIyBVc2UgbGlidXRpbAo+IC0gVVNFX0xJQlVUSUw9eQo+IC0g Cj4gLSsjIEVuYWJsZSBFQVAtVExTIGF1dGhlbnRpY2F0aW9uIChyZXF1aXJlcyBsaWJzc2wgYW5k IGxpYmNyeXB0bykKPiAtK1VTRV9FQVBUTFM9eQo+IC0rCj4gLSBNQVhPQ1RFVFM9eQo+IC0gCj4g LSBJTkNMVURFX0RJUlM9IC1JLi4vaW5jbHVkZQo+IC1AQCAtMTE2LDYgKzExOSwxNSBAQCBIRUFE RVJTICs9IHNoYTEuaAo+IC0gUFBQRE9CSlMgKz0gc2hhMS5vCj4gLSBlbmRpZgo+IC0gCj4gLSsj IEVBUC1UTFMKPiAtK2lmZGVmIFVTRV9FQVBUTFMKPiAtK0NGTEFHUyArPSAtRFVTRV9FQVBUTFM9 MSAtSS91c3Iva2VyYmVyb3MvaW5jbHVkZQo+IC0rTElCUyArPSAtbHNzbCAtbGNyeXB0bwo+IC0r UFBQRFNSQyArPSBlYXAtdGxzLmMKPiAtK0hFQURFUlMgKz0gZWFwLXRscy5oCj4gLStQUFBET0JK UyArPSBlYXAtdGxzLm8KPiAtK2VuZGlmCj4gLSsKPiAtIGlmZGVmIEhBU19TSEFET1cKPiAtIENG TEFHUyAgICs9IC1ESEFTX1NIQURPVwo+IC0gI0xJQlMgICAgICs9IC1sc2hhZG93ICQoTElCUykK PiAtZGlmZiAtLWdpdCBhL3BwcGQvYXV0aC5jIGIvcHBwZC9hdXRoLmMKPiAtaW5kZXggNDI3MWFm Njg3MTAyLi40NTA2NWM1OGJmY2MgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvYXV0aC5jCj4gLSsrKyBi L3BwcGQvYXV0aC5jCj4gLUBAIC0xMDksNiArMTA5LDkgQEAKPiAtICNpbmNsdWRlICJ1cGFwLmgi Cj4gLSAjaW5jbHVkZSAiY2hhcC1uZXcuaCIKPiAtICNpbmNsdWRlICJlYXAuaCIKPiAtKyNpZmRl ZiBVU0VfRUFQVExTCj4gLSsjaW5jbHVkZSAiZWFwLXRscy5oIgo+IC0rI2VuZGlmCj4gLSAjaWZk ZWYgQ0JDUF9TVVBQT1JUCj4gLSAjaW5jbHVkZSAiY2JjcC5oIgo+IC0gI2VuZGlmCj4gLUBAIC0x ODMsNiArMTg2LDExIEBAIGludCAoKmNoYXBfY2hlY2tfaG9vaykgX19QKCh2b2lkKSkgPSBOVUxM Owo+IC0gLyogSG9vayBmb3IgYSBwbHVnaW4gdG8gZ2V0IHRoZSBDSEFQIHBhc3N3b3JkIGZvciBh dXRoZW50aWNhdGluZyB1cyAqLwo+IC0gaW50ICgqY2hhcF9wYXNzd2RfaG9vaykgX19QKChjaGFy ICp1c2VyLCBjaGFyICpwYXNzd2QpKSA9IE5VTEw7Cj4gLSAKPiAtKyNpZmRlZiBVU0VfRUFQVExT Cj4gLSsvKiBIb29rIGZvciBhIHBsdWdpbiB0byBnZXQgdGhlIEVBUC1UTFMgcGFzc3dvcmQgZm9y IGF1dGhlbnRpY2F0aW5nIHVzICovCj4gLStpbnQgKCplYXB0bHNfcGFzc3dkX2hvb2spIF9fUCgo Y2hhciAqdXNlciwgY2hhciAqcGFzc3dkKSkgPSBOVUxMOwo+IC0rI2VuZGlmCj4gLSsKPiAtIC8q IEhvb2sgZm9yIGEgcGx1Z2luIHRvIHNheSB3aGV0aGVyIGl0IGlzIE9LIGlmIHRoZSBwZWVyCj4g LSAgICByZWZ1c2VzIHRvIGF1dGhlbnRpY2F0ZS4gKi8KPiAtIGludCAoKm51bGxfYXV0aF9ob29r KSBfX1AoKHN0cnVjdCB3b3JkbGlzdCAqKnBhZGRycywKPiAtQEAgLTIzOCw2ICsyNDYsMTQgQEAg Ym9vbCBleHBsaWNpdF9yZW1vdGUgPSAwOwkvKiBVc2VyIHNwZWNpZmllZCBleHBsaWNpdCByZW1v dGUgbmFtZSAqLwo+IC0gYm9vbCBleHBsaWNpdF91c2VyID0gMDsJCS8qIFNldCBpZiAidXNlciIg b3B0aW9uIHN1cHBsaWVkICovCj4gLSBib29sIGV4cGxpY2l0X3Bhc3N3ZCA9IDA7CS8qIFNldCBp ZiAicGFzc3dvcmQiIG9wdGlvbiBzdXBwbGllZCAqLwo+IC0gY2hhciByZW1vdGVfbmFtZVtNQVhO QU1FTEVOXTsJLyogUGVlcidzIG5hbWUgZm9yIGF1dGhlbnRpY2F0aW9uICovCj4gLSsjaWZkZWYg VVNFX0VBUFRMUwo+IC0rY2hhciAqY2FjZXJ0X2ZpbGUgID0gTlVMTDsJLyogQ0EgY2VydGlmaWNh dGUgZmlsZSAocGVtIGZvcm1hdCkgKi8KPiAtK2NoYXIgKmNlcnRfZmlsZSAgICA9IE5VTEw7CS8q IGNsaWVudCBjZXJ0aWZpY2F0ZSBmaWxlIChwZW0gZm9ybWF0KSAqLwo+IC0rY2hhciAqcHJpdmtl eV9maWxlID0gTlVMTDsJLyogY2xpZW50IHByaXZhdGUga2V5IGZpbGUgKHBlbSBmb3JtYXQpICov Cj4gLStjaGFyICpjcmxfZGlyICAgICAgPSBOVUxMOwkvKiBkaXJlY3RvcnkgY29udGFpbmluZyBD UkwgZmlsZXMgKi8KPiAtK2NoYXIgKmNybF9maWxlICAgICA9IE5VTEw7CS8qIENlcnRpZmljYXRl IFJldm9jYXRpb24gTGlzdCAoQ1JMKSBmaWxlIChwZW0gZm9ybWF0KSAqLwo+IC0rYm9vbCBuZWVk X3BlZXJfZWFwID0gMDsJCQkvKiBSZXF1aXJlIHBlZXIgdG8gYXV0aGVudGljYXRlIHVzICovCj4g LSsjZW5kaWYKPiAtIAo+IC0gc3RhdGljIGNoYXIgKnVhZm5hbWU7CQkvKiBuYW1lIG9mIG1vc3Qg cmVjZW50ICt1YSBmaWxlICovCj4gLSAKPiAtQEAgLTI1NCw2ICsyNzAsMTkgQEAgc3RhdGljIGlu dCAgaGF2ZV9wYXBfc2VjcmV0IF9fUCgoaW50ICopKTsKPiAtIHN0YXRpYyBpbnQgIGhhdmVfY2hh cF9zZWNyZXQgX19QKChjaGFyICosIGNoYXIgKiwgaW50LCBpbnQgKikpOwo+IC0gc3RhdGljIGlu dCAgaGF2ZV9zcnBfc2VjcmV0IF9fUCgoY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIsIGludCBu ZWVkX2lwLAo+IC0gICAgIGludCAqbGFja3NfaXBwKSk7Cj4gLSsKPiAtKyNpZmRlZiBVU0VfRUFQ VExTCj4gLStzdGF0aWMgaW50ICBoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyCj4gLStfX1AoKGNo YXIgKmNsaWVudCwgY2hhciAqc2VydmVyLCBpbnQgbmVlZF9pcCwgaW50ICpsYWNrc19pcHApKTsK PiAtK3N0YXRpYyBpbnQgIGhhdmVfZWFwdGxzX3NlY3JldF9jbGllbnQgX19QKChjaGFyICpjbGll bnQsIGNoYXIgKnNlcnZlcikpOwo+IC0rc3RhdGljIGludCAgc2Nhbl9hdXRoZmlsZV9lYXB0bHMg X19QKChGSUxFICogZiwgY2hhciAqY2xpZW50LCBjaGFyICpzZXJ2ZXIsCj4gLSsJCQkgICAgICAg Y2hhciAqY2xpX2NlcnQsIGNoYXIgKnNlcnZfY2VydCwKPiAtKwkJCSAgICAgICBjaGFyICpjYV9j ZXJ0LCBjaGFyICpwaywKPiAtKwkJCSAgICAgICBzdHJ1Y3Qgd29yZGxpc3QgKiogYWRkcnMsCj4g LSsJCQkgICAgICAgc3RydWN0IHdvcmRsaXN0ICoqIG9wdHMsCj4gLSsJCQkgICAgICAgY2hhciAq ZmlsZW5hbWUsIGludCBmbGFncykpOwo+IC0rI2VuZGlmCj4gLSsKPiAtIHN0YXRpYyBpbnQgIGlw X2FkZHJfY2hlY2sgX19QKCh1X2ludDMyX3QsIHN0cnVjdCBwZXJtaXR0ZWRfaXAgKikpOwo+IC0g c3RhdGljIGludCAgc2Nhbl9hdXRoZmlsZSBfX1AoKEZJTEUgKiwgY2hhciAqLCBjaGFyICosIGNo YXIgKiwKPiAtIAkJCSAgICAgICBzdHJ1Y3Qgd29yZGxpc3QgKiosIHN0cnVjdCB3b3JkbGlzdCAq KiwKPiAtQEAgLTQwMSw2ICs0MzAsMTUgQEAgb3B0aW9uX3QgYXV0aF9vcHRpb25zW10gPSB7Cj4g LSAgICAgICAiU2V0IHRlbGVwaG9uZSBudW1iZXIocykgd2hpY2ggYXJlIGFsbG93ZWQgdG8gY29u bmVjdCIsCj4gLSAgICAgICBPUFRfUFJJViB8IE9QVF9BMkxJU1QgfSwKPiAtIAo+IC0rI2lmZGVm IFVTRV9FQVBUTFMKPiAtKyAgICB7ICJjYSIsIG9fc3RyaW5nLCAmY2FjZXJ0X2ZpbGUsICAgIkVB UC1UTFMgQ0EgY2VydGlmaWNhdGUgaW4gUEVNIGZvcm1hdCIgfSwKPiAtKyAgICB7ICJjZXJ0Iiwg b19zdHJpbmcsICZjZXJ0X2ZpbGUsICAgIkVBUC1UTFMgY2xpZW50IGNlcnRpZmljYXRlIGluIFBF TSBmb3JtYXQiIH0sCj4gLSsgICAgeyAia2V5Iiwgb19zdHJpbmcsICZwcml2a2V5X2ZpbGUsICJF QVAtVExTIGNsaWVudCBwcml2YXRlIGtleSBpbiBQRU0gZm9ybWF0IiB9LAo+IC0rICAgIHsgImNy bC1kaXIiLCBvX3N0cmluZywgJmNybF9kaXIsICAiVXNlIENSTHMgaW4gZGlyZWN0b3J5IiB9LAo+ IC0rICAgIHsgImNybCIsIG9fc3RyaW5nLCAmY3JsX2ZpbGUsICAgICAiVXNlIHNwZWNpZmljIENS TCBmaWxlIiB9LAo+IC0rICAgIHsgIm5lZWQtcGVlci1lYXAiLCBvX2Jvb2wsICZuZWVkX3BlZXJf ZWFwLAo+IC0rICAgICAgIlJlcXVpcmUgdGhlIHBlZXIgdG8gYXV0aGVudGljYXRlIHVzIiwgMSB9 LAo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtICAgICB7IE5VTEwgfQo+IC0gfTsKPiAt IAo+IC1AQCAtNzMwLDYgKzc2OCw5IEBAIGxpbmtfZXN0YWJsaXNoZWQodW5pdCkKPiAtICAgICBs Y3Bfb3B0aW9ucyAqd28gPSAmbGNwX3dhbnRvcHRpb25zW3VuaXRdOwo+IC0gICAgIGxjcF9vcHRp b25zICpnbyA9ICZsY3BfZ290b3B0aW9uc1t1bml0XTsKPiAtICAgICBsY3Bfb3B0aW9ucyAqaG8g PSAmbGNwX2hpc29wdGlvbnNbdW5pdF07Cj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rICAgIGxj cF9vcHRpb25zICphbyA9ICZsY3BfYWxsb3dvcHRpb25zW3VuaXRdOwo+IC0rI2VuZGlmCj4gLSAg ICAgaW50IGk7Cj4gLSAgICAgc3RydWN0IHByb3RlbnQgKnByb3RwOwo+IC0gCj4gLUBAIC03NjQs NiArODA1LDIyIEBAIGxpbmtfZXN0YWJsaXNoZWQodW5pdCkKPiAtIAl9Cj4gLSAgICAgfQo+IC0g Cj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rICAgIGlmIChuZWVkX3BlZXJfZWFwICYmICFhby0+ bmVnX2VhcCkgewo+IC0rCXdhcm4oImVhcCByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgdXMgYnV0 IG5vIHN1aXRhYmxlIHNlY3JldHMiKTsKPiAtKwlsY3BfY2xvc2UodW5pdCwgImNvdWxkbid0IG5l Z290aWF0ZSBlYXAiKTsKPiAtKwlzdGF0dXMgPSBFWElUX0FVVEhfVE9QRUVSX0ZBSUxFRDsKPiAt KwlyZXR1cm47Cj4gLSsgICAgfQo+IC0rCj4gLSsgICAgaWYgKG5lZWRfcGVlcl9lYXAgJiYgIWhv LT5uZWdfZWFwKSB7Cj4gLSsJd2FybigicGVlciBkb2Vzbid0IHdhbnQgdG8gYXV0aGVudGljYXRl IHVzIHdpdGggZWFwIik7Cj4gLSsJbGNwX2Nsb3NlKHVuaXQsICJjb3VsZG4ndCBuZWdvdGlhdGUg ZWFwIik7Cj4gLSsJc3RhdHVzID0gRVhJVF9QRUVSX0FVVEhfRkFJTEVEOwo+IC0rCXJldHVybjsK PiAtKyAgICB9Cj4gLSsjZW5kaWYKPiAtKwo+IC0gICAgIG5ld19waGFzZShQSEFTRV9BVVRIRU5U SUNBVEUpOwo+IC0gICAgIGF1dGggPSAwOwo+IC0gICAgIGlmIChnby0+bmVnX2VhcCkgewo+IC1A QCAtMTI3Nyw2ICsxMzM0LDE1IEBAIGF1dGhfY2hlY2tfb3B0aW9ucygpCj4gLSAJCQkJICAgIG91 cl9uYW1lLCAxLCAmbGFja3NfaXApOwo+IC0gICAgIH0KPiAtIAo+IC0rI2lmZGVmIFVTRV9FQVBU TFMKPiAtKyAgICBpZiAoIWNhbl9hdXRoICYmIHdvLT5uZWdfZWFwKSB7Cj4gLSsJY2FuX2F1dGgg PQo+IC0rCSAgICBoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKChleHBsaWNpdF9yZW1vdGUgPyBy ZW1vdGVfbmFtZSA6Cj4gLSsJCQkJICAgICAgIE5VTEwpLCBvdXJfbmFtZSwgMSwgJmxhY2tzX2lw KTsKPiAtKwo+IC0rICAgIH0KPiAtKyNlbmRpZgo+IC0rCj4gLSAgICAgaWYgKGF1dGhfcmVxdWly ZWQgJiYgIWNhbl9hdXRoICYmIG5vYXV0aF9hZGRycyA9PSBOVUxMKSB7Cj4gLSAJaWYgKGRlZmF1 bHRfYXV0aCkgewo+IC0gCSAgICBvcHRpb25fZXJyb3IoCj4gLUBAIC0xMzMxLDcgKzEzOTcsMTEg QEAgYXV0aF9yZXNldCh1bml0KQo+IC0gCXBhc3N3ZFswXSAhPSAwIHx8Cj4gLSAJKGhhZGNoYXAg PT0gMSB8fCAoaGFkY2hhcCA9PSAtMSAmJiBoYXZlX2NoYXBfc2VjcmV0KHVzZXIsCj4gLSAJICAg IChleHBsaWNpdF9yZW1vdGU/IHJlbW90ZV9uYW1lOiBOVUxMKSwgMCwgTlVMTCkpKSB8fAo+IC0t CWhhdmVfc3JwX3NlY3JldCh1c2VyLCAoZXhwbGljaXRfcmVtb3RlPyByZW1vdGVfbmFtZTogTlVM TCksIDAsIE5VTEwpKTsKPiAtKwloYXZlX3NycF9zZWNyZXQodXNlciwgKGV4cGxpY2l0X3JlbW90 ZT8gcmVtb3RlX25hbWU6IE5VTEwpLCAwLCBOVUxMKQo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAt KwkJfHwgaGF2ZV9lYXB0bHNfc2VjcmV0X2NsaWVudCh1c2VyLCAoZXhwbGljaXRfcmVtb3RlPyBy ZW1vdGVfbmFtZTogTlVMTCkpCj4gLSsjZW5kaWYKPiAtKwkpOwo+IC0gCj4gLSAgICAgaGFkY2hh cCA9IC0xOwo+IC0gICAgIGlmIChnby0+bmVnX3VwYXAgJiYgIXVzZWxvZ2luICYmICFoYXZlX3Bh cF9zZWNyZXQoTlVMTCkpCj4gLUBAIC0xMzQ2LDggKzE0MTYsMTQgQEAgYXV0aF9yZXNldCh1bml0 KQo+IC0gCSAgICAhaGF2ZV9jaGFwX3NlY3JldCgoZXhwbGljaXRfcmVtb3RlPyByZW1vdGVfbmFt ZTogTlVMTCksIG91cl9uYW1lLAo+IC0gCQkxLCBOVUxMKSkpICYmCj4gLSAJIWhhdmVfc3JwX3Nl Y3JldCgoZXhwbGljaXRfcmVtb3RlPyByZW1vdGVfbmFtZTogTlVMTCksIG91cl9uYW1lLCAxLAo+ IC0tCSAgICBOVUxMKSkKPiAtKwkgICAgTlVMTCkKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsJ ICYmICFoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKChleHBsaWNpdF9yZW1vdGU/IHJlbW90ZV9u YW1lOiBOVUxMKSwKPiAtKwkJCQkgICBvdXJfbmFtZSwgMSwgTlVMTCkKPiAtKyNlbmRpZgo+IC0r CQkpCj4gLSAJZ28tPm5lZ19lYXAgPSAwOwo+IC0rCj4gLSB9Cj4gLSAKPiAtIAo+IC1AQCAtMTcw Nyw2ICsxNzgzLDcgQEAgaGF2ZV9zcnBfc2VjcmV0KGNsaWVudCwgc2VydmVyLCBuZWVkX2lwLCBs YWNrc19pcHApCj4gLSB9Cj4gLSAKPiAtIAo+IC0rCj4gLSAvKgo+IC0gICogZ2V0X3NlY3JldCAt IG9wZW4gdGhlIENIQVAgc2VjcmV0IGZpbGUgYW5kIHJldHVybiB0aGUgc2VjcmV0Cj4gLSAgKiBm b3IgYXV0aGVudGljYXRpbmcgdGhlIGdpdmVuIGNsaWVudCBvbiB0aGUgZ2l2ZW4gc2VydmVyLgo+ IC1AQCAtMjM1OSwzICsyNDM2LDMzNSBAQCBhdXRoX3NjcmlwdChzY3JpcHQpCj4gLSAKPiAtICAg ICBhdXRoX3NjcmlwdF9waWQgPSBydW5fcHJvZ3JhbShzY3JpcHQsIGFyZ3YsIDAsIGF1dGhfc2Ny aXB0X2RvbmUsIE5VTEwsIDApOwo+IC0gfQo+IC0rCj4gLSsKPiAtKyNpZmRlZiBVU0VfRUFQVExT Cj4gLStzdGF0aWMgaW50Cj4gLStoYXZlX2VhcHRsc19zZWNyZXRfc2VydmVyKGNsaWVudCwgc2Vy dmVyLCBuZWVkX2lwLCBsYWNrc19pcHApCj4gLSsgICAgY2hhciAqY2xpZW50Owo+IC0rICAgIGNo YXIgKnNlcnZlcjsKPiAtKyAgICBpbnQgbmVlZF9pcDsKPiAtKyAgICBpbnQgKmxhY2tzX2lwcDsK PiAtK3sKPiAtKyAgICBGSUxFICpmOwo+IC0rICAgIGludCByZXQ7Cj4gLSsgICAgY2hhciAqZmls ZW5hbWU7Cj4gLSsgICAgc3RydWN0IHdvcmRsaXN0ICphZGRyczsKPiAtKyAgICBjaGFyIHNlcnZj ZXJ0ZmlsZVtNQVhXT1JETEVOXTsKPiAtKyAgICBjaGFyIGNsaWNlcnRmaWxlW01BWFdPUkRMRU5d Owo+IC0rICAgIGNoYXIgY2FjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKPiAtKyAgICBjaGFyIHBrZmls ZVtNQVhXT1JETEVOXTsKPiAtKwo+IC0rICAgIGZpbGVuYW1lID0gX1BBVEhfRUFQVExTU0VSVkZJ TEU7Cj4gLSsgICAgZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOwo+IC0rICAgIGlmIChmID09IE5V TEwpCj4gLSsJCXJldHVybiAwOwo+IC0rCj4gLSsgICAgaWYgKGNsaWVudCAhPSBOVUxMICYmIGNs aWVudFswXSA9PSAwKQo+IC0rCQljbGllbnQgPSBOVUxMOwo+IC0rICAgIGVsc2UgaWYgKHNlcnZl ciAhPSBOVUxMICYmIHNlcnZlclswXSA9PSAwKQo+IC0rCQlzZXJ2ZXIgPSBOVUxMOwo+IC0rCj4g LSsgICAgcmV0ID0KPiAtKwlzY2FuX2F1dGhmaWxlX2VhcHRscyhmLCBjbGllbnQsIHNlcnZlciwg Y2xpY2VydGZpbGUsIHNlcnZjZXJ0ZmlsZSwKPiAtKwkJCSAgICAgY2FjZXJ0ZmlsZSwgcGtmaWxl LCAmYWRkcnMsIE5VTEwsIGZpbGVuYW1lLAo+IC0rCQkJICAgICAwKTsKPiAtKwo+IC0rICAgIGZj bG9zZShmKTsKPiAtKwo+IC0rLyoKPiAtKyAgICBpZiAocmV0ID49IDAgJiYgIWVhcHRsc19pbml0 X3NzbCgxLCBjYWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUsCj4gLSsJCQkJY2xpY2VydGZpbGUsIHBr ZmlsZSkpCj4gLSsJCXJldCA9IC0xOwo+IC0rKi8KPiAtKwo+IC0rCWlmIChyZXQgPj0gMCAmJiBu ZWVkX2lwICYmICFzb21lX2lwX29rKGFkZHJzKSkgewo+IC0rCQlpZiAobGFja3NfaXBwICE9IDAp Cj4gLSsJCQkqbGFja3NfaXBwID0gMTsKPiAtKwkJcmV0ID0gLTE7Cj4gLSsgICAgfQo+IC0rICAg IGlmIChhZGRycyAhPSAwKQo+IC0rCQlmcmVlX3dvcmRsaXN0KGFkZHJzKTsKPiAtKwo+IC0rICAg IHJldHVybiByZXQgPj0gMDsKPiAtK30KPiAtKwo+IC0rCj4gLStzdGF0aWMgaW50Cj4gLStoYXZl X2VhcHRsc19zZWNyZXRfY2xpZW50KGNsaWVudCwgc2VydmVyKQo+IC0rICAgIGNoYXIgKmNsaWVu dDsKPiAtKyAgICBjaGFyICpzZXJ2ZXI7Cj4gLSt7Cj4gLSsgICAgRklMRSAqZjsKPiAtKyAgICBp bnQgcmV0Owo+IC0rICAgIGNoYXIgKmZpbGVuYW1lOwo+IC0rICAgIHN0cnVjdCB3b3JkbGlzdCAq YWRkcnMgPSBOVUxMOwo+IC0rICAgIGNoYXIgc2VydmNlcnRmaWxlW01BWFdPUkRMRU5dOwo+IC0r ICAgIGNoYXIgY2xpY2VydGZpbGVbTUFYV09SRExFTl07Cj4gLSsgICAgY2hhciBjYWNlcnRmaWxl W01BWFdPUkRMRU5dOwo+IC0rICAgIGNoYXIgcGtmaWxlW01BWFdPUkRMRU5dOwo+IC0rCj4gLSsg ICAgaWYgKGNsaWVudCAhPSBOVUxMICYmIGNsaWVudFswXSA9PSAwKQo+IC0rCQljbGllbnQgPSBO VUxMOwo+IC0rICAgIGVsc2UgaWYgKHNlcnZlciAhPSBOVUxMICYmIHNlcnZlclswXSA9PSAwKQo+ IC0rCQlzZXJ2ZXIgPSBOVUxMOwo+IC0rCj4gLSsJaWYgKGNhY2VydF9maWxlICYmIGNlcnRfZmls ZSAmJiBwcml2a2V5X2ZpbGUpCj4gLSsJCXJldHVybiAxOwo+IC0rCj4gLSsgICAgZmlsZW5hbWUg PSBfUEFUSF9FQVBUTFNDTElGSUxFOwo+IC0rICAgIGYgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsK PiAtKyAgICBpZiAoZiA9PSBOVUxMKQo+IC0rCQlyZXR1cm4gMDsKPiAtKwo+IC0rICAgIHJldCA9 Cj4gLSsJc2Nhbl9hdXRoZmlsZV9lYXB0bHMoZiwgY2xpZW50LCBzZXJ2ZXIsIGNsaWNlcnRmaWxl LCBzZXJ2Y2VydGZpbGUsCj4gLSsJCQkgICAgIGNhY2VydGZpbGUsIHBrZmlsZSwgJmFkZHJzLCBO VUxMLCBmaWxlbmFtZSwKPiAtKwkJCSAgICAgMCk7Cj4gLSsgICAgZmNsb3NlKGYpOwo+IC0rCj4g LSsvKgo+IC0rICAgIGlmIChyZXQgPj0gMCAmJiAhZWFwdGxzX2luaXRfc3NsKDAsIGNhY2VydGZp bGUsIGNsaWNlcnRmaWxlLAo+IC0rCQkJCXNlcnZjZXJ0ZmlsZSwgcGtmaWxlKSkKPiAtKwkJcmV0 ID0gLTE7Cj4gLSsqLwo+IC0rCj4gLSsgICAgaWYgKGFkZHJzICE9IDApCj4gLSsJCWZyZWVfd29y ZGxpc3QoYWRkcnMpOwo+IC0rCj4gLSsgICAgcmV0dXJuIHJldCA+PSAwOwo+IC0rfQo+IC0rCj4g LSsKPiAtK3N0YXRpYyBpbnQKPiAtK3NjYW5fYXV0aGZpbGVfZWFwdGxzKGYsIGNsaWVudCwgc2Vy dmVyLCBjbGlfY2VydCwgc2Vydl9jZXJ0LCBjYV9jZXJ0LCBwaywKPiAtKwkJICAgICBhZGRycywg b3B0cywgZmlsZW5hbWUsIGZsYWdzKQo+IC0rICAgIEZJTEUgKmY7Cj4gLSsgICAgY2hhciAqY2xp ZW50Owo+IC0rICAgIGNoYXIgKnNlcnZlcjsKPiAtKyAgICBjaGFyICpjbGlfY2VydDsKPiAtKyAg ICBjaGFyICpzZXJ2X2NlcnQ7Cj4gLSsgICAgY2hhciAqY2FfY2VydDsKPiAtKyAgICBjaGFyICpw azsKPiAtKyAgICBzdHJ1Y3Qgd29yZGxpc3QgKiphZGRyczsKPiAtKyAgICBzdHJ1Y3Qgd29yZGxp c3QgKipvcHRzOwo+IC0rICAgIGNoYXIgKmZpbGVuYW1lOwo+IC0rICAgIGludCBmbGFnczsKPiAt K3sKPiAtKyAgICBpbnQgbmV3bGluZTsKPiAtKyAgICBpbnQgZ290X2ZsYWcsIGJlc3RfZmxhZzsK PiAtKyAgICBzdHJ1Y3Qgd29yZGxpc3QgKmFwLCAqYWRkcl9saXN0LCAqYWxpc3QsICoqYXBwOwo+ IC0rICAgIGNoYXIgd29yZFtNQVhXT1JETEVOXTsKPiAtKwo+IC0rICAgIGlmIChhZGRycyAhPSBO VUxMKQo+IC0rCSphZGRycyA9IE5VTEw7Cj4gLSsgICAgaWYgKG9wdHMgIT0gTlVMTCkKPiAtKwkq b3B0cyA9IE5VTEw7Cj4gLSsgICAgYWRkcl9saXN0ID0gTlVMTDsKPiAtKyAgICBpZiAoIWdldHdv cmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKPiAtKwlyZXR1cm4gLTE7CQkvKiBmaWxl IGlzIGVtcHR5Pz8/ICovCj4gLSsgICAgbmV3bGluZSA9IDE7Cj4gLSsgICAgYmVzdF9mbGFnID0g LTE7Cj4gLSsgICAgZm9yICg7Oykgewo+IC0rCS8qCj4gLSsJICogU2tpcCB1bnRpbCB3ZSBmaW5k IGEgd29yZCBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLgo+IC0rCSAqLwo+IC0rCXdoaWxlICghbmV3 bGluZSAmJiBnZXR3b3JkKGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkpOwo+IC0rCWlmICgh bmV3bGluZSkKPiAtKwkgICAgYnJlYWs7CQkvKiBnb3QgdG8gZW5kIG9mIGZpbGUgKi8KPiAtKwo+ IC0rCS8qCj4gLSsJICogR290IGEgY2xpZW50IC0gY2hlY2sgaWYgaXQncyBhIG1hdGNoIG9yIGEg d2lsZGNhcmQuCj4gLSsJICovCj4gLSsJZ290X2ZsYWcgPSAwOwo+IC0rCWlmIChjbGllbnQgIT0g TlVMTCAmJiBzdHJjbXAod29yZCwgY2xpZW50KSAhPSAwICYmICFJU1dJTEQod29yZCkpIHsKPiAt KwkgICAgbmV3bGluZSA9IDA7Cj4gLSsJICAgIGNvbnRpbnVlOwo+IC0rCX0KPiAtKwlpZiAoIUlT V0lMRCh3b3JkKSkKPiAtKwkgICAgZ290X2ZsYWcgPSBOT05XSUxEX0NMSUVOVDsKPiAtKwo+IC0r CS8qCj4gLSsJICogTm93IGdldCBhIHNlcnZlciBhbmQgY2hlY2sgaWYgaXQgbWF0Y2hlcy4KPiAt KwkgKi8KPiAtKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5ld2xpbmUsIGZpbGVuYW1lKSkKPiAt KwkgICAgYnJlYWs7Cj4gLSsJaWYgKG5ld2xpbmUpCj4gLSsJICAgIGNvbnRpbnVlOwo+IC0rCWlm ICghSVNXSUxEKHdvcmQpKSB7Cj4gLSsJICAgIGlmIChzZXJ2ZXIgIT0gTlVMTCAmJiBzdHJjbXAo d29yZCwgc2VydmVyKSAhPSAwKQo+IC0rCQljb250aW51ZTsKPiAtKwkgICAgZ290X2ZsYWcgfD0g Tk9OV0lMRF9TRVJWRVI7Cj4gLSsJfQo+IC0rCj4gLSsJLyoKPiAtKwkgKiBHb3Qgc29tZSBzb3J0 IG9mIGEgbWF0Y2ggLSBzZWUgaWYgaXQncyBiZXR0ZXIgdGhhbiB3aGF0Cj4gLSsJICogd2UgaGF2 ZSBhbHJlYWR5Lgo+IC0rCSAqLwo+IC0rCWlmIChnb3RfZmxhZyA8PSBiZXN0X2ZsYWcpCj4gLSsJ ICAgIGNvbnRpbnVlOwo+IC0rCj4gLSsJLyoKPiAtKwkgKiBHZXQgdGhlIGNsaV9jZXJ0Cj4gLSsJ ICovCj4gLSsJaWYgKCFnZXR3b3JkKGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkpCj4gLSsJ ICAgIGJyZWFrOwo+IC0rCWlmIChuZXdsaW5lKQo+IC0rCSAgICBjb250aW51ZTsKPiAtKwlpZiAo c3RyY21wKHdvcmQsICItIikgIT0gMCkgewo+IC0rCSAgICBzdHJsY3B5KGNsaV9jZXJ0LCB3b3Jk LCBNQVhXT1JETEVOKTsKPiAtKwl9IGVsc2UKPiAtKwkgICAgY2xpX2NlcnRbMF0gPSAwOwo+IC0r Cj4gLSsJLyoKPiAtKwkgKiBHZXQgc2Vydl9jZXJ0Cj4gLSsJICovCj4gLSsJaWYgKCFnZXR3b3Jk KGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkpCj4gLSsJICAgIGJyZWFrOwo+IC0rCWlmIChu ZXdsaW5lKQo+IC0rCSAgICBjb250aW51ZTsKPiAtKwlpZiAoc3RyY21wKHdvcmQsICItIikgIT0g MCkgewo+IC0rCSAgICBzdHJsY3B5KHNlcnZfY2VydCwgd29yZCwgTUFYV09SRExFTik7Cj4gLSsJ fSBlbHNlCj4gLSsJICAgIHNlcnZfY2VydFswXSA9IDA7Cj4gLSsKPiAtKwkvKgo+IC0rCSAqIEdl dCBjYV9jZXJ0Cj4gLSsJICovCj4gLSsJaWYgKCFnZXR3b3JkKGYsIHdvcmQsICZuZXdsaW5lLCBm aWxlbmFtZSkpCj4gLSsJICAgIGJyZWFrOwo+IC0rCWlmIChuZXdsaW5lKQo+IC0rCSAgICBjb250 aW51ZTsKPiAtKwlzdHJsY3B5KGNhX2NlcnQsIHdvcmQsIE1BWFdPUkRMRU4pOwo+IC0rCj4gLSsJ LyoKPiAtKwkgKiBHZXQgcGsKPiAtKwkgKi8KPiAtKwlpZiAoIWdldHdvcmQoZiwgd29yZCwgJm5l d2xpbmUsIGZpbGVuYW1lKSkKPiAtKwkgICAgYnJlYWs7Cj4gLSsJaWYgKG5ld2xpbmUpCj4gLSsJ ICAgIGNvbnRpbnVlOwo+IC0rCXN0cmxjcHkocGssIHdvcmQsIE1BWFdPUkRMRU4pOwo+IC0rCj4g LSsKPiAtKwkvKgo+IC0rCSAqIE5vdyByZWFkIGFkZHJlc3MgYXV0aG9yaXphdGlvbiBpbmZvIGFu ZCBtYWtlIGEgd29yZGxpc3QuCj4gLSsJICovCj4gLSsJYXBwID0gJmFsaXN0Owo+IC0rCWZvciAo OzspIHsKPiAtKwkgICAgaWYgKCFnZXR3b3JkKGYsIHdvcmQsICZuZXdsaW5lLCBmaWxlbmFtZSkg fHwgbmV3bGluZSkKPiAtKwkJYnJlYWs7Cj4gLSsJICAgIGFwID0gKHN0cnVjdCB3b3JkbGlzdCAq KQo+IC0rCQltYWxsb2Moc2l6ZW9mKHN0cnVjdCB3b3JkbGlzdCkgKyBzdHJsZW4od29yZCkgKyAx KTsKPiAtKwkgICAgaWYgKGFwID09IE5VTEwpCj4gLSsJCW5vdm0oImF1dGhvcml6ZWQgYWRkcmVz c2VzIik7Cj4gLSsJICAgIGFwLT53b3JkID0gKGNoYXIgKikgKGFwICsgMSk7Cj4gLSsJICAgIHN0 cmNweShhcC0+d29yZCwgd29yZCk7Cj4gLSsJICAgICphcHAgPSBhcDsKPiAtKwkgICAgYXBwID0g JmFwLT5uZXh0Owo+IC0rCX0KPiAtKwkqYXBwID0gTlVMTDsKPiAtKwkvKgo+IC0rCSAqIFRoaXMg aXMgdGhlIGJlc3Qgc28gZmFyOyByZW1lbWJlciBpdC4KPiAtKwkgKi8KPiAtKwliZXN0X2ZsYWcg PSBnb3RfZmxhZzsKPiAtKwlpZiAoYWRkcl9saXN0KQo+IC0rCSAgICBmcmVlX3dvcmRsaXN0KGFk ZHJfbGlzdCk7Cj4gLSsJYWRkcl9saXN0ID0gYWxpc3Q7Cj4gLSsKPiAtKwlpZiAoIW5ld2xpbmUp Cj4gLSsJICAgIGJyZWFrOwo+IC0rICAgIH0KPiAtKwo+IC0rICAgIC8qIHNjYW4gZm9yIGEgLS0g d29yZCBpbmRpY2F0aW5nIHRoZSBzdGFydCBvZiBvcHRpb25zICovCj4gLSsgICAgZm9yIChhcHAg PSAmYWRkcl9saXN0OyAoYXAgPSAqYXBwKSAhPSBOVUxMOyBhcHAgPSAmYXAtPm5leHQpCj4gLSsJ aWYgKHN0cmNtcChhcC0+d29yZCwgIi0tIikgPT0gMCkKPiAtKwkgICAgYnJlYWs7Cj4gLSsgICAg LyogYXAgPSBzdGFydCBvZiBvcHRpb25zICovCj4gLSsgICAgaWYgKGFwICE9IE5VTEwpIHsKPiAt KwlhcCA9IGFwLT5uZXh0OwkJLyogZmlyc3Qgb3B0aW9uICovCj4gLSsJZnJlZSgqYXBwKTsJCS8q IGZyZWUgdGhlICItLSIgd29yZCAqLwo+IC0rCSphcHAgPSBOVUxMOwkJLyogdGVybWluYXRlIGFk ZHIgbGlzdCAqLwo+IC0rICAgIH0KPiAtKyAgICBpZiAob3B0cyAhPSBOVUxMKQo+IC0rCSpvcHRz ID0gYXA7Cj4gLSsgICAgZWxzZSBpZiAoYXAgIT0gTlVMTCkKPiAtKwlmcmVlX3dvcmRsaXN0KGFw KTsKPiAtKyAgICBpZiAoYWRkcnMgIT0gTlVMTCkKPiAtKwkqYWRkcnMgPSBhZGRyX2xpc3Q7Cj4g LSsgICAgZWxzZSBpZiAoYWRkcl9saXN0ICE9IE5VTEwpCj4gLSsJZnJlZV93b3JkbGlzdChhZGRy X2xpc3QpOwo+IC0rCj4gLSsgICAgcmV0dXJuIGJlc3RfZmxhZzsKPiAtK30KPiAtKwo+IC0rCj4g LStpbnQKPiAtK2dldF9lYXB0bHNfc2VjcmV0KHVuaXQsIGNsaWVudCwgc2VydmVyLCBjbGljZXJ0 ZmlsZSwgc2VydmNlcnRmaWxlLAo+IC0rCQkgIGNhY2VydGZpbGUsIHBrZmlsZSwgYW1fc2VydmVy KQo+IC0rICAgIGludCB1bml0Owo+IC0rICAgIGNoYXIgKmNsaWVudDsKPiAtKyAgICBjaGFyICpz ZXJ2ZXI7Cj4gLSsgICAgY2hhciAqY2xpY2VydGZpbGU7Cj4gLSsgICAgY2hhciAqc2VydmNlcnRm aWxlOwo+IC0rICAgIGNoYXIgKmNhY2VydGZpbGU7Cj4gLSsgICAgY2hhciAqcGtmaWxlOwo+IC0r ICAgIGludCBhbV9zZXJ2ZXI7Cj4gLSt7Cj4gLSsgICAgRklMRSAqZnA7Cj4gLSsgICAgaW50IHJl dDsKPiAtKyAgICBjaGFyICpmaWxlbmFtZSAgICAgICAgID0gTlVMTDsKPiAtKyAgICBzdHJ1Y3Qg d29yZGxpc3QgKmFkZHJzID0gTlVMTDsKPiAtKyAgICBzdHJ1Y3Qgd29yZGxpc3QgKm9wdHMgID0g TlVMTDsKPiAtKwo+IC0rCS8qIGluIGNsaWVudCBtb2RlIHRoZSBjYStjZXJ0K3ByaXZrZXkgY2Fu IGFsc28gYmUgc3BlY2lmaWVkIGFzIG9wdGlvbnMgKi8KPiAtKwlpZiAoIWFtX3NlcnZlciAmJiBj YWNlcnRfZmlsZSAmJiBjZXJ0X2ZpbGUgJiYgcHJpdmtleV9maWxlICkKPiAtKwl7Cj4gLSsJCXN0 cmxjcHkoIGNsaWNlcnRmaWxlLCBjZXJ0X2ZpbGUsIE1BWFdPUkRMRU4gKTsKPiAtKwkJc3RybGNw eSggY2FjZXJ0ZmlsZSwgY2FjZXJ0X2ZpbGUsIE1BWFdPUkRMRU4gKTsKPiAtKwkJc3RybGNweSgg cGtmaWxlLCBwcml2a2V5X2ZpbGUsIE1BWFdPUkRMRU4gKTsKPiAtKwkJc2VydmNlcnRmaWxlWzBd ID0gJ1wwJzsKPiAtKwl9Cj4gLSsJZWxzZQo+IC0rCXsKPiAtKwkJZmlsZW5hbWUgPSAoYW1fc2Vy dmVyID8gX1BBVEhfRUFQVExTU0VSVkZJTEUgOiBfUEFUSF9FQVBUTFNDTElGSUxFKTsKPiAtKwkJ YWRkcnMgPSBOVUxMOwo+IC0rCj4gLSsJCWZwID0gZm9wZW4oZmlsZW5hbWUsICJyIik7Cj4gLSsJ CWlmIChmcCA9PSBOVUxMKQo+IC0rCQl7Cj4gLSsJCQllcnJvcigiQ2FuJ3Qgb3BlbiBlYXAtdGxz IHNlY3JldCBmaWxlICVzOiAlbSIsIGZpbGVuYW1lKTsKPiAtKwkJCXJldHVybiAwOwo+IC0rICAg CSAJfQo+IC0rCj4gLSsJCWNoZWNrX2FjY2VzcyhmcCwgZmlsZW5hbWUpOwo+IC0rCj4gLSsJCXJl dCA9IHNjYW5fYXV0aGZpbGVfZWFwdGxzKGZwLCBjbGllbnQsIHNlcnZlciwgY2xpY2VydGZpbGUs IHNlcnZjZXJ0ZmlsZSwKPiAtKwkJCQljYWNlcnRmaWxlLCBwa2ZpbGUsICZhZGRycywgJm9wdHMs IGZpbGVuYW1lLCAwKTsKPiAtKwo+IC0rCQlmY2xvc2UoZnApOwo+IC0rCj4gLSsJCWlmIChyZXQg PCAwKSByZXR1cm4gMDsKPiAtKwl9Cj4gLSsKPiAtKyAgICBpZiAoZWFwdGxzX3Bhc3N3ZF9ob29r KQo+IC0rICAgIHsKPiAtKwkJZGJnbG9nKCAiQ2FsbGluZyBlYXB0bHMgcGFzc3dvcmQgaG9vayIg KTsKPiAtKwkJaWYgKCAoKmVhcHRsc19wYXNzd2RfaG9vaykocGtmaWxlLCBwYXNzd2QpIDwgMCkK PiAtKwkJewo+IC0rCSAgIAkJIGVycm9yKCJVbmFibGUgdG8gb2J0YWluIEVBUC1UTFMgcGFzc3dv cmQgZm9yICVzICglcykgZnJvbSBwbHVnaW4iLAo+IC0rCQkJCWNsaWVudCwgcGtmaWxlKTsKPiAt KwkJICAgIHJldHVybiAwOwo+IC0rCQl9Cj4gLSsJfQo+IC0rICAgIGlmIChhbV9zZXJ2ZXIpCj4g LSsJCXNldF9hbGxvd2VkX2FkZHJzKHVuaXQsIGFkZHJzLCBvcHRzKTsKPiAtKyAgICBlbHNlIGlm IChvcHRzICE9IE5VTEwpCj4gLSsJCWZyZWVfd29yZGxpc3Qob3B0cyk7Cj4gLSsgICAgaWYgKGFk ZHJzICE9IE5VTEwpCj4gLSsJCWZyZWVfd29yZGxpc3QoYWRkcnMpOwo+IC0rCj4gLSsgICAgcmV0 dXJuIDE7Cj4gLSt9Cj4gLSsjZW5kaWYKPiAtKwo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9jY3AuYyBi L3BwcGQvY2NwLmMKPiAtaW5kZXggN2Q3OTIyYWZjZmMwLi4wYTkzYjE1YWVlZjMgMTAwNjQ0Cj4g LS0tLSBhL3BwcGQvY2NwLmMKPiAtKysrIGIvcHBwZC9jY3AuYwo+IC1AQCAtNTQwLDYgKzU0MCw5 IEBAIGNjcF9yZXNldGNpKGYpCj4gLSAgICAgaWYgKGdvLT5tcHBlKSB7Cj4gLSAJY2NwX29wdGlv bnMgKmFvID0gJmNjcF9hbGxvd29wdGlvbnNbZi0+dW5pdF07Cj4gLSAJaW50IGF1dGhfbXNjaGFw X2JpdHMgPSBhdXRoX2RvbmVbZi0+dW5pdF07Cj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rCWlu dCBhdXRoX2VhcF9iaXRzID0gYXV0aF9kb25lW2YtPnVuaXRdOwo+IC0rI2VuZGlmCj4gLSAJaW50 IG51bWJpdHM7Cj4gLSAKPiAtIAkvKgo+IC1AQCAtNTY3LDggKzU3MCwyMyBAQCBjY3BfcmVzZXRj aShmKQo+IC0gCSAgICBsY3BfY2xvc2UoZi0+dW5pdCwgIk1QUEUgcmVxdWlyZWQgYnV0IG5vdCBh dmFpbGFibGUiKTsKPiAtIAkgICAgcmV0dXJuOwo+IC0gCX0KPiAtKwo+IC0rI2lmZGVmIFVTRV9F QVBUTFMKPiAtKyAgICAvKgo+IC0rICAgICAqIE1QUEUgaXMgYWxzbyBwb3NzaWJsZSBpbiBjb21i aW5hdGlvbiB3aXRoIEVBUC1UTFMuCj4gLSsgICAgICogSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRl dGVjdCBpZiB3ZSdyZSBkb2luZyBFQVAgb3IgRUFQLVRMUwo+IC0rICAgICAqIGF0IHRoaXMgc3Rh Z2UsIGhlbmNlIHdlIGFjY2VwdCBhbGwgZm9ybXMgb2YgRUFQLiBJZiBUTFMgaXMKPiAtKyAgICAg KiBub3QgdXNlZCB0aGVuIHRoZSBNUFBFIGtleXMgd2lsbCBub3QgYmUgZGVyaXZlZCBhbnl3YXku Cj4gLSsgICAgICovCj4gLSsJLyogTGVhdmUgb25seSB0aGUgZWFwIGF1dGggYml0cyBzZXQgKi8K PiAtKwlhdXRoX2VhcF9iaXRzICY9IChFQVBfV0lUSFBFRVIgfCBFQVBfUEVFUiApOwo+IC0rCj4g LSsJaWYgKChudW1iaXRzID09IDApICYmIChhdXRoX2VhcF9iaXRzID09IDApKSB7Cj4gLSsJICAg IGVycm9yKCJNUFBFIHJlcXVpcmVkLCBidXQgTVMtQ0hBUFt2Ml0gbm9yIEVBUC1UTFMgYXV0aCBh cmUgcGVyZm9ybWVkLiIpOwo+IC0rI2Vsc2UKPiAtIAlpZiAoIW51bWJpdHMpIHsKPiAtLQkgICAg ZXJyb3IoIk1QUEUgcmVxdWlyZWQsIGJ1dCBNUy1DSEFQW3YyXSBhdXRoIG5vdCBwZXJmb3JtZWQu Iik7Cj4gLSsJCWVycm9yKCJNUFBFIHJlcXVpcmVkLCBidXQgTVMtQ0hBUFt2Ml0gYXV0aCBub3Qg cGVyZm9ybWVkLiIpOwo+IC0rI2VuZGlmCj4gLSAJICAgIGxjcF9jbG9zZShmLT51bml0LCAiTVBQ RSByZXF1aXJlZCBidXQgbm90IGF2YWlsYWJsZSIpOwo+IC0gCSAgICByZXR1cm47Cj4gLSAJfQo+ IC1kaWZmIC0tZ2l0IGEvcHBwZC9jaGFwLW1kNS5jIGIvcHBwZC9jaGFwLW1kNS5jCj4gLWluZGV4 IDc3ZGQ0ZWNjNzA1OS4uMjY5YjUyY2IyMDQxIDEwMDY0NAo+IC0tLS0gYS9wcHBkL2NoYXAtbWQ1 LmMKPiAtKysrIGIvcHBwZC9jaGFwLW1kNS5jCj4gLUBAIC0zNiw3ICszNiwxMSBAQAo+IC0gI2lu Y2x1ZGUgImNoYXAtbmV3LmgiCj4gLSAjaW5jbHVkZSAiY2hhcC1tZDUuaCIKPiAtICNpbmNsdWRl ICJtYWdpYy5oIgo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyNpbmNsdWRlICJlYXAtdGxzLmgi Cj4gLSsjZWxzZQo+IC0gI2luY2x1ZGUgIm1kNS5oIgo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMg Ki8KPiAtIAo+IC0gI2RlZmluZSBNRDVfSEFTSF9TSVpFCQkxNgo+IC0gI2RlZmluZSBNRDVfTUlO X0NIQUxMRU5HRQkxNgo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9lYXAtdGxzLmMgYi9wcHBkL2VhcC10 bHMuYwo+IC1uZXcgZmlsZSBtb2RlIDEwMDY0NAo+IC1pbmRleCAwMDAwMDAwMDAwMDAuLmRmNGJj MWI5OTZjOQo+IC0tLS0gL2Rldi9udWxsCj4gLSsrKyBiL3BwcGQvZWFwLXRscy5jCj4gLUBAIC0w LDAgKzEsMTM4MyBAQAo+IC0rLyogKiBlYXAtdGxzLmMgLSBFQVAtVExTIGltcGxlbWVudGF0aW9u IGZvciBQUFAKPiAtKyAqCj4gLSsgKiBDb3B5cmlnaHQgKGMpIEJlbmlhbWlubyBHYWx2YW5pIDIw MDUgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAtKyAqCj4gLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiAtKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucwo+IC0rICogYXJlIG1ldDoKPiAtKyAqCj4gLSsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+IC0rICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgo+IC0rICoKPiAtKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gLSsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KPiAtKyAqICAg IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUKPiAtKyAqICAgIGRpc3RyaWJ1dGlvbi4KPiAtKyAqCj4gLSsgKiAzLiBUaGUgbmFtZShzKSBv ZiB0aGUgYXV0aG9ycyBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIHVzZWQgdG8KPiAtKyAq ICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0Cj4gLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gLSsgKgo+IC0r ICogVEhFIEFVVEhPUlMgT0YgVEhJUyBTT0ZUV0FSRSBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBX SVRIIFJFR0FSRCBUTwo+IC0rICogVEhJUyBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCj4gLSsgKiBBTkQgRklUTkVTUywgSU4gTk8g RVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkKPiAtKyAqIFNQRUNJQUws IElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwo+IC0rICog V0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBX SEVUSEVSIElOCj4gLSsgKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RI RVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HCj4gLSsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KPiAtKyAqCj4g LSsgKi8KPiAtKwo+IC0rI2luY2x1ZGUgPHN0cmluZy5oPgo+IC0rI2luY2x1ZGUgPHVuaXN0ZC5o Pgo+IC0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+IC0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4g LSsjaW5jbHVkZSA8ZmNudGwuaD4KPiAtKwo+IC0rI2luY2x1ZGUgPG9wZW5zc2wvY29uZi5oPgo+ IC0rI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5lLmg+Cj4gLSsjaW5jbHVkZSA8b3BlbnNzbC9obWFj Lmg+Cj4gLSsjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KPiAtKyNpbmNsdWRlIDxvcGVuc3NsL3g1 MDl2My5oPgo+IC0rCj4gLSsjaW5jbHVkZSAicHBwZC5oIgo+IC0rI2luY2x1ZGUgImVhcC5oIgo+ IC0rI2luY2x1ZGUgImVhcC10bHMuaCIKPiAtKyNpbmNsdWRlICJmc20uaCIKPiAtKyNpbmNsdWRl ICJsY3AuaCIKPiAtKyNpbmNsdWRlICJwYXRobmFtZXMuaCIKPiAtKwo+IC0rLyogVGhlIG9wZW5z c2wgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBlbmdpbmVzIGNhbiBiZSBsb2FkZWQgb25seSBvbmNl ICovCj4gLStzdGF0aWMgQ09ORiAgICpzc2xfY29uZmlnICA9IE5VTEw7Cj4gLStzdGF0aWMgRU5H SU5FICpjZXJ0X2VuZ2luZSA9IE5VTEw7Cj4gLStzdGF0aWMgRU5HSU5FICpwa2V5X2VuZ2luZSA9 IE5VTEw7Cj4gLSsKPiAtKyNpZmRlZiBNUFBFCj4gLSsKPiAtKyNkZWZpbmUgRUFQVExTX01QUEVf S0VZX0xFTiAgICAgMzIKPiAtKwo+IC0rLyoKPiAtKyAqIFRoZSBmb2xsb3dpbmcgc3R1ZmYgaXMg b25seSBuZWVkZWQgaWYgU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWwoKSBpcyBub3QgYXZhaWxh YmxlCj4gLSsgKi8KPiAtKwo+IC0rI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMDAx MDAwTAo+IC0rCj4gLSsvKgo+IC0rICogaHR0cHM6Ly93aWtpLm9wZW5zc2wub3JnL2luZGV4LnBo cC8xLjFfQVBJX0NoYW5nZXMKPiAtKyAqIHRyaWVzIHRvIHByb3ZpZGUgc29tZSBndWlkYW5jZSBi dXQgdWx0aW1hdGVseSBmYWxscyBzaG9ydC4KPiAtKyAqCj4gLSsgKi8KPiAtKwo+IC0rc3RhdGlj IHZvaWQgSE1BQ19DVFhfZnJlZShITUFDX0NUWCAqY3R4KQo+IC0rewo+IC0rCWlmIChjdHggIT0g TlVMTCkgewo+IC0rCQlITUFDX0NUWF9jbGVhbnVwKGN0eCk7Cj4gLSsJCU9QRU5TU0xfZnJlZShj dHgpOwo+IC0rCX0KPiAtK30KPiAtKwo+IC0rc3RhdGljIEhNQUNfQ1RYICpITUFDX0NUWF9uZXco dm9pZCkKPiAtK3sKPiAtKwlITUFDX0NUWCAqY3R4ID0gT1BFTlNTTF9tYWxsb2Moc2l6ZW9mKCpj dHgpKTsKPiAtKwlpZiAoY3R4ICE9IE5VTEwpCj4gLSsJCUhNQUNfQ1RYX2luaXQoY3R4KTsKPiAt KwlyZXR1cm4gY3R4Owo+IC0rfQo+IC0rCj4gLStzdGF0aWMgc2l6ZV90IFNTTF9nZXRfY2xpZW50 X3JhbmRvbShjb25zdCBTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqb3V0LAo+IC0rCQkJCSAgICBz aXplX3Qgb3V0bGVuKQo+IC0rewo+IC0rCWlmIChvdXRsZW4gPT0gMCkKPiAtKwkJcmV0dXJuIHNp emVvZihzc2wtPnMzLT5jbGllbnRfcmFuZG9tKTsKPiAtKwlpZiAob3V0bGVuID4gc2l6ZW9mKHNz bC0+czMtPmNsaWVudF9yYW5kb20pKQo+IC0rCQlvdXRsZW4gPSBzaXplb2Yoc3NsLT5zMy0+Y2xp ZW50X3JhbmRvbSk7Cj4gLSsJbWVtY3B5KG91dCwgc3NsLT5zMy0+Y2xpZW50X3JhbmRvbSwgb3V0 bGVuKTsKPiAtKwlyZXR1cm4gb3V0bGVuOwo+IC0rfQo+IC0rCj4gLStzdGF0aWMgc2l6ZV90IFNT TF9nZXRfc2VydmVyX3JhbmRvbShjb25zdCBTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqb3V0LAo+ IC0rCQkJCSAgICBzaXplX3Qgb3V0bGVuKQo+IC0rewo+IC0rCWlmIChvdXRsZW4gPT0gMCkKPiAt KwkJcmV0dXJuIHNpemVvZihzc2wtPnMzLT5zZXJ2ZXJfcmFuZG9tKTsKPiAtKwlpZiAob3V0bGVu ID4gc2l6ZW9mKHNzbC0+czMtPnNlcnZlcl9yYW5kb20pKQo+IC0rCQlvdXRsZW4gPSBzaXplb2Yo c3NsLT5zMy0+c2VydmVyX3JhbmRvbSk7Cj4gLSsJbWVtY3B5KG91dCwgc3NsLT5zMy0+c2VydmVy X3JhbmRvbSwgb3V0bGVuKTsKPiAtKwlyZXR1cm4gb3V0bGVuOwo+IC0rfQo+IC0rCj4gLStzdGF0 aWMgc2l6ZV90IFNTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNTSU9OICpz ZXNzaW9uLAo+IC0rCQkJCSAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90IG91dGxl bikKPiAtK3sKPiAtKwlpZiAob3V0bGVuID09IDApCj4gLSsJCXJldHVybiBzZXNzaW9uLT5tYXN0 ZXJfa2V5X2xlbmd0aDsKPiAtKwlpZiAob3V0bGVuID4gc2Vzc2lvbi0+bWFzdGVyX2tleV9sZW5n dGgpCj4gLSsJCW91dGxlbiA9IHNlc3Npb24tPm1hc3Rlcl9rZXlfbGVuZ3RoOwo+IC0rCW1lbWNw eShvdXQsIHNlc3Npb24tPm1hc3Rlcl9rZXksIG91dGxlbik7Cj4gLSsJcmV0dXJuIG91dGxlbjsK PiAtK30KPiAtKwo+IC0rCj4gLSsvKgo+IC0rICogVExTIFBSRiBmcm9tIFJGQyAyMjQ2Cj4gLSsg Ki8KPiAtK3N0YXRpYyB2b2lkIFBfaGFzaChjb25zdCBFVlBfTUQgKmV2cF9tZCwKPiAtKwkJICAg Y29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LCB1bnNpZ25lZCBpbnQgc2VjcmV0X2xlbiwKPiAt KwkJICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VlZCwgICB1bnNpZ25lZCBpbnQgc2VlZF9sZW4s Cj4gLSsJCSAgIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgaW50IG91dF9sZW4pCj4gLSt7 Cj4gLSsJSE1BQ19DVFggKmN0eF9hLCAqY3R4X291dDsKPiAtKwl1bnNpZ25lZCBjaGFyIGFbSE1B Q19NQVhfTURfQ0JMT0NLXTsKPiAtKwl1bnNpZ25lZCBpbnQgc2l6ZTsKPiAtKwo+IC0rCWN0eF9h ID0gSE1BQ19DVFhfbmV3KCk7Cj4gLSsJY3R4X291dCA9IEhNQUNfQ1RYX25ldygpOwo+IC0rCUhN QUNfSW5pdF9leChjdHhfYSwgc2VjcmV0LCBzZWNyZXRfbGVuLCBldnBfbWQsIE5VTEwpOwo+IC0r CUhNQUNfSW5pdF9leChjdHhfb3V0LCBzZWNyZXQsIHNlY3JldF9sZW4sIGV2cF9tZCwgTlVMTCk7 Cj4gLSsKPiAtKwlzaXplID0gSE1BQ19zaXplKGN0eF9vdXQpOwo+IC0rCj4gLSsJLyogQ2FsY3Vs YXRlIEEoMSkgKi8KPiAtKwlITUFDX1VwZGF0ZShjdHhfYSwgc2VlZCwgc2VlZF9sZW4pOwo+IC0r CUhNQUNfRmluYWwoY3R4X2EsIGEsIE5VTEwpOwo+IC0rCj4gLSsJd2hpbGUgKDEpIHsKPiAtKwkJ LyogQ2FsY3VsYXRlIG5leHQgcGFydCBvZiBvdXRwdXQgKi8KPiAtKwkJSE1BQ19VcGRhdGUoY3R4 X291dCwgYSwgc2l6ZSk7Cj4gLSsJCUhNQUNfVXBkYXRlKGN0eF9vdXQsIHNlZWQsIHNlZWRfbGVu KTsKPiAtKwo+IC0rCQkvKiBDaGVjayBpZiBsYXN0IHBhcnQgKi8KPiAtKwkJaWYgKG91dF9sZW4g PCBzaXplKSB7Cj4gLSsJCQlITUFDX0ZpbmFsKGN0eF9vdXQsIGEsIE5VTEwpOwo+IC0rCQkJbWVt Y3B5KG91dCwgYSwgb3V0X2xlbik7Cj4gLSsJCQlicmVhazsKPiAtKwkJfQo+IC0rCj4gLSsJCS8q IFBsYWNlIGRpZ2VzdCBpbiBvdXRwdXQgYnVmZmVyICovCj4gLSsJCUhNQUNfRmluYWwoY3R4X291 dCwgb3V0LCBOVUxMKTsKPiAtKwkJSE1BQ19Jbml0X2V4KGN0eF9vdXQsIE5VTEwsIDAsIE5VTEws IE5VTEwpOwo+IC0rCQlvdXQgKz0gc2l6ZTsKPiAtKwkJb3V0X2xlbiAtPSBzaXplOwo+IC0rCj4g LSsJCS8qIENhbGN1bGF0ZSBuZXh0IEEoaSkgKi8KPiAtKwkJSE1BQ19Jbml0X2V4KGN0eF9hLCBO VUxMLCAwLCBOVUxMLCBOVUxMKTsKPiAtKwkJSE1BQ19VcGRhdGUoY3R4X2EsIGEsIHNpemUpOwo+ IC0rCQlITUFDX0ZpbmFsKGN0eF9hLCBhLCBOVUxMKTsKPiAtKwl9Cj4gLSsKPiAtKwlITUFDX0NU WF9mcmVlKGN0eF9hKTsKPiAtKwlITUFDX0NUWF9mcmVlKGN0eF9vdXQpOwo+IC0rCW1lbXNldChh LCAwLCBzaXplb2YoYSkpOwo+IC0rfQo+IC0rCj4gLStzdGF0aWMgdm9pZCBQUkYoY29uc3QgdW5z aWduZWQgY2hhciAqc2VjcmV0LCB1bnNpZ25lZCBpbnQgc2VjcmV0X2xlbiwKPiAtKwkJY29uc3Qg dW5zaWduZWQgY2hhciAqc2VlZCwgICB1bnNpZ25lZCBpbnQgc2VlZF9sZW4sCj4gLSsJCXVuc2ln bmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgb3V0X2xlbikK PiAtK3sKPiAtKwkgICAgdW5zaWduZWQgaW50IGk7Cj4gLSsJICAgIHVuc2lnbmVkIGludCBsZW4g PSAoc2VjcmV0X2xlbiArIDEpIC8gMjsKPiAtKwljb25zdCB1bnNpZ25lZCBjaGFyICpzMSA9IHNl Y3JldDsKPiAtKwljb25zdCB1bnNpZ25lZCBjaGFyICpzMiA9IHNlY3JldCArIChzZWNyZXRfbGVu IC0gbGVuKTsKPiAtKwo+IC0rCVBfaGFzaChFVlBfbWQ1KCksICBzMSwgbGVuLCBzZWVkLCBzZWVk X2xlbiwgb3V0LCBvdXRfbGVuKTsKPiAtKwlQX2hhc2goRVZQX3NoYTEoKSwgczIsIGxlbiwgc2Vl ZCwgc2VlZF9sZW4sIGJ1Ziwgb3V0X2xlbik7Cj4gLSsKPiAtKwlmb3IgKGk9MDsgaSA8IG91dF9s ZW47IGkrKykgewo+IC0rCSAgICAgICAgb3V0W2ldIF49IGJ1ZltpXTsKPiAtKwl9Cj4gLSt9Cj4g LSsKPiAtK3N0YXRpYyBpbnQgU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWwoU1NMICpzLCB1bnNp Z25lZCBjaGFyICpvdXQsIHNpemVfdCBvbGVuLAo+IC0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsLCBzaXplX3QgbGxlbiwKPiAtKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBzaXplX3QgcGxlbiwKPiAt KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX2NvbnRleHQpCj4gLSt7Cj4g LSsJdW5zaWduZWQgY2hhciBzZWVkWzY0ICsgMipTU0wzX1JBTkRPTV9TSVpFXTsKPiAtKwl1bnNp Z25lZCBjaGFyIGJ1Zls0KkVBUFRMU19NUFBFX0tFWV9MRU5dOwo+IC0rCXVuc2lnbmVkIGNoYXIg bWFzdGVyX2tleVtTU0xfTUFYX01BU1RFUl9LRVlfTEVOR1RIXTsKPiAtKwlzaXplX3QgbWFzdGVy X2tleV9sZW5ndGg7Cj4gLSsJdW5zaWduZWQgY2hhciAqcHA7Cj4gLSsKPiAtKwlwcCA9IHNlZWQ7 Cj4gLSsKPiAtKwltZW1jcHkocHAsIGxhYmVsLCBsbGVuKTsKPiAtKwlwcCArPSBsbGVuOwo+IC0r Cj4gLSsJbGxlbiArPSBTU0xfZ2V0X2NsaWVudF9yYW5kb20ocywgcHAsIFNTTDNfUkFORE9NX1NJ WkUpOwo+IC0rCXBwICs9IFNTTDNfUkFORE9NX1NJWkU7Cj4gLSsKPiAtKwlsbGVuICs9IFNTTF9n ZXRfc2VydmVyX3JhbmRvbShzLCBwcCwgU1NMM19SQU5ET01fU0laRSk7Cj4gLSsKPiAtKwltYXN0 ZXJfa2V5X2xlbmd0aCA9IFNTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KFNTTF9nZXRfc2Vzc2lv bihzKSwgbWFzdGVyX2tleSwKPiAtKwkJCQkJCSAgIHNpemVvZihtYXN0ZXJfa2V5KSk7Cj4gLSsJ UFJGKG1hc3Rlcl9rZXksIG1hc3Rlcl9rZXlfbGVuZ3RoLCBzZWVkLCBsbGVuLCBvdXQsIGJ1Ziwg b2xlbik7Cj4gLSsKPiAtKwlyZXR1cm4gMTsKPiAtK30KPiAtKwo+IC0rI2VuZGlmIC8qIE9QRU5T U0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMDAxMDAwTCAqLwo+IC0rCj4gLSsKPiAtKy8qCj4gLSsg KiAgT3BlblNTTCAxLjErIGludHJvZHVjZWQgYSBnZW5lcmljIFRMU19tZXRob2QoKQo+IC0rICog IEZvciBvbGRlciByZWxlYXNlcyB3ZSBzdWJzdGl0dXRlIHRoZSBhcHByb3ByaWF0ZSBtZXRob2QK PiAtKyAqLwo+IC0rCj4gLSsjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDBM Cj4gLSsKPiAtKyNkZWZpbmUgVExTX21ldGhvZCBTU0x2MjNfbWV0aG9kCj4gLSsKPiAtKyNkZWZp bmUgU1NMM19SVF9IRUFERVIJMHgxMDAKPiAtKwo+IC0rI2VuZGlmIC8qIE9QRU5TU0xfVkVSU0lP Tl9OVU1CRVIgPCAweDEwMTAwMDAwTCAqLwo+IC0rCj4gLSsKPiAtKy8qCj4gLSsgKiAgR2VuZXJh dGUga2V5cyBhY2NvcmRpbmcgdG8gUkZDIDI3MTYgYW5kIGFkZCB0byByZXBseQo+IC0rICovCj4g LSt2b2lkIGVhcHRsc19nZW5fbXBwZV9rZXlzKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzLCBj b25zdCBjaGFyICpwcmZfbGFiZWwsCj4gLSsJICAgICAgICAgICAgICAgICAgICAgIGludCBjbGll bnQpCj4gLSt7Cj4gLSsJdW5zaWduZWQgY2hhciAgb3V0WzQqRUFQVExTX01QUEVfS0VZX0xFTl07 Cj4gLSsJc2l6ZV90ICAgICAgICAgcHJmX3NpemUgPSBzdHJsZW4ocHJmX2xhYmVsKTsKPiAtKwl1 bnNpZ25lZCBjaGFyICpwOwo+IC0rCj4gLSsJaWYgKFNTTF9leHBvcnRfa2V5aW5nX21hdGVyaWFs KGV0cy0+c3NsLCBvdXQsIHNpemVvZihvdXQpLCBwcmZfbGFiZWwsIHByZl9zaXplLCBOVUxMLCAw LCAwKSAhPSAxKQo+IC0rCXsKPiAtKwkgICAgd2FybiggIkVBUC1UTFM6IEZhaWxlZCBnZW5lcmF0 aW5nIGtleWluZyBtYXRlcmlhbCIgKTsKPiAtKwkgICAgcmV0dXJuOwo+IC0rCX0KPiAtKwo+IC0r CS8qCj4gLSsJICogV2Ugbm93IGhhdmUgdGhlIG1hc3RlciBzZW5kIGFuZCByZWNlaXZlIGtleXMu Cj4gLSsJICogRnJvbSB0aGVzZSwgZ2VuZXJhdGUgdGhlIHNlc3Npb24gc2VuZCBhbmQgcmVjZWl2 ZSBrZXlzLgo+IC0rCSAqIChzZWUgUkZDMzA3OSAvIGRyYWZ0LWlldGYtcHBwZXh0LW1wcGUta2V5 cy0wMy50eHQgZm9yIGRldGFpbHMpCj4gLSsJICovCj4gLSsJaWYgKGNsaWVudCkKPiAtKwl7Cj4g LSsJICAgIHAgPSBvdXQ7Cj4gLSsJCUJDT1BZKCBwLCBtcHBlX3NlbmRfa2V5LCBzaXplb2YobXBw ZV9zZW5kX2tleSkgKTsKPiAtKwkJcCArPSBFQVBUTFNfTVBQRV9LRVlfTEVOOwo+IC0rCQlCQ09Q WSggcCwgbXBwZV9yZWN2X2tleSwgc2l6ZW9mKG1wcGVfcmVjdl9rZXkpICk7Cj4gLSsJfQo+IC0r CWVsc2UKPiAtKwl7Cj4gLSsJCXAgPSBvdXQ7Cj4gLSsJCUJDT1BZKCBwLCBtcHBlX3JlY3Zfa2V5 LCBzaXplb2YobXBwZV9yZWN2X2tleSkgKTsKPiAtKwkJcCArPSBFQVBUTFNfTVBQRV9LRVlfTEVO Owo+IC0rCQlCQ09QWSggcCwgbXBwZV9zZW5kX2tleSwgc2l6ZW9mKG1wcGVfc2VuZF9rZXkpICk7 Cj4gLSsJfQo+IC0rCj4gLSsJbXBwZV9rZXlzX3NldCA9IDE7Cj4gLSt9Cj4gLSsKPiAtKyNlbmRp Zgo+IC0rCj4gLSt2b2lkIGxvZ19zc2xfZXJyb3JzKCB2b2lkICkKPiAtK3sKPiAtKwl1bnNpZ25l ZCBsb25nIHNzbF9lcnIgPSBFUlJfZ2V0X2Vycm9yKCk7Cj4gLSsKPiAtKwlpZiAoc3NsX2VyciAh PSAwKQo+IC0rCQlkYmdsb2coIkVBUC1UTFMgU1NMIGVycm9yIHN0YWNrOiIpOwo+IC0rCXdoaWxl IChzc2xfZXJyICE9IDApIHsKPiAtKwkJZGJnbG9nKCBFUlJfZXJyb3Jfc3RyaW5nKCBzc2xfZXJy LCBOVUxMICkgKTsKPiAtKwkJc3NsX2VyciA9IEVSUl9nZXRfZXJyb3IoKTsKPiAtKwl9Cj4gLSt9 Cj4gLSsKPiAtKwo+IC0raW50IHBhc3N3b3JkX2NhbGxiYWNrIChjaGFyICpidWYsIGludCBzaXpl LCBpbnQgcndmbGFnLCB2b2lkICp1KQo+IC0rewo+IC0rCWlmIChidWYpCj4gLSsJewo+IC0rCQlz dHJuY3B5IChidWYsIHBhc3N3ZCwgc2l6ZSk7Cj4gLSsJCXJldHVybiBzdHJsZW4gKGJ1Zik7Cj4g LSsJfQo+IC0rCXJldHVybiAwOwo+IC0rfQo+IC0rCj4gLSsKPiAtK0NPTkYgKmVhcHRsc19zc2xf bG9hZF9jb25maWcoIHZvaWQgKQo+IC0rewo+IC0rCUNPTkYgICAgICAgICpjb25maWc7Cj4gLSsJ aW50ICAgICAgICAgIHJldF9jb2RlOwo+IC0rCWxvbmcgICAgICAgICBlcnJvcl9saW5lID0gMzM7 Cj4gLSsKPiAtKwljb25maWcgPSBOQ09ORl9uZXcoIE5VTEwgKTsKPiAtKwlkYmdsb2coICJMb2Fk aW5nIE9wZW5TU0wgY29uZmlnIGZpbGUiICk7Cj4gLSsJcmV0X2NvZGUgPSBOQ09ORl9sb2FkKCBj b25maWcsIF9QQVRIX09QRU5TU0xDT05GRklMRSwgJmVycm9yX2xpbmUgKTsKPiAtKwlpZiAocmV0 X2NvZGUgPT0gMCkKPiAtKwl7Cj4gLSsJICAgIHdhcm4oICJFQVAtVExTOiBFcnJvciBpbiBPcGVu U1NMIGNvbmZpZyBmaWxlICVzIGF0IGxpbmUgJWQiLCBfUEFUSF9PUEVOU1NMQ09ORkZJTEUsIGVy cm9yX2xpbmUgKTsKPiAtKwkgICAgTkNPTkZfZnJlZSggY29uZmlnICk7Cj4gLSsJICAgIGNvbmZp ZyA9IE5VTEw7Cj4gLSsJICAgIEVSUl9jbGVhcl9lcnJvcigpOwo+IC0rCX0KPiAtKwo+IC0rCWRi Z2xvZyggIkxvYWRpbmcgT3BlblNTTCBidWlsdC1pbnMiICk7Cj4gLSsJRU5HSU5FX2xvYWRfYnVp bHRpbl9lbmdpbmVzKCk7Cj4gLSsJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlcygpOwo+IC0r Cj4gLSsJZGJnbG9nKCAiTG9hZGluZyBPcGVuU1NMIGNvbmZpZ3VyZWQgbW9kdWxlcyIgKTsKPiAt KwlpZiAoQ09ORl9tb2R1bGVzX2xvYWQoIGNvbmZpZywgTlVMTCwgMCApIDw9IDAgKQo+IC0rCXsK PiAtKwkgICAgd2FybiggIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgT3BlblNTTCBtb2R1bGVzIiAp Owo+IC0rCSAgICBsb2dfc3NsX2Vycm9ycygpOwo+IC0rCSAgICBjb25maWcgPSBOVUxMOwo+IC0r CX0KPiAtKwo+IC0rCXJldHVybiBjb25maWc7Cj4gLSt9Cj4gLSsKPiAtK0VOR0lORSAqZWFwdGxz X3NzbF9sb2FkX2VuZ2luZSggY2hhciAqZW5naW5lX25hbWUgKQo+IC0rewo+IC0rCUVOR0lORSAg ICAgICplID0gTlVMTDsKPiAtKwo+IC0rCWRiZ2xvZyggIkVuYWJsaW5nIE9wZW5TU0wgYXV0byBl bmdpbmVzIiApOwo+IC0rCUVOR0lORV9yZWdpc3Rlcl9hbGxfY29tcGxldGUoKTsKPiAtKwo+IC0r CWRiZ2xvZyggIkxvYWRpbmcgT3BlblNTTCAnJXMnIGVuZ2luZSBzdXBwb3J0IiwgZW5naW5lX25h bWUgKTsKPiAtKwllID0gRU5HSU5FX2J5X2lkKCBlbmdpbmVfbmFtZSApOwo+IC0rCWlmICghZSkK PiAtKwl7Cj4gLSsJCWRiZ2xvZyggIkVBUC1UTFM6IENhbm5vdCBsb2FkICclcycgZW5naW5lIHN1 cHBvcnQsIHRyeWluZyAnZHluYW1pYyciLCBlbmdpbmVfbmFtZSApOwo+IC0rCQllID0gRU5HSU5F X2J5X2lkKCAiZHluYW1pYyIgKTsKPiAtKwkJaWYgKGUpCj4gLSsJCXsKPiAtKwkJCWlmICghRU5H SU5FX2N0cmxfY21kX3N0cmluZyhlLCAiU09fUEFUSCIsIGVuZ2luZV9uYW1lLCAwKQo+IC0rICAg CSAgICAgICAgIHx8ICFFTkdJTkVfY3RybF9jbWRfc3RyaW5nKGUsICJMT0FEIiwgTlVMTCwgMCkp Cj4gLSsJCQl7Cj4gLSsJCQkJd2FybiggIkVBUC1UTFM6IEVycm9yIGxvYWRpbmcgZHluYW1pYyBl bmdpbmUgJyVzJyIsIGVuZ2luZV9uYW1lICk7Cj4gLSsJCSAgICAgICAgbG9nX3NzbF9lcnJvcnMo KTsKPiAtKwkJCQlFTkdJTkVfZnJlZShlKTsKPiAtKwkJCQllID0gTlVMTDsKPiAtKwkJCX0KPiAt KwkJfQo+IC0rCQllbHNlCj4gLSsJCXsKPiAtKwkJCXdhcm4oICJFQVAtVExTOiBDYW5ub3QgbG9h ZCBkeW5hbWljIGVuZ2luZSBzdXBwb3J0IiApOwo+IC0rCQl9Cj4gLSsJfQo+IC0rCj4gLSsJaWYg KGUpCj4gLSsJewo+IC0rCQlkYmdsb2coICJJbml0aWFsaXNpbmcgZW5naW5lIiApOwo+IC0rCQlp ZighRU5HSU5FX3NldF9kZWZhdWx0KGUsIEVOR0lORV9NRVRIT0RfQUxMKSkKPiAtKwkJewo+IC0r CQkJd2FybiggIkVBUC1UTFM6IENhbm5vdCB1c2UgdGhhdCBlbmdpbmUiICk7Cj4gLSsJCQlsb2df c3NsX2Vycm9ycygpOwo+IC0rCQkJRU5HSU5FX2ZyZWUoZSk7Cj4gLSsJCQllID0gTlVMTDsKPiAt KwkJfQo+IC0rCX0KPiAtKwo+IC0rCXJldHVybiBlOwo+IC0rfQo+IC0rCj4gLSsvKgo+IC0rICog SW5pdGlhbGl6ZSB0aGUgU1NMIHN0YWNrcyBhbmQgdGVzdHMgaWYgY2VydGlmaWNhdGVzLCBrZXkg YW5kIGNybAo+IC0rICogZm9yIGNsaWVudCBvciBzZXJ2ZXIgdXNlIGNhbiBiZSBsb2FkZWQuCj4g LSsgKi8KPiAtK1NTTF9DVFggKmVhcHRsc19pbml0X3NzbChpbnQgaW5pdF9zZXJ2ZXIsIGNoYXIg KmNhY2VydGZpbGUsCj4gLSsJCQljaGFyICpjZXJ0ZmlsZSwgY2hhciAqcGVlcl9jZXJ0ZmlsZSwg Y2hhciAqcHJpdmtleWZpbGUpCj4gLSt7Cj4gLSsJY2hhcgkJKmNlcnRfZW5naW5lX25hbWUgPSBO VUxMOwo+IC0rCWNoYXIJCSpjZXJ0X2lkZW50aWZpZXIgPSBOVUxMOwo+IC0rCWNoYXIJCSpwa2V5 X2VuZ2luZV9uYW1lID0gTlVMTDsKPiAtKwljaGFyCQkqcGtleV9pZGVudGlmaWVyID0gTlVMTDsK PiAtKwlTU0xfQ1RYCQkqY3R4Owo+IC0rCVNTTAkJCSpzc2w7Cj4gLSsJWDUwOV9TVE9SRQkqY2Vy dHN0b3JlOwo+IC0rCVg1MDlfTE9PS1VQCSpsb29rdXA7Cj4gLSsJWDUwOQkJKnRtcDsKPiAtKwlp bnQJCQlyZXQ7Cj4gLSsKPiAtKwkvKgo+IC0rCSAqIFdpdGhvdXQgdGhlc2UgY2FuJ3QgY29udGlu dWUKPiAtKwkgKi8KPiAtKwlpZiAoIWNhY2VydGZpbGVbMF0pCj4gLSsJewo+IC0rCQllcnJvcigi RUFQLVRMUzogQ0EgY2VydGlmaWNhdGUgbWlzc2luZyIpOwo+IC0rCQlyZXR1cm4gTlVMTDsKPiAt Kwl9Cj4gLSsKPiAtKwlpZiAoIWNlcnRmaWxlWzBdKQo+IC0rCXsKPiAtKwkJZXJyb3IoIkVBUC1U TFM6IFVzZXIgY2VydGlmaWNhdGUgbWlzc2luZyIpOwo+IC0rCQlyZXR1cm4gTlVMTDsKPiAtKwl9 Cj4gLSsKPiAtKwlpZiAoIXByaXZrZXlmaWxlWzBdKQo+IC0rCXsKPiAtKwkJZXJyb3IoIkVBUC1U TFM6IFVzZXIgcHJpdmF0ZSBrZXkgbWlzc2luZyIpOwo+IC0rCQlyZXR1cm4gTlVMTDsKPiAtKwl9 Cj4gLSsKPiAtKwlTU0xfbGlicmFyeV9pbml0KCk7Cj4gLSsJU1NMX2xvYWRfZXJyb3Jfc3RyaW5n cygpOwo+IC0rCj4gLSsJY3R4ID0gU1NMX0NUWF9uZXcoVExTX21ldGhvZCgpKTsKPiAtKwo+IC0r CWlmICghY3R4KSB7Cj4gLSsJCWVycm9yKCJFQVAtVExTOiBDYW5ub3QgaW5pdGlhbGl6ZSBTU0wg Q1RYIGNvbnRleHQiKTsKPiAtKwkJZ290byBmYWlsOwo+IC0rCX0KPiAtKwo+IC0rCS8qIGlmIHRo ZSBjZXJ0aWZpY2F0ZSBmaWxlbmFtZSBpcyBvZiB0aGUgZm9ybSBlbmdpbmU6aWQuIGUuZy4KPiAt KwkJcGtjczExOjEyMzQ1Cj4gLSsJICAgdGhlbiB3ZSB0cnkgdG8gbG9hZCBhbmQgdXNlIHRoaXMg ZW5naW5lLgo+IC0rCSAgIElmIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlbmFtZSBzdGFydHMgd2l0aCBh IC8gb3IgLiB0aGVuIHdlCj4gLSsJICAgQUxXQVlTIGFzc3VtZSBpdCBpcyBhIGZpbGUgYW5kIG5v dCBhbiBlbmdpbmUvcGtjczExIGlkZW50aWZpZXIKPiAtKwkgKi8KPiAtKwlpZiAoIGluZGV4KCBj ZXJ0ZmlsZSwgJy8nICkgPT0gTlVMTCAmJiBpbmRleCggY2VydGZpbGUsICcuJykgPT0gTlVMTCAp Cj4gLSsJewo+IC0rCQljZXJ0X2lkZW50aWZpZXIgPSBpbmRleCggY2VydGZpbGUsICc6JyApOwo+ IC0rCj4gLSsJCWlmIChjZXJ0X2lkZW50aWZpZXIpCj4gLSsJCXsKPiAtKwkJCWNlcnRfZW5naW5l X25hbWUgPSBjZXJ0ZmlsZTsKPiAtKwkJCSpjZXJ0X2lkZW50aWZpZXIgPSAnXDAnOwo+IC0rCQkJ Y2VydF9pZGVudGlmaWVyKys7Cj4gLSsKPiAtKwkJCWRiZ2xvZyggIkZvdW5kIGNlcnRpZmljYXRl IGVuZ2luZSAnJXMnIiwgY2VydF9lbmdpbmVfbmFtZSApOwo+IC0rCQkJZGJnbG9nKCAiRm91bmQg Y2VydGlmaWNhdGUgaWRlbnRpZmllciAnJXMnIiwgY2VydF9pZGVudGlmaWVyICk7Cj4gLSsJCX0K PiAtKwl9Cj4gLSsKPiAtKwkvKiBpZiB0aGUgcHJpdmF0ZWtleSBmaWxlbmFtZSBpcyBvZiB0aGUg Zm9ybSBlbmdpbmU6aWQuIGUuZy4KPiAtKwkJcGtjczExOjEyMzQ1Cj4gLSsJICAgdGhlbiB3ZSB0 cnkgdG8gbG9hZCBhbmQgdXNlIHRoaXMgZW5naW5lLgo+IC0rCSAgIElmIHRoZSBwcml2YXRla2V5 IGZpbGVuYW1lIHN0YXJ0cyB3aXRoIGEgLyBvciAuIHRoZW4gd2UKPiAtKwkgICBBTFdBWVMgYXNz dW1lIGl0IGlzIGEgZmlsZSBhbmQgbm90IGFuIGVuZ2luZS9wa2NzMTEgaWRlbnRpZmllcgo+IC0r CSAqLwo+IC0rCWlmICggaW5kZXgoIHByaXZrZXlmaWxlLCAnLycgKSA9PSBOVUxMICYmIGluZGV4 KCBwcml2a2V5ZmlsZSwgJy4nKSA9PSBOVUxMICkKPiAtKwl7Cj4gLSsJCXBrZXlfaWRlbnRpZmll ciA9IGluZGV4KCBwcml2a2V5ZmlsZSwgJzonICk7Cj4gLSsKPiAtKwkJaWYgKHBrZXlfaWRlbnRp ZmllcikKPiAtKwkJewo+IC0rCQkJcGtleV9lbmdpbmVfbmFtZSA9IHByaXZrZXlmaWxlOwo+IC0r CQkJKnBrZXlfaWRlbnRpZmllciA9ICdcMCc7Cj4gLSsJCQlwa2V5X2lkZW50aWZpZXIrKzsKPiAt Kwo+IC0rCQkJZGJnbG9nKCAiRm91bmQgcHJpdmF0ZWtleSBlbmdpbmUgJyVzJyIsIHBrZXlfZW5n aW5lX25hbWUgKTsKPiAtKwkJCWRiZ2xvZyggIkZvdW5kIHByaXZhdGVrZXkgaWRlbnRpZmllciAn JXMnIiwgcGtleV9pZGVudGlmaWVyICk7Cj4gLSsJCX0KPiAtKwl9Cj4gLSsKPiAtKwlpZiAoY2Vy dF9pZGVudGlmaWVyICYmIHBrZXlfaWRlbnRpZmllcikKPiAtKwl7Cj4gLSsJCWlmIChzdHJsZW4o IGNlcnRfaWRlbnRpZmllciApID09IDApCj4gLSsJCXsKPiAtKwkJCWlmIChzdHJsZW4oIHBrZXlf aWRlbnRpZmllciApID09IDApCj4gLSsJCQkJZXJyb3IoICJFQVAtVExTOiBib3RoIHRoZSBjZXJ0 aWZpY2F0ZSBhbmQgcHJpdmF0ZWtleSBpZGVudGlmaWVycyBhcmUgbWlzc2luZyEiICk7Cj4gLSsJ CQllbHNlCj4gLSsJCQl7Cj4gLSsJCQkJZGJnbG9nKCAiU3Vic3RpdHV0aW5nIHByaXZhdGVrZXkg aWRlbnRpZmllciBmb3IgY2VydGlmaWNhdGUgaWRlbnRpZmllciIgKTsKPiAtKwkJCQljZXJ0X2lk ZW50aWZpZXIgPSBwa2V5X2lkZW50aWZpZXI7Cj4gLSsJCQl9Cj4gLSsJCX0KPiAtKwkJZWxzZQo+ IC0rCQl7Cj4gLSsJCQlpZiAoc3RybGVuKCBwa2V5X2lkZW50aWZpZXIgKSA9PSAwKQo+IC0rCQkJ ewo+IC0rCQkJCWRiZ2xvZyggIlN1YnN0aXR1dGluZyBjZXJ0aWZpY2F0ZSBpZGVudGlmaWVyIGZv ciBwcml2YXRla2V5IGlkZW50aWZpZXIiICk7Cj4gLSsJCQkJcGtleV9pZGVudGlmaWVyID0gY2Vy dF9pZGVudGlmaWVyOwo+IC0rCQkJfQo+IC0rCQl9Cj4gLSsKPiAtKwl9Cj4gLSsKPiAtKwkvKiBs b2FkIHRoZSBvcGVuc3NsIGNvbmZpZyBmaWxlIG9ubHkgb25jZSAqLwo+IC0rCWlmICghc3NsX2Nv bmZpZykKPiAtKwl7Cj4gLSsJCWlmIChjZXJ0X2VuZ2luZV9uYW1lIHx8IHBrZXlfZW5naW5lX25h bWUpCj4gLSsJCQlzc2xfY29uZmlnID0gZWFwdGxzX3NzbF9sb2FkX2NvbmZpZygpOwo+IC0rCj4g LSsJCWlmIChzc2xfY29uZmlnICYmIGNlcnRfZW5naW5lX25hbWUpCj4gLSsJCQljZXJ0X2VuZ2lu ZSA9IGVhcHRsc19zc2xfbG9hZF9lbmdpbmUoIGNlcnRfZW5naW5lX25hbWUgKTsKPiAtKwo+IC0r CQlpZiAoc3NsX2NvbmZpZyAmJiBwa2V5X2VuZ2luZV9uYW1lKQo+IC0rCQl7Cj4gLSsJCQkvKiBk b24ndCBsb2FkIHRoZSBzYW1lIGVuZ2luZSB0d2ljZSAqLwo+IC0rCQkJaWYgKCBjZXJ0X2VuZ2lu ZSAmJiBzdHJjbXAoIGNlcnRfZW5naW5lX25hbWUsIHBrZXlfZW5naW5lX25hbWUpID09IDAgKQo+ IC0rCQkJCXBrZXlfZW5naW5lID0gY2VydF9lbmdpbmU7Cj4gLSsJCQllbHNlCj4gLSsJCQkJcGtl eV9lbmdpbmUgPSBlYXB0bHNfc3NsX2xvYWRfZW5naW5lKCBwa2V5X2VuZ2luZV9uYW1lICk7Cj4g LSsJCX0KPiAtKwl9Cj4gLSsKPiAtKwlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYiAoY3R4 LCBwYXNzd29yZF9jYWxsYmFjayk7Cj4gLSsKPiAtKwlpZiAoIVNTTF9DVFhfbG9hZF92ZXJpZnlf bG9jYXRpb25zKGN0eCwgY2FjZXJ0ZmlsZSwgTlVMTCkpCj4gLSsJewo+IC0rCQllcnJvcigiRUFQ LVRMUzogQ2Fubm90IGxvYWQgb3IgdmVyaWZ5IENBIGZpbGUgJXMiLCBjYWNlcnRmaWxlKTsKPiAt KwkJZ290byBmYWlsOwo+IC0rCX0KPiAtKwo+IC0rCWlmIChpbml0X3NlcnZlcikKPiAtKwkJU1NM X0NUWF9zZXRfY2xpZW50X0NBX2xpc3QoY3R4LCBTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZShjYWNl cnRmaWxlKSk7Cj4gLSsKPiAtKwlpZiAoY2VydF9lbmdpbmUpCj4gLSsJewo+IC0rCQlzdHJ1Y3QK PiAtKwkJewo+IC0rCQkJY29uc3QgY2hhciAqc19zbG90X2NlcnRfaWQ7Cj4gLSsJCQlYNTA5ICpj ZXJ0Owo+IC0rCQl9IGNlcnRfaW5mbzsKPiAtKwo+IC0rCQljZXJ0X2luZm8uc19zbG90X2NlcnRf aWQgPSBjZXJ0X2lkZW50aWZpZXI7Cj4gLSsJCWNlcnRfaW5mby5jZXJ0ID0gTlVMTDsKPiAtKwo+ IC0rCQlpZiAoIUVOR0lORV9jdHJsX2NtZCggY2VydF9lbmdpbmUsICJMT0FEX0NFUlRfQ1RSTCIs IDAsICZjZXJ0X2luZm8sIE5VTEwsIDAgKSApCj4gLSsJCXsKPiAtKwkJCWVycm9yKCAiRUFQLVRM UzogRXJyb3IgbG9hZGluZyBjZXJ0aWZpY2F0ZSB3aXRoIGlkICclcycgZnJvbSBlbmdpbmUiLCBj ZXJ0X2lkZW50aWZpZXIgKTsKPiAtKwkJCWdvdG8gZmFpbDsKPiAtKwkJfQo+IC0rCj4gLSsJCWlm IChjZXJ0X2luZm8uY2VydCkKPiAtKwkJewo+IC0rCQkgICAgZGJnbG9nKCAiR290IHRoZSBjZXJ0 aWZpY2F0ZSwgYWRkaW5nIGl0IHRvIFNTTCBjb250ZXh0IiApOwo+IC0rCQkJZGJnbG9nKCAic3Vi amVjdCA9ICVzIiwgWDUwOV9OQU1FX29uZWxpbmUoIFg1MDlfZ2V0X3N1YmplY3RfbmFtZSggY2Vy dF9pbmZvLmNlcnQgKSwgTlVMTCwgMCApICk7Cj4gLSsJCQlpZiAoU1NMX0NUWF91c2VfY2VydGlm aWNhdGUoY3R4LCBjZXJ0X2luZm8uY2VydCkgPD0gMCkKPiAtKwkJCXsKPiAtKwkJCQllcnJvcigi RUFQLVRMUzogQ2Fubm90IHVzZSBQS0NTMTEgY2VydGlmaWNhdGUgJXMiLCBjZXJ0X2lkZW50aWZp ZXIpOwo+IC0rCQkJCWdvdG8gZmFpbDsKPiAtKwkJCX0KPiAtKwkJfQo+IC0rCQllbHNlCj4gLSsJ CXsKPiAtKwkJCXdhcm4oIkVBUC1UTFM6IENhbm5vdCBsb2FkIFBLQ1MxMSBrZXkgJXMiLCBjZXJ0 X2lkZW50aWZpZXIpOwo+IC0rCQkJbG9nX3NzbF9lcnJvcnMoKTsKPiAtKwkJfQo+IC0rCX0KPiAt KwllbHNlCj4gLSsJewo+IC0rCQlpZiAoIVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2Zp bGUoY3R4LCBjZXJ0ZmlsZSkpCj4gLSsJCXsKPiAtKwkJCWVycm9yKCAiRUFQLVRMUzogQ2Fubm90 IHVzZSBwdWJsaWMgY2VydGlmaWNhdGUgJXMiLCBjZXJ0ZmlsZSApOwo+IC0rCQkJZ290byBmYWls Owo+IC0rCQl9Cj4gLSsJfQo+IC0rCj4gLSsKPiAtKwkvKgo+IC0rCSAqICBDaGVjayB0aGUgQmVm b3JlIGFuZCBBZnRlciBkYXRlcyBvZiB0aGUgY2VydGlmaWNhdGUKPiAtKwkgKi8KPiAtKwlzc2wg PSBTU0xfbmV3KGN0eCk7Cj4gLSsJdG1wID0gU1NMX2dldF9jZXJ0aWZpY2F0ZShzc2wpOwo+IC0r Cj4gLSsJcmV0ID0gWDUwOV9jbXBfdGltZShYNTA5X2dldF9ub3RCZWZvcmUodG1wKSwgTlVMTCk7 Cj4gLSsJaWYgKHJldCA9PSAwKQo+IC0rCXsKPiAtKwkJd2FybiggIkVBUC1UTFM6IEZhaWxlZCB0 byByZWFkIGNlcnRpZmljYXRlIG5vdEJlZm9yZSBmaWVsZC4iKTsKPiAtKwl9Cj4gLSsJaWYgKHJl dCA+IDApCj4gLSsJewo+IC0rCQl3YXJuKCAiRUFQLVRMUzogWW91ciBjZXJ0aWZpY2F0ZSBpcyBu b3QgeWV0IHZhbGlkISIpOwo+IC0rCX0KPiAtKwo+IC0rCXJldCA9IFg1MDlfY21wX3RpbWUoWDUw OV9nZXRfbm90QWZ0ZXIodG1wKSwgTlVMTCk7Cj4gLSsJaWYgKHJldCA9PSAwKQo+IC0rCXsKPiAt KwkJd2FybiggIkVBUC1UTFM6IEZhaWxlZCB0byByZWFkIGNlcnRpZmljYXRlIG5vdEFmdGVyIGZp ZWxkLiIpOwo+IC0rCX0KPiAtKwlpZiAocmV0IDwgMCkKPiAtKwl7Cj4gLSsJCXdhcm4oICJFQVAt VExTOiBZb3VyIGNlcnRpZmljYXRlIGhhcyBleHBpcmVkISIpOwo+IC0rCX0KPiAtKwlTU0xfZnJl ZShzc2wpOwo+IC0rCj4gLSsJaWYgKHBrZXlfZW5naW5lKQo+IC0rCXsKPiAtKwkJRVZQX1BLRVkg ICAqcGtleSA9IE5VTEw7Cj4gLSsJCVBXX0NCX0RBVEEgIGNiX2RhdGE7Cj4gLSsKPiAtKwkJY2Jf ZGF0YS5wYXNzd29yZCA9IHBhc3N3ZDsKPiAtKwkJY2JfZGF0YS5wcm9tcHRfaW5mbyA9IHBrZXlf aWRlbnRpZmllcjsKPiAtKwo+IC0rCQlkYmdsb2coICJMb2FkaW5nIHByaXZhdGUga2V5ICclcycg ZnJvbSBlbmdpbmUiLCBwa2V5X2lkZW50aWZpZXIgKTsKPiAtKwkJcGtleSA9IEVOR0lORV9sb2Fk X3ByaXZhdGVfa2V5KHBrZXlfZW5naW5lLCBwa2V5X2lkZW50aWZpZXIsIE5VTEwsICZjYl9kYXRh KTsKPiAtKwkJaWYgKHBrZXkpCj4gLSsJCXsKPiAtKwkJICAgIGRiZ2xvZyggIkdvdCB0aGUgcHJp dmF0ZSBrZXksIGFkZGluZyBpdCB0byBTU0wgY29udGV4dCIgKTsKPiAtKwkJCWlmIChTU0xfQ1RY X3VzZV9Qcml2YXRlS2V5KGN0eCwgcGtleSkgPD0gMCkKPiAtKwkJCXsKPiAtKwkJCQllcnJvcigi RUFQLVRMUzogQ2Fubm90IHVzZSBQS0NTMTEga2V5ICVzIiwgcGtleV9pZGVudGlmaWVyKTsKPiAt KwkJCQlnb3RvIGZhaWw7Cj4gLSsJCQl9Cj4gLSsJCX0KPiAtKwkJZWxzZQo+IC0rCQl7Cj4gLSsJ CQl3YXJuKCJFQVAtVExTOiBDYW5ub3QgbG9hZCBQS0NTMTEga2V5ICVzIiwgcGtleV9pZGVudGlm aWVyKTsKPiAtKwkJCWxvZ19zc2xfZXJyb3JzKCk7Cj4gLSsJCX0KPiAtKwl9Cj4gLSsJZWxzZQo+ IC0rCXsKPiAtKwkJaWYgKCFTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoY3R4LCBwcml2a2V5 ZmlsZSwgU1NMX0ZJTEVUWVBFX1BFTSkpCj4gLSsJCXsKPiAtKwkJCWVycm9yKCJFQVAtVExTOiBD YW5ub3QgdXNlIHByaXZhdGUga2V5ICVzIiwgcHJpdmtleWZpbGUpOwo+IC0rCQkJZ290byBmYWls Owo+IC0rCQl9Cj4gLSsJfQo+IC0rCj4gLSsJaWYgKFNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXko Y3R4KSAhPSAxKSB7Cj4gLSsJCWVycm9yKCJFQVAtVExTOiBQcml2YXRlIGtleSAlcyBmYWlscyBz ZWN1cml0eSBjaGVjayIsIHByaXZrZXlmaWxlKTsKPiAtKwkJZ290byBmYWlsOwo+IC0rCX0KPiAt Kwo+IC0rICAgIC8qIEV4cGxpY2l0bHkgc2V0IHRoZSBOT19USUNLRVRTIGZsYWcgdG8gc3VwcG9y dCBXaW43L1dpbjggY2xpZW50cyAqLwo+IC0rCVNTTF9DVFhfc2V0X29wdGlvbnMoY3R4LCBTU0xf T1BfTk9fU1NMdjIgfCBTU0xfT1BfTk9fU1NMdjMKPiAtKyNpZmRlZiBTU0xfT1BfTk9fVElDS0VU Cj4gLSsJfCBTU0xfT1BfTk9fVElDS0VUCj4gLSsjZW5kaWYKPiAtKwkpOwo+IC0rCj4gLSsJU1NM X0NUWF9zZXRfdmVyaWZ5X2RlcHRoKGN0eCwgNSk7Cj4gLSsJU1NMX0NUWF9zZXRfdmVyaWZ5KGN0 eCwKPiAtKwkJCSAgIFNTTF9WRVJJRllfUEVFUiB8Cj4gLSsJCQkgICBTU0xfVkVSSUZZX0ZBSUxf SUZfTk9fUEVFUl9DRVJULAo+IC0rCQkJICAgJnNzbF92ZXJpZnlfY2FsbGJhY2spOwo+IC0rCj4g LSsJaWYgKGNybF9kaXIpIHsKPiAtKwkJaWYgKCEoY2VydHN0b3JlID0gU1NMX0NUWF9nZXRfY2Vy dF9zdG9yZShjdHgpKSkgewo+IC0rCQkJZXJyb3IoIkVBUC1UTFM6IEZhaWxlZCB0byBnZXQgY2Vy dGlmaWNhdGUgc3RvcmUiKTsKPiAtKwkJCWdvdG8gZmFpbDsKPiAtKwkJfQo+IC0rCj4gLSsJCWlm ICghKGxvb2t1cCA9Cj4gLSsJCSAgICAgWDUwOV9TVE9SRV9hZGRfbG9va3VwKGNlcnRzdG9yZSwg WDUwOV9MT09LVVBfaGFzaF9kaXIoKSkpKSB7Cj4gLSsJCQllcnJvcigiRUFQLVRMUzogU3RvcmUg bG9va3VwIGZvciBDUkwgZmFpbGVkIik7Cj4gLSsKPiAtKwkJCWdvdG8gZmFpbDsKPiAtKwkJfQo+ IC0rCj4gLSsJCVg1MDlfTE9PS1VQX2FkZF9kaXIobG9va3VwLCBjcmxfZGlyLCBYNTA5X0ZJTEVU WVBFX1BFTSk7Cj4gLSsJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzKGNlcnRzdG9yZSwgWDUwOV9WX0ZM QUdfQ1JMX0NIRUNLKTsKPiAtKwl9Cj4gLSsKPiAtKwlpZiAoY3JsX2ZpbGUpIHsKPiAtKwkgICAg RklMRSAgICAgKmZwICA9IE5VTEw7Cj4gLSsJICAgIFg1MDlfQ1JMICpjcmwgPSBOVUxMOwo+IC0r Cj4gLSsJICAgIGZwID0gZm9wZW4oY3JsX2ZpbGUsICJyIik7Cj4gLSsJICAgIGlmICghZnApIHsK PiAtKwkgICAgICAgIGVycm9yKCJFQVAtVExTOiBDYW5ub3Qgb3BlbiBDUkwgZmlsZSAnJXMnIiwg Y3JsX2ZpbGUpOwo+IC0rCSAgICAgICAgZ290byBmYWlsOwo+IC0rCSAgICB9Cj4gLSsKPiAtKwkg ICAgY3JsID0gUEVNX3JlYWRfWDUwOV9DUkwoZnAsIE5VTEwsIE5VTEwsIE5VTEwpOwo+IC0rCSAg ICBpZiAoIWNybCkgewo+IC0rCSAgICAgICAgZXJyb3IoIkVBUC1UTFM6IENhbm5vdCByZWFkIENS TCBmaWxlICclcyciLCBjcmxfZmlsZSk7Cj4gLSsJICAgICAgICBnb3RvIGZhaWw7Cj4gLSsJICAg IH0KPiAtKwo+IC0rCQlpZiAoIShjZXJ0c3RvcmUgPSBTU0xfQ1RYX2dldF9jZXJ0X3N0b3JlKGN0 eCkpKSB7Cj4gLSsJCQllcnJvcigiRUFQLVRMUzogRmFpbGVkIHRvIGdldCBjZXJ0aWZpY2F0ZSBz dG9yZSIpOwo+IC0rCQkJZ290byBmYWlsOwo+IC0rCQl9Cj4gLSsJICAgIGlmICghWDUwOV9TVE9S RV9hZGRfY3JsKGNlcnRzdG9yZSwgY3JsKSkgewo+IC0rCSAgICAgICAgZXJyb3IoIkVBUC1UTFM6 IENhbm5vdCBhZGQgQ1JMIHRvIGNlcnRpZmljYXRlIHN0b3JlIik7Cj4gLSsJICAgICAgICBnb3Rv IGZhaWw7Cj4gLSsJICAgIH0KPiAtKwkJWDUwOV9TVE9SRV9zZXRfZmxhZ3MoY2VydHN0b3JlLCBY NTA5X1ZfRkxBR19DUkxfQ0hFQ0spOwo+IC0rCj4gLSsJfQo+IC0rCj4gLSsJLyoKPiAtKwkgKiBJ ZiBhIHBlZXIgY2VydGlmaWNhdGUgZmlsZSB3YXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIHZhbGlk LCBlbHNlIGZhaWwKPiAtKwkgKi8KPiAtKwlpZiAocGVlcl9jZXJ0ZmlsZVswXSkgewo+IC0rCQlp ZiAoISh0bXAgPSBnZXRfWDUwOV9mcm9tX2ZpbGUocGVlcl9jZXJ0ZmlsZSkpKSB7Cj4gLSsJCQll cnJvcigiRUFQLVRMUzogRXJyb3IgbG9hZGluZyBjbGllbnQgY2VydGlmaWNhdGUgZnJvbSBmaWxl ICVzIiwKPiAtKwkJCSAgICAgcGVlcl9jZXJ0ZmlsZSk7Cj4gLSsJCQlnb3RvIGZhaWw7Cj4gLSsJ CX0KPiAtKwkJWDUwOV9mcmVlKHRtcCk7Cj4gLSsJfQo+IC0rCj4gLSsJcmV0dXJuIGN0eDsKPiAt Kwo+IC0rZmFpbDoKPiAtKwlsb2dfc3NsX2Vycm9ycygpOwo+IC0rCVNTTF9DVFhfZnJlZShjdHgp Owo+IC0rCXJldHVybiBOVUxMOwo+IC0rfQo+IC0rCj4gLSsvKgo+IC0rICogRGV0ZXJtaW5lIHRo ZSBtYXhpbXVtIHBhY2tldCBzaXplIGJ5IGxvb2tpbmcgYXQgdGhlIExDUCBoYW5kc2hha2UKPiAt KyAqLwo+IC0rCj4gLStpbnQgZWFwdGxzX2dldF9tdHUoaW50IHVuaXQpCj4gLSt7Cj4gLSsJaW50 IG10dSwgbXJ1Owo+IC0rCj4gLSsJbGNwX29wdGlvbnMgKndvID0gJmxjcF93YW50b3B0aW9uc1t1 bml0XTsKPiAtKwlsY3Bfb3B0aW9ucyAqZ28gPSAmbGNwX2dvdG9wdGlvbnNbdW5pdF07Cj4gLSsJ bGNwX29wdGlvbnMgKmhvID0gJmxjcF9oaXNvcHRpb25zW3VuaXRdOwo+IC0rCWxjcF9vcHRpb25z ICphbyA9ICZsY3BfYWxsb3dvcHRpb25zW3VuaXRdOwo+IC0rCj4gLSsJbXR1ID0gaG8tPm5lZ19t cnU/IGhvLT5tcnU6IFBQUF9NUlU7Cj4gLSsJbXJ1ID0gZ28tPm5lZ19tcnU/IE1BWCh3by0+bXJ1 LCBnby0+bXJ1KTogUFBQX01SVTsKPiAtKwltdHUgPSBNSU4oTUlOKG10dSwgbXJ1KSwgYW8tPm1y dSktIFBQUF9IRFJMRU4gLSAxMDsKPiAtKwo+IC0rCWRiZ2xvZygiTVRVID0gJWQiLCBtdHUpOwo+ IC0rCXJldHVybiBtdHU7Cj4gLSt9Cj4gLSsKPiAtKwo+IC0rLyoKPiAtKyAqIEluaXQgdGhlIHNz bCBoYW5kc2hha2UgKHNlcnZlciBtb2RlKQo+IC0rICovCj4gLStpbnQgZWFwdGxzX2luaXRfc3Ns X3NlcnZlcihlYXBfc3RhdGUgKiBlc3ApCj4gLSt7Cj4gLSsJc3RydWN0IGVhcHRsc19zZXNzaW9u ICpldHM7Cj4gLSsJY2hhciBzZXJ2Y2VydGZpbGVbTUFYV09SRExFTl07Cj4gLSsJY2hhciBjbGlj ZXJ0ZmlsZVtNQVhXT1JETEVOXTsKPiAtKwljaGFyIGNhY2VydGZpbGVbTUFYV09SRExFTl07Cj4g LSsJY2hhciBwa2ZpbGVbTUFYV09SRExFTl07Cj4gLSsJLyoKPiAtKwkgKiBBbGxvY2F0ZSBuZXcg ZWFwdGxzIHNlc3Npb24KPiAtKwkgKi8KPiAtKwllc3AtPmVzX3NlcnZlci5lYV9zZXNzaW9uID0g bWFsbG9jKHNpemVvZihzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24pKTsKPiAtKwlpZiAoIWVzcC0+ZXNf c2VydmVyLmVhX3Nlc3Npb24pCj4gLSsJCWZhdGFsKCJBbGxvY2F0aW9uIGVycm9yIik7Cj4gLSsJ ZXRzID0gZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbjsKPiAtKwo+IC0rCWlmICghZXNwLT5lc19z ZXJ2ZXIuZWFfcGVlcikgewo+IC0rCQllcnJvcigiRUFQLVRMUzogRXJyb3I6IGNsaWVudCBuYW1l IG5vdCBzZXQgKEJVRykiKTsKPiAtKwkJcmV0dXJuIDA7Cj4gLSsJfQo+IC0rCj4gLSsJc3RybmNw eShldHMtPnBlZXIsIGVzcC0+ZXNfc2VydmVyLmVhX3BlZXIsIE1BWFdPUkRMRU4pOwo+IC0rCj4g LSsJZGJnbG9nKCAiZ2V0dGluZyBlYXB0bHMgc2VjcmV0IiApOwo+IC0rCWlmICghZ2V0X2VhcHRs c19zZWNyZXQoZXNwLT5lc191bml0LCBlc3AtPmVzX3NlcnZlci5lYV9wZWVyLAo+IC0rCQkJICAg ICAgIGVzcC0+ZXNfc2VydmVyLmVhX25hbWUsIGNsaWNlcnRmaWxlLAo+IC0rCQkJICAgICAgIHNl cnZjZXJ0ZmlsZSwgY2FjZXJ0ZmlsZSwgcGtmaWxlLCAxKSkgewo+IC0rCQllcnJvciggIkVBUC1U TFM6IENhbm5vdCBnZXQgc2VjcmV0L3Bhc3N3b3JkIGZvciBjbGllbnQgXCIlc1wiLCBzZXJ2ZXIg XCIlc1wiIiwKPiAtKwkJCQllc3AtPmVzX3NlcnZlci5lYV9wZWVyLCBlc3AtPmVzX3NlcnZlci5l YV9uYW1lICk7Cj4gLSsJCXJldHVybiAwOwo+IC0rCX0KPiAtKwo+IC0rCWV0cy0+bXR1ID0gZWFw dGxzX2dldF9tdHUoZXNwLT5lc191bml0KTsKPiAtKwo+IC0rCWV0cy0+Y3R4ID0gZWFwdGxzX2lu aXRfc3NsKDEsIGNhY2VydGZpbGUsIHNlcnZjZXJ0ZmlsZSwgY2xpY2VydGZpbGUsIHBrZmlsZSk7 Cj4gLSsJaWYgKCFldHMtPmN0eCkKPiAtKwkJZ290byBmYWlsOwo+IC0rCj4gLSsJaWYgKCEoZXRz LT5zc2wgPSBTU0xfbmV3KGV0cy0+Y3R4KSkpCj4gLSsJCWdvdG8gZmFpbDsKPiAtKwo+IC0rCS8q Cj4gLSsJICogU2V0IGF1dG8tcmV0cnkgdG8gYXZvaWQgdGltZW91dHMgb24gQklPX3JlYWQKPiAt KwkgKi8KPiAtKwlTU0xfc2V0X21vZGUoZXRzLT5zc2wsIFNTTF9NT0RFX0FVVE9fUkVUUlkpOwo+ IC0rCj4gLSsJLyoKPiAtKwkgKiBJbml0aWFsaXplIHRoZSBCSU9zIHdlIHVzZSB0byByZWFkL3dy aXRlIHRvIHNzbCBlbmdpbmUKPiAtKwkgKi8KPiAtKwlldHMtPmludG9fc3NsID0gQklPX25ldyhC SU9fc19tZW0oKSk7Cj4gLSsJZXRzLT5mcm9tX3NzbCA9IEJJT19uZXcoQklPX3NfbWVtKCkpOwo+ IC0rCVNTTF9zZXRfYmlvKGV0cy0+c3NsLCBldHMtPmludG9fc3NsLCBldHMtPmZyb21fc3NsKTsK PiAtKwo+IC0rCVNTTF9zZXRfbXNnX2NhbGxiYWNrKGV0cy0+c3NsLCBzc2xfbXNnX2NhbGxiYWNr KTsKPiAtKwlTU0xfc2V0X21zZ19jYWxsYmFja19hcmcoZXRzLT5zc2wsIGV0cyk7Cj4gLSsKPiAt KwkvKgo+IC0rCSAqIEF0dGFjaCB0aGUgc2Vzc2lvbiBzdHJ1Y3QgdG8gdGhlIGNvbm5lY3Rpb24s IHNvIHdlIGNhbiBsYXRlcgo+IC0rCSAqIHJldHJpZXZlIGl0IHdoZW4gZG9pbmcgY2VydGlmaWNh dGUgdmVyaWZpY2F0aW9uCj4gLSsJICovCj4gLSsJU1NMX3NldF9leF9kYXRhKGV0cy0+c3NsLCAw LCBldHMpOwo+IC0rCj4gLSsJU1NMX3NldF9hY2NlcHRfc3RhdGUoZXRzLT5zc2wpOwo+IC0rCj4g LSsJZXRzLT5kYXRhID0gTlVMTDsKPiAtKwlldHMtPmRhdGFsZW4gPSAwOwo+IC0rCWV0cy0+YWxl cnRfc2VudCA9IDA7Cj4gLSsJZXRzLT5hbGVydF9yZWN2ID0gMDsKPiAtKwo+IC0rCS8qCj4gLSsJ ICogSWYgd2Ugc3BlY2lmaWVkIHRoZSBjbGllbnQgY2VydGlmaWNhdGUgZmlsZSwgc3RvcmUgaXQg aW4gZXRzLT5wZWVyY2VydGZpbGUsCj4gLSsJICogc28gd2UgY2FuIGNoZWNrIGl0IGxhdGVyIGlu IHNzbF92ZXJpZnlfY2FsbGJhY2soKQo+IC0rCSAqLwo+IC0rCWlmIChjbGljZXJ0ZmlsZVswXSkK PiAtKwkJc3RybmNweSgmZXRzLT5wZWVyY2VydGZpbGVbMF0sIGNsaWNlcnRmaWxlLCBNQVhXT1JE TEVOKTsKPiAtKwllbHNlCj4gLSsJCWV0cy0+cGVlcmNlcnRmaWxlWzBdID0gMDsKPiAtKwo+IC0r CXJldHVybiAxOwo+IC0rCj4gLStmYWlsOgo+IC0rCVNTTF9DVFhfZnJlZShldHMtPmN0eCk7Cj4g LSsJcmV0dXJuIDA7Cj4gLSt9Cj4gLSsKPiAtKy8qCj4gLSsgKiBJbml0IHRoZSBzc2wgaGFuZHNo YWtlIChjbGllbnQgbW9kZSkKPiAtKyAqLwo+IC0raW50IGVhcHRsc19pbml0X3NzbF9jbGllbnQo ZWFwX3N0YXRlICogZXNwKQo+IC0rewo+IC0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwo+ IC0rCWNoYXIgc2VydmNlcnRmaWxlW01BWFdPUkRMRU5dOwo+IC0rCWNoYXIgY2xpY2VydGZpbGVb TUFYV09SRExFTl07Cj4gLSsJY2hhciBjYWNlcnRmaWxlW01BWFdPUkRMRU5dOwo+IC0rCWNoYXIg cGtmaWxlW01BWFdPUkRMRU5dOwo+IC0rCj4gLSsJLyoKPiAtKwkgKiBBbGxvY2F0ZSBuZXcgZWFw dGxzIHNlc3Npb24KPiAtKwkgKi8KPiAtKwllc3AtPmVzX2NsaWVudC5lYV9zZXNzaW9uID0gbWFs bG9jKHNpemVvZihzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24pKTsKPiAtKwlpZiAoIWVzcC0+ZXNfY2xp ZW50LmVhX3Nlc3Npb24pCj4gLSsJCWZhdGFsKCJBbGxvY2F0aW9uIGVycm9yIik7Cj4gLSsJZXRz ID0gZXNwLT5lc19jbGllbnQuZWFfc2Vzc2lvbjsKPiAtKwo+IC0rCS8qCj4gLSsJICogSWYgYXZh aWxhYmxlLCBjb3B5IHNlcnZlciBuYW1lIGluIGV0czsgaXQgd2lsbCBiZSB1c2VkIGluIGNlcnQK PiAtKwkgKiB2ZXJpZnkKPiAtKwkgKi8KPiAtKwlpZiAoZXNwLT5lc19jbGllbnQuZWFfcGVlcikK PiAtKwkJc3RybmNweShldHMtPnBlZXIsIGVzcC0+ZXNfY2xpZW50LmVhX3BlZXIsIE1BWFdPUkRM RU4pOwo+IC0rCWVsc2UKPiAtKwkJZXRzLT5wZWVyWzBdID0gMDsKPiAtKwo+IC0rCWV0cy0+bXR1 ID0gZWFwdGxzX2dldF9tdHUoZXNwLT5lc191bml0KTsKPiAtKwo+IC0rCWRiZ2xvZyggImNhbGxp bmcgZ2V0X2VhcHRsc19zZWNyZXQiICk7Cj4gLSsJaWYgKCFnZXRfZWFwdGxzX3NlY3JldChlc3At PmVzX3VuaXQsIGVzcC0+ZXNfY2xpZW50LmVhX25hbWUsCj4gLSsJCQkgICAgICAgZXRzLT5wZWVy LCBjbGljZXJ0ZmlsZSwKPiAtKwkJCSAgICAgICBzZXJ2Y2VydGZpbGUsIGNhY2VydGZpbGUsIHBr ZmlsZSwgMCkpIHsKPiAtKwkJZXJyb3IoICJFQVAtVExTOiBDYW5ub3QgZ2V0IHNlY3JldC9wYXNz d29yZCBmb3IgY2xpZW50IFwiJXNcIiwgc2VydmVyIFwiJXNcIiIsCj4gLSsJCQkJZXNwLT5lc19j bGllbnQuZWFfbmFtZSwgZXRzLT5wZWVyICk7Cj4gLSsJCXJldHVybiAwOwo+IC0rCX0KPiAtKwo+ IC0rCWRiZ2xvZyggImNhbGxpbmcgZWFwdGxzX2luaXRfc3NsIiApOwo+IC0rCWV0cy0+Y3R4ID0g ZWFwdGxzX2luaXRfc3NsKDAsIGNhY2VydGZpbGUsIGNsaWNlcnRmaWxlLCBzZXJ2Y2VydGZpbGUs IHBrZmlsZSk7Cj4gLSsJaWYgKCFldHMtPmN0eCkKPiAtKwkJZ290byBmYWlsOwo+IC0rCj4gLSsJ ZXRzLT5zc2wgPSBTU0xfbmV3KGV0cy0+Y3R4KTsKPiAtKwo+IC0rCWlmICghZXRzLT5zc2wpCj4g LSsJCWdvdG8gZmFpbDsKPiAtKwo+IC0rCS8qCj4gLSsJICogSW5pdGlhbGl6ZSB0aGUgQklPcyB3 ZSB1c2UgdG8gcmVhZC93cml0ZSB0byBzc2wgZW5naW5lCj4gLSsJICovCj4gLSsJZGJnbG9nKCAi SW5pdGlhbGl6aW5nIFNTTCBCSU9zIiApOwo+IC0rCWV0cy0+aW50b19zc2wgPSBCSU9fbmV3KEJJ T19zX21lbSgpKTsKPiAtKwlldHMtPmZyb21fc3NsID0gQklPX25ldyhCSU9fc19tZW0oKSk7Cj4g LSsJU1NMX3NldF9iaW8oZXRzLT5zc2wsIGV0cy0+aW50b19zc2wsIGV0cy0+ZnJvbV9zc2wpOwo+ IC0rCj4gLSsJU1NMX3NldF9tc2dfY2FsbGJhY2soZXRzLT5zc2wsIHNzbF9tc2dfY2FsbGJhY2sp Owo+IC0rCVNTTF9zZXRfbXNnX2NhbGxiYWNrX2FyZyhldHMtPnNzbCwgZXRzKTsKPiAtKwo+IC0r CS8qCj4gLSsJICogQXR0YWNoIHRoZSBzZXNzaW9uIHN0cnVjdCB0byB0aGUgY29ubmVjdGlvbiwg c28gd2UgY2FuIGxhdGVyCj4gLSsJICogcmV0cmlldmUgaXQgd2hlbiBkb2luZyBjZXJ0aWZpY2F0 ZSB2ZXJpZmljYXRpb24KPiAtKwkgKi8KPiAtKwlTU0xfc2V0X2V4X2RhdGEoZXRzLT5zc2wsIDAs IGV0cyk7Cj4gLSsKPiAtKwlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGUoZXRzLT5zc2wpOwo+IC0rCj4g LSsJZXRzLT5kYXRhID0gTlVMTDsKPiAtKwlldHMtPmRhdGFsZW4gPSAwOwo+IC0rCWV0cy0+YWxl cnRfc2VudCA9IDA7Cj4gLSsJZXRzLT5hbGVydF9yZWN2ID0gMDsKPiAtKwo+IC0rCS8qCj4gLSsJ ICogSWYgd2Ugc3BlY2lmaWVkIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZmlsZSwgc3RvcmUgaXQg aW4KPiAtKwkgKiBldHMtPnBlZXJjZXJ0ZmlsZSwgc28gd2UgY2FuIGNoZWNrIGl0IGxhdGVyIGlu Cj4gLSsJICogc3NsX3ZlcmlmeV9jYWxsYmFjaygpCj4gLSsJICovCj4gLSsJaWYgKHNlcnZjZXJ0 ZmlsZVswXSkKPiAtKwkJc3RybmNweShldHMtPnBlZXJjZXJ0ZmlsZSwgc2VydmNlcnRmaWxlLCBN QVhXT1JETEVOKTsKPiAtKwllbHNlCj4gLSsJCWV0cy0+cGVlcmNlcnRmaWxlWzBdID0gMDsKPiAt Kwo+IC0rCXJldHVybiAxOwo+IC0rCj4gLStmYWlsOgo+IC0rCWRiZ2xvZyggImVhcHRsc19pbml0 X3NzbF9jbGllbnQ6IGZhaWwiICk7Cj4gLSsJU1NMX0NUWF9mcmVlKGV0cy0+Y3R4KTsKPiAtKwly ZXR1cm4gMDsKPiAtKwo+IC0rfQo+IC0rCj4gLSt2b2lkIGVhcHRsc19mcmVlX3Nlc3Npb24oc3Ry dWN0IGVhcHRsc19zZXNzaW9uICpldHMpCj4gLSt7Cj4gLSsJaWYgKGV0cy0+c3NsKQo+IC0rCQlT U0xfZnJlZShldHMtPnNzbCk7Cj4gLSsKPiAtKwlpZiAoZXRzLT5jdHgpCj4gLSsJCVNTTF9DVFhf ZnJlZShldHMtPmN0eCk7Cj4gLSsKPiAtKwlmcmVlKGV0cyk7Cj4gLSt9Cj4gLSsKPiAtKy8qCj4g LSsgKiBIYW5kbGUgYSByZWNlaXZlZCBwYWNrZXQsIHJlYXNzZW1ibGluZyBmcmFnbWVudGVkIG1l c3NhZ2VzIGFuZAo+IC0rICogcGFzc2luZyB0aGVtIHRvIHRoZSBzc2wgZW5naW5lCj4gLSsgKi8K PiAtK2ludCBlYXB0bHNfcmVjZWl2ZShzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFy ICogaW5wLCBpbnQgbGVuKQo+IC0rewo+IC0rCXVfY2hhciBmbGFnczsKPiAtKwl1X2ludCB0bHNs ZW4gPSAwOwo+IC0rCXVfY2hhciBkdW1teVs2NTUzNl07Cj4gLSsKPiAtKwlpZiAobGVuIDwgMSkg ewo+IC0rCQl3YXJuKCJFQVAtVExTOiByZWNlaXZlZCBubyBvciBpbnZhbGlkIGRhdGEiKTsKPiAt KwkJcmV0dXJuIDE7Cj4gLSsJfQo+IC0rCj4gLSsJR0VUQ0hBUihmbGFncywgaW5wKTsKPiAtKwls ZW4tLTsKPiAtKwo+IC0rCWlmIChmbGFncyAmIEVBUF9UTFNfRkxBR1NfTEkgJiYgbGVuID4gNCkg ewo+IC0rCQkvKgo+IC0rCQkgKiBMZW5naHRJbmNsdWRlZCBmbGFnIHNldCAtPiB0aGlzIGlzIHRo ZSBmaXJzdCBwYWNrZXQgb2YgYSBtZXNzYWdlCj4gLSsJCSovCj4gLSsKPiAtKwkJLyoKPiAtKwkJ ICogdGhlIGZpcnN0IDQgb2N0ZXRzIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBFQVAtVExTIG1lc3Nh Z2UKPiAtKwkJICovCj4gLSsJCUdFVExPTkcodGxzbGVuLCBpbnApOwo+IC0rCQlsZW4gLT0gNDsK PiAtKwo+IC0rCQlpZiAoIWV0cy0+ZGF0YSkgewo+IC0rCj4gLSsJCQlpZiAodGxzbGVuID4gRUFQ X1RMU19NQVhfTEVOKSB7Cj4gLSsJCQkJZXJyb3IoIkVBUC1UTFM6IFRMUyBtZXNzYWdlIGxlbmd0 aCA+ICVkLCB0cnVuY2F0ZWQiLCBFQVBfVExTX01BWF9MRU4pOwo+IC0rCQkJCXRsc2xlbiA9IEVB UF9UTFNfTUFYX0xFTjsKPiAtKwkJCX0KPiAtKwo+IC0rCQkJLyoKPiAtKwkJCSAqIEFsbG9jYXRl IG1lbW9yeSBmb3IgdGhlIHdob2xlIG1lc3NhZ2UKPiAtKwkJCSovCj4gLSsJCQlldHMtPmRhdGEg PSBtYWxsb2ModGxzbGVuKTsKPiAtKwkJCWlmICghZXRzLT5kYXRhKQo+IC0rCQkJCWZhdGFsKCJF QVAtVExTOiBhbGxvY2F0aW9uIGVycm9yXG4iKTsKPiAtKwo+IC0rCQkJZXRzLT5kYXRhbGVuID0g MDsKPiAtKwkJCWV0cy0+dGxzbGVuID0gdGxzbGVuOwo+IC0rCQl9Cj4gLSsJCWVsc2UKPiAtKwkJ CXdhcm4oIkVBUC1UTFM6IG5vbi1maXJzdCBMSSBwYWNrZXQ/IHRoYXQncyBvZGQuLi4iKTsKPiAt Kwl9Cj4gLSsJZWxzZSBpZiAoIWV0cy0+ZGF0YSkgewo+IC0rCQkvKgo+IC0rCQkgKiBBIG5vbiBm cmFnbWVudGVkIG1lc3NhZ2Ugd2l0aG91dCBMSSBmbGFnCj4gLSsJCSovCj4gLSsKPiAtKwkJZXRz LT5kYXRhID0gbWFsbG9jKGxlbik7Cj4gLSsJCWlmICghZXRzLT5kYXRhKQo+IC0rCQkJZmF0YWwo IkVBUC1UTFM6IGFsbG9jYXRpb24gZXJyb3JcbiIpOwo+IC0rCj4gLSsJCWV0cy0+ZGF0YWxlbiA9 IDA7Cj4gLSsJCWV0cy0+dGxzbGVuID0gbGVuOwo+IC0rCX0KPiAtKwo+IC0rCWlmIChmbGFncyAm IEVBUF9UTFNfRkxBR1NfTUYpCj4gLSsJCWV0cy0+ZnJhZyA9IDE7Cj4gLSsJZWxzZQo+IC0rCQll dHMtPmZyYWcgPSAwOwo+IC0rCj4gLSsJaWYgKGxlbiA8IDApIHsKPiAtKwkJd2FybigiRUFQLVRM UzogcmVjZWl2ZWQgbWFsZm9ybWVkIGRhdGEiKTsKPiAtKwkJcmV0dXJuIDE7Cj4gLSsJfQo+IC0r Cj4gLSsJaWYgKGxlbiArIGV0cy0+ZGF0YWxlbiA+IGV0cy0+dGxzbGVuKSB7Cj4gLSsJCXdhcm4o IkVBUC1UTFM6IHJlY2VpdmVkIGRhdGEgPiBUTFMgbWVzc2FnZSBsZW5ndGgiKTsKPiAtKwkJcmV0 dXJuIDE7Cj4gLSsJfQo+IC0rCj4gLSsJQkNPUFkoaW5wLCBldHMtPmRhdGEgKyBldHMtPmRhdGFs ZW4sIGxlbik7Cj4gLSsJZXRzLT5kYXRhbGVuICs9IGxlbjsKPiAtKwo+IC0rCWlmICghZXRzLT5m cmFnKSB7Cj4gLSsKPiAtKwkJLyoKPiAtKwkJICogSWYgd2UgaGF2ZSB0aGUgd2hvbGUgbWVzc2Fn ZSwgcGFzcyBpdCB0byBzc2wKPiAtKwkJICovCj4gLSsKPiAtKwkJaWYgKGV0cy0+ZGF0YWxlbiAh PSBldHMtPnRsc2xlbikgewo+IC0rCQkJd2FybigiRUFQLVRMUzogcmVjZWl2ZWQgZGF0YSAhPSBU TFMgbWVzc2FnZSBsZW5ndGgiKTsKPiAtKwkJCXJldHVybiAxOwo+IC0rCQl9Cj4gLSsKPiAtKwkJ aWYgKEJJT193cml0ZShldHMtPmludG9fc3NsLCBldHMtPmRhdGEsIGV0cy0+ZGF0YWxlbikgPT0g LTEpCj4gLSsJCQlsb2dfc3NsX2Vycm9ycygpOwo+IC0rCj4gLSsJCVNTTF9yZWFkKGV0cy0+c3Ns LCBkdW1teSwgNjU1MzYpOwo+IC0rCj4gLSsJCWZyZWUoZXRzLT5kYXRhKTsKPiAtKwkJZXRzLT5k YXRhID0gTlVMTDsKPiAtKwkJZXRzLT5kYXRhbGVuID0gMDsKPiAtKwl9Cj4gLSsKPiAtKwlyZXR1 cm4gMDsKPiAtK30KPiAtKwo+IC0rLyoKPiAtKyAqIFJldHVybiBhbiBlYXAtdGxzIHBhY2tldCBp biBvdXRwLgo+IC0rICogQSBUTFMgbWVzc2FnZSByZWFkIGZyb20gdGhlIHNzbCBlbmdpbmUgaXMg YnVmZmVyZWQgaW4gZXRzLT5kYXRhLgo+IC0rICogQXQgZWFjaCBjYWxsIHdlIGNvbnRyb2wgaWYg dGhlcmUgaXMgYnVmZmVyZWQgZGF0YSBhbmQgc2VuZCBhCj4gLSsgKiBwYWNrZXQgb2YgbXR1IGJ5 dGVzLgo+IC0rICovCj4gLStpbnQgZWFwdGxzX3NlbmQoc3RydWN0IGVhcHRsc19zZXNzaW9uICpl dHMsIHVfY2hhciAqKiBvdXRwKQo+IC0rewo+IC0rCWJvb2wgZmlyc3QgPSAwOwo+IC0rCWludCBz aXplOwo+IC0rCXVfY2hhciBmcm9tdGxzWzY1NTM2XTsKPiAtKwlpbnQgcmVzOwo+IC0rCXVfY2hh ciAqc3RhcnQ7Cj4gLSsKPiAtKwlzdGFydCA9ICpvdXRwOwo+IC0rCj4gLSsJaWYgKCFldHMtPmRh dGEpIHsKPiAtKwo+IC0rCQlpZighZXRzLT5hbGVydF9zZW50KQo+IC0rCQkJU1NMX3JlYWQoZXRz LT5zc2wsIGZyb210bHMsIDY1NTM2KTsKPiAtKwo+IC0rCQkvKgo+IC0rCQkgKiBSZWFkIGZyb20g c3NsCj4gLSsJCSAqLwo+IC0rCQlpZiAoKHJlcyA9IEJJT19yZWFkKGV0cy0+ZnJvbV9zc2wsIGZy b210bHMsIDY1NTM2KSkgPT0gLTEpCj4gLSsJCXsKPiAtKwkJCXdhcm4oIkVBUC1UTFMgc2VuZDog Tm8gZGF0YSBmcm9tIEJJT19yZWFkIik7Cj4gLSsJCQlyZXR1cm4gMTsKPiAtKwkJfQo+IC0rCj4g LSsJCWV0cy0+ZGF0YWxlbiA9IHJlczsKPiAtKwo+IC0rCQlldHMtPmRhdGEgPSBtYWxsb2MoZXRz LT5kYXRhbGVuKTsKPiAtKwkJQkNPUFkoZnJvbXRscywgZXRzLT5kYXRhLCBldHMtPmRhdGFsZW4p Owo+IC0rCj4gLSsJCWV0cy0+b2Zmc2V0ID0gMDsKPiAtKwkJZmlyc3QgPSAxOwo+IC0rCj4gLSsJ fQo+IC0rCj4gLSsJc2l6ZSA9IGV0cy0+ZGF0YWxlbiAtIGV0cy0+b2Zmc2V0Owo+IC0rCj4gLSsJ aWYgKHNpemUgPiBldHMtPm10dSkgewo+IC0rCQlzaXplID0gZXRzLT5tdHU7Cj4gLSsJCWV0cy0+ ZnJhZyA9IDE7Cj4gLSsJfSBlbHNlCj4gLSsJCWV0cy0+ZnJhZyA9IDA7Cj4gLSsKPiAtKwlQVVRD SEFSKEVBUFRfVExTLCAqb3V0cCk7Cj4gLSsKPiAtKwkvKgo+IC0rCSAqIFNldCByaWdodCBmbGFn cyBhbmQgbGVuZ3RoIGlmIG5lY2Vzc2FyeQo+IC0rCSAqLwo+IC0rCWlmIChldHMtPmZyYWcgJiYg Zmlyc3QpIHsKPiAtKwkJUFVUQ0hBUihFQVBfVExTX0ZMQUdTX0xJIHwgRUFQX1RMU19GTEFHU19N RiwgKm91dHApOwo+IC0rCQlQVVRMT05HKGV0cy0+ZGF0YWxlbiwgKm91dHApOwo+IC0rCX0gZWxz ZSBpZiAoZXRzLT5mcmFnKSB7Cj4gLSsJCVBVVENIQVIoRUFQX1RMU19GTEFHU19NRiwgKm91dHAp Owo+IC0rCX0gZWxzZQo+IC0rCQlQVVRDSEFSKDAsICpvdXRwKTsKPiAtKwo+IC0rCS8qCj4gLSsJ ICogQ29weSB0aGUgZGF0YSBpbiBvdXRwCj4gLSsJICovCj4gLSsJQkNPUFkoZXRzLT5kYXRhICsg ZXRzLT5vZmZzZXQsICpvdXRwLCBzaXplKTsKPiAtKwlJTkNQVFIoc2l6ZSwgKm91dHApOwo+IC0r Cj4gLSsJLyoKPiAtKwkgKiBDb3B5IHRoZSBwYWNrZXQgaW4gcmV0cmFuc21pc3Npb24gYnVmZmVy Cj4gLSsJICovCj4gLSsJQkNPUFkoc3RhcnQsICZldHMtPnJ0eFswXSwgKm91dHAgLSBzdGFydCk7 Cj4gLSsJZXRzLT5ydHhfbGVuID0gKm91dHAgLSBzdGFydDsKPiAtKwo+IC0rCWV0cy0+b2Zmc2V0 ICs9IHNpemU7Cj4gLSsKPiAtKwlpZiAoZXRzLT5vZmZzZXQgPj0gZXRzLT5kYXRhbGVuKSB7Cj4g LSsKPiAtKwkJLyoKPiAtKwkJICogVGhlIHdob2xlIG1lc3NhZ2UgaGFzIGJlZW4gc2VudAo+IC0r CQkgKi8KPiAtKwo+IC0rCQlmcmVlKGV0cy0+ZGF0YSk7Cj4gLSsJCWV0cy0+ZGF0YSA9IE5VTEw7 Cj4gLSsJCWV0cy0+ZGF0YWxlbiA9IDA7Cj4gLSsJCWV0cy0+b2Zmc2V0ID0gMDsKPiAtKwl9Cj4g LSsKPiAtKwlyZXR1cm4gMDsKPiAtK30KPiAtKwo+IC0rLyoKPiAtKyAqIEdldCB0aGUgc2VudCBw YWNrZXQgZnJvbSB0aGUgcmV0cmFuc21pc3Npb24gYnVmZmVyCj4gLSsgKi8KPiAtK3ZvaWQgZWFw dGxzX3JldHJhbnNtaXQoc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMsIHVfY2hhciAqKiBvdXRw KQo+IC0rewo+IC0rCUJDT1BZKGV0cy0+cnR4LCAqb3V0cCwgZXRzLT5ydHhfbGVuKTsKPiAtKwlJ TkNQVFIoZXRzLT5ydHhfbGVuLCAqb3V0cCk7Cj4gLSt9Cj4gLSsKPiAtKy8qCj4gLSsgKiBWZXJp ZnkgYSBjZXJ0aWZpY2F0ZS4KPiAtKyAqIE1vc3Qgb2YgdGhlIHdvcmsgKHNpZ25hdHVyZXMgYW5k IGlzc3VlciBhdHRyaWJ1dGVzIGNoZWNraW5nKQo+IC0rICogaXMgZG9uZSBieSBzc2w7IHdlIGNo ZWNrIHRoZSBDTiBpbiB0aGUgcGVlciBjZXJ0aWZpY2F0ZQo+IC0rICogYWdhaW5zdCB0aGUgcGVl ciBuYW1lLgo+IC0rICovCj4gLStpbnQgc3NsX3ZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlf U1RPUkVfQ1RYICogY3R4KQo+IC0rewo+IC0rCWNoYXIgc3ViamVjdFsyNTZdOwo+IC0rCWNoYXIg Y25fc3RyWzI1Nl07Cj4gLSsJWDUwOSAqcGVlcl9jZXJ0Owo+IC0rCWludCBlcnIsIGRlcHRoOwo+ IC0rCVNTTCAqc3NsOwo+IC0rCXN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqZXRzOwo+IC0rCj4gLSsJ cGVlcl9jZXJ0ID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydChjdHgpOwo+IC0rCWVy ciA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpOwo+IC0rCWRlcHRoID0gWDUwOV9TVE9S RV9DVFhfZ2V0X2Vycm9yX2RlcHRoKGN0eCk7Cj4gLSsKPiAtKwlkYmdsb2coImNlcnRpZmljYXRl IHZlcmlmeSBkZXB0aDogJWQiLCBkZXB0aCk7Cj4gLSsKPiAtKwlpZiAoYXV0aF9yZXF1aXJlZCAm JiAhb2spIHsKPiAtKwkJWDUwOV9OQU1FX29uZWxpbmUoWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBl ZXJfY2VydCksCj4gLSsJCQkJICBzdWJqZWN0LCAyNTYpOwo+IC0rCj4gLSsJCVg1MDlfTkFNRV9n ZXRfdGV4dF9ieV9OSUQoWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBlZXJfY2VydCksCj4gLSsJCQkJ CSAgTklEX2NvbW1vbk5hbWUsIGNuX3N0ciwgMjU2KTsKPiAtKwo+IC0rCQlkYmdsb2coIkNlcnRp ZmljYXRlIHZlcmlmaWNhdGlvbiBlcnJvcjpcbiBkZXB0aDogJWQgQ046ICVzIgo+IC0rCQkgICAg ICAgIlxuIGVycjogJWQgKCVzKVxuIiwgZGVwdGgsIGNuX3N0ciwgZXJyLAo+IC0rCQkgICAgICAg WDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoZXJyKSk7Cj4gLSsKPiAtKwkJcmV0dXJuIDA7 Cj4gLSsJfQo+IC0rCj4gLSsJc3NsID0gWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X2RhdGEoY3R4LAo+ IC0rCQkJCSAgICAgICBTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4KCkpOwo+IC0r Cj4gLSsJZXRzID0gKHN0cnVjdCBlYXB0bHNfc2Vzc2lvbiAqKVNTTF9nZXRfZXhfZGF0YShzc2ws IDApOwo+IC0rCj4gLSsJaWYgKGV0cyA9PSBOVUxMKSB7Cj4gLSsJCWVycm9yKCJFcnJvcjogU1NM X2dldF9leF9kYXRhIHJldHVybmVkIE5VTEwiKTsKPiAtKwkJcmV0dXJuIDA7Cj4gLSsJfQo+IC0r Cj4gLSsJbG9nX3NzbF9lcnJvcnMoKTsKPiAtKwo+IC0rCWlmICghZGVwdGgpIHsJCS8qIFRoaXMg aXMgdGhlIHBlZXIgY2VydGlmaWNhdGUgKi8KPiAtKwo+IC0rCQlYNTA5X05BTUVfb25lbGluZShY NTA5X2dldF9zdWJqZWN0X25hbWUocGVlcl9jZXJ0KSwKPiAtKwkJCQkgIHN1YmplY3QsIDI1Nik7 Cj4gLSsKPiAtKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRChYNTA5X2dldF9zdWJqZWN0X25h bWUocGVlcl9jZXJ0KSwKPiAtKwkJCQkJICBOSURfY29tbW9uTmFtZSwgY25fc3RyLCAyNTYpOwo+ IC0rCj4gLSsJCS8qCj4gLSsJCSAqIElmIGFjdGluZyBhcyBjbGllbnQgYW5kIHRoZSBuYW1lIG9m IHRoZSBzZXJ2ZXIgd2Fzbid0IHNwZWNpZmllZAo+IC0rCQkgKiBleHBsaWNpdGVseSwgd2UgY2Fu J3QgdmVyaWZ5IHRoZSBzZXJ2ZXIgYXV0aGVudGljaXR5Cj4gLSsJCSAqLwo+IC0rCQlpZiAoIWV0 cy0+cGVlclswXSkgewo+IC0rCQkJd2FybigiUGVlciBuYW1lIG5vdCBzcGVjaWZpZWQ6IG5vIGNo ZWNrIik7Cj4gLSsJCQlyZXR1cm4gb2s7Cj4gLSsJCX0KPiAtKwo+IC0rCQkvKgo+IC0rCQkgKiBD aGVjayB0aGUgQ04KPiAtKwkJICovCj4gLSsJCWlmIChzdHJjbXAoY25fc3RyLCBldHMtPnBlZXIp KSB7Cj4gLSsJCQllcnJvcgo+IC0rCQkJICAgICgiQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGVy cm9yOiBDTiAoJXMpICE9IHBlZXJfbmFtZSAoJXMpIiwKPiAtKwkJCSAgICAgY25fc3RyLCBldHMt PnBlZXIpOwo+IC0rCQkJcmV0dXJuIDA7Cj4gLSsJCX0KPiAtKwo+IC0rCQl3YXJuKCJDZXJ0aWZp Y2F0ZSBDTjogJXMgLCBwZWVyIG5hbWUgJXMiLCBjbl9zdHIsIGV0cy0+cGVlcik7Cj4gLSsKPiAt KwkJLyoKPiAtKwkJICogSWYgYSBwZWVyIGNlcnRpZmljYXRlIGZpbGUgd2FzIHNwZWNpZmllZCwg aGVyZSB3ZSBjaGVjayBpdAo+IC0rCQkgKi8KPiAtKwkJaWYgKGV0cy0+cGVlcmNlcnRmaWxlWzBd KSB7Cj4gLSsJCQlpZiAoc3NsX2NtcF9jZXJ0cygmZXRzLT5wZWVyY2VydGZpbGVbMF0sIHBlZXJf Y2VydCkKPiAtKwkJCSAgICAhPSAwKSB7Cj4gLSsJCQkJZXJyb3IKPiAtKwkJCQkgICAgKCJQZWVy IGNlcnRpZmljYXRlIGRvZXNuJ3QgbWF0Y2ggc3RvcmVkIGNlcnRpZmljYXRlIik7Cj4gLSsJCQkJ cmV0dXJuIDA7Cj4gLSsJCQl9Cj4gLSsJCX0KPiAtKwl9Cj4gLSsKPiAtKwlyZXR1cm4gb2s7Cj4g LSt9Cj4gLSsKPiAtKy8qCj4gLSsgKiBDb21wYXJlIGEgY2VydGlmaWNhdGUgd2l0aCB0aGUgb25l IHN0b3JlZCBpbiBhIGZpbGUKPiAtKyAqLwo+IC0raW50IHNzbF9jbXBfY2VydHMoY2hhciAqZmls ZW5hbWUsIFg1MDkgKiBhKQo+IC0rewo+IC0rCVg1MDkgKmI7Cj4gLSsJaW50IHJldDsKPiAtKwo+ IC0rCWlmICghKGIgPSBnZXRfWDUwOV9mcm9tX2ZpbGUoZmlsZW5hbWUpKSkKPiAtKwkJcmV0dXJu IDE7Cj4gLSsKPiAtKwlyZXQgPSBYNTA5X2NtcChhLCBiKTsKPiAtKwlYNTA5X2ZyZWUoYik7Cj4g LSsKPiAtKwlyZXR1cm4gcmV0Owo+IC0rCj4gLSt9Cj4gLSsKPiAtK1g1MDkgKmdldF9YNTA5X2Zy b21fZmlsZShjaGFyICpmaWxlbmFtZSkKPiAtK3sKPiAtKwlGSUxFICpmcDsKPiAtKwlYNTA5ICpy ZXQ7Cj4gLSsKPiAtKwlpZiAoIShmcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSkKPiAtKwkJcmV0 dXJuIE5VTEw7Cj4gLSsKPiAtKwlyZXQgPSBQRU1fcmVhZF9YNTA5KGZwLCBOVUxMLCBOVUxMLCBO VUxMKTsKPiAtKwo+IC0rCWZjbG9zZShmcCk7Cj4gLSsKPiAtKwlyZXR1cm4gcmV0Owo+IC0rfQo+ IC0rCj4gLSsvKgo+IC0rICogRXZlcnkgc2VudCAmIHJlY2VpdmVkIG1lc3NhZ2UgdGhpcyBjYWxs YmFjayBmdW5jdGlvbiBpcyBpbnZva2VkLAo+IC0rICogc28gd2Uga25vdyB3aGVuIGFsZXJ0IG1l c3NhZ2VzIGhhdmUgYXJyaXZlZCBvciBhcmUgc2VudCBhbmQKPiAtKyAqIHdlIGNhbiBwcmludCBk ZWJ1ZyBpbmZvcm1hdGlvbiBhYm91dCBUTFMgaGFuZHNoYWtlLgo+IC0rICovCj4gLSt2b2lkCj4g LStzc2xfbXNnX2NhbGxiYWNrKGludCB3cml0ZV9wLCBpbnQgdmVyc2lvbiwgaW50IGNvbnRlbnRf dHlwZSwKPiAtKwkJIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgU1NMICogc3NsLCB2b2lk ICphcmcpCj4gLSt7Cj4gLSsJY2hhciBzdHJpbmdbMjU2XTsKPiAtKwlzdHJ1Y3QgZWFwdGxzX3Nl c3Npb24gKmV0cyA9IChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKilhcmc7Cj4gLSsJdW5zaWduZWQg Y2hhciBjb2RlOwo+IC0rCWNvbnN0IHVuc2lnbmVkIGNoYXIqbXNnID0gYnVmOwo+IC0rCWludCBo dmVycyA9IG1zZ1sxXSA8PCA4IHwgbXNnWzJdOwo+IC0rCj4gLSsJaWYod3JpdGVfcCkKPiAtKwkJ c3RyY3B5KHN0cmluZywgIiAtPiAiKTsKPiAtKwllbHNlCj4gLSsJCXN0cmNweShzdHJpbmcsICIg PC0gIik7Cj4gLSsKPiAtKwlzd2l0Y2goY29udGVudF90eXBlKSB7Cj4gLSsKPiAtKwljYXNlIFNT TDNfUlRfSEVBREVSOgo+IC0rCQlzdHJjYXQoc3RyaW5nLCAiU1NML1RMUyBIZWFkZXI6ICIpOwo+ IC0rCQlzd2l0Y2goaHZlcnMpIHsKPiAtKwkJY2FzZSBTU0wzX1ZFUlNJT046Cj4gLSsJCQkJc3Ry Y2F0KHN0cmluZywgIlNTTCAzLjAiKTsKPiAtKwkJCQlicmVhazsKPiAtKwkJY2FzZSBUTFMxX1ZF UlNJT046Cj4gLSsJCQkJc3RyY2F0KHN0cmluZywgIlRMUyAxLjAiKTsKPiAtKwkJCQlicmVhazsK PiAtKwkJY2FzZSBUTFMxXzFfVkVSU0lPTjoKPiAtKwkJCQlzdHJjYXQoc3RyaW5nLCAiVExTIDEu MSIpOwo+IC0rCQkJCWJyZWFrOwo+IC0rCQljYXNlIFRMUzFfMl9WRVJTSU9OOgo+IC0rCQkJCXN0 cmNhdChzdHJpbmcsICJUTFMgMS4yIik7Cj4gLSsJCQkJYnJlYWs7Cj4gLSsJCWRlZmF1bHQ6Cj4g LSsJCQlzdHJjYXQoc3RyaW5nLCAiVW5rbm93biB2ZXJzaW9uIik7Cj4gLSsJCX0KPiAtKwkJYnJl YWs7Cj4gLSsKPiAtKwljYXNlIFNTTDNfUlRfQUxFUlQ6Cj4gLSsJCXN0cmNhdChzdHJpbmcsICJB bGVydDogIik7Cj4gLSsJCWNvZGUgPSBtc2dbMV07Cj4gLSsKPiAtKwkJaWYgKHdyaXRlX3ApIHsK PiAtKwkJCWV0cy0+YWxlcnRfc2VudCA9IDE7Cj4gLSsJCQlldHMtPmFsZXJ0X3NlbnRfZGVzYyA9 IGNvZGU7Cj4gLSsJCX0gZWxzZSB7Cj4gLSsJCQlldHMtPmFsZXJ0X3JlY3YgPSAxOwo+IC0rCQkJ ZXRzLT5hbGVydF9yZWN2X2Rlc2MgPSBjb2RlOwo+IC0rCQl9Cj4gLSsKPiAtKwkJc3RyY2F0KHN0 cmluZywgU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmcoY29kZSkpOwo+IC0rCQlicmVhazsKPiAt Kwo+IC0rCWNhc2UgU1NMM19SVF9DSEFOR0VfQ0lQSEVSX1NQRUM6Cj4gLSsJCXN0cmNhdChzdHJp bmcsICJDaGFuZ2VDaXBoZXJTcGVjIik7Cj4gLSsJCWJyZWFrOwo+IC0rCj4gLSsJY2FzZSBTU0wz X1JUX0hBTkRTSEFLRToKPiAtKwo+IC0rCQlzdHJjYXQoc3RyaW5nLCAiSGFuZHNoYWtlOiAiKTsK PiAtKwkJY29kZSA9IG1zZ1swXTsKPiAtKwo+IC0rCQlzd2l0Y2goY29kZSkgewo+IC0rCQkJY2Fz ZSBTU0wzX01UX0hFTExPX1JFUVVFU1Q6Cj4gLSsJCQkJc3RyY2F0KHN0cmluZywiSGVsbG8gUmVx dWVzdCIpOwo+IC0rCQkJCWJyZWFrOwo+IC0rCQkJY2FzZSBTU0wzX01UX0NMSUVOVF9IRUxMTzoK PiAtKwkJCQlzdHJjYXQoc3RyaW5nLCJDbGllbnQgSGVsbG8iKTsKPiAtKwkJCQlicmVhazsKPiAt KwkJCWNhc2UgU1NMM19NVF9TRVJWRVJfSEVMTE86Cj4gLSsJCQkJc3RyY2F0KHN0cmluZywiU2Vy dmVyIEhlbGxvIik7Cj4gLSsJCQkJYnJlYWs7Cj4gLSsjaWZkZWYgU1NMM19NVF9ORVdTRVNTSU9O X1RJQ0tFVAo+IC0rCQkJY2FzZSBTU0wzX01UX05FV1NFU1NJT05fVElDS0VUOgo+IC0rCQkJCXN0 cmNhdChzdHJpbmcsIk5ldyBTZXNzaW9uIFRpY2tldCIpOwo+IC0rCQkJCWJyZWFrOwo+IC0rI2Vu ZGlmCj4gLSsJCQljYXNlIFNTTDNfTVRfQ0VSVElGSUNBVEU6Cj4gLSsJCQkJc3RyY2F0KHN0cmlu ZywiQ2VydGlmaWNhdGUiKTsKPiAtKwkJCQlicmVhazsKPiAtKwkJCWNhc2UgU1NMM19NVF9TRVJW RVJfS0VZX0VYQ0hBTkdFOgo+IC0rCQkJCXN0cmNhdChzdHJpbmcsIlNlcnZlciBLZXkgRXhjaGFu Z2UiKTsKPiAtKwkJCQlicmVhazsKPiAtKwkJCWNhc2UgU1NMM19NVF9DRVJUSUZJQ0FURV9SRVFV RVNUOgo+IC0rCQkJCXN0cmNhdChzdHJpbmcsIkNlcnRpZmljYXRlIFJlcXVlc3QiKTsKPiAtKwkJ CQlicmVhazsKPiAtKwkJCWNhc2UgU1NMM19NVF9TRVJWRVJfRE9ORToKPiAtKwkJCQlzdHJjYXQo c3RyaW5nLCJTZXJ2ZXIgSGVsbG8gRG9uZSIpOwo+IC0rCQkJCQkJCQlicmVhazsKPiAtKwkJCWNh c2UgU1NMM19NVF9DRVJUSUZJQ0FURV9WRVJJRlk6Cj4gLSsJCQkJc3RyY2F0KHN0cmluZywiQ2Vy dGlmaWNhdGUgVmVyaWZ5Iik7Cj4gLSsJCQkJYnJlYWs7Cj4gLSsJCQljYXNlIFNTTDNfTVRfQ0xJ RU5UX0tFWV9FWENIQU5HRToKPiAtKwkJCQlzdHJjYXQoc3RyaW5nLCJDbGllbnQgS2V5IEV4Y2hh bmdlIik7Cj4gLSsJCQkJYnJlYWs7Cj4gLSsJCQljYXNlIFNTTDNfTVRfRklOSVNIRUQ6Cj4gLSsJ CQkJc3RyY2F0KHN0cmluZywiRmluaXNoZWQ6ICIpOwo+IC0rCQkJCWh2ZXJzID0gU1NMX3ZlcnNp b24oc3NsKTsKPiAtKwkJCQlzd2l0Y2goaHZlcnMpIHsKPiAtKwkJCQljYXNlIFNTTDNfVkVSU0lP TjoKPiAtKwkJCQkJCXN0cmNhdChzdHJpbmcsICJTU0wgMy4wIik7Cj4gLSsJCQkJCQlicmVhazsK PiAtKwkJCQljYXNlIFRMUzFfVkVSU0lPTjoKPiAtKwkJCQkJCXN0cmNhdChzdHJpbmcsICJUTFMg MS4wIik7Cj4gLSsJCQkJCQlicmVhazsKPiAtKwkJCQljYXNlIFRMUzFfMV9WRVJTSU9OOgo+IC0r CQkJCQkJc3RyY2F0KHN0cmluZywgIlRMUyAxLjEiKTsKPiAtKwkJCQkJCWJyZWFrOwo+IC0rCQkJ CWNhc2UgVExTMV8yX1ZFUlNJT046Cj4gLSsJCQkJCQlzdHJjYXQoc3RyaW5nLCAiVExTIDEuMiIp Owo+IC0rCQkJCQkJYnJlYWs7Cj4gLSsJCQkJZGVmYXVsdDoKPiAtKwkJCQkJc3RyY2F0KHN0cmlu ZywgIlVua25vd24gdmVyc2lvbiIpOwo+IC0rCQkJCX0KPiAtKwkJCQlicmVhazsKPiAtKwkJCWRl ZmF1bHQ6Cj4gLSsJCQkJc3ByaW50Ziggc3RyaW5nLCAiSGFuZHNoYWtlOiBVbmtub3duIFNTTDMg Y29kZSByZWNlaXZlZDogJWQiLCBjb2RlICk7Cj4gLSsJCX0KPiAtKwkJYnJlYWs7Cj4gLSsKPiAt KwlkZWZhdWx0Ogo+IC0rCQlzcHJpbnRmKCBzdHJpbmcsICJTU0wgbWVzc2FnZSBjb250YWlucyB1 bmtub3duIGNvbnRlbnQgdHlwZTogJWQiLCBjb250ZW50X3R5cGUgKTsKPiAtKwo+IC0rCX0KPiAt Kwo+IC0rCS8qIEFsZXJ0IG1lc3NhZ2VzIG11c3QgYWx3YXlzIGJlIGRpc3BsYXllZCAqLwo+IC0r CWlmKGNvbnRlbnRfdHlwZSA9PSBTU0wzX1JUX0FMRVJUKQo+IC0rCQllcnJvcigiJXMiLCBzdHJp bmcpOwo+IC0rCWVsc2UKPiAtKwkJZGJnbG9nKCIlcyIsIHN0cmluZyk7Cj4gLSt9Cj4gLSsKPiAt ZGlmZiAtLWdpdCBhL3BwcGQvZWFwLXRscy5oIGIvcHBwZC9lYXAtdGxzLmgKPiAtbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiAtaW5kZXggMDAwMDAwMDAwMDAwLi4yZDQ1YTBiODNhMGMKPiAtLS0tIC9k ZXYvbnVsbAo+IC0rKysgYi9wcHBkL2VhcC10bHMuaAo+IC1AQCAtMCwwICsxLDEwNyBAQAo+IC0r LyoKPiAtKyAqIGVhcC10bHMuaAo+IC0rICoKPiAtKyAqIENvcHlyaWdodCAoYykgQmVuaWFtaW5v IEdhbHZhbmkgMjAwNSBBbGwgcmlnaHRzIHJlc2VydmVkLgo+IC0rICoKPiAtKyAqIFJlZGlzdHJp YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAo+IC0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv bGxvd2luZyBjb25kaXRpb25zCj4gLSsgKiBhcmUgbWV0Ogo+IC0rICoKPiAtKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 Cj4gLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuCj4gLSsgKgo+IC0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiAtKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp bgo+IC0rICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQo+IC0rICogICAgZGlzdHJpYnV0aW9uLgo+IC0rICoKPiAtKyAqIDMuIFRo ZSBuYW1lKHMpIG9mIHRoZSBhdXRob3JzIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgdXNl ZCB0bwo+IC0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIHdpdGhvdXQKPiAtKyAqICAgIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K PiAtKyAqCj4gLSsgKiBUSEUgQVVUSE9SUyBPRiBUSElTIFNPRlRXQVJFIERJU0NMQUlNIEFMTCBX QVJSQU5USUVTIFdJVEggUkVHQVJEIFRPCj4gLSsgKiBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcg QUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKPiAtKyAqIEFORCBGSVRO RVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWQo+IC0r ICogU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1B R0VTCj4gLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9S IFBST0ZJVFMsIFdIRVRIRVIgSU4KPiAtKyAqIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElH RU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcKPiAtKyAqIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJF Lgo+IC0rICoKPiAtKyAqLwo+IC0rCj4gLSsjaWZuZGVmIF9fRUFQX1RMU19IX18KPiAtKyNkZWZp bmUgX19FQVBfVExTX0hfXwo+IC0rCj4gLSsjaW5jbHVkZSAiZWFwLmgiCj4gLSsKPiAtKyNpbmNs dWRlIDxvcGVuc3NsL3NzbC5oPgo+IC0rI2luY2x1ZGUgPG9wZW5zc2wvYmlvLmg+Cj4gLSsjaW5j bHVkZSA8b3BlbnNzbC9tZDUuaD4KPiAtKwo+IC0rI2RlZmluZSBFQVBfVExTX0ZMQUdTX0xJICAg ICAgICAxMjgJLyogbGVuZ3RoIGluY2x1ZGVkIGZsYWcgKi8KPiAtKyNkZWZpbmUgRUFQX1RMU19G TEFHU19NRiAgICAgICAgNjQJLyogbW9yZSBmcmFnbWVudHMgZmxhZyAqLwo+IC0rI2RlZmluZSBF QVBfVExTX0ZMQUdTX1NUQVJUICAgICAzMgkvKiBzdGFydCBmbGFnICovCj4gLSsKPiAtKyNkZWZp bmUgRUFQX1RMU19NQVhfTEVOICAgICAgICAgNjU1MzYJLyogbWF4IGVhcCB0bHMgcGFja2V0IHNp emUgKi8KPiAtKwo+IC0rc3RydWN0IGVhcHRsc19zZXNzaW9uCj4gLSt7Cj4gLSsJdV9jaGFyICpk YXRhOwkJLyogYnVmZmVyZWQgZGF0YSAqLwo+IC0rCWludCBkYXRhbGVuOwkJLyogYnVmZmVyZWQg ZGF0YSBsZW4gKi8KPiAtKwlpbnQgb2Zmc2V0OwkJLyogZnJvbSB3aGVyZSB0byBzZW5kICovCj4g LSsJaW50IHRsc2xlbjsJCS8qIHRvdGFsIGxlbmd0aCBvZiB0bHMgZGF0YSAqLwo+IC0rCWJvb2wg ZnJhZzsJCS8qIHBhY2tldCBpcyBmcmFnbWVudGVkICovCj4gLSsJU1NMX0NUWCAqY3R4Owo+IC0r CVNTTCAqc3NsOwkJLyogc3NsIGNvbm5lY3Rpb24gKi8KPiAtKwlCSU8gKmZyb21fc3NsOwo+IC0r CUJJTyAqaW50b19zc2w7Cj4gLSsJY2hhciBwZWVyW01BWFdPUkRMRU5dOwkvKiBwZWVyIG5hbWUg Ki8KPiAtKwljaGFyIHBlZXJjZXJ0ZmlsZVtNQVhXT1JETEVOXTsKPiAtKwlib29sIGFsZXJ0X3Nl bnQ7Cj4gLSsJdV9jaGFyIGFsZXJ0X3NlbnRfZGVzYzsKPiAtKwlib29sIGFsZXJ0X3JlY3Y7Cj4g LSsJdV9jaGFyIGFsZXJ0X3JlY3ZfZGVzYzsKPiAtKwljaGFyIHJ0eFs2NTUzNl07CS8qIHJldHJh bnNtaXNzaW9uIGJ1ZmZlciAqLwo+IC0rCWludCBydHhfbGVuOwo+IC0rCWludCBtdHU7CQkvKiB1 bml0IG10dSAqLwo+IC0rfTsKPiAtKwo+IC0rdHlwZWRlZiBzdHJ1Y3QgcHdfY2JfZGF0YQo+IC0r ewo+IC0rCWNvbnN0IHZvaWQgKnBhc3N3b3JkOwo+IC0rCWNvbnN0IGNoYXIgKnByb21wdF9pbmZv Owo+IC0rfSBQV19DQl9EQVRBOwo+IC0rCj4gLSsKPiAtK2ludCBzc2xfdmVyaWZ5X2NhbGxiYWNr KGludCwgWDUwOV9TVE9SRV9DVFggKik7Cj4gLSt2b2lkIHNzbF9tc2dfY2FsbGJhY2soaW50IHdy aXRlX3AsIGludCB2ZXJzaW9uLCBpbnQgY3QsIGNvbnN0IHZvaWQgKmJ1ZiwKPiAtKwkJICAgICAg c2l6ZV90IGxlbiwgU1NMICogc3NsLCB2b2lkICphcmcpOwo+IC0rCj4gLStYNTA5ICpnZXRfWDUw OV9mcm9tX2ZpbGUoY2hhciAqZmlsZW5hbWUpOwo+IC0raW50IHNzbF9jbXBfY2VydHMoY2hhciAq ZmlsZW5hbWUsIFg1MDkgKiBhKTsKPiAtKwo+IC0rU1NMX0NUWCAqZWFwdGxzX2luaXRfc3NsKGlu dCBpbml0X3NlcnZlciwgY2hhciAqY2FjZXJ0ZmlsZSwKPiAtKyAgICAgICAgICAgIGNoYXIgKmNl cnRmaWxlLCBjaGFyICpwZWVyX2NlcnRmaWxlLCBjaGFyICpwcml2a2V5ZmlsZSk7Cj4gLStpbnQg ZWFwdGxzX2luaXRfc3NsX3NlcnZlcihlYXBfc3RhdGUgKiBlc3ApOwo+IC0raW50IGVhcHRsc19p bml0X3NzbF9jbGllbnQoZWFwX3N0YXRlICogZXNwKTsKPiAtK3ZvaWQgZWFwdGxzX2ZyZWVfc2Vz c2lvbihzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cyk7Cj4gLSsKPiAtK2ludCBlYXB0bHNfcmVj ZWl2ZShzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFyICogaW5wLCBpbnQgbGVuKTsK PiAtK2ludCBlYXB0bHNfc2VuZChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0cywgdV9jaGFyICoq IG91dHApOwo+IC0rdm9pZCBlYXB0bHNfcmV0cmFuc21pdChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24g KmV0cywgdV9jaGFyICoqIG91dHApOwo+IC0rCj4gLStpbnQgZ2V0X2VhcHRsc19zZWNyZXQoaW50 IHVuaXQsIGNoYXIgKmNsaWVudCwgY2hhciAqc2VydmVyLAo+IC0rCQkgICAgICBjaGFyICpjbGlj ZXJ0ZmlsZSwgY2hhciAqc2VydmNlcnRmaWxlLCBjaGFyICpjYWNlcnRmaWxlLAo+IC0rCQkgICAg ICBjaGFyICpwa2ZpbGUsIGludCBhbV9zZXJ2ZXIpOwo+IC0rCj4gLSsjaWZkZWYgTVBQRQo+IC0r I2luY2x1ZGUgIm1wcGUuaCIgICAvKiBNUFBFX01BWF9LRVlfTEVOICovCj4gLStleHRlcm4gdV9j aGFyIG1wcGVfc2VuZF9rZXlbTVBQRV9NQVhfS0VZX0xFTl07Cj4gLStleHRlcm4gdV9jaGFyIG1w cGVfcmVjdl9rZXlbTVBQRV9NQVhfS0VZX0xFTl07Cj4gLStleHRlcm4gaW50IG1wcGVfa2V5c19z ZXQ7Cj4gLSsKPiAtK3ZvaWQgZWFwdGxzX2dlbl9tcHBlX2tleXMoc3RydWN0IGVhcHRsc19zZXNz aW9uICpldHMsIGNvbnN0IGNoYXIgKnByZl9sYWJlbCwgaW50IGNsaWVudCk7Cj4gLSsKPiAtKyNl bmRpZgo+IC0rCj4gLSsjZW5kaWYKPiAtZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmMgYi9wcHBkL2Vh cC5jCj4gLWluZGV4IDZlYTZjMWY4YmZmNi4uMDMyNDA3YzNkYmIyIDEwMDY0NAo+IC0tLS0gYS9w cHBkL2VhcC5jCj4gLSsrKyBiL3BwcGQvZWFwLmMKPiAtQEAgLTQzLDYgKzQzLDExIEBACj4gLSAg KiBCYXNlZCBvbiBkcmFmdC1pZXRmLXBwcGV4dC1lYXAtc3JwLTAzLnR4dC4KPiAtICAqLwo+IC0g Cj4gLSsvKgo+IC0rICogTW9kaWZpY2F0aW9uIGJ5IEJlbmlhbWlubyBHYWx2YW5pLCBNYXIgMjAw NQo+IC0rICogSW1wbGVtZW50ZWQgRUFQLVRMUyBhdXRoZW50aWNhdGlvbgo+IC0rICovCj4gLSsK PiAtICNkZWZpbmUgUkNTSUQJIiRJZDogZWFwLmMsdiAxLjQgMjAwNC8xMS8wOSAyMjozOToyNSBw YXVsdXMgRXhwICQiCj4gLSAKPiAtIC8qCj4gLUBAIC02Miw4ICs2NywxMiBAQAo+IC0gCj4gLSAj aW5jbHVkZSAicHBwZC5oIgo+IC0gI2luY2x1ZGUgInBhdGhuYW1lcy5oIgo+IC0tI2luY2x1ZGUg Im1kNS5oIgo+IC0gI2luY2x1ZGUgImVhcC5oIgo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyNp bmNsdWRlICJlYXAtdGxzLmgiCj4gLSsjZWxzZQo+IC0rI2luY2x1ZGUgIm1kNS5oIgo+IC0rI2Vu ZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtIAo+IC0gI2lmZGVmIFVTRV9TUlAKPiAtICNpbmNsdWRl IDx0X3B3ZC5oPgo+IC1AQCAtMjA5LDYgKzIxOCw5IEBAIGludCB1bml0Owo+IC0gCWVzcC0+ZXNf c2VydmVyLmVhX2lkID0gKHVfY2hhcikoZHJhbmQ0OCgpICogMHgxMDApOwo+IC0gCWVzcC0+ZXNf Y2xpZW50LmVhX3RpbWVvdXQgPSBFQVBfREVGUkVRVElNRTsKPiAtIAllc3AtPmVzX2NsaWVudC5l YV9tYXhyZXF1ZXN0cyA9IEVBUF9ERUZBTExPV1JFUTsKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4g LSsJZXNwLT5lc19jbGllbnQuZWFfdXNpbmdfZWFwdGxzID0gMDsKPiAtKyNlbmRpZiAvKiBVU0Vf RUFQVExTICovCj4gLSB9Cj4gLSAKPiAtIC8qCj4gLUBAIC00MzYsOCArNDQ4LDE2IEBAIGludCBz dGF0dXM7Cj4gLSAJdV9jaGFyIHZhbHNbMl07Cj4gLSAJc3RydWN0IGI2NHN0YXRlIGJzOwo+IC0g I2VuZGlmIC8qIFVTRV9TUlAgKi8KPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsJc3RydWN0IGVh cHRsc19zZXNzaW9uICpldHM7Cj4gLSsJaW50IHNlY3JldF9sZW47Cj4gLSsJY2hhciBzZWNyZXRb TUFYV09SRExFTl07Cj4gLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0gCj4gLSAJZXNwLT5l c19zZXJ2ZXIuZWFfdGltZW91dCA9IGVzcC0+ZXNfc2F2ZWR0aW1lOwo+IC0rI2lmZGVmIFVTRV9F QVBUTFMKPiAtKwllc3AtPmVzX3NlcnZlci5lYV9wcmV2X3N0YXRlID0gZXNwLT5lc19zZXJ2ZXIu ZWFfc3RhdGU7Cj4gLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0gCXN3aXRjaCAoZXNwLT5l c19zZXJ2ZXIuZWFfc3RhdGUpIHsKPiAtIAljYXNlIGVhcEJhZEF1dGg6Cj4gLSAJCXJldHVybjsK PiAtQEAgLTU2Miw5ICs1ODIsNzkgQEAgaW50IHN0YXR1czsKPiAtIAkJCWJyZWFrOwo+IC0gCQl9 Cj4gLSAjZW5kaWYgLyogVVNFX1NSUCAqLwo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyAgICAg ICAgICAgICAgICBpZiAoIWdldF9zZWNyZXQoZXNwLT5lc191bml0LCBlc3AtPmVzX3NlcnZlci5l YV9wZWVyLAo+IC0rICAgICAgICAgICAgICAgICAgICBlc3AtPmVzX3NlcnZlci5lYV9uYW1lLCBz ZWNyZXQsICZzZWNyZXRfbGVuLCAxKSkgewo+IC0rCj4gLSsJCQllc3AtPmVzX3NlcnZlci5lYV9z dGF0ZSA9IGVhcFRsc1N0YXJ0Owo+IC0rCQkJYnJlYWs7Cj4gLSsJCX0KPiAtKyNlbmRpZiAvKiBV U0VfRUFQVExTICovCj4gLSsKPiAtIAkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBNRDVD aGFsbDsKPiAtIAkJYnJlYWs7Cj4gLSAKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsJY2FzZSBl YXBUbHNTdGFydDoKPiAtKwkJLyogSW5pdGlhbGl6ZSBzc2wgc2Vzc2lvbiAqLwo+IC0rCQlpZigh ZWFwdGxzX2luaXRfc3NsX3NlcnZlcihlc3ApKSB7Cj4gLSsJCQllc3AtPmVzX3NlcnZlci5lYV9z dGF0ZSA9IGVhcEJhZEF1dGg7Cj4gLSsJCQlicmVhazsKPiAtKwkJfQo+IC0rCj4gLSsJCWVzcC0+ ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzUmVjdjsKPiAtKwkJYnJlYWs7Cj4gLSsKPiAtKwlj YXNlIGVhcFRsc1JlY3Y6Cj4gLSsJCWV0cyA9IChzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKikgZXNw LT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbjsKPiAtKwo+IC0rCQlpZihldHMtPmFsZXJ0X3NlbnQpIHsK PiAtKwkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzU2VuZEFsZXJ0Owo+IC0rCQkJ YnJlYWs7Cj4gLSsJCX0KPiAtKwo+IC0rCQlpZiAoc3RhdHVzKSB7Cj4gLSsJCQllc3AtPmVzX3Nl cnZlci5lYV9zdGF0ZSA9IGVhcEJhZEF1dGg7Cj4gLSsJCQlicmVhazsKPiAtKwkJfQo+IC0rCQll dHMgPSAoc3RydWN0IGVhcHRsc19zZXNzaW9uICopIGVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb247 Cj4gLSsKPiAtKwkJaWYoZXRzLT5mcmFnKQo+IC0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUg PSBlYXBUbHNTZW5kQWNrOwo+IC0rCQllbHNlCj4gLSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0 ZSA9IGVhcFRsc1NlbmQ7Cj4gLSsJCWJyZWFrOwo+IC0rCj4gLSsJY2FzZSBlYXBUbHNTZW5kOgo+ IC0rCQlldHMgPSAoc3RydWN0IGVhcHRsc19zZXNzaW9uICopIGVzcC0+ZXNfc2VydmVyLmVhX3Nl c3Npb247Cj4gLSsKPiAtKwkJaWYoZXRzLT5mcmFnKQo+IC0rCQkJZXNwLT5lc19zZXJ2ZXIuZWFf c3RhdGUgPSBlYXBUbHNSZWN2QWNrOwo+IC0rCQllbHNlCj4gLSsJCQlpZihTU0xfaXNfaW5pdF9m aW5pc2hlZChldHMtPnNzbCkpCj4gLSsJCQkJZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUgPSBlYXBU bHNSZWN2Q2xpZW50Owo+IC0rCQkJZWxzZQo+IC0rCQkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRl ID0gZWFwVGxzUmVjdjsKPiAtKwkJYnJlYWs7Cj4gLSsKPiAtKwljYXNlIGVhcFRsc1NlbmRBY2s6 Cj4gLSsJCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVhcFRsc1JlY3Y7Cj4gLSsJCWJyZWFr Owo+IC0rCj4gLSsJY2FzZSBlYXBUbHNSZWN2QWNrOgo+IC0rICAgICAgICAgICAgICAgIGlmIChz dGF0dXMpIHsKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgIGVzcC0+ZXNfc2VydmVyLmVhX3N0 YXRlID0gZWFwQmFkQXV0aDsKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IC0r ICAgICAgICAgICAgICAgIH0KPiAtKwo+IC0rCQllc3AtPmVzX3NlcnZlci5lYV9zdGF0ZSA9IGVh cFRsc1NlbmQ7Cj4gLSsJCWJyZWFrOwo+IC0rCj4gLSsJY2FzZSBlYXBUbHNTZW5kQWxlcnQ6Cj4g LSsJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzUmVjdkFsZXJ0QWNrOwo+IC0rCQli cmVhazsKPiAtKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCj4gLSsKPiAtIAljYXNlIGVhcFNSUDE6 Cj4gLSAjaWZkZWYgVVNFX1NSUAo+IC0gCQl0cyA9IChzdHJ1Y3QgdF9zZXJ2ZXIgKillc3AtPmVz X3NlcnZlci5lYV9zZXNzaW9uOwo+IC1AQCAtNzE4LDYgKzgwOCwzMCBAQCBlYXBfc3RhdGUgKmVz cDsKPiAtIAkJSU5DUFRSKGVzcC0+ZXNfc2VydmVyLmVhX25hbWVsZW4sIG91dHApOwo+IC0gCQli cmVhazsKPiAtIAo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKwljYXNlIGVhcFRsc1N0YXJ0Ogo+ IC0rCQlQVVRDSEFSKEVBUFRfVExTLCBvdXRwKTsKPiAtKwkJUFVUQ0hBUihFQVBfVExTX0ZMQUdT X1NUQVJULCBvdXRwKTsKPiAtKwkJZWFwX2ZpZ3VyZV9uZXh0X3N0YXRlKGVzcCwgMCk7Cj4gLSsJ CWJyZWFrOwo+IC0rCj4gLSsJY2FzZSBlYXBUbHNTZW5kOgo+IC0rCQllYXB0bHNfc2VuZChlc3At PmVzX3NlcnZlci5lYV9zZXNzaW9uLCAmb3V0cCk7Cj4gLSsJCWVhcF9maWd1cmVfbmV4dF9zdGF0 ZShlc3AsIDApOwo+IC0rCQlicmVhazsKPiAtKwo+IC0rCWNhc2UgZWFwVGxzU2VuZEFjazoKPiAt KwkJUFVUQ0hBUihFQVBUX1RMUywgb3V0cCk7Cj4gLSsJCVBVVENIQVIoMCwgb3V0cCk7Cj4gLSsJ CWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsIDApOwo+IC0rCQlicmVhazsKPiAtKwo+IC0rCWNh c2UgZWFwVGxzU2VuZEFsZXJ0Ogo+IC0rCQllYXB0bHNfc2VuZChlc3AtPmVzX3NlcnZlci5lYV9z ZXNzaW9uLCAmb3V0cCk7Cj4gLSsJCWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsIDApOwo+IC0r CQlicmVhazsKPiAtKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCj4gLSsKPiAtICNpZmRlZiBVU0Vf U1JQCj4gLSAJY2FzZSBlYXBTUlAxOgo+IC0gCQlQVVRDSEFSKEVBUFRfU1JQLCBvdXRwKTsKPiAt QEAgLTkwNCwxMSArMTAxOCw1NyBAQCBzdGF0aWMgdm9pZAo+IC0gZWFwX3NlcnZlcl90aW1lb3V0 KGFyZykKPiAtIHZvaWQgKmFyZzsKPiAtIHsKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsJdV9j aGFyICpvdXRwOwo+IC0rCXVfY2hhciAqbGVubG9jOwo+IC0rCWludCBvdXRsZW47Cj4gLSsjZW5k aWYgLyogVVNFX0VBUFRMUyAqLwo+IC0rCj4gLSAJZWFwX3N0YXRlICplc3AgPSAoZWFwX3N0YXRl ICopIGFyZzsKPiAtIAo+IC0gCWlmICghZWFwX3NlcnZlcl9hY3RpdmUoZXNwKSkKPiAtIAkJcmV0 dXJuOwo+IC0gCj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rCXN3aXRjaChlc3AtPmVzX3NlcnZl ci5lYV9wcmV2X3N0YXRlKSB7Cj4gLSsKPiAtKwkvKgo+IC0rCSAqICBJbiBlYXAtdGxzIHRoZSBz dGF0ZSBjaGFuZ2VzIGFmdGVyIGEgcmVxdWVzdCwgc28gd2UgcmV0dXJuIHRvCj4gLSsJICogIHBy ZXZpb3VzIHN0YXRlIC4uLgo+IC0rCSAqLwo+IC0rCWNhc2UoZWFwVGxzU3RhcnQpOgo+IC0rCWNh c2UoZWFwVGxzU2VuZEFjayk6Cj4gLSsJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZXNwLT5l c19zZXJ2ZXIuZWFfcHJldl9zdGF0ZTsKPiAtKwkJYnJlYWs7Cj4gLSsKPiAtKwkvKgo+IC0rCSAq ICAuLi4gb3IgcmVzZW5kIHRoZSBzdG9yZWQgZGF0YQo+IC0rCSAqLwo+IC0rCWNhc2UoZWFwVGxz U2VuZCk6Cj4gLSsJY2FzZShlYXBUbHNTZW5kQWxlcnQpOgo+IC0rCQlvdXRwID0gb3V0cGFja2V0 X2J1ZjsKPiAtKwkJTUFLRUhFQURFUihvdXRwLCBQUFBfRUFQKTsKPiAtKwkJUFVUQ0hBUihFQVBf UkVRVUVTVCwgb3V0cCk7Cj4gLSsJCVBVVENIQVIoZXNwLT5lc19zZXJ2ZXIuZWFfaWQsIG91dHAp Owo+IC0rCQlsZW5sb2MgPSBvdXRwOwo+IC0rCQlJTkNQVFIoMiwgb3V0cCk7Cj4gLSsKPiAtKwkJ ZWFwdGxzX3JldHJhbnNtaXQoZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbiwgJm91dHApOwo+IC0r Cj4gLSsJCW91dGxlbiA9IChvdXRwIC0gb3V0cGFja2V0X2J1ZikgLSBQUFBfSERSTEVOOwo+IC0r CQlQVVRTSE9SVChvdXRsZW4sIGxlbmxvYyk7Cj4gLSsJCW91dHB1dChlc3AtPmVzX3VuaXQsIG91 dHBhY2tldF9idWYsIG91dGxlbiArIFBQUF9IRFJMRU4pOwo+IC0rCQllc3AtPmVzX3NlcnZlci5l YV9yZXF1ZXN0cysrOwo+IC0rCj4gLSsJCWlmIChlc3AtPmVzX3NlcnZlci5lYV90aW1lb3V0ID4g MCkKPiAtKwkJCVRJTUVPVVQoZWFwX3NlcnZlcl90aW1lb3V0LCBlc3AsIGVzcC0+ZXNfc2VydmVy LmVhX3RpbWVvdXQpOwo+IC0rCj4gLSsJCXJldHVybjsKPiAtKwlkZWZhdWx0Ogo+IC0rCQlicmVh azsKPiAtKwl9Cj4gLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0rCj4gLSAJLyogRUFQIElE IG51bWJlciBtdXN0IG5vdCBjaGFuZ2Ugb24gdGltZW91dC4gKi8KPiAtIAllYXBfc2VuZF9yZXF1 ZXN0KGVzcCk7Cj4gLSB9Cj4gLUBAIC0xMTY2LDYgKzEzMjYsODEgQEAgdV9jaGFyICpzdHI7Cj4g LSB9Cj4gLSAjZW5kaWYgLyogVVNFX1NSUCAqLwo+IC0gCj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+ IC0rLyoKPiAtKyAqIFNlbmQgYW4gRUFQLVRMUyByZXNwb25zZSBtZXNzYWdlIHdpdGggdGxzIGRh dGEKPiAtKyAqLwo+IC0rc3RhdGljIHZvaWQKPiAtK2VhcF90bHNfcmVzcG9uc2UoZXNwLCBpZCkK PiAtK2VhcF9zdGF0ZSAqZXNwOwo+IC0rdV9jaGFyIGlkOwo+IC0rewo+IC0rICAgICAgICB1X2No YXIgKm91dHA7Cj4gLSsgICAgICAgIGludCBvdXRsZW47Cj4gLSsJdV9jaGFyICpsZW5sb2M7Cj4g LSsKPiAtKyAgICAgICAgb3V0cCA9IG91dHBhY2tldF9idWY7Cj4gLSsKPiAtKyAgICAgICAgTUFL RUhFQURFUihvdXRwLCBQUFBfRUFQKTsKPiAtKwo+IC0rICAgICAgICBQVVRDSEFSKEVBUF9SRVNQ T05TRSwgb3V0cCk7Cj4gLSsgICAgICAgIFBVVENIQVIoaWQsIG91dHApOwo+IC0rCj4gLSsJbGVu bG9jID0gb3V0cDsKPiAtKwlJTkNQVFIoMiwgb3V0cCk7Cj4gLSsKPiAtKwkvKgo+IC0rCSAgIElm IHRoZSBpZCBpbiB0aGUgcmVxdWVzdCBpcyB1bmNoYW5nZWQsIHdlIG11c3QgcmV0cmFuc21pdAo+ IC0rCSAgIHRoZSBvbGQgZGF0YQo+IC0rCSovCj4gLSsJaWYoaWQgPT0gZXNwLT5lc19jbGllbnQu ZWFfaWQpCj4gLSsJCWVhcHRsc19yZXRyYW5zbWl0KGVzcC0+ZXNfY2xpZW50LmVhX3Nlc3Npb24s ICZvdXRwKTsKPiAtKwllbHNlCj4gLSsJCWVhcHRsc19zZW5kKGVzcC0+ZXNfY2xpZW50LmVhX3Nl c3Npb24sICZvdXRwKTsKPiAtKwo+IC0rCW91dGxlbiA9IChvdXRwIC0gb3V0cGFja2V0X2J1Zikg LSBQUFBfSERSTEVOOwo+IC0rCVBVVFNIT1JUKG91dGxlbiwgbGVubG9jKTsKPiAtKwo+IC0rCW91 dHB1dChlc3AtPmVzX3VuaXQsIG91dHBhY2tldF9idWYsIFBQUF9IRFJMRU4gKyBvdXRsZW4pOwo+ IC0rCj4gLSsJZXNwLT5lc19jbGllbnQuZWFfaWQgPSBpZDsKPiAtKwo+IC0rfQo+IC0rCj4gLSsv Kgo+IC0rICogU2VuZCBhbiBFQVAtVExTIGFjawo+IC0rICovCj4gLStzdGF0aWMgdm9pZAo+IC0r ZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpCj4gLStlYXBfc3RhdGUgKmVzcDsKPiAtK3VfY2hhciBp ZDsKPiAtK3sKPiAtKwl1X2NoYXIgKm91dHA7Cj4gLSsJaW50IG91dGxlbjsKPiAtKwl1X2NoYXIg KmxlbmxvYzsKPiAtKwo+IC0rCW91dHAgPSBvdXRwYWNrZXRfYnVmOwo+IC0rCj4gLSsJTUFLRUhF QURFUihvdXRwLCBQUFBfRUFQKTsKPiAtKwo+IC0rCVBVVENIQVIoRUFQX1JFU1BPTlNFLCBvdXRw KTsKPiAtKwlQVVRDSEFSKGlkLCBvdXRwKTsKPiAtKwllc3AtPmVzX2NsaWVudC5lYV9pZCA9IGlk Owo+IC0rCj4gLSsJbGVubG9jID0gb3V0cDsKPiAtKwlJTkNQVFIoMiwgb3V0cCk7Cj4gLSsKPiAt KwlQVVRDSEFSKEVBUFRfVExTLCBvdXRwKTsKPiAtKwlQVVRDSEFSKDAsIG91dHApOwo+IC0rCj4g LSsJb3V0bGVuID0gKG91dHAgLSBvdXRwYWNrZXRfYnVmKSAtIFBQUF9IRFJMRU47Cj4gLSsJUFVU U0hPUlQob3V0bGVuLCBsZW5sb2MpOwo+IC0rCj4gLSsJb3V0cHV0KGVzcC0+ZXNfdW5pdCwgb3V0 cGFja2V0X2J1ZiwgUFBQX0hEUkxFTiArIG91dGxlbik7Cj4gLSsKPiAtK30KPiAtKyNlbmRpZiAv KiBVU0VfRUFQVExTICovCj4gLSsKPiAtIHN0YXRpYyB2b2lkCj4gLSBlYXBfc2VuZF9uYWsoZXNw LCBpZCwgdHlwZSkKPiAtIGVhcF9zdGF0ZSAqZXNwOwo+IC1AQCAtMTMyMCw2ICsxNTU1LDExIEBA IGludCBsZW47Cj4gLSAJY2hhciByaG9zdG5hbWVbMjU2XTsKPiAtIAlNRDVfQ1RYIG1kQ29udGV4 dDsKPiAtIAl1X2NoYXIgaGFzaFtNRDVfU0lHTkFUVVJFX1NJWkVdOwo+IC0rI2lmZGVmIFVTRV9F QVBUTFMKPiAtKwl1X2NoYXIgZmxhZ3M7Cj4gLSsJc3RydWN0IGVhcHRsc19zZXNzaW9uICpldHMg PSBlc3AtPmVzX2NsaWVudC5lYV9zZXNzaW9uOwo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8K PiAtKwo+IC0gI2lmZGVmIFVTRV9TUlAKPiAtIAlzdHJ1Y3QgdF9jbGllbnQgKnRjOwo+IC0gCXN0 cnVjdCB0X251bSBzdmFsLCBndmFsLCBOdmFsLCAqQXAsIEJ2YWw7Cj4gLUBAIC0xNDU2LDYgKzE2 OTYsMTAwIEBAIGludCBsZW47Cj4gLSAJCSAgICBlc3AtPmVzX2NsaWVudC5lYV9uYW1lbGVuKTsK PiAtIAkJYnJlYWs7Cj4gLSAKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsJY2FzZSBFQVBUX1RM UzoKPiAtKwo+IC0rCQlzd2l0Y2goZXNwLT5lc19jbGllbnQuZWFfc3RhdGUpIHsKPiAtKwo+IC0r CQljYXNlIGVhcExpc3RlbjoKPiAtKwo+IC0rCQkJaWYgKGxlbiA8IDEpIHsKPiAtKwkJCQllcnJv cigiRUFQOiByZWNlaXZlZCBFQVAtVExTIExpc3RlbiBwYWNrZXQgd2l0aCBubyBkYXRhIik7Cj4g LSsJCQkJLyogQm9ndXMgcmVxdWVzdDsgd2FpdCBmb3Igc29tZXRoaW5nIHJlYWwuICovCj4gLSsJ CQkJcmV0dXJuOwo+IC0rCQkJfQo+IC0rCQkJR0VUQ0hBUihmbGFncywgaW5wKTsKPiAtKwkJCWlm KGZsYWdzICYgRUFQX1RMU19GTEFHU19TVEFSVCl7Cj4gLSsKPiAtKwkJCQllc3AtPmVzX2NsaWVu dC5lYV91c2luZ19lYXB0bHMgPSAxOwo+IC0rCj4gLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChleHBsaWNpdF9yZW1vdGUpewo+IC0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVzcC0+ZXNfY2xpZW50LmVhX3BlZXIgPSBzdHJkdXAocmVtb3RlX25h bWUpOwo+IC0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzcC0+ZXNf Y2xpZW50LmVhX3BlZXJsZW4gPSBzdHJsZW4ocmVtb3RlX25hbWUpOwo+IC0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9IGVsc2UKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlc3AtPmVzX2NsaWVudC5lYV9wZWVyID0gTlVMTDsKPiAtKwo+IC0rCQkJ CS8qIEluaXQgc3NsIHNlc3Npb24gKi8KPiAtKwkJCQlpZighZWFwdGxzX2luaXRfc3NsX2NsaWVu dChlc3ApKSB7Cj4gLSsJCQkJCWRiZ2xvZygiY2Fubm90IGluaXQgc3NsIik7Cj4gLSsJCQkJCWVh cF9zZW5kX25hayhlc3AsIGlkLCBFQVBUX1RMUyk7Cj4gLSsJCQkJCWVzcC0+ZXNfY2xpZW50LmVh X3VzaW5nX2VhcHRscyA9IDA7Cj4gLSsJCQkJCWJyZWFrOwo+IC0rCQkJCX0KPiAtKwo+IC0rCQkJ CWV0cyA9IGVzcC0+ZXNfY2xpZW50LmVhX3Nlc3Npb247Cj4gLSsJCQkJZWFwX3Rsc19yZXNwb25z ZShlc3AsIGlkKTsKPiAtKwkJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IChldHMtPmZyYWcg PyBlYXBUbHNSZWN2QWNrIDoKPiAtKwkJCQkJCQkJZWFwVGxzUmVjdik7Cj4gLSsJCQkJYnJlYWs7 Cj4gLSsJCQl9Cj4gLSsKPiAtKwkJCS8qIFRoZSBzZXJ2ZXIgaGFzIHNlbnQgYSBiYWQgc3RhcnQg cGFja2V0LiAqLwo+IC0rCQkJZWFwX3NlbmRfbmFrKGVzcCwgaWQsIEVBUFRfVExTKTsKPiAtKwkJ CWJyZWFrOwo+IC0rCj4gLSsJCWNhc2UgZWFwVGxzUmVjdkFjazoKPiAtKwkJCWVhcF90bHNfcmVz cG9uc2UoZXNwLCBpZCk7Cj4gLSsJCQllc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSA9IChldHMtPmZy YWcgPyBlYXBUbHNSZWN2QWNrIDoKPiAtKwkJCQkJCQllYXBUbHNSZWN2KTsKPiAtKwkJCWJyZWFr Owo+IC0rCj4gLSsJCWNhc2UgZWFwVGxzUmVjdjoKPiAtKwkJCWlmIChsZW4gPCAxKSB7Cj4gLSsJ CQkJZXJyb3IoIkVBUDogZGlzY2FyZGluZyBFQVAtVExTIFJlY2VpdmUgcGFja2V0IHdpdGggbm8g ZGF0YSIpOwo+IC0rCQkJCS8qIEJvZ3VzIHJlcXVlc3Q7IHdhaXQgZm9yIHNvbWV0aGluZyByZWFs LiAqLwo+IC0rCQkJCXJldHVybjsKPiAtKwkJCX0KPiAtKwkJCWVhcHRsc19yZWNlaXZlKGV0cywg aW5wLCBsZW4pOwo+IC0rCj4gLSsJCQlpZihldHMtPmZyYWcpIHsKPiAtKwkJCQllYXBfdGxzX3Nl bmRhY2soZXNwLCBpZCk7Cj4gLSsJCQkJZXNwLT5lc19jbGllbnQuZWFfc3RhdGUgPSBlYXBUbHNS ZWN2Owo+IC0rCQkJCWJyZWFrOwo+IC0rCQkJfQo+IC0rCj4gLSsJCQlpZihldHMtPmFsZXJ0X3Jl Y3YpIHsKPiAtKwkJCQllYXBfdGxzX3NlbmRhY2soZXNwLCBpZCk7Cj4gLSsJCQkJZXNwLT5lc19j bGllbnQuZWFfc3RhdGUgPSBlYXBUbHNSZWN2RmFpbHVyZTsKPiAtKwkJCQlicmVhazsKPiAtKwkJ CX0KPiAtKwo+IC0rCQkJLyogQ2hlY2sgaWYgVExTIGhhbmRzaGFrZSBpcyBmaW5pc2hlZCAqLwo+ IC0rCQkJaWYoU1NMX2lzX2luaXRfZmluaXNoZWQoZXRzLT5zc2wpKXsKPiAtKyNpZmRlZiBNUFBF Cj4gLSsgCQkJCWVhcHRsc19nZW5fbXBwZV9rZXlzKCBldHMsICJjbGllbnQgRUFQIGVuY3J5cHRp b24iLCAxICk7Cj4gLSsjZW5kaWYKPiAtKwkJCQllYXB0bHNfZnJlZV9zZXNzaW9uKGV0cyk7Cj4g LSsJCQkJZWFwX3Rsc19zZW5kYWNrKGVzcCwgaWQpOwo+IC0rCQkJCWVzcC0+ZXNfY2xpZW50LmVh X3N0YXRlID0gZWFwVGxzUmVjdlN1Y2Nlc3M7Cj4gLSsJCQkJYnJlYWs7Cj4gLSsJCQl9Cj4gLSsK PiAtKwkJCWVhcF90bHNfcmVzcG9uc2UoZXNwLGlkKTsKPiAtKyAgICAgICAgICAgICAgICAgICAg ICAgIGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRlID0gKGV0cy0+ZnJhZyA/IGVhcFRsc1JlY3ZBY2sg Ogo+IC0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlYXBUbHNSZWN2KTsKPiAtKwo+IC0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Cj4gLSsKPiAtKwkJZGVmYXVsdDoKPiAtKwkJCWVhcF9zZW5kX25hayhlc3AsIGlkLCBFQVBUX1RM Uyk7Cj4gLSsJCQllc3AtPmVzX2NsaWVudC5lYV91c2luZ19lYXB0bHMgPSAwOwo+IC0rCQkJYnJl YWs7Cj4gLSsJCX0KPiAtKwo+IC0rCQlicmVhazsKPiAtKyNlbmRpZiAvKiBVU0VfRUFQVExTICov Cj4gLSsKPiAtICNpZmRlZiBVU0VfU1JQCj4gLSAJY2FzZSBFQVBUX1NSUDoKPiAtIAkJaWYgKGxl biA8IDEpIHsKPiAtQEAgLTE3MzcsNiArMjA3MSwxMSBAQCBpbnQgbGVuOwo+IC0gCXVfY2hhciBk aWdbU0hBX0RJR0VTVFNJWkVdOwo+IC0gI2VuZGlmIC8qIFVTRV9TUlAgKi8KPiAtIAo+IC0rI2lm ZGVmIFVTRV9FQVBUTFMKPiAtKwlzdHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKmV0czsKPiAtKwl1X2No YXIgZmxhZ3M7Cj4gLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0rCj4gLSAJaWYgKGVzcC0+ ZXNfc2VydmVyLmVhX2lkICE9IGlkKSB7Cj4gLSAJCWRiZ2xvZygiRUFQOiBkaXNjYXJkaW5nIFJl c3BvbnNlICVkOyBleHBlY3RlZCBJRCAlZCIsIGlkLAo+IC0gCQkgICAgZXNwLT5lc19zZXJ2ZXIu ZWFfaWQpOwo+IC1AQCAtMTc3Niw2ICsyMTE1LDY0IEBAIGludCBsZW47Cj4gLSAJCWVhcF9maWd1 cmVfbmV4dF9zdGF0ZShlc3AsIDApOwo+IC0gCQlicmVhazsKPiAtIAo+IC0rI2lmZGVmIFVTRV9F QVBUTFMKPiAtKwljYXNlIEVBUFRfVExTOgo+IC0rCQlzd2l0Y2goZXNwLT5lc19zZXJ2ZXIuZWFf c3RhdGUpIHsKPiAtKwo+IC0rCQljYXNlIGVhcFRsc1JlY3Y6Cj4gLSsKPiAtKwkJCWV0cyA9IChz dHJ1Y3QgZWFwdGxzX3Nlc3Npb24gKikgZXNwLT5lc19zZXJ2ZXIuZWFfc2Vzc2lvbjsKPiAtKwkJ CWVhcF9maWd1cmVfbmV4dF9zdGF0ZShlc3AsCj4gLSsJCQkJZWFwdGxzX3JlY2VpdmUoZXNwLT5l c19zZXJ2ZXIuZWFfc2Vzc2lvbiwgaW5wLCBsZW4pKTsKPiAtKwo+IC0rCQkJaWYoZXRzLT5hbGVy dF9yZWN2KSB7Cj4gLSsJCQkJZWFwX3NlbmRfZmFpbHVyZShlc3ApOwo+IC0rCQkJCWJyZWFrOwo+ IC0rCQkJfQo+IC0rCQkJYnJlYWs7Cj4gLSsKPiAtKwkJY2FzZSBlYXBUbHNSZWN2QWNrOgo+IC0r CQkJaWYobGVuID4gMSkgewo+IC0rCQkJCWRiZ2xvZygiRUFQLVRMUyBBQ0sgd2l0aCBleHRyYSBk YXRhIik7Cj4gLSsJCQl9Cj4gLSsJCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAwKTsKPiAt KwkJCWJyZWFrOwo+IC0rCj4gLSsJCWNhc2UgZWFwVGxzUmVjdkNsaWVudDoKPiAtKwkJCS8qIFJl Y2VpdmUgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgZnJvbSBjbGllbnQgKi8KPiAtKwo+IC0rCQkJ aWYgKGxlbiA+IDApIHsKPiAtKwkJCQlHRVRDSEFSKGZsYWdzLCBpbnApOwo+IC0rCj4gLSsJCQkJ aWYobGVuID09IDEgJiYgIWZsYWdzKSB7CS8qIEFjayA9IG9rICovCj4gLSsjaWZkZWYgTVBQRQo+ IC0rIAkJCQkJZWFwdGxzX2dlbl9tcHBlX2tleXMoIGVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb24s ICJjbGllbnQgRUFQIGVuY3J5cHRpb24iLCAwICk7Cj4gLSsjZW5kaWYKPiAtKwkJCQkJZWFwX3Nl bmRfc3VjY2Vzcyhlc3ApOwo+IC0rCQkJCX0KPiAtKwkJCQllbHNlIHsJCQkvKiBmYWlsdXJlICov Cj4gLSsJCQkJCXdhcm4oIlNlcnZlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQiKTsKPiAtKwkJCQkJ ZWFwX3NlbmRfZmFpbHVyZShlc3ApOwo+IC0rCQkJCX0KPiAtKwkJCX0KPiAtKwkJCWVsc2UKPiAt KwkJCQl3YXJuKCJCb2d1cyBFQVAtVExTIHBhY2tldCByZWNlaXZlZCBmcm9tIGNsaWVudCIpOwo+ IC0rCj4gLSsJCQllYXB0bHNfZnJlZV9zZXNzaW9uKGVzcC0+ZXNfc2VydmVyLmVhX3Nlc3Npb24p Owo+IC0rCj4gLSsJCQlicmVhazsKPiAtKwo+IC0rCQljYXNlIGVhcFRsc1JlY3ZBbGVydEFjazoK PiAtKwkJCWVhcF9zZW5kX2ZhaWx1cmUoZXNwKTsKPiAtKwkJCWJyZWFrOwo+IC0rCj4gLSsJCWRl ZmF1bHQ6Cj4gLSsJCQllYXBfZmlndXJlX25leHRfc3RhdGUoZXNwLCAxKTsKPiAtKwkJCWJyZWFr Owo+IC0rCQl9Cj4gLSsJCWJyZWFrOwo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtKwo+ IC0gCWNhc2UgRUFQVF9OT1RJRklDQVRJT046Cj4gLSAJCWRiZ2xvZygiRUFQIHVuZXhwZWN0ZWQg Tm90aWZpY2F0aW9uOyByZXNwb25zZSBkaXNjYXJkZWQiKTsKPiAtIAkJYnJlYWs7Cj4gLUBAIC0x ODA3LDYgKzIyMDQsMTMgQEAgaW50IGxlbjsKPiAtIAkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRl ID0gZWFwTUQ1Q2hhbGw7Cj4gLSAJCQlicmVhazsKPiAtIAo+IC0rI2lmZGVmIFVTRV9FQVBUTFMK PiAtKwkJCS8qIFNlbmQgRUFQLVRMUyBzdGFydCBwYWNrZXQgKi8KPiAtKwkJY2FzZSBFQVBUX1RM UzoKPiAtKwkJCWVzcC0+ZXNfc2VydmVyLmVhX3N0YXRlID0gZWFwVGxzU3RhcnQ7Cj4gLSsJCQli cmVhazsKPiAtKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCj4gLSsKPiAtIAkJZGVmYXVsdDoKPiAt IAkJCWRiZ2xvZygiRUFQOiBwZWVyIHJlcXVlc3RpbmcgdW5rbm93biBUeXBlICVkIiwgdmFsbGVu KTsKPiAtIAkJCXN3aXRjaCAoZXNwLT5lc19zZXJ2ZXIuZWFfc3RhdGUpIHsKPiAtQEAgLTIwMTgs MTMgKzI0MjIsMjcgQEAgdV9jaGFyICppbnA7Cj4gLSBpbnQgaWQ7Cj4gLSBpbnQgbGVuOwo+IC0g ewo+IC0tCWlmIChlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSAhPSBlYXBPcGVuICYmICFlYXBfY2xp ZW50X2FjdGl2ZShlc3ApKSB7Cj4gLSsJaWYgKGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRlICE9IGVh cE9wZW4gJiYgIWVhcF9jbGllbnRfYWN0aXZlKGVzcCkKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4g LSsJCSYmIGVzcC0+ZXNfY2xpZW50LmVhX3N0YXRlICE9IGVhcFRsc1JlY3ZTdWNjZXNzCj4gLSsj ZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0rCQkpIHsKPiAtIAkJZGJnbG9nKCJFQVAgdW5leHBl Y3RlZCBzdWNjZXNzIG1lc3NhZ2UgaW4gc3RhdGUgJXMgKCVkKSIsCj4gLSAJCSAgICBlYXBfc3Rh dGVfbmFtZShlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSksCj4gLSAJCSAgICBlc3AtPmVzX2NsaWVu dC5lYV9zdGF0ZSk7Cj4gLSAJCXJldHVybjsKPiAtIAl9Cj4gLSAKPiAtKyNpZmRlZiBVU0VfRUFQ VExTCj4gLSsJaWYoZXNwLT5lc19jbGllbnQuZWFfdXNpbmdfZWFwdGxzICYmIGVzcC0+ZXNfY2xp ZW50LmVhX3N0YXRlICE9Cj4gLSsJCWVhcFRsc1JlY3ZTdWNjZXNzKSB7Cj4gLSsJCWRiZ2xvZygi RUFQLVRMUyB1bmV4cGVjdGVkIHN1Y2Nlc3MgbWVzc2FnZSBpbiBzdGF0ZSAlcyAoJWQpIiwKPiAt KyAgICAgICAgICAgICAgICAgICAgZWFwX3N0YXRlX25hbWUoZXNwLT5lc19jbGllbnQuZWFfc3Rh dGUpLAo+IC0rICAgICAgICAgICAgICAgICAgICBlc3AtPmVzX2NsaWVudC5lYV9zdGF0ZSk7Cj4g LSsJCXJldHVybjsKPiAtKwl9Cj4gLSsjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+IC0rCj4gLSAJ aWYgKGVzcC0+ZXNfY2xpZW50LmVhX3RpbWVvdXQgPiAwKSB7Cj4gLSAJCVVOVElNRU9VVChlYXBf Y2xpZW50X3RpbWVvdXQsICh2b2lkICopZXNwKTsKPiAtIAl9Cj4gLUBAIC0yMTUwLDYgKzI1Njgs OSBAQCB2b2lkICphcmc7Cj4gLSAJaW50IGNvZGUsIGlkLCBsZW4sIHJ0eXBlLCB2YWxsZW47Cj4g LSAJdV9jaGFyICpwc3RhcnQ7Cj4gLSAJdV9pbnQzMl90IHV2YWw7Cj4gLSsjaWZkZWYgVVNFX0VB UFRMUwo+IC0rCXVfY2hhciBmbGFnczsKPiAtKyNlbmRpZiAvKiBVU0VfRUFQVExTICovCj4gLSAK PiAtIAlpZiAoaW5sZW4gPCBFQVBfSEVBREVSTEVOKQo+IC0gCQlyZXR1cm4gKDApOwo+IC1AQCAt MjIxNCw2ICsyNjM1LDI0IEBAIHZvaWQgKmFyZzsKPiAtIAkJCX0KPiAtIAkJCWJyZWFrOwo+IC0g Cj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rCQljYXNlIEVBUFRfVExTOgo+IC0rCQkJaWYgKGxl biA8IDEpCj4gLSsJCQkJYnJlYWs7Cj4gLSsJCQlHRVRDSEFSKGZsYWdzLCBpbnApOwo+IC0rCQkJ bGVuLS07Cj4gLSsKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZsYWdzID09IDAgJiYg bGVuID09IDApewo+IC0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGVyKGFy ZywgIiBBY2siKTsKPiAtKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g LSsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gLSsKPiAtKwkJCXByaW50ZXIoYXJnLCBmbGFn cyAmIEVBUF9UTFNfRkxBR1NfTEkgPyAiIEwiOiIgLSIpOwo+IC0rCQkJcHJpbnRlcihhcmcsIGZs YWdzICYgRUFQX1RMU19GTEFHU19NRiA/ICJNIjoiLSIpOwo+IC0rCQkJcHJpbnRlcihhcmcsIGZs YWdzICYgRUFQX1RMU19GTEFHU19TVEFSVCA/ICJTIjoiLSAiKTsKPiAtKwkJCWJyZWFrOwo+IC0r I2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtKwo+IC0gCQljYXNlIEVBUFRfU1JQOgo+IC0gCQkJ aWYgKGxlbiA8IDMpCj4gLSAJCQkJZ290byB0cnVuY2F0ZWQ7Cj4gLUBAIC0yMzI1LDYgKzI3NjQs MjUgQEAgdm9pZCAqYXJnOwo+IC0gCQkJfQo+IC0gCQkJYnJlYWs7Cj4gLSAKPiAtKyNpZmRlZiBV U0VfRUFQVExTCj4gLSsJCWNhc2UgRUFQVF9UTFM6Cj4gLSsJCQlpZiAobGVuIDwgMSkKPiAtKwkJ CQlicmVhazsKPiAtKwkJCUdFVENIQVIoZmxhZ3MsIGlucCk7Cj4gLSsJCQlsZW4tLTsKPiAtKwo+ IC0rICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmxhZ3MgPT0gMCAmJiBsZW4gPT0gMCl7Cj4g LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZXIoYXJnLCAiIEFjayIpOwo+ IC0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAtKyAgICAgICAgICAg ICAgICAgICAgICAgIH0KPiAtKwo+IC0rCQkJcHJpbnRlcihhcmcsIGZsYWdzICYgRUFQX1RMU19G TEFHU19MSSA/ICIgTCI6IiAtIik7Cj4gLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBFQVBfVExT X0ZMQUdTX01GID8gIk0iOiItIik7Cj4gLSsJCQlwcmludGVyKGFyZywgZmxhZ3MgJiBFQVBfVExT X0ZMQUdTX1NUQVJUID8gIlMiOiItICIpOwo+IC0rCj4gLSsJCQlicmVhazsKPiAtKyNlbmRpZiAv KiBVU0VfRUFQVExTICovCj4gLSsKPiAtIAkJY2FzZSBFQVBUX05BSzoKPiAtIAkJCWlmIChsZW4g PD0gMCkgewo+IC0gCQkJCXByaW50ZXIoYXJnLCAiIDxtaXNzaW5nIGhpbnQ+Iik7Cj4gLUBAIC0y NDI2LDMgKzI4ODQsNCBAQCB2b2lkICphcmc7Cj4gLSAKPiAtIAlyZXR1cm4gKGlucCAtIHBzdGFy dCk7Cj4gLSB9Cj4gLSsKPiAtZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmggYi9wcHBkL2VhcC5oCj4g LWluZGV4IDE5OWQxODQ5YjgyNi4uMDg3YmFhZDgzZWVkIDEwMDY0NAo+IC0tLS0gYS9wcHBkL2Vh cC5oCj4gLSsrKyBiL3BwcGQvZWFwLmgKPiAtQEAgLTg0LDYgKzg0LDE2IEBAIGVudW0gZWFwX3N0 YXRlX2NvZGUgewo+IC0gCWVhcENsb3NlZCwJLyogQXV0aGVudGljYXRpb24gbm90IGluIHVzZSAq Lwo+IC0gCWVhcExpc3RlbiwJLyogQ2xpZW50IHJlYWR5IChhbmQgdGltZXIgcnVubmluZykgKi8K PiAtIAllYXBJZGVudGlmeSwJLyogRUFQIElkZW50aWZ5IHNlbnQgKi8KPiAtKwllYXBUbHNTdGFy dCwJLyogU2VuZCBFQVAtVExTIHN0YXJ0IHBhY2tldCAqLwo+IC0rCWVhcFRsc1JlY3YsCS8qIFJl Y2VpdmUgRUFQLVRMUyB0bHMgZGF0YSAqLwo+IC0rCWVhcFRsc1NlbmRBY2ssCS8qIFNlbmQgRUFQ LVRMUyBhY2sgKi8KPiAtKwllYXBUbHNTZW5kLAkvKiBTZW5kIEVBUC1UTFMgdGxzIGRhdGEgKi8K PiAtKwllYXBUbHNSZWN2QWNrLAkvKiBSZWNlaXZlIEVBUC1UTFMgYWNrICovCj4gLSsJZWFwVGxz UmVjdkNsaWVudCwgCS8qIFJlY2VpdmUgRUFQLVRMUyBhdXRoIHJlc3BvbnNlIGZyb20gY2xpZW50 Ki8KPiAtKwllYXBUbHNTZW5kQWxlcnQsCS8qIFNlbmQgRUFQLVRMUyB0bHMgYWxlcnQgKHNlcnZl cikqLwo+IC0rCWVhcFRsc1JlY3ZBbGVydEFjaywJLyogUmVjZWl2ZSBFQVAtVExTIGFjayBhZnRl ciBzZW5kaW5nIGFsZXJ0ICovCj4gLSsJZWFwVGxzUmVjdlN1Y2Nlc3MsCS8qIFJlY2VpdmUgRUFQ IHN1Y2Nlc3MgKi8KPiAtKwllYXBUbHNSZWN2RmFpbHVyZSwJLyogUmVjZWl2ZSBFQVAgZmFpbHVy ZSAqLwo+IC0gCWVhcFNSUDEsCS8qIFNlbnQgRUFQIFNSUC1TSEExIFN1YnR5cGUgMSAqLwo+IC0g CWVhcFNSUDIsCS8qIFNlbnQgRUFQIFNSUC1TSEExIFN1YnR5cGUgMiAqLwo+IC0gCWVhcFNSUDMs CS8qIFNlbnQgRUFQIFNSUC1TSEExIFN1YnR5cGUgMyAqLwo+IC1AQCAtOTUsOSArMTA1LDE4IEBA IGVudW0gZWFwX3N0YXRlX2NvZGUgewo+IC0gCj4gLSAjZGVmaW5lCUVBUF9TVEFURVMJXAo+IC0g CSJJbml0aWFsIiwgIlBlbmRpbmciLCAiQ2xvc2VkIiwgIkxpc3RlbiIsICJJZGVudGlmeSIsIFwK PiAtKwkiVGxzU3RhcnQiLCAiVGxzUmVjdiIsICJUbHNTZW5kQWNrIiwgIlRsc1NlbmQiLCAiVGxz UmVjdkFjayIsICJUbHNSZWN2Q2xpZW50IixcCj4gLSsJIlRsc1NlbmRBbGVydCIsICJUbHNSZWN2 QWxlcnRBY2siICwgIlRsc1JlY3ZTdWNjZXNzIiwgIlRsc1JlY3ZGYWlsdXJlIiwgXAo+IC0gCSJT UlAxIiwgIlNSUDIiLCAiU1JQMyIsICJNRDVDaGFsbCIsICJPcGVuIiwgIlNSUDQiLCAiQmFkQXV0 aCIKPiAtIAo+IC0tI2RlZmluZQllYXBfY2xpZW50X2FjdGl2ZShlc3ApCSgoZXNwKS0+ZXNfY2xp ZW50LmVhX3N0YXRlID09IGVhcExpc3RlbikKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsjZGVm aW5lCWVhcF9jbGllbnRfYWN0aXZlKGVzcCkJKChlc3ApLT5lc19jbGllbnQuZWFfc3RhdGUgIT0g ZWFwSW5pdGlhbCAmJlwKPiAtKwkJCQkgKGVzcCktPmVzX2NsaWVudC5lYV9zdGF0ZSAhPSBlYXBQ ZW5kaW5nICYmXAo+IC0rCQkJCSAoZXNwKS0+ZXNfY2xpZW50LmVhX3N0YXRlICE9IGVhcENsb3Nl ZCkKPiAtKyNlbHNlCj4gLSsjZGVmaW5lIGVhcF9jbGllbnRfYWN0aXZlKGVzcCkJKChlc3ApLT5l c19jbGllbnQuZWFfc3RhdGUgPT0gZWFwTGlzdGVuKQo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMg Ki8KPiAtKwo+IC0gI2RlZmluZQllYXBfc2VydmVyX2FjdGl2ZShlc3ApCVwKPiAtIAkoKGVzcCkt PmVzX3NlcnZlci5lYV9zdGF0ZSA+PSBlYXBJZGVudGlmeSAmJiBcCj4gLSAJIChlc3ApLT5lc19z ZXJ2ZXIuZWFfc3RhdGUgPD0gZWFwTUQ1Q2hhbGwpCj4gLUBAIC0xMTIsMTEgKzEzMSwxNyBAQCBz dHJ1Y3QgZWFwX2F1dGggewo+IC0gCXVfc2hvcnQgZWFfbmFtZWxlbjsJLyogTGVuZ3RoIG9mIG91 ciBuYW1lICovCj4gLSAJdV9zaG9ydCBlYV9wZWVybGVuOwkvKiBMZW5ndGggb2YgcGVlcidzIG5h bWUgKi8KPiAtIAllbnVtIGVhcF9zdGF0ZV9jb2RlIGVhX3N0YXRlOwo+IC0rI2lmZGVmIFVTRV9F QVBUTFMKPiAtKwllbnVtIGVhcF9zdGF0ZV9jb2RlIGVhX3ByZXZfc3RhdGU7Cj4gLSsjZW5kaWYK PiAtIAl1X2NoYXIgZWFfaWQ7CQkvKiBDdXJyZW50IGlkICovCj4gLSAJdV9jaGFyIGVhX3JlcXVl c3RzOwkvKiBOdW1iZXIgb2YgUmVxdWVzdHMgc2VudC9yZWNlaXZlZCAqLwo+IC0gCXVfY2hhciBl YV9yZXNwb25zZXM7CS8qIE51bWJlciBvZiBSZXNwb25zZXMgKi8KPiAtIAl1X2NoYXIgZWFfdHlw ZTsJCS8qIE9uZSBvZiBFQVBUXyogKi8KPiAtIAl1X2ludDMyX3QgZWFfa2V5ZmxhZ3M7CS8qIFNS UCBzaGFyZWQga2V5IHVzYWdlIGZsYWdzICovCj4gLSsjaWZkZWYgVVNFX0VBUFRMUwo+IC0rCWJv b2wgZWFfdXNpbmdfZWFwdGxzOwo+IC0rI2VuZGlmCj4gLSB9Owo+IC0gCj4gLSAvKgo+IC1AQCAt MTM5LDcgKzE2NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBlYXBfc3RhdGUgewo+IC0gICogVGltZW91 dHMuCj4gLSAgKi8KPiAtICNkZWZpbmUJRUFQX0RFRlRJTUVPVVQJCTMJLyogVGltZW91dCAoc2Vj b25kcykgZm9yIHJleG1pdCAqLwo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyNkZWZpbmUJRUFQ X0RFRlRSQU5TTUlUUwkzMAkvKiBtYXggIyB0aW1lcyB0byB0cmFuc21pdCAqLwo+IC0rCQkJCQkv KiBjZXJ0aWZpY2F0ZXMgY2FuIGJlIGxvbmcgLi4uICovCj4gLSsjZWxzZQo+IC0gI2RlZmluZQlF QVBfREVGVFJBTlNNSVRTCTEwCS8qIG1heCAjIHRpbWVzIHRvIHRyYW5zbWl0ICovCj4gLSsjZW5k aWYgLyogVVNFX0VBUFRMUyAqLwo+IC0gI2RlZmluZQlFQVBfREVGUkVRVElNRQkJMjAJLyogVGlt ZSB0byB3YWl0IGZvciBwZWVyIHJlcXVlc3QgKi8KPiAtICNkZWZpbmUJRUFQX0RFRkFMTE9XUkVR CQkyMAkvKiBtYXggIyB0aW1lcyB0byBhY2NlcHQgcmVxdWVzdHMgKi8KPiAtIAo+IC1kaWZmIC0t Z2l0IGEvcHBwZC9tZDUuYyBiL3BwcGQvbWQ1LmMKPiAtaW5kZXggZjEyOTFjZTFiZDcyLi42Zjhm NzIwN2M1OTIgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQvbWQ1LmMKPiAtKysrIGIvcHBwZC9tZDUuYwo+ IC1AQCAtMzMsNiArMzMsOCBAQAo+IC0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gLSAgKi8KPiAtIAo+IC0r I2lmbmRlZiBVU0VfRUFQVExTCj4gLSsKPiAtICNpbmNsdWRlIDxzdHJpbmcuaD4KPiAtICNpbmNs dWRlICJtZDUuaCIKPiAtIAo+IC1AQCAtMzA1LDMgKzMwNyw1IEBAIFVJTlQ0ICppbjsKPiAtICAq KiBFbmQgb2YgbWQ1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqKgo+IC0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIChjdXQp ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gLSAgKi8KPiAtKyNlbmRpZiAvKiBV U0VfRUFQVExTICovCj4gLSsKPiAtZGlmZiAtLWdpdCBhL3BwcGQvbWQ1LmggYi9wcHBkL21kNS5o Cj4gLWluZGV4IDcxZThiMDBlMmRkZS4uMTRkNzEyMTcxYzVlIDEwMDY0NAo+IC0tLS0gYS9wcHBk L21kNS5oCj4gLSsrKyBiL3BwcGQvbWQ1LmgKPiAtQEAgLTM2LDYgKzM2LDcgQEAKPiAtICAqKiBk b2N1bWVudGF0aW9uIGFuZC9vciBzb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqKgo+IC0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gLSAgKi8KPiAtKyNpZm5kZWYgVVNFX0VB UFRMUwo+IC0gCj4gLSAjaWZuZGVmIF9fTUQ1X0lOQ0xVREVfXwo+IC0gCj4gLUBAIC02MywzICs2 NCw1IEBAIHZvaWQgTUQ1X0ZpbmFsICh1bnNpZ25lZCBjaGFyIGhhc2hbXSwgTUQ1X0NUWCAqbWRD b250ZXh0KTsKPiAtIAo+IC0gI2RlZmluZSBfX01ENV9JTkNMVURFX18KPiAtICNlbmRpZiAvKiBf X01ENV9JTkNMVURFX18gKi8KPiAtKwo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtZGlm ZiAtLWdpdCBhL3BwcGQvcGF0aG5hbWVzLmggYi9wcHBkL3BhdGhuYW1lcy5oCj4gLWluZGV4IDQ2 OTcyNjAxZmM5Mi4uNzJjMmY1YjE5MWVlIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BhdGhuYW1lcy5o Cj4gLSsrKyBiL3BwcGQvcGF0aG5hbWVzLmgKPiAtQEAgLTIxLDYgKzIxLDEzIEBACj4gLSAjZGVm aW5lIF9QQVRIX1VQQVBGSUxFIAkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvcGFwLXNlY3JldHMiCj4g LSAjZGVmaW5lIF9QQVRIX0NIQVBGSUxFIAkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvY2hhcC1zZWNy ZXRzIgo+IC0gI2RlZmluZSBfUEFUSF9TUlBGSUxFIAkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvc3Jw LXNlY3JldHMiCj4gLSsKPiAtKyNpZmRlZiBVU0VfRUFQVExTCj4gLSsjZGVmaW5lIF9QQVRIX0VB UFRMU0NMSUZJTEUJX1JPT1RfUEFUSCAiL2V0Yy9wcHAvZWFwdGxzLWNsaWVudCIKPiAtKyNkZWZp bmUgX1BBVEhfRUFQVExTU0VSVkZJTEUJX1JPT1RfUEFUSCAiL2V0Yy9wcHAvZWFwdGxzLXNlcnZl ciIKPiAtKyNkZWZpbmUgX1BBVEhfT1BFTlNTTENPTkZGSUxFCV9ST09UX1BBVEggIi9ldGMvcHBw L29wZW5zc2wuY25mIgo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtKwo+IC0gI2RlZmlu ZSBfUEFUSF9TWVNPUFRJT05TIF9ST09UX1BBVEggIi9ldGMvcHBwL29wdGlvbnMiCj4gLSAjZGVm aW5lIF9QQVRIX0lQVVAJIF9ST09UX1BBVEggIi9ldGMvcHBwL2lwLXVwIgo+IC0gI2RlZmluZSBf UEFUSF9JUERPV04JIF9ST09UX1BBVEggIi9ldGMvcHBwL2lwLWRvd24iCj4gLWRpZmYgLS1naXQg YS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXggYi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGlu dXgKPiAtaW5kZXggMGY5ZDM3ZDI5NTNiLi5iYzI5OTY4ZDQ0YzkgMTAwNjQ0Cj4gLS0tLSBhL3Bw cGQvcGx1Z2lucy9NYWtlZmlsZS5saW51eAo+IC0rKysgYi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUu bGludXgKPiAtQEAgLTQsNiArNCw5IEBAIENGTEFHUwk9ICQoQ09QVFMpIC1JLi4gLUkuLi8uLi9p bmNsdWRlIC1mUElDCj4gLSBMREZMQUdTCT0gJChMRE9QVFMpCj4gLSBJTlNUQUxMCT0gaW5zdGFs bAo+IC0gCj4gLSsjIEVBUC1UTFMKPiAtK0NGTEFHUyArPSAtRFVTRV9FQVBUTFM9MQo+IC0rCj4g LSBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKPiAtIEJJTkRJUiA9ICQoREVTVERJUikv c2Jpbgo+IC0gTUFORElSID0gJChERVNURElSKS9zaGFyZS9tYW4vbWFuOAo+IC1kaWZmIC0tZ2l0 IGEvcHBwZC9wbHVnaW5zL3Bhc3Nwcm9tcHQuYyBiL3BwcGQvcGx1Z2lucy9wYXNzcHJvbXB0LmMK PiAtaW5kZXggYmFiYjZkYzMxYmFiLi42YmE3M2NhZTI3OTUgMTAwNjQ0Cj4gLS0tLSBhL3BwcGQv cGx1Z2lucy9wYXNzcHJvbXB0LmMKPiAtKysrIGIvcHBwZC9wbHVnaW5zL3Bhc3Nwcm9tcHQuYwo+ IC1AQCAtMTA3LDQgKzEwNyw3IEBAIHZvaWQgcGx1Z2luX2luaXQodm9pZCkKPiAtIHsKPiAtICAg ICBhZGRfb3B0aW9ucyhvcHRpb25zKTsKPiAtICAgICBwYXBfcGFzc3dkX2hvb2sgPSBwcm9tcHRw YXNzOwo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyAgICBlYXB0bHNfcGFzc3dkX2hvb2sgPSBw cm9tcHRwYXNzOwo+IC0rI2VuZGlmCj4gLSB9Cj4gLWRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMv cGFzc3dvcmRmZC5jIGIvcHBwZC9wbHVnaW5zL3Bhc3N3b3JkZmQuYwo+IC1pbmRleCBkNzE4ZjNi ZGY4MWQuLmMzZjk3OTNlNDFhMCAxMDA2NDQKPiAtLS0tIGEvcHBwZC9wbHVnaW5zL3Bhc3N3b3Jk ZmQuYwo+IC0rKysgYi9wcHBkL3BsdWdpbnMvcGFzc3dvcmRmZC5jCj4gLUBAIC03OSw0ICs3OSw4 IEBAIHZvaWQgcGx1Z2luX2luaXQgKHZvaWQpCj4gLSAKPiAtICAgICBjaGFwX2NoZWNrX2hvb2sg PSBwd2ZkX2NoZWNrOwo+IC0gICAgIGNoYXBfcGFzc3dkX2hvb2sgPSBwd2ZkX3Bhc3N3ZDsKPiAt Kwo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtKyAgICBlYXB0bHNfcGFzc3dkX2hvb2sgPSBwd2Zk X3Bhc3N3ZDsKPiAtKyNlbmRpZgo+IC0gfQo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wcHBkLjggYi9w cHBkL3BwcGQuOAo+IC1pbmRleCA2NWJiZTcyMWY3NjEuLjhhZmEyZDExODZlMiAxMDA2NDQKPiAt LS0tIGEvcHBwZC9wcHBkLjgKPiAtKysrIGIvcHBwZC9wcHBkLjgKPiAtQEAgLTI1Myw2ICsyNTMs MTIgQEAgQWx0ZXJuYXRpdmVseSwgYSB2YWx1ZSBvZiAwIGZvciBcZkluclxmUiBvciBcZkludFxm UiBkaXNhYmxlcwo+IC0gY29tcHJlc3Npb24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0aW9u LiAgVXNlIFxmSW5vYnNkY29tcFxmUiBvcgo+IC0gXGZJYnNkY29tcCAwXGZSIHRvIGRpc2FibGUg QlNELUNvbXByZXNzIGNvbXByZXNzaW9uIGVudGlyZWx5Lgo+IC0gLlRQCj4gLSsuQiBjYSBcZklj YS1maWxlCj4gLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxmSWNhLWZpbGVcZlIgYXMgdGhlIFgu NTA5IENlcnRpZmljYXRlIEF1dGhvcml0eQo+IC0rKENBKSBmaWxlIChpbiBQRU0gZm9ybWF0KSwg bmVlZGVkIGZvciBzZXR0aW5nIHVwIGFuIEVBUC1UTFMgY29ubmVjdGlvbi4KPiAtK1RoaXMgb3B0 aW9uIGlzIHVzZWQgb24gdGhlIGNsaWVudC1zaWRlIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFxm QmNlcnRcZlIKPiAtK2FuZCBcZkJrZXlcZlIgb3B0aW9ucy4KPiAtKy5UUAo+IC0gLkIgY2R0cmN0 cwo+IC0gVXNlIGEgbm9uLXN0YW5kYXJkIGhhcmR3YXJlIGZsb3cgY29udHJvbCAoaS5lLiBEVFIv Q1RTKSB0byBjb250cm9sCj4gLSB0aGUgZmxvdyBvZiBkYXRhIG9uIHRoZSBzZXJpYWwgcG9ydC4g IElmIG5laXRoZXIgdGhlIFxmSWNydHNjdHNcZlIsCj4gLUBAIC0yNjQsNiArMjcwLDEyIEBAIFJU UyBvdXRwdXQuIFN1Y2ggc2VyaWFsIHBvcnRzIHVzZSB0aGlzIG1vZGUgdG8gaW1wbGVtZW50IHRy dWUKPiAtIGJpLWRpcmVjdGlvbmFsIGZsb3cgY29udHJvbC4gVGhlIHNhY3JpZmljZSBpcyB0aGF0 IHRoaXMgZmxvdwo+IC0gY29udHJvbCBtb2RlIGRvZXMgbm90IHBlcm1pdCB1c2luZyBEVFIgYXMg YSBtb2RlbSBjb250cm9sIGxpbmUuCj4gLSAuVFAKPiAtKy5CIGNlcnQgXGZJY2VydGZpbGUKPiAt KyhFQVAtVExTKSBVc2UgdGhlIGZpbGUgXGZJY2VydGZpbGVcZlIgYXMgdGhlIFguNTA5IGNlcnRp ZmljYXRlIChpbiBQRU0KPiAtK2Zvcm1hdCksIG5lZWRlZCBmb3Igc2V0dGluZyB1cCBhbiBFQVAt VExTIGNvbm5lY3Rpb24uIFRoaXMgb3B0aW9uIGlzCj4gLSt1c2VkIG9uIHRoZSBjbGllbnQtc2lk ZSBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBcZkJjYVxmUiBhbmQKPiAtK1xmQmtleVxmUiBvcHRp b25zLgo+IC0rLlRQCj4gLSAuQiBjaGFwXC1pbnRlcnZhbCBcZkluCj4gLSBJZiB0aGlzIG9wdGlv biBpcyBnaXZlbiwgcHBwZCB3aWxsIHJlY2hhbGxlbmdlIHRoZSBwZWVyIGV2ZXJ5IFxmSW5cZlIK PiAtIHNlY29uZHMuCj4gLUBAIC0yOTIsNiArMzA0LDE4IEBAIG5lZ290aWF0aW9uIGJ5IHNlbmRp bmcgaXRzIGZpcnN0IExDUCBwYWNrZXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcwo+IC0gMTAwMCAo MSBzZWNvbmQpLiAgVGhpcyB3YWl0IHBlcmlvZCBvbmx5IGFwcGxpZXMgaWYgdGhlIFxmQmNvbm5l Y3RcZlIKPiAtIG9yIFxmQnB0eVxmUiBvcHRpb24gaXMgdXNlZC4KPiAtIC5UUAo+IC0rLkIgY3Js IFxmSWZpbGVuYW1lCj4gLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxmSWZpbGVuYW1lXGZSIGFz IHRoZSBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QKPiAtK3RvIGNoZWNrIGZvciB0aGUgdmFs aWRpdHkgb2YgdGhlIHBlZXIncyBjZXJ0aWZpY2F0ZS4gVGhpcyBvcHRpb24gaXMgbm90Cj4gLStt YW5kYXRvcnkgZm9yIHNldHRpbmcgdXAgYW4gRUFQLVRMUyBjb25uZWN0aW9uLiBBbHNvIHNlZSB0 aGUgXGZCY3JsLWRpclxmUgo+IC0rb3B0aW9uLgo+IC0rLlRQCj4gLSsuQiBjcmwtZGlyIFxmSWRp cmVjdG9yeQo+IC0rKEVBUC1UTFMpIFVzZSB0aGUgZGlyZWN0b3J5IFxmSWRpcmVjdG9yeVxmUiB0 byBzY2FuIGZvciBDUkwgZmlsZXMgaW4KPiAtK2hhcyBmb3JtYXQgKCRoYXNoLnIwKSB0byBjaGVj ayBmb3IgdGhlIHZhbGlkaXR5IG9mIHRoZSBwZWVyJ3MgY2VydGlmaWNhdGUuCj4gLStUaGlzIG9w dGlvbiBpcyBub3QgbWFuZGF0b3J5IGZvciBzZXR0aW5nIHVwIGFuIEVBUC1UTFMgY29ubmVjdGlv bi4KPiAtK0Fsc28gc2VlIHRoZSBcZkJjcmxcZlIgb3B0aW9uLgo+IC0rLlRQCj4gLSAuQiBkZWJ1 Zwo+IC0gRW5hYmxlcyBjb25uZWN0aW9uIGRlYnVnZ2luZyBmYWNpbGl0aWVzLgo+IC0gSWYgdGhp cyBvcHRpb24gaXMgZ2l2ZW4sIHBwcGQgd2lsbCBsb2cgdGhlIGNvbnRlbnRzIG9mIGFsbAo+IC1A QCAtNTYxLDYgKzU4NSwxMiBAQCB0cmFuc21pdHRlZCBwYWNrZXRzIGJlIHByaW50ZWQuICBPbiBt b3N0IHN5c3RlbXMsIG1lc3NhZ2VzIHByaW50ZWQgYnkKPiAtIHRoZSBrZXJuZWwgYXJlIGxvZ2dl ZCBieSBzeXNsb2coMSkgdG8gYSBmaWxlIGFzIGRpcmVjdGVkIGluIHRoZQo+IC0gL2V0Yy9zeXNs b2cuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCj4gLSAuVFAKPiAtKy5CIGtleSBcZklrZXlmaWxl Cj4gLSsoRUFQLVRMUykgVXNlIHRoZSBmaWxlIFxmSWtleWZpbGVcZlIgYXMgdGhlIHByaXZhdGUg a2V5IGZpbGUgKGluIFBFTQo+IC0rZm9ybWF0KSwgbmVlZGVkIGZvciBzZXR0aW5nIHVwIGFuIEVB UC1UTFMgY29ubmVjdGlvbi4gVGhpcyBvcHRpb24gaXMKPiAtK3VzZWQgb24gdGhlIGNsaWVudC1z aWRlIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFxmQmNhXGZSIGFuZAo+IC0rXGZCY2VydFxmUiBv cHRpb25zLgo+IC0rLlRQCj4gLSAuQiBrdHVuZQo+IC0gRW5hYmxlcyBwcHBkIHRvIGFsdGVyIGtl cm5lbCBzZXR0aW5ncyBhcyBhcHByb3ByaWF0ZS4gIFVuZGVyIExpbnV4LAo+IC0gcHBwZCB3aWxs IGVuYWJsZSBJUCBmb3J3YXJkaW5nIChpLmUuIHNldCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9y d2FyZAo+IC1AQCAtNzI0LDYgKzc1NCw5IEBAIG5hbWUgdG8gXGZJbmFtZVxmUi4pCj4gLSBEaXNh YmxlIEFkZHJlc3MvQ29udHJvbCBjb21wcmVzc2lvbiBpbiBib3RoIGRpcmVjdGlvbnMgKHNlbmQg YW5kCj4gLSByZWNlaXZlKS4KPiAtIC5UUAo+IC0rLkIgbmVlZC1wZWVyLWVhcAo+IC0rKEVBUC1U TFMpIFJlcXVpcmUgdGhlIHBlZXIgdG8gdmVyaWZ5IG91ciBhdXRoZW50aWNhdGlvbiBjcmVkZW50 aWFscy4KPiAtKy5UUAo+IC0gLkIgbm9hdXRoCj4gLSBEbyBub3QgcmVxdWlyZSB0aGUgcGVlciB0 byBhdXRoZW50aWNhdGUgaXRzZWxmLiAgVGhpcyBvcHRpb24gaXMKPiAtIHByaXZpbGVnZWQuCj4g LWRpZmYgLS1naXQgYS9wcHBkL3BwcGQuaCBiL3BwcGQvcHBwZC5oCj4gLWluZGV4IDU2N2Q3MDIx ODFjYS4uMTk1Y2JlM2M2ZmZiIDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BwcGQuaAo+IC0rKysgYi9w cHBkL3BwcGQuaAo+IC1AQCAtMzM4LDYgKzMzOCwxMSBAQCBleHRlcm4gYm9vbAlkdW1wX29wdGlv bnM7CS8qIHByaW50IG91dCBvcHRpb24gdmFsdWVzICovCj4gLSBleHRlcm4gYm9vbAlkcnlydW47 CQkvKiBjaGVjayBldmVyeXRoaW5nLCBwcmludCBvcHRpb25zLCBleGl0ICovCj4gLSBleHRlcm4g aW50CWNoaWxkX3dhaXQ7CS8qICMgc2Vjb25kcyB0byB3YWl0IGZvciBjaGlsZHJlbiBhdCBlbmQg Ki8KPiAtIAo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtK2V4dGVybiBjaGFyCSpjcmxfZGlyOwo+ IC0rZXh0ZXJuIGNoYXIJKmNybF9maWxlOwo+IC0rI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAt Kwo+IC0gI2lmZGVmIE1BWE9DVEVUUwo+IC0gZXh0ZXJuIHVuc2lnbmVkIGludCBtYXhvY3RldHM7 CSAgICAgLyogTWF4aW11bSBvY3RldGVzIHBlciBzZXNzaW9uIChpbiBieXRlcykgKi8KPiAtIGV4 dGVybiBpbnQgICAgICAgbWF4b2N0ZXRzX2RpcjsgICAgICAvKiBEaXJlY3Rpb24gOgo+IC1AQCAt NzU4LDYgKzc2MywxMCBAQCBleHRlcm4gaW50ICgqY2hhcF9jaGVja19ob29rKSBfX1AoKHZvaWQp KTsKPiAtIGV4dGVybiBpbnQgKCpjaGFwX3Bhc3N3ZF9ob29rKSBfX1AoKGNoYXIgKnVzZXIsIGNo YXIgKnBhc3N3ZCkpOwo+IC0gZXh0ZXJuIHZvaWQgKCptdWx0aWxpbmtfam9pbl9ob29rKSBfX1Ao KHZvaWQpKTsKPiAtIAo+IC0rI2lmZGVmIFVTRV9FQVBUTFMKPiAtK2V4dGVybiBpbnQgKCplYXB0 bHNfcGFzc3dkX2hvb2spIF9fUCgoY2hhciAqdXNlciwgY2hhciAqcGFzc3dkKSk7Cj4gLSsjZW5k aWYKPiAtKwo+IC0gLyogTGV0IGEgcGx1Z2luIHNub29wIHNlbnQgYW5kIHJlY2VpdmVkIHBhY2tl dHMuICBVc2VmdWwgZm9yIEwyVFAgKi8KPiAtIGV4dGVybiB2b2lkICgqc25vb3BfcmVjdl9ob29r KSBfX1AoKHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZW4pKTsKPiAtIGV4dGVybiB2b2lkICgqc25v b3Bfc2VuZF9ob29rKSBfX1AoKHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZW4pKTsKPiBkaWZmIC0t Z2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVT LWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjcvMDA0MC1w cHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNyeXB0LnBhdGNo Cj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggYmY4MzI3OGE5OTE1Li4wMDAwMDAw MDAwMDAKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDQwLXBwcGQtVXNlLW9wZW5zc2wtZm9y LXRoZS1ERVMtaW5zdGVhZC1vZi10aGUtbGliY3J5cHQucGF0Y2gKPiArKysgL2Rldi9udWxsCj4g QEAgLTEsMTE1ICswLDAgQEAKPiAtRnJvbTogPT9VVEYtOD9xP0phcm9zbGF2PTIwPUM1PUEwa2Fy dmFkYT89IDxqc2thcnZhZEByZWRoYXQuY29tPgo+IC1EYXRlOiBGcmksIDYgQXByIDIwMTggMTQ6 Mjc6MTggKzAyMDAKPiAtU3ViamVjdDogW1BBVENIXSBwcHBkOiBVc2Ugb3BlbnNzbCBmb3IgdGhl IERFUyBpbnN0ZWFkIG9mIHRoZSBsaWJjcnlwdCAvIGdsaWJjCj4gLU1JTUUtVmVyc2lvbjogMS4w Cj4gLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAo+IC1Db250ZW50LVRy YW5zZmVyLUVuY29kaW5nOiA4Yml0Cj4gLQo+IC1baHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21h Y2svcHBwL2NvbW1pdC8zYzdiODYyMjlmN2JkMjYwMGQ3NGRiMTRiMWZlNWIzODk2YmUzODc1XQo+ IC0KPiAtSXQgc2VlbXMgdGhlIGxhdGVzdCBnbGliYyAoaW4gRmVkb3JhIGdsaWJjLTIuMjcuOTAw MC0xMi5mYzI5KSBkcm9wcGVkCj4gLWxpYmNyeXB0LiAgVGhlIGxpYnhjcnlwdCBzdGFuZGFsb25l IHBhY2thZ2UgY2FuIGJlIHVzZWQgaW5zdGVhZCwgYnV0Cj4gLWl0IGRyb3BwZWQgdGhlIG9sZCBz ZXRrZXkvZW5jcnlwdCBBUEkgd2hpY2ggcHBwIHVzZXMgZm9yIERFUy4gIFRoZXJlCj4gLWlzIHN1 cHBvcnQgZm9yIHVzaW5nIG9wZW5zc2wgaW4gcHBwY3J5cHQuYywgYnV0IGl0IGNvbnRhaW5zIHR5 cG9zCj4gLXByZXZlbnRpbmcgaXQgZnJvbSBjb21waWxpbmcgYW5kIHNlZW1zIHRvIGJlIHdyaXR0 ZW4gZm9yIGFuIGFuY2llbnQKPiAtb3BlbnNzbCB2ZXJzaW9uLgo+IC0KPiAtVGhpcyB1cGRhdGVz IHRoZSBjb2RlIHRvIHVzZSBjdXJyZW50IG9wZW5zc2wuCj4gLQo+IC1bcGF1bHVzQG96bGFicy5v cmcgLSB3cm90ZSB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLCBmaXhlZCBjb21tZW50IGluCj4gLSBN YWtlZmlsZS5saW51eC5dCj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiDFoGthcnZhZGEg PGpza2FydmFkQHJlZGhhdC5jb20+Cj4gLVNpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxw YXVsdXNAb3psYWJzLm9yZz4KPiAtCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRl Ymlhbi50YXIueHoKPiAtCj4gLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJy aWNoQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIHBwcGQvTWFrZWZpbGUubGludXggfCAgNyAr KysrLS0tCj4gLSBwcHBkL3BwcGNyeXB0LmMgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCj4g LSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQo+IC0K PiAtZGlmZiAtLWdpdCBhL3BwcGQvTWFrZWZpbGUubGludXggYi9wcHBkL01ha2VmaWxlLmxpbnV4 Cj4gLWluZGV4IDU4YTYzNGNlOGMzYi4uY2I5ZDRmOWRjZjIyIDEwMDY0NAo+IC0tLS0gYS9wcHBk L01ha2VmaWxlLmxpbnV4Cj4gLSsrKyBiL3BwcGQvTWFrZWZpbGUubGludXgKPiAtQEAgLTM1LDEw ICszNSwxMCBAQCBlbmRpZgo+IC0gQ09QVFMgPSAtTzIgLXBpcGUgLVdhbGwgLWcKPiAtIExJQlMg PSAtbGNyeXB0bwo+IC0gCj4gLS0jIFVuY29tbWVudCB0aGUgbmV4dCAyIGxpbmVzIHRvIGluY2x1 ZGUgc3VwcG9ydCBmb3IgTWljcm9zb2Z0J3MKPiAtKyMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUg dG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNaWNyb3NvZnQncwo+IC0gIyBNUy1DSEFQIGF1dGhlbnRp Y2F0aW9uIHByb3RvY29sLiAgQWxzbywgZWRpdCBwbHVnaW5zL3JhZGl1cy9NYWtlZmlsZS5saW51 eC4KPiAtIENIQVBNUz15Cj4gLS1VU0VfQ1JZUFQ9eQo+IC0rI1VTRV9DUllQVD15Cj4gLSAjIERv bid0IHVzZSBNU0xBTk1BTiB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgeW91J3JlIGRvaW5n Lgo+IC0gI01TTEFOTUFOPXkKPiAtICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gaW5jbHVk ZSBzdXBwb3J0IGZvciBNUFBFLiAgQ0hBUE1TIChhYm92ZSkgbXVzdAo+IC1AQCAtMTM4LDcgKzEz OCw4IEBAIGVuZGlmCj4gLSAKPiAtIGlmZGVmIE5FRURERVMKPiAtIGlmbmRlZiBVU0VfQ1JZUFQK PiAtLUxJQlMgICAgICs9IC1sZGVzICQoTElCUykKPiAtK0NGTEFHUyAgICs9IC1JL3Vzci9pbmNs dWRlL29wZW5zc2wKPiAtK0xJQlMgICAgICs9IC1sY3J5cHRvCj4gLSBlbHNlCj4gLSBDRkxBR1Mg ICArPSAtRFVTRV9DUllQVD0xCj4gLSBlbmRpZgo+IC1kaWZmIC0tZ2l0IGEvcHBwZC9wcHBjcnlw dC5jIGIvcHBwZC9wcHBjcnlwdC5jCj4gLWluZGV4IDhiODViMTMyNzZhYi4uNmIzNTM3NWVkYzVl IDEwMDY0NAo+IC0tLS0gYS9wcHBkL3BwcGNyeXB0LmMKPiAtKysrIGIvcHBwZC9wcHBjcnlwdC5j Cj4gLUBAIC02NCw3ICs2NCw3IEBAIHVfY2hhciAqZGVzX2tleTsJLyogT1VUIDY0IGJpdCBERVMg a2V5IHdpdGggcGFyaXR5IGJpdHMgYWRkZWQgKi8KPiAtIAlkZXNfa2V5WzddID0gR2V0N0JpdHMo a2V5LCA0OSk7Cj4gLSAKPiAtICNpZm5kZWYgVVNFX0NSWVBUCj4gLS0JZGVzX3NldF9vZGRfcGFy aXR5KChkZXNfY2Jsb2NrICopZGVzX2tleSk7Cj4gLSsJREVTX3NldF9vZGRfcGFyaXR5KChERVNf Y2Jsb2NrICopZGVzX2tleSk7Cj4gLSAjZW5kaWYKPiAtIH0KPiAtIAo+IC1AQCAtMTU4LDI1ICsx NTgsMjUgQEAgdV9jaGFyICpjbGVhcjsJLyogT1VUIDggb2N0ZXRzICovCj4gLSB9Cj4gLSAKPiAt ICNlbHNlIC8qIFVTRV9DUllQVCAqLwo+IC0tc3RhdGljIGRlc19rZXlfc2NoZWR1bGUJa2V5X3Nj aGVkdWxlOwo+IC0rc3RhdGljIERFU19rZXlfc2NoZWR1bGUJa2V5X3NjaGVkdWxlOwo+IC0gCj4g LSBib29sCj4gLSBEZXNTZXRrZXkoa2V5KQo+IC0gdV9jaGFyICprZXk7Cj4gLSB7Cj4gLS0JZGVz X2NibG9jayBkZXNfa2V5Owo+IC0rCURFU19jYmxvY2sgZGVzX2tleTsKPiAtIAlNYWtlS2V5KGtl eSwgZGVzX2tleSk7Cj4gLS0JZGVzX3NldF9rZXkoJmRlc19rZXksIGtleV9zY2hlZHVsZSk7Cj4g LSsJREVTX3NldF9rZXkoJmRlc19rZXksICZrZXlfc2NoZWR1bGUpOwo+IC0gCXJldHVybiAoMSk7 Cj4gLSB9Cj4gLSAKPiAtIGJvb2wKPiAtLURlc0VuY3J5cHQoY2xlYXIsIGtleSwgY2lwaGVyKQo+ IC0rRGVzRW5jcnlwdChjbGVhciwgY2lwaGVyKQo+IC0gdV9jaGFyICpjbGVhcjsJLyogSU4gIDgg b2N0ZXRzICovCj4gLSB1X2NoYXIgKmNpcGhlcjsJLyogT1VUIDggb2N0ZXRzICovCj4gLSB7Cj4g LS0JZGVzX2VjYl9lbmNyeXB0KChkZXNfY2Jsb2NrICopY2xlYXIsIChkZXNfY2Jsb2NrICopY2lw aGVyLAo+IC0tCSAgICBrZXlfc2NoZWR1bGUsIDEpOwo+IC0rCURFU19lY2JfZW5jcnlwdCgoREVT X2NibG9jayAqKWNsZWFyLCAoREVTX2NibG9jayAqKWNpcGhlciwKPiAtKwkgICAgJmtleV9zY2hl ZHVsZSwgMSk7Cj4gLSAJcmV0dXJuICgxKTsKPiAtIH0KPiAtIAo+IC1AQCAtMTg1LDggKzE4NSw4 IEBAIERlc0RlY3J5cHQoY2lwaGVyLCBjbGVhcikKPiAtIHVfY2hhciAqY2lwaGVyOwkvKiBJTiAg OCBvY3RldHMgKi8KPiAtIHVfY2hhciAqY2xlYXI7CS8qIE9VVCA4IG9jdGV0cyAqLwo+IC0gewo+ IC0tCWRlc19lY2JfZW5jcnlwdCgoZGVzX2NibG9jayAqKWNpcGhlciwgKGRlc19jYmxvY2sgKilj bGVhciwKPiAtLQkgICAga2V5X3NjaGVkdWxlLCAwKTsKPiAtKwlERVNfZWNiX2VuY3J5cHQoKERF U19jYmxvY2sgKiljaXBoZXIsIChERVNfY2Jsb2NrICopY2xlYXIsCj4gLSsJICAgICZrZXlfc2No ZWR1bGUsIDApOwo+IC0gCXJldHVybiAoMSk7Cj4gLSB9Cj4gLSAKPiBkaWZmIC0tZ2l0IGEvcGF0 Y2hlcy9wcHAtMi40Ljcvc2VyaWVzIGIvcGF0Y2hlcy9wcHAtMi40Ljcvc2VyaWVzCj4gZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNmFlYWYxOTg0NzA0Li4wMDAwMDAwMDAwMDAKPiAt LS0gYS9wYXRjaGVzL3BwcC0yLjQuNy9zZXJpZXMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsNDYg KzAsMCBAQAo+IC0jIGdlbmVyYXRlZCBieSBnaXQtcHR4LXBhdGNoZXMKPiAtI3RhZzpiYXNlIC0t c3RhcnQtbnVtYmVyIDEKPiAtMDAwMS1hYm9ydC1vbi1lcnJvcnMtaW4tc3ViZGlyLWJ1aWxkcy5w YXRjaAo+IC0wMDAyLXNjcmlwdHMtQXZvaWQta2lsbGluZy13cm9uZy1wcHBkLnBhdGNoCj4gLTAw MDMtcHBwZC1GaXgtc2lnbi1leHRlbnNpb24td2hlbi1kaXNwbGF5aW5nLWJ5dGVzLWluLW9jdC5w YXRjaAo+IC0wMDA0LVN1cHByZXNzLWZhbHNlLWVycm9yLW1lc3NhZ2Utb24tUFBQb0UtZGlzY29u bmVjdC5wYXRjaAo+IC0wMDA1LVNlbmQtUEFEVC1vbi1QUFBvRS1kaXNjb25uZWN0LnBhdGNoCj4g LTAwMDYtcHBwZC1pcHhjcC1QcmV2ZW50LWJ1ZmZlci1vdmVycnVuLW9uLXJlbW90ZS1yb3V0ZXIt bi5wYXRjaAo+IC0wMDA3LXBwcGQtRml4LWNjcF9vcHRpb25zLm1wcGUtdHlwZS5wYXRjaAo+IC0w MDA4LXBwcGQtRml4LWNjcF9jaWxlbi1jYWxjdWxhdGVkLXNpemUtaWYtYm90aC1kZWZsYXRlX2Mu cGF0Y2gKPiAtMDAwOS1GaXgtYS10eXBvLWluLWNvbW1lbnQuLURpZmYtZnJvbS1ZdXVpY2hpLVNv bWV5YS5wYXRjaAo+IC0wMDEwLXBsb2ctY291bnQtb25seS1yZWxldmFudC1saW5lcy1mcm9tLXN5 c2xvZy5wYXRjaAo+IC0wMDExLUNoYW5nZS1pbmNsdWRlLWZyb20tc3lzLWVycm5vLmgtdG8tZXJy bm8uaC5wYXRjaAo+IC0wMDEyLXBwcGQtYWxsb3ctdXNlLW9mLWFyYml0cmFyeS1pbnRlcmZhY2Ut bmFtZXMucGF0Y2gKPiAtMDAxMy1wcHBkLVJlbW92ZS11bnVzZWQtZGVjbGFyYXRpb24tb2YtdHR5 bmFtZS5wYXRjaAo+IC0wMDE0LXBwcGQtUHJvdmlkZS1lcnJvci1pbXBsZW1lbnRhdGlvbi1pbi1w cHBvZS1kaXNjb3ZlcnkucGF0Y2gKPiAtMDAxNS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1i ZWZvcmUtbGludXgtaW4uaC5wYXRjaAo+IC0wMDE2LWFkYXB0aXZlX2VjaG9zLnBhdGNoCj4gLTAw MTctTWFrZWZpbGVzLWNsZWFudXAucGF0Y2gKPiAtMDAxOC1CdWctMzA2MjYxLXBwcGQtZG9lcy1u b3QtcHJvcGVybHktY2xvc2UtZGV2LXBwcC1vbi1wLnBhdGNoCj4gLTAwMTktQnVnLTI4NDM4Mi1w cHAtbGlua3BpZGZpbGUtaXMtbm90LWNyZWF0ZWQtdXBvbi1kZXRhYy5wYXRjaAo+IC0wMDIwLXN1 cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaAo+IC0wMDIx LWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiAtMDAy Mi1jb3NtZXRpYy1jbGVhbnVwLW9mLXRoZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAo+IC0wMDIzLXBw cG9lX25vYWRzLnBhdGNoCj4gLTAwMjQtbWFrZS1fUEFUSF9DT05ORVJSUy13b3JsZC1yZWFkYWJs ZS5wYXRjaAo+IC0wMDI1LUNvcnJlY3QtdW5rb3duLXVua25vd24tdHlwby5wYXRjaAo+IC0wMDI2 LXBwcG9lLWN1c3RvbS1ob3N0LXVuaXEtdGFnLnBhdGNoCj4gLTAwMjctQWRkLXJlcGxhY2VkZWZh dWx0cm91dGUtb3B0aW9uLnBhdGNoCj4gLTAwMjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2gK PiAtMDAyOS1hZGQtc3VwcG9ydC1mb3ItdGhlLUZyYW1lZC1NVFUtUmFkaXVzLWF0dHJpYnV0ZS5w YXRjaAo+IC0wMDMwLTAxOF9pcC11cF9vcHRpb24ucGF0Y2gKPiAtMDAzMS1wcHAtMi40LjItc3Ry aXBNU2RvbWFpbi5wYXRjaAo+IC0wMDMyLWV4cG9ydC1DQUxMX0ZJTEUtdG8tdGhlLWxpbmstc2Ny aXB0cy5wYXRjaAo+IC0wMDMzLWlwdjYtYWNjZXB0LXJlbW90ZS5wYXRjaAo+IC0wMDM0LWZpeC1h LXBvdGVudGlhbC1idWZmZXItb3ZlcmZsb3ctaW4tY2xpZW50aWQuYy1yY19tYXAucGF0Y2gKPiAt MDAzNS1yZXNvbHYuY29uZl9ub19sb2cucGF0Y2gKPiAtMDAzNi1EZWJpYW4tc3BlY2lmaWMtY2hh bmdlcy5wYXRjaAo+IC0wMDM3LUZpeC1idWZmZXItb3ZlcmZsb3ctaW4tcmNfbWtzaWQucGF0Y2gK PiAtMDAzOC1FQVAtVExTLWF1dGhlbnRpY2F0aW9uLXN1cHBvcnQtZm9yLVBQUC5wYXRjaAo+IC0w MDM5LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gK PiAtMDA0MC1wcHBkLVVzZS1vcGVuc3NsLWZvci10aGUtREVTLWluc3RlYWQtb2YtdGhlLWxpYmNy eXB0LnBhdGNoCj4gLSN0YWc6cHR4IC0tc3RhcnQtbnVtYmVyIDEwMAo+IC0wMTAwLXBwcGQtbWFr ZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCj4gLTAxMDEtcHBwZC1tYWtlLXRoZS1zZWxm LW1hZGUtY29uZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCj4gLSMgYjBlMzQ5ZmQzNGIyYWFjMWE5 YmE0ZmZiMzhmNDNiZTAgIC0gZ2l0LXB0eC1wYXRjaGVzIG1hZ2ljCj4gZGlmZiAtLWdpdCBhL3Bh dGNoZXMvcHBwLTIuNC45LzAwMDEtY29uZmlndXJlLUFsbG93LWNvbW1hcy1pbi10aGUtQ0ZMQUdT LTIyMC5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC45LzAwMDEtY29uZmlndXJlLUFsbG93LWNvbW1h cy1pbi10aGUtQ0ZMQUdTLTIyMC5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5jODNiNjRiMWM2NTIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGF0Y2hl cy9wcHAtMi40LjkvMDAwMS1jb25maWd1cmUtQWxsb3ctY29tbWFzLWluLXRoZS1DRkxBR1MtMjIw LnBhdGNoCj4gQEAgLTAsMCArMSwyOCBAQAo+ICtGcm9tOiA9P1VURi04P3E/SmFyb3NsYXY9MjA9 QzU9QTBrYXJ2YWRhPz0gPGpza2FydmFkQHJlZGhhdC5jb20+Cj4gK0RhdGU6IEZyaSwgOCBKYW4g MjAyMSAwMjo0Mzo0NiArMDEwMAo+ICtTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWxsb3cg Y29tbWFzIGluIHRoZSBDRkxBR1MgKCMyMjApCj4gK01JTUUtVmVyc2lvbjogMS4wCj4gK0NvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAo+ICtDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0Cj4gKwo+ICtJdCBhbGxvd3MgZS5nLiB0aGUgZm9sbG93aW5nOgo+ICsuL2Nv bmZpZ3VyZSAtLWNmbGFncz0nLVdwLC1EX0ZPUlRJRllfU09VUkNFPTInCj4gKwo+ICtTaWduZWQt b2ZmLWJ5OiBKYXJvc2xhdiDFoGthcnZhZGEgPGpza2FydmFkQHJlZGhhdC5jb20+Cj4gKy0tLQo+ ICsgY29uZmlndXJlIHwgMiArLQo+ICsgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCj4gKwo+ICtkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4g K2luZGV4IGY5Nzc2NjNmZDhkYi4uYjBjM2QyYjQ5MTIyIDEwMDc1NQo+ICstLS0gYS9jb25maWd1 cmUKPiArKysrIGIvY29uZmlndXJlCj4gK0BAIC0xMjMsNyArMTIzLDcgQEAgbWtta2YoKSB7Cj4g KyAJZWNobyAiICAkMiA8PSAkMSIKPiArIAlzZWQgLWUgInMsQERFU1RESVJALCRERVNURElSLGci IC1lICJzLEBTWVNDT05GQCwkU1lTQ09ORixnIiBcCj4gKyAJICAgIC1lICJzLEBDUk9TU19DT01Q SUxFQCwkQ1JPU1NfQ09NUElMRSxnIiAtZSAicyxAQ0NALCRDQyxnIiBcCj4gKy0JICAgIC1lICJz LEBDRkxBR1NALCRDRkxBR1MsZyIgJDEgPiQyCj4gKysJICAgIC1lICJzfEBDRkxBR1NAfCRDRkxB R1N8ZyIgJDEgPiQyCj4gKyAgICAgZmkKPiArIH0KPiArIAo+IGRpZmYgLS1naXQgYS9wYXRjaGVz L3BwcC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBpbGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3It a2VybmVsLWhlYWQucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMDAyLXBwcGQtRml4LWNvbXBp bGF0aW9uLXdpdGgtb2xkZXItZ2xpYmMtb3Ita2VybmVsLWhlYWQucGF0Y2gKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzNjZjAwMmRiNjJiCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAwMDItcHBwZC1GaXgtY29tcGlsYXRpb24t d2l0aC1vbGRlci1nbGliYy1vci1rZXJuZWwtaGVhZC5wYXRjaAo+IEBAIC0wLDAgKzEsNTUgQEAK PiArRnJvbTogcGFsaSA8NzE0MTg3MStwYWxpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KPiAr RGF0ZTogTW9uLCAxNSBGZWIgMjAyMSAwNzo1NDowMSArMDEwMAo+ICtTdWJqZWN0OiBbUEFUQ0hd IHBwcGQ6IEZpeCBjb21waWxhdGlvbiB3aXRoIG9sZGVyIGdsaWJjIG9yIGtlcm5lbCBoZWFkZXJz Cj4gKyAoIzI0OCkKPiArTUlNRS1WZXJzaW9uOiAxLjAKPiArQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04Cj4gK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKPiAr Cj4gK2dsaWJjIHZlcnNpb25zIHByaW9yIHRvIDIuMjQgZG8gbm90IGRlZmluZSBTT0xfTkVUTElO SyBhbmQgbGludXgga2VybmVsCj4gK3ZlcnNpb25zIHByaW9yIHRvIDQuMyBkbyBub3QgZGVmaW5l IE5FVExJTktfQ0FQX0FDSy4gU28gYWRkIGZhbGxiYWNrCj4gK2RlZmluaXRpb25zIGZvciB0aGVz ZSBtYWNyb3MgaW50byBwcHBkL3N5cy1saW51eC5jIGZpbGUuCj4gKwo+ICtBbHNvIGV4dGVuZCBk ZXNjcmlwdGlvbiB3aHkgd2UgY2FsbCBTT0xfTkVUTElOSy9ORVRMSU5LX0NBUF9BQ0sgb3B0aW9u Lgo+ICsKPiArU2lnbmVkLW9mZi1ieTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KPiAr LS0tCj4gKyBwcHBkL3N5cy1saW51eC5jIHwgMTggKysrKysrKysrKysrKysrKystCj4gKyAxIGZp bGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICsKPiArZGlmZiAt LWdpdCBhL3BwcGQvc3lzLWxpbnV4LmMgYi9wcHBkL3N5cy1saW51eC5jCj4gK2luZGV4IDg1MDMz ZDk3MTI0Zi4uNTBjNGYyZGFiNDAzIDEwMDY0NAo+ICstLS0gYS9wcHBkL3N5cy1saW51eC5jCj4g KysrKyBiL3BwcGQvc3lzLWxpbnV4LmMKPiArQEAgLTEyNSw2ICsxMjUsMTQgQEAKPiArICNpbmNs dWRlIDxsaW51eC9uZXRsaW5rLmg+Cj4gKyAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+Cj4g KyAjaW5jbHVkZSA8bGludXgvaWZfYWRkci5oPgo+ICsrLyogZ2xpYmMgdmVyc2lvbnMgcHJpb3Ig dG8gMi4yNCBkbyBub3QgZGVmaW5lIFNPTF9ORVRMSU5LICovCj4gKysjaWZuZGVmIFNPTF9ORVRM SU5LCj4gKysjZGVmaW5lIFNPTF9ORVRMSU5LIDI3MAo+ICsrI2VuZGlmCj4gKysvKiBsaW51eCBr ZXJuZWwgdmVyc2lvbnMgcHJpb3IgdG8gNC4zIGRvIG5vdCBkZWZpbmUvc3VwcG9ydCBORVRMSU5L X0NBUF9BQ0sgKi8KPiArKyNpZm5kZWYgTkVUTElOS19DQVBfQUNLCj4gKysjZGVmaW5lIE5FVExJ TktfQ0FQX0FDSyAxMAo+ICsrI2VuZGlmCj4gKyAjZW5kaWYKPiArIAo+ICsgI2luY2x1ZGUgInBw cGQuaCIKPiArQEAgLTI4NDMsNyArMjg1MSwxNSBAQCBzdGF0aWMgaW50IGFwcGVuZF9wZWVyX2lw djZfYWRkcmVzcyh1bnNpZ25lZCBpbnQgaWZhY2UsIHN0cnVjdCBpbjZfYWRkciAqbG9jYWxfYQo+ ICsgICAgIGlmIChmZCA8IDApCj4gKyAgICAgICAgIHJldHVybiAwOwo+ICsgCj4gKy0gICAgLyog ZG8gbm90IGFzayBmb3IgZXJyb3IgbWVzc2FnZSBjb250ZW50ICovCj4gKysgICAgLyoKPiArKyAg ICAgKiBUZWxsIGtlcm5lbCB0byBub3Qgc2VuZCB0byB1cyBwYXlsb2FkIG9mIGFja25vd2xlZGdt ZW50IGVycm9yIG1lc3NhZ2UuCj4gKysgICAgICogTkVUTElOS19DQVBfQUNLIG9wdGlvbiBpcyBz dXBwb3J0ZWQgc2luY2UgTGludXgga2VybmVsIHZlcnNpb24gNC4zIGFuZAo+ICsrICAgICAqIG9s ZGVyIGtlcm5lbCB2ZXJzaW9ucyBhbHdheXMgc2VuZCBmdWxsIHBheWxvYWQgaW4gYWNrbm93bGVk Z21lbnQgbmV0bGluawo+ICsrICAgICAqIG1lc3NhZ2UuIFdlIGlnbm9yZSBwYXlsb2FkIG9mIHRo aXMgbWVzc2FnZSBhcyB3ZSBuZWVkIG9ubHkgZXJyb3IgY29kZSwKPiArKyAgICAgKiB0byBjaGVj ayBpZiBvdXIgc2V0IHJlbW90ZSBwZWVyIGFkZHJlc3MgcmVxdWVzdCBzdWNjZWVkZWQgb3IgZmFp bGVkLgo+ICsrICAgICAqIFNvIGlnbm9yZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZm9sbG93aW5n IHNldHNvY2tvcHQoKSBjYWxsIGFzIHNldHRpbmcKPiArKyAgICAgKiBvcHRpb24gTkVUTElOS19D QVBfQUNLIG1lYW5zIGZvciB1cyBqdXN0IGEga2VybmVsIGhpbnQgLyBvcHRpbWl6YXRpb24uCj4g KysgICAgICovCj4gKyAgICAgb25lID0gMTsKPiArICAgICBzZXRzb2Nrb3B0KGZkLCBTT0xfTkVU TElOSywgTkVUTElOS19DQVBfQUNLLCAmb25lLCBzaXplb2Yob25lKSk7Cj4gKyAKPiBkaWZmIC0t Z2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDAyMC1zdXBwb3J0LWJ1aWxkaW5nLXBwcGR1bXAtd2l0 aC10aGUtc3lzdGVtLXpsaWIucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAwLXN1cHBvcnQt YnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaAo+IHNpbWlsYXJpdHkg aW5kZXggNjMlCj4gcmVuYW1lIGZyb20gcGF0Y2hlcy9wcHAtMi40LjcvMDAyMC1zdXBwb3J0LWJ1 aWxkaW5nLXBwcGR1bXAtd2l0aC10aGUtc3lzdGVtLXpsaWIucGF0Y2gKPiByZW5hbWUgdG8gcGF0 Y2hlcy9wcHAtMi40LjkvMDEwMC1zdXBwb3J0LWJ1aWxkaW5nLXBwcGR1bXAtd2l0aC10aGUtc3lz dGVtLXpsaWIucGF0Y2gKPiBpbmRleCBlZjgyNjVkNDM2ODYuLjM4M2JlOWQ2MGJhNSAxMDA2NDQK PiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDIwLXN1cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13 aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaAo+ICsrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAxMDAt c3VwcG9ydC1idWlsZGluZy1wcHBkdW1wLXdpdGgtdGhlLXN5c3RlbS16bGliLnBhdGNoCj4gQEAg LTEsMTkgKzEsMjUgQEAKPiAtRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0 cm9uaXguZGU+Cj4gLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKPiArRnJv bTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KPiArRGF0ZTogV2VkLCAxNiBKdW4g MjAyMSAxODoyMjo0OCArMDIwMAo+ICBTdWJqZWN0OiBbUEFUQ0hdIHN1cHBvcnQgYnVpbGRpbmcg cHBwZHVtcCB3aXRoIHRoZSBzeXN0ZW0gemxpYgo+ICAKPiAtSW1wb3J0ZWQgZnJvbSBwcHBfMi40 LjctMis0LjEuZGViaWFuLnRhci54ego+ICtGb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9w YXVsdXNtYWNrL3BwcC9wdWxsLzE4OQo+ICtidXQgbmFja2VkOiAiaXQgY2F1c2VkIGNvbXBpbGUg ZmFpbHVyZXMgKG9uIEZlZG9yYSBhdCBsZWFzdCksIHdoaWNoCj4gK3JlbWluZGVkIG1lIHRoYXQg dGhlIHpsaWIuYyBoZXJlIGlzIG5vdCB0aGUgc2FtZSBhcyB1cHN0cmVhbTsgaXQgaGFzCj4gK2V4 dHJhIGZ1bmN0aW9ucyB0aGF0IEkgYWRkZWQgYSBsb25nIHRpbWUgYWdvLiIKPiAgCj4gLVNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+ICsK PiArSW1wb3J0ZWQgZnJvbSBwcHBfMi40LjktMSsxLmRlYmlhbi50YXIueHoKPiArCj4gK1NpZ25l ZC1vZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+Cj4gIC0tLQo+ICAgcHBw ZHVtcC9NYWtlZmlsZS5saW51eCB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAg IDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ICAKPiAg ZGlmZiAtLWdpdCBhL3BwcGR1bXAvTWFrZWZpbGUubGludXggYi9wcHBkdW1wL01ha2VmaWxlLmxp bnV4Cj4gLWluZGV4IDY1ZTVjMTQ5MTRmYi4uODc3NzdmYWI1ZTk0IDEwMDY0NAo+ICtpbmRleCBh OTQxODdmYTllMjkuLmRlN2U1NzRkMTBlMSAxMDA2NDQKPiAgLS0tIGEvcHBwZHVtcC9NYWtlZmls ZS5saW51eAo+ICArKysgYi9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Cj4gLUBAIC0yLDE4ICsyLDQy IEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAo+ICtAQCAtNiwxNSArNiwzOSBAQCBE RVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKPiAgIEJJTkRJUiA9ICQoREVTVERJUikvc2Jp bgo+ICAgTUFORElSID0gJChERVNURElSKS9zaGFyZS9tYW4vbWFuOAo+ICAgCj4gQEAgLTIxLDEw ICsyNyw3IEBAIGluZGV4IDY1ZTVjMTQ5MTRmYi4uODc3NzdmYWI1ZTk0IDEwMDY0NAo+ICArRE9f QlNEX0NPTVBSRVNTPXkKPiAgK0hBVkVfWkxJQj1uCj4gICsKPiAtIENPUFRTPS1PMiAtZwo+IC0g Q0ZMQUdTPSAkKENPUFRTKSAtSS4uL2luY2x1ZGUvbmV0Cj4gLSBMREZMQUdTPSQoTERPUFRTKQo+ IC0gCj4gKyBDRkxBR1MgPSAkKENPUFRTKSAtSS4uL2luY2x1ZGUvbmV0Cj4gIC1PQkpTID0gcHBw ZHVtcC5vIGJzZC1jb21wLm8gZGVmbGF0ZS5vIHpsaWIubwo+ICArT0JKUyA9IHBwcGR1bXAubwo+ ICArTElCUyA9Cj4gQEAgLTQwLDE0ICs0MywxNCBAQCBpbmRleCA2NWU1YzE0OTE0ZmIuLjg3Nzc3 ZmFiNWU5NCAxMDA2NDQKPiAgK2Vsc2UKPiAgK0NGTEFHUyArPSAtRERPX0RFRkxBVEU9MAo+ICAr ZW5kaWYKPiAtKwo+ICsgCj4gICtpZmRlZiBET19CU0RfQ09NUFJFU1MKPiAgK0NGTEFHUyArPSAt RERPX0JTRF9DT01QUkVTUz0xCj4gICtPQkpTICs9IGJzZC1jb21wLm8KPiAgK2Vsc2UKPiAgK0NG TEFHUyArPSAtRERPX0JTRF9DT01QUkVTUz0wCj4gICtlbmRpZgo+IC0gCj4gKysgCj4gICBJTlNU QUxMPSBpbnN0YWxsCj4gICAKPiAgIGFsbDoJcHBwZHVtcAo+IGRpZmYgLS1naXQgYS9wYXRjaGVz L3BwcC0yLjQuNy8wMDIxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVn aW4ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1p bi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiBzaW1pbGFyaXR5IGluZGV4IDg5JQo+IHJlbmFt ZSBmcm9tIHBhdGNoZXMvcHBwLTIuNC43LzAwMjEtZGlzYWJsZS11bm5lZWRlZC1jb2RlLWluLXRo ZS1wcHBvYXRtLXBsdWdpbi5wYXRjaAo+IHJlbmFtZSB0byBwYXRjaGVzL3BwcC0yLjQuOS8wMTAx LWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiBpbmRl eCAyZmI5YzU1NzM0NTguLjg4MmM5MTNhYTVjOSAxMDA2NDQKPiAtLS0gYS9wYXRjaGVzL3BwcC0y LjQuNy8wMDIxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0 Y2gKPiArKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAxLWRpc2FibGUtdW5uZWVkZWQtY29kZS1p bi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiBAQCAtMSw1ICsxLDUgQEAKPiAtRnJvbTogTWlj aGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gLURhdGU6IFNhdCwgMjgg U2VwIDIwMTkgMDg6MTE6NDkgKzAyMDAKPiArRnJvbTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9y c2lzLmNvbT4KPiArRGF0ZTogV2VkLCAxNiBKdW4gMjAyMSAxODoyMjo0OCArMDIwMAo+ICBTdWJq ZWN0OiBbUEFUQ0hdIGRpc2FibGUgdW5uZWVkZWQgY29kZSBpbiB0aGUgcHBwb2F0bSBwbHVnaW4K PiAgCj4gIFRoaXMgcGF0Y2ggaGFsdmVzIHRoZSBzaXplIG9mIHRoZSBQUFBvQSBwbHVnaW4gYnkg ZGlzYWJsaW5nIGZlYXR1cmVzCj4gQEAgLTEzLDkgKzEzLDkgQEAgcGx1Z2luIHdpdGggdGhlIHJl YWwgbGliYXRtLiBJIHJlYWxseSBkb3VidCBhbnlib2R5IGNhcmVzLCBhbnl3YXkuCj4gIAo+ICAK PiAgCj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiArSW1w b3J0ZWQgZnJvbSBwcHBfMi40LjktMSsxLmRlYmlhbi50YXIueHoKPiAgCj4gLVNpZ25lZC1vZmYt Ynk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+ICtTaWduZWQt b2ZmLWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgo+ICAtLS0KPiAgIHBwcGQv cGx1Z2lucy9wcHBvYXRtL01ha2VmaWxlLmxpbnV4IHwgNCArKysrCj4gICBwcHBkL3BsdWdpbnMv cHBwb2F0bS9wcHBvYXRtLmMgICAgICB8IDQgKysrKwo+IEBAIC0yMywxMCArMjMsMTAgQEAgU2ln bmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4g ICAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKPiAgCj4gIGRpZmYgLS1naXQgYS9w cHBkL3BsdWdpbnMvcHBwb2F0bS9NYWtlZmlsZS5saW51eCBiL3BwcGQvcGx1Z2lucy9wcHBvYXRt L01ha2VmaWxlLmxpbnV4Cj4gLWluZGV4IDAwMjYwM2M2Y2JlZi4uNzZkODFhY2VkNzBhIDEwMDY0 NAo+ICtpbmRleCBkM2E4MDg2YjY5ZWEuLjAzNmIxOTM2MzdkZiAxMDA2NDQKPiAgLS0tIGEvcHBw ZC9wbHVnaW5zL3BwcG9hdG0vTWFrZWZpbGUubGludXgKPiAgKysrIGIvcHBwZC9wbHVnaW5zL3Bw cG9hdG0vTWFrZWZpbGUubGludXgKPiAtQEAgLTI1LDkgKzI1LDEzIEBAIGlmZGVmIEhBVkVfTElC QVRNCj4gK0BAIC0yNiw5ICsyNiwxMyBAQCBpZmRlZiBIQVZFX0xJQkFUTQo+ICAgTElCUyA6PSAt bGF0bQo+ICAgZWxzZQo+ICAgQ0ZMQUdTICs9IC1JLgo+IEBAIC00MSwxMCArNDEsMTAgQEAgaW5k ZXggMDAyNjAzYzZjYmVmLi43NmQ4MWFjZWQ3MGEgMTAwNjQ0Cj4gICAjKioqKioqKioqCj4gICBh bGw6ICQoUExVR0lOKQo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0 bS5jIGIvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5jCj4gLWluZGV4IGQ2OTMzNTBiYzQ3 My4uYTc1NjBlOWZiMGM2IDEwMDY0NAo+ICtpbmRleCA1YTNlY2Q2MWI2YTIuLjkwZDBjOWE4NWQ5 ZiAxMDA2NDQKPiAgLS0tIGEvcHBwZC9wbHVnaW5zL3BwcG9hdG0vcHBwb2F0bS5jCj4gICsrKyBi L3BwcGQvcGx1Z2lucy9wcHBvYXRtL3BwcG9hdG0uYwo+IC1AQCAtMTQyLDggKzE0MiwxMiBAQCBz dGF0aWMgaW50IGNvbm5lY3RfcHBwb2F0bSh2b2lkKQo+ICtAQCAtMTQ1LDggKzE0NSwxMiBAQCBz dGF0aWMgaW50IGNvbm5lY3RfcHBwb2F0bSh2b2lkKQo+ICAgCXFvcy50eHRwLnRyYWZmaWNfY2xh c3MgPSBxb3Mucnh0cC50cmFmZmljX2NsYXNzID0gQVRNX1VCUjsKPiAgIAkvKiBUT0RPOiBzdXBw b3J0IHNpbXBsaWZpZWQgUW9TIHNldHRpbmcgKi8KPiAgIAlpZiAocW9zc3RyICE9IE5VTEwpCj4g ZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC45LzAxMDItcHBwb2Vfbm9hZHMucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuOS8wMTAyLXBwcG9lX25vYWRzLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjY2MjlkNDE5NGU3OAo+IC0tLSAvZGV2L251bGwK PiArKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTAyLXBwcG9lX25vYWRzLnBhdGNoCj4gQEAgLTAs MCArMSwyNCBAQAo+ICtGcm9tOiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgo+ICtE YXRlOiBXZWQsIDE2IEp1biAyMDIxIDE4OjIyOjQ4ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRDSF0g cHBwb2Vfbm9hZHMKPiArCj4gK0ltcG9ydGVkIGZyb20gcHBwXzIuNC45LTErMS5kZWJpYW4udGFy Lnh6Cj4gKwo+ICtTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29t Pgo+ICstLS0KPiArIHBwcGQvcGx1Z2lucy9wcHBvZS9wbHVnaW4uYyB8IDIgLS0KPiArIDEgZmls ZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQo+ICsKPiArZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lu cy9wcHBvZS9wbHVnaW4uYyBiL3BwcGQvcGx1Z2lucy9wcHBvZS9wbHVnaW4uYwo+ICtpbmRleCBk ZTliODE2NmNlN2IuLjU4ZmJkZjk1YmUzZiAxMDA2NDQKPiArLS0tIGEvcHBwZC9wbHVnaW5zL3Bw cG9lL3BsdWdpbi5jCj4gKysrKyBiL3BwcGQvcGx1Z2lucy9wcHBvZS9wbHVnaW4uYwo+ICtAQCAt NDEyLDggKzQxMiw2IEBAIHBsdWdpbl9pbml0KHZvaWQpCj4gKyAgICAgfQo+ICsgCj4gKyAgICAg YWRkX29wdGlvbnMoT3B0aW9ucyk7Cj4gKy0KPiArLSAgICBpbmZvKCJQUFBvRSBwbHVnaW4gZnJv bSBwcHBkICVzIiwgVkVSU0lPTik7Cj4gKyB9Cj4gKyAKPiArIHZvaWQgcHBwb2VfY2hlY2tfb3B0 aW9ucyh2b2lkKQo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDI4LXBwcC0yLjMu MTEtb2Vkb2QuZGlmLnBhdGNoIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwMy1Gb3J3YXJkZWQtaHR0 cHMtZ2l0aHViLmNvbS1wYXVsdXNtYWNrLXBwcC1pc3N1ZXMtMTg3LnBhdGNoCj4gc2ltaWxhcml0 eSBpbmRleCA3MiUKPiByZW5hbWUgZnJvbSBwYXRjaGVzL3BwcC0yLjQuNy8wMDI4LXBwcC0yLjMu MTEtb2Vkb2QuZGlmLnBhdGNoCj4gcmVuYW1lIHRvIHBhdGNoZXMvcHBwLTIuNC45LzAxMDMtRm9y d2FyZGVkLWh0dHBzLWdpdGh1Yi5jb20tcGF1bHVzbWFjay1wcHAtaXNzdWVzLTE4Ny5wYXRjaAo+ IGluZGV4IDgxNTFjM2JlMjYwYi4uMzhlYjViNzkxN2RiIDEwMDY0NAo+IC0tLSBhL3BhdGNoZXMv cHBwLTIuNC43LzAwMjgtcHBwLTIuMy4xMS1vZWRvZC5kaWYucGF0Y2gKPiArKysgYi9wYXRjaGVz L3BwcC0yLjQuOS8wMTAzLUZvcndhcmRlZC1odHRwcy1naXRodWIuY29tLXBhdWx1c21hY2stcHBw LWlzc3Vlcy0xODcucGF0Y2gKPiBAQCAtMSwxMCArMSwyMiBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9s YnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAx OSAwODoxMTo0OSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIHBwcC0yLjMuMTEtb2Vkb2QuZGlm Cj4gK0Zyb206IEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+Cj4gK0RhdGU6IFdlZCwg MTYgSnVuIDIwMjEgMTg6MjI6NDggKzAyMDAKPiArU3ViamVjdDogW1BBVENIXSBGb3J3YXJkZWQ6 IGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9pc3N1ZXMvMTg3Cj4gIAo+IC1JbXBv cnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFyLnh6Cj4gK1Vwc3RyZWFtIHNhaWQ6 Cj4gIAo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KPiArIgo+ICtIbW1tLCBkaWFsLW9uLWRlbWFuZCB3YXMgbmV2ZXIgdGVzdGVkIHdp dGggdGhlIHN5bmMgb3B0aW9uLCBhbmQgaW4gZmFjdCBJIGRvbid0Cj4gK2tub3cgd2hhdCBkZXZp Y2VzIHdvdWxkIHVzZSB0aGF0IG9wdGlvbi4KPiArCj4gK1RvIGJlIGFjY2VwdGVkLCB0aGUgcGF0 Y2ggd291bGQgbmVlZCBhIHNpZ24tb2ZmIGFuZCBhIGRlc2NyaXB0aW9uIHRoYXQKPiArZXhwbGFp bmVkIHRoZSBjaGFuZ2VzIGluIHRoZSBwYXRjaCAtIGluIHBhcnRpY3VsYXIsIHdoYXQgdGhlIGxh cmdlIGx1bXAgb2YgY29kZQo+ICthZGRlZCB0byBkZW1hbmRfcmV4bWl0KCkgaXMgZG9pbmcuCj4g KyIKPiArCj4gKwo+ICtJbXBvcnRlZCBmcm9tIHBwcF8yLjQuOS0xKzEuZGViaWFuLnRhci54ego+ ICsKPiArU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KPiAg LS0tCj4gICBwcHBkL2RlbWFuZC5jIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgIHBwcGQvaXBjcC5jICAgfCAgMiArLQo+ IEBAIC0xMyw3ICsyNSw3IEBAIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT2xicmljaCA8bS5vbGJy aWNoQHBlbmd1dHJvbml4LmRlPgo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMDEgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKPiAgCj4gIGRpZmYgLS1naXQgYS9wcHBkL2RlbWFuZC5jIGIvcHBw ZC9kZW1hbmQuYwo+IC1pbmRleCA1ZTU3NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5OCAxMDA2NDQKPiAr aW5kZXggMjg5YzlmOGZkZDU3Li40YzYxNDQ0ZDM5NjggMTAwNjQ0Cj4gIC0tLSBhL3BwcGQvZGVt YW5kLmMKPiAgKysrIGIvcHBwZC9kZW1hbmQuYwo+ICBAQCAtMzYsNiArMzYsOCBAQAo+IEBAIC0z NCw3ICs0Niw3IEBAIGluZGV4IDVlNTc2NThlYTgzMS4uM2VkZGYzMDE2ZDk4IDEwMDY0NAo+ICAg I2lmZGVmIFBQUF9GSUxURVIKPiAgICNpbmNsdWRlIDxwY2FwLWJwZi5oPgo+ICAgI2VuZGlmCj4g LUBAIC0yMjEsNiArMjI1LDE0IEBAIGxvb3BfY2hhcnMocCwgbikKPiArQEAgLTIxOCw2ICsyMjIs MTQgQEAgbG9vcF9jaGFycyh1bnNpZ25lZCBjaGFyICpwLCBpbnQgbikKPiAgICAgICBpbnQgYywg cnY7Cj4gICAKPiAgICAgICBydiA9IDA7Cj4gQEAgLTQ5LDE0ICs2MSwxMiBAQCBpbmRleCA1ZTU3 NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5OCAxMDA2NDQKPiAgICAgICBmb3IgKDsgbiA+IDA7IC0tbikg ewo+ICAgCWMgPSAqcCsrOwo+ICAgCWlmIChjID09IFBQUF9GTEFHKSB7Cj4gLUBAIC0yOTksMTcg KzMxMSwxMDIgQEAgbG9vcF9mcmFtZShmcmFtZSwgbGVuKQo+ICtAQCAtMjk0LDE2ICszMDYsMTAx IEBAIGxvb3BfZnJhbWUodW5zaWduZWQgY2hhciAqZnJhbWUsIGludCBsZW4pCj4gICAgKiBsb29w YmFjaywgbm93IHRoYXQgdGhlIHJlYWwgc2VyaWFsIGxpbmsgaXMgdXAuCj4gICAgKi8KPiAgIHZv aWQKPiAtLWRlbWFuZF9yZXhtaXQocHJvdG8pCj4gLStkZW1hbmRfcmV4bWl0KHByb3RvLCBuZXdp cCkKPiAtICAgICBpbnQgcHJvdG87Cj4gLSsgICAgdV9pbnQzMl90IG5ld2lwOwo+ICstZGVtYW5k X3JleG1pdChpbnQgcHJvdG8pCj4gKytkZW1hbmRfcmV4bWl0KGludCBwcm90bywgdV9pbnQzMl90 IG5ld2lwKQo+ICAgewo+ICAgICAgIHN0cnVjdCBwYWNrZXQgKnBrdCwgKnByZXYsICpuZXh0cGt0 Owo+ICArICAgIHVuc2lnbmVkIHNob3J0IGNoZWNrc3VtOwo+IEBAIC02OSw5ICs3OSwxMSBAQCBp bmRleCA1ZTU3NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5OCAxMDA2NDQKPiAgICAgICBwcmV2ID0gTlVM TDsKPiAgICAgICBwa3QgPSBwZW5kX3E7Cj4gICAgICAgcGVuZF9xID0gTlVMTDsKPiArKwo+ICAr ICAgIHR2LnR2X3NlYyA9IDE7Cj4gICsgICAgdHYudHZfdXNlYyA9IDA7Cj4gLSsgICAgc2VsZWN0 KDAsTlVMTCxOVUxMLE5VTEwsJnR2KTsJLyogU2xlZXAgZm9yIDEgU2Vjb25kcyAqLwo+ICsrICAg IHNlbGVjdCgwLE5VTEwsTlVMTCxOVUxMLCZ0dik7CS8qIFNsZWVwIGZvciAxIFNlY29uZCAqLwo+ ICsrCj4gICAgICAgZm9yICg7IHBrdCAhPSBOVUxMOyBwa3QgPSBuZXh0cGt0KSB7Cj4gICAJbmV4 dHBrdCA9IHBrdC0+bmV4dDsKPiAgIAlpZiAoUFBQX1BST1RPQ09MKHBrdC0+ZGF0YSkgPT0gcHJv dG8pIHsKPiBAQCAtODMsNyArOTUsNiBAQCBpbmRleCA1ZTU3NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5 OCAxMDA2NDQKPiAgKyAgICAgICAgICAgICAgICBpZiAoY2hlY2tzdW0gPT0gMHhGRkZGKSB7Cj4g ICsgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gMDsKPiAgKyAgICAgICAgICAgICAgICB9 Cj4gLSsKPiAgKyAKPiAgKyAgICAgICAgICAgICAgICBpZiAocGt0LT5kYXRhWzEzXSA9PSAxNykg ewo+ICArICAgICAgICAgICAgICAgICAgICBwa3RfY2hlY2tzdW0gPSAgKigodW5zaWduZWQgc2hv cnQgKikgKHBrdC0+ZGF0YSsxMCtpcGhkcikpOwo+IEBAIC0xNTQsMTAgKzE2NSwxMCBAQCBpbmRl eCA1ZTU3NjU4ZWE4MzEuLjNlZGRmMzAxNmQ5OCAxMDA2NDQKPiAgIAkgICAgZnJlZShwa3QpOwo+ ICAgCX0gZWxzZSB7Cj4gIGRpZmYgLS1naXQgYS9wcHBkL2lwY3AuYyBiL3BwcGQvaXBjcC5jCj4g LWluZGV4IGM4ZmUyNzlkNGVkZS4uZGNlY2E4MDc1NDJhIDEwMDY0NAo+ICtpbmRleCAzMDJjYTQw YjRjODMuLjNhYzI2YTA4MDMyYSAxMDA2NDQKPiAgLS0tIGEvcHBwZC9pcGNwLmMKPiAgKysrIGIv cHBwZC9pcGNwLmMKPiAtQEAgLTE5MDQsNyArMTkwNCw3IEBAIGlwY3BfdXAoZikKPiArQEAgLTE4 NTAsNyArMTg1MCw3IEBAIGlwY3BfdXAoZnNtICpmKQo+ICAgCQkgICAgcHJveHlfYXJwX3NldFtm LT51bml0XSA9IDE7Cj4gICAKPiAgIAl9Cj4gQEAgLTE2NywxMiArMTc4LDEyIEBAIGluZGV4IGM4 ZmUyNzlkNGVkZS4uZGNlY2E4MDc1NDJhIDEwMDY0NAo+ICAgCj4gICAgICAgfSBlbHNlIHsKPiAg ZGlmZiAtLWdpdCBhL3BwcGQvaXB2NmNwLmMgYi9wcHBkL2lwdjZjcC5jCj4gLWluZGV4IDM1NmZm ODRlYWQ0MS4uYzE2MDJmNDFjMjA2IDEwMDY0NAo+ICtpbmRleCA0MzFjYjYyMjExYmYuLmEzMmIw MDAyZTEwZCAxMDA2NDQKPiAgLS0tIGEvcHBwZC9pcHY2Y3AuYwo+ICArKysgYi9wcHBkL2lwdjZj cC5jCj4gLUBAIC0xMjMyLDcgKzEyMzIsNyBAQCBpcHY2Y3BfdXAoZikKPiAtIAkgICAgfQo+IC0g Cj4gK0BAIC0xMjUzLDcgKzEyNTMsNyBAQCBpcHY2Y3BfdXAoZnNtICpmKQo+ICsgCQlpZiAoc2lm NmRlZmF1bHRyb3V0ZShmLT51bml0LCBnby0+b3VyaWQsIGhvLT5oaXNpZCkpCj4gKyAJCSAgICBk ZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7Cj4gICAJfQo+ICAtCWRlbWFuZF9yZXhtaXQo UFBQX0lQVjYpOwo+ICArCWRlbWFuZF9yZXhtaXQoUFBQX0lQVjYsMCk7Cj4gQEAgLTE4MCwxNSAr MTkxLDE1IEBAIGluZGV4IDM1NmZmODRlYWQ0MS4uYzE2MDJmNDFjMjA2IDEwMDY0NAo+ICAgCj4g ICAgICAgfSBlbHNlIHsKPiAgZGlmZiAtLWdpdCBhL3BwcGQvcHBwZC5oIGIvcHBwZC9wcHBkLmgK PiAtaW5kZXggNzQ5NWRmNjU3ZmU5Li5lNjUxMDZkNGMxMjYgMTAwNjQ0Cj4gK2luZGV4IDYxMjkw MmY1NWQwZC4uMTBhOTk3NzU5OGFhIDEwMDY0NAo+ICAtLS0gYS9wcHBkL3BwcGQuaAo+ICArKysg Yi9wcHBkL3BwcGQuaAo+IC1AQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgZGVtYW5kX2NvbmYgX19Q KCh2b2lkKSk7CS8qIGNvbmZpZyBpbnRlcmZhY2UocykgZm9yIGRlbWFuZC1kaWFsICovCj4gLSB2 b2lkIGRlbWFuZF9ibG9jayBfX1AoKHZvaWQpKTsJLyogc2V0IGFsbCBOUHMgdG8gcXVldWUgdXAg cGFja2V0cyAqLwo+IC0gdm9pZCBkZW1hbmRfdW5ibG9jayBfX1AoKHZvaWQpKTsgLyogc2V0IGFs bCBOUHMgdG8gcGFzcyBwYWNrZXRzICovCj4gLSB2b2lkIGRlbWFuZF9kaXNjYXJkIF9fUCgodm9p ZCkpOyAvKiBzZXQgYWxsIE5QcyB0byBkaXNjYXJkIHBhY2tldHMgKi8KPiAtLXZvaWQgZGVtYW5k X3JleG1pdCBfX1AoKGludCkpOwkvKiByZXRyYW5zbWl0IHNhdmVkIGZyYW1lcyBmb3IgYW4gTlAg Ki8KPiAtK3ZvaWQgZGVtYW5kX3JleG1pdCBfX1AoKGludCwgdV9pbnQzMl90KSk7IC8qIHJldHJh bnNtaXQgc2F2ZWQgZnJhbWVzIGZvciBhbiBOUCovCj4gLSBpbnQgIGxvb3BfY2hhcnMgX19QKCh1 bnNpZ25lZCBjaGFyICosIGludCkpOyAvKiBwcm9jZXNzIGNoYXJzIGZyb20gbG9vcGJhY2sgKi8K PiAtIGludCAgbG9vcF9mcmFtZSBfX1AoKHVuc2lnbmVkIGNoYXIgKiwgaW50KSk7IC8qIHNob3Vs ZCB3ZSBicmluZyBsaW5rIHVwPyAqLwo+ICtAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgZGVtYW5k X2NvbmYodm9pZCk7CS8qIGNvbmZpZyBpbnRlcmZhY2UocykgZm9yIGRlbWFuZC1kaWFsICovCj4g KyB2b2lkIGRlbWFuZF9ibG9jayh2b2lkKTsJLyogc2V0IGFsbCBOUHMgdG8gcXVldWUgdXAgcGFj a2V0cyAqLwo+ICsgdm9pZCBkZW1hbmRfdW5ibG9jayh2b2lkKTsgLyogc2V0IGFsbCBOUHMgdG8g cGFzcyBwYWNrZXRzICovCj4gKyB2b2lkIGRlbWFuZF9kaXNjYXJkKHZvaWQpOyAvKiBzZXQgYWxs IE5QcyB0byBkaXNjYXJkIHBhY2tldHMgKi8KPiArLXZvaWQgZGVtYW5kX3JleG1pdChpbnQpOwkv KiByZXRyYW5zbWl0IHNhdmVkIGZyYW1lcyBmb3IgYW4gTlAgKi8KPiArK3ZvaWQgZGVtYW5kX3Jl eG1pdChpbnQsIHVfaW50MzJfdCk7CS8qIHJldHJhbnNtaXQgc2F2ZWQgZnJhbWVzIGZvciBhbiBO UCAqLwo+ICsgaW50ICBsb29wX2NoYXJzKHVuc2lnbmVkIGNoYXIgKiwgaW50KTsgLyogcHJvY2Vz cyBjaGFycyBmcm9tIGxvb3BiYWNrICovCj4gKyBpbnQgIGxvb3BfZnJhbWUodW5zaWduZWQgY2hh ciAqLCBpbnQpOyAvKiBzaG91bGQgd2UgYnJpbmcgbGluayB1cD8gKi8KPiAgIAo+IGRpZmYgLS1n aXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM1LXJlc29sdi5jb25mX25vX2xvZy5wYXRjaCBiL3Bh dGNoZXMvcHBwLTIuNC45LzAxMDQtcmVzb2x2LmNvbmZfbm9fbG9nLnBhdGNoCj4gc2ltaWxhcml0 eSBpbmRleCA1NiUKPiByZW5hbWUgZnJvbSBwYXRjaGVzL3BwcC0yLjQuNy8wMDM1LXJlc29sdi5j b25mX25vX2xvZy5wYXRjaAo+IHJlbmFtZSB0byBwYXRjaGVzL3BwcC0yLjQuOS8wMTA0LXJlc29s di5jb25mX25vX2xvZy5wYXRjaAo+IGluZGV4IGFlYTZiMjA4MmM4Zi4uNjYyNjVhYTZjZDc3IDEw MDY0NAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzUtcmVzb2x2LmNvbmZfbm9fbG9nLnBh dGNoCj4gKysrIGIvcGF0Y2hlcy9wcHAtMi40LjkvMDEwNC1yZXNvbHYuY29uZl9ub19sb2cucGF0 Y2gKPiBAQCAtMSwxOSArMSwxOSBAQAo+IC1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmlj aEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTogU2F0LCAyOCBTZXAgMjAxOSAwODoxMTo1MCArMDIw MAo+ICtGcm9tOiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgo+ICtEYXRlOiBXZWQs IDE2IEp1biAyMDIxIDE4OjIyOjQ4ICswMjAwCj4gIFN1YmplY3Q6IFtQQVRDSF0gcmVzb2x2LmNv bmZfbm9fbG9nCj4gIAo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5kZWJpYW4udGFy Lnh6Cj4gK0ltcG9ydGVkIGZyb20gcHBwXzIuNC45LTErMS5kZWJpYW4udGFyLnh6Cj4gIAo+IC1T aWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4K PiArU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KPiAgLS0t Cj4gICBwcHBkL2lwY3AuYyB8IDIgKy0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQo+ICAKPiAgZGlmZiAtLWdpdCBhL3BwcGQvaXBjcC5jIGIvcHBwZC9p cGNwLmMKPiAtaW5kZXggZDZlMGUyYTY5OWZlLi5iODFiMmZkMGEyOWYgMTAwNjQ0Cj4gK2luZGV4 IDNhYzI2YTA4MDMyYS4uY2UwMDIyNjJiYjM0IDEwMDY0NAo+ICAtLS0gYS9wcHBkL2lwY3AuYwo+ ICArKysgYi9wcHBkL2lwY3AuYwo+IC1AQCAtMjE1Miw3ICsyMTUyLDcgQEAgY3JlYXRlX3Jlc29s dihwZWVyZG5zMSwgcGVlcmRuczIpCj4gK0BAIC0yMDkzLDcgKzIwOTMsNyBAQCBjcmVhdGVfcmVz b2x2KHVfaW50MzJfdCBwZWVyZG5zMSwgdV9pbnQzMl90IHBlZXJkbnMyKQo+ICAgCj4gICAgICAg ZiA9IGZvcGVuKF9QQVRIX1JFU09MViwgInciKTsKPiAgICAgICBpZiAoZiA9PSBOVUxMKSB7Cj4g ZGlmZiAtLWdpdCBhL3BhdGNoZXMvcHBwLTIuNC43LzAwMzYtRGViaWFuLXNwZWNpZmljLWNoYW5n ZXMucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTA1LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2Vz LnBhdGNoCj4gc2ltaWxhcml0eSBpbmRleCA2MiUKPiByZW5hbWUgZnJvbSBwYXRjaGVzL3BwcC0y LjQuNy8wMDM2LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNoCj4gcmVuYW1lIHRvIHBhdGNo ZXMvcHBwLTIuNC45LzAxMDUtRGViaWFuLXNwZWNpZmljLWNoYW5nZXMucGF0Y2gKPiBpbmRleCA5 NTc2YWYxMTg3ZDYuLjg2YmJhMzVmOWVjYyAxMDA2NDQKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQu Ny8wMDM2LURlYmlhbi1zcGVjaWZpYy1jaGFuZ2VzLnBhdGNoCj4gKysrIGIvcGF0Y2hlcy9wcHAt Mi40LjkvMDEwNS1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaAo+IEBAIC0xLDIzICsxLDI3 IEBACj4gLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+ IC1EYXRlOiBTYXQsIDI4IFNlcCAyMDE5IDA4OjExOjUwICswMjAwCj4gK0Zyb206IEFsZXhhbmRl ciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+Cj4gK0RhdGU6IFdlZCwgMTYgSnVuIDIwMjEgMTg6MjI6 NDkgKzAyMDAKPiAgU3ViamVjdDogW1BBVENIXSBEZWJpYW4tc3BlY2lmaWMgY2hhbmdlcy4KPiAg Cj4gLUltcG9ydGVkIGZyb20gcHBwXzIuNC43LTIrNC4xLmRlYmlhbi50YXIueHoKPiArSW1wb3J0 ZWQgZnJvbSBwcHBfMi40LjktMSsxLmRlYmlhbi50YXIueHoKPiAgCj4gLVNpZ25lZC1vZmYtYnk6 IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgo+ICtTaWduZWQtb2Zm LWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgo+ICAtLS0KPiAtIHBwcGQvTWFr ZWZpbGUubGludXggICAgfCA2ICsrLS0tLQo+ICsgcHBwZC9NYWtlZmlsZS5saW51eCAgICB8IDYg KysrLS0tCj4gICBwcHBkL3BhdGhuYW1lcy5oICAgICAgIHwgMiArLQo+ICAgcHBwZC9wcHBkLmgg ICAgICAgICAgICB8IDIgKy0KPiAgIHBwcGR1bXAvTWFrZWZpbGUubGludXggfCA0ICsrLS0KPiAt IDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+ICsgNCBm aWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gIAo+ICBkaWZm IC0tZ2l0IGEvcHBwZC9NYWtlZmlsZS5saW51eCBiL3BwcGQvTWFrZWZpbGUubGludXgKPiAtaW5k ZXggMTZiM2VlODc5NzkxLi41NTQ5MTQ1ZTU3OTEgMTAwNjQ0Cj4gK2luZGV4IDIyODM3YzUwNDE1 ZS4uYmJiNDc2ODI3Y2VhIDEwMDY0NAo+ICAtLS0gYS9wcHBkL01ha2VmaWxlLmxpbnV4Cj4gICsr KyBiL3BwcGQvTWFrZWZpbGUubGludXgKPiAtQEAgLTYxLDE0ICs2MSwxNCBAQCBIQVZFX01VTFRJ TElOSz15Cj4gLSBVU0VfVERCPXkKPiArQEAgLTY0LDE3ICs2NCwxNyBAQCBVU0VfVERCPXkKPiAr ICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gZW5hYmxlIFR5cGU9bm90aWZ5IHNlcnZpY2Vz IGluIHN5c3RlbWQKPiArICMgSWYgZW5hYmxlZCwgYW5kIHRoZSB1c2VyIHNldHMgdGhlIHVwX3Nk bm90aWZ5IG9wdGlvbiwgdGhlbgo+ICsgIyBwcHBkIHdpbGwgbm90IGRldGFjaCBhbmQgd2lsbCBu b3RpZnkgc3lzdGVtZCB3aGVuIHVwLgo+ICstI1NZU1RFTUQ9eQo+ICsrU1lTVEVNRD15Cj4gICAK PiAgIEhBU19TSEFET1c9eQo+ICAtI1VTRV9QQU09eQo+IEBAIC0zMywyMyArMzcsMTEgQEAgaW5k ZXggMTZiM2VlODc5NzkxLi41NTQ5MTQ1ZTU3OTEgMTAwNjQ0Cj4gICAKPiAgICMgRW5hYmxlIEVB UCBTUlAtU0hBMSBhdXRoZW50aWNhdGlvbiAocmVxdWlyZXMgbGlic3JwKQo+ICAgI1VTRV9TUlA9 eQo+IC1AQCAtMTc4LDExICsxNzgsOSBAQCBMSUJTCSs9IC1sZGwKPiAtIGVuZGlmCj4gLSAKPiAt IGlmZGVmIEZJTFRFUgo+IC0taWZuZXEgKCQod2lsZGNhcmQgL3Vzci9pbmNsdWRlL3BjYXAtYnBm LmgpLCkKPiAtIExJQlMgICAgKz0gLWxwY2FwCj4gLSBDRkxBR1MgICs9IC1EUFBQX0ZJTFRFUgo+ IC0gZW5kaWYKPiAtLWVuZGlmCj4gLSAKPiAtIGlmZGVmIEhBVkVfSU5FVDYKPiAtICAgICAgUFBQ RFNSQ1MgKz0gaXB2NmNwLmMgZXVpNjQuYwo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9wYXRobmFtZXMu aCBiL3BwcGQvcGF0aG5hbWVzLmgKPiAtaW5kZXggYTMzZjA0NjZjOWQ2Li40Njk3MjYwMWZjOTIg MTAwNjQ0Cj4gK2luZGV4IDUyNGQ2MDhjZTEyYy4uMmRmNjEzNTRmNDBlIDEwMDY0NAo+ICAtLS0g YS9wcHBkL3BhdGhuYW1lcy5oCj4gICsrKyBiL3BwcGQvcGF0aG5hbWVzLmgKPiAtQEAgLTI4LDcg KzI4LDcgQEAKPiArQEAgLTMzLDcgKzMzLDcgQEAKPiAgICNkZWZpbmUgX1BBVEhfQVVUSFVQCSBf Uk9PVF9QQVRIICIvZXRjL3BwcC9hdXRoLXVwIgo+ICAgI2RlZmluZSBfUEFUSF9BVVRIRE9XTgkg X1JPT1RfUEFUSCAiL2V0Yy9wcHAvYXV0aC1kb3duIgo+ICAgI2RlZmluZSBfUEFUSF9UVFlPUFQJ IF9ST09UX1BBVEggIi9ldGMvcHBwL29wdGlvbnMuIgo+IEBAIC01OSwxMCArNTEsMTAgQEAgaW5k ZXggYTMzZjA0NjZjOWQ2Li40Njk3MjYwMWZjOTIgMTAwNjQ0Cj4gICAjZGVmaW5lIF9QQVRIX1JF U09MVgkgX1JPT1RfUEFUSCAiL2V0Yy9wcHAvcmVzb2x2LmNvbmYiCj4gICAKPiAgZGlmZiAtLWdp dCBhL3BwcGQvcHBwZC5oIGIvcHBwZC9wcHBkLmgKPiAtaW5kZXggYjExNjcwNTg2MjQ0Li41Njdk NzAyMTgxY2EgMTAwNjQ0Cj4gK2luZGV4IDEwYTk5Nzc1OThhYS4uYTE0NDgzYjc2YWNjIDEwMDY0 NAo+ICAtLS0gYS9wcHBkL3BwcGQuaAo+ICArKysgYi9wcHBkL3BwcGQuaAo+IC1AQCAtODcwLDcg Kzg3MCw3IEBAIGV4dGVybiB2b2lkICgqc25vb3Bfc2VuZF9ob29rKSBfX1AoKHVuc2lnbmVkIGNo YXIgKnAsIGludCBsZW4pKTsKPiArQEAgLTg3OSw3ICs4NzksNyBAQCBleHRlcm4gdm9pZCAoKnNu b29wX3NlbmRfaG9vaykodW5zaWduZWQgY2hhciAqcCwgaW50IGxlbik7Cj4gICAgIHx8IGRlZmlu ZWQoREVCVUdDSEFQKSB8fCBkZWZpbmVkKERFQlVHKSB8fCBkZWZpbmVkKERFQlVHSVBWNkNQKQo+ ICAgI2RlZmluZSBMT0dfUFBQIExPR19MT0NBTDIKPiAgICNlbHNlCj4gQEAgLTcyLDEwICs2NCwx MCBAQCBpbmRleCBiMTE2NzA1ODYyNDQuLjU2N2Q3MDIxODFjYSAxMDA2NDQKPiAgICNlbmRpZiAv KiBMT0dfUFBQICovCj4gICAKPiAgZGlmZiAtLWdpdCBhL3BwcGR1bXAvTWFrZWZpbGUubGludXgg Yi9wcHBkdW1wL01ha2VmaWxlLmxpbnV4Cj4gLWluZGV4IDg3Nzc3ZmFiNWU5NC4uMWVlZWFmZTIw MTExIDEwMDY0NAo+ICtpbmRleCBkZTdlNTc0ZDEwZTEuLjA0YjFjMTBiMzRjNyAxMDA2NDQKPiAg LS0tIGEvcHBwZHVtcC9NYWtlZmlsZS5saW51eAo+ICArKysgYi9wcHBkdW1wL01ha2VmaWxlLmxp bnV4Cj4gLUBAIC0yLDkgKzIsOSBAQCBERVNURElSID0gJChJTlNUUk9PVClAREVTVERJUkAKPiAr QEAgLTYsOSArNiw5IEBAIERFU1RESVIgPSAkKElOU1RST09UKUBERVNURElSQAo+ICAgQklORElS ID0gJChERVNURElSKS9zYmluCj4gICBNQU5ESVIgPSAkKERFU1RESVIpL3NoYXJlL21hbi9tYW44 Cj4gICAKPiBAQCAtODUsNSArNzcsNSBAQCBpbmRleCA4Nzc3N2ZhYjVlOTQuLjFlZWVhZmUyMDEx MSAxMDA2NDQKPiAgLUhBVkVfWkxJQj1uCj4gICtIQVZFX1pMSUI9eQo+ICAgCj4gLSBDT1BUUz0t TzIgLWcKPiAtIENGTEFHUz0gJChDT1BUUykgLUkuLi9pbmNsdWRlL25ldAo+ICsgQ0ZMQUdTID0g JChDT1BUUykgLUkuLi9pbmNsdWRlL25ldAo+ICsgT0JKUyA9IHBwcGR1bXAubwo+IGRpZmYgLS1n aXQgYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM5LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlv bnMtd2l0aC1saWJjcnlwdG8ucGF0Y2ggYi9wYXRjaGVzL3BwcC0yLjQuOS8wMTA2LVJlcGxhY2Ut dmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gKPiBzaW1pbGFyaXR5 IGluZGV4IDkyJQo+IHJlbmFtZSBmcm9tIHBhdGNoZXMvcHBwLTIuNC43LzAwMzktUmVwbGFjZS12 ZW5kb3JlZC1oYXNoLWZ1bmN0aW9ucy13aXRoLWxpYmNyeXB0by5wYXRjaAo+IHJlbmFtZSB0byBw YXRjaGVzL3BwcC0yLjQuOS8wMTA2LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0 aC1saWJjcnlwdG8ucGF0Y2gKPiBpbmRleCBhMDhhZjU0NGEzODUuLjg1OTdjZjlhNTEyYiAxMDA2 NDQKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8wMDM5LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1m dW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gKPiArKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8w MTA2LVJlcGxhY2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gK PiBAQCAtMSw1ICsxLDUgQEAKPiAtRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVu Z3V0cm9uaXguZGU+Cj4gLURhdGU6IFNhdCwgMjggU2VwIDIwMTkgMDg6MTE6NTAgKzAyMDAKPiAr RnJvbTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNvbT4KPiArRGF0ZTogV2VkLCAxNiBK dW4gMjAyMSAxODoyMjo0OSArMDIwMAo+ICBTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgdmVuZG9y ZWQgaGFzaCBmdW5jdGlvbnMgd2l0aCBsaWJjcnlwdG8KPiAgCj4gIEJ1Zy1EZWJpYW46IGh0dHBz Oi8vYnVncy5kZWJpYW4ub3JnLzgyNjYyNQo+IEBAIC0xNCwyNCArMTQsMjQgQEAgcHJlZmVyYWJs ZSBib3RoIGR1ZSB0byB0aGUgcGF0Y2ggYmVpbmcgc2xpZ2h0bHkgbGVzcyBpbnZhc2l2ZSBhbmQg YWxzbyBiZWNhdXNlCj4gIG9mIG91ciB1c2Ugb2YgdGhlIEVBUC1UTFMgcGF0Y2ggd2hpY2ggcmVx dWlyZXMgT3BlblNTTC4KPiAgCj4gIAo+IC1JbXBvcnRlZCBmcm9tIHBwcF8yLjQuNy0yKzQuMS5k ZWJpYW4udGFyLnh6Cj4gK0ltcG9ydGVkIGZyb20gcHBwXzIuNC45LTErMS5kZWJpYW4udGFyLnh6 Cj4gIAo+IC1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRy b25peC5kZT4KPiArU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIERhaGwgPGFkYUB0aG9yc2lzLmNv bT4KPiAgLS0tCj4gLSBwcHBkL01ha2VmaWxlLmxpbnV4ICAgICAgICAgIHwgIDI1ICsrLS0KPiAr IHBwcGQvTWFrZWZpbGUubGludXggICAgICAgICAgfCAgMjggKy0tLQo+ICAgcHBwZC9jaGFwLW1k NS5jICAgICAgICAgICAgICB8ICAgMiArLQo+ICAgcHBwZC9jaGFwX21zLmMgICAgICAgICAgICAg ICB8ICA0MCArKy0tLS0KPiAtIHBwcGQvZWFwLmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K PiAtIHBwcGQvbWQ0LmMgICAgICAgICAgICAgICAgICAgfCAyOTkgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtIHBwcGQvbWQ0LmggICAgICAgICAgICAgICAgICAg fCAgNjQgLS0tLS0tLS0tCj4gLSBwcHBkL21kNS5jICAgICAgICAgICAgICAgICAgIHwgMzExIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAtIHBwcGQvbWQ1Lmgg ICAgICAgICAgICAgICAgICAgfCAgNjggLS0tLS0tLS0tLQo+ICsgcHBwZC9lYXAuYyAgICAgICAg ICAgICAgICAgICB8ICAgMyArLQo+ICsgcHBwZC9tZDQuYyAgICAgICAgICAgICAgICAgICB8IDI5 MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgcHBwZC9tZDQu aCAgICAgICAgICAgICAgICAgICB8ICA1NSAtLS0tLS0tLQo+ICsgcHBwZC9tZDUuYyAgICAgICAg ICAgICAgICAgICB8IDI5OSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gKyBwcHBkL21kNS5oICAgICAgICAgICAgICAgICAgIHwgIDY1IC0tLS0tLS0tLS0KPiAg IHBwcGQvcGx1Z2lucy9yYWRpdXMvbWQ1LmMgICAgfCAgIDIgKy0KPiAgIHBwcGQvcGx1Z2lucy9y YWRpdXMvcmFkaXVzLmMgfCAgIDIgKy0KPiAgIHBwcGQvcGx1Z2lucy93aW5iaW5kLmMgICAgICAg fCAgIDIgKy0KPiAtIHBwcGQvc2hhMS5jICAgICAgICAgICAgICAgICAgfCAxNzAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiArIHBwcGQvc2hhMS5jICAgICAgICAgICAgICAgICAgfCAxNzEgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgcHBwZC9zaGExLmggICAgICAgICAgICAgICAgICB8 ICAzMSAtLS0tLQo+IC0gMTMgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgOTkwIGRl bGV0aW9ucygtKQo+ICsgMTMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgOTYzIGRl bGV0aW9ucygtKQo+ICAgZGVsZXRlIG1vZGUgMTAwNjQ0IHBwcGQvbWQ0LmMKPiAgIGRlbGV0ZSBt b2RlIDEwMDY0NCBwcHBkL21kNC5oCj4gICBkZWxldGUgbW9kZSAxMDA2NDQgcHBwZC9tZDUuYwo+ IEBAIC00MCwxMCArNDAsMTAgQEAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9s YnJpY2hAcGVuZ3V0cm9uaXguZGU+Cj4gICBkZWxldGUgbW9kZSAxMDA2NDQgcHBwZC9zaGExLmgK PiAgCj4gIGRpZmYgLS1naXQgYS9wcHBkL01ha2VmaWxlLmxpbnV4IGIvcHBwZC9NYWtlZmlsZS5s aW51eAo+IC1pbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNlOGMzYiAxMDA2NDQKPiAraW5kZXgg YmJiNDc2ODI3Y2VhLi5iYzAxZTNmZDJhMjQgMTAwNjQ0Cj4gIC0tLSBhL3BwcGQvTWFrZWZpbGUu bGludXgKPiAgKysrIGIvcHBwZC9NYWtlZmlsZS5saW51eAo+IC1AQCAtMTEsMTYgKzExLDE2IEBA IElOQ0RJUiA9ICQoREVTVERJUikvaW5jbHVkZQo+ICtAQCAtMTUsMTYgKzE1LDE2IEBAIElOQ0RJ UiA9ICQoREVTVERJUikvaW5jbHVkZQo+ICAgCj4gICBUQVJHRVRTID0gcHBwZAo+ICAgCj4gQEAg LTY0LDE2ICs2NCwxNiBAQCBpbmRleCA0YTExZDVmZWE3NDguLjU4YTYzNGNlOGMzYiAxMDA2NDQK PiAgIAkgICBlY3AubyBhdXRoLm8gb3B0aW9ucy5vIGRlbWFuZC5vIHV0aWxzLm8gc3lzLWxpbnV4 Lm8gaXB4Y3AubyB0dHkubyBcCj4gICAJICAgZWFwLm8gY2hhcC1tZDUubyBzZXNzaW9uLm8KPiAg IAo+IC1AQCAtMzMsNyArMzMsNyBAQCBlbmRpZgo+IC0gIyBDQyA9IGdjYwo+IC0gIwo+IC0gQ09Q VFMgPSAtTzIgLXBpcGUgLVdhbGwgLWcKPiAtLUxJQlMgPQo+IC0rTElCUyA9IC1sY3J5cHRvCj4g K0BAIC0zNCw3ICszNCw3IEBAIGlmZXEgKC5kZXBlbmQsJCh3aWxkY2FyZCAuZGVwZW5kKSkKPiAr IGluY2x1ZGUgLmRlcGVuZAo+ICsgZW5kaWYKPiArIAo+ICstTElCUyA9IC1scnQKPiArK0xJQlMg PSAtbHJ0IC1sY3J5cHRvCj4gICAKPiAtICMgVW5jb21tZW50IHRoZSBuZXh0IDIgbGluZXMgdG8g aW5jbHVkZSBzdXBwb3J0IGZvciBNaWNyb3NvZnQncwo+ICsgIyBVbmNvbW1lbnQgdGhlIG5leHQg bGluZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCdzCj4gICAjIE1TLUNIQVAgYXV0 aGVudGljYXRpb24gcHJvdG9jb2wuICBBbHNvLCBlZGl0IHBsdWdpbnMvcmFkaXVzL01ha2VmaWxl LmxpbnV4Lgo+IC1AQCAtOTEsOCArOTEsOCBAQCBMREZMQUdTPSQoTERPUFRTKQo+ICtAQCAtOTgs OCArOTgsOCBAQCBDRkxBR1M9ICQoQ09QVFMpICQoQ09NUElMRV9GTEFHUykgJChJTkNMVURFX0RJ UlMpICctRERFU1RESVI9IkBERVNURElSQCInCj4gICBpZmRlZiBDSEFQTVMKPiAgIENGTEFHUyAg ICs9IC1EQ0hBUE1TPTEKPiAgIE5FRURERVM9eQo+IEBAIC04NCwxMiArODQsMTEgQEAgaW5kZXgg NGExMWQ1ZmVhNzQ4Li41OGE2MzRjZThjM2IgMTAwNjQ0Cj4gICBpZmRlZiBNU0xBTk1BTgo+ICAg Q0ZMQUdTICAgKz0gLURNU0xBTk1BTj0xCj4gICBlbmRpZgo+IC1AQCAtMTA0LDI1ICsxMDQsMTgg QEAgZW5kaWYKPiAtICMgRUFQIFNSUC1TSEExCj4gK0BAIC0xMTMsMjYgKzExMywxNyBAQCBlbmRp Zgo+ICAgaWZkZWYgVVNFX1NSUAo+ICAgQ0ZMQUdTCSs9IC1EVVNFX1NSUCAtRE9QRU5TU0wgLUkv dXNyL2xvY2FsL3NzbC9pbmNsdWRlCj4gLS1MSUJTCSs9IC1sc3JwIC1ML3Vzci9sb2NhbC9zc2wv bGliIC1sY3J5cHRvCj4gLStMSUJTCSs9IC1sc3JwIC1ML3Vzci9sb2NhbC9zc2wvbGliCj4gKyBM SUJTCSs9IC1sc3JwIC1ML3Vzci9sb2NhbC9zc2wvbGliCj4gKy1ORUVEQ1JZUFRPTElCID0geQo+ ICAgVEFSR0VUUwkrPSBzcnAtZW50cnkKPiAgIEVYVFJBSU5TVEFMTCA9ICQoSU5TVEFMTCkgLWMg LW0gNTU1IHNycC1lbnRyeSAkKEJJTkRJUikvc3JwLWVudHJ5Cj4gICBNQU5QQUdFUyArPSBzcnAt ZW50cnkuOAo+IEBAIC0xMDYsMjcgKzEwNSw1MCBAQCBpbmRleCA0YTExZDVmZWE3NDguLjU4YTYz NGNlOGMzYiAxMDA2NDQKPiAgIAo+ICAgIyBFQVAtVExTCj4gICBpZmRlZiBVU0VfRUFQVExTCj4g LSBDRkxBR1MgKz0gLURVU0VfRUFQVExTPTEgLUkvdXNyL2tlcmJlcm9zL2luY2x1ZGUKPiAtLUxJ QlMgKz0gLWxzc2wgLWxjcnlwdG8KPiAtK0xJQlMgKz0gLWxzc2wKPiArIENGTEFHUyArPSAtRFVT RV9FQVBUTFM9MQo+ICsgTElCUyArPSAtbHNzbAo+ICstTkVFRENSWVBUT0xJQiA9IHkKPiAgIFBQ UERTUkMgKz0gZWFwLXRscy5jCj4gICBIRUFERVJTICs9IGVhcC10bHMuaAo+ICAgUFBQRE9CSlMg Kz0gZWFwLXRscy5vCj4gK0BAIC0xNTYsNyArMTQ3LDYgQEAgZW5kaWYKPiArIGlmZGVmIE5FRURE RVMKPiArIGlmbmRlZiBVU0VfQ1JZUFQKPiArIENGTEFHUyAgICs9IC1JJChzaGVsbCAkKENDKSAt LXByaW50LXN5c3Jvb3QpL3Vzci9pbmNsdWRlL29wZW5zc2wKPiArLU5FRURDUllQVE9MSUIgPSB5 Cj4gKyBlbHNlCj4gKyBDRkxBR1MgICArPSAtRFVTRV9DUllQVD0xCj4gKyBlbmRpZgo+ICtAQCAt MTY0LDEwICsxNTQsNiBAQCBQUFBET0JKUyArPSBwcHBjcnlwdC5vCj4gKyBIRUFERVJTICs9IHBw cGNyeXB0LmgKPiArIGVuZGlmCj4gKyAKPiArLWlmZGVmIE5FRURDUllQVE9MSUIKPiArLUxJQlMg ICAgICs9IC1sY3J5cHRvCj4gKy1lbmRpZgo+ICstCj4gKyAjIEZvciAiUGx1Z2dhYmxlIEF1dGhl bnRpY2F0aW9uIE1vZHVsZXMiLCBzZWUgZnRwLnJlZGhhdC5jb206L3B1Yi9wYW0vLgo+ICsgaWZk ZWYgVVNFX1BBTQo+ICsgQ0ZMQUdTICAgKz0gLURVU0VfUEFNCj4gIGRpZmYgLS1naXQgYS9wcHBk L2NoYXAtbWQ1LmMgYi9wcHBkL2NoYXAtbWQ1LmMKPiAtaW5kZXggMjY5YjUyY2IyMDQxLi43Zjc5 NjdhNTY4NDIgMTAwNjQ0Cj4gK2luZGV4IDc3ZGQ0ZWNjNzA1OS4uZDg2NTY0YWE4NjVhIDEwMDY0 NAo+ICAtLS0gYS9wcHBkL2NoYXAtbWQ1LmMKPiAgKysrIGIvcHBwZC9jaGFwLW1kNS5jCj4gLUBA IC0zOSw3ICszOSw3IEBACj4gLSAjaWZkZWYgVVNFX0VBUFRMUwo+IC0gI2luY2x1ZGUgImVhcC10 bHMuaCIKPiAtICNlbHNlCj4gLS0jaW5jbHVkZSAibWQ1LmgiCj4gK0BAIC0zMiwxMSArMzIsMTEg QEAKPiArIAo+ICsgI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsgI2luY2x1ZGUgPHN0cmluZy5oPgo+ ICArI2luY2x1ZGUgPG9wZW5zc2wvbWQ1Lmg+Cj4gLSAjZW5kaWYgLyogVVNFX0VBUFRMUyAqLwo+ ICsgI2luY2x1ZGUgInBwcGQuaCIKPiArICNpbmNsdWRlICJjaGFwLW5ldy5oIgo+ICsgI2luY2x1 ZGUgImNoYXAtbWQ1LmgiCj4gKyAjaW5jbHVkZSAibWFnaWMuaCIKPiArLSNpbmNsdWRlICJtZDUu aCIKPiAgIAo+ICAgI2RlZmluZSBNRDVfSEFTSF9TSVpFCQkxNgo+ICsgI2RlZmluZSBNRDVfTUlO X0NIQUxMRU5HRQkxNgo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9jaGFwX21zLmMgYi9wcHBkL2NoYXBf bXMuYwo+IC1pbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKPiAraW5kZXgg ZTZiODRmMjAzZmMzLi42NDg0OGYyMGY2NjAgMTAwNjQ0Cj4gIC0tLSBhL3BwcGQvY2hhcF9tcy5j Cj4gICsrKyBiL3BwcGQvY2hhcF9tcy5jCj4gIEBAIC04OSw4ICs4OSw4IEBACj4gQEAgLTE0MCw3 ICsxNjIsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKPiAgICNp bmNsdWRlICJwcHBjcnlwdC5oIgo+ICAgI2luY2x1ZGUgIm1hZ2ljLmgiCj4gICAKPiAtQEAgLTUz NSw4ICs1MzUsOCBAQCBDaGFsbGVuZ2VIYXNoKHVfY2hhciBQZWVyQ2hhbGxlbmdlWzE2XSwgdV9j aGFyICpyY2hhbGxlbmdlLAo+ICtAQCAtNTM2LDggKzUzNiw4IEBAIENoYWxsZW5nZUhhc2godV9j aGFyIFBlZXJDaGFsbGVuZ2VbMTZdLCB1X2NoYXIgKnJjaGFsbGVuZ2UsCj4gICAJICAgICAgY2hh ciAqdXNlcm5hbWUsIHVfY2hhciBDaGFsbGVuZ2VbOF0pCj4gICAgICAgCj4gICB7Cj4gQEAgLTE1 MSw3ICsxNzMsNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKPiAg ICAgICBjaGFyCSp1c2VyOwo+ICAgCj4gICAgICAgLyogcmVtb3ZlIGRvbWFpbiBmcm9tICJkb21h aW5cdXNlcm5hbWUiICovCj4gLUBAIC01NzQsMjMgKzU3NCwxMSBAQCBhc2NpaTJ1bmljb2RlKGNo YXIgYXNjaWlbXSwgaW50IGFzY2lpX2xlbiwgdV9jaGFyIHVuaWNvZGVbXSkKPiArQEAgLTU3NSwy MyArNTc1LDExIEBAIGFzY2lpMnVuaWNvZGUoY2hhciBhc2NpaVtdLCBpbnQgYXNjaWlfbGVuLCB1 X2NoYXIgdW5pY29kZVtdKQo+ICAgc3RhdGljIHZvaWQKPiAgIE5UUGFzc3dvcmRIYXNoKHVfY2hh ciAqc2VjcmV0LCBpbnQgc2VjcmV0X2xlbiwgdV9jaGFyIGhhc2hbTUQ0X1NJR05BVFVSRV9TSVpF XSkKPiAgIHsKPiBAQCAtMTc4LDcgKzIwMCw3IEBAIGluZGV4IGMyYmQwMGY5YzZmNy4uMTllZGI4 NWQyN2E4IDEwMDY0NAo+ICAgCj4gICB9Cj4gICAKPiAtQEAgLTY3MSw4ICs2NTksOCBAQCBHZW5l cmF0ZUF1dGhlbnRpY2F0b3JSZXNwb25zZSh1X2NoYXIgUGFzc3dvcmRIYXNoSGFzaFtNRDRfU0lH TkFUVVJFX1NJWkVdLAo+ICtAQCAtNjcyLDggKzY2MCw4IEBAIEdlbmVyYXRlQXV0aGVudGljYXRv clJlc3BvbnNlKHVfY2hhciBQYXNzd29yZEhhc2hIYXNoW01ENF9TSUdOQVRVUkVfU0laRV0sCj4g ICAJICAweDZFIH07Cj4gICAKPiAgICAgICBpbnQJCWk7Cj4gQEAgLTE4OSw3ICsyMTEsNyBAQCBp bmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKPiAgICAgICB1X2NoYXIJQ2hh bGxlbmdlWzhdOwo+ICAgCj4gICAgICAgU0hBMV9Jbml0KCZzaGExQ29udGV4dCk7Cj4gLUBAIC03 MjUsOCArNzEzLDggQEAgR2VuZXJhdGVBdXRoZW50aWNhdG9yUmVzcG9uc2VQbGFpbgo+ICtAQCAt NzI2LDggKzcxNCw4IEBAIEdlbmVyYXRlQXV0aGVudGljYXRvclJlc3BvbnNlUGxhaW4KPiAgIHZv aWQKPiAgIG1wcGVfc2V0X2tleXModV9jaGFyICpyY2hhbGxlbmdlLCB1X2NoYXIgUGFzc3dvcmRI YXNoSGFzaFtNRDRfU0lHTkFUVVJFX1NJWkVdKQo+ICAgewo+IEBAIC0yMDAsNyArMjIyLDcgQEAg aW5kZXggYzJiZDAwZjljNmY3Li4xOWVkYjg1ZDI3YTggMTAwNjQ0Cj4gICAKPiAgICAgICBTSEEx X0luaXQoJnNoYTFDb250ZXh0KTsKPiAgICAgICBTSEExX1VwZGF0ZSgmc2hhMUNvbnRleHQsIFBh c3N3b3JkSGFzaEhhc2gsIE1ENF9TSUdOQVRVUkVfU0laRSk7Cj4gLUBAIC03NjksOSArNzU3LDkg QEAgdm9pZAo+ICtAQCAtNzcwLDkgKzc1OCw5IEBAIHZvaWQKPiAgIG1wcGVfc2V0X2tleXMyKHVf Y2hhciBQYXNzd29yZEhhc2hIYXNoW01ENF9TSUdOQVRVUkVfU0laRV0sCj4gICAJICAgICAgIHVf Y2hhciBOVFJlc3BvbnNlWzI0XSwgaW50IElzU2VydmVyKQo+ICAgewo+IEBAIC0yMTQsMjQgKzIz NiwyNyBAQCBpbmRleCBjMmJkMDBmOWM2ZjcuLjE5ZWRiODVkMjdhOCAxMDA2NDQKPiAgICAgICB1 X2NoYXIgU0hBcGFkMVs0MF0gPQo+ICAgCXsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKPiAgZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmMg Yi9wcHBkL2VhcC5jCj4gLWluZGV4IDAzMjQwN2MzZGJiMi4uMzVkMTExMDE1ZmYzIDEwMDY0NAo+ ICtpbmRleCA3OTE0NjU1N2JkMzIuLmQ5ODc4ODhkOWYyMCAxMDA2NDQKPiAgLS0tIGEvcHBwZC9l YXAuYwo+ICArKysgYi9wcHBkL2VhcC5jCj4gLUBAIC03MSw3ICs3MSw3IEBACj4gLSAjaWZkZWYg VVNFX0VBUFRMUwo+IC0gI2luY2x1ZGUgImVhcC10bHMuaCIKPiAtICNlbHNlCj4gLS0jaW5jbHVk ZSAibWQ1LmgiCj4gK0BAIC01OSw5ICs1OSwxMCBAQAo+ICsgI2luY2x1ZGUgPGFzc2VydC5oPgo+ ICsgI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyAKPiAgKyNpbmNsdWRlIDxvcGVuc3NsL21kNS5oPgo+ IC0gI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiArKwo+ICsgI2luY2x1ZGUgInBwcGQuaCIKPiAr ICNpbmNsdWRlICJwYXRobmFtZXMuaCIKPiArLSNpbmNsdWRlICJtZDUuaCIKPiArICNpbmNsdWRl ICJlYXAuaCIKPiAgIAo+IC0gI2lmZGVmIFVTRV9TUlAKPiArICNpZmRlZiBDSEFQTVMKPiAgZGlm ZiAtLWdpdCBhL3BwcGQvbWQ0LmMgYi9wcHBkL21kNC5jCj4gIGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAo+IC1pbmRleCBkOTQzZTg4ODVmMmQuLjAwMDAwMDAwMDAwMAo+ICtpbmRleCA0MmE5YjJl NzVkNmUuLjAwMDAwMDAwMDAwMAo+ICAtLS0gYS9wcHBkL21kNC5jCj4gICsrKyAvZGV2L251bGwK PiAtQEAgLTEsMjk5ICswLDAgQEAKPiArQEAgLTEsMjkwICswLDAgQEAKPiAgLS8qCj4gIC0qKiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgo+ICAtKiogbWQ0LmMgLS0gSW1wbGVtZW50YXRpb24gb2YgTUQ0IE1lc3NhZ2Ug RGlnZXN0IEFsZ29yaXRobSAgICAgICAgICAgKioKPiBAQCAtMzIxLDggKzM0Niw3IEBAIGluZGV4 IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCj4gIC0qKiBUaGlzIGlzIGEgdXNlci1jYWxsYWJs ZSByb3V0aW5lLgo+ICAtKi8KPiAgLXZvaWQKPiAtLU1ENFByaW50KE1EcCkKPiAtLU1ENF9DVFgg Kk1EcDsKPiArLU1ENFByaW50KE1ENF9DVFggKk1EcCkKPiAgLXsKPiAgLSAgaW50IGksajsKPiAg LSAgZm9yIChpPTA7aTw0O2krKykKPiBAQCAtMzM1LDggKzM1OSw3IEBAIGluZGV4IGQ5NDNlODg4 NWYyZC4uMDAwMDAwMDAwMDAwCj4gIC0qKiBUaGlzIGlzIGEgdXNlci1jYWxsYWJsZSByb3V0aW5l Lgo+ICAtKi8KPiAgLXZvaWQKPiAtLU1ENEluaXQoTURwKQo+IC0tTUQ0X0NUWCAqTURwOwo+ICst TUQ0SW5pdChNRDRfQ1RYICpNRHApCj4gIC17Cj4gIC0gIGludCBpOwo+ICAtICBNRHAtPmJ1ZmZl clswXSA9IEkwOwo+IEBAIC0zNTQsOSArMzc3LDcgQEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4wMDAw MDAwMDAwMDAKPiAgLSoqIFRoaXMgcm91dGluZSBpcyBub3QgdXNlci1jYWxsYWJsZS4KPiAgLSov Cj4gIC1zdGF0aWMgdm9pZAo+IC0tTURibG9jayhNRHAsWGIpCj4gLS1NRDRfQ1RYICpNRHA7Cj4g LS11bnNpZ25lZCBjaGFyICpYYjsKPiArLU1EYmxvY2soTUQ0X0NUWCAqTURwLCB1bnNpZ25lZCBj aGFyICpYYikKPiAgLXsKPiAgLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IHRtcCwgQSwgQiwgQywg RDsKPiAgLSAgdW5zaWduZWQgaW50IFhbMTZdOwo+IEBAIC00NDAsMTAgKzQ2MSw3IEBAIGluZGV4 IGQ5NDNlODg4NWYyZC4uMDAwMDAwMDAwMDAwCj4gIC0qKiBpZiBkZXNpcmVkLgo+ICAtKi8KPiAg LXZvaWQKPiAtLU1ENFVwZGF0ZShNRHAsWCxjb3VudCkKPiAtLU1ENF9DVFggKk1EcDsKPiAtLXVu c2lnbmVkIGNoYXIgKlg7Cj4gLS11bnNpZ25lZCBpbnQgY291bnQ7Cj4gKy1NRDRVcGRhdGUoTUQ0 X0NUWCAqTURwLCB1bnNpZ25lZCBjaGFyICpYLCB1bnNpZ25lZCBpbnQgY291bnQpCj4gIC17Cj4g IC0gIHVuc2lnbmVkIGludCBpLCB0bXAsIGJpdCwgYnl0ZSwgbWFzazsKPiAgLSAgdW5zaWduZWQg Y2hhciBYWFs2NF07Cj4gQEAgLTUxMSw5ICs1MjksNyBAQCBpbmRleCBkOTQzZTg4ODVmMmQuLjAw MDAwMDAwMDAwMAo+ICAtKiogRmluaXNoIHVwIE1ENCBjb21wdXRhdGlvbiBhbmQgcmV0dXJuIG1l c3NhZ2UgZGlnZXN0Lgo+ICAtKi8KPiAgLXZvaWQKPiAtLU1ENEZpbmFsKGJ1ZiwgTUQpCj4gLS11 bnNpZ25lZCBjaGFyICpidWY7Cj4gLS1NRDRfQ1RYICpNRDsKPiArLU1ENEZpbmFsKHVuc2lnbmVk IGNoYXIgKmJ1ZiwgTUQ0X0NUWCAqTUQpCj4gIC17Cj4gIC0gIGludCBpLCBqOwo+ICAtICB1bnNp Z25lZCBpbnQgdzsKPiBAQCAtNTMzLDEwICs1NDksMTAgQEAgaW5kZXggZDk0M2U4ODg1ZjJkLi4w MDAwMDAwMDAwMDAKPiAgLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiooY3V0KSoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9tZDQuaCBi L3BwcGQvbWQ0LmgKPiAgZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gLWluZGV4IDgwZThmOWEy YWNjYS4uMDAwMDAwMDAwMDAwCj4gK2luZGV4IGI2ZmMzZjU2MWZhYS4uMDAwMDAwMDAwMDAwCj4g IC0tLSBhL3BwcGQvbWQ0LmgKPiAgKysrIC9kZXYvbnVsbAo+IC1AQCAtMSw2NCArMCwwIEBACj4g K0BAIC0xLDU1ICswLDAgQEAKPiAgLQo+ICAtLyoKPiAgLSoqICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gQEAgLTU0 NywxNSArNTYzLDYgQEAgaW5kZXggODBlOGY5YTJhY2NhLi4wMDAwMDAwMDAwMDAKPiAgLSoqICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gIC0qLwo+ICAtCj4gLS0jaWZuZGVmIF9fUAo+IC0tIyBpZiBkZWZpbmVkKF9f U1REQ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKQo+IC0tIyAgZGVmaW5lIF9fUCh4KSB4Cj4gLS0j IGVsc2UKPiAtLSMgIGRlZmluZSBfX1AoeCkgKCkKPiAtLSMgZW5kaWYKPiAtLSNlbmRpZgo+IC0t Cj4gLS0KPiAgLS8qIE1Ec3RydWN0IGlzIHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IgYSBtZXNzYWdl IGRpZ2VzdCBjb21wdXRhdGlvbi4KPiAgLSovCj4gIC10eXBlZGVmIHN0cnVjdCB7Cj4gQEAgLTU2 OCw3ICs1NzUsNyBAQCBpbmRleCA4MGU4ZjlhMmFjY2EuLjAwMDAwMDAwMDAwMAo+ICAtKiogSW5p dGlhbGl6ZSB0aGUgTUQ0X0NUWCBwcmVwYXRvcnkgdG8gZG9pbmcgYSBtZXNzYWdlIGRpZ2VzdAo+ ICAtKiogY29tcHV0YXRpb24uCj4gIC0qLwo+IC0tZXh0ZXJuIHZvaWQgTUQ0SW5pdCBfX1AoKE1E NF9DVFggKk1EKSk7Cj4gKy1leHRlcm4gdm9pZCBNRDRJbml0KE1ENF9DVFggKk1EKTsKPiAgLQo+ ICAtLyogTUQ0VXBkYXRlKE1ELFgsY291bnQpCj4gIC0qKiBJbnB1dDogWCAtLSBhIHBvaW50ZXIg dG8gYW4gYXJyYXkgb2YgdW5zaWduZWQgY2hhcmFjdGVycy4KPiBAQCAtNTgyLDcgKzU4OSw3IEBA IGluZGV4IDgwZThmOWEyYWNjYS4uMDAwMDAwMDAwMDAwCj4gIC0qKiBldmVyeSBNRCBjb21wdXRh dGlvbiBzaG91bGQgZW5kIHdpdGggb25lIGNhbGwgdG8gTUQ0VXBkYXRlIHdpdGggYQo+ICAtKiog Y291bnQgbGVzcyB0aGFuIDUxMi4gIFplcm8gaXMgT0sgZm9yIGEgY291bnQuCj4gIC0qLwo+IC0t ZXh0ZXJuIHZvaWQgTUQ0VXBkYXRlIF9fUCgoTUQ0X0NUWCAqTUQsIHVuc2lnbmVkIGNoYXIgKlgs IHVuc2lnbmVkIGludCBjb3VudCkpOwo+ICstZXh0ZXJuIHZvaWQgTUQ0VXBkYXRlKE1ENF9DVFgg Kk1ELCB1bnNpZ25lZCBjaGFyICpYLCB1bnNpZ25lZCBpbnQgY291bnQpOwo+ICAtCj4gIC0vKiBN RDRQcmludChNRCkKPiAgLSoqIFByaW50cyBtZXNzYWdlIGRpZ2VzdCBidWZmZXIgTUQgYXMgMzIg aGV4YWRlY2ltYWwgZGlnaXRzLgo+IEBAIC01OTAsMjMgKzU5NywyMyBAQCBpbmRleCA4MGU4Zjlh MmFjY2EuLjAwMDAwMDAwMDAwMAo+ICAtKiogb2YgYnVmZmVyWzNdLgo+ICAtKiogRWFjaCBieXRl IGlzIHByaW50ZWQgd2l0aCBoaWdoLW9yZGVyIGhleGFkZWNpbWFsIGRpZ2l0IGZpcnN0Lgo+ICAt Ki8KPiAtLWV4dGVybiB2b2lkIE1ENFByaW50IF9fUCgoTUQ0X0NUWCAqKSk7Cj4gKy1leHRlcm4g dm9pZCBNRDRQcmludChNRDRfQ1RYICopOwo+ICAtCj4gIC0vKiBNRDRGaW5hbChidWYsIE1EKQo+ ICAtKiogUmV0dXJucyBtZXNzYWdlIGRpZ2VzdCBmcm9tIE1EIGFuZCB0ZXJtaW5hdGVzIHRoZSBt ZXNzYWdlCj4gIC0qKiBkaWdlc3QgY29tcHV0YXRpb24uCj4gIC0qLwo+IC0tZXh0ZXJuIHZvaWQg TUQ0RmluYWwgX19QKCh1bnNpZ25lZCBjaGFyICosIE1ENF9DVFggKikpOwo+ICstZXh0ZXJuIHZv aWQgTUQ0RmluYWwodW5zaWduZWQgY2hhciAqLCBNRDRfQ1RYICopOwo+ICAtCj4gIC0vKgo+ICAt KiogRW5kIG9mIG1kNC5oCj4gIC0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKGN1dCkqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPiAgZGlmZiAtLWdpdCBhL3BwcGQvbWQ1 LmMgYi9wcHBkL21kNS5jCj4gIGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IC1pbmRleCA2Zjhm NzIwN2M1OTIuLjAwMDAwMDAwMDAwMAo+ICtpbmRleCBmNzk4OGU2NDE0MWEuLjAwMDAwMDAwMDAw MAo+ICAtLS0gYS9wcHBkL21kNS5jCj4gICsrKyAvZGV2L251bGwKPiAtQEAgLTEsMzExICswLDAg QEAKPiArQEAgLTEsMjk5ICswLDAgQEAKPiAgLQo+ICAtCj4gIC0vKgo+IEBAIC02NDIsOCArNjQ5 LDYgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAwMDAwMDAKPiAgLSAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ICAtICovCj4gIC0KPiAtLSNpZm5kZWYgVVNFX0VBUFRMUwo+IC0tCj4gIC0jaW5jbHVkZSA8 c3RyaW5nLmg+Cj4gIC0jaW5jbHVkZSAibWQ1LmgiCj4gIC0KPiBAQCAtNzEzLDggKzcxOCw3IEBA IGluZGV4IDZmOGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCj4gIC0vKiBUaGUgcm91dGluZSBNRDVf SW5pdCBpbml0aWFsaXplcyB0aGUgbWVzc2FnZS1kaWdlc3QgY29udGV4dAo+ICAtICAgbWRDb250 ZXh0LiBBbGwgZmllbGRzIGFyZSBzZXQgdG8gemVyby4KPiAgLSAqLwo+IC0tdm9pZCBNRDVfSW5p dCAobWRDb250ZXh0KQo+IC0tTUQ1X0NUWCAqbWRDb250ZXh0Owo+ICstdm9pZCBNRDVfSW5pdCAo TUQ1X0NUWCAqbWRDb250ZXh0KQo+ICAtewo+ICAtICBtZENvbnRleHQtPmlbMF0gPSBtZENvbnRl eHQtPmlbMV0gPSAoVUlOVDQpMDsKPiAgLQo+IEBAIC03MzAsMTAgKzczNCw3IEBAIGluZGV4IDZm OGY3MjA3YzU5Mi4uMDAwMDAwMDAwMDAwCj4gIC0gICBhY2NvdW50IGZvciB0aGUgcHJlc2VuY2Ug b2YgZWFjaCBvZiB0aGUgY2hhcmFjdGVycyBpbkJ1ZlswLi5pbkxlbi0xXQo+ICAtICAgaW4gdGhl IG1lc3NhZ2Ugd2hvc2UgZGlnZXN0IGlzIGJlaW5nIGNvbXB1dGVkLgo+ICAtICovCj4gLS12b2lk IE1ENV9VcGRhdGUgKG1kQ29udGV4dCwgaW5CdWYsIGluTGVuKQo+IC0tTUQ1X0NUWCAqbWRDb250 ZXh0Owo+IC0tdW5zaWduZWQgY2hhciAqaW5CdWY7Cj4gLS11bnNpZ25lZCBpbnQgaW5MZW47Cj4g Ky12b2lkIE1ENV9VcGRhdGUgKE1ENV9DVFggKm1kQ29udGV4dCwgdW5zaWduZWQgY2hhciAqaW5C dWYsIHVuc2lnbmVkIGludCBpbkxlbikKPiAgLXsKPiAgLSAgVUlOVDQgaW5bMTZdOwo+ICAtICBp bnQgbWRpOwo+IEBAIC03NjgsOSArNzY5LDcgQEAgaW5kZXggNmY4ZjcyMDdjNTkyLi4wMDAwMDAw MDAwMDAKPiAgLS8qIFRoZSByb3V0aW5lIE1ENUZpbmFsIHRlcm1pbmF0ZXMgdGhlIG1lc3NhZ2Ut ZGlnZXN0IGNvbXB1dGF0aW9uIGFuZAo+ICAtICAgZW5kcyB3aXRoIHRoZSBkZXNpcmVkIG1lc3Nh Z2UgZGlnZXN0IGluIG1kQ29udGV4dC0+ZGlnZXN0WzAuLi4xNV0uCj4gIC0gKi8KPiAtLXZvaWQg TUQ1X0ZpbmFsIChoYXNoLCBtZENvbnRleHQpCj4gLS11bnNpZ25lZCBjaGFyIGhhc2hbXTsKPiAt LU1ENV9DVFggKm1kQ29udGV4dDsKPiArLXZvaWQgTUQ1X0ZpbmFsICh1bnNpZ25lZCBjaGFyIGhh c2hbXSwgTUQ1X0NUWCAqbWRDb250ZXh0KQo+ICAtewo+ICAtICBVSU5UNCBpblsxNl07Cj4gIC0g IGludCBtZGk7Cj4gQEAgLTgxMSw5ICs4MTAsNyBAQCBpbmRleCA2ZjhmNzIwN2M1OTIuLjAwMDAw MDAwMDAwMAo+ICAtCj4gIC0vKiBCYXNpYyBNRDUgc3RlcC4gVHJhbnNmb3JtcyBidWYgYmFzZWQg b24gaW4uCj4gIC0gKi8KPiAtLXN0YXRpYyB2b2lkIFRyYW5zZm9ybSAoYnVmLCBpbikKPiAtLVVJ TlQ0ICpidWY7Cj4gLS1VSU5UNCAqaW47Cj4gKy1zdGF0aWMgdm9pZCBUcmFuc2Zvcm0gKFVJTlQ0 ICpidWYsIFVJTlQ0ICppbikKPiAgLXsKPiAgLSAgVUlOVDQgYSA9IGJ1ZlswXSwgYiA9IGJ1Zlsx XSwgYyA9IGJ1ZlsyXSwgZCA9IGJ1ZlszXTsKPiAgLQo+IEBAIC05MTYsMTQgKzkxMywxMiBAQCBp bmRleCA2ZjhmNzIwN2M1OTIuLjAwMDAwMDAwMDAwMAo+ICAtICoqIEVuZCBvZiBtZDUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCj4gIC0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKGN1dCkgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiAgLSAqLwo+IC0tI2VuZGlmIC8qIFVTRV9FQVBUTFMgKi8KPiAtLQo+ ICBkaWZmIC0tZ2l0IGEvcHBwZC9tZDUuaCBiL3BwcGQvbWQ1LmgKPiAgZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gLWluZGV4IDE0ZDcxMjE3MWM1ZS4uMDAwMDAwMDAwMDAwCj4gK2luZGV4IDcx ZThiMDBlMmRkZS4uMDAwMDAwMDAwMDAwCj4gIC0tLSBhL3BwcGQvbWQ1LmgKPiAgKysrIC9kZXYv bnVsbAo+IC1AQCAtMSw2OCArMCwwIEBACj4gK0BAIC0xLDY1ICswLDAgQEAKPiAgLS8qCj4gIC0g KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiAgLSAqKiBtZDUuaCAtLSBoZWFkZXIgZmlsZSBmb3IgaW1wbGVtZW50 YXRpb24gb2YgTUQ1ICAgICAgICAgICAgICAgICAgICAqKgo+IEBAIC05NjIsNyArOTU3LDYgQEAg aW5kZXggMTRkNzEyMTcxYzVlLi4wMDAwMDAwMDAwMDAKPiAgLSAqKiBkb2N1bWVudGF0aW9uIGFu ZC9vciBzb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgo+ICAt ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gIC0gKi8KPiAtLSNpZm5kZWYgVVNFX0VBUFRMUwo+ICAtCj4gIC0j aWZuZGVmIF9fTUQ1X0lOQ0xVREVfXwo+ICAtCj4gQEAgLTk5MCw4ICs5ODQsNiBAQCBpbmRleCAx NGQ3MTIxNzFjNWUuLjAwMDAwMDAwMDAwMAo+ICAtCj4gIC0jZGVmaW5lIF9fTUQ1X0lOQ0xVREVf Xwo+ICAtI2VuZGlmIC8qIF9fTUQ1X0lOQ0xVREVfXyAqLwo+IC0tCj4gLS0jZW5kaWYgLyogVVNF X0VBUFRMUyAqLwo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9tZDUuYyBiL3Bw cGQvcGx1Z2lucy9yYWRpdXMvbWQ1LmMKPiAgaW5kZXggOGFmMDNhYTM3MTNlLi45MGQ5YjAyNWQy MTEgMTAwNjQ0Cj4gIC0tLSBhL3BwcGQvcGx1Z2lucy9yYWRpdXMvbWQ1LmMKPiBAQCAtMTAwNiw3 ICs5OTgsNyBAQCBpbmRleCA4YWYwM2FhMzcxM2UuLjkwZDliMDI1ZDIxMSAxMDA2NDQKPiAgIHZv aWQgcmNfbWQ1X2NhbGMgKHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgY2hhciAqaW5w dXQsIHVuc2lnbmVkIGludCBpbmxlbikKPiAgIHsKPiAgZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lu cy9yYWRpdXMvcmFkaXVzLmMgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL3JhZGl1cy5jCj4gLWluZGV4 IDA2ZTAwNTkwYjYzNS4uNjAyODJkOWIyYjljIDEwMDY0NAo+ICtpbmRleCBjNTc5ODMxNjcxOWEu LmQ1ZDYzNjk4YTZkYyAxMDA2NDQKPiAgLS0tIGEvcHBwZC9wbHVnaW5zL3JhZGl1cy9yYWRpdXMu Ywo+ICArKysgYi9wcHBkL3BsdWdpbnMvcmFkaXVzL3JhZGl1cy5jCj4gIEBAIC0zMSw3ICszMSw3 IEBAIHN0YXRpYyBjaGFyIGNvbnN0IFJDU0lEW10gPQo+IEBAIC0xMDE5LDcgKzEwMTEsNyBAQCBp bmRleCAwNmUwMDU5MGI2MzUuLjYwMjgyZDliMmI5YyAxMDA2NDQKPiAgICNlbmRpZgo+ICAgI2lu Y2x1ZGUgInJhZGl1c2NsaWVudC5oIgo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9wbHVnaW5zL3dpbmJp bmQuYyBiL3BwcGQvcGx1Z2lucy93aW5iaW5kLmMKPiAtaW5kZXggYmIwNWFjZDg3ZGNlLi41Zjg3 YTMxN2I2NzcgMTAwNjQ0Cj4gK2luZGV4IDBjMzk1YzM0NzExYS4uNjMyMDY0NWFjOTk0IDEwMDY0 NAo+ICAtLS0gYS9wcHBkL3BsdWdpbnMvd2luYmluZC5jCj4gICsrKyBiL3BwcGQvcGx1Z2lucy93 aW5iaW5kLmMKPiAgQEAgLTM4LDcgKzM4LDcgQEAKPiBAQCAtMTAzMywxMCArMTAyNSwxMCBAQCBp bmRleCBiYjA1YWNkODdkY2UuLjVmODdhMzE3YjY3NyAxMDA2NDQKPiAgICNpbmNsdWRlICJpcGNw LmgiCj4gIGRpZmYgLS1naXQgYS9wcHBkL3NoYTEuYyBiL3BwcGQvc2hhMS5jCj4gIGRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAo+IC1pbmRleCBmNGY5NzVjZjUxNmYuLjAwMDAwMDAwMDAwMAo+ICtp bmRleCA0ZTUxY2VlNTA2YzIuLjAwMDAwMDAwMDAwMAo+ICAtLS0gYS9wcHBkL3NoYTEuYwo+ICAr KysgL2Rldi9udWxsCj4gLUBAIC0xLDE3MCArMCwwIEBACj4gK0BAIC0xLDE3MSArMCwwIEBACj4g IC0vKgo+ICAtICogZnRwOi8vZnRwLmZ1bmV0LmZpL3B1Yi9jcnlwdC9oYXNoL3NoYS9zaGExLmMK PiAgLSAqIAo+IEBAIC0xMDU2LDYgKzEwNDgsNyBAQCBpbmRleCBmNGY5NzVjZjUxNmYuLjAwMDAw MDAwMDAwMAo+ICAtLyogI2RlZmluZSBTSEExSEFORFNPRkYgKiBDb3BpZXMgZGF0YSBiZWZvcmUg bWVzc2luZyB3aXRoIGl0LiAqLwo+ICAtCj4gIC0jaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKy0jaW5j bHVkZSA8dGltZS5oPgo+ICAtI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4JLyogaHRvbmwoKSAqLwo+ ICAtI2luY2x1ZGUgPG5ldC9wcHBfZGVmcy5oPgo+ICAtI2luY2x1ZGUgInNoYTEuaCIKPiBkaWZm IC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDEwMC1wcHBkLW1ha2UtbWFrZWZpbGUtc3lzcm9v dC1hd2FyZS5wYXRjaCBiL3BhdGNoZXMvcHBwLTIuNC45LzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxl LXN5c3Jvb3QtYXdhcmUucGF0Y2gKPiBzaW1pbGFyaXR5IGluZGV4IDYzJQo+IHJlbmFtZSBmcm9t IHBhdGNoZXMvcHBwLTIuNC43LzAxMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3QtYXdhcmUu cGF0Y2gKPiByZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDIwMC1wcHBkLW1ha2UtbWFrZWZp bGUtc3lzcm9vdC1hd2FyZS5wYXRjaAo+IGluZGV4IGMyMDViMTVlZDlhYS4uMTEwMjBlMGNjZTVh IDEwMDY0NAo+IC0tLSBhL3BhdGNoZXMvcHBwLTIuNC43LzAxMDAtcHBwZC1tYWtlLW1ha2VmaWxl LXN5c3Jvb3QtYXdhcmUucGF0Y2gKPiArKysgYi9wYXRjaGVzL3BwcC0yLjQuOS8wMjAwLXBwcGQt bWFrZS1tYWtlZmlsZS1zeXNyb290LWF3YXJlLnBhdGNoCj4gQEAgLTEzLDE0ICsxMywxNCBAQCBT aWduZWQtb2ZmLWJ5OiBNYXJjIEtsZWluZS1CdWRkZSA8bS5rbGVpbmUtYnVkZGVAcGVuZ3V0cm9u aXguZGU+Cj4gIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25p eC5kZT4KPiAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0 cm9uaXguZGU+Cj4gIC0tLQo+IC0gcHBwZC9NYWtlZmlsZS5saW51eCB8IDEwICsrKystLS0tLS0K PiAtIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gKyBw cHBkL01ha2VmaWxlLmxpbnV4IHwgNiArKystLS0KPiArIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gIAo+ICBkaWZmIC0tZ2l0IGEvcHBwZC9NYWtlZmls ZS5saW51eCBiL3BwcGQvTWFrZWZpbGUubGludXgKPiAtaW5kZXggY2I5ZDRmOWRjZjIyLi5lYTBh N2YwMjc2NmIgMTAwNjQ0Cj4gK2luZGV4IGJjMDFlM2ZkMmEyNC4uOWIwMTE5NDYzYzFmIDEwMDY0 NAo+ICAtLS0gYS9wcHBkL01ha2VmaWxlLmxpbnV4Cj4gICsrKyBiL3BwcGQvTWFrZWZpbGUubGlu dXgKPiAtQEAgLTEwMyw4ICsxMDMsOCBAQCBlbmRpZgo+ICtAQCAtMTExLDggKzExMSw4IEBAIGVu ZGlmCj4gICAKPiAgICMgRUFQIFNSUC1TSEExCj4gICBpZmRlZiBVU0VfU1JQCj4gQEAgLTMxLDMy ICszMSwxMiBAQCBpbmRleCBjYjlkNGY5ZGNmMjIuLmVhMGE3ZjAyNzY2YiAxMDA2NDQKPiAgIFRB UkdFVFMJKz0gc3JwLWVudHJ5Cj4gICBFWFRSQUlOU1RBTEwgPSAkKElOU1RBTEwpIC1jIC1tIDU1 NSBzcnAtZW50cnkgJChCSU5ESVIpL3NycC1lbnRyeQo+ICAgTUFOUEFHRVMgKz0gc3JwLWVudHJ5 LjgKPiAtQEAgLTExNCw3ICsxMTQsNyBAQCBlbmRpZgo+IC0gCj4gLSAjIEVBUC1UTFMKPiAtIGlm ZGVmIFVTRV9FQVBUTFMKPiAtLUNGTEFHUyArPSAtRFVTRV9FQVBUTFM9MSAtSS91c3Iva2VyYmVy b3MvaW5jbHVkZQo+IC0rQ0ZMQUdTICs9IC1EVVNFX0VBUFRMUz0xCj4gLSBMSUJTICs9IC1sc3Ns Cj4gLSBQUFBEU1JDICs9IGVhcC10bHMuYwo+IC0gSEVBREVSUyArPSBlYXAtdGxzLmgKPiAtQEAg LTEyNiwxMCArMTI2LDggQEAgQ0ZMQUdTICAgKz0gLURIQVNfU0hBRE9XCj4gLSAjTElCUyAgICAg Kz0gLWxzaGFkb3cgJChMSUJTKQo+IC0gZW5kaWYKPiAtIAo+IC0taWZuZXEgKCQod2lsZGNhcmQg L3Vzci9pbmNsdWRlL2NyeXB0LmgpLCkKPiAtIENGTEFHUyAgKz0gLURIQVZFX0NSWVBUX0g9MQo+ IC0gTElCUwkrPSAtbGNyeXB0Cj4gLS1lbmRpZgo+IC0gCj4gLSBpZmRlZiBVU0VfTElCVVRJTAo+ IC0gQ0ZMQUdTCSs9IC1ESEFWRV9MT0dXVE1QPTEKPiAtQEAgLTEzOCw3ICsxMzYsNyBAQCBlbmRp Zgo+ICtAQCAtMTQ2LDcgKzE0Niw3IEBAIGVuZGlmCj4gICAKPiAgIGlmZGVmIE5FRURERVMKPiAg IGlmbmRlZiBVU0VfQ1JZUFQKPiAtLUNGTEFHUyAgICs9IC1JL3Vzci9pbmNsdWRlL29wZW5zc2wK PiArLUNGTEFHUyAgICs9IC1JJChzaGVsbCAkKENDKSAtLXByaW50LXN5c3Jvb3QpL3Vzci9pbmNs dWRlL29wZW5zc2wKPiAgK0NGTEFHUyAgICs9IC1JJChTWVNST09UKS91c3IvaW5jbHVkZS9vcGVu c3NsCj4gLSBMSUJTICAgICArPSAtbGNyeXB0bwo+ICAgZWxzZQo+ICAgQ0ZMQUdTICAgKz0gLURV U0VfQ1JZUFQ9MQo+ICsgZW5kaWYKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9wcHAtMi40LjcvMDEw MS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1jb25maWd1cmUtY3Jvc3MtYXdhcmUucGF0Y2ggYi9w YXRjaGVzL3BwcC0yLjQuOS8wMjAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRlLWNvbmZpZ3VyZS1j cm9zcy1hd2FyZS5wYXRjaAo+IHNpbWlsYXJpdHkgaW5kZXggODclCj4gcmVuYW1lIGZyb20gcGF0 Y2hlcy9wcHAtMi40LjcvMDEwMS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1jb25maWd1cmUtY3Jv c3MtYXdhcmUucGF0Y2gKPiByZW5hbWUgdG8gcGF0Y2hlcy9wcHAtMi40LjkvMDIwMS1wcHBkLW1h a2UtdGhlLXNlbGYtbWFkZS1jb25maWd1cmUtY3Jvc3MtYXdhcmUucGF0Y2gKPiBpbmRleCBmNTcz NjFhNGM2MzkuLjU5MGNmM2FlNDNjYyAxMDA2NDQKPiAtLS0gYS9wYXRjaGVzL3BwcC0yLjQuNy8w MTAxLXBwcGQtbWFrZS10aGUtc2VsZi1tYWRlLWNvbmZpZ3VyZS1jcm9zcy1hd2FyZS5wYXRjaAo+ ICsrKyBiL3BhdGNoZXMvcHBwLTIuNC45LzAyMDEtcHBwZC1tYWtlLXRoZS1zZWxmLW1hZGUtY29u ZmlndXJlLWNyb3NzLWF3YXJlLnBhdGNoCj4gQEAgLTExLDExICsxMSwxMSBAQCBTaWduZWQtb2Zm LWJ5OiBKdWVyZ2VuIEJlaXNlcnQgPGp1ZXJnZW5Aa3JldXpob2x6ZW4uZGU+Cj4gICAyIGZpbGVz IGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgCj4gIGRpZmYgLS1n aXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiAtaW5kZXggNmE1NWUwZjA4YmU0Li4zODg2NTY0 ZmE0OTUgMTAwNzU1Cj4gK2luZGV4IGIwYzNkMmI0OTEyMi4uNGJjNmExOGZhZDMyIDEwMDc1NQo+ ICAtLS0gYS9jb25maWd1cmUKPiAgKysrIGIvY29uZmlndXJlCj4gLUBAIC0xNCw2ICsxNCwxNiBA QCBTWVNDT05GPS9ldGMKPiAtICMgIGZpCj4gK0BAIC0xNSw2ICsxNSwxNiBAQCByZWxlYXNlPWB1 bmFtZSAtcmAKPiArIGFyY2g9YHVuYW1lIC1tYAo+ICAgc3RhdGU9InVua25vd24iCj4gICAKPiAg K2lmIFsgLW4gJFRBUkdFVF9PUyBdOyB0aGVuCj4gQEAgLTMyLDEwICszMiwxMCBAQCBpbmRleCA2 YTU1ZTBmMDhiZTQuLjM4ODY1NjRmYTQ5NSAxMDA3NTUKPiAgICAgTGludXgpCj4gICAgICAgbWFr ZXh0PSJsaW51eCI7Cj4gIGRpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgg Yi9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKPiAtaW5kZXggYmMyOTk2OGQ0NGM5Li5lMDEw YWQyMTU5ODEgMTAwNjQ0Cj4gK2luZGV4IDY0MDNlM2Q0NzdlMy4uMzc1YmU3NjRlMTlhIDEwMDY0 NAo+ICAtLS0gYS9wcHBkL3BsdWdpbnMvTWFrZWZpbGUubGludXgKPiAgKysrIGIvcHBwZC9wbHVn aW5zL01ha2VmaWxlLmxpbnV4Cj4gLUBAIC00Nyw1ICs0Nyw1IEBAIGNsZWFuOgo+ICtAQCAtNDks NSArNDksNSBAQCBjbGVhbjoKPiAgIAlmb3IgZCBpbiAkKFNVQkRJUlMpOyBkbyAkKE1BS0UpICQo TUZMQUdTKSAtQyAkJGQgY2xlYW4gfHwgZXhpdCAkJD87IGRvbmUKPiAgIAo+ICAgZGVwZW5kOgo+ IGRpZmYgLS1naXQgYS9wYXRjaGVzL3BwcC0yLjQuOS9zZXJpZXMgYi9wYXRjaGVzL3BwcC0yLjQu OS9zZXJpZXMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDAy OGYwODkyOTkyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvcHBwLTIuNC45L3Nlcmll cwo+IEBAIC0wLDAgKzEsMTcgQEAKPiArIyBnZW5lcmF0ZWQgYnkgZ2l0LXB0eC1wYXRjaGVzCj4g KyN0YWc6YmFzZSAtLXN0YXJ0LW51bWJlciAxCj4gKyN0YWc6dXBzdHJlYW0gLS1zdGFydC1udW1i ZXIgMQo+ICswMDAxLWNvbmZpZ3VyZS1BbGxvdy1jb21tYXMtaW4tdGhlLUNGTEFHUy0yMjAucGF0 Y2gKPiArMDAwMi1wcHBkLUZpeC1jb21waWxhdGlvbi13aXRoLW9sZGVyLWdsaWJjLW9yLWtlcm5l bC1oZWFkLnBhdGNoCj4gKyN0YWc6ZGViaWFuIC0tc3RhcnQtbnVtYmVyIDEwMAo+ICswMTAwLXN1 cHBvcnQtYnVpbGRpbmctcHBwZHVtcC13aXRoLXRoZS1zeXN0ZW0temxpYi5wYXRjaAo+ICswMTAx LWRpc2FibGUtdW5uZWVkZWQtY29kZS1pbi10aGUtcHBwb2F0bS1wbHVnaW4ucGF0Y2gKPiArMDEw Mi1wcHBvZV9ub2Fkcy5wYXRjaAo+ICswMTAzLUZvcndhcmRlZC1odHRwcy1naXRodWIuY29tLXBh dWx1c21hY2stcHBwLWlzc3Vlcy0xODcucGF0Y2gKPiArMDEwNC1yZXNvbHYuY29uZl9ub19sb2cu cGF0Y2gKPiArMDEwNS1EZWJpYW4tc3BlY2lmaWMtY2hhbmdlcy5wYXRjaAo+ICswMTA2LVJlcGxh Y2UtdmVuZG9yZWQtaGFzaC1mdW5jdGlvbnMtd2l0aC1saWJjcnlwdG8ucGF0Y2gKPiArI3RhZzpw dHggLS1zdGFydC1udW1iZXIgMjAwCj4gKzAyMDAtcHBwZC1tYWtlLW1ha2VmaWxlLXN5c3Jvb3Qt YXdhcmUucGF0Y2gKPiArMDIwMS1wcHBkLW1ha2UtdGhlLXNlbGYtbWFkZS1jb25maWd1cmUtY3Jv c3MtYXdhcmUucGF0Y2gKPiArIyA5YzkwMTZhODk1NmNmOGMwZGM4NGVlOGRiZTgwM2NmMyAgLSBn aXQtcHR4LXBhdGNoZXMgbWFnaWMKPiBkaWZmIC0tZ2l0IGEvcnVsZXMvcHBwLm1ha2UgYi9ydWxl cy9wcHAubWFrZQo+IGluZGV4IDhiZmI4OGI1NTkwNC4uOTMyOTEwYzk4YjAyIDEwMDY0NAo+IC0t LSBhL3J1bGVzL3BwcC5tYWtlCj4gKysrIGIvcnVsZXMvcHBwLm1ha2UKPiBAQCAtMTYsOCArMTYs OCBAQCBQQUNLQUdFUy0kKFBUWENPTkZfUFBQKSArPSBwcHAKPiAgIwo+ICAjIFBhdGhzIGFuZCBu YW1lcwo+ICAjCj4gLVBQUF9WRVJTSU9OCTo9IDIuNC43Cj4gLVBQUF9NRDUJCTo9IDc4ODE4ZjQw ZTZkMzNhMWQxZGU2OGExNTUxZjY1OTVhCj4gK1BQUF9WRVJTSU9OCTo9IDIuNC45Cj4gK1BQUF9N RDUJCTo9IGM4ODE1M2FlM2QxNmFlMTE0MTUyY2QzYzE1YzczMDFkCj4gIFBQUAkJOj0gcHBwLSQo UFBQX1ZFUlNJT04pCj4gIFBQUF9TVUZGSVgJOj0gdGFyLmd6Cj4gIFBQUF9VUkwJCTo9IGh0dHA6 Ly9mdHAuc2FtYmEub3JnL3B1Yi9wcHAvJChQUFApLiQoUFBQX1NVRkZJWCkKPiBAQCAtNTUsNyAr NTUsNyBAQCBQUFBfU0hBUkVEX0lOU1RfUEFUSCA6PSAvdXNyL2xpYi9wcHBkLyQoUFBQX1ZFUlNJ T04pCj4gICQoU1RBVEVESVIpL3BwcC5wcmVwYXJlOgo+ICAJQCQoY2FsbCB0YXJnZXRpbmZvKQo+ ICAJQGNkICQoUFBQX0RJUikgJiYgJChQUFBfUEFUSCkgJChQUFBfQ09ORl9FTlYpIFwKPiAtCQku L2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0vZXRjCj4gKwkJLi9jb25maWd1 cmUgLS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWNjPSQoQ1JPU1NfQ0MpCj4gIAo+ ICAJQCQoY2FsbCBkaXNhYmxlX3NoLCQoUFBQX0RJUikvcHBwZC9NYWtlZmlsZSxVU0VfUEFNPXkp Cj4gIAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHR4 ZGlzdCBtYWlsaW5nIGxpc3QKcHR4ZGlzdEBwZW5ndXRyb25peC5kZQpUbyB1bnN1YnNjcmliZSwg c2VuZCBhIG1haWwgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIgdG8gcHR4ZGlzdC1yZXF1ZXN0 QHBlbmd1dHJvbml4LmRlCg==