From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/5952 Path: news.gmane.org!not-for-mail From: Jens Gustedt Newsgroups: gmane.linux.lib.musl.general Subject: C threads, v. 6.2 Date: Thu, 28 Aug 2014 00:11:45 +0200 Message-ID: <1409177505.4476.75.camel@eris.loria.fr> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-hgsa8+YDmt4sXbQ5ALzV" X-Trace: ger.gmane.org 1409177516 7298 80.91.229.3 (27 Aug 2014 22:11:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 27 Aug 2014 22:11:56 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-5959-gllmg-musl=m.gmane.org@lists.openwall.com Thu Aug 28 00:11:50 2014 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1XMlRV-0004fb-HL for gllmg-musl@plane.gmane.org; Thu, 28 Aug 2014 00:11:49 +0200 Original-Received: (qmail 2040 invoked by uid 550); 27 Aug 2014 22:11:48 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 2031 invoked from network); 27 Aug 2014 22:11:48 -0000 X-IronPort-AV: E=Sophos;i="5.04,414,1406584800"; d="scan'";a="91768771" Face: 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 X-Mailer: Evolution 3.4.4-3 Xref: news.gmane.org gmane.linux.lib.musl.general:5952 Archived-At: --=-hgsa8+YDmt4sXbQ5ALzV Content-Type: multipart/mixed; boundary="=-L0FHj8RBw/GABhtu/XLb" --=-L0FHj8RBw/GABhtu/XLb Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Hello, so here is a "conservative" version that I would consider a candidate for release. - the "magic" constants are now those that Rich proposed to the glibc people. As a consequence many C thread wrappers are no tail calls to the POSIX functions but consist in a switch statement that translates the error conventions from POSIX to C. - this is directly based on the POSIX control structures. Since now these use private futexes properly, there is no emergency to implement C control structures seperately - the biggest code change is for pthread_create.c. Most common code has moved to a new TU pthread_exit.c. pthread_create and thread_create are implemented in two different TU. - a lot of minor changes to avoid dragging in symbols in the wrong namespaces. Jens --=20 :: INRIA Nancy Grand Est ::: AlGorille ::: ICube/ICPS ::: :: ::::::::::::::: office Strasbourg : +33 368854536 :: :: :::::::::::::::::::::: gsm France : +33 651400183 :: :: ::::::::::::::: gsm international : +49 15737185122 :: :: http://icube-icps.unistra.fr/index.php/Jens_Gustedt :: --=-L0FHj8RBw/GABhtu/XLb Content-Disposition: attachment; filename="thrd11-v6.2.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="thrd11-v6.2.patch"; charset="ISO-8859-1" ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2JpdHMvYWxsdHlwZXMuaC5pbiBiL2FyY2gvYXJtL2JpdHMv YWxsdHlwZXMuaC5pbg0KaW5kZXggMTgzYzRjNC4uMzMzZDQzZiAxMDA2NDQNCi0tLSBhL2FyY2gv YXJtL2JpdHMvYWxsdHlwZXMuaC5pbg0KKysrIGIvYXJjaC9hcm0vYml0cy9hbGx0eXBlcy5oLmlu DQpAQCAtMTksNyArMTksNyBAQCBUWVBFREVGIGxvbmcgdGltZV90Ow0KIFRZUEVERUYgbG9uZyBz dXNlY29uZHNfdDsNCiANCiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs5XTsgdW5z aWduZWQgX19zWzldOyB9IF9fdTsgfSBwdGhyZWFkX2F0dHJfdDsNCi1UWVBFREVGIHN0cnVjdCB7 IHVuaW9uIHsgaW50IF9faVs2XTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19wWzZdOyB9IF9f dTsgfSBwdGhyZWFkX211dGV4X3Q7DQotVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lb MTJdOyB2b2lkICpfX3BbMTJdOyB9IF9fdTsgfSBwdGhyZWFkX2NvbmRfdDsNCitUWVBFREVGIHN0 cnVjdCB7IHVuaW9uIHsgaW50IF9faVs2XTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19wWzZd OyB9IF9fdTsgfSBfX3B0aHJlYWRfbXV0ZXhfdDsNCitUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsg aW50IF9faVsxMl07IHZvaWQgKl9fcFsxMl07IH0gX191OyB9IF9fcHRocmVhZF9jb25kX3Q7DQog VFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbOF07IHZvaWQgKl9fcFs4XTsgfSBfX3U7 IH0gcHRocmVhZF9yd2xvY2tfdDsNCiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs1 XTsgdm9pZCAqX19wWzVdOyB9IF9fdTsgfSBwdGhyZWFkX2JhcnJpZXJfdDsNCmRpZmYgLS1naXQg YS9hcmNoL2kzODYvYml0cy9hbGx0eXBlcy5oLmluIGIvYXJjaC9pMzg2L2JpdHMvYWxsdHlwZXMu aC5pbg0KaW5kZXggOGJhOGY2Zi4uNjdjY2UzYiAxMDA2NDQNCi0tLSBhL2FyY2gvaTM4Ni9iaXRz L2FsbHR5cGVzLmguaW4NCisrKyBiL2FyY2gvaTM4Ni9iaXRzL2FsbHR5cGVzLmguaW4NCkBAIC0z Myw3ICszMyw3IEBAIFRZUEVERUYgbG9uZyB0aW1lX3Q7DQogVFlQRURFRiBsb25nIHN1c2Vjb25k c190Ow0KIA0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzldOyB1bnNpZ25lZCBf X3NbOV07IH0gX191OyB9IHB0aHJlYWRfYXR0cl90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5pb24g eyBpbnQgX19pWzZdOyB2b2xhdGlsZSB2b2lkICp2b2xhdGlsZSBfX3BbNl07IH0gX191OyB9IHB0 aHJlYWRfbXV0ZXhfdDsNCi1UWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVsxMl07IHZv aWQgKl9fcFsxMl07IH0gX191OyB9IHB0aHJlYWRfY29uZF90Ow0KK1RZUEVERUYgc3RydWN0IHsg dW5pb24geyBpbnQgX19pWzZdOyB2b2xhdGlsZSB2b2lkICp2b2xhdGlsZSBfX3BbNl07IH0gX191 OyB9IF9fcHRocmVhZF9tdXRleF90Ow0KK1RZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19p WzEyXTsgdm9pZCAqX19wWzEyXTsgfSBfX3U7IH0gX19wdGhyZWFkX2NvbmRfdDsNCiBUWVBFREVG IHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs4XTsgdm9pZCAqX19wWzhdOyB9IF9fdTsgfSBwdGhy ZWFkX3J3bG9ja190Ow0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzVdOyB2b2lk ICpfX3BbNV07IH0gX191OyB9IHB0aHJlYWRfYmFycmllcl90Ow0KZGlmZiAtLWdpdCBhL2FyY2gv bWljcm9ibGF6ZS9iaXRzL2FsbHR5cGVzLmguaW4gYi9hcmNoL21pY3JvYmxhemUvYml0cy9hbGx0 eXBlcy5oLmluDQppbmRleCBhMDNlMWI4Li5iMjdhOGZlIDEwMDY0NA0KLS0tIGEvYXJjaC9taWNy b2JsYXplL2JpdHMvYWxsdHlwZXMuaC5pbg0KKysrIGIvYXJjaC9taWNyb2JsYXplL2JpdHMvYWxs dHlwZXMuaC5pbg0KQEAgLTE5LDcgKzE5LDcgQEAgVFlQRURFRiBsb25nIHRpbWVfdDsNCiBUWVBF REVGIGxvbmcgc3VzZWNvbmRzX3Q7DQogDQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBf X2lbOV07IHVuc2lnbmVkIF9fc1s5XTsgfSBfX3U7IH0gcHRocmVhZF9hdHRyX3Q7DQotVFlQRURF RiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9f cFs2XTsgfSBfX3U7IH0gcHRocmVhZF9tdXRleF90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5pb24g eyBpbnQgX19pWzEyXTsgdm9pZCAqX19wWzEyXTsgfSBfX3U7IH0gcHRocmVhZF9jb25kX3Q7DQor VFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0 aWxlIF9fcFs2XTsgfSBfX3U7IH0gX19wdGhyZWFkX211dGV4X3Q7DQorVFlQRURFRiBzdHJ1Y3Qg eyB1bmlvbiB7IGludCBfX2lbMTJdOyB2b2lkICpfX3BbMTJdOyB9IF9fdTsgfSBfX3B0aHJlYWRf Y29uZF90Ow0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzhdOyB2b2lkICpfX3Bb OF07IH0gX191OyB9IHB0aHJlYWRfcndsb2NrX3Q7DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7 IGludCBfX2lbNV07IHZvaWQgKl9fcFs1XTsgfSBfX3U7IH0gcHRocmVhZF9iYXJyaWVyX3Q7DQpk aWZmIC0tZ2l0IGEvYXJjaC9taXBzL2JpdHMvYWxsdHlwZXMuaC5pbiBiL2FyY2gvbWlwcy9iaXRz L2FsbHR5cGVzLmguaW4NCmluZGV4IGEwM2UxYjguLmIyN2E4ZmUgMTAwNjQ0DQotLS0gYS9hcmNo L21pcHMvYml0cy9hbGx0eXBlcy5oLmluDQorKysgYi9hcmNoL21pcHMvYml0cy9hbGx0eXBlcy5o LmluDQpAQCAtMTksNyArMTksNyBAQCBUWVBFREVGIGxvbmcgdGltZV90Ow0KIFRZUEVERUYgbG9u ZyBzdXNlY29uZHNfdDsNCiANCiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs5XTsg dW5zaWduZWQgX19zWzldOyB9IF9fdTsgfSBwdGhyZWFkX2F0dHJfdDsNCi1UWVBFREVGIHN0cnVj dCB7IHVuaW9uIHsgaW50IF9faVs2XTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19wWzZdOyB9 IF9fdTsgfSBwdGhyZWFkX211dGV4X3Q7DQotVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBf X2lbMTJdOyB2b2lkICpfX3BbMTJdOyB9IF9fdTsgfSBwdGhyZWFkX2NvbmRfdDsNCitUWVBFREVG IHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs2XTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19w WzZdOyB9IF9fdTsgfSBfX3B0aHJlYWRfbXV0ZXhfdDsNCitUWVBFREVGIHN0cnVjdCB7IHVuaW9u IHsgaW50IF9faVsxMl07IHZvaWQgKl9fcFsxMl07IH0gX191OyB9IF9fcHRocmVhZF9jb25kX3Q7 DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbOF07IHZvaWQgKl9fcFs4XTsgfSBf X3U7IH0gcHRocmVhZF9yd2xvY2tfdDsNCiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9f aVs1XTsgdm9pZCAqX19wWzVdOyB9IF9fdTsgfSBwdGhyZWFkX2JhcnJpZXJfdDsNCmRpZmYgLS1n aXQgYS9hcmNoL29yMWsvYml0cy9hbGx0eXBlcy5oLmluIGIvYXJjaC9vcjFrL2JpdHMvYWxsdHlw ZXMuaC5pbg0KaW5kZXggMTgzYzRjNC4uMzMzZDQzZiAxMDA2NDQNCi0tLSBhL2FyY2gvb3Ixay9i aXRzL2FsbHR5cGVzLmguaW4NCisrKyBiL2FyY2gvb3Ixay9iaXRzL2FsbHR5cGVzLmguaW4NCkBA IC0xOSw3ICsxOSw3IEBAIFRZUEVERUYgbG9uZyB0aW1lX3Q7DQogVFlQRURFRiBsb25nIHN1c2Vj b25kc190Ow0KIA0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzldOyB1bnNpZ25l ZCBfX3NbOV07IH0gX191OyB9IHB0aHJlYWRfYXR0cl90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5p b24geyBpbnQgX19pWzZdOyB2b2xhdGlsZSB2b2lkICp2b2xhdGlsZSBfX3BbNl07IH0gX191OyB9 IHB0aHJlYWRfbXV0ZXhfdDsNCi1UWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVsxMl07 IHZvaWQgKl9fcFsxMl07IH0gX191OyB9IHB0aHJlYWRfY29uZF90Ow0KK1RZUEVERUYgc3RydWN0 IHsgdW5pb24geyBpbnQgX19pWzZdOyB2b2xhdGlsZSB2b2lkICp2b2xhdGlsZSBfX3BbNl07IH0g X191OyB9IF9fcHRocmVhZF9tdXRleF90Ow0KK1RZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQg X19pWzEyXTsgdm9pZCAqX19wWzEyXTsgfSBfX3U7IH0gX19wdGhyZWFkX2NvbmRfdDsNCiBUWVBF REVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs4XTsgdm9pZCAqX19wWzhdOyB9IF9fdTsgfSBw dGhyZWFkX3J3bG9ja190Ow0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzVdOyB2 b2lkICpfX3BbNV07IH0gX191OyB9IHB0aHJlYWRfYmFycmllcl90Ow0KZGlmZiAtLWdpdCBhL2Fy Y2gvcG93ZXJwYy9iaXRzL2FsbHR5cGVzLmguaW4gYi9hcmNoL3Bvd2VycGMvYml0cy9hbGx0eXBl cy5oLmluDQppbmRleCBlZTdmMTM3Li41N2Q3YzA3IDEwMDY0NA0KLS0tIGEvYXJjaC9wb3dlcnBj L2JpdHMvYWxsdHlwZXMuaC5pbg0KKysrIGIvYXJjaC9wb3dlcnBjL2JpdHMvYWxsdHlwZXMuaC5p bg0KQEAgLTE5LDcgKzE5LDcgQEAgVFlQRURFRiBsb25nIHRpbWVfdDsNCiBUWVBFREVGIGxvbmcg c3VzZWNvbmRzX3Q7DQogDQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbOV07IHVu c2lnbmVkIF9fc1s5XTsgfSBfX3U7IH0gcHRocmVhZF9hdHRyX3Q7DQotVFlQRURFRiBzdHJ1Y3Qg eyB1bmlvbiB7IGludCBfX2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs2XTsgfSBf X3U7IH0gcHRocmVhZF9tdXRleF90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19p WzEyXTsgdm9pZCAqX19wWzEyXTsgfSBfX3U7IH0gcHRocmVhZF9jb25kX3Q7DQorVFlQRURFRiBz dHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs2 XTsgfSBfX3U7IH0gX19wdGhyZWFkX211dGV4X3Q7DQorVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7 IGludCBfX2lbMTJdOyB2b2lkICpfX3BbMTJdOyB9IF9fdTsgfSBfX3B0aHJlYWRfY29uZF90Ow0K IFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzhdOyB2b2lkICpfX3BbOF07IH0gX191 OyB9IHB0aHJlYWRfcndsb2NrX3Q7DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lb NV07IHZvaWQgKl9fcFs1XTsgfSBfX3U7IH0gcHRocmVhZF9iYXJyaWVyX3Q7DQpkaWZmIC0tZ2l0 IGEvYXJjaC9zaC9iaXRzL2FsbHR5cGVzLmguaW4gYi9hcmNoL3NoL2JpdHMvYWxsdHlwZXMuaC5p bg0KaW5kZXggZWU3ZjEzNy4uNTdkN2MwNyAxMDA2NDQNCi0tLSBhL2FyY2gvc2gvYml0cy9hbGx0 eXBlcy5oLmluDQorKysgYi9hcmNoL3NoL2JpdHMvYWxsdHlwZXMuaC5pbg0KQEAgLTE5LDcgKzE5 LDcgQEAgVFlQRURFRiBsb25nIHRpbWVfdDsNCiBUWVBFREVGIGxvbmcgc3VzZWNvbmRzX3Q7DQog DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbOV07IHVuc2lnbmVkIF9fc1s5XTsg fSBfX3U7IH0gcHRocmVhZF9hdHRyX3Q7DQotVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBf X2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs2XTsgfSBfX3U7IH0gcHRocmVhZF9t dXRleF90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzEyXTsgdm9pZCAqX19w WzEyXTsgfSBfX3U7IH0gcHRocmVhZF9jb25kX3Q7DQorVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7 IGludCBfX2lbNl07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs2XTsgfSBfX3U7IH0gX19w dGhyZWFkX211dGV4X3Q7DQorVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbMTJdOyB2 b2lkICpfX3BbMTJdOyB9IF9fdTsgfSBfX3B0aHJlYWRfY29uZF90Ow0KIFRZUEVERUYgc3RydWN0 IHsgdW5pb24geyBpbnQgX19pWzhdOyB2b2lkICpfX3BbOF07IH0gX191OyB9IHB0aHJlYWRfcnds b2NrX3Q7DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbNV07IHZvaWQgKl9fcFs1 XTsgfSBfX3U7IH0gcHRocmVhZF9iYXJyaWVyX3Q7DQpkaWZmIC0tZ2l0IGEvYXJjaC94MzIvYml0 cy9hbGx0eXBlcy5oLmluIGIvYXJjaC94MzIvYml0cy9hbGx0eXBlcy5oLmluDQppbmRleCA4ZTM5 NmM5Li4wMmQ5ZTFjIDEwMDY0NA0KLS0tIGEvYXJjaC94MzIvYml0cy9hbGx0eXBlcy5oLmluDQor KysgYi9hcmNoL3gzMi9iaXRzL2FsbHR5cGVzLmguaW4NCkBAIC0yNCw3ICsyNCw3IEBAIFRZUEVE RUYgbG9uZyBsb25nIHRpbWVfdDsNCiBUWVBFREVGIGxvbmcgbG9uZyBzdXNlY29uZHNfdDsNCiAN CiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVsxNF07IHVuc2lnbmVkIGxvbmcgX19z WzddOyB9IF9fdTsgfSBwdGhyZWFkX2F0dHJfdDsNCi1UWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsg aW50IF9faVsxMF07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs1XTsgfSBfX3U7IH0gcHRo cmVhZF9tdXRleF90Ow0KLVRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzEyXTsgdm9p ZCAqX19wWzZdOyB9IF9fdTsgfSBwdGhyZWFkX2NvbmRfdDsNCitUWVBFREVGIHN0cnVjdCB7IHVu aW9uIHsgaW50IF9faVsxMF07IHZvbGF0aWxlIHZvaWQgKnZvbGF0aWxlIF9fcFs1XTsgfSBfX3U7 IH0gX19wdGhyZWFkX211dGV4X3Q7DQorVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lb MTJdOyB2b2lkICpfX3BbNl07IH0gX191OyB9IF9fcHRocmVhZF9jb25kX3Q7DQogVFlQRURFRiBz dHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbMTRdOyB2b2lkICpfX3BbN107IH0gX191OyB9IHB0aHJl YWRfcndsb2NrX3Q7DQogVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lbOF07IHZvaWQg Kl9fcFs0XTsgfSBfX3U7IH0gcHRocmVhZF9iYXJyaWVyX3Q7DQpkaWZmIC0tZ2l0IGEvYXJjaC94 ODZfNjQvYml0cy9hbGx0eXBlcy5oLmluIGIvYXJjaC94ODZfNjQvYml0cy9hbGx0eXBlcy5oLmlu DQppbmRleCA3YjRmM2U3Li5lYTlmYzY3IDEwMDY0NA0KLS0tIGEvYXJjaC94ODZfNjQvYml0cy9h bGx0eXBlcy5oLmluDQorKysgYi9hcmNoL3g4Nl82NC9iaXRzL2FsbHR5cGVzLmguaW4NCkBAIC0y NCw3ICsyNCw3IEBAIFRZUEVERUYgbG9uZyB0aW1lX3Q7DQogVFlQRURFRiBsb25nIHN1c2Vjb25k c190Ow0KIA0KIFRZUEVERUYgc3RydWN0IHsgdW5pb24geyBpbnQgX19pWzE0XTsgdW5zaWduZWQg bG9uZyBfX3NbN107IH0gX191OyB9IHB0aHJlYWRfYXR0cl90Ow0KLVRZUEVERUYgc3RydWN0IHsg dW5pb24geyBpbnQgX19pWzEwXTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19wWzVdOyB9IF9f dTsgfSBwdGhyZWFkX211dGV4X3Q7DQotVFlQRURFRiBzdHJ1Y3QgeyB1bmlvbiB7IGludCBfX2lb MTJdOyB2b2lkICpfX3BbNl07IH0gX191OyB9IHB0aHJlYWRfY29uZF90Ow0KK1RZUEVERUYgc3Ry dWN0IHsgdW5pb24geyBpbnQgX19pWzEwXTsgdm9sYXRpbGUgdm9pZCAqdm9sYXRpbGUgX19wWzVd OyB9IF9fdTsgfSBfX3B0aHJlYWRfbXV0ZXhfdDsNCitUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsg aW50IF9faVsxMl07IHZvaWQgKl9fcFs2XTsgfSBfX3U7IH0gX19wdGhyZWFkX2NvbmRfdDsNCiBU WVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVsxNF07IHZvaWQgKl9fcFs3XTsgfSBfX3U7 IH0gcHRocmVhZF9yd2xvY2tfdDsNCiBUWVBFREVGIHN0cnVjdCB7IHVuaW9uIHsgaW50IF9faVs4 XTsgdm9pZCAqX19wWzRdOyB9IF9fdTsgfSBwdGhyZWFkX2JhcnJpZXJfdDsNCmRpZmYgLS1naXQg YS9pbmNsdWRlL2FsbHR5cGVzLmguaW4gYi9pbmNsdWRlL2FsbHR5cGVzLmguaW4NCmluZGV4IGM0 Y2E1ZDUuLjVlMjkwNDYgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2FsbHR5cGVzLmguaW4NCisrKyBi L2luY2x1ZGUvYWxsdHlwZXMuaC5pbg0KQEAgLTQzLDEzICs0MywyNCBAQCBUWVBFREVGIHVuc2ln bmVkIGdpZF90Ow0KIFRZUEVERUYgaW50IGtleV90Ow0KIFRZUEVERUYgdW5zaWduZWQgdXNlY29u ZHNfdDsNCiANCisvKiBUaGUgcGFpcnMgb2YgZXF1aXZhbGVudCBkZWZpbml0aW9ucyBmb3IgcHRo cmVhZCBhbmQgQyB0aHJlYWQgdHlwZXMNCisgKiBzaG91bGQgYWx3YXlzIGJlIGtlcHQgaW4gc3lu Yy4gKi8NCiAjaWZkZWYgX19jcGx1c3BsdXMNCiBUWVBFREVGIHVuc2lnbmVkIGxvbmcgcHRocmVh ZF90Ow0KK1RZUEVERUYgdW5zaWduZWQgbG9uZyB0aHJkX3Q7DQogI2Vsc2UNCiBUWVBFREVGIHN0 cnVjdCBfX3B0aHJlYWQgKiBwdGhyZWFkX3Q7DQorVFlQRURFRiBzdHJ1Y3QgX19wdGhyZWFkICog dGhyZF90Ow0KICNlbmRpZg0KIFRZUEVERUYgaW50IHB0aHJlYWRfb25jZV90Ow0KK1RZUEVERUYg aW50IG9uY2VfZmxhZzsNCiBUWVBFREVGIHVuc2lnbmVkIHB0aHJlYWRfa2V5X3Q7DQorVFlQRURF RiB1bnNpZ25lZCB0c3NfdDsNCitUWVBFREVGIF9fcHRocmVhZF9jb25kX3QgcHRocmVhZF9jb25k X3Q7DQorVFlQRURFRiBfX3B0aHJlYWRfY29uZF90IGNuZF90Ow0KK1RZUEVERUYgX19wdGhyZWFk X211dGV4X3QgcHRocmVhZF9tdXRleF90Ow0KK1RZUEVERUYgX19wdGhyZWFkX211dGV4X3QgbXR4 X3Q7DQorDQogVFlQRURFRiBpbnQgcHRocmVhZF9zcGlubG9ja190Ow0KIFRZUEVERUYgc3RydWN0 IHsgdW5zaWduZWQgX19hdHRyOyB9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7DQogVFlQRURFRiBzdHJ1 Y3QgeyB1bnNpZ25lZCBfX2F0dHI7IH0gcHRocmVhZF9jb25kYXR0cl90Ow0KZGlmZiAtLWdpdCBh L2luY2x1ZGUvcHRocmVhZC5oIGIvaW5jbHVkZS9wdGhyZWFkLmgNCmluZGV4IGY3Yzk1NjguLjBl OGVlYWEgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL3B0aHJlYWQuaA0KKysrIGIvaW5jbHVkZS9wdGhy ZWFkLmgNCkBAIC0xNiw2ICsxNiw4IEBAIGV4dGVybiAiQyIgew0KICNkZWZpbmUgX19ORUVEX3B0 aHJlYWRfY29uZGF0dHJfdA0KICNkZWZpbmUgX19ORUVEX3B0aHJlYWRfcndsb2NrYXR0cl90DQog I2RlZmluZSBfX05FRURfcHRocmVhZF9iYXJyaWVyYXR0cl90DQorI2RlZmluZSBfX05FRURfX19w dGhyZWFkX211dGV4X3QNCisjZGVmaW5lIF9fTkVFRF9fX3B0aHJlYWRfY29uZF90DQogI2RlZmlu ZSBfX05FRURfcHRocmVhZF9tdXRleF90DQogI2RlZmluZSBfX05FRURfcHRocmVhZF9jb25kX3QN CiAjZGVmaW5lIF9fTkVFRF9wdGhyZWFkX3J3bG9ja190DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9z eXMvdHlwZXMuaCBiL2luY2x1ZGUvc3lzL3R5cGVzLmgNCmluZGV4IGYwMGRiMDMuLmEzZjcyNzEg MTAwNjQ0DQotLS0gYS9pbmNsdWRlL3N5cy90eXBlcy5oDQorKysgYi9pbmNsdWRlL3N5cy90eXBl cy5oDQpAQCAtMzYsNiArMzYsOCBAQCBleHRlcm4gIkMiIHsNCiAjZGVmaW5lIF9fTkVFRF9wdGhy ZWFkX2NvbmRhdHRyX3QNCiAjZGVmaW5lIF9fTkVFRF9wdGhyZWFkX3J3bG9ja2F0dHJfdA0KICNk ZWZpbmUgX19ORUVEX3B0aHJlYWRfYmFycmllcmF0dHJfdA0KKyNkZWZpbmUgX19ORUVEX19fcHRo cmVhZF9tdXRleF90DQorI2RlZmluZSBfX05FRURfX19wdGhyZWFkX2NvbmRfdA0KICNkZWZpbmUg X19ORUVEX3B0aHJlYWRfbXV0ZXhfdA0KICNkZWZpbmUgX19ORUVEX3B0aHJlYWRfY29uZF90DQog I2RlZmluZSBfX05FRURfcHRocmVhZF9yd2xvY2tfdA0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGhy ZWFkcy5oIGIvaW5jbHVkZS90aHJlYWRzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwLi5jYzM5NmMzDQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL3RocmVhZHMuaA0K QEAgLTAsMCArMSwxNzAgQEANCisjaWZuZGVmIF9USFJFQURTX0gNCisjZGVmaW5lIF9USFJFQURT X0gNCisNCisvKiBUaGlzIG9uZSBpcyBleHBsaWNpdGx5IGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQu ICovDQorI2luY2x1ZGUgPHRpbWUuaD4NCisNCisjaWZkZWYgX19HTlVDX18NCisjZGVmaW5lIF9O b25udWxsKC4uLikgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oX19WQV9BUkdTX18pKSkNCisj ZWxzZQ0KKyNkZWZpbmUgX05vbm51bGwoLi4uKQ0KKyNlbmRpZg0KKw0KKw0KKw0KKyNpZmRlZiBf X2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZg0KKw0KKyNkZWZpbmUgX19ORUVEX19f cHRocmVhZF9jb25kX3QNCisjZGVmaW5lIF9fTkVFRF9fX3B0aHJlYWRfbXV0ZXhfdA0KKyNkZWZp bmUgX19ORUVEX2NuZF90DQorI2RlZmluZSBfX05FRURfbXR4X3QNCisjZGVmaW5lIF9fTkVFRF9v bmNlX2ZsYWcNCisjZGVmaW5lIF9fTkVFRF90aHJkX3QNCisjZGVmaW5lIF9fTkVFRF90c3NfdA0K Kw0KKyNpbmNsdWRlIDxiaXRzL2FsbHR5cGVzLmg+DQorDQordHlwZWRlZiBpbnQgKCp0aHJkX3N0 YXJ0X3QpKHZvaWQqKTsNCit0eXBlZGVmIHZvaWQgKCp0c3NfZHRvcl90KSh2b2lkKik7DQorDQor DQorI2lmbmRlZiBfX1RIUkRfRVhQRVJJTUVOVEFMDQorIyBkZWZpbmUgX19USFJEX0VYUEVSSU1F TlRBTCAxDQorI2VuZGlmDQorDQorICAvKiBUaGUgZm9sbG93aW5nIGxpc3Qgb2YgOSBpbnRlZ2Vy IGNvbnN0YW50cyBtYWtlcyB1cCBmb3IgdGhlIGJpbmFyeQ0KKyAgICAgY29tcGF0aWJpbGl0eSBv ZiB0aGlzIEMgdGhyZWFkIGltcGxlbWVudGF0aW9uLiBZb3UgbXVzdCBuZXZlcg0KKyAgICAgbGlu ayBjb2RlIGFnYWluc3QgdmVyc2lvbnMgb2YgdGhlIEMgbGlicmFyeSB0aGF0IGRvIG5vdCBhZ3Jl ZQ0KKyAgICAgdXBvbiB0aGVzZSBBQkkgcGFyYW1ldGVycy4NCisNCisgICAgIEFkZGl0aW9uYWxs eSB0aGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgNSB0eXBlcyBoYXZlDQorICAg ICB0aGUgc2FtZSBzaXplIGFjcm9zcyBDIGxpYnJhcmllcyBhbmQgdGhhdCB0aGVzZSB0eXBlcyBj YW4gYmUNCisgICAgIGluaXRpYWxpemVkIGJ5IHRoZSBkZWZhdWx0IGluaXRpYWxpemVyLg0KKw0K KyAgICAgVGhlIHZhbHVlcyBmb3IgdGhlIDkgcGFyYW1ldGVycyBhcmUgbm90IGZpeGVkIGZvciBu b3cuIERlcGVuZGluZw0KKyAgICAgb24gdGhlIGNob2ljZXMgb2Ygb3RoZXIgaW1wbGVtZW50YXRp b25zIGFuZCB0aGUgZXZvbHV0aW9uIG9mIHRoZQ0KKyAgICAgQyBzdGFuZGFyZCB0aGV5IG1heSBz dGlsbCBjaGFuZ2UuIFRoaXMgc2hvdWxkIGhhcHBlbiByYXJlbHksIGJ1dA0KKyAgICAgeW91IGhh dmUgdG8gY29uc2lkZXIgdGhlIEMgdGhyZWFkIGZlYXR1cmUgdG8gYmUgZXhwZXJpbWVudGFsDQor ICAgICB1bnRpbCB0aGVuLCBhbmQgYmUgcHJlcGFyZWQgdG8gcmVjb21waWxlIHlvdXIgYmluYXJ5 IHdoZW4gbGlua2luZw0KKyAgICAgYWdhaW5zdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBv ciBhIG5ldyB2ZXJzaW9uLg0KKw0KKyAgICAgVGhlIG1hY3JvIF9fVEhSRF9FWFBFUklNRU5UQUwg d2lsbCBiZSBkZWZpbmVkIGFzIGxvbmcgYXMgd2UNCisgICAgIGNvbnNpZGVyIHRoaXMgQUJJIHRv IGJlIHVuc3RhYmxlLiBUaGlzIGNvbWVzIHdpdGggc29tZSBsaW5rIHRpbWUNCisgICAgIGNoZWNr cyBhbmQgYW4gb3ZlcmhlYWQgb2Ygc29tZSBieXRlcy4gQXQgeW91ciBvd24gcmlzayB5b3UgbWF5 DQorICAgICBzd2l0Y2ggdGhpcyBjaGVjayBvZmYgYnkgZGVmaW5pbmcgX19USFJEX0VYUEVSSU1F TlRBTCBtYWNybyB0bw0KKyAgICAgMC4gKi8NCisNCisjZGVmaW5lIF9fVEhSRF9TVUNDRVNTICAg ICAgMA0KKyNkZWZpbmUgX19USFJEX0JVU1kgICAgICAgICAxDQorI2RlZmluZSBfX1RIUkRfRVJS T1IgICAgICAgIDINCisjZGVmaW5lIF9fVEhSRF9OT01FTSAgICAgICAgMw0KKyNkZWZpbmUgX19U SFJEX1RJTUVET1VUICAgICA0DQorI2RlZmluZSBfX01UWF9QTEFJTiAgICAgICAgIDANCisjZGVm aW5lIF9fTVRYX1JFQ1VSU0lWRSAgICAgMQ0KKyNkZWZpbmUgX19NVFhfVElNRUQgICAgICAgICAy DQorI2RlZmluZSBUU1NfRFRPUl9JVEVSQVRJT05TIDQNCisNCisjZGVmaW5lIF9fVEhSRF9DT05D QVQxMF8oXzAsIF8xLCBfMiwgXzMsIF80LCBfNSwgXzYsIF83LCBfOCwgXzkpICAgICAgICAgXA0K K18wICMjIF8gIyMgXzEgIyMgXyAjIyBfMiAjIyBfICMjIF8zICMjIF8gIyMgXzQgIyMgXyAjIyBf NSAjIyBfICMjIF82ICMjIF8gIyMgXzcgIyMgXyAjIyBfOCAjIyBfICMjIF85DQorDQorI2RlZmlu ZSBfX1RIUkRfQ09OQ0FUMTAoXzAsIF8xLCBfMiwgXzMsIF80LCBfNSwgXzYsIF83LCBfOCwgXzkp IFwNCisgIF9fVEhSRF9DT05DQVQxMF8oXzAsIF8xLCBfMiwgXzMsIF80LCBfNSwgXzYsIF83LCBf OCwgXzkpDQorDQorDQorI2RlZmluZSBfX1RIUkRfQUJJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KK19fVEhSRF9DT05DQVQxMChfX3RocmRfYWJpLCAgICAgICAgICAgICAgICAgICAg IFwNCisgICAgICAgICAgICAgICAgX19USFJEX1NVQ0NFU1MsICAgICAgICAgICAgICAgICBcDQor ICAgICAgICAgICAgICAgIF9fVEhSRF9CVVNZLCAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAg ICAgICAgICAgICBfX1RIUkRfRVJST1IsICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAg ICAgICAgX19USFJEX05PTUVNLCAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAg IF9fVEhSRF9USU1FRE9VVCwgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICBfX01U WF9QTEFJTiwgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgX19NVFhfUkVD VVJTSVZFLCAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIF9fTVRYX1RJTUVELCAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICBUU1NfRFRPUl9JVEVSQVRJT05T ICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKQ0KKw0KKyNkZWZpbmUgX19USFJEX1NI RlQoWCwgWSkgKCgoWCkgPDwgMykgXiAoWSkpDQorDQorZW51bSB7DQorICBfX3RocmRfYWJpID0N CisgIF9fVEhSRF9TSEZUKHNpemVvZihjbmRfdCksDQorICAgICAgICAgICAgICBfX1RIUkRfU0hG VChzaXplb2YobXR4X3QpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19USFJEX1NIRlQo c2l6ZW9mKG9uY2VfZmxhZyksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX1RIUkRfU0hGVChzaXplb2YodGhyZF90KSwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0c3NfdCkpKSkpLA0KK307DQorDQorZXh0 ZXJuIHVuc2lnbmVkIGNvbnN0IF9fVEhSRF9BQkk7DQorDQorI2RlZmluZSBfX1RIUkRfQUJJX0NI RUNLICgxLyhfX1RIUkRfQUJJID09IF9fdGhyZF9hYmkpKQ0KKw0KKyNpZiBfX1RIUkRfRVhQRVJJ TUVOVEFMDQorIyBkZWZpbmUgX19USFJEX0FCSV9NQVJLIF9fYXR0cmlidXRlX18oKHVzZWQpKSBz dGF0aWMgdW5zaWduZWQgY29uc3QqY29uc3QgX190aHJkX2FiaV9tYXJrID0gJl9fVEhSRF9BQkkN CisjZWxzZQ0KKyMgZGVmaW5lIF9fVEhSRF9BQklfTUFSSyB0eXBlZGVmIHVuc2lnbmVkIF9fdGhy ZF9hYmlfZHVtbXlfdHlwZQ0KKyNlbmRpZg0KKw0KK2VudW0gew0KKyAgdGhyZF9zdWNjZXNzID0g X19USFJEX1NVQ0NFU1MsDQorICB0aHJkX2J1c3kgPSBfX1RIUkRfQlVTWSwNCisgIHRocmRfZXJy b3IgPSBfX1RIUkRfRVJST1IsDQorICB0aHJkX25vbWVtID0gX19USFJEX05PTUVNLA0KKyAgdGhy ZF90aW1lZG91dCA9IF9fVEhSRF9USU1FRE9VVCwNCit9Ow0KKw0KK2VudW0gew0KKyAgbXR4X3Bs YWluID0gX19NVFhfUExBSU4sDQorICBtdHhfcmVjdXJzaXZlID0gX19NVFhfUkVDVVJTSVZFLA0K KyAgLy8gYWxsIG11dGV4ZXMgYXJlIHRpbWVkLCBoZXJlLiBzbyB0aGlzIGlzIGEgbm8tb3ANCisg IG10eF90aW1lZCA9IF9fTVRYX1RJTUVELA0KK307DQorDQorI2RlZmluZSBPTkNFX0ZMQUdfSU5J VCB7IDAgfQ0KKyNkZWZpbmUgdGhyZWFkX2xvY2FsIF9UaHJlYWRfbG9jYWwNCisNCitpbnQgdGhy ZF9jcmVhdGUodGhyZF90ICosIHRocmRfc3RhcnRfdCwgdm9pZCAqKSBfTm9ubnVsbCgxKTsNCitf Tm9yZXR1cm4gdm9pZCB0aHJkX2V4aXQoaW50KTsNCisNCitpbnQgdGhyZF9kZXRhY2godGhyZF90 KTsNCitpbnQgdGhyZF9qb2luKHRocmRfdCwgaW50ICopOw0KKw0KK2ludCB0aHJkX3NsZWVwKGNv bnN0IHN0cnVjdCB0aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKikgX05vbm51bGwoMSk7DQor dm9pZCB0aHJkX3lpZWxkKHZvaWQpOw0KKw0KK3RocmRfdCB0aHJkX2N1cnJlbnQodm9pZCk7DQor aW50IHRocmRfZXF1YWwodGhyZF90LCB0aHJkX3QpOw0KKyNkZWZpbmUgdGhyZF9lcXVhbChBLCBC KSAoKEEpID09IChCKSkNCisNCit2b2lkIGNhbGxfb25jZShvbmNlX2ZsYWcgKiwgdm9pZCAoKiko dm9pZCkpIF9Ob25udWxsKDEsIDIpOw0KKw0KK2ludCBtdHhfaW5pdChtdHhfdCAqLCBpbnQpIF9O b25udWxsKDEpOw0KK3ZvaWQgbXR4X2Rlc3Ryb3kobXR4X3QgKikgX05vbm51bGwoMSk7DQorDQor aW50IG10eF9sb2NrKG10eF90ICopIF9Ob25udWxsKDEpOw0KK2ludCBtdHhfdGltZWRsb2NrKG10 eF90ICpyZXN0cmljdCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpyZXN0cmljdCkgX05vbm51bGwo MSk7DQoraW50IG10eF90cnlsb2NrKG10eF90ICopIF9Ob25udWxsKDEpOw0KK2ludCBtdHhfdW5s b2NrKG10eF90ICopIF9Ob25udWxsKDEpOw0KKw0KK2ludCBjbmRfaW5pdChjbmRfdCAqKSBfTm9u bnVsbCgxKTsNCit2b2lkIGNuZF9kZXN0cm95KGNuZF90ICopIF9Ob25udWxsKDEpOw0KKw0KK2lu dCBjbmRfYnJvYWRjYXN0KGNuZF90ICopIF9Ob25udWxsKDEpOw0KK2ludCBjbmRfc2lnbmFsKGNu ZF90ICopIF9Ob25udWxsKDEpOw0KKw0KK2ludCBjbmRfdGltZWR3YWl0KGNuZF90ICpyZXN0cmlj dCwgbXR4X3QgKnJlc3RyaWN0LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnJlc3RyaWN0KSBfTm9u bnVsbCgxLCAyKTsNCitpbnQgY25kX3dhaXQoY25kX3QgKiwgbXR4X3QgKikgX05vbm51bGwoMSwg Mik7DQorDQoraW50IHRzc19jcmVhdGUodHNzX3QgKiwgdHNzX2R0b3JfdCkgX05vbm51bGwoMSk7 DQordm9pZCB0c3NfZGVsZXRlKHRzc190IGtleSk7DQorDQoraW50IHRzc19zZXQodHNzX3QsIHZv aWQgKik7DQordm9pZCAqdHNzX2dldCh0c3NfdCk7DQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQor fQ0KKyNlbmRpZg0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGltZS5oIGIvaW5j bHVkZS90aW1lLmgNCmluZGV4IGRjODgwNzAuLjEzZGNjYWEgMTAwNjQ0DQotLS0gYS9pbmNsdWRl L3RpbWUuaA0KKysrIGIvaW5jbHVkZS90aW1lLmgNCkBAIC0xMjksNiArMTI5LDE5IEBAIGludCBz dGltZShjb25zdCB0aW1lX3QgKik7DQogdGltZV90IHRpbWVnbShzdHJ1Y3QgdG0gKik7DQogI2Vu ZGlmDQogDQorI2lmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTA0KKyAgLyogSW1wbGVtZW50 YXRpb24gc3BlY2lmaWMgY2hvaWNlOiBUaGUgZXBvY2ggdGhhdCB0aGUgVElNRV9VVEMgY2xvY2sN CisgICAgIGlzIGJhc2VkIHVwb24gaXMgdGhlIFVuaXggRXBvY2gsIHRoYXQgaXMgYSBzdHJ1Y3Qg dGltZXNwZWMNCisgICAgIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBzZWNvbmRzIHRoYXQgaGF2 ZSBlbGFwc2VkIHNpbmNlIDAwOjAwOjAwDQorICAgICBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGlt ZSAoVVRDKSwgVGh1cnNkYXksIDEgSmFudWFyeQ0KKyAgICAgMTk3MC4gQmVjYXVzZSBvZiBkaWZm ZXJlbmNlcyBpbiBsZWFwIHNlY29uZHMgdGhpcyBpcyBub3QNCisgICAgIGNvbXBsZXRlbHkgZXF1 aXZhbGVudCB0byBVVEMuICovDQorICAvKiBCZXdhcmUgdGhhdCB0aGUgVElNRV9VVEMgY29uc3Rh bnQgaXRzZWxmIHBlciB0aGUgc3RhbmRhcmQgbXVzdCBiZQ0KKyAgICAgZ3JlYXRlciB0aGFuIDAu ICovDQorI2RlZmluZSBUSU1FX1VUQyAxDQoraW50IHRpbWVzcGVjX2dldChzdHJ1Y3QgdGltZXNw ZWMgKiwgaW50KTsNCisjZW5kaWYNCisNCiAjaWZkZWYgX19jcGx1c3BsdXMNCiB9DQogI2VuZGlm DQpkaWZmIC0tZ2l0IGEvc3JjL21tYW4vbXByb3RlY3QuYyBiL3NyYy9tbWFuL21wcm90ZWN0LmMN CmluZGV4IGY0ODg0ODYuLjUzNTc4N2IgMTAwNjQ0DQotLS0gYS9zcmMvbW1hbi9tcHJvdGVjdC5j DQorKysgYi9zcmMvbW1hbi9tcHJvdGVjdC5jDQpAQCAtMiwxMCArMiwxMiBAQA0KICNpbmNsdWRl ICJsaWJjLmgiDQogI2luY2x1ZGUgInN5c2NhbGwuaCINCiANCi1pbnQgbXByb3RlY3Qodm9pZCAq YWRkciwgc2l6ZV90IGxlbiwgaW50IHByb3QpDQoraW50IF9fbXByb3RlY3Qodm9pZCAqYWRkciwg c2l6ZV90IGxlbiwgaW50IHByb3QpDQogew0KIAlzaXplX3Qgc3RhcnQsIGVuZDsNCiAJc3RhcnQg PSAoc2l6ZV90KWFkZHIgJiAtUEFHRV9TSVpFOw0KIAllbmQgPSAoc2l6ZV90KSgoY2hhciAqKWFk ZHIgKyBsZW4gKyBQQUdFX1NJWkUtMSkgJiAtUEFHRV9TSVpFOw0KIAlyZXR1cm4gc3lzY2FsbChT WVNfbXByb3RlY3QsIHN0YXJ0LCBlbmQtc3RhcnQsIHByb3QpOw0KIH0NCisNCit3ZWFrX2FsaWFz KF9fbXByb3RlY3QsIG1wcm90ZWN0KTsNCmRpZmYgLS1naXQgYS9zcmMvc2NoZWQvdGhyZF95aWVs ZC5jIGIvc3JjL3NjaGVkL3RocmRfeWllbGQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAuLjMwMWU5NTMNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy9zY2hlZC90aHJkX3lp ZWxkLmMNCkBAIC0wLDAgKzEsNyBAQA0KKyNpbmNsdWRlIDxzY2hlZC5oPg0KKyNpbmNsdWRlICJz eXNjYWxsLmgiDQorDQordm9pZCB0aHJkX3lpZWxkKCkNCit7DQorICAgICAgICAgKHZvaWQpc3lz Y2FsbChTWVNfc2NoZWRfeWllbGQpOw0KK30NCmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkL19fdGhy ZF9hYmkuYyBiL3NyYy90aHJlYWQvX190aHJkX2FiaS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMC4uZTU2NzRlNg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC9f X3RocmRfYWJpLmMNCkBAIC0wLDAgKzEsMyBAQA0KKyNpbmNsdWRlIDx0aHJlYWRzLmg+DQorDQor dW5zaWduZWQgY29uc3QgX19USFJEX0FCSSA9ICBfX3RocmRfYWJpOw0KZGlmZiAtLWdpdCBhL3Ny Yy90aHJlYWQvX190aW1lZHdhaXQuYyBiL3NyYy90aHJlYWQvX190aW1lZHdhaXQuYw0KaW5kZXgg ZDZmMTIzMy4uM2Q2MjI3MiAxMDA2NDQNCi0tLSBhL3NyYy90aHJlYWQvX190aW1lZHdhaXQuYw0K KysrIGIvc3JjL3RocmVhZC9fX3RpbWVkd2FpdC5jDQpAQCAtNCw2ICs0LDkgQEANCiAjaW5jbHVk ZSAiZnV0ZXguaCINCiAjaW5jbHVkZSAic3lzY2FsbC5oIg0KIA0KK2ludCBfX3B0aHJlYWRfc2V0 Y2FuY2Vsc3RhdGUoaW50IG5ldywgaW50ICpvbGQpOw0KK2ludCBfX2Nsb2NrX2dldHRpbWUoY2xv Y2tpZF90IGNsaywgc3RydWN0IHRpbWVzcGVjICp0cyk7DQorDQogaW50IF9fdGltZWR3YWl0KHZv bGF0aWxlIGludCAqYWRkciwgaW50IHZhbCwNCiAJY2xvY2tpZF90IGNsaywgY29uc3Qgc3RydWN0 IHRpbWVzcGVjICphdCwNCiAJdm9pZCAoKmNsZWFudXApKHZvaWQgKiksIHZvaWQgKmFyZywgaW50 IHByaXYpDQpAQCAtMTUsNyArMTgsNyBAQCBpbnQgX190aW1lZHdhaXQodm9sYXRpbGUgaW50ICph ZGRyLCBpbnQgdmFsLA0KIA0KIAlpZiAoYXQpIHsNCiAJCWlmIChhdC0+dHZfbnNlYyA+PSAxMDAw MDAwMDAwVUwpIHJldHVybiBFSU5WQUw7DQotCQlpZiAoY2xvY2tfZ2V0dGltZShjbGssICZ0bykp IHJldHVybiBFSU5WQUw7DQorCQlpZiAoX19jbG9ja19nZXR0aW1lKGNsaywgJnRvKSkgcmV0dXJu IEVJTlZBTDsNCiAJCXRvLnR2X3NlYyA9IGF0LT50dl9zZWMgLSB0by50dl9zZWM7DQogCQlpZiAo KHRvLnR2X25zZWMgPSBhdC0+dHZfbnNlYyAtIHRvLnR2X25zZWMpIDwgMCkgew0KIAkJCXRvLnR2 X3NlYy0tOw0KQEAgLTI1LDcgKzI4LDcgQEAgaW50IF9fdGltZWR3YWl0KHZvbGF0aWxlIGludCAq YWRkciwgaW50IHZhbCwNCiAJCXRvcCA9ICZ0bzsNCiAJfQ0KIA0KLQlpZiAoIWNsZWFudXApIHB0 aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoUFRIUkVBRF9DQU5DRUxfRElTQUJMRSwgJmNzKTsNCisJaWYg KCFjbGVhbnVwKSBfX3B0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoUFRIUkVBRF9DQU5DRUxfRElTQUJM RSwgJmNzKTsNCiAJcHRocmVhZF9jbGVhbnVwX3B1c2goY2xlYW51cCwgYXJnKTsNCiANCiAJciA9 IC1fX3N5c2NhbGxfY3AoU1lTX2Z1dGV4LCBhZGRyLCBGVVRFWF9XQUlUfHByaXYsIHZhbCwgdG9w KTsNCkBAIC0zMyw3ICszNiw3IEBAIGludCBfX3RpbWVkd2FpdCh2b2xhdGlsZSBpbnQgKmFkZHIs IGludCB2YWwsDQogCWlmIChyICE9IEVJTlRSICYmIHIgIT0gRVRJTUVET1VUKSByID0gMDsNCiAN CiAJcHRocmVhZF9jbGVhbnVwX3BvcCgwKTsNCi0JaWYgKCFjbGVhbnVwKSBwdGhyZWFkX3NldGNh bmNlbHN0YXRlKGNzLCAwKTsNCisJaWYgKCFjbGVhbnVwKSBfX3B0aHJlYWRfc2V0Y2FuY2Vsc3Rh dGUoY3MsIDApOw0KIA0KIAlyZXR1cm4gcjsNCiB9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9j YWxsX29uY2UuYyBiL3NyYy90aHJlYWQvY2FsbF9vbmNlLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwLi43NDJhNzA3DQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGhyZWFk L2NhbGxfb25jZS5jDQpAQCAtMCwwICsxLDkgQEANCisjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgi DQorI2luY2x1ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgX19wdGhyZWFkX29uY2Uob25jZV9mbGFn ICosIHZvaWQgKCopKHZvaWQpKTsNCisNCit2b2lkIChjYWxsX29uY2UpKG9uY2VfZmxhZyAqZmxh Zywgdm9pZCAoKmZ1bmMpKHZvaWQpKSB7DQorCV9fVEhSRF9BQklfTUFSSzsNCisJKHZvaWQpX19w dGhyZWFkX29uY2UoZmxhZywgZnVuYyk7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvY25k X2Jyb2FkY2FzdC5jIGIvc3JjL3RocmVhZC9jbmRfYnJvYWRjYXN0LmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwLi5iMWRiNjY3DQotLS0gL2Rldi9udWxsDQorKysgYi9zcmMv dGhyZWFkL2NuZF9icm9hZGNhc3QuYw0KQEAgLTAsMCArMSw5IEBADQorI2luY2x1ZGUgInB0aHJl YWRfaW1wbC5oIg0KKyNpbmNsdWRlIDx0aHJlYWRzLmg+DQorDQoraW50IF9fcHRocmVhZF9jb25k X2Jyb2FkY2FzdChwdGhyZWFkX2NvbmRfdCAqKTsNCisNCitpbnQgY25kX2Jyb2FkY2FzdChjbmRf dCAqIGNuZCkgew0KKwlpbnQgcmV0ID0gX19wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KGNuZCk7DQor CXJldHVybiByZXQgPyB0aHJkX2Vycm9yIDogdGhyZF9zdWNjZXNzOw0KK30NCmRpZmYgLS1naXQg YS9zcmMvdGhyZWFkL2NuZF9kZXN0cm95LmMgYi9zcmMvdGhyZWFkL2NuZF9kZXN0cm95LmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4xMWNmYzE5DQotLS0gL2Rldi9udWxs DQorKysgYi9zcmMvdGhyZWFkL2NuZF9kZXN0cm95LmMNCkBAIC0wLDAgKzEsMTcgQEANCisjaW5j bHVkZSAicHRocmVhZF9pbXBsLmgiDQorI2luY2x1ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgX19w dGhyZWFkX2NvbmRfZGVzdHJveShwdGhyZWFkX2NvbmRfdCAqKTsNCisNCisvKiBUaGUgYmVoYXZp b3Igb2YgY25kX2Rlc3Ryb3kgaXMgdW5kZWZpbmVkIGlmIGNuZCBpcyBzdGlsbCBpbg0KKyAgIHVz ZS4gVGhlIGNob2ljZSBmb3IgcHRocmVhZF9jb25kX2Rlc3Ryb3kgaW4gdGhhdCBzaXR1YXRpb24g aXMgdG8NCisgICB3YWtlIHVwIGFsbCB1c2VycyBiZWZvcmUgZGVzdHJveWluZy4gSSBhbSBub3Qg c3VyZSB0aGF0IHdlIHNob3VsZA0KKyAgIGRvIGl0IGxpa2UgdGhhdCBoZXJlLCB0b28uIEFsdGVy bmF0aXZlcyB3b3VsZCBiZToNCisgICAtIGNvbXBsYWluIGJ5IHVzaW5nIHBlcnJvciBvciBlcXVp dmFsZW50DQorICAgLSBhc3NlcnQgdGhhdCB0aGVyZSBpcyBubyB3YWl0ZXINCisgICAtIGFib3J0 IHdoZW4gdGhlcmUgaXMgYSB3YWl0ZXINCisgICAtIGRvIG5vdGhpbmcNCisgICAqLw0KK3ZvaWQg KGNuZF9kZXN0cm95KShjbmRfdCAqY25kKSB7DQorCSh2b2lkKV9fcHRocmVhZF9jb25kX2Rlc3Ry b3koY25kKTsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9jbmRfaW5pdC5jIGIvc3JjL3Ro cmVhZC9jbmRfaW5pdC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uYzdm MWVkZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC9jbmRfaW5pdC5jDQpAQCAtMCww ICsxLDEwIEBADQorI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KKyNpbmNsdWRlIDx0aHJlYWRz Lmg+DQorDQoraW50IGNuZF9pbml0KGNuZF90ICogYykNCit7DQorCSpjID0gKGNuZF90KSB7DQor CQkwDQorCX07DQorCXJldHVybiB0aHJkX3N1Y2Nlc3M7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy90 aHJlYWQvY25kX3NpZ25hbC5jIGIvc3JjL3RocmVhZC9jbmRfc2lnbmFsLmMNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi5hOGQ5NDJkDQotLS0gL2Rldi9udWxsDQorKysgYi9z cmMvdGhyZWFkL2NuZF9zaWduYWwuYw0KQEAgLTAsMCArMSw5IEBADQorI2luY2x1ZGUgInB0aHJl YWRfaW1wbC5oIg0KKyNpbmNsdWRlIDx0aHJlYWRzLmg+DQorDQoraW50IF9fcHRocmVhZF9jb25k X3NpZ25hbChwdGhyZWFkX2NvbmRfdCAqKTsNCisNCitpbnQgY25kX3NpZ25hbChjbmRfdCAqIGNu ZCkgew0KKwlpbnQgcmV0ID0gX19wdGhyZWFkX2NvbmRfc2lnbmFsKGNuZCk7DQorCXJldHVybiBy ZXQgPyB0aHJkX2Vycm9yIDogdGhyZF9zdWNjZXNzOw0KK30NCmRpZmYgLS1naXQgYS9zcmMvdGhy ZWFkL2NuZF90aW1lZHdhaXQuYyBiL3NyYy90aHJlYWQvY25kX3RpbWVkd2FpdC5jDQpuZXcgZmls ZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uY2NlNDdhNA0KLS0tIC9kZXYvbnVsbA0KKysr IGIvc3JjL3RocmVhZC9jbmRfdGltZWR3YWl0LmMNCkBAIC0wLDAgKzEsMTQgQEANCisjaW5jbHVk ZSAicHRocmVhZF9pbXBsLmgiDQorI2luY2x1ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgX19wdGhy ZWFkX2NvbmRfdGltZWR3YWl0KHB0aHJlYWRfY29uZF90ICpyZXN0cmljdCBjLCBwdGhyZWFkX211 dGV4X3QgKnJlc3RyaWN0IG0sIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3QgdHMpOw0K Kw0KK2ludCBjbmRfdGltZWR3YWl0KGNuZF90ICpyZXN0cmljdCBjb25kLCBtdHhfdCAqcmVzdHJp Y3QgbXV0ZXgsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3QgdHMpIHsNCisJaW50IHJl dCA9IF9fcHRocmVhZF9jb25kX3RpbWVkd2FpdChjb25kLCBtdXRleCwgdHMpOw0KKwlzd2l0Y2gg KHJldCkgew0KKwkvKiBNYXkgYWxzbyByZXR1cm4gRUlOVkFMIG9yIEVQRVJNLiAqLw0KKwlkZWZh dWx0OiAgICAgICAgcmV0dXJuIHRocmRfZXJyb3I7DQorCWNhc2UgMDogICAgICAgICByZXR1cm4g dGhyZF9zdWNjZXNzOw0KKwljYXNlIEVUSU1FRE9VVDogcmV0dXJuIHRocmRfdGltZWRvdXQ7DQor CX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9jbmRfd2FpdC5jIGIvc3JjL3RocmVhZC9j bmRfd2FpdC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMzlkMGEwZA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC9jbmRfd2FpdC5jDQpAQCAtMCwwICsxLDEx IEBADQorI2luY2x1ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgY25kX3dhaXQoY25kX3QgKmNvbmQs IG10eF90ICptdXRleCkNCit7DQorCV9fVEhSRF9BQklfTUFSSzsNCisJLyogQ2FsbGluZyBjbmRf dGltZWR3YWl0IHdpdGggYSBudWxsIHBvaW50ZXIgaXMgYW4NCisJICAgZXh0ZW5zaW9uLiBTdWNo IGEgY2FsbCBpcyBjb252ZW5pZW50LCBoZXJlIHNpbmNlIGl0IGF2b2lkcyB0bw0KKwkgICByZXBl YXQgdGhlIGNhc2UgYW5hbHlzaXMgdGhhdCBpcyBhbHJlYWR5IGRvbmUgZm9yDQorCSAgIGNuZF90 aW1lZHdhaXQuICovDQorCXJldHVybiBjbmRfdGltZWR3YWl0KGNvbmQsIG11dGV4LCAwKTsNCit9 DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9tdHhfZGVzdHJveS5jIGIvc3JjL3RocmVhZC9tdHhf ZGVzdHJveS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNDgyYjc4MQ0K LS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC9tdHhfZGVzdHJveS5jDQpAQCAtMCwwICsx LDUgQEANCisjaW5jbHVkZSA8dGhyZWFkcy5oPg0KKw0KK3ZvaWQgKG10eF9kZXN0cm95KShtdHhf dCAqbXR4KSB7DQorCS8qIGVtcHR5ICovDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvbXR4 X2luaXQuYyBiL3NyYy90aHJlYWQvbXR4X2luaXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAuLjgyN2E1NmENCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJlYWQvbXR4 X2luaXQuYw0KQEAgLTAsMCArMSwxMCBAQA0KKyNpbmNsdWRlICJwdGhyZWFkX2ltcGwuaCINCisj aW5jbHVkZSA8dGhyZWFkcy5oPg0KKw0KK2ludCBtdHhfaW5pdChtdHhfdCAqIG0sIGludCB0eXBl KQ0KK3sNCisJKm0gPSAocHRocmVhZF9tdXRleF90KSB7DQorCQkuX21fdHlwZSA9ICgodHlwZSZt dHhfcmVjdXJzaXZlKSA/IFBUSFJFQURfTVVURVhfUkVDVVJTSVZFIDogMCksDQorCX07DQorCXJl dHVybiB0aHJkX3N1Y2Nlc3M7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvbXR4X2xvY2su YyBiL3NyYy90aHJlYWQvbXR4X2xvY2suYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAuLjg5NzMwZjENCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJlYWQvbXR4X2xvY2su Yw0KQEAgLTAsMCArMSwxNCBAQA0KKyNpbmNsdWRlICJwdGhyZWFkX2ltcGwuaCINCisjaW5jbHVk ZSA8dGhyZWFkcy5oPg0KKw0KK2ludCBtdHhfbG9jayhtdHhfdCAqbSkNCit7DQorCV9fVEhSRF9B QklfTUFSSzsNCisJaWYgKG0tPl9tX3R5cGUgPT0gUFRIUkVBRF9NVVRFWF9OT1JNQUwgJiYgIWFf Y2FzKCZtLT5fbV9sb2NrLCAwLCBFQlVTWSkpDQorCQlyZXR1cm4gdGhyZF9zdWNjZXNzOw0KKwkv KiBDYWxsaW5nIG10eF90aW1lZGxvY2sgd2l0aCBhIG51bGwgcG9pbnRlciBpcyBhbg0KKwkgICBl eHRlbnNpb24uIFN1Y2ggYSBjYWxsIGlzIGNvbnZlbmllbnQsIGhlcmUsIHNpbmNlIGl0IGF2b2lk cw0KKwkgICB0byByZXBlYXQgdGhlIGNhc2UgYW5hbHlzaXMgdGhhdCBpcyBhbHJlYWR5IGRvbmUg Zm9yDQorCSAgIG10eF90aW1lZGxvY2suICovDQorCXJldHVybiBtdHhfdGltZWRsb2NrKG0sIDAp Ow0KK30NCmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkL210eF90aW1lZGxvY2suYyBiL3NyYy90aHJl YWQvbXR4X3RpbWVkbG9jay5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4u YzQyYTA5Ng0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC9tdHhfdGltZWRsb2NrLmMN CkBAIC0wLDAgKzEsMTkgQEANCisjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQorI2luY2x1ZGUg PHRocmVhZHMuaD4NCisNCitpbnQgX19wdGhyZWFkX211dGV4X3RpbWVkbG9jayhwdGhyZWFkX211 dGV4X3QgKnJlc3RyaWN0IG0sIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3QgdHMpOw0K Kw0KK2ludCBtdHhfdGltZWRsb2NrKG10eF90ICpyZXN0cmljdCBtdXRleCwgY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpyZXN0cmljdCB0cykgew0KKwkvKiBJbiB0aGUgYmVzdCBvZiBhbGwgd29ybGRz IHRoaXMgaXMgYSB0YWlsIGNhbGwuICovDQorCWludCByZXQgPSBfX3B0aHJlYWRfbXV0ZXhfdGlt ZWRsb2NrKG11dGV4LCB0cyk7DQorCXN3aXRjaCAocmV0KSB7DQorCS8qIE1heSBhbHNvIHJldHVy biBFSU5WQUwsIEVQRVJNLCBFREVBRExLIG9yIEVBR0FJTi4gRUFHQUlOIGlzDQorCSAgIHNwZWNp YWxseSB0cmlja3kgc2luY2UgQzExIGRvZXNuJ3QgZGVmaW5lIGhvdyBtYW55IHJlY3Vyc2l2ZQ0K KwkgICBjYWxscyBjYW4gYmUgZG9uZS4gKHRoaXMgKmlzbid0KiB0aGUgbWF4aW11bSBhbW91bnQg b2YgbmVzdGVkDQorCSAgIGNhbGxzISkgVGhpcyBpbXBsZW1lbnRhdGlvbiBoZXJlIGRlYWxzIHRo aXMgd2l0aCBhIGNvdW50ZXIgYW5kDQorCSAgIGRldGVjdHMgb3ZlcmZsb3csIHNvIHRoaXMgaXMg ZGVmaW5pdGl2ZWx5IFVCLiAqLw0KKwlkZWZhdWx0OiAgICAgICAgcmV0dXJuIHRocmRfZXJyb3I7 DQorCWNhc2UgMDogICAgICAgICByZXR1cm4gdGhyZF9zdWNjZXNzOw0KKwljYXNlIEVUSU1FRE9V VDogcmV0dXJuIHRocmRfdGltZWRvdXQ7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVh ZC9tdHhfdHJ5bG9jay5jIGIvc3JjL3RocmVhZC9tdHhfdHJ5bG9jay5jDQpuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNWZkODIzYQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3Jj L3RocmVhZC9tdHhfdHJ5bG9jay5jDQpAQCAtMCwwICsxLDIyIEBADQorI2luY2x1ZGUgInB0aHJl YWRfaW1wbC5oIg0KKyNpbmNsdWRlIDx0aHJlYWRzLmg+DQorDQoraW50IF9fcHRocmVhZF9tdXRl eF90cnlsb2NrKHB0aHJlYWRfbXV0ZXhfdCAqcmVzdHJpY3QgbSk7DQorDQoraW50IG10eF90cnls b2NrKG10eF90ICpyZXN0cmljdCBtKSB7DQorCWlmIChtLT5fbV90eXBlID09IFBUSFJFQURfTVVU RVhfTk9STUFMKQ0KKwkJcmV0dXJuIChhX2NhcygmbS0+X21fbG9jaywgMCwgRUJVU1kpICYgRUJV U1kpID8gdGhyZF9idXN5IDogdGhyZF9zdWNjZXNzOw0KKw0KKwkvKiBJbiB0aGUgYmVzdCBvZiBh bGwgd29ybGRzIHRoaXMgaXMgYSB0YWlsIGNhbGwuICovDQorCWludCByZXQgPSBfX3B0aHJlYWRf bXV0ZXhfdHJ5bG9jayhtKTsNCisJc3dpdGNoIChyZXQpIHsNCisJLyogSW4gY2FzZSBvZiBVQiBt YXkgYWxzbyByZXR1cm4gRUlOVkFMLCBFUEVSTSwgRURFQURMSyBvciBFQUdBSU4uIEVBR0FJTiBp cw0KKwkgICBzcGVjaWFsbHkgdHJpY2t5IHNpbmNlIEMxMSBkb2Vzbid0IGRlZmluZSBob3cgbWFu eSByZWN1cnNpdmUNCisJICAgY2FsbHMgY2FuIGJlIGRvbmUuICh0aGlzICppc24ndCogdGhlIG1h eGltdW0gYW1vdW50IG9mIG5lc3RlZA0KKwkgICBjYWxscyEpIFRoaXMgaW1wbGVtZW50YXRpb24g aGVyZSBkZWFscyB0aGlzIHdpdGggYSBjb3VudGVyIGFuZA0KKwkgICBkZXRlY3RzIG92ZXJmbG93 LCBzbyB0aGlzIGlzIGRlZmluaXRpdmVseSBVQi4gKi8NCisJZGVmYXVsdDogICAgcmV0dXJuIHRo cmRfZXJyb3I7DQorCWNhc2UgMDogICAgIHJldHVybiB0aHJkX3N1Y2Nlc3M7DQorCWNhc2UgRUJV U1k6IHJldHVybiB0aHJkX2J1c3k7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9t dHhfdW5sb2NrLmMgYi9zcmMvdGhyZWFkL210eF91bmxvY2suYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAuLmQxNzIxYTYNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJl YWQvbXR4X3VubG9jay5jDQpAQCAtMCwwICsxLDExIEBADQorI2luY2x1ZGUgInB0aHJlYWRfaW1w bC5oIg0KKyNpbmNsdWRlIDx0aHJlYWRzLmg+DQorDQoraW50IF9fcHRocmVhZF9tdXRleF91bmxv Y2socHRocmVhZF9tdXRleF90ICopOw0KKw0KK2ludCAobXR4X3VubG9jaykobXR4X3QgKm10eCkg ew0KKwkvKiBJbiB0aGUgYmVzdCBvZiBhbGwgd29ybGRzIHRoaXMgaXMgYSB0YWlsIGNhbGwuICov DQorCWludCByZXQgPSBfX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKG10eCk7DQorCS8qIEluIGNhc2Ug b2YgVUIgbWF5IGFsc28gcmV0dXJuIEVQRVJNLiAqLw0KKwlyZXR1cm4gcmV0ID8gdGhyZF9lcnJv ciA6IHRocmRfc3VjY2VzczsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX2Nv bmRfYnJvYWRjYXN0LmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF9icm9hZGNhc3QuYw0KaW5k ZXggNjlmODQwZi4uZjUzYjQxZCAxMDA2NDQNCi0tLSBhL3NyYy90aHJlYWQvcHRocmVhZF9jb25k X2Jyb2FkY2FzdC5jDQorKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF9icm9hZGNhc3QuYw0K QEAgLTIsNyArMiw3IEBADQogDQogaW50IF9fcHJpdmF0ZV9jb25kX3NpZ25hbChwdGhyZWFkX2Nv bmRfdCAqLCBpbnQpOw0KIA0KLWludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJlYWRfY29u ZF90ICpjKQ0KK2ludCBfX3B0aHJlYWRfY29uZF9icm9hZGNhc3QocHRocmVhZF9jb25kX3QgKmMp DQogew0KIAlpZiAoIWMtPl9jX3NoYXJlZCkgcmV0dXJuIF9fcHJpdmF0ZV9jb25kX3NpZ25hbChj LCAtMSk7DQogCWlmICghYy0+X2Nfd2FpdGVycykgcmV0dXJuIDA7DQpAQCAtMTAsMyArMTAsNSBA QCBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdChwdGhyZWFkX2NvbmRfdCAqYykNCiAJX193YWtl KCZjLT5fY19zZXEsIC0xLCAwKTsNCiAJcmV0dXJuIDA7DQogfQ0KKw0KK3dlYWtfYWxpYXMoX19w dGhyZWFkX2NvbmRfYnJvYWRjYXN0LCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KTsNCmRpZmYgLS1n aXQgYS9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF9kZXN0cm95LmMgYi9zcmMvdGhyZWFkL3B0aHJl YWRfY29uZF9kZXN0cm95LmMNCmluZGV4IDhjNTU1MTYuLmIyYWJlYjggMTAwNjQ0DQotLS0gYS9z cmMvdGhyZWFkL3B0aHJlYWRfY29uZF9kZXN0cm95LmMNCisrKyBiL3NyYy90aHJlYWQvcHRocmVh ZF9jb25kX2Rlc3Ryb3kuYw0KQEAgLTEsNiArMSw2IEBADQogI2luY2x1ZGUgInB0aHJlYWRfaW1w bC5oIg0KIA0KLWludCBwdGhyZWFkX2NvbmRfZGVzdHJveShwdGhyZWFkX2NvbmRfdCAqYykNCitp bnQgX19wdGhyZWFkX2NvbmRfZGVzdHJveShwdGhyZWFkX2NvbmRfdCAqYykNCiB7DQogCWlmIChj LT5fY19zaGFyZWQgJiYgYy0+X2Nfd2FpdGVycykgew0KIAkJaW50IGNudDsNCkBAIC0xMiwzICsx Miw1IEBAIGludCBwdGhyZWFkX2NvbmRfZGVzdHJveShwdGhyZWFkX2NvbmRfdCAqYykNCiAJfQ0K IAlyZXR1cm4gMDsNCiB9DQorDQord2Vha19hbGlhcyhfX3B0aHJlYWRfY29uZF9kZXN0cm95LCBw dGhyZWFkX2NvbmRfZGVzdHJveSk7DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX2Nv bmRfc2lnbmFsLmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF9zaWduYWwuYw0KaW5kZXggMTE5 YzAwYS4uZDFkM2M3NyAxMDA2NDQNCi0tLSBhL3NyYy90aHJlYWQvcHRocmVhZF9jb25kX3NpZ25h bC5jDQorKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF9zaWduYWwuYw0KQEAgLTIsNyArMiw3 IEBADQogDQogaW50IF9fcHJpdmF0ZV9jb25kX3NpZ25hbChwdGhyZWFkX2NvbmRfdCAqLCBpbnQp Ow0KIA0KLWludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICpjKQ0KK2ludCBf X3B0aHJlYWRfY29uZF9zaWduYWwocHRocmVhZF9jb25kX3QgKmMpDQogew0KIAlpZiAoIWMtPl9j X3NoYXJlZCkgcmV0dXJuIF9fcHJpdmF0ZV9jb25kX3NpZ25hbChjLCAxKTsNCiAJaWYgKCFjLT5f Y193YWl0ZXJzKSByZXR1cm4gMDsNCkBAIC0xMCwzICsxMCw1IEBAIGludCBwdGhyZWFkX2NvbmRf c2lnbmFsKHB0aHJlYWRfY29uZF90ICpjKQ0KIAlfX3dha2UoJmMtPl9jX3NlcSwgMSwgMCk7DQog CXJldHVybiAwOw0KIH0NCisNCit3ZWFrX2FsaWFzKF9fcHRocmVhZF9jb25kX3NpZ25hbCwgcHRo cmVhZF9jb25kX3NpZ25hbCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX2NvbmRf dGltZWR3YWl0LmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF90aW1lZHdhaXQuYw0KaW5kZXgg MmQxOTJiMC4uMzkzZDYwZSAxMDA2NDQNCi0tLSBhL3NyYy90aHJlYWQvcHRocmVhZF9jb25kX3Rp bWVkd2FpdC5jDQorKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF90aW1lZHdhaXQuYw0KQEAg LTEsNSArMSw5IEBADQogI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KIA0KK3ZvaWQgX19wdGhy ZWFkX3Rlc3RjYW5jZWwodm9pZCk7DQoraW50IF9fcHRocmVhZF9tdXRleF9sb2NrKHB0aHJlYWRf bXV0ZXhfdCAqKTsNCitpbnQgX19wdGhyZWFkX211dGV4X3VubG9jayhwdGhyZWFkX211dGV4X3Qg Km0pOw0KKw0KIC8qDQogICogc3RydWN0IHdhaXRlcg0KICAqDQpAQCAtMTE5LDcgKzEyMyw3IEBA IHN0YXRpYyB2b2lkIHVud2FpdCh2b2lkICphcmcpDQogCX0NCiB9DQogDQotaW50IHB0aHJlYWRf Y29uZF90aW1lZHdhaXQocHRocmVhZF9jb25kX3QgKnJlc3RyaWN0IGMsIHB0aHJlYWRfbXV0ZXhf dCAqcmVzdHJpY3QgbSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpyZXN0cmljdCB0cykNCitpbnQg X19wdGhyZWFkX2NvbmRfdGltZWR3YWl0KHB0aHJlYWRfY29uZF90ICpyZXN0cmljdCBjLCBwdGhy ZWFkX211dGV4X3QgKnJlc3RyaWN0IG0sIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVzdHJpY3Qg dHMpDQogew0KIAlzdHJ1Y3Qgd2FpdGVyIG5vZGUgPSB7IC5jb25kID0gYywgLm11dGV4ID0gbSB9 Ow0KIAlpbnQgZSwgc2VxLCAqZnV0LCBjbG9jayA9IGMtPl9jX2Nsb2NrOw0KQEAgLTEzMCw3ICsx MzQsNyBAQCBpbnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdChwdGhyZWFkX2NvbmRfdCAqcmVzdHJp Y3QgYywgcHRocmVhZF9tdXRleF90ICpyZXN0cmljdA0KIAlpZiAodHMgJiYgdHMtPnR2X25zZWMg Pj0gMTAwMDAwMDAwMFVMKQ0KIAkJcmV0dXJuIEVJTlZBTDsNCiANCi0JcHRocmVhZF90ZXN0Y2Fu Y2VsKCk7DQorCV9fcHRocmVhZF90ZXN0Y2FuY2VsKCk7DQogDQogCWlmIChjLT5fY19zaGFyZWQp IHsNCiAJCW5vZGUuc2hhcmVkID0gMTsNCkBAIC0xNTEsNyArMTU1LDcgQEAgaW50IHB0aHJlYWRf Y29uZF90aW1lZHdhaXQocHRocmVhZF9jb25kX3QgKnJlc3RyaWN0IGMsIHB0aHJlYWRfbXV0ZXhf dCAqcmVzdHJpY3QNCiAJCXVubG9jaygmYy0+X2NfbG9jayk7DQogCX0NCiANCi0JcHRocmVhZF9t dXRleF91bmxvY2sobSk7DQorCV9fcHRocmVhZF9tdXRleF91bmxvY2sobSk7DQogDQogCWRvIGUg PSBfX3RpbWVkd2FpdChmdXQsIHNlcSwgY2xvY2ssIHRzLCB1bndhaXQsICZub2RlLCAhbm9kZS5z aGFyZWQpOw0KIAl3aGlsZSAoKmZ1dD09c2VxICYmICghZSB8fCBlPT1FSU5UUikpOw0KQEAgLTE5 NywzICsyMDEsNSBAQCBpbnQgX19wcml2YXRlX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICpj LCBpbnQgbikNCiANCiAJcmV0dXJuIDA7DQogfQ0KKw0KK3dlYWtfYWxpYXMoX19wdGhyZWFkX2Nv bmRfdGltZWR3YWl0LCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KTsNCmRpZmYgLS1naXQgYS9zcmMv dGhyZWFkL3B0aHJlYWRfY29uZF93YWl0LmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfY29uZF93YWl0 LmMNCmluZGV4IDg3MzViZjEuLjU4NjU2ZjcgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJl YWRfY29uZF93YWl0LmMNCisrKyBiL3NyYy90aHJlYWQvcHRocmVhZF9jb25kX3dhaXQuYw0KQEAg LTEsNiArMSw4IEBADQogI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KIA0KK2ludCBfX3B0aHJl YWRfY29uZF90aW1lZHdhaXQocHRocmVhZF9jb25kX3QgKnJlc3RyaWN0IGMsIHB0aHJlYWRfbXV0 ZXhfdCAqcmVzdHJpY3QgbSwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpyZXN0cmljdCB0cyk7DQor DQogaW50IHB0aHJlYWRfY29uZF93YWl0KHB0aHJlYWRfY29uZF90ICpyZXN0cmljdCBjLCBwdGhy ZWFkX211dGV4X3QgKnJlc3RyaWN0IG0pDQogew0KLQlyZXR1cm4gcHRocmVhZF9jb25kX3RpbWVk d2FpdChjLCBtLCAwKTsNCisJcmV0dXJuIF9fcHRocmVhZF9jb25kX3RpbWVkd2FpdChjLCBtLCAw KTsNCiB9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX2NyZWF0ZS5jIGIvc3JjL3Ro cmVhZC9wdGhyZWFkX2NyZWF0ZS5jDQppbmRleCBlNDQxYmRhLi4xOTNiMjk1IDEwMDY0NA0KLS0t IGEvc3JjL3RocmVhZC9wdGhyZWFkX2NyZWF0ZS5jDQorKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRf Y3JlYXRlLmMNCkBAIC00LDEwMiArNCwyMSBAQA0KICNpbmNsdWRlICJsaWJjLmgiDQogI2luY2x1 ZGUgPHN5cy9tbWFuLmg+DQogI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNpbmNsdWRlIDx0aHJlYWRz Lmg+DQorDQordm9pZCAqX19tbWFwKHZvaWQgKiwgc2l6ZV90LCBpbnQsIGludCwgaW50LCBvZmZf dCk7DQoraW50IF9fbXVubWFwKHZvaWQgKiwgc2l6ZV90KTsNCitpbnQgX19tcHJvdGVjdCh2b2lk ICosIHNpemVfdCwgaW50KTsNCit2b2lkIF9fdGhyZWFkX2VuYWJsZSh2b2lkKTsNCitfTm9yZXR1 cm4gdm9pZCBfX3B0aHJlYWRfZXhpdCh2b2lkICopOw0KK3ZvaWQgKl9fY29weV90bHModW5zaWdu ZWQgY2hhciAqKTsNCitleHRlcm4gdm9sYXRpbGUgc2l6ZV90IF9fcHRocmVhZF90c2Rfc2l6ZTsN CiANCiBzdGF0aWMgdm9pZCBkdW1teV8wKCkNCiB7DQogfQ0KIHdlYWtfYWxpYXMoZHVtbXlfMCwg X19hY3F1aXJlX3B0Yyk7DQogd2Vha19hbGlhcyhkdW1teV8wLCBfX3JlbGVhc2VfcHRjKTsNCi13 ZWFrX2FsaWFzKGR1bW15XzAsIF9fcHRocmVhZF90c2RfcnVuX2R0b3JzKTsNCi13ZWFrX2FsaWFz KGR1bW15XzAsIF9fZG9fcHJpdmF0ZV9yb2J1c3RfbGlzdCk7DQotd2Vha19hbGlhcyhkdW1teV8w LCBfX2RvX29ycGhhbmVkX3N0ZGlvX2xvY2tzKTsNCi0NCi1fTm9yZXR1cm4gdm9pZCBwdGhyZWFk X2V4aXQodm9pZCAqcmVzdWx0KQ0KLXsNCi0JcHRocmVhZF90IHNlbGYgPSBfX3B0aHJlYWRfc2Vs ZigpOw0KLQlzaWdzZXRfdCBzZXQ7DQotDQotCXNlbGYtPnJlc3VsdCA9IHJlc3VsdDsNCi0NCi0J d2hpbGUgKHNlbGYtPmNhbmNlbGJ1Zikgew0KLQkJdm9pZCAoKmYpKHZvaWQgKikgPSBzZWxmLT5j YW5jZWxidWYtPl9fZjsNCi0JCXZvaWQgKnggPSBzZWxmLT5jYW5jZWxidWYtPl9feDsNCi0JCXNl bGYtPmNhbmNlbGJ1ZiA9IHNlbGYtPmNhbmNlbGJ1Zi0+X19uZXh0Ow0KLQkJZih4KTsNCi0JfQ0K LQ0KLQlfX3B0aHJlYWRfdHNkX3J1bl9kdG9ycygpOw0KLQ0KLQlfX2xvY2soc2VsZi0+ZXhpdGxv Y2spOw0KLQ0KLQkvKiBNYXJrIHRoaXMgdGhyZWFkIGRlYWQgYmVmb3JlIGRlY3JlbWVudGluZyBj b3VudCAqLw0KLQlfX2xvY2soc2VsZi0+a2lsbGxvY2spOw0KLQlzZWxmLT5kZWFkID0gMTsNCi0N Ci0JLyogQmxvY2sgYWxsIHNpZ25hbHMgYmVmb3JlIGRlY3JlbWVudGluZyB0aGUgbGl2ZSB0aHJl YWQgY291bnQuDQotCSAqIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0IGR5bmFtaWNh bGx5IGFsbG9jYXRlZCBUTFMNCi0JICogaXMgbm90IHVuZGVyLWFsbG9jYXRlZC9vdmVyLWNvbW1p dHRlZCwgYW5kIHBvc3NpYmx5IGZvciBvdGhlcg0KLQkgKiByZWFzb25zIGFzIHdlbGwuICovDQot CV9fYmxvY2tfYWxsX3NpZ3MoJnNldCk7DQotDQotCS8qIFdhaXQgdG8gdW5sb2NrIHRoZSBraWxs IGxvY2ssIHdoaWNoIGdvdmVybnMgZnVuY3Rpb25zIGxpa2UNCi0JICogcHRocmVhZF9raWxsIHdo aWNoIHRhcmdldCBhIHRocmVhZCBpZCwgdW50aWwgc2lnbmFscyBoYXZlDQotCSAqIGJlZW4gYmxv Y2tlZC4gVGhpcyBwcmVjbHVkZXMgb2JzZXJ2YXRpb24gb2YgdGhlIHRocmVhZCBpZA0KLQkgKiBh cyBhIGxpdmUgdGhyZWFkICh3aXRoIGFwcGxpY2F0aW9uIGNvZGUgcnVubmluZyBpbiBpdCkgYWZ0 ZXINCi0JICogdGhlIHRocmVhZCB3YXMgcmVwb3J0ZWQgZGVhZCBieSBFU1JDSCBiZWluZyByZXR1 cm5lZC4gKi8NCi0JX191bmxvY2soc2VsZi0+a2lsbGxvY2spOw0KLQ0KLQkvKiBJdCdzIGltcG9z c2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyAidGhlIGxhc3QgdGhyZWFkIg0KLQkg KiB1bnRpbCBwZXJmb3JtaW5nIHRoZSBhdG9taWMgZGVjcmVtZW50LCBzaW5jZSBtdWx0aXBsZSB0 aHJlYWRzDQotCSAqIGNvdWxkIGV4aXQgYXQgdGhlIHNhbWUgdGltZS4gRm9yIHRoZSBsYXN0IHRo cmVhZCwgcmV2ZXJ0IHRoZQ0KLQkgKiBkZWNyZW1lbnQgYW5kIHVuYmxvY2sgc2lnbmFscyB0byBn aXZlIHRoZSBhdGV4aXQgaGFuZGxlcnMgYW5kDQotCSAqIHN0ZGlvIGNsZWFudXAgY29kZSBhIGNv bnNpc3RlbnQgc3RhdGUuICovDQotCWlmIChhX2ZldGNoX2FkZCgmbGliYy50aHJlYWRzX21pbnVz XzEsIC0xKT09MCkgew0KLQkJbGliYy50aHJlYWRzX21pbnVzXzEgPSAwOw0KLQkJX19yZXN0b3Jl X3NpZ3MoJnNldCk7DQotCQlleGl0KDApOw0KLQl9DQotDQotCWlmIChzZWxmLT5sb2NhbGUgIT0g JmxpYmMuZ2xvYmFsX2xvY2FsZSkgew0KLQkJYV9kZWMoJmxpYmMudXNlbG9jYWxlX2NudCk7DQot CQlpZiAoc2VsZi0+bG9jYWxlLT5jdHlwZV91dGY4KQ0KLQkJCWFfZGVjKCZsaWJjLmJ5dGVsb2Nh bGVfY250X21pbnVzXzEpOw0KLQl9DQotDQotCV9fZG9fcHJpdmF0ZV9yb2J1c3RfbGlzdCgpOw0K LQlfX2RvX29ycGhhbmVkX3N0ZGlvX2xvY2tzKCk7DQotDQotCWlmIChzZWxmLT5kZXRhY2hlZCAm JiBzZWxmLT5tYXBfYmFzZSkgew0KLQkJLyogRGV0YWNoZWQgdGhyZWFkcyBtdXN0IGF2b2lkIHRo ZSBrZXJuZWwgY2xlYXJfY2hpbGRfdGlkDQotCQkgKiBmZWF0dXJlLCBzaW5jZSB0aGUgdmlydHVh bCBhZGRyZXNzIHdpbGwgaGF2ZSBiZWVuDQotCQkgKiB1bm1hcHBlZCBhbmQgcG9zc2libHkgYWxy ZWFkeSByZXVzZWQgYnkgYSBuZXcgbWFwcGluZw0KLQkJICogYXQgdGhlIHRpbWUgdGhlIGtlcm5l bCB3b3VsZCBwZXJmb3JtIHRoZSB3cml0ZS4gSW4NCi0JCSAqIHRoZSBjYXNlIG9mIHRocmVhZHMg dGhhdCBzdGFydGVkIG91dCBkZXRhY2hlZCwgdGhlDQotCQkgKiBpbml0aWFsIGNsb25lIGZsYWdz IGFyZSBjb3JyZWN0LCBidXQgaWYgdGhlIHRocmVhZCB3YXMNCi0JCSAqIGRldGFjaGVkIGxhdGVy ICg9PSAyKSwgd2UgbmVlZCB0byBjbGVhciBpdCBoZXJlLiAqLw0KLQkJaWYgKHNlbGYtPmRldGFj aGVkID09IDIpIF9fc3lzY2FsbChTWVNfc2V0X3RpZF9hZGRyZXNzLCAwKTsNCi0NCi0JCS8qIFRo ZSBmb2xsb3dpbmcgY2FsbCB1bm1hcHMgdGhlIHRocmVhZCdzIHN0YWNrIG1hcHBpbmcNCi0JCSAq IGFuZCB0aGVuIGV4aXRzIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHN0YWNrLiAqLw0KLQkJX191bm1h cHNlbGYoc2VsZi0+bWFwX2Jhc2UsIHNlbGYtPm1hcF9zaXplKTsNCi0JfQ0KLQ0KLQlmb3IgKDs7 KSBfX3N5c2NhbGwoU1lTX2V4aXQsIDApOw0KLX0NCi0NCi12b2lkIF9fZG9fY2xlYW51cF9wdXNo KHN0cnVjdCBfX3B0Y2IgKmNiKQ0KLXsNCi0JaWYgKCFsaWJjLmhhc190aHJlYWRfcG9pbnRlcikg cmV0dXJuOw0KLQlzdHJ1Y3QgcHRocmVhZCAqc2VsZiA9IF9fcHRocmVhZF9zZWxmKCk7DQotCWNi LT5fX25leHQgPSBzZWxmLT5jYW5jZWxidWY7DQotCXNlbGYtPmNhbmNlbGJ1ZiA9IGNiOw0KLX0N Ci0NCi12b2lkIF9fZG9fY2xlYW51cF9wb3Aoc3RydWN0IF9fcHRjYiAqY2IpDQotew0KLQlpZiAo IWxpYmMuaGFzX3RocmVhZF9wb2ludGVyKSByZXR1cm47DQotCV9fcHRocmVhZF9zZWxmKCktPmNh bmNlbGJ1ZiA9IGNiLT5fX25leHQ7DQotfQ0KIA0KIHN0YXRpYyBpbnQgc3RhcnQodm9pZCAqcCkN CiB7DQpAQCAtMTIxLDI4ICs0MCwxMCBAQCBzdGF0aWMgaW50IHN0YXJ0KHZvaWQgKnApDQogDQog I2RlZmluZSBST1VORCh4KSAoKCh4KStQQUdFX1NJWkUtMSkmLVBBR0VfU0laRSkNCiANCi0vKiBw dGhyZWFkX2tleV9jcmVhdGUuYyBvdmVycmlkZXMgdGhpcyAqLw0KLXN0YXRpYyB2b2xhdGlsZSBz aXplX3QgZHVtbXkgPSAwOw0KLXdlYWtfYWxpYXMoZHVtbXksIF9fcHRocmVhZF90c2Rfc2l6ZSk7 DQotc3RhdGljIHZvaWQgKmR1bW15X3RzZFsxXSA9IHsgMCB9Ow0KLXdlYWtfYWxpYXMoZHVtbXlf dHNkLCBfX3B0aHJlYWRfdHNkX21haW4pOw0KLQ0KLXN0YXRpYyBGSUxFICp2b2xhdGlsZSBkdW1t eV9maWxlID0gMDsNCi13ZWFrX2FsaWFzKGR1bW15X2ZpbGUsIF9fc3RkaW5fdXNlZCk7DQotd2Vh a19hbGlhcyhkdW1teV9maWxlLCBfX3N0ZG91dF91c2VkKTsNCi13ZWFrX2FsaWFzKGR1bW15X2Zp bGUsIF9fc3RkZXJyX3VzZWQpOw0KLQ0KLXN0YXRpYyB2b2lkIGluaXRfZmlsZV9sb2NrKEZJTEUg KmYpDQotew0KLQlpZiAoZiAmJiBmLT5sb2NrPDApIGYtPmxvY2sgPSAwOw0KLX0NCi0NCi12b2lk ICpfX2NvcHlfdGxzKHVuc2lnbmVkIGNoYXIgKik7DQotDQogaW50IHB0aHJlYWRfY3JlYXRlKHB0 aHJlYWRfdCAqcmVzdHJpY3QgcmVzLCBjb25zdCBwdGhyZWFkX2F0dHJfdCAqcmVzdHJpY3QgYXR0 cnAsIHZvaWQgKigqZW50cnkpKHZvaWQgKiksIHZvaWQgKnJlc3RyaWN0IGFyZykNCiB7DQogCWlu dCByZXQ7DQotCXNpemVfdCBzaXplLCBndWFyZDsNCisJc2l6ZV90IHNpemUsIGd1YXJkID0gMDsN CiAJc3RydWN0IHB0aHJlYWQgKnNlbGYsICpuZXc7DQogCXVuc2lnbmVkIGNoYXIgKm1hcCA9IDAs ICpzdGFjayA9IDAsICp0c2QgPSAwLCAqc3RhY2tfbGltaXQ7DQogCXVuc2lnbmVkIGZsYWdzID0g Q0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORA0KQEAgLTE1 MywxNiArNTQsNyBAQCBpbnQgcHRocmVhZF9jcmVhdGUocHRocmVhZF90ICpyZXN0cmljdCByZXMs IGNvbnN0IHB0aHJlYWRfYXR0cl90ICpyZXN0cmljdCBhdHRycA0KIA0KIAlpZiAoIWxpYmMuY2Fu X2RvX3RocmVhZHMpIHJldHVybiBFTk9TWVM7DQogCXNlbGYgPSBfX3B0aHJlYWRfc2VsZigpOw0K LQlpZiAoIWxpYmMudGhyZWFkZWQpIHsNCi0JCWZvciAoRklMRSAqZj1saWJjLm9mbF9oZWFkOyBm OyBmPWYtPm5leHQpDQotCQkJaW5pdF9maWxlX2xvY2soZik7DQotCQlpbml0X2ZpbGVfbG9jayhf X3N0ZGluX3VzZWQpOw0KLQkJaW5pdF9maWxlX2xvY2soX19zdGRvdXRfdXNlZCk7DQotCQlpbml0 X2ZpbGVfbG9jayhfX3N0ZGVycl91c2VkKTsNCi0JCV9fc3lzY2FsbChTWVNfcnRfc2lncHJvY21h c2ssIFNJR19VTkJMT0NLLCBTSUdQVF9TRVQsIDAsIF9OU0lHLzgpOw0KLQkJc2VsZi0+dHNkID0g KHZvaWQgKiopX19wdGhyZWFkX3RzZF9tYWluOw0KLQkJbGliYy50aHJlYWRlZCA9IDE7DQotCX0N CisJaWYgKCFsaWJjLnRocmVhZGVkKSBfX3RocmVhZF9lbmFibGUoKTsNCiAJaWYgKGF0dHJwKSBh dHRyID0gKmF0dHJwOw0KIA0KIAlfX2FjcXVpcmVfcHRjKCk7DQpAQCAtMTkxLDE0ICs4MywxNCBA QCBpbnQgcHRocmVhZF9jcmVhdGUocHRocmVhZF90ICpyZXN0cmljdCByZXMsIGNvbnN0IHB0aHJl YWRfYXR0cl90ICpyZXN0cmljdCBhdHRycA0KIA0KIAlpZiAoIXRzZCkgew0KIAkJaWYgKGd1YXJk KSB7DQotCQkJbWFwID0gbW1hcCgwLCBzaXplLCBQUk9UX05PTkUsIE1BUF9QUklWQVRFfE1BUF9B Tk9OLCAtMSwgMCk7DQorCQkJbWFwID0gX19tbWFwKDAsIHNpemUsIFBST1RfTk9ORSwgTUFQX1BS SVZBVEV8TUFQX0FOT04sIC0xLCAwKTsNCiAJCQlpZiAobWFwID09IE1BUF9GQUlMRUQpIGdvdG8g ZmFpbDsNCi0JCQlpZiAobXByb3RlY3QobWFwK2d1YXJkLCBzaXplLWd1YXJkLCBQUk9UX1JFQUR8 UFJPVF9XUklURSkpIHsNCi0JCQkJbXVubWFwKG1hcCwgc2l6ZSk7DQorCQkJaWYgKF9fbXByb3Rl Y3QobWFwK2d1YXJkLCBzaXplLWd1YXJkLCBQUk9UX1JFQUR8UFJPVF9XUklURSkpIHsNCisJCQkJ X19tdW5tYXAobWFwLCBzaXplKTsNCiAJCQkJZ290byBmYWlsOw0KIAkJCX0NCiAJCX0gZWxzZSB7 DQotCQkJbWFwID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1BSSVZB VEV8TUFQX0FOT04sIC0xLCAwKTsNCisJCQltYXAgPSBfX21tYXAoMCwgc2l6ZSwgUFJPVF9SRUFE fFBST1RfV1JJVEUsIE1BUF9QUklWQVRFfE1BUF9BTk9OLCAtMSwgMCk7DQogCQkJaWYgKG1hcCA9 PSBNQVBfRkFJTEVEKSBnb3RvIGZhaWw7DQogCQl9DQogCQl0c2QgPSBtYXAgKyBzaXplIC0gX19w dGhyZWFkX3RzZF9zaXplOw0KQEAgLTI0MCw3ICsxMzIsNyBAQCBpbnQgcHRocmVhZF9jcmVhdGUo cHRocmVhZF90ICpyZXN0cmljdCByZXMsIGNvbnN0IHB0aHJlYWRfYXR0cl90ICpyZXN0cmljdCBh dHRycA0KIA0KIAlpZiAocmV0IDwgMCkgew0KIAkJYV9kZWMoJmxpYmMudGhyZWFkc19taW51c18x KTsNCi0JCWlmIChtYXApIG11bm1hcChtYXAsIHNpemUpOw0KKwkJaWYgKG1hcCkgX19tdW5tYXAo bWFwLCBzaXplKTsNCiAJCXJldHVybiBFQUdBSU47DQogCX0NCiANCmRpZmYgLS1naXQgYS9zcmMv dGhyZWFkL3B0aHJlYWRfZGV0YWNoLmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfZGV0YWNoLmMNCmlu ZGV4IDY1MWMzOGUuLjVjYTc4NTUgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfZGV0 YWNoLmMNCisrKyBiL3NyYy90aHJlYWQvcHRocmVhZF9kZXRhY2guYw0KQEAgLTEsMTEgKzEsMTUg QEANCiAjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQogDQotaW50IHB0aHJlYWRfZGV0YWNoKHB0 aHJlYWRfdCB0KQ0KK2ludCBfX3B0aHJlYWRfam9pbihwdGhyZWFkX3QgdCwgdm9pZCAqKnJlcyk7 DQorDQoraW50IF9fcHRocmVhZF9kZXRhY2gocHRocmVhZF90IHQpDQogew0KIAkvKiBDYW5ub3Qg ZGV0YWNoIGEgdGhyZWFkIHRoYXQncyBhbHJlYWR5IGV4aXRpbmcgKi8NCiAJaWYgKGFfc3dhcCh0 LT5leGl0bG9jaywgMSkpDQotCQlyZXR1cm4gcHRocmVhZF9qb2luKHQsIDApOw0KKwkJcmV0dXJu IF9fcHRocmVhZF9qb2luKHQsIDApOw0KIAl0LT5kZXRhY2hlZCA9IDI7DQogCV9fdW5sb2NrKHQt PmV4aXRsb2NrKTsNCiAJcmV0dXJuIDA7DQogfQ0KKw0KK3dlYWtfYWxpYXMoX19wdGhyZWFkX2Rl dGFjaCwgcHRocmVhZF9kZXRhY2gpOw0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvcHRocmVhZF9l cXVhbC5jIGIvc3JjL3RocmVhZC9wdGhyZWFkX2VxdWFsLmMNCmluZGV4IDNlM2RmNGYuLjM4ZmI0 NWUgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfZXF1YWwuYw0KKysrIGIvc3JjL3Ro cmVhZC9wdGhyZWFkX2VxdWFsLmMNCkBAIC0xLDQgKzEsNCBAQA0KLSNpbmNsdWRlIDxwdGhyZWFk Lmg+DQorI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KIA0KIGludCAocHRocmVhZF9lcXVhbCko cHRocmVhZF90IGEsIHB0aHJlYWRfdCBiKQ0KIHsNCmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkL3B0 aHJlYWRfZXhpdC5jIGIvc3JjL3RocmVhZC9wdGhyZWFkX2V4aXQuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAuLjRmNTEyNjkNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90 aHJlYWQvcHRocmVhZF9leGl0LmMNCkBAIC0wLDAgKzEsMTMwIEBADQorI2RlZmluZSBfR05VX1NP VVJDRQ0KKyNpbmNsdWRlICJwdGhyZWFkX2ltcGwuaCINCisjaW5jbHVkZSAic3RkaW9faW1wbC5o Ig0KKyNpbmNsdWRlICJsaWJjLmgiDQorI2luY2x1ZGUgPHN5cy9tbWFuLmg+DQorI2luY2x1ZGUg PHRocmVhZHMuaD4NCisNCitzdGF0aWMgdm9pZCBkdW1teV8wKCkNCit7DQorfQ0KK3dlYWtfYWxp YXMoZHVtbXlfMCwgX19wdGhyZWFkX3RzZF9ydW5fZHRvcnMpOw0KK3dlYWtfYWxpYXMoZHVtbXlf MCwgX19kb19wcml2YXRlX3JvYnVzdF9saXN0KTsNCit3ZWFrX2FsaWFzKGR1bW15XzAsIF9fZG9f b3JwaGFuZWRfc3RkaW9fbG9ja3MpOw0KKw0KK19Ob3JldHVybiB2b2lkIF9fcHRocmVhZF9leGl0 KHZvaWQgKnJlc3VsdCkNCit7DQorCXB0aHJlYWRfdCBzZWxmID0gX19wdGhyZWFkX3NlbGYoKTsN CisJc2lnc2V0X3Qgc2V0Ow0KKw0KKwlzZWxmLT5yZXN1bHQgPSByZXN1bHQ7DQorDQorCXdoaWxl IChzZWxmLT5jYW5jZWxidWYpIHsNCisJCXZvaWQgKCpmKSh2b2lkICopID0gc2VsZi0+Y2FuY2Vs YnVmLT5fX2Y7DQorCQl2b2lkICp4ID0gc2VsZi0+Y2FuY2VsYnVmLT5fX3g7DQorCQlzZWxmLT5j YW5jZWxidWYgPSBzZWxmLT5jYW5jZWxidWYtPl9fbmV4dDsNCisJCWYoeCk7DQorCX0NCisNCisJ X19wdGhyZWFkX3RzZF9ydW5fZHRvcnMoKTsNCisNCisJX19sb2NrKHNlbGYtPmV4aXRsb2NrKTsN CisNCisJLyogTWFyayB0aGlzIHRocmVhZCBkZWFkIGJlZm9yZSBkZWNyZW1lbnRpbmcgY291bnQg Ki8NCisJX19sb2NrKHNlbGYtPmtpbGxsb2NrKTsNCisJc2VsZi0+ZGVhZCA9IDE7DQorDQorCS8q IEJsb2NrIGFsbCBzaWduYWxzIGJlZm9yZSBkZWNyZW1lbnRpbmcgdGhlIGxpdmUgdGhyZWFkIGNv dW50Lg0KKwkgKiBUaGlzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhhdCBkeW5hbWljYWxseSBh bGxvY2F0ZWQgVExTDQorCSAqIGlzIG5vdCB1bmRlci1hbGxvY2F0ZWQvb3Zlci1jb21taXR0ZWQs IGFuZCBwb3NzaWJseSBmb3Igb3RoZXINCisJICogcmVhc29ucyBhcyB3ZWxsLiAqLw0KKwlfX2Js b2NrX2FsbF9zaWdzKCZzZXQpOw0KKw0KKwkvKiBXYWl0IHRvIHVubG9jayB0aGUga2lsbCBsb2Nr LCB3aGljaCBnb3Zlcm5zIGZ1bmN0aW9ucyBsaWtlDQorCSAqIHB0aHJlYWRfa2lsbCB3aGljaCB0 YXJnZXQgYSB0aHJlYWQgaWQsIHVudGlsIHNpZ25hbHMgaGF2ZQ0KKwkgKiBiZWVuIGJsb2NrZWQu IFRoaXMgcHJlY2x1ZGVzIG9ic2VydmF0aW9uIG9mIHRoZSB0aHJlYWQgaWQNCisJICogYXMgYSBs aXZlIHRocmVhZCAod2l0aCBhcHBsaWNhdGlvbiBjb2RlIHJ1bm5pbmcgaW4gaXQpIGFmdGVyDQor CSAqIHRoZSB0aHJlYWQgd2FzIHJlcG9ydGVkIGRlYWQgYnkgRVNSQ0ggYmVpbmcgcmV0dXJuZWQu ICovDQorCV9fdW5sb2NrKHNlbGYtPmtpbGxsb2NrKTsNCisNCisJLyogSXQncyBpbXBvc3NpYmxl IHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgInRoZSBsYXN0IHRocmVhZCINCisJICogdW50 aWwgcGVyZm9ybWluZyB0aGUgYXRvbWljIGRlY3JlbWVudCwgc2luY2UgbXVsdGlwbGUgdGhyZWFk cw0KKwkgKiBjb3VsZCBleGl0IGF0IHRoZSBzYW1lIHRpbWUuIEZvciB0aGUgbGFzdCB0aHJlYWQs IHJldmVydCB0aGUNCisJICogZGVjcmVtZW50IGFuZCB1bmJsb2NrIHNpZ25hbHMgdG8gZ2l2ZSB0 aGUgYXRleGl0IGhhbmRsZXJzIGFuZA0KKwkgKiBzdGRpbyBjbGVhbnVwIGNvZGUgYSBjb25zaXN0 ZW50IHN0YXRlLiAqLw0KKwlpZiAoYV9mZXRjaF9hZGQoJmxpYmMudGhyZWFkc19taW51c18xLCAt MSk9PTApIHsNCisJCWxpYmMudGhyZWFkc19taW51c18xID0gMDsNCisJCV9fcmVzdG9yZV9zaWdz KCZzZXQpOw0KKwkJZXhpdCgwKTsNCisJfQ0KKw0KKwlpZiAoc2VsZi0+bG9jYWxlICE9ICZsaWJj Lmdsb2JhbF9sb2NhbGUpIHsNCisJCWFfZGVjKCZsaWJjLnVzZWxvY2FsZV9jbnQpOw0KKwkJaWYg KHNlbGYtPmxvY2FsZS0+Y3R5cGVfdXRmOCkNCisJCQlhX2RlYygmbGliYy5ieXRlbG9jYWxlX2Nu dF9taW51c18xKTsNCisJfQ0KKw0KKwlfX2RvX3ByaXZhdGVfcm9idXN0X2xpc3QoKTsNCisJX19k b19vcnBoYW5lZF9zdGRpb19sb2NrcygpOw0KKw0KKwlpZiAoc2VsZi0+ZGV0YWNoZWQgJiYgc2Vs Zi0+bWFwX2Jhc2UpIHsNCisJCS8qIERldGFjaGVkIHRocmVhZHMgbXVzdCBhdm9pZCB0aGUga2Vy bmVsIGNsZWFyX2NoaWxkX3RpZA0KKwkJICogZmVhdHVyZSwgc2luY2UgdGhlIHZpcnR1YWwgYWRk cmVzcyB3aWxsIGhhdmUgYmVlbg0KKwkJICogdW5tYXBwZWQgYW5kIHBvc3NpYmx5IGFscmVhZHkg cmV1c2VkIGJ5IGEgbmV3IG1hcHBpbmcNCisJCSAqIGF0IHRoZSB0aW1lIHRoZSBrZXJuZWwgd291 bGQgcGVyZm9ybSB0aGUgd3JpdGUuIEluDQorCQkgKiB0aGUgY2FzZSBvZiB0aHJlYWRzIHRoYXQg c3RhcnRlZCBvdXQgZGV0YWNoZWQsIHRoZQ0KKwkJICogaW5pdGlhbCBjbG9uZSBmbGFncyBhcmUg Y29ycmVjdCwgYnV0IGlmIHRoZSB0aHJlYWQgd2FzDQorCQkgKiBkZXRhY2hlZCBsYXRlciAoPT0g MiksIHdlIG5lZWQgdG8gY2xlYXIgaXQgaGVyZS4gKi8NCisJCWlmIChzZWxmLT5kZXRhY2hlZCA9 PSAyKSBfX3N5c2NhbGwoU1lTX3NldF90aWRfYWRkcmVzcywgMCk7DQorDQorCQkvKiBUaGUgZm9s bG93aW5nIGNhbGwgdW5tYXBzIHRoZSB0aHJlYWQncyBzdGFjayBtYXBwaW5nDQorCQkgKiBhbmQg dGhlbiBleGl0cyB3aXRob3V0IHRvdWNoaW5nIHRoZSBzdGFjay4gKi8NCisJCV9fdW5tYXBzZWxm KHNlbGYtPm1hcF9iYXNlLCBzZWxmLT5tYXBfc2l6ZSk7DQorCX0NCisNCisJZm9yICg7OykgX19z eXNjYWxsKFNZU19leGl0LCAwKTsNCit9DQorDQordm9pZCBfX2RvX2NsZWFudXBfcHVzaChzdHJ1 Y3QgX19wdGNiICpjYikNCit7DQorCWlmICghbGliYy5oYXNfdGhyZWFkX3BvaW50ZXIpIHJldHVy bjsNCisJc3RydWN0IHB0aHJlYWQgKnNlbGYgPSBfX3B0aHJlYWRfc2VsZigpOw0KKwljYi0+X19u ZXh0ID0gc2VsZi0+Y2FuY2VsYnVmOw0KKwlzZWxmLT5jYW5jZWxidWYgPSBjYjsNCit9DQorDQor dm9pZCBfX2RvX2NsZWFudXBfcG9wKHN0cnVjdCBfX3B0Y2IgKmNiKQ0KK3sNCisJaWYgKCFsaWJj Lmhhc190aHJlYWRfcG9pbnRlcikgcmV0dXJuOw0KKwlfX3B0aHJlYWRfc2VsZigpLT5jYW5jZWxi dWYgPSBjYi0+X19uZXh0Ow0KK30NCisNCisvKiBwdGhyZWFkX2tleV9jcmVhdGUuYyBvdmVycmlk ZXMgdGhpcyAqLw0KK3N0YXRpYyB2b2xhdGlsZSBzaXplX3QgZHVtbXkgPSAwOw0KK3dlYWtfYWxp YXMoZHVtbXksIF9fcHRocmVhZF90c2Rfc2l6ZSk7DQorc3RhdGljIHZvaWQgKmR1bW15X3RzZFsx XSA9IHsgMCB9Ow0KK3dlYWtfYWxpYXMoZHVtbXlfdHNkLCBfX3B0aHJlYWRfdHNkX21haW4pOw0K Kw0KK3N0YXRpYyBGSUxFICp2b2xhdGlsZSBkdW1teV9maWxlID0gMDsNCit3ZWFrX2FsaWFzKGR1 bW15X2ZpbGUsIF9fc3RkaW5fdXNlZCk7DQord2Vha19hbGlhcyhkdW1teV9maWxlLCBfX3N0ZG91 dF91c2VkKTsNCit3ZWFrX2FsaWFzKGR1bW15X2ZpbGUsIF9fc3RkZXJyX3VzZWQpOw0KKw0KK3N0 YXRpYyB2b2lkIGluaXRfZmlsZV9sb2NrKEZJTEUgKmYpDQorew0KKwlpZiAoZiAmJiBmLT5sb2Nr PDApIGYtPmxvY2sgPSAwOw0KK30NCisNCit2b2lkIF9fdGhyZWFkX2VuYWJsZSh2b2lkKQ0KK3sN CisJZm9yIChGSUxFICpmPWxpYmMub2ZsX2hlYWQ7IGY7IGY9Zi0+bmV4dCkNCisJCWluaXRfZmls ZV9sb2NrKGYpOw0KKwlpbml0X2ZpbGVfbG9jayhfX3N0ZGluX3VzZWQpOw0KKwlpbml0X2ZpbGVf bG9jayhfX3N0ZG91dF91c2VkKTsNCisJaW5pdF9maWxlX2xvY2soX19zdGRlcnJfdXNlZCk7DQor CV9fc3lzY2FsbChTWVNfcnRfc2lncHJvY21hc2ssIFNJR19VTkJMT0NLLCBTSUdQVF9TRVQsIDAs IF9OU0lHLzgpOw0KKwlfX3B0aHJlYWRfc2VsZigpLT50c2QgPSAodm9pZCAqKilfX3B0aHJlYWRf dHNkX21haW47DQorCWxpYmMudGhyZWFkZWQgPSAxOw0KK30NCisNCit3ZWFrX2FsaWFzKF9fcHRo cmVhZF9leGl0LCBwdGhyZWFkX2V4aXQpOw0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvcHRocmVh ZF9nZXRzcGVjaWZpYy5jIGIvc3JjL3RocmVhZC9wdGhyZWFkX2dldHNwZWNpZmljLmMNCmluZGV4 IGIyYTI4MmMuLmJmYzQyOTQgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfZ2V0c3Bl Y2lmaWMuYw0KKysrIGIvc3JjL3RocmVhZC9wdGhyZWFkX2dldHNwZWNpZmljLmMNCkBAIC0xLDcg KzEsMTAgQEANCiAjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQogDQotdm9pZCAqcHRocmVhZF9n ZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90IGspDQorc3RhdGljIHZvaWQgKl9fcHRocmVhZF9nZXRz cGVjaWZpYyhwdGhyZWFkX2tleV90IGspDQogew0KIAlzdHJ1Y3QgcHRocmVhZCAqc2VsZiA9IF9f cHRocmVhZF9zZWxmKCk7DQogCXJldHVybiBzZWxmLT50c2Rba107DQogfQ0KKw0KK3dlYWtfYWxp YXMoX19wdGhyZWFkX2dldHNwZWNpZmljLCBwdGhyZWFkX2dldHNwZWNpZmljKTsNCit3ZWFrX2Fs aWFzKF9fcHRocmVhZF9nZXRzcGVjaWZpYywgdHNzX2dldCk7DQpkaWZmIC0tZ2l0IGEvc3JjL3Ro cmVhZC9wdGhyZWFkX2pvaW4uYyBiL3NyYy90aHJlYWQvcHRocmVhZF9qb2luLmMNCmluZGV4IDcx OWM5MWMuLmJjYTg5YWEgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfam9pbi5jDQor KysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfam9pbi5jDQpAQCAtMSwxNSArMSwxOSBAQA0KICNpbmNs dWRlICJwdGhyZWFkX2ltcGwuaCINCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4NCiANCitpbnQgX19t dW5tYXAodm9pZCAqLCBzaXplX3QpOw0KKw0KIHN0YXRpYyB2b2lkIGR1bW15KHZvaWQgKnApDQog ew0KIH0NCiANCi1pbnQgcHRocmVhZF9qb2luKHB0aHJlYWRfdCB0LCB2b2lkICoqcmVzKQ0KK2lu dCBfX3B0aHJlYWRfam9pbihwdGhyZWFkX3QgdCwgdm9pZCAqKnJlcykNCiB7DQogCWludCB0bXA7 DQogCXdoaWxlICgodG1wID0gdC0+dGlkKSkgX190aW1lZHdhaXQoJnQtPnRpZCwgdG1wLCAwLCAw LCBkdW1teSwgMCwgMCk7DQogCWlmIChyZXMpICpyZXMgPSB0LT5yZXN1bHQ7DQotCWlmICh0LT5t YXBfYmFzZSkgbXVubWFwKHQtPm1hcF9iYXNlLCB0LT5tYXBfc2l6ZSk7DQorCWlmICh0LT5tYXBf YmFzZSkgX19tdW5tYXAodC0+bWFwX2Jhc2UsIHQtPm1hcF9zaXplKTsNCiAJcmV0dXJuIDA7DQog fQ0KKw0KK3dlYWtfYWxpYXMoX19wdGhyZWFkX2pvaW4sIHB0aHJlYWRfam9pbik7DQpkaWZmIC0t Z2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX2tleV9jcmVhdGUuYyBiL3NyYy90aHJlYWQvcHRocmVh ZF9rZXlfY3JlYXRlLmMNCmluZGV4IGE5MTg3ZjcuLmJmY2Q1OTcgMTAwNjQ0DQotLS0gYS9zcmMv dGhyZWFkL3B0aHJlYWRfa2V5X2NyZWF0ZS5jDQorKysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfa2V5 X2NyZWF0ZS5jDQpAQCAtOSw3ICs5LDcgQEAgc3RhdGljIHZvaWQgbm9kdG9yKHZvaWQgKmR1bW15 KQ0KIHsNCiB9DQogDQotaW50IHB0aHJlYWRfa2V5X2NyZWF0ZShwdGhyZWFkX2tleV90ICprLCB2 b2lkICgqZHRvcikodm9pZCAqKSkNCitpbnQgX19wdGhyZWFkX2tleV9jcmVhdGUocHRocmVhZF9r ZXlfdCAqaywgdm9pZCAoKmR0b3IpKHZvaWQgKikpDQogew0KIAl1bnNpZ25lZCBpID0gKHVpbnRw dHJfdCkmayAvIDE2ICUgUFRIUkVBRF9LRVlTX01BWDsNCiAJdW5zaWduZWQgaiA9IGk7DQpAQCAt MzEsNyArMzEsNyBAQCBpbnQgcHRocmVhZF9rZXlfY3JlYXRlKHB0aHJlYWRfa2V5X3QgKmssIHZv aWQgKCpkdG9yKSh2b2lkICopKQ0KIAlyZXR1cm4gRUFHQUlOOw0KIH0NCiANCi1pbnQgcHRocmVh ZF9rZXlfZGVsZXRlKHB0aHJlYWRfa2V5X3QgaykNCitpbnQgX19wdGhyZWFkX2tleV9kZWxldGUo cHRocmVhZF9rZXlfdCBrKQ0KIHsNCiAJa2V5c1trXSA9IDA7DQogCXJldHVybiAwOw0KQEAgLTUz LDMgKzUzLDYgQEAgdm9pZCBfX3B0aHJlYWRfdHNkX3J1bl9kdG9ycygpDQogCQl9DQogCX0NCiB9 DQorDQord2Vha19hbGlhcyhfX3B0aHJlYWRfa2V5X2RlbGV0ZSwgcHRocmVhZF9rZXlfZGVsZXRl KTsNCit3ZWFrX2FsaWFzKF9fcHRocmVhZF9rZXlfY3JlYXRlLCBwdGhyZWFkX2tleV9jcmVhdGUp Ow0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvcHRocmVhZF9tdXRleF9sb2NrLmMgYi9zcmMvdGhy ZWFkL3B0aHJlYWRfbXV0ZXhfbG9jay5jDQppbmRleCAyYTlhM2FhLi45OTNmNTRjIDEwMDY0NA0K LS0tIGEvc3JjL3RocmVhZC9wdGhyZWFkX211dGV4X2xvY2suYw0KKysrIGIvc3JjL3RocmVhZC9w dGhyZWFkX211dGV4X2xvY2suYw0KQEAgLTEsMTAgKzEsMTQgQEANCiAjaW5jbHVkZSAicHRocmVh ZF9pbXBsLmgiDQogDQotaW50IHB0aHJlYWRfbXV0ZXhfbG9jayhwdGhyZWFkX211dGV4X3QgKm0p DQoraW50IF9fcHRocmVhZF9tdXRleF90aW1lZGxvY2socHRocmVhZF9tdXRleF90ICpyZXN0cmlj dCBtLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnJlc3RyaWN0IGF0KTsNCisNCitpbnQgX19wdGhy ZWFkX211dGV4X2xvY2socHRocmVhZF9tdXRleF90ICptKQ0KIHsNCiAJaWYgKChtLT5fbV90eXBl JjE1KSA9PSBQVEhSRUFEX01VVEVYX05PUk1BTA0KIAkgICAgJiYgIWFfY2FzKCZtLT5fbV9sb2Nr LCAwLCBFQlVTWSkpDQogCQlyZXR1cm4gMDsNCiANCi0JcmV0dXJuIHB0aHJlYWRfbXV0ZXhfdGlt ZWRsb2NrKG0sIDApOw0KKwlyZXR1cm4gX19wdGhyZWFkX211dGV4X3RpbWVkbG9jayhtLCAwKTsN CiB9DQorDQord2Vha19hbGlhcyhfX3B0aHJlYWRfbXV0ZXhfbG9jaywgcHRocmVhZF9tdXRleF9s b2NrKTsNCmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkL3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrLmMg Yi9zcmMvdGhyZWFkL3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrLmMNCmluZGV4IGFlODgzZjkuLjE2 MjQxZWUgMTAwNjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfbXV0ZXhfdGltZWRsb2NrLmMN CisrKyBiL3NyYy90aHJlYWQvcHRocmVhZF9tdXRleF90aW1lZGxvY2suYw0KQEAgLTEsNiArMSw2 IEBADQogI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KIA0KLWludCBwdGhyZWFkX211dGV4X3Rp bWVkbG9jayhwdGhyZWFkX211dGV4X3QgKnJlc3RyaWN0IG0sIGNvbnN0IHN0cnVjdCB0aW1lc3Bl YyAqcmVzdHJpY3QgYXQpDQoraW50IF9fcHRocmVhZF9tdXRleF90aW1lZGxvY2socHRocmVhZF9t dXRleF90ICpyZXN0cmljdCBtLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnJlc3RyaWN0IGF0KQ0K IHsNCiAJaWYgKChtLT5fbV90eXBlJjE1KSA9PSBQVEhSRUFEX01VVEVYX05PUk1BTA0KIAkgICAg JiYgIWFfY2FzKCZtLT5fbV9sb2NrLCAwLCBFQlVTWSkpDQpAQCAtMzAsMyArMzAsNSBAQCBpbnQg cHRocmVhZF9tdXRleF90aW1lZGxvY2socHRocmVhZF9tdXRleF90ICpyZXN0cmljdCBtLCBjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKg0KIAl9DQogCXJldHVybiByOw0KIH0NCisNCit3ZWFrX2FsaWFz KF9fcHRocmVhZF9tdXRleF90aW1lZGxvY2ssIHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrKTsNCmRp ZmYgLS1naXQgYS9zcmMvdGhyZWFkL3B0aHJlYWRfbXV0ZXhfdHJ5bG9jay5jIGIvc3JjL3RocmVh ZC9wdGhyZWFkX211dGV4X3RyeWxvY2suYw0KaW5kZXggZTg1MTUxNy4uOWJlNzkzMCAxMDA2NDQN Ci0tLSBhL3NyYy90aHJlYWQvcHRocmVhZF9tdXRleF90cnlsb2NrLmMNCisrKyBiL3NyYy90aHJl YWQvcHRocmVhZF9tdXRleF90cnlsb2NrLmMNCkBAIC01MCw5ICs1MCwxMSBAQCBpbnQgX19wdGhy ZWFkX211dGV4X3RyeWxvY2tfb3duZXIocHRocmVhZF9tdXRleF90ICptKQ0KIAlyZXR1cm4gMDsN CiB9DQogDQotaW50IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayhwdGhyZWFkX211dGV4X3QgKm0pDQor c3RhdGljIGludCBfX3B0aHJlYWRfbXV0ZXhfdHJ5bG9jayhwdGhyZWFkX211dGV4X3QgKm0pDQog ew0KIAlpZiAoKG0tPl9tX3R5cGUmMTUpID09IFBUSFJFQURfTVVURVhfTk9STUFMKQ0KIAkJcmV0 dXJuIGFfY2FzKCZtLT5fbV9sb2NrLCAwLCBFQlVTWSkgJiBFQlVTWTsNCiAJcmV0dXJuIF9fcHRo cmVhZF9tdXRleF90cnlsb2NrX293bmVyKG0pOw0KIH0NCisNCit3ZWFrX2FsaWFzKF9fcHRocmVh ZF9tdXRleF90cnlsb2NrLCBwdGhyZWFkX211dGV4X3RyeWxvY2spOw0KZGlmZiAtLWdpdCBhL3Ny Yy90aHJlYWQvcHRocmVhZF9tdXRleF91bmxvY2suYyBiL3NyYy90aHJlYWQvcHRocmVhZF9tdXRl eF91bmxvY2suYw0KaW5kZXggNDY3NjFkOS4uYTdmMzljNyAxMDA2NDQNCi0tLSBhL3NyYy90aHJl YWQvcHRocmVhZF9tdXRleF91bmxvY2suYw0KKysrIGIvc3JjL3RocmVhZC9wdGhyZWFkX211dGV4 X3VubG9jay5jDQpAQCAtMyw3ICszLDcgQEANCiB2b2lkIF9fdm1fbG9ja19pbXBsKGludCk7DQog dm9pZCBfX3ZtX3VubG9ja19pbXBsKHZvaWQpOw0KIA0KLWludCBwdGhyZWFkX211dGV4X3VubG9j ayhwdGhyZWFkX211dGV4X3QgKm0pDQoraW50IF9fcHRocmVhZF9tdXRleF91bmxvY2socHRocmVh ZF9tdXRleF90ICptKQ0KIHsNCiAJcHRocmVhZF90IHNlbGY7DQogCWludCB3YWl0ZXJzID0gbS0+ X21fd2FpdGVyczsNCkBAIC0zNiwzICszNiw1IEBAIGludCBwdGhyZWFkX211dGV4X3VubG9jayhw dGhyZWFkX211dGV4X3QgKm0pDQogCQlfX3dha2UoJm0tPl9tX2xvY2ssIDEsIHByaXYpOw0KIAly ZXR1cm4gMDsNCiB9DQorDQord2Vha19hbGlhcyhfX3B0aHJlYWRfbXV0ZXhfdW5sb2NrLCBwdGhy ZWFkX211dGV4X3VubG9jayk7DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX29uY2Uu YyBiL3NyYy90aHJlYWQvcHRocmVhZF9vbmNlLmMNCmluZGV4IDJlYjBmOTMuLjA1ZWJlNjkgMTAw NjQ0DQotLS0gYS9zcmMvdGhyZWFkL3B0aHJlYWRfb25jZS5jDQorKysgYi9zcmMvdGhyZWFkL3B0 aHJlYWRfb25jZS5jDQpAQCAtNiw3ICs2LDcgQEAgc3RhdGljIHZvaWQgdW5kbyh2b2lkICpjb250 cm9sKQ0KIAlfX3dha2UoY29udHJvbCwgMSwgMSk7DQogfQ0KIA0KLWludCBwdGhyZWFkX29uY2Uo cHRocmVhZF9vbmNlX3QgKmNvbnRyb2wsIHZvaWQgKCppbml0KSh2b2lkKSkNCitpbnQgX19wdGhy ZWFkX29uY2UocHRocmVhZF9vbmNlX3QgKmNvbnRyb2wsIHZvaWQgKCppbml0KSh2b2lkKSkNCiB7 DQogCXN0YXRpYyBpbnQgd2FpdGVyczsNCiANCkBAIC0zNCwzICszNCw1IEBAIGludCBwdGhyZWFk X29uY2UocHRocmVhZF9vbmNlX3QgKmNvbnRyb2wsIHZvaWQgKCppbml0KSh2b2lkKSkNCiAJCXJl dHVybiAwOw0KIAl9DQogfQ0KKw0KK3dlYWtfYWxpYXMoX19wdGhyZWFkX29uY2UsIHB0aHJlYWRf b25jZSk7DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX3NldGNhbmNlbHN0YXRlLmMg Yi9zcmMvdGhyZWFkL3B0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUuYw0KaW5kZXggMDYwYmNkYy4uMjI2 ODIxNyAxMDA2NDQNCi0tLSBhL3NyYy90aHJlYWQvcHRocmVhZF9zZXRjYW5jZWxzdGF0ZS5jDQor KysgYi9zcmMvdGhyZWFkL3B0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUuYw0KQEAgLTEsNiArMSw2IEBA DQogI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KIA0KLWludCBwdGhyZWFkX3NldGNhbmNlbHN0 YXRlKGludCBuZXcsIGludCAqb2xkKQ0KK2ludCBfX3B0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoaW50 IG5ldywgaW50ICpvbGQpDQogew0KIAlpZiAobmV3ID4gMVUpIHJldHVybiBFSU5WQUw7DQogCWlm ICghbGliYy5oYXNfdGhyZWFkX3BvaW50ZXIpIHJldHVybiBFTk9TWVM7DQpAQCAtOSwzICs5LDUg QEAgaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUoaW50IG5ldywgaW50ICpvbGQpDQogCXNlbGYt PmNhbmNlbGRpc2FibGUgPSBuZXc7DQogCXJldHVybiAwOw0KIH0NCisNCit3ZWFrX2FsaWFzKF9f cHRocmVhZF9zZXRjYW5jZWxzdGF0ZSwgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZSk7DQpkaWZmIC0t Z2l0IGEvc3JjL3RocmVhZC9wdGhyZWFkX3NldGNhbmNlbHR5cGUuYyBiL3NyYy90aHJlYWQvcHRo cmVhZF9zZXRjYW5jZWx0eXBlLmMNCmluZGV4IGJmMGEzZjMuLmQ0OTNjMWIgMTAwNjQ0DQotLS0g YS9zcmMvdGhyZWFkL3B0aHJlYWRfc2V0Y2FuY2VsdHlwZS5jDQorKysgYi9zcmMvdGhyZWFkL3B0 aHJlYWRfc2V0Y2FuY2VsdHlwZS5jDQpAQCAtMSwxMSArMSwxMyBAQA0KICNpbmNsdWRlICJwdGhy ZWFkX2ltcGwuaCINCiANCit2b2lkIF9fcHRocmVhZF90ZXN0Y2FuY2VsKHZvaWQpOw0KKw0KIGlu dCBwdGhyZWFkX3NldGNhbmNlbHR5cGUoaW50IG5ldywgaW50ICpvbGQpDQogew0KIAlzdHJ1Y3Qg cHRocmVhZCAqc2VsZiA9IF9fcHRocmVhZF9zZWxmKCk7DQogCWlmIChuZXcgPiAxVSkgcmV0dXJu IEVJTlZBTDsNCiAJaWYgKG9sZCkgKm9sZCA9IHNlbGYtPmNhbmNlbGFzeW5jOw0KIAlzZWxmLT5j YW5jZWxhc3luYyA9IG5ldzsNCi0JaWYgKG5ldykgcHRocmVhZF90ZXN0Y2FuY2VsKCk7DQorCWlm IChuZXcpIF9fcHRocmVhZF90ZXN0Y2FuY2VsKCk7DQogCXJldHVybiAwOw0KIH0NCmRpZmYgLS1n aXQgYS9zcmMvdGhyZWFkL3B0aHJlYWRfc2V0c3BlY2lmaWMuYyBiL3NyYy90aHJlYWQvcHRocmVh ZF9zZXRzcGVjaWZpYy5jDQppbmRleCA1NWU0NmE4Li5kZDE4Yjk2IDEwMDY0NA0KLS0tIGEvc3Jj L3RocmVhZC9wdGhyZWFkX3NldHNwZWNpZmljLmMNCisrKyBiL3NyYy90aHJlYWQvcHRocmVhZF9z ZXRzcGVjaWZpYy5jDQpAQCAtMSw2ICsxLDYgQEANCiAjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgi DQogDQotaW50IHB0aHJlYWRfc2V0c3BlY2lmaWMocHRocmVhZF9rZXlfdCBrLCBjb25zdCB2b2lk ICp4KQ0KK2ludCBfX3B0aHJlYWRfc2V0c3BlY2lmaWMocHRocmVhZF9rZXlfdCBrLCBjb25zdCB2 b2lkICp4KQ0KIHsNCiAJc3RydWN0IHB0aHJlYWQgKnNlbGYgPSBfX3B0aHJlYWRfc2VsZigpOw0K IAkvKiBBdm9pZCB1bm5lY2Vzc2FyeSBDT1cgKi8NCkBAIC0xMCwzICsxMCw1IEBAIGludCBwdGhy ZWFkX3NldHNwZWNpZmljKHB0aHJlYWRfa2V5X3QgaywgY29uc3Qgdm9pZCAqeCkNCiAJfQ0KIAly ZXR1cm4gMDsNCiB9DQorDQord2Vha19hbGlhcyhfX3B0aHJlYWRfc2V0c3BlY2lmaWMsIHB0aHJl YWRfc2V0c3BlY2lmaWMpOw0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvcHRocmVhZF90ZXN0Y2Fu Y2VsLmMgYi9zcmMvdGhyZWFkL3B0aHJlYWRfdGVzdGNhbmNlbC5jDQppbmRleCBiYTVmN2M2Li5l ZTQ4ZTZkIDEwMDY0NA0KLS0tIGEvc3JjL3RocmVhZC9wdGhyZWFkX3Rlc3RjYW5jZWwuYw0KKysr IGIvc3JjL3RocmVhZC9wdGhyZWFkX3Rlc3RjYW5jZWwuYw0KQEAgLTcsNyArNyw5IEBAIHN0YXRp YyB2b2lkIGR1bW15KCkNCiANCiB3ZWFrX2FsaWFzKGR1bW15LCBfX3Rlc3RjYW5jZWwpOw0KIA0K LXZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsKCkNCit2b2lkIF9fcHRocmVhZF90ZXN0Y2FuY2VsKCkN CiB7DQogCV9fdGVzdGNhbmNlbCgpOw0KIH0NCisNCit3ZWFrX2FsaWFzKF9fcHRocmVhZF90ZXN0 Y2FuY2VsLCBwdGhyZWFkX3Rlc3RjYW5jZWwpOw0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvdGhy ZF9jcmVhdGUuYyBiL3NyYy90aHJlYWQvdGhyZF9jcmVhdGUuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAuLmY3MmY5OTINCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJl YWQvdGhyZF9jcmVhdGUuYw0KQEAgLTAsMCArMSw5OCBAQA0KKyNkZWZpbmUgX0dOVV9TT1VSQ0UN CisjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQorI2luY2x1ZGUgInN0ZGlvX2ltcGwuaCINCisj aW5jbHVkZSAibGliYy5oIg0KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPg0KKyNpbmNsdWRlIDx0aHJl YWRzLmg+DQorDQordm9pZCAqX19tbWFwKHZvaWQgKiwgc2l6ZV90LCBpbnQsIGludCwgaW50LCBv ZmZfdCk7DQoraW50IF9fbXVubWFwKHZvaWQgKiwgc2l6ZV90KTsNCitpbnQgX19tcHJvdGVjdCh2 b2lkICosIHNpemVfdCwgaW50KTsNCit2b2lkIF9fdGhyZWFkX2VuYWJsZSh2b2lkKTsNCitfTm9y ZXR1cm4gdm9pZCBfX3B0aHJlYWRfZXhpdCh2b2lkICopOw0KK3ZvaWQgKl9fY29weV90bHModW5z aWduZWQgY2hhciAqKTsNCitleHRlcm4gdm9sYXRpbGUgc2l6ZV90IF9fcHRocmVhZF90c2Rfc2l6 ZTsNCisNCitfTm9yZXR1cm4gdm9pZCB0aHJkX2V4aXQoaW50IHJlc3VsdCkgew0KKwlfX3B0aHJl YWRfZXhpdCgodm9pZCopKGludHB0cl90KXJlc3VsdCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGR1 bW15XzAoKQ0KK3sNCit9DQord2Vha19hbGlhcyhkdW1teV8wLCBfX2FjcXVpcmVfcHRjKTsNCit3 ZWFrX2FsaWFzKGR1bW15XzAsIF9fcmVsZWFzZV9wdGMpOw0KKw0KK3N0YXRpYyBpbnQgc3RhcnQo dm9pZCAqcCkNCit7DQorCXRocmRfdCBzZWxmID0gcDsNCisJaW50ICgqc3RhcnQpKHZvaWQqKSA9 IChpbnQoKikodm9pZCopKSBzZWxmLT5zdGFydDsNCisJdGhyZF9leGl0KHN0YXJ0KHNlbGYtPnN0 YXJ0X2FyZykpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorI2RlZmluZSBST1VORCh4KSAoKCh4KStQ QUdFX1NJWkUtMSkmLVBBR0VfU0laRSkNCisNCitpbnQgdGhyZF9jcmVhdGUodGhyZF90ICpyZXMs IHRocmRfc3RhcnRfdCBlbnRyeSwgdm9pZCAqYXJnKQ0KK3sNCisJaW50IHJldCA9IC1FTk9NRU07 DQorCXNpemVfdCBndWFyZCA9IFJPVU5EKERFRkFVTFRfR1VBUkRfU0laRSk7DQorCXNpemVfdCBz aXplID0gZ3VhcmQgKyBST1VORChERUZBVUxUX1NUQUNLX1NJWkUgKyBsaWJjLnRsc19zaXplICsg IF9fcHRocmVhZF90c2Rfc2l6ZSk7DQorCXN0cnVjdCBwdGhyZWFkICpzZWxmLCAqbmV3Ow0KKwl1 bnNpZ25lZCBjaGFyICptYXAsICpzdGFjaywgKnRzZCwgKnN0YWNrX2xpbWl0Ow0KKwl1bnNpZ25l ZCBmbGFncyA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hB TkQNCisJCXwgQ0xPTkVfVEhSRUFEIHwgQ0xPTkVfU1lTVlNFTSB8IENMT05FX1NFVFRMUw0KKwkJ fCBDTE9ORV9QQVJFTlRfU0VUVElEIHwgQ0xPTkVfQ0hJTERfQ0xFQVJUSUQgfCBDTE9ORV9ERVRB Q0hFRDsNCisNCisJaWYgKCFsaWJjLmNhbl9kb190aHJlYWRzKSByZXR1cm4gdGhyZF9lcnJvcjsN CisJc2VsZiA9IF9fcHRocmVhZF9zZWxmKCk7DQorCWlmICghbGliYy50aHJlYWRlZCkgX190aHJl YWRfZW5hYmxlKCk7DQorDQorCV9fYWNxdWlyZV9wdGMoKTsNCisNCisJaWYgKGd1YXJkKSB7DQor CQltYXAgPSBfX21tYXAoMCwgc2l6ZSwgUFJPVF9OT05FLCBNQVBfUFJJVkFURXxNQVBfQU5PTiwg LTEsIDApOw0KKwkJaWYgKG1hcCA9PSBNQVBfRkFJTEVEKSBnb3RvIENMRUFOVVA7DQorCQlpZiAo X19tcHJvdGVjdChtYXArZ3VhcmQsIHNpemUtZ3VhcmQsIFBST1RfUkVBRHxQUk9UX1dSSVRFKSkg ew0KKwkJCV9fbXVubWFwKG1hcCwgc2l6ZSk7DQorCQkJZ290byBDTEVBTlVQOw0KKwkJfQ0KKwl9 IGVsc2Ugew0KKwkJbWFwID0gX19tbWFwKDAsIHNpemUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBN QVBfUFJJVkFURXxNQVBfQU5PTiwgLTEsIDApOw0KKwkJaWYgKG1hcCA9PSBNQVBfRkFJTEVEKSBn b3RvIENMRUFOVVA7DQorCX0NCisJdHNkID0gbWFwICsgc2l6ZSAtIF9fcHRocmVhZF90c2Rfc2l6 ZTsNCisJc3RhY2sgPSB0c2QgLSBsaWJjLnRsc19zaXplOw0KKwlzdGFja19saW1pdCA9IG1hcCAr IGd1YXJkOw0KKw0KKwluZXcgPSBfX2NvcHlfdGxzKHRzZCAtIGxpYmMudGxzX3NpemUpOw0KKwlu ZXctPm1hcF9iYXNlID0gbWFwOw0KKwluZXctPm1hcF9zaXplID0gc2l6ZTsNCisJbmV3LT5zdGFj ayA9IHN0YWNrOw0KKwluZXctPnN0YWNrX3NpemUgPSBzdGFjayAtIHN0YWNrX2xpbWl0Ow0KKwlu ZXctPnN0YXJ0ID0gKHZvaWQgKigqKSh2b2lkKikpZW50cnk7DQorCW5ldy0+c3RhcnRfYXJnID0g YXJnOw0KKwluZXctPnNlbGYgPSBuZXc7DQorCW5ldy0+dHNkID0gKHZvaWQgKil0c2Q7DQorCW5l dy0+bG9jYWxlID0gJmxpYmMuZ2xvYmFsX2xvY2FsZTsNCisJbmV3LT51bmJsb2NrX2NhbmNlbCA9 IHNlbGYtPmNhbmNlbDsNCisJbmV3LT5jYW5hcnkgPSBzZWxmLT5jYW5hcnk7DQorDQorCWFfaW5j KCZsaWJjLnRocmVhZHNfbWludXNfMSk7DQorCXJldCA9IF9fY2xvbmUoc3RhcnQsIHN0YWNrLCBm bGFncywgbmV3LCAmbmV3LT50aWQsIFRQX0FESihuZXcpLCAmbmV3LT50aWQpOw0KKw0KKyBDTEVB TlVQOg0KKwlfX3JlbGVhc2VfcHRjKCk7DQorDQorCWlmIChyZXQgPiAwKSB7DQorICAgICAgICAg ICpyZXMgPSBuZXc7DQorICAgICAgICAgIHJldCA9IHRocmRfc3VjY2VzczsNCisgICAgICAgIH0g ZWxzZSBpZiAocmV0ID09IC1FTk9NRU0pIHsNCisgICAgICAgICAgcmV0ID0gdGhyZF9ub21lbTsN CisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgIGFfZGVjKCZsaWJjLnRocmVhZHNfbWludXNf MSk7DQorICAgICAgICAgIGlmIChtYXApIF9fbXVubWFwKG1hcCwgc2l6ZSk7DQorICAgICAgICAg IHJldCA9IHRocmRfZXJyb3I7DQorCX0NCisgICAgICAgIHJldHVybiByZXQ7DQorfQ0KZGlmZiAt LWdpdCBhL3NyYy90aHJlYWQvdGhyZF9jdXJyZW50LmMgYi9zcmMvdGhyZWFkL3RocmRfY3VycmVu dC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uMTcyODUzNQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC90aHJkX2N1cnJlbnQuYw0KQEAgLTAsMCArMSwxMSBA QA0KKyNpbmNsdWRlICJwdGhyZWFkX2ltcGwuaCINCisjaW5jbHVkZSA8dGhyZWFkcy5oPg0KKw0K Ky8qIE5vdCBhbGwgYXJjaCBoYXZlIF9fcHRocmVhZF9zZWxmIGFzIGEgc3ltYm9sLiBPbiBzb21l IHRoaXMgcmVzdWx0cw0KKyAgIGluIHNvbWUgbWFnaWMuIFNvIHRoaXMgImNhbGwiIHRvIF9fcHRo cmVhZF9zZWxmIGlzIG5vdCBuZWNlc3NhcnkgYQ0KKyAgIHRhaWwgY2FsbC4gSW4gcGFydGljdWxh ciwgb3RoZXIgdGhhbiB0aGUgYXBwZWFyYW5jZSwgdGhyZF9jdXJyZW50DQorICAgY2FuIG5vdCBi ZSBpbXBsZW1lbnRlZCBhcyBhIHdlYWsgc3ltYm9sLiAqLw0KK3B0aHJlYWRfdCB0aHJkX2N1cnJl bnQoKQ0KK3sNCisJcmV0dXJuIF9fcHRocmVhZF9zZWxmKCk7DQorfQ0KZGlmZiAtLWdpdCBhL3Ny Yy90aHJlYWQvdGhyZF9kZXRhY2guYyBiL3NyYy90aHJlYWQvdGhyZF9kZXRhY2guYw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjIxMWI4ZmINCi0tLSAvZGV2L251bGwNCisr KyBiL3NyYy90aHJlYWQvdGhyZF9kZXRhY2guYw0KQEAgLTAsMCArMSwxOCBAQA0KKyNpbmNsdWRl ICJwdGhyZWFkX2ltcGwuaCINCisjaW5jbHVkZSA8dGhyZWFkcy5oPg0KKw0KK2ludCBfX211bm1h cCh2b2lkICosIHNpemVfdCk7DQorDQoraW50IHRocmRfZGV0YWNoKHRocmRfdCB0KQ0KK3sNCisJ LyogQ2Fubm90IGRldGFjaCBhIHRocmVhZCB0aGF0J3MgYWxyZWFkeSBleGl0aW5nICovDQorCWlm IChhX3N3YXAodC0+ZXhpdGxvY2ssIDEpKXsNCisJCWludCB0bXA7DQorCQl3aGlsZSAoKHRtcCA9 IHQtPnRpZCkpIF9fdGltZWR3YWl0KCZ0LT50aWQsIHRtcCwgMCwgMCwgMCwgMCwgMCk7DQorCQlp ZiAodC0+bWFwX2Jhc2UpIF9fbXVubWFwKHQtPm1hcF9iYXNlLCB0LT5tYXBfc2l6ZSk7DQorCX0g ZWxzZSB7DQorCQl0LT5kZXRhY2hlZCA9IDI7DQorCQlfX3VubG9jayh0LT5leGl0bG9jayk7DQor CX0NCisJcmV0dXJuIHRocmRfc3VjY2VzczsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC90 aHJkX2VxdWFsLmMgYi9zcmMvdGhyZWFkL3RocmRfZXF1YWwuYw0KbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDAwMDAwMDAuLmFjNDlhNDQNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJl YWQvdGhyZF9lcXVhbC5jDQpAQCAtMCwwICsxLDYgQEANCisjaW5jbHVkZSA8dGhyZWFkcy5oPg0K Kw0KK2ludCAodGhyZF9lcXVhbCkodGhyZF90IGEsIHRocmRfdCBiKQ0KK3sNCisJcmV0dXJuIGE9 PWI7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy90aHJlYWQvdGhyZF9qb2luLmMgYi9zcmMvdGhyZWFk L3RocmRfam9pbi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uYThjN2Fl ZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC90aHJkX2pvaW4uYw0KQEAgLTAsMCAr MSwxNiBAQA0KKyNpbmNsdWRlICJwdGhyZWFkX2ltcGwuaCINCisjaW5jbHVkZSA8c3lzL21tYW4u aD4NCisjaW5jbHVkZSA8dGhyZWFkcy5oPg0KKw0KK2ludCBfX211bm1hcCh2b2lkICosIHNpemVf dCk7DQorDQorLyogQzExIHRocmVhZHMgY2Fubm90IGJlIGNhbmNlbGVkLCBzbyB0aGVyZSBpcyBu byBuZWVkIGZvciBhDQorICAgY2FuY2VsYXRpb24gZnVuY3Rpb24gcG9pbnRlciwgaGVyZS4gKi8N CitpbnQgdGhyZF9qb2luKHRocmRfdCB0LCBpbnQgKnJlcykNCit7DQorCWludCB0bXA7DQorCXdo aWxlICgodG1wID0gdC0+dGlkKSkgX190aW1lZHdhaXQoJnQtPnRpZCwgdG1wLCAwLCAwLCAwLCAw LCAwKTsNCisJaWYgKHJlcykgKnJlcyA9IChpbnQpKGludHB0cl90KXQtPnJlc3VsdDsNCisJaWYg KHQtPm1hcF9iYXNlKSBfX211bm1hcCh0LT5tYXBfYmFzZSwgdC0+bWFwX3NpemUpOw0KKwlyZXR1 cm4gdGhyZF9zdWNjZXNzOw0KK30NCmRpZmYgLS1naXQgYS9zcmMvdGhyZWFkL3Rzc19jcmVhdGUu YyBiL3NyYy90aHJlYWQvdHNzX2NyZWF0ZS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMC4uMGNiYWRjOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvc3JjL3RocmVhZC90c3NfY3Jl YXRlLmMNCkBAIC0wLDAgKzEsMTMgQEANCisjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQorI2lu Y2x1ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgX19wdGhyZWFkX2tleV9jcmVhdGUocHRocmVhZF9r ZXlfdCAqaywgdm9pZCAoKmR0b3IpKHZvaWQgKikpOw0KKw0KK2ludCB0c3NfY3JlYXRlKHRzc190 ICp0c3MsIHRzc19kdG9yX3QgZHRvcikNCit7DQorCV9fVEhSRF9BQklfTUFSSzsNCisJLyogRGlm ZmVyZW50IGVycm9yIHJldHVybnMgYXJlIHBvc3NpYmxlLiBDIGdsdWVzIHRoZW0gdG9nZXRoZXIg aW50bw0KKwkgICBqdXN0IGZhaWx1cmUgbm90aWZpY2F0aW9uLiBDYW4ndCBiZSBvcHRpbWl6ZWQg dG8gYSB0YWlsIGNhbGwsDQorCSAgIHVubGVzcyB0aHJkX2Vycm9yIGVxdWFscyBFQUdBSU4uICov DQorCXJldHVybiBfX3B0aHJlYWRfa2V5X2NyZWF0ZSh0c3MsIGR0b3IpID8gdGhyZF9lcnJvciA6 IHRocmRfc3VjY2VzczsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC90c3NfZGVsZXRlLmMg Yi9zcmMvdGhyZWFkL3Rzc19kZWxldGUuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAuLmQ1MDczMWYNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJlYWQvdHNzX2RlbGV0 ZS5jDQpAQCAtMCwwICsxLDggQEANCisjaW5jbHVkZSAicHRocmVhZF9pbXBsLmgiDQorI2luY2x1 ZGUgPHRocmVhZHMuaD4NCisNCitpbnQgX19wdGhyZWFkX2tleV9kZWxldGUocHRocmVhZF9rZXlf dCBrKTsNCisNCit2b2lkICh0c3NfZGVsZXRlKSh0c3NfdCBrZXkpIHsNCisJKHZvaWQpX19wdGhy ZWFkX2tleV9kZWxldGUoa2V5KTsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RocmVhZC90c3Nfc2V0 LmMgYi9zcmMvdGhyZWFkL3Rzc19zZXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAuLjcwYzRmYjcNCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aHJlYWQvdHNzX3NldC5j DQpAQCAtMCwwICsxLDEzIEBADQorI2luY2x1ZGUgInB0aHJlYWRfaW1wbC5oIg0KKyNpbmNsdWRl IDx0aHJlYWRzLmg+DQorDQoraW50IHRzc19zZXQodHNzX3Qgaywgdm9pZCAqeCkNCit7DQorCXN0 cnVjdCBwdGhyZWFkICpzZWxmID0gX19wdGhyZWFkX3NlbGYoKTsNCisJLyogQXZvaWQgdW5uZWNl c3NhcnkgQ09XICovDQorCWlmIChzZWxmLT50c2Rba10gIT0geCkgew0KKwkJc2VsZi0+dHNkW2td ID0geDsNCisJCXNlbGYtPnRzZF91c2VkID0gMTsNCisJfQ0KKwlyZXR1cm4gdGhyZF9zdWNjZXNz Ow0KK30NCmRpZmYgLS1naXQgYS9zcmMvdGltZS90aHJkX3NsZWVwLmMgYi9zcmMvdGltZS90aHJk X3NsZWVwLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi42NTcwYjBjDQot LS0gL2Rldi9udWxsDQorKysgYi9zcmMvdGltZS90aHJkX3NsZWVwLmMNCkBAIC0wLDAgKzEsMzEg QEANCisjaW5jbHVkZSA8dGltZS5oPg0KKyNpbmNsdWRlIDxlcnJuby5oPg0KKyNpbmNsdWRlICJz eXNjYWxsLmgiDQorI2luY2x1ZGUgImxpYmMuaCINCisjaW5jbHVkZSAidGhyZWFkcy5oIg0KKw0K Ky8qIFJvdWdobHkgX19zeXNjYWxsIGFscmVhZHkgcmV0dXJucyB0aGUgcmlnaHQgdGhpbmc6IDAg aWYgYWxsIHdlbnQNCisgICB3ZWxsIG9yIGEgbmVnYXRpdmUgZXJyb3IgaW5kaWNhdGlvbiwgb3Ro ZXJ3aXNlLiAqLw0KK2ludCB0aHJkX3NsZWVwKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqcmVxLCBz dHJ1Y3QgdGltZXNwZWMgKnJlbSkNCit7DQorICBpbnQgcmV0ID0gX19zeXNjYWxsKFNZU19uYW5v c2xlZXAsIHJlcSwgcmVtKTsNCisgIC8vIGNvbXBpbGUgdGltZSBjb21wYXJpc29uLCBjb25zdGFu dCBwcm9wYWdhdGVkDQorICBpZiAoRUlOVFIgIT0gMSkgew0KKyAgICBzd2l0Y2ggKHJldCkgew0K KyAgICBjYXNlIDA6IHJldHVybiAwOw0KKyAgICAgIC8qIGVycm9yIGRlc2NyaWJlZCBieSBQT1NJ WDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgIC8qIEVJTlRS ICBUaGUgbmFub3NsZWVwKCkgZnVuY3Rpb24gd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLiAq Lw0KKyAgICAgIC8qIFRoZSBDMTEgd29yZGluZyBpczogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLw0KKyAgICAgIC8qIC0xIGlmIGl0IGhhcyBiZWVuIGludGVycnVw dGVkIGJ5IGEgc2lnbmFsICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICBjYXNlIC1FSU5UUjog IHJldHVybiAtMTsNCisgICAgICAvKiBlcnJvciBkZXNjcmliZWQgYnkgUE9TSVggKi8NCisgICAg Y2FzZSAtRUlOVkFMOiByZXR1cm4gLTI7DQorICAgICAgLyogZGVzY3JpYmVkIGZvciBsaW51eCAq Lw0KKyAgICBjYXNlIC1FRkFVTFQ6IHJldHVybiAtMzsNCisgICAgICAvKiBObyBvdGhlciBlcnJv ciByZXR1cm5zIGFyZSBzcGVjaWZpZWQuICovDQorICAgIGRlZmF1bHQ6IHJldHVybiBJTlRfTUlO Ow0KKyAgICB9DQorICB9DQorICAvLyBwb3RlbnRpYWxseSBhIHRhaWwgY2FsbA0KKyAgcmV0dXJu IHJldDsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL3RpbWUvdGltZXNwZWNfZ2V0LmMgYi9zcmMvdGlt ZS90aW1lc3BlY19nZXQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmJm NzhlNWENCi0tLSAvZGV2L251bGwNCisrKyBiL3NyYy90aW1lL3RpbWVzcGVjX2dldC5jDQpAQCAt MCwwICsxLDkgQEANCisjaW5jbHVkZSA8dGltZS5oPg0KKw0KK2ludCBfX2Nsb2NrX2dldHRpbWUo Y2xvY2tpZF90IGNsaywgc3RydWN0IHRpbWVzcGVjICp0cyk7DQorDQorLyogdGhlIGJhc2UgYXJn dW1lbnQgaXMgc2ltcGx5IGlnbm9yZWQsIHRoZXJlIGlzIG5vIG90aGVyIGltcGxlbWVudGVkDQor ICAgdmFsdWUgdGhhbiBUSU1FX1VUQy4gKi8NCitpbnQgdGltZXNwZWNfZ2V0KHN0cnVjdCB0aW1l c3BlYyAqIHRzLCBpbnQgYmFzZSkgew0KKyAgcmV0dXJuIF9fY2xvY2tfZ2V0dGltZShDTE9DS19S RUFMVElNRSwgdHMpIDwgMCA/IDAgOiBiYXNlOw0KK30NCn== --=-L0FHj8RBw/GABhtu/XLb-- --=-hgsa8+YDmt4sXbQ5ALzV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEABECAAYFAlP+V6EACgkQD9PoadrVN+JSrACfRXvBsaIQO8+SuBQMSRYG6ZU8 0NQAoI/9BfqJDkofHhYNU+8dPUDFfXg3 =1FwL -----END PGP SIGNATURE----- --=-hgsa8+YDmt4sXbQ5ALzV--