Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2zar-000nPI-1l for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 22:42:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2zZr-00EzEe-0z for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 22:41:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2zZq-00EzED-2O for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 22:41:22 +0000 Received: from relay4-d.mail.gandi.net ([217.70.183.196]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w2zZl-0000000115U-1PAb for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 22:41:22 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 70D233E804; Wed, 18 Mar 2026 22:41:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1773873676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=szE1JiCWF3ZUGm+1HU3cJZPMA6zdEoOhn6QRTcnqxcA=; b=Qsikc7tOyMrSs5vDKBVWdBXB/eHqJpOSLOU0uuAKIdN5sgSpT5ankcRIYxRAGjG8MOqcrk 5zi2AwZSnu/nfEVTskcjQmpbRemwNVP2g57pLYPVDgSIV9GlWbnD1A43bA6b1RKB4xZeTn K4gthyxvdPGG4F5rlODNG53IEC8h+n5FHAI2hyGi1jgdXkit7vgvLO9vzJdopIqDA6PMn2 KcJ7sNfpg7DHBbLv89NBRnW595YUqflifK1+zO78kb8Be7EHQgyuYJ9R+NR/DIlMuyrxPe O89vof9GZGU8jBx6Gtty7xk9K3QJt9MFHEfphqQOoddhVvaMFsM53qHk4Mbp1Q== Content-Type: multipart/mixed; boundary="------------vSGELOV63zKPU0uxfVWRgz8W" Message-ID: Date: Wed, 18 Mar 2026 23:41:13 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: EXPLAIN: showing ReadStream / prefetch stats From: Tomas Vondra To: Andres Freund , Lukas Fittl Cc: Melanie Plageman , PostgreSQL Hackers References: <0fa0794e-7e34-4fdb-8e35-a59ef8ce5246@vondra.me> <8125d541-1116-46e6-a5b0-e47a390214f1@vondra.me> <812dc1c8-6533-4c59-afc2-819c37eb5c10@vondra.me> Content-Language: en-US In-Reply-To: <812dc1c8-6533-4c59-afc2-819c37eb5c10@vondra.me> X-GND-Sasl: tomas@vondra.me X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdehfeehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffhvfevfhgjsehmtderredtvdejnecuhfhrohhmpefvohhmrghsucggohhnughrrgcuoehtohhmrghssehvohhnughrrgdrmhgvqeenucggtffrrghtthgvrhhnpeetheegudegieegvdeitdegkeetiedtheelveffgefggfeuvdduueffleeuvdevueenucfkphepkeeirdegledrvdeftddrvddtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekiedrgeelrddvfedtrddvtdeipdhhvghloheplgdutddrudefjedrtddrvdgnpdhmrghilhhfrhhomhepthhomhgrshesvhhonhgurhgrrdhmvgdpqhhiugepjedtffdvfeefgfektdegpdhmohguvgepshhmthhpohhuthdpnhgspghrtghpthhtohepgedprhgtphhtthhopegrnhgurhgvshesrghnrghrrgiivghlrdguvgdprhgtphhtthhopehluhhkrghssehfihhtthhlrdgtohhmpdhrtghpthhtohepmhgvlhgrnhhivghplhgrghgvmhgrnhesghhmrghilhdrtghomhdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi! Here's a v3 of the patch, adopting the idea of passing the data through a field in the scan descriptor. I've kept it broken into multiple smaller pieces 0002-0006 to show the incremental changes, but in the end this should be all merged. 0001 - a prerequisite patch 0002 - v2 of the patch 0003 - basic cleanup / helpers to reduce code duplication, various smaller fixes and improvements, ... 0004 - changes the design to use a new field in TableScanDesc 0005 - minor cleanup of 0004 0006 - support for TidRangeScan (the last scan using ReadStream), requires changes similar to SeqScan in v2 Overall, I think it looks reasonable. There are probably ways to simplify it further (e.g. by introducing a new read_stream_begin_ helper, so that it's not necessary to update every caller of read_stream_begin_relation by adding a NULL argument). The 0003 also changes the EXPLAIN to enable IO by default, just like we do for BUFFERS. It seems like a reasonable precedent to me. 0004 reworks the tracking to use a field in TableScanDesc, instead of adding a table AM callback. I agree it seems simpler / less disruptive. 0005 is a minor cleanup for 0004 0006 adds EXPLAIN support for TidRangeScan, similarly to how 0002 adds support for SeqScan (but that still uses the TAM interface) regards -- Tomas Vondra --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-bufmgr-Return-whether-WaitReadBuffers-needed-to-w.patch" Content-Disposition: attachment; filename*0="v3-0001-bufmgr-Return-whether-WaitReadBuffers-needed-to-w.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhZDYxNGE2NTlkZjE3NDIyNDBiMzQyMTJkYTdmOTY2OWI1ODZkNjIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CkRhdGU6IFR1ZSwgMyBNYXIgMjAyNiAxNjo1MDo1MCAtMDUwMApTdWJqZWN0OiBbUEFU Q0ggdjMgMS82XSBidWZtZ3I6IFJldHVybiB3aGV0aGVyIFdhaXRSZWFkQnVmZmVycygpIG5l ZWRlZCB0bwogd2FpdAoKSW4gYSBzdWJzZXF1ZW50IGNvbW1pdCByZWFkX3N0cmVhbS5jIHdp bGwgdXNlIHRoaXMgYXMgYW4gaW5wdXQgdG8gdGhlIHJlYWQKYWhlYWQgZGlzdGFuY2UuCgpB dXRob3I6ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLwpC YWNrcGF0Y2g6Ci0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgfCAx OCArKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDAwYmM2 MDk1MjlhLi5jOGVjN2ZiNGY1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKQEAgLTE3MzgsMTIgKzE3MzgsMjAgQEAgUHJvY2Vzc1JlYWRCdWZmZXJzUmVzdWx0KFJl YWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRpb24pCiAJQXNzZXJ0KG9wZXJhdGlvbi0+bmJs b2Nrc19kb25lIDw9IG9wZXJhdGlvbi0+bmJsb2Nrcyk7CiB9CiAKLXZvaWQKKy8qCisgKiBX YWl0IGZvciB0aGUgSU8gb3BlcmF0aW9uIGluaXRpYXRlZCBieSBTdGFydFJlYWRCdWZmZXJz KCkgZXQgYWwgdG8KKyAqIGNvbXBsZXRlLgorICoKKyAqIFJldHVybnMgd2hldGhlciB0aGUg SU8gb3BlcmF0aW9uIGFscmVhZHkgaGFkIGNvbXBsZXRlZCBieSB0aGUgdGltZSBvZiB0aGlz CisgKiBjYWxsLgorICovCitib29sCiBXYWl0UmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVy YXRpb24gKm9wZXJhdGlvbikKIHsKIAlQZ0Fpb1JldHVybiAqYWlvX3JldCA9ICZvcGVyYXRp b24tPmlvX3JldHVybjsKIAlJT0NvbnRleHQJaW9fY29udGV4dDsKIAlJT09iamVjdAlpb19v YmplY3Q7CisJYm9vbAkJbmVlZGVkX3dhaXQgPSBmYWxzZTsKIAogCWlmIChvcGVyYXRpb24t PnBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCiAJewpAQCAtMTgwNSw2ICsx ODEzLDcgQEAgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24pCiAJCQkJaW5zdHJfdGltZQlpb19zdGFydCA9IHBnc3RhdF9wcmVwYXJlX2lvX3RpbWUo dHJhY2tfaW9fdGltaW5nKTsKIAogCQkJCXBnYWlvX3dyZWZfd2FpdCgmb3BlcmF0aW9uLT5p b193cmVmKTsKKwkJCQluZWVkZWRfd2FpdCA9IHRydWU7CiAKIAkJCQkvKgogCQkJCSAqIFRo ZSBJTyBvcGVyYXRpb24gaXRzZWxmIHdhcyBhbHJlYWR5IGNvdW50ZWQgZWFybGllciwgaW4K QEAgLTE4MzUsNiArMTg0NCwxMiBAQCBXYWl0UmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVy YXRpb24gKm9wZXJhdGlvbikKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCS8q CisJCSAqIElmIHRoZSBJTyBjb21wbGV0ZWQgb25seSBwYXJ0aWFsbHksIHdlIG5lZWQgdG8g cGVyZm9ybSBhZGRpdGlvbmFsCisJCSAqIHdvcmssIGNvbnNpZGVyIHRoYXQgYSBmb3JtIG9m IGhhdmluZyBoYWQgdG8gd2FpdC4KKwkJICovCisJCW5lZWRlZF93YWl0ID0gdHJ1ZTsKKwog CQkvKgogCQkgKiBUaGlzIG1heSBvbmx5IGNvbXBsZXRlIHRoZSBJTyBwYXJ0aWFsbHksIGVp dGhlciBiZWNhdXNlIHNvbWUKIAkJICogYnVmZmVycyB3ZXJlIGFscmVhZHkgdmFsaWQsIG9y IGJlY2F1c2Ugb2YgYSBwYXJ0aWFsIHJlYWQuCkBAIC0xODUxLDYgKzE4NjYsNyBAQCBXYWl0 UmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9wZXJhdGlvbikKIAlDaGVja1Jl YWRCdWZmZXJzT3BlcmF0aW9uKG9wZXJhdGlvbiwgdHJ1ZSk7CiAKIAkvKiBOQjogUkVBRF9E T05FIHRyYWNlcG9pbnQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gY29tcGxldGlvbiBjYWxs YmFjayAqLworCXJldHVybiBuZWVkZWRfd2FpdDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1n ci5oCmluZGV4IDQwMTc4OTZmOTUxLi5hMWVmMDQzNTRkZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1n ci5oCkBAIC0yNDksNyArMjQ5LDcgQEAgZXh0ZXJuIGJvb2wgU3RhcnRSZWFkQnVmZmVycyhS ZWFkQnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0aW9uLAogCQkJCQkJCSBCbG9ja051bWJlciBi bG9ja051bSwKIAkJCQkJCQkgaW50ICpuYmxvY2tzLAogCQkJCQkJCSBpbnQgZmxhZ3MpOwot ZXh0ZXJuIHZvaWQgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVy YXRpb24pOworZXh0ZXJuIGJvb2wgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0 aW9uICpvcGVyYXRpb24pOwogCiBleHRlcm4gdm9pZCBSZWxlYXNlQnVmZmVyKEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsZWFzZUJ1ZmZlcihCdWZmZXIgYnVmZmVy KTsKLS0gCjIuNTMuMAoK --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-explain-show-prefetch-stats-in-EXPLAIN-ANALYZE-VE.patch" Content-Disposition: attachment; filename*0="v3-0002-explain-show-prefetch-stats-in-EXPLAIN-ANALYZE-VE.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlNGIwNDliMWRiNzA0ODBkODZjNmRkOGVjYTM5OGZmNjIxMWQ3YTg0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB0ZXN0IDx0ZXN0PgpEYXRlOiBUaHUsIDEyIE1hciAy MDI2IDAyOjA0OjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MyAyLzZdIGV4cGxhaW46IHNo b3cgcHJlZmV0Y2ggc3RhdHMgaW4gRVhQTEFJTiAoQU5BTFlaRSwKIFZFUkJPU0UpCgpUaGlz IGFkZHMgZGV0YWlscyBhYm91dCBBSU8gLyBwcmVmZXRjaCBmb3IgYSBudW1iZXIgb2YgZXhl Y3V0b3Igbm9kZXMKdXNpbmcgdGhlIFJlYWRTdHJlYW0sIG5vdGFibHk6CgotIFNlcVNjYW4K LSBCaXRtYXBIZWFwU2NhbgoKVGhlIHN0YXRpc3RpY3MgaXMgdHJhY2tlZCBieSB0aGUgUmVh ZFN0cmVhbSwgYW5kIHRoZW4gcHJvcGFnYXRlZCB1cAp0aHJvdWdoIHRoZSB0YWJsZSBBTSBp bnRlcmZhY2UuCgpUaGUgUmVhZFN0cmVhbSB0cmFja3MgdGhlIHN0YXRpc3RpY3MgdW5jb25k aXRpb25hbGx5LCBpLmUuIGV2ZW4gb3V0c2lkZQpFWFBMQUlOIEFOQUxZWkUgZXRjLiBUaGUg YW1vdW50IG9mIHN0YXRpc3RpY3MgaXMgdHJpdmlhbCAoYSBoYW5kZnVsIG9mCmludGVnZXIg Y291bnRlcnMpLCBpdCdzIG5vdCB3b3J0aCBnYXRpbmcgdGhpcyBieSBhIGZsYWcuCgpUaGUg VEFNIGdldHMgb25lIG5ldyBjYWxsYmFjayAic2Nhbl9zdGF0cyIsIHRvIGNvbGxlY3Qgc3Rh dHMgZnJvbSB0aGUKc2NhbiAod2hpY2ggZmV0Y2ggdHVwbGVzIGZyb20gdGhlIFRBTSkuIFRo ZXJlIGlzIGFsc28gYSBuZXcgc3RydWN0ClRhYmxlU2NhblN0YXRzRGF0YS9UYWJsZVNjYW5T dGF0cyB0byBzZXBhcmF0ZSB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZQphY3R1YWwgVEFNIGlt cGxlbWVudGF0aW9uLgoKVGhpcyByZXF1aXJlZCBpbXByb3ZpbmcgU2VxU2NhbiB0byBwcm9w ZXJseSBzZXR1cCBzaGFyZWQgaW5zdHJ1bWVudGF0aW9uCmJldHdlZW4gdGhlIGxlYWRlciBh bmQgd29ya2VycywgY29sbGVjdCBpdCBhdCB0aGUgZW5kIG9mIGEgc2NhbiwgZXRjLgotLS0K IGRvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sICAgICAgICAgICAgIHwgIDEyICsKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgIHwgIDMyICsrKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgfCAyNjYgKysrKysrKysrKysr KysrKysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5jICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgfCAgMTYg KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgIHwgMTIzICsr KysrKysrKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMgICAgIHwg IDY0ICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCAgICAgICAgICAgICAgfCAg MjcgKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICB8ICAx NyArKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmggICAgfCAgNDUgKysr LQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uaCAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2luY2x1ZGUvc3RvcmFnZS9yZWFkX3N0cmVhbS5oICAgICAgICAgfCAgIDMgKwogMTcgZmls ZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2V4cGxhaW4uc2dtbAppbmRleCA3ZGVlNzdmZDM2Ni4uOWRhMTZjNzdkNzMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvZXhwbGFpbi5zZ21sCkBAIC00Niw2ICs0Niw3IEBAIEVYUExBSU4gWyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSA8cmVwCiAgICAgVElNSU5HIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJv b2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAgU1VNTUFSWSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQogICAgIE1FTU9SWSBbIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQor ICAgIElPIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxh Y2VhYmxlPiBdCiAgICAgRk9STUFUIHsgVEVYVCB8IFhNTCB8IEpTT04gfCBZQU1MIH0KIDwv c3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTI5NSw2ICsyOTYsMTcgQEAgUk9M TEJBQ0s7CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklPPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSW5jbHVkZSBpbmZvcm1hdGlvbiBv biBJL08gcGVyZm9ybWVkIGJ5IGVhY2ggbm9kZS4KKyAgICAgIFRoaXMgcGFyYW1ldGVyIG1h eSBvbmx5IGJlIHVzZWQgd2hlbiA8bGl0ZXJhbD5BTkFMWVpFPC9saXRlcmFsPiBpcyBhbHNv CisgICAgICBlbmFibGVkLiAgSXQgZGVmYXVsdHMgdG8gPGxpdGVyYWw+RkFMU0U8L2xpdGVy YWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkZPUk1BVDwvbGl0 ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBlNWJkMDYyZGU3Ny4uYjEzZjg0M2NmYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC0xNDE2LDYgKzE0MTYsMzggQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2Nh bkRlc2Mgc3NjYW4pCiAJcGZyZWUoc2Nhbik7CiB9CiAKKy8qCisgKiBoZWFwX3NjYW5fc3Rh dHMKKyAqCQlyZXR1cm4gc3RhdHMgY29sbGVjdGVkIGJ5IHRoZSByZWFkIHN0cmVhbQorICoK KyAqIFJldHVybnMgTlVMTCBpZiB0aGUgc2NhbiBpcyBub3QgdXNpbmcgYSByZWFkIHN0cmVh bS4KKyAqLworVGFibGVTY2FuU3RhdHMKK2hlYXBfc2Nhbl9zdGF0cyhUYWJsZVNjYW5EZXNj IHNzY2FuKQoreworCUhlYXBTY2FuRGVzYyBzY2FuID0gKEhlYXBTY2FuRGVzYykgc3NjYW47 CisJUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbiBzdGF0czsKKwlUYWJsZVNjYW5TdGF0cyBy ZXM7CisKKwlpZiAoIXNjYW4tPnJzX3JlYWRfc3RyZWFtKQorCQlyZXR1cm4gTlVMTDsKKwor CXN0YXRzID0gcmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3RhdHMoc2Nhbi0+cnNfcmVhZF9zdHJl YW0pOworCisJcmVzID0gcGFsbG9jMChzaXplb2YoVGFibGVTY2FuU3RhdHNEYXRhKSk7CisK KwlyZXMtPnByZWZldGNoX2NvdW50ID0gc3RhdHMucHJlZmV0Y2hfY291bnQ7CisJcmVzLT5k aXN0YW5jZV9zdW0gPSBzdGF0cy5kaXN0YW5jZV9zdW07CisJcmVzLT5kaXN0YW5jZV9tYXgg PSBzdGF0cy5kaXN0YW5jZV9tYXg7CisJcmVzLT5kaXN0YW5jZV9jYXBhY2l0eSA9IHN0YXRz LmRpc3RhbmNlX2NhcGFjaXR5OworCXJlcy0+c3RhbGxfY291bnQgPSBzdGF0cy5zdGFsbF9j b3VudDsKKwlyZXMtPmlvX2NvdW50ID0gc3RhdHMuaW9fY291bnQ7CisJcmVzLT5pb19uYmxv Y2tzID0gc3RhdHMuaW9fbmJsb2NrczsKKwlyZXMtPmlvX2luX3Byb2dyZXNzID0gc3RhdHMu aW9faW5fcHJvZ3Jlc3M7CisKKwlyZXR1cm4gcmVzOworfQorCiBIZWFwVHVwbGUKIGhlYXBf Z2V0bmV4dChUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbikK IHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDI1 M2E3MzViNmMxLi41MWFjMjE2NGFmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCkBAIC0yNjUwLDYgKzI2NTAsNyBAQCBzdGF0aWMgY29uc3QgVGFi bGVBbVJvdXRpbmUgaGVhcGFtX21ldGhvZHMgPSB7CiAKIAkuc2Nhbl9zZXRfdGlkcmFuZ2Ug PSBoZWFwX3NldF90aWRyYW5nZSwKIAkuc2Nhbl9nZXRuZXh0c2xvdF90aWRyYW5nZSA9IGhl YXBfZ2V0bmV4dHNsb3RfdGlkcmFuZ2UsCisJLnNjYW5fc3RhdHMgPSBoZWFwX3NjYW5fc3Rh dHMsCiAKIAkucGFyYWxsZWxzY2FuX2VzdGltYXRlID0gdGFibGVfYmxvY2tfcGFyYWxsZWxz Y2FuX2VzdGltYXRlLAogCS5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZSA9IHRhYmxlX2Jsb2Nr X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IDI5NmVhOGExZWQyLi5hZDg2ZmI3NTJjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpA QCAtMTMsNiArMTMsOCBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1 ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9jcmVhdGVhcy5oIgpAQCAtMTM5LDYgKzE0MSwxMSBAQCBzdGF0 aWMgdm9pZCBzaG93X2hhc2hhZ2dfaW5mbyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEV4cGxhaW5T dGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd19pbmRleHNlYXJjaGVzX2luZm8oUGxhblN0 YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd190 aWRiaXRtYXBfaW5mbyhCaXRtYXBIZWFwU2NhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CUV4cGxhaW5TdGF0ZSAqZXMpOworc3RhdGljIHZvaWQgc2hvd19zY2FuX2lvX2luZm8oU2Nh blN0YXRlICpwbGFuc3RhdGUsCisJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzKTsKK3N0YXRp YyB2b2lkIHNob3dfd29ya2VyX2lvX2luZm8oUGxhblN0YXRlICpwbGFuc3RhdGUsCisJCQkJ CQkJCUV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkJCWludCB3b3JrZXIpOwogc3RhdGljIHZv aWQgc2hvd19pbnN0cnVtZW50YXRpb25fY291bnQoY29uc3QgY2hhciAqcWxhYmVsLCBpbnQg d2hpY2gsCiAJCQkJCQkJCQkgICBQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRl ICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2ZvcmVpZ25zY2FuX2luZm8oRm9yZWlnblNjYW5T dGF0ZSAqZnNzdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7CkBAIC0yMDA5LDYgKzIwMTYsNyBA QCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAog CQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dzIFJlbW92ZWQgYnkgRmlsdGVy IiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJCXNob3dfdGlkYml0bWFw X2luZm8oKEJpdG1hcEhlYXBTY2FuU3RhdGUgKikgcGxhbnN0YXRlLCBlcyk7CisJCQlzaG93 X3NjYW5faW9faW5mbygoU2NhblN0YXRlICopIHBsYW5zdGF0ZSwgZXMpOwogCQkJYnJlYWs7 CiAJCWNhc2UgVF9TYW1wbGVTY2FuOgogCQkJc2hvd190YWJsZXNhbXBsZSgoKFNhbXBsZVNj YW4gKikgcGxhbiktPnRhYmxlc2FtcGxlLApAQCAtMjAyNyw2ICsyMDM1LDcgQEAgRXhwbGFp bk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJ CQkgICBwbGFuc3RhdGUsIGVzKTsKIAkJCWlmIChJc0EocGxhbiwgQ3RlU2NhbikpCiAJCQkJ c2hvd19jdGVzY2FuX2luZm8oY2FzdE5vZGUoQ3RlU2NhblN0YXRlLCBwbGFuc3RhdGUpLCBl cyk7CisJCQlzaG93X3NjYW5faW9faW5mbygoU2NhblN0YXRlICopIHBsYW5zdGF0ZSwgZXMp OwogCQkJYnJlYWs7CiAJCWNhc2UgVF9HYXRoZXI6CiAJCQl7CkBAIC0yMjk3LDggKzIzMDYs OCBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3Jz LAogCWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKIAkJc2hvd193YWxf dXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPndhbHVzYWdlKTsKIAotCS8qIFBy ZXBhcmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCi0JaWYgKGVzLT53b3JrZXJz X3N0YXRlICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+dmVyYm9zZSkKKwkv KiBQcmVwYXJlIHBlci13b3JrZXIgYnVmZmVyL1dBTC9JTyB1c2FnZSAqLworCWlmIChlcy0+ d29ya2Vyc19zdGF0ZSAmJiAoZXMtPmJ1ZmZlcnMgfHwgZXMtPndhbCB8fCBlcy0+aW8pICYm IGVzLT52ZXJib3NlKQogCXsKIAkJV29ya2VySW5zdHJ1bWVudGF0aW9uICp3ID0gcGxhbnN0 YXRlLT53b3JrZXJfaW5zdHJ1bWVudDsKIApAQCAtMjMxNSw2ICsyMzI0LDEwIEBAIEV4cGxh aW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCQkJc2hv d19idWZmZXJfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5idWZ1c2FnZSk7CiAJCQlpZiAoZXMt PndhbCkKIAkJCQlzaG93X3dhbF91c2FnZShlcywgJmluc3RydW1lbnQtPndhbHVzYWdlKTsK KworCQkJLyogc2hvdyBwcmVmZXRjaCBpbmZvIGZvciB0aGUgZ2l2ZW4gd29ya2VyICovCisJ CQlzaG93X3dvcmtlcl9pb19pbmZvKHBsYW5zdGF0ZSwgZXMsIG4pOworCiAJCQlFeHBsYWlu Q2xvc2VXb3JrZXIobiwgZXMpOwogCQl9CiAJfQpAQCAtMzk4NSw2ICszOTk4LDI1NSBAQCBz aG93X3RpZGJpdG1hcF9pbmZvKEJpdG1hcEhlYXBTY2FuU3RhdGUgKnBsYW5zdGF0ZSwgRXhw bGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBzaG93X3NjYW5faW9faW5mbworICoJ CXNob3cgaW5mbyBhYm91dCBwcmVmZXRjaGluZyBmb3IgYSBzZXEvYml0bWFwIHNjYW4KKyAq CisgKiBTaG93cyBzdW1tYXJ5IG9mIHN0YXRzIGZvciBsZWFkZXIgYW5kIHdvcmtlcnMgKGlm IGFueSkuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93X3NjYW5faW9faW5mbyhTY2FuU3RhdGUg KnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKK3sKKwlQbGFuCSAgICpwbGFuID0gcGxh bnN0YXRlLT5wcy5wbGFuOworCVRhYmxlU2NhblN0YXRzCWxlYWRlcl9zdGF0czsKKwlUYWJs ZVNjYW5TdGF0c0RhdGEJc3RhdHM7CisKKwlpZiAoIWVzLT5pbykKKwkJcmV0dXJuOworCisJ Lyogc2NhbiBub3Qgc3RhcnRlZCwgbm8gcHJlZmV0Y2ggc3RhdHMgKi8KKwlpZiAoIShwbGFu c3RhdGUgJiYgcGxhbnN0YXRlLT5zc19jdXJyZW50U2NhbkRlc2MpKQorCQlyZXR1cm47CisK KwkvKiBjb2xsZWN0IHByZWZldGNoIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVhZCBzdHJlYW0g Ki8KKwlsZWFkZXJfc3RhdHMgPSB0YWJsZV9zY2FuX3N0YXRzKHBsYW5zdGF0ZS0+c3NfY3Vy cmVudFNjYW5EZXNjKTsKKworCWlmIChsZWFkZXJfc3RhdHMpCisJeworCQltZW1jcHkoJnN0 YXRzLCBsZWFkZXJfc3RhdHMsIHNpemVvZihUYWJsZVNjYW5TdGF0c0RhdGEpKTsKKwl9CisJ ZWxzZQorCXsKKwkJbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKFRhYmxlU2NhblN0YXRzRGF0 YSkpOworCX0KKworCS8qIEluaXRpYWxpemUgY291bnRlcnMgd2l0aCBzdGF0cyBmcm9tIHRo ZSBsb2NhbCBwcm9jZXNzIGZpcnN0ICovCisJc3dpdGNoIChub2RlVGFnKHBsYW4pKQorCXsK KwkJY2FzZSBUX1NlcVNjYW46CisJCQl7CisJCQkJU2hhcmVkU2VxU2Nhbkluc3RydW1lbnRh dGlvbiAqc2luc3RydW1lbnQKKwkJCQkJPSAoKFNlcVNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUp LT5zaW5zdHJ1bWVudDsKKworCQkJCS8qIGdldCB0aGUgc3VtIG9mIHRoZSBjb3VudGVycyBz ZXQgd2l0aGluIGVhY2ggYW5kIGV2ZXJ5IHByb2Nlc3MgKi8KKwkJCQlpZiAoc2luc3RydW1l bnQpCisJCQkJeworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHNpbnN0cnVtZW50LT5udW1f d29ya2VyczsgKytpKQorCQkJCQl7CisJCQkJCQlTZXFTY2FuSW5zdHJ1bWVudGF0aW9uICp3 aW5zdHJ1bWVudCA9ICZzaW5zdHJ1bWVudC0+c2luc3RydW1lbnRbaV07CisKKwkJCQkJCXN0 YXRzLnByZWZldGNoX2NvdW50ICs9IHdpbnN0cnVtZW50LT5zdHJlYW0ucHJlZmV0Y2hfY291 bnQ7CisJCQkJCQlzdGF0cy5kaXN0YW5jZV9zdW0gKz0gd2luc3RydW1lbnQtPnN0cmVhbS5k aXN0YW5jZV9zdW07CisJCQkJCQlpZiAod2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9t YXggPiBzdGF0cy5kaXN0YW5jZV9tYXgpCisJCQkJCQkJc3RhdHMuZGlzdGFuY2VfbWF4ID0g d2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9tYXg7CisJCQkJCQlpZiAod2luc3RydW1l bnQtPnN0cmVhbS5kaXN0YW5jZV9jYXBhY2l0eSA+IHN0YXRzLmRpc3RhbmNlX2NhcGFjaXR5 KQorCQkJCQkJCXN0YXRzLmRpc3RhbmNlX2NhcGFjaXR5ID0gd2luc3RydW1lbnQtPnN0cmVh bS5kaXN0YW5jZV9jYXBhY2l0eTsKKwkJCQkJCXN0YXRzLnN0YWxsX2NvdW50ICs9IHdpbnN0 cnVtZW50LT5zdHJlYW0uc3RhbGxfY291bnQ7CisJCQkJCQlzdGF0cy5pb19jb3VudCArPSB3 aW5zdHJ1bWVudC0+c3RyZWFtLmlvX2NvdW50OworCQkJCQkJc3RhdHMuaW9fbmJsb2NrcyAr PSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlvX25ibG9ja3M7CisJCQkJCQlzdGF0cy5pb19pbl9w cm9ncmVzcyArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlvX2luX3Byb2dyZXNzOworCQkJCQl9 CisJCQkJfQorCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgVF9CaXRtYXBIZWFwU2NhbjoK KwkJCXsKKwkJCQlTaGFyZWRCaXRtYXBIZWFwSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1bWVu dAorCQkJCQk9ICgoQml0bWFwSGVhcFNjYW5TdGF0ZSAqKSBwbGFuc3RhdGUpLT5zaW5zdHJ1 bWVudDsKKworCQkJCS8qIGdldCB0aGUgc3VtIG9mIHRoZSBjb3VudGVycyBzZXQgd2l0aGlu IGVhY2ggYW5kIGV2ZXJ5IHByb2Nlc3MgKi8KKwkJCQlpZiAoc2luc3RydW1lbnQpCisJCQkJ eworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHNpbnN0cnVtZW50LT5udW1fd29ya2Vyczsg KytpKQorCQkJCQl7CisJCQkJCQlCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbiAqd2lu c3RydW1lbnQgPSAmc2luc3RydW1lbnQtPnNpbnN0cnVtZW50W2ldOworCisJCQkJCQlzdGF0 cy5wcmVmZXRjaF9jb3VudCArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLnByZWZldGNoX2NvdW50 OworCQkJCQkJc3RhdHMuZGlzdGFuY2Vfc3VtICs9IHdpbnN0cnVtZW50LT5zdHJlYW0uZGlz dGFuY2Vfc3VtOworCQkJCQkJaWYgKHdpbnN0cnVtZW50LT5zdHJlYW0uZGlzdGFuY2VfbWF4 ID4gc3RhdHMuZGlzdGFuY2VfbWF4KQorCQkJCQkJCXN0YXRzLmRpc3RhbmNlX21heCA9IHdp bnN0cnVtZW50LT5zdHJlYW0uZGlzdGFuY2VfbWF4OworCQkJCQkJaWYgKHdpbnN0cnVtZW50 LT5zdHJlYW0uZGlzdGFuY2VfY2FwYWNpdHkgPiBzdGF0cy5kaXN0YW5jZV9jYXBhY2l0eSkK KwkJCQkJCQlzdGF0cy5kaXN0YW5jZV9jYXBhY2l0eSA9IHdpbnN0cnVtZW50LT5zdHJlYW0u ZGlzdGFuY2VfY2FwYWNpdHk7CisJCQkJCQlzdGF0cy5zdGFsbF9jb3VudCArPSB3aW5zdHJ1 bWVudC0+c3RyZWFtLnN0YWxsX2NvdW50OworCQkJCQkJc3RhdHMuaW9fY291bnQgKz0gd2lu c3RydW1lbnQtPnN0cmVhbS5pb19jb3VudDsKKwkJCQkJCXN0YXRzLmlvX25ibG9ja3MgKz0g d2luc3RydW1lbnQtPnN0cmVhbS5pb19uYmxvY2tzOworCQkJCQkJc3RhdHMuaW9faW5fcHJv Z3Jlc3MgKz0gd2luc3RydW1lbnQtPnN0cmVhbS5pb19pbl9wcm9ncmVzczsKKwkJCQkJfQor CQkJCX0KKworCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0OgorCQkJLyogaWdub3JlIG90 aGVyIHBsYW5zICovCisJCQlyZXR1cm47CisJfQorCisJLyogZG9uJ3QgcHJpbnQgYW55dGhp bmcgd2l0aG91dCBwcmVmZXRjaGluZyAqLworCWlmIChzdGF0cy5wcmVmZXRjaF9jb3VudCA+ IDApCisJeworCQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCQl7 CisJCQkvKiBwcmVmZXRjaCBkaXN0YW5jZSBpbmZvICovCisJCQlFeHBsYWluSW5kZW50VGV4 dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJQcmVmZXRjaDogYXZnPSUu M2YgbWF4PSVkIGNhcGFjaXR5PSVkIiwKKwkJCQkJCQkgKHN0YXRzLmRpc3RhbmNlX3N1bSAq IDEuMCAvIHN0YXRzLnByZWZldGNoX2NvdW50KSwKKwkJCQkJCQkgc3RhdHMuZGlzdGFuY2Vf bWF4LAorCQkJCQkJCSBzdGF0cy5kaXN0YW5jZV9jYXBhY2l0eSk7CisJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihlcy0+c3RyLCAnXG4nKTsKKworCQkJLyogcHJlZmV0Y2ggSS9PIGluZm8g KG9ubHkgaWYgdGhlcmUgd2VyZSBhY3R1YWwgSS9PcykgKi8KKwkJCWlmIChzdGF0cy5zdGFs bF9jb3VudCA+IDAgfHwgc3RhdHMuaW9fY291bnQgPiAwKQorCQkJeworCQkJCUV4cGxhaW5J bmRlbnRUZXh0KGVzKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICJJL086IHN0 YWxscz0lIiBQUkl1NjQsCisJCQkJCQkJCSBzdGF0cy5zdGFsbF9jb3VudCk7CisKKwkJCQlp ZiAoc3RhdHMuaW9fY291bnQgPiAwKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbyhl cy0+c3RyLCAiIHNpemU9JS4zZiBpbnByb2dyZXNzPSUuM2YiLAorCQkJCQkJCQkJIChzdGF0 cy5pb19uYmxvY2tzICogMS4wIC8gc3RhdHMuaW9fY291bnQpLAorCQkJCQkJCQkJIChzdGF0 cy5pb19pbl9wcm9ncmVzcyAqIDEuMCAvIHN0YXRzLmlvX2NvdW50KSk7CisJCQkJfQorCisJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisJCQl9CisJCX0KKwkJ ZWxzZQorCQl7CisJCQlFeHBsYWluT3Blbkdyb3VwKCJQcmVmZXRjaCIsICJJL08iLCB0cnVl LCBlcyk7CisKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJBdmVyYWdlIERpc3RhbmNlIiwg TlVMTCwKKwkJCQkJCQkJIChzdGF0cy5kaXN0YW5jZV9zdW0gKiAxLjAgLyBzdGF0cy5wcmVm ZXRjaF9jb3VudCksIDMsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk1heCBE aXN0YW5jZSIsIE5VTEwsCisJCQkJCQkJCSAgIHN0YXRzLmRpc3RhbmNlX21heCwgZXMpOwor CQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiQ2FwYWNpdHkiLCBOVUxMLAorCQkJCQkJCQkg ICBzdGF0cy5kaXN0YW5jZV9jYXBhY2l0eSwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5VUlu dGVnZXIoIlN0YWxscyIsIE5VTEwsCisJCQkJCQkJCQlzdGF0cy5zdGFsbF9jb3VudCwgZXMp OworCisJCQlpZiAoc3RhdHMuaW9fY291bnQgPiAwKQorCQkJeworCQkJCUV4cGxhaW5Qcm9w ZXJ0eUZsb2F0KCJBdmVyYWdlIElPIFNpemUiLCBOVUxMLAorCQkJCQkJCQkJIChzdGF0cy5p b19uYmxvY2tzICogMS4wIC8gc3RhdHMuaW9fY291bnQpLCAzLCBlcyk7CisJCQkJRXhwbGFp blByb3BlcnR5RmxvYXQoIkF2ZXJhZ2UgSU9zIEluIFByb2dyZXNzIiwgTlVMTCwKKwkJCQkJ CQkJCSAoc3RhdHMuaW9faW5fcHJvZ3Jlc3MgKiAxLjAgLyBzdGF0cy5pb19jb3VudCksIDMs IGVzKTsKKwkJCX0KKworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIlByZWZldGNoIiwgIkkvTyIs IHRydWUsIGVzKTsKKwkJfQorCX0KK30KKworLyoKKyAqIHNob3dfaW9fd29ya2VyX2luZm8K KyAqCQlzaG93IGluZm8gYWJvdXQgcHJlZmV0Y2hpbmcgZm9yIGEgc2luZ2xlIHdvcmtlcgor ICoKKyAqIFNob3dzIHByZWZldGNoaW5nIHN0YXRzIGZvciBhIHBhcmFsbGVsIHNjYW4gd29y a2VyLgorICovCitzdGF0aWMgdm9pZAorc2hvd193b3JrZXJfaW9faW5mbyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcywgaW50IHdvcmtlcikKK3sKKwlQbGFuCSAg ICpwbGFuID0gcGxhbnN0YXRlLT5wbGFuOworCVJlYWRTdHJlYW1JbnN0cnVtZW50YXRpb24g KnN0YXRzID0gTlVMTDsKKworCWlmICghZXMtPmlvKQorCQlyZXR1cm47CisKKwkvKiBnZXQg aW5zdHJ1bWVudGF0aW9uIGZvciB0aGUgZ2l2ZW4gd29ya2VyICovCisJc3dpdGNoIChub2Rl VGFnKHBsYW4pKQorCXsKKwkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuOgorCQkJeworCQkJCUJp dG1hcEhlYXBTY2FuU3RhdGUgKnN0YXRlID0gKChCaXRtYXBIZWFwU2NhblN0YXRlICopIHBs YW5zdGF0ZSk7CisJCQkJU2hhcmVkQml0bWFwSGVhcEluc3RydW1lbnRhdGlvbiAqc2luc3Ry dW1lbnQgPSBzdGF0ZS0+c2luc3RydW1lbnQ7CisJCQkJQml0bWFwSGVhcFNjYW5JbnN0cnVt ZW50YXRpb24gKmluc3RydW1lbnQgPSAmc2luc3RydW1lbnQtPnNpbnN0cnVtZW50W3dvcmtl cl07CisKKwkJCQlzdGF0cyA9ICZpbnN0cnVtZW50LT5zdHJlYW07CisKKwkJCQlicmVhazsK KwkJCX0KKwkJY2FzZSBUX1NlcVNjYW46CisJCQl7CisJCQkJU2VxU2NhblN0YXRlICpzdGF0 ZSA9ICgoU2VxU2NhblN0YXRlICopIHBsYW5zdGF0ZSk7CisJCQkJU2hhcmVkU2VxU2Nhbklu c3RydW1lbnRhdGlvbiAqc2luc3RydW1lbnQgPSBzdGF0ZS0+c2luc3RydW1lbnQ7CisJCQkJ U2VxU2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCA9ICZzaW5zdHJ1bWVudC0+c2lu c3RydW1lbnRbd29ya2VyXTsKKworCQkJCXN0YXRzID0gJmluc3RydW1lbnQtPnN0cmVhbTsK KworCQkJCWJyZWFrOworCQkJfQorCQlkZWZhdWx0OgorCQkJLyogaWdub3JlIG90aGVyIHBs YW5zICovCisJCQlyZXR1cm47CisJfQorCisJLyogZG9uJ3QgcHJpbnQgc3RhdHMgaWYgdGhl cmUncyBub3RoaW5nIHRvIHJlcG9ydCAqLworCWlmIChzdGF0cy0+cHJlZmV0Y2hfY291bnQg PiAwKQorCXsKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJ eworCQkJLyogcHJlZmV0Y2ggZGlzdGFuY2UgaW5mbyAqLworCQkJRXhwbGFpbkluZGVudFRl eHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiUHJlZmV0Y2g6IGF2Zz0l LjNmIG1heD0lZCBjYXBhY2l0eT0lZCIsCisJCQkJCQkJIChzdGF0cy0+ZGlzdGFuY2Vfc3Vt ICogMS4wIC8gc3RhdHMtPnByZWZldGNoX2NvdW50KSwKKwkJCQkJCQkgc3RhdHMtPmRpc3Rh bmNlX21heCwKKwkJCQkJCQkgc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5KTsKKwkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOworCisJCQkvKiBwcmVmZXRjaCBJL08g aW5mbyAob25seSBpZiB0aGVyZSB3ZXJlIGFjdHVhbCBJL09zKSAqLworCQkJaWYgKHN0YXRz LT5zdGFsbF9jb3VudCA+IDAgfHwgc3RhdHMtPmlvX2NvdW50ID4gMCkKKwkJCXsKKwkJCQlF eHBsYWluSW5kZW50VGV4dChlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAi SS9POiBzdGFsbHM9JSIgUFJJdTY0LAorCQkJCQkJCQkgc3RhdHMtPnN0YWxsX2NvdW50KTsK KworCQkJCWlmIChzdGF0cy0+aW9fY291bnQgPiAwKQorCQkJCXsKKwkJCQkJYXBwZW5kU3Ry aW5nSW5mbyhlcy0+c3RyLCAiIHNpemU9JS4zZiBpbnByb2dyZXNzPSUuM2YiLAorCQkJCQkJ CQkJIChzdGF0cy0+aW9fbmJsb2NrcyAqIDEuMCAvIHN0YXRzLT5pb19jb3VudCksCisJCQkJ CQkJCQkgKHN0YXRzLT5pb19pbl9wcm9ncmVzcyAqIDEuMCAvIHN0YXRzLT5pb19jb3VudCkp OworCQkJCX0KKworCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwor CQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJRXhwbGFpbk9wZW5Hcm91cCgiUHJlZmV0Y2gi LCAiSS9PIiwgdHJ1ZSwgZXMpOworCisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQXZlcmFn ZSBEaXN0YW5jZSIsIE5VTEwsCisJCQkJCQkJCSAoc3RhdHMtPmRpc3RhbmNlX3N1bSAqIDEu MCAvIHN0YXRzLT5wcmVmZXRjaF9jb3VudCksIDMsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0 eUludGVnZXIoIk1heCBEaXN0YW5jZSIsIE5VTEwsCisJCQkJCQkJCSAgIHN0YXRzLT5kaXN0 YW5jZV9tYXgsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkNhcGFjaXR5Iiwg TlVMTCwKKwkJCQkJCQkJICAgc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5LCBlcyk7CisJCQlF eHBsYWluUHJvcGVydHlVSW50ZWdlcigiU3RhbGxzIiwgTlVMTCwKKwkJCQkJCQkJCXN0YXRz LT5zdGFsbF9jb3VudCwgZXMpOworCisJCQlpZiAoc3RhdHMtPmlvX2NvdW50ID4gMCkKKwkJ CXsKKwkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQXZlcmFnZSBJTyBTaXplIiwgTlVMTCwK KwkJCQkJCQkJCSAoc3RhdHMtPmlvX25ibG9ja3MgKiAxLjAgLyBzdGF0cy0+aW9fY291bnQp LCAzLCBlcyk7CisJCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIkF2ZXJhZ2UgSU9zIEluIFBy b2dyZXNzIiwgTlVMTCwKKwkJCQkJCQkJCSAoc3RhdHMtPmlvX2luX3Byb2dyZXNzICogMS4w IC8gc3RhdHMtPmlvX2NvdW50KSwgMywgZXMpOworCQkJfQorCisJCQlFeHBsYWluQ2xvc2VH cm91cCgiUHJlZmV0Y2giLCAiSS9PIiwgdHJ1ZSwgZXMpOworCQl9CisJfQorfQorCiAvKgog ICogSWYgaXQncyBFWFBMQUlOIEFOQUxZWkUsIHNob3cgaW5zdHJ1bWVudGF0aW9uIGluZm9y bWF0aW9uIGZvciBhIHBsYW4gbm9kZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fc3RhdGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5f c3RhdGUuYwppbmRleCA3N2Y1OWI4ZTUwMC4uZjVjYmRkMjFhYWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluX3N0YXRlLmMKQEAgLTE1OSw2ICsxNTksMTAgQEAgUGFyc2VFeHBs YWluT3B0aW9uTGlzdChFeHBsYWluU3RhdGUgKmVzLCBMaXN0ICpvcHRpb25zLCBQYXJzZVN0 YXRlICpwc3RhdGUpCiAJCQkJCQkJCSJFWFBMQUlOIiwgb3B0LT5kZWZuYW1lLCBwKSwKIAkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcHQtPmxvY2F0aW9uKSkpOwogCQl9 CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJpbyIpID09IDApCisJCXsKKwkJ CWVzLT5pbyA9IGRlZkdldEJvb2xlYW4ob3B0KTsKKwkJfQogCQllbHNlIGlmICghQXBwbHlF eHRlbnNpb25FeHBsYWluT3B0aW9uKGVzLCBvcHQsIHBzdGF0ZSkpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0xODUsNiAr MTg5LDEyIEBAIFBhcnNlRXhwbGFpbk9wdGlvbkxpc3QoRXhwbGFpblN0YXRlICplcywgTGlz dCAqb3B0aW9ucywgUGFyc2VTdGF0ZSAqcHN0YXRlKQogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkVYUExBSU4gb3B0aW9u ICVzIHJlcXVpcmVzIEFOQUxZWkUiLCAiVElNSU5HIikpKTsKIAorCS8qIGNoZWNrIHRoYXQg SU8gaXMgdXNlZCB3aXRoIEVYUExBSU4gQU5BTFlaRSAqLworCWlmIChlcy0+aW8gJiYgIWVz LT5hbmFseXplKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIkVYUExBSU4gb3B0aW9uICVz IHJlcXVpcmVzIEFOQUxZWkUiLCAiSU8iKSkpOworCiAJLyogY2hlY2sgdGhhdCBzZXJpYWxp emUgaXMgdXNlZCB3aXRoIEVYUExBSU4gQU5BTFlaRSAqLwogCWlmIChlcy0+c2VyaWFsaXpl ICE9IEVYUExBSU5fU0VSSUFMSVpFX05PTkUgJiYgIWVzLT5hbmFseXplKQogCQllcmVwb3J0 KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhYzg0YWYy OTRjOS4uZmZjNzA4ZWQ2YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j CkBAIC0xMTE5LDYgKzExMTksOSBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRh dGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuU3Rh dGU6CiAJCQlFeGVjQml0bWFwSGVhcFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKChCaXRtYXBI ZWFwU2NhblN0YXRlICopIHBsYW5zdGF0ZSk7CiAJCQlicmVhazsKKwkJY2FzZSBUX1NlcVNj YW5TdGF0ZToKKwkJCUV4ZWNTZXFTY2FuUmV0cmlldmVJbnN0cnVtZW50YXRpb24oKFNlcVNj YW5TdGF0ZSAqKSBwbGFuc3RhdGUpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicmVh azsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVh cHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmlu ZGV4IDdjZjhkMjNjNzQyLi5iZjlhZjc1OTZjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTMxNSw2ICszMTUsNyBAQCBFeGVjRW5kQml0 bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+c2lu c3RydW1lbnQgIT0gTlVMTCAmJiBJc1BhcmFsbGVsV29ya2VyKCkpCiAJewogCQlCaXRtYXBI ZWFwU2Nhbkluc3RydW1lbnRhdGlvbiAqc2k7CisJCVRhYmxlU2NhblN0YXRzIHN0YXRzOwog CiAJCUFzc2VydChQYXJhbGxlbFdvcmtlck51bWJlciA8IG5vZGUtPnNpbnN0cnVtZW50LT5u dW1fd29ya2Vycyk7CiAJCXNpID0gJm5vZGUtPnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFtQ YXJhbGxlbFdvcmtlck51bWJlcl07CkBAIC0zMjgsNiArMzI5LDIxIEBAIEV4ZWNFbmRCaXRt YXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCQkgKi8KIAkJc2ktPmV4 YWN0X3BhZ2VzICs9IG5vZGUtPnN0YXRzLmV4YWN0X3BhZ2VzOwogCQlzaS0+bG9zc3lfcGFn ZXMgKz0gbm9kZS0+c3RhdHMubG9zc3lfcGFnZXM7CisKKwkJLyogY29sbGVjdCBwcmVmZXRj aCBpbmZvIGZvciB0aGlzIHByb2Nlc3MgZnJvbSB0aGUgcmVhZF9zdHJlYW0gKi8KKwkJaWYg KChzdGF0cyA9IHRhYmxlX3NjYW5fc3RhdHMobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNj KSkgIT0gTlVMTCkKKwkJeworCQkJc2ktPnN0cmVhbS5wcmVmZXRjaF9jb3VudCArPSBzdGF0 cy0+cHJlZmV0Y2hfY291bnQ7CisJCQlzaS0+c3RyZWFtLmRpc3RhbmNlX3N1bSArPSBzdGF0 cy0+ZGlzdGFuY2Vfc3VtOworCQkJaWYgKHN0YXRzLT5kaXN0YW5jZV9tYXggPiBzaS0+c3Ry ZWFtLmRpc3RhbmNlX21heCkKKwkJCQlzaS0+c3RyZWFtLmRpc3RhbmNlX21heCA9IHN0YXRz LT5kaXN0YW5jZV9tYXg7CisJCQlpZiAoc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5ID4gc2kt PnN0cmVhbS5kaXN0YW5jZV9jYXBhY2l0eSkKKwkJCQlzaS0+c3RyZWFtLmRpc3RhbmNlX2Nh cGFjaXR5ID0gc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5OworCQkJc2ktPnN0cmVhbS5zdGFs bF9jb3VudCArPSBzdGF0cy0+c3RhbGxfY291bnQ7CisJCQlzaS0+c3RyZWFtLmlvX2NvdW50 ICs9IHN0YXRzLT5pb19jb3VudDsKKwkJCXNpLT5zdHJlYW0uaW9fbmJsb2NrcyArPSBzdGF0 cy0+aW9fbmJsb2NrczsKKwkJCXNpLT5zdHJlYW0uaW9faW5fcHJvZ3Jlc3MgKz0gc3RhdHMt PmlvX2luX3Byb2dyZXNzOworCQl9CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCmluZGV4IDhmMjE5ZjYwYTkzLi43OTkyOTQ2YTViZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yOTUsNiArMjk1LDQzIEBAIEV4ZWNFbmRTZXFT Y2FuKFNlcVNjYW5TdGF0ZSAqbm9kZSkKIHsKIAlUYWJsZVNjYW5EZXNjIHNjYW5EZXNjOwog CisJLyoKKwkgKiBXaGVuIGVuZGluZyBhIHBhcmFsbGVsIHdvcmtlciwgY29weSB0aGUgc3Rh dGlzdGljcyBnYXRoZXJlZCBieSB0aGUKKwkgKiB3b3JrZXIgYmFjayBpbnRvIHNoYXJlZCBt ZW1vcnkgc28gdGhhdCBpdCBjYW4gYmUgcGlja2VkIHVwIGJ5IHRoZSBtYWluCisJICogcHJv Y2VzcyB0byByZXBvcnQgaW4gRVhQTEFJTiBBTkFMWVpFLgorCSAqLworCWlmIChub2RlLT5z aW5zdHJ1bWVudCAhPSBOVUxMICYmIElzUGFyYWxsZWxXb3JrZXIoKSkKKwl7CisJCVNlcVNj YW5JbnN0cnVtZW50YXRpb24gKnNpOworCQlUYWJsZVNjYW5TdGF0cyBzdGF0czsKKworCQlB c3NlcnQoUGFyYWxsZWxXb3JrZXJOdW1iZXIgPCBub2RlLT5zaW5zdHJ1bWVudC0+bnVtX3dv cmtlcnMpOworCQlzaSA9ICZub2RlLT5zaW5zdHJ1bWVudC0+c2luc3RydW1lbnRbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdOworCisJCS8qCisJCSAqIEhlcmUgd2UgYWNjdW11bGF0ZSB0aGUg c3RhdHMgcmF0aGVyIHRoYW4gcGVyZm9ybWluZyBtZW1jcHkgb24KKwkJICogbm9kZS0+c3Rh dHMgaW50byBzaS4gIFdoZW4gYSBHYXRoZXIvR2F0aGVyTWVyZ2Ugbm9kZSBmaW5pc2hlcyBp dAorCQkgKiB3aWxsIHBlcmZvcm0gcGxhbm5lciBzaHV0ZG93biBvbiB0aGUgd29ya2Vycy4g IE9uIHJlc2NhbiBpdCB3aWxsCisJCSAqIHNwaW4gdXAgbmV3IHdvcmtlcnMgd2hpY2ggd2ls bCBoYXZlIGEgbmV3IFNlcVNjYW5TdGF0ZSBhbmQKKwkJICogemVyb2VkIHN0YXRzLgorCQkg Ki8KKworCQkvKiBjb2xsZWN0IHByZWZldGNoIGluZm8gZm9yIHRoaXMgcHJvY2VzcyBmcm9t IHRoZSByZWFkX3N0cmVhbSAqLworCQlpZiAoKHN0YXRzID0gdGFibGVfc2Nhbl9zdGF0cyhu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpKSAhPSBOVUxMKQorCQl7CisJCQlzaS0+c3Ry ZWFtLnByZWZldGNoX2NvdW50ICs9IHN0YXRzLT5wcmVmZXRjaF9jb3VudDsKKwkJCXNpLT5z dHJlYW0uZGlzdGFuY2Vfc3VtICs9IHN0YXRzLT5kaXN0YW5jZV9zdW07CisJCQlpZiAoc3Rh dHMtPmRpc3RhbmNlX21heCA+IHNpLT5zdHJlYW0uZGlzdGFuY2VfbWF4KQorCQkJCXNpLT5z dHJlYW0uZGlzdGFuY2VfbWF4ID0gc3RhdHMtPmRpc3RhbmNlX21heDsKKwkJCWlmIChzdGF0 cy0+ZGlzdGFuY2VfY2FwYWNpdHkgPiBzaS0+c3RyZWFtLmRpc3RhbmNlX2NhcGFjaXR5KQor CQkJCXNpLT5zdHJlYW0uZGlzdGFuY2VfY2FwYWNpdHkgPSBzdGF0cy0+ZGlzdGFuY2VfY2Fw YWNpdHk7CisJCQlzaS0+c3RyZWFtLnN0YWxsX2NvdW50ICs9IHN0YXRzLT5zdGFsbF9jb3Vu dDsKKwkJCXNpLT5zdHJlYW0uaW9fY291bnQgKz0gc3RhdHMtPmlvX2NvdW50OworCQkJc2kt PnN0cmVhbS5pb19uYmxvY2tzICs9IHN0YXRzLT5pb19uYmxvY2tzOworCQkJc2ktPnN0cmVh bS5pb19pbl9wcm9ncmVzcyArPSBzdGF0cy0+aW9faW5fcHJvZ3Jlc3M7CisJCX0KKwl9CisK IAkvKgogCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIG5vZGUKIAkgKi8KQEAgLTM0OSwxMCAr Mzg2LDIzIEBAIEV4ZWNTZXFTY2FuRXN0aW1hdGUoU2VxU2NhblN0YXRlICpub2RlLAogCQkJ CQlQYXJhbGxlbENvbnRleHQgKnBjeHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBub2Rl LT5zcy5wcy5zdGF0ZTsKKwlTaXplCQlzaXplOwogCi0Jbm9kZS0+cHNjYW5fbGVuID0gdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwlzaXplID0gdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKG5vZGUtPnNzLnNzX2N1cnJl bnRSZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCk7Ci0Jc2ht X3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBub2RlLT5wc2Nhbl9sZW4p OworCW5vZGUtPnBzY2FuX2xlbiA9IHNpemU7CisKKwkvKiBtYWtlIHN1cmUgdGhlIGluc3Ry dW1lbnRhdGlvbiBpcyBwcm9wZXJseSBhbGlnbmVkICovCisJc2l6ZSA9IE1BWEFMSUdOKHNp emUpOworCisJLyogYWNjb3VudCBmb3IgaW5zdHJ1bWVudGF0aW9uLCBpZiByZXF1aXJlZCAq LworCWlmIChub2RlLT5zcy5wcy5pbnN0cnVtZW50ICYmIHBjeHQtPm53b3JrZXJzID4gMCkK Kwl7CisJCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihTaGFyZWRTZXFTY2FuSW5z dHJ1bWVudGF0aW9uLCBzaW5zdHJ1bWVudCkpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwg bXVsX3NpemUocGN4dC0+bndvcmtlcnMsIHNpemVvZihTZXFTY2FuSW5zdHJ1bWVudGF0aW9u KSkpOworCX0KKworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwg c2l6ZSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwog fQogCkBAIC0zNjgsMTQgKzQxOCw0MiBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2Vx U2NhblN0YXRlICpub2RlLAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMu c3RhdGU7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCVNoYXJlZFNlcVNjYW5J bnN0cnVtZW50YXRpb24gKnNpbnN0cnVtZW50ID0gTlVMTDsKKwlTaXplCQlzaXplOworCWNo YXIJICAgKnB0cjsKKworCS8qIFJlY2FsY3VsYXRlIHRoZSBzaXplLiBUaGlzIG5lZWRzIHRv IG1hdGNoIEV4ZWNTZXFTY2FuRXN0aW1hdGUuICovCisJc2l6ZSA9IE1BWEFMSUdOKG5vZGUt PnBzY2FuX2xlbik7CisJaWYgKG5vZGUtPnNzLnBzLmluc3RydW1lbnQgJiYgcGN4dC0+bndv cmtlcnMgPiAwKQorCXsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFNoYXJl ZFNlcVNjYW5JbnN0cnVtZW50YXRpb24sIHNpbnN0cnVtZW50KSk7CisJCXNpemUgPSBhZGRf c2l6ZShzaXplLCBtdWxfc2l6ZShwY3h0LT5ud29ya2Vycywgc2l6ZW9mKFNlcVNjYW5JbnN0 cnVtZW50YXRpb24pKSk7CisJfQogCi0JcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQt PnRvYywgbm9kZS0+cHNjYW5fbGVuKTsKKwlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLCBzaXplKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5z cy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0 YXRlLT5lc19zbmFwc2hvdCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5z cy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPQogCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLCBwc2Nhbik7CisKKwkvKiBpbml0aWFsaXplIHRoZSBzaGFyZWQgaW5z dHJ1bWVudGF0aW9uICh3aXRoIGNvcnJlY3QgYWxpZ25tZW50KSAqLworCXB0ciA9IChjaGFy ICopIHBzY2FuOworCXB0ciArPSBNQVhBTElHTihub2RlLT5wc2Nhbl9sZW4pOworCWlmIChu b2RlLT5zcy5wcy5pbnN0cnVtZW50ICYmIHBjeHQtPm53b3JrZXJzID4gMCkKKwkJc2luc3Ry dW1lbnQgPSAoU2hhcmVkU2VxU2Nhbkluc3RydW1lbnRhdGlvbiAqKSBwdHI7CisKKwlpZiAo c2luc3RydW1lbnQpCisJeworCQlzaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnMgPSBwY3h0LT5u d29ya2VyczsKKworCQkvKiBlbnN1cmUgYW55IHVuZmlsbGVkIHNsb3RzIHdpbGwgY29udGFp biB6ZXJvZXMgKi8KKwkJbWVtc2V0KHNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudCwgMCwKKwkJ CSAgIHBjeHQtPm53b3JrZXJzICogc2l6ZW9mKFNlcVNjYW5JbnN0cnVtZW50YXRpb24pKTsK Kwl9CisKKwlub2RlLT5zaW5zdHJ1bWVudCA9IHNpbnN0cnVtZW50OwogfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCkBAIC00MDQsOSArNDgyLDQ4IEBAIHZvaWQKIEV4ZWNTZXFTY2FuSW5pdGlhbGl6 ZVdvcmtlcihTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250 ZXh0ICpwd2N4dCkKIHsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRl OwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwljaGFyCSAgICpwdHI7CisJU2l6 ZQkJc2l6ZTsKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+ c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjID0KIAkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCisJLyoKKwkgKiBXb3JrZXJzIGRvbid0IGdldCB0 aGUgcHNjYW5fbGVuIHZhbHVlIGluIHNjYW4gZGVzY3JpcHRvciwgc28gdXNlIHRoZQorCSAq IFRBTSBjYWxsYmFjayBhZ2Fpbi4gVGhlIHJlc3VsdCBoYXMgdG8gbWF0Y2ggdGhlIGVhcmxp ZXIgcmVzdWx0IGluCisJICogRXhlY1NlcVNjYW5Fc3RpbWF0ZS4KKwkgKi8KKwlzaXplID0g dGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv biwKKwkJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOworCisJcHRyID0gKGNoYXIg KikgcHNjYW47CisJcHRyICs9IE1BWEFMSUdOKHNpemUpOworCisJaWYgKG5vZGUtPnNzLnBz Lmluc3RydW1lbnQpCisJCW5vZGUtPnNpbnN0cnVtZW50ID0gKFNoYXJlZFNlcVNjYW5JbnN0 cnVtZW50YXRpb24gKikgcHRyOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1NlcVNj YW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbgorICoKKyAqCQlUcmFuc2ZlciBzZXEgc2NhbiBz dGF0aXN0aWNzIGZyb20gRFNNIHRvIHByaXZhdGUgbWVtb3J5LgorICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCit2b2lkCitFeGVjU2VxU2NhblJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFNlcVNjYW5T dGF0ZSAqbm9kZSkKK3sKKwlTaGFyZWRTZXFTY2FuSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1 bWVudCA9IG5vZGUtPnNpbnN0cnVtZW50OworCVNpemUJCXNpemU7CisKKwlpZiAoc2luc3Ry dW1lbnQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJc2l6ZSA9IG9mZnNldG9mKFNoYXJlZFNl cVNjYW5JbnN0cnVtZW50YXRpb24sIHNpbnN0cnVtZW50KQorCQkrIHNpbnN0cnVtZW50LT5u dW1fd29ya2VycyAqIHNpemVvZihTZXFTY2FuSW5zdHJ1bWVudGF0aW9uKTsKKworCW5vZGUt PnNpbnN0cnVtZW50ID0gcGFsbG9jKHNpemUpOworCW1lbWNweShub2RlLT5zaW5zdHJ1bWVu dCwgc2luc3RydW1lbnQsIHNpemUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9haW8vcmVhZF9zdHJlYW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRf c3RyZWFtLmMKaW5kZXggY2Q1NGMxYTc0YWMuLmY1NjAwNDdhZmQ2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiZXhl Y3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW8uaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC0x MDcsNiArMTA4LDkgQEAgc3RydWN0IFJlYWRTdHJlYW0KIAlib29sCQlhZHZpY2VfZW5hYmxl ZDsKIAlib29sCQl0ZW1wb3Jhcnk7CiAKKwkvKiBzdGF0cyBjb3VudGVycyAqLworCVJlYWRT dHJlYW1JbnN0cnVtZW50YXRpb24gc3RhdHM7CisKIAkvKgogCSAqIE9uZS1ibG9jayBidWZm ZXIgdG8gc3VwcG9ydCAndW5nZXR0aW5nJyBhIGJsb2NrIG51bWJlciwgdG8gcmVzb2x2ZSBm bG93CiAJICogY29udHJvbCBwcm9ibGVtcyB3aGVuIEkvT3MgYXJlIHNwbGl0LgpAQCAtMTcy LDYgKzE3NiwzOCBAQCBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYihSZWFkU3RyZWFtICpz dHJlYW0sCiAJcmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKIH0KIAorLyoKKyAqIHJlYWRf c3RyZWFtX3VwZGF0ZV9zdGF0c19wcmVmZXRjaAorICoJCXVwZGF0ZSByZWFkX3N0cmVhbSBz dGF0cyB3aXRoIGN1cnJlbnQgcGlubmVkIGJ1ZmZlciBkZXB0aAorICoKKyAqIENhbGxlZCBv bmNlIHBlciBidWZmZXIgcmV0dXJuZWQgdG8gdGhlIGNvbnN1bWVyIGluIHJlYWRfc3RyZWFt X25leHRfYnVmZmVyKCkuCisgKiBSZWNvcmRzIHRoZSBudW1iZXIgb2YgcGlubmVkIGJ1ZmZl cnMgYXQgdGhhdCBtb21lbnQsIHNvIHdlIGNhbiBjb21wdXRlIHRoZQorICogYXZlcmFnZSBs b29rLWFoZWFkIGRlcHRoLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3JlYWRfc3RyZWFt X3VwZGF0ZV9zdGF0c19wcmVmZXRjaChSZWFkU3RyZWFtICpzdHJlYW0pCit7CisJc3RyZWFt LT5zdGF0cy5wcmVmZXRjaF9jb3VudCsrOworCXN0cmVhbS0+c3RhdHMuZGlzdGFuY2Vfc3Vt ICs9IHN0cmVhbS0+cGlubmVkX2J1ZmZlcnM7CisJaWYgKHN0cmVhbS0+cGlubmVkX2J1ZmZl cnMgPiBzdHJlYW0tPnN0YXRzLmRpc3RhbmNlX21heCkKKwkJc3RyZWFtLT5zdGF0cy5kaXN0 YW5jZV9tYXggPSBzdHJlYW0tPnBpbm5lZF9idWZmZXJzOworfQorCisvKgorICogcmVhZF9z dHJlYW1fdXBkYXRlX3N0YXRzX2lvCisgKgkJdXBkYXRlIHJlYWRfc3RyZWFtIHN0YXRzIGFi b3V0IHNpemUgb2YgSS9PIHJlcXVlc3RzCisgKgorICogV2UgY291bnQgdGhlIG51bWJlciBv ZiBJL08gcmVxdWVzdHMsIHNpemUgb2YgcmVxdWVzdHMgKGNvdW50ZWQgaW4gYmxvY2tzKQor ICogYW5kIG51bWJlciBvZiBpbi1wcm9ncmVzcyBJL09zLgorICovCitzdGF0aWMgaW5saW5l IHZvaWQKK3JlYWRfc3RyZWFtX3VwZGF0ZV9zdGF0c19pbyhSZWFkU3RyZWFtICpzdHJlYW0s IGludCBuYmxvY2tzLCBpbnQgaW5fcHJvZ3Jlc3MpCit7CisJc3RyZWFtLT5zdGF0cy5pb19j b3VudCsrOworCXN0cmVhbS0+c3RhdHMuaW9fbmJsb2NrcyArPSBuYmxvY2tzOworCXN0cmVh bS0+c3RhdHMuaW9faW5fcHJvZ3Jlc3MgKz0gaW5fcHJvZ3Jlc3M7Cit9CisKIC8qCiAgKiBB c2sgdGhlIGNhbGxiYWNrIHdoaWNoIGJsb2NrIGl0IHdvdWxkIGxpa2UgdXMgdG8gcmVhZCBu ZXh0LCB3aXRoIGEgb25lIGJsb2NrCiAgKiBidWZmZXIgaW4gZnJvbnQgdG8gYWxsb3cgcmVh ZF9zdHJlYW1fdW5nZXRfYmxvY2soKSB0byB3b3JrLgpAQCAtMzgwLDYgKzQxNiw5IEBAIHJl YWRfc3RyZWFtX3N0YXJ0X3BlbmRpbmdfcmVhZChSZWFkU3RyZWFtICpzdHJlYW0pCiAJCUFz c2VydChzdHJlYW0tPmlvc19pbl9wcm9ncmVzcyA8IHN0cmVhbS0+bWF4X2lvcyk7CiAJCXN0 cmVhbS0+aW9zX2luX3Byb2dyZXNzKys7CiAJCXN0cmVhbS0+c2VxX2Jsb2NrbnVtID0gc3Ry ZWFtLT5wZW5kaW5nX3JlYWRfYmxvY2tudW0gKyBuYmxvY2tzOworCisJCS8qIHVwZGF0ZSBJ L08gc3RhdHMgKi8KKwkJcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX2lvKHN0cmVhbSwgbmJs b2Nrcywgc3RyZWFtLT5pb3NfaW5fcHJvZ3Jlc3MpOwogCX0KIAogCS8qCkBAIC03MDMsNiAr NzQyLDEwIEBAIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoaW50IGZsYWdzLAogCXN0cmVhbS0+ c2VxX3VudGlsX3Byb2Nlc3NlZCA9IEludmFsaWRCbG9ja051bWJlcjsKIAlzdHJlYW0tPnRl bXBvcmFyeSA9IFNtZ3JJc1RlbXAoc21ncik7CiAKKwkvKiB6ZXJvIHRoZSBzdGF0cywgdGhl biBzZXQgY2FwYWNpdHkgKi8KKwltZW1zZXQoJnN0cmVhbS0+c3RhdHMsIDAsIHNpemVvZihS ZWFkU3RyZWFtSW5zdHJ1bWVudGF0aW9uKSk7CisJc3RyZWFtLT5zdGF0cy5kaXN0YW5jZV9j YXBhY2l0eSA9IG1heF9waW5uZWRfYnVmZmVyczsKKwogCS8qCiAJICogU2tpcCB0aGUgaW5p dGlhbCByYW1wLXVwIHBoYXNlIGlmIHRoZSBjYWxsZXIgc2F5cyB3ZSdyZSBnb2luZyB0byBi ZQogCSAqIHJlYWRpbmcgdGhlIHdob2xlIHJlbGF0aW9uLiAgVGhpcyB3YXkgd2Ugc3RhcnQg b3V0IGFzc3VtaW5nIHdlJ2xsIGJlCkBAIC04NTEsNiArODk0LDcgQEAgcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoUmVhZFN0cmVhbSAqc3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRh KQogCQkJCQkJCQkJCWZsYWdzKSkpCiAJCQl7CiAJCQkJLyogRmFzdCByZXR1cm4uICovCisJ CQkJcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZldGNoKHN0cmVhbSk7CiAJCQkJcmV0 dXJuIGJ1ZmZlcjsKIAkJCX0KIApAQCAtODYwLDYgKzkwNCw5IEBAIHJlYWRfc3RyZWFtX25l eHRfYnVmZmVyKFJlYWRTdHJlYW0gKnN0cmVhbSwgdm9pZCAqKnBlcl9idWZmZXJfZGF0YSkK IAkJCXN0cmVhbS0+aW9zX2luX3Byb2dyZXNzID0gMTsKIAkJCXN0cmVhbS0+aW9zWzBdLmJ1 ZmZlcl9pbmRleCA9IG9sZGVzdF9idWZmZXJfaW5kZXg7CiAJCQlzdHJlYW0tPnNlcV9ibG9j a251bSA9IG5leHRfYmxvY2tudW0gKyAxOworCisJCQkvKiB1cGRhdGUgSS9PIHN0YXRzICov CisJCQlyZWFkX3N0cmVhbV91cGRhdGVfc3RhdHNfaW8oc3RyZWFtLCAxLCBzdHJlYW0tPmlv c19pbl9wcm9ncmVzcyk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC04NzEsNiArOTE4LDcgQEAg cmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoUmVhZFN0cmVhbSAqc3RyZWFtLCB2b2lkICoqcGVy X2J1ZmZlcl9kYXRhKQogCQl9CiAKIAkJc3RyZWFtLT5mYXN0X3BhdGggPSBmYWxzZTsKKwkJ cmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZldGNoKHN0cmVhbSk7CiAJCXJldHVybiBi dWZmZXI7CiAJfQogI2VuZGlmCkBAIC05MTYsMTIgKzk2NCwxNyBAQCByZWFkX3N0cmVhbV9u ZXh0X2J1ZmZlcihSZWFkU3RyZWFtICpzdHJlYW0sIHZvaWQgKipwZXJfYnVmZmVyX2RhdGEp CiAJewogCQlpbnQxNgkJaW9faW5kZXggPSBzdHJlYW0tPm9sZGVzdF9pb19pbmRleDsKIAkJ aW50MzIJCWRpc3RhbmNlOwkvKiB3aWRlciB0ZW1wb3JhcnkgdmFsdWUsIGNsYW1wZWQgYmVs b3cgKi8KKwkJYm9vbAkJbmVlZGVkX3dhaXQ7CiAKIAkJLyogU2FuaXR5IGNoZWNrIHRoYXQg d2Ugc3RpbGwgYWdyZWUgb24gdGhlIGJ1ZmZlcnMuICovCiAJCUFzc2VydChzdHJlYW0tPmlv c1tpb19pbmRleF0ub3AuYnVmZmVycyA9PQogCQkJICAgJnN0cmVhbS0+YnVmZmVyc1tvbGRl c3RfYnVmZmVyX2luZGV4XSk7CiAKLQkJV2FpdFJlYWRCdWZmZXJzKCZzdHJlYW0tPmlvc1tp b19pbmRleF0ub3ApOworCQluZWVkZWRfd2FpdCA9IFdhaXRSZWFkQnVmZmVycygmc3RyZWFt LT5pb3NbaW9faW5kZXhdLm9wKTsKKworCQkvKiBDb3VudCBpdCBhcyBhIHN0YWxsIGlmIHdl IG5lZWQgdG8gd2FpdCBmb3IgSU8gKi8KKwkJaWYgKG5lZWRlZF93YWl0KQorCQkJc3RyZWFt LT5zdGF0cy5zdGFsbF9jb3VudCArPSAxOwogCiAJCUFzc2VydChzdHJlYW0tPmlvc19pbl9w cm9ncmVzcyA+IDApOwogCQlzdHJlYW0tPmlvc19pbl9wcm9ncmVzcy0tOwpAQCAtOTgxLDYg KzEwMzQsOCBAQCByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihSZWFkU3RyZWFtICpzdHJlYW0s IHZvaWQgKipwZXJfYnVmZmVyX2RhdGEpCiAJfQogI2VuZGlmCiAKKwlyZWFkX3N0cmVhbV91 cGRhdGVfc3RhdHNfcHJlZmV0Y2goc3RyZWFtKTsKKwogCS8qIFBpbiB0cmFuc2ZlcnJlZCB0 byBjYWxsZXIuICovCiAJQXNzZXJ0KHN0cmVhbS0+cGlubmVkX2J1ZmZlcnMgPiAwKTsKIAlz dHJlYW0tPnBpbm5lZF9idWZmZXJzLS07CkBAIC0xMTE4LDMgKzExNzMsMTAgQEAgcmVhZF9z dHJlYW1fZW5kKFJlYWRTdHJlYW0gKnN0cmVhbSkKIAlyZWFkX3N0cmVhbV9yZXNldChzdHJl YW0pOwogCXBmcmVlKHN0cmVhbSk7CiB9CisKKy8qIHJldHVybiB0aGUgcHJlZmV0Y2ggc3Rh dHMgZm9yIHRoZSByZWFkX3N0cmVhbSAqLworUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbgor cmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3RhdHMoUmVhZFN0cmVhbSAqc3RyZWFtKQoreworCXJl dHVybiBzdHJlYW0tPnN0YXRzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJmZGM1MGI4 NjViLi44MWRjMGI3NTIxZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzU5LDYgKzM1OSw3 IEBAIGV4dGVybiB2b2lkIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNz Y2FuKTsKIGV4dGVybiB2b2lkIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIFNj YW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCQkJCQlib29sIGFsbG93X3N0cmF0LCBi b29sIGFsbG93X3N5bmMsIGJvb2wgYWxsb3dfcGFnZW1vZGUpOwogZXh0ZXJuIHZvaWQgaGVh cF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pOworZXh0ZXJuIFRhYmxlU2NhblN0YXRz IGhlYXBfc2Nhbl9zdGF0cyhUYWJsZVNjYW5EZXNjIHNzY2FuKTsKIGV4dGVybiBIZWFwVHVw bGUgaGVhcF9nZXRuZXh0KFRhYmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5EaXJlY3Rpb24gZGly ZWN0aW9uKTsKIGV4dGVybiBib29sIGhlYXBfZ2V0bmV4dHNsb3QoVGFibGVTY2FuRGVzYyBz c2NhbiwKIAkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFR1cGxlVGFibGVTbG90 ICpzbG90KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IGNlMzQwYzA3NmY4Li5jYWRhOWYy OGJkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBAIC0xMTQsNiArMTE0LDMzIEBAIHR5cGVk ZWYgc3RydWN0IFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRhCiB9IFBhcmFsbGVs QmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxCbG9j a1RhYmxlU2NhbldvcmtlckRhdGEgKlBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXI7CiAK Ky8qCisgKiBHZW5lcmljIHByZWZldGNoIHN0YXRzIGZvciB0YWJsZSBzY2Fucy4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgVGFibGVTY2FuU3RhdHNEYXRhCit7CisJLyogbnVtYmVyIG9mIGJ1 ZmZlcnMgcmV0dXJuZWQgdG8gY29uc3VtZXIgKGZvciBhdmVyYWdpbmcgZGlzdGFuY2UpICov CisJdWludDY0CQlwcmVmZXRjaF9jb3VudDsKKworCS8qIHN1bSBvZiBwaW5uZWRfYnVmZmVy cyBzYW1wbGVkIGF0IGVhY2ggYnVmZmVyIHJldHVybiAqLworCXVpbnQ2NAkJZGlzdGFuY2Vf c3VtOworCisJLyogbWF4aW11bSBhY3R1YWwgcGlubmVkX2J1ZmZlcnMgb2JzZXJ2ZWQgZHVy aW5nIHRoZSBzY2FuICovCisJaW50MTYJCWRpc3RhbmNlX21heDsKKworCS8qIG1heGltdW0g cG9zc2libGUgbG9vay1haGVhZCBkaXN0YW5jZSAobWF4X3Bpbm5lZF9idWZmZXJzKSAqLwor CWludDE2CQlkaXN0YW5jZV9jYXBhY2l0eTsKKworCS8qIG51bWJlciBvZiBzdGFsbGVkIHJl YWRzICh3YWl0aW5nIGZvciBJL08pICovCisJdWludDY0CQlzdGFsbF9jb3VudDsKKworCS8q IEkvTyBzdGF0cyAqLworCXVpbnQ2NAkJaW9fY291bnQ7CQkvKiBudW1iZXIgb2YgSS9PcyAq LworCXVpbnQ2NAkJaW9fbmJsb2NrczsJCS8qIHN1bSBvZiBibG9ja3MgZm9yIGFsbCBJL09z ICovCisJdWludDY0CQlpb19pbl9wcm9ncmVzczsJLyogc3VtIG9mIGluLXByb2dyZXNzIEkv T3MgKi8KK30gVGFibGVTY2FuU3RhdHNEYXRhOwordHlwZWRlZiBzdHJ1Y3QgVGFibGVTY2Fu U3RhdHNEYXRhICpUYWJsZVNjYW5TdGF0czsKKwogLyoKICAqIEJhc2UgY2xhc3MgZm9yIGZl dGNoZXMgZnJvbSBhIHRhYmxlIHZpYSBhbiBpbmRleC4gVGhpcyBpcyB0aGUgYmFzZS1jbGFz cwogICogZm9yIHN1Y2ggc2NhbnMsIHdoaWNoIG5lZWRzIHRvIGJlIGVtYmVkZGVkIGluIHRo ZSByZXNwZWN0aXZlIHN0cnVjdCBmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDA2MDg0 NzUyMjQ1Li5hYjg0Yjc2NDQzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0zODAsNiAr MzgwLDExIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJCSAg U2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sCiAJCQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3Qg KnNsb3QpOwogCisJLyoKKwkgKiBDb2xsZWN0IHN0YXRpc3RpY3MgYWJvdXQgdGFibGUgc2Nh bi4KKwkgKi8KKwlUYWJsZVNjYW5TdGF0cwkJKCpzY2FuX3N0YXRzKSAoVGFibGVTY2FuRGVz YyBzY2FuKTsKKwogCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqIFBhcmFsbGVsIHRhYmxl IHNjYW4gcmVsYXRlZCBmdW5jdGlvbnMuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x MDA2LDYgKzEwMTEsMTggQEAgdGFibGVfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNjYW4pCiAJ c2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0tPnNjYW5fZW5kKHNjYW4pOwogfQogCisvKgorICog RmV0Y2ggc3RhdGlzdGljcyBhYm91dCB0YWJsZSBzY2FuLgorICovCitzdGF0aWMgaW5saW5l IFRhYmxlU2NhblN0YXRzCit0YWJsZV9zY2FuX3N0YXRzKFRhYmxlU2NhbkRlc2Mgc2NhbikK K3sKKwlpZiAoc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0tPnNjYW5fc3RhdHMpCisJCXJldHVy biBzY2FuLT5yc19yZC0+cmRfdGFibGVhbS0+c2Nhbl9zdGF0cyhzY2FuKTsKKworCXJldHVy biBOVUxMOworfQorCiAvKgogICogUmVzdGFydCBhIHJlbGF0aW9uIHNjYW4uCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaAppbmRleCA1YTQ4YmM2ZmJiMS4uYjQx MmYwMGY3MGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3Rh dGUuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKQEAgLTU1 LDYgKzU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJYm9vbAkJc3VtbWFy eTsJCS8qIHByaW50IHRvdGFsIHBsYW5uaW5nIGFuZCBleGVjdXRpb24gdGltaW5nICovCiAJ Ym9vbAkJbWVtb3J5OwkJCS8qIHByaW50IHBsYW5uZXIncyBtZW1vcnkgdXNhZ2UgaW5mb3Jt YXRpb24gKi8KIAlib29sCQlzZXR0aW5nczsJCS8qIHByaW50IG1vZGlmaWVkIHNldHRpbmdz ICovCisJYm9vbAkJaW87CQkJCS8qIHByaW50IGluZm8gYWJvdXQgSU8gKHByZWZldGNoLCAu Li4pICovCiAJYm9vbAkJZ2VuZXJpYzsJCS8qIGdlbmVyYXRlIGEgZ2VuZXJpYyBwbGFuICov CiAJRXhwbGFpblNlcmlhbGl6ZU9wdGlvbiBzZXJpYWxpemU7CS8qIHNlcmlhbGl6ZSB0aGUg cXVlcnkncyBvdXRwdXQ/ICovCiAJRXhwbGFpbkZvcm1hdCBmb3JtYXQ7CQkvKiBvdXRwdXQg Zm9ybWF0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 X25vZGUuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCmluZGV4 IDg4NDdkN2Y5NGZhLi5kOTRkYmJjOTE3ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudF9ub2RlLmgKQEAgLTQxLDkgKzQxLDUxIEBAIHR5cGVkZWYgc3RydWN0IFNoYXJl ZEFnZ0luZm8KIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCUluc3RydW1lbnRh dGlvbiBpbmZvcm1hdGlvbiBmb3IgaW5kZXhzY2FucyAoYW1nZXR0dXBsZSBhbmQgYW1nZXRi aXRtYXApCisgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gYWJvdXQgcmVhZCBzdHJl YW1zCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwordHlwZWRlZiBzdHJ1Y3QgUmVh ZFN0cmVhbUluc3RydW1lbnRhdGlvbgoreworCS8qIG51bWJlciBvZiBidWZmZXJzIHJldHVy bmVkIHRvIGNvbnN1bWVyIChmb3IgYXZlcmFnaW5nIGRpc3RhbmNlKSAqLworCXVpbnQ2NAkJ cHJlZmV0Y2hfY291bnQ7CisKKwkvKiBzdW0gb2YgcGlubmVkX2J1ZmZlcnMgc2FtcGxlZCBh dCBlYWNoIGJ1ZmZlciByZXR1cm4gKi8KKwl1aW50NjQJCWRpc3RhbmNlX3N1bTsKKworCS8q IG1heGltdW0gYWN0dWFsIHBpbm5lZF9idWZmZXJzIG9ic2VydmVkIGR1cmluZyB0aGUgc2Nh biAqLworCWludDE2CQlkaXN0YW5jZV9tYXg7CisKKwkvKiBtYXhpbXVtIHBvc3NpYmxlIGxv b2stYWhlYWQgZGlzdGFuY2UgKG1heF9waW5uZWRfYnVmZmVycykgKi8KKwlpbnQxNgkJZGlz dGFuY2VfY2FwYWNpdHk7CisKKwkvKiBudW1iZXIgb2Ygc3RhbGxlZCByZWFkcyAod2FpdGlu ZyBmb3IgSS9PKSAqLworCXVpbnQ2NAkJc3RhbGxfY291bnQ7CisKKwkvKiBJL08gc3RhdHMg Ki8KKwl1aW50NjQJCWlvX2NvdW50OwkJLyogbnVtYmVyIG9mIEkvT3MgKi8KKwl1aW50NjQJ CWlvX25ibG9ja3M7CQkvKiBzdW0gb2YgYmxvY2tzIGZvciBhbGwgSS9PcyAqLworCXVpbnQ2 NAkJaW9faW5fcHJvZ3Jlc3M7CS8qIHN1bSBvZiBpbi1wcm9ncmVzcyBJL09zICovCit9IFJl YWRTdHJlYW1JbnN0cnVtZW50YXRpb247CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKglJbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIHNlcXVlbnRpYWwgc2NhbnMK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBTZXFTY2Fu SW5zdHJ1bWVudGF0aW9uCit7CisJUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbglzdHJlYW07 Cit9IFNlcVNjYW5JbnN0cnVtZW50YXRpb247CisKKy8qCisgKiBTaGFyZWQgbWVtb3J5IGNv bnRhaW5lciBmb3IgcGVyLXdvcmtlciBpbmZvcm1hdGlvbgorICovCit0eXBlZGVmIHN0cnVj dCBTaGFyZWRTZXFTY2FuSW5zdHJ1bWVudGF0aW9uCit7CisJaW50CQkJbnVtX3dvcmtlcnM7 CisJU2VxU2Nhbkluc3RydW1lbnRhdGlvbiBzaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOworfSBTaGFyZWRTZXFTY2FuSW5zdHJ1bWVudGF0aW9uOworCiB0eXBlZGVmIHN0 cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24KIHsKIAkvKiBJbmRleCBzZWFyY2ggY291 bnQgKGluY3JlbWVudGVkIHdpdGggcGdzdGF0X2NvdW50X2luZGV4X3NjYW4gY2FsbCkgKi8K QEAgLTcxLDYgKzExMyw3IEBAIHR5cGVkZWYgc3RydWN0IEJpdG1hcEhlYXBTY2FuSW5zdHJ1 bWVudGF0aW9uCiB7CiAJdWludDY0CQlleGFjdF9wYWdlczsKIAl1aW50NjQJCWxvc3N5X3Bh Z2VzOworCVJlYWRTdHJlYW1JbnN0cnVtZW50YXRpb24Jc3RyZWFtOwogfSBCaXRtYXBIZWFw U2Nhbkluc3RydW1lbnRhdGlvbjsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlU2Vxc2Nh bi5oCmluZGV4IDdhMTQ5MDU5NmZiLi5lMjEyMmJmZmZlMyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5oCkBAIC0yNyw1ICsyNyw2IEBAIGV4dGVybiB2b2lkIEV4ZWNTZXFT Y2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAq cGN4dCk7CiBleHRlcm4gdm9pZCBFeGVjU2VxU2NhblJlSW5pdGlhbGl6ZURTTShTZXFTY2Fu U3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBFeGVj U2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkJ CVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpOworZXh0ZXJuIHZvaWQgRXhlY1NlcVNj YW5SZXRyaWV2ZUluc3RydW1lbnRhdGlvbihTZXFTY2FuU3RhdGUgKm5vZGUpOwogCiAjZW5k aWYJCQkJCQkJLyogTk9ERVNFUVNDQU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCAwNzE2YzVhOWFlZC4uOTZhOGE3NTAzMWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBA IC0xNjQ0LDYgKzE2NDQsOCBAQCB0eXBlZGVmIHN0cnVjdCBTZXFTY2FuU3RhdGUKIHsKIAlT Y2FuU3RhdGUJc3M7CQkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2RlVGFnICovCiAJU2l6 ZQkJcHNjYW5fbGVuOwkJLyogc2l6ZSBvZiBwYXJhbGxlbCBoZWFwIHNjYW4gZGVzY3JpcHRv ciAqLworCVNlcVNjYW5JbnN0cnVtZW50YXRpb24Jc3RhdHM7CisJU2hhcmVkU2VxU2Nhbklu c3RydW1lbnRhdGlvbiAqc2luc3RydW1lbnQ7CiB9IFNlcVNjYW5TdGF0ZTsKIAogLyogLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWFkX3N0 cmVhbS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWFkX3N0cmVhbS5oCmluZGV4IGM5MzU5 YjI5YjBmLi5lYzM5NmRiNTM2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9y ZWFkX3N0cmVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaApA QCAtNjUsNiArNjUsNyBAQAogCiBzdHJ1Y3QgUmVhZFN0cmVhbTsKIHR5cGVkZWYgc3RydWN0 IFJlYWRTdHJlYW0gUmVhZFN0cmVhbTsKK3R5cGVkZWYgc3RydWN0IFJlYWRTdHJlYW1JbnN0 cnVtZW50YXRpb24gUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbjsKIAogLyogZm9yIGJsb2Nr X3JhbmdlX3JlYWRfc3RyZWFtX2NiICovCiB0eXBlZGVmIHN0cnVjdCBCbG9ja1JhbmdlUmVh ZFN0cmVhbVByaXZhdGUKQEAgLTEwNCw0ICsxMDUsNiBAQCBleHRlcm4gdm9pZCByZWFkX3N0 cmVhbV9yZXN1bWUoUmVhZFN0cmVhbSAqc3RyZWFtKTsKIGV4dGVybiB2b2lkIHJlYWRfc3Ry ZWFtX3Jlc2V0KFJlYWRTdHJlYW0gKnN0cmVhbSk7CiBleHRlcm4gdm9pZCByZWFkX3N0cmVh bV9lbmQoUmVhZFN0cmVhbSAqc3RyZWFtKTsKIAorZXh0ZXJuIFJlYWRTdHJlYW1JbnN0cnVt ZW50YXRpb24gcmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3RhdHMoUmVhZFN0cmVhbSAqc3RyZWFt KTsKKwogI2VuZGlmCQkJCQkJCS8qIFJFQURfU1RSRUFNX0ggKi8KLS0gCjIuNTMuMAoK --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0003-cleanup-and-simplification.patch" Content-Disposition: attachment; filename="v3-0003-cleanup-and-simplification.patch" Content-Transfer-Encoding: base64 RnJvbSBmMjc4YmQxNGNhNmZjZDI3YjAyZWJiMTRmZWVkNzk3ZDBkYTcyMWFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAxNyBNYXIgMjAyNiAyMjowNjo0NiArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djMgMy82XSBjbGVhbnVwIGFuZCBzaW1wbGlmaWNhdGlvbgoKLSBSZWR1Y2UgY29kZSBkdXBs aWNhdGlvbiBpbiBleHBsYWluLmMgYnkgaW50cm9kdWNpbmcgYSBjb3VwbGUgaGVscGVyCiAg bWV0aG9kcyBmb3IgcmVwZWF0ZWQgYmxvY2tzIC0gQUNDVU1VTEFURV9UQUJMRV9TVEFUUygp IGFuZAogIHNob3dfaW9faW5mbygpLgoKLSBSZXBsYWNlIFJlYWRTdHJlYW1JbnN0cnVtZW50 YXRpb24gd2l0aCBnZW5lcmljIElPU3RhdHMuCgotIG5ldyByZWFkX3N0cmVhbV91cGRhdGVf c3RhdHNfc3RhbGwoKSB3cmFwcGVyCgotIGVuYWJsZSBFWFBMQUlOIChJTykgYnkgZGVmYXVs dCwganVzdCBsaWtlIEJVRkZFUlMKCi0gZml4IHRoZSBleHBsYWluIGdyb3VwIHRvIGhhdmUg bWF0Y2hpbmcgb2JqdHlwZS9sYWJlbAoKLSBkb24ndCB1cGRhdGUgcHJlZmV0Y2ggc3RhdHMg YWZ0ZXIgc3RyZWFtIGVuZGVkCgpmaXh1cDogdHJhY2sgcHJlZmV0Y2ggZGlzdGFuY2UKLS0t CiBkb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwg MjQyICsrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9z dGF0ZS5jICAgICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYyAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9y ZWFkX3N0cmVhbS5jICAgICAgICAgfCAgMjYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICAxNCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9p bnN0cnVtZW50X25vZGUuaCAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cmVhZF9zdHJlYW0uaCAgICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9leHBsYWluLm91dCAgICAgICAgIHwgIDM5ICsrLQogLi4uL3JlZ3Jlc3MvZXhw ZWN0ZWQvaW5jcmVtZW50YWxfc29ydC5vdXQgICAgIHwgICA0ICstCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL21lbW9pemUub3V0ICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvbWVyZ2Uub3V0ICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IHwgIDc1ICsrKystLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3RfcGFyYWxsZWwub3V0IHwgICA2ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNlbGVjdC5vdXQgICAgICAgfCAgIDIgKy0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICAgICAgICB8ICAyNCAr LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5jcmVtZW50YWxfc29ydC5zcWwgICAgIHwgICA0 ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9tZW1vaXplLnNxbCAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21lcmdlLnNxbCAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAg IHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3RfcGFyYWxsZWwuc3FsICAg ICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5zcWwgICAgICAg ICAgICB8ICAgMiArLQogMjQgZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMoKyksIDI0 NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4u c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCmluZGV4IDlkYTE2Yzc3ZDcz Li44M2YyN2JhZGZjOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKQEAgLTMwMiw3ICszMDIs NyBAQCBST0xMQkFDSzsKICAgICAgPHBhcmE+CiAgICAgICBJbmNsdWRlIGluZm9ybWF0aW9u IG9uIEkvTyBwZXJmb3JtZWQgYnkgZWFjaCBub2RlLgogICAgICAgVGhpcyBwYXJhbWV0ZXIg bWF5IG9ubHkgYmUgdXNlZCB3aGVuIDxsaXRlcmFsPkFOQUxZWkU8L2xpdGVyYWw+IGlzIGFs c28KLSAgICAgIGVuYWJsZWQuICBJdCBkZWZhdWx0cyB0byA8bGl0ZXJhbD5GQUxTRTwvbGl0 ZXJhbD4uCisgICAgICBlbmFibGVkLiAgSXQgZGVmYXVsdHMgdG8gPGxpdGVyYWw+VFJVRTwv bGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGIxM2Y4NDNjZmFkLi4z MjNiYWRkMjdmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTE0MjYsNyAr MTQyNiw3IEBAIFRhYmxlU2NhblN0YXRzCiBoZWFwX3NjYW5fc3RhdHMoVGFibGVTY2FuRGVz YyBzc2NhbikKIHsKIAlIZWFwU2NhbkRlc2Mgc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNzY2Fu OwotCVJlYWRTdHJlYW1JbnN0cnVtZW50YXRpb24gc3RhdHM7CisJSU9TdGF0cyBzdGF0czsK IAlUYWJsZVNjYW5TdGF0cyByZXM7CiAKIAlpZiAoIXNjYW4tPnJzX3JlYWRfc3RyZWFtKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGFkODZmYjc1MmNhLi43YTQwMDlhZTc0ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTQxLDExICsxNDEsMTEgQEAgc3RhdGlj IHZvaWQgc2hvd19oYXNoYWdnX2luZm8oQWdnU3RhdGUgKmFnZ3N0YXRlLCBFeHBsYWluU3Rh dGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfaW5kZXhzZWFyY2hlc19pbmZvKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfdGlk Yml0bWFwX2luZm8oQml0bWFwSGVhcFNjYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQlF eHBsYWluU3RhdGUgKmVzKTsKLXN0YXRpYyB2b2lkIHNob3dfc2Nhbl9pb19pbmZvKFNjYW5T dGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcyk7Ci1zdGF0aWMg dm9pZCBzaG93X3dvcmtlcl9pb19pbmZvKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJ CQlFeHBsYWluU3RhdGUgKmVzLAotCQkJCQkJCQlpbnQgd29ya2VyKTsKK3N0YXRpYyB2b2lk IHNob3dfc2Nhbl9pb191c2FnZShTY2FuU3RhdGUgKnBsYW5zdGF0ZSwKKwkJCQkJCQkgICBF eHBsYWluU3RhdGUgKmVzKTsKK3N0YXRpYyB2b2lkIHNob3dfaW9fdXNhZ2UoUGxhblN0YXRl ICpwbGFuc3RhdGUsCisJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkgIGludCB3 b3JrZXIpOwogc3RhdGljIHZvaWQgc2hvd19pbnN0cnVtZW50YXRpb25fY291bnQoY29uc3Qg Y2hhciAqcWxhYmVsLCBpbnQgd2hpY2gsCiAJCQkJCQkJCQkgICBQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X2ZvcmVpZ25zY2Fu X2luZm8oRm9yZWlnblNjYW5TdGF0ZSAqZnNzdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7CkBA IC0yMDE2LDcgKzIwMTYsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwg TGlzdCAqYW5jZXN0b3JzLAogCQkJCXNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KCJSb3dz IFJlbW92ZWQgYnkgRmlsdGVyIiwgMSwKIAkJCQkJCQkJCQkgICBwbGFuc3RhdGUsIGVzKTsK IAkJCXNob3dfdGlkYml0bWFwX2luZm8oKEJpdG1hcEhlYXBTY2FuU3RhdGUgKikgcGxhbnN0 YXRlLCBlcyk7Ci0JCQlzaG93X3NjYW5faW9faW5mbygoU2NhblN0YXRlICopIHBsYW5zdGF0 ZSwgZXMpOworCQkJc2hvd19zY2FuX2lvX3VzYWdlKChTY2FuU3RhdGUgKikgcGxhbnN0YXRl LCBlcyk7CiAJCQlicmVhazsKIAkJY2FzZSBUX1NhbXBsZVNjYW46CiAJCQlzaG93X3RhYmxl c2FtcGxlKCgoU2FtcGxlU2NhbiAqKSBwbGFuKS0+dGFibGVzYW1wbGUsCkBAIC0yMDM1LDcg KzIwMzUsNyBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5j ZXN0b3JzLAogCQkJCQkJCQkJCSAgIHBsYW5zdGF0ZSwgZXMpOwogCQkJaWYgKElzQShwbGFu LCBDdGVTY2FuKSkKIAkJCQlzaG93X2N0ZXNjYW5faW5mbyhjYXN0Tm9kZShDdGVTY2FuU3Rh dGUsIHBsYW5zdGF0ZSksIGVzKTsKLQkJCXNob3dfc2Nhbl9pb19pbmZvKChTY2FuU3RhdGUg KikgcGxhbnN0YXRlLCBlcyk7CisJCQlzaG93X3NjYW5faW9fdXNhZ2UoKFNjYW5TdGF0ZSAq KSBwbGFuc3RhdGUsIGVzKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfR2F0aGVyOgogCQkJewpA QCAtMjMyNCw5ICsyMzI0LDggQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUs IExpc3QgKmFuY2VzdG9ycywKIAkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1l bnQtPmJ1ZnVzYWdlKTsKIAkJCWlmIChlcy0+d2FsKQogCQkJCXNob3dfd2FsX3VzYWdlKGVz LCAmaW5zdHJ1bWVudC0+d2FsdXNhZ2UpOwotCi0JCQkvKiBzaG93IHByZWZldGNoIGluZm8g Zm9yIHRoZSBnaXZlbiB3b3JrZXIgKi8KLQkJCXNob3dfd29ya2VyX2lvX2luZm8ocGxhbnN0 YXRlLCBlcywgbik7CisJCQlpZiAoZXMtPmlvKQorCQkJCXNob3dfaW9fdXNhZ2UocGxhbnN0 YXRlLCBlcywgbik7CiAKIAkJCUV4cGxhaW5DbG9zZVdvcmtlcihuLCBlcyk7CiAJCX0KQEAg LTM5OTgsMTQgKzM5OTcsNzQgQEAgc2hvd190aWRiaXRtYXBfaW5mbyhCaXRtYXBIZWFwU2Nh blN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJfQogfQogCitzdGF0aWMg dm9pZAorcHJpbnRfaW9fdXNhZ2UoRXhwbGFpblN0YXRlICplcywgVGFibGVTY2FuU3RhdHMg c3RhdHMpCit7CisJLyogZG9uJ3QgcHJpbnQgc3RhdHMgaWYgdGhlcmUncyBub3RoaW5nIHRv IHJlcG9ydCAqLworCWlmIChzdGF0cy0+cHJlZmV0Y2hfY291bnQgPiAwKQorCXsKKwkJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJeworCQkJLyogcHJlZmV0 Y2ggZGlzdGFuY2UgaW5mbyAqLworCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBw ZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiUHJlZmV0Y2g6IGF2Zz0lLjNmIG1heD0lZCBjYXBh Y2l0eT0lZCIsCisJCQkJCQkJIChzdGF0cy0+ZGlzdGFuY2Vfc3VtICogMS4wIC8gc3RhdHMt PnByZWZldGNoX2NvdW50KSwKKwkJCQkJCQkgc3RhdHMtPmRpc3RhbmNlX21heCwKKwkJCQkJ CQkgc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5KTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGVzLT5zdHIsICdcbicpOworCisJCQkvKiBwcmVmZXRjaCBJL08gaW5mbyAob25seSBpZiB0 aGVyZSB3ZXJlIGFjdHVhbCBJL09zKSAqLworCQkJaWYgKHN0YXRzLT5pb19jb3VudCA+IDAp CisJCQl7CisJCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwgIkkvTzogc3RhbGxzPSUiIFBSSXU2NCwKKwkJCQkJCQkJIHN0YXRzLT5z dGFsbF9jb3VudCk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgc2l6ZT0l LjNmIGlucHJvZ3Jlc3M9JS4zZiIsCisJCQkJCQkJCSAoc3RhdHMtPmlvX25ibG9ja3MgKiAx LjAgLyBzdGF0cy0+aW9fY291bnQpLAorCQkJCQkJCQkgKHN0YXRzLT5pb19pbl9wcm9ncmVz cyAqIDEuMCAvIHN0YXRzLT5pb19jb3VudCkpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb0No YXIoZXMtPnN0ciwgJ1xuJyk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlFeHBsYWlu T3Blbkdyb3VwKCJQcmVmZXRjaCIsICJQcmVmZXRjaCIsIHRydWUsIGVzKTsKKworCQkJRXhw bGFpblByb3BlcnR5RmxvYXQoIkF2ZXJhZ2UgRGlzdGFuY2UiLCBOVUxMLAorCQkJCQkJCQkg KHN0YXRzLT5kaXN0YW5jZV9zdW0gKiAxLjAgLyBzdGF0cy0+cHJlZmV0Y2hfY291bnQpLCAz LCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJNYXggRGlzdGFuY2UiLCBOVUxM LAorCQkJCQkJCQkgICBzdGF0cy0+ZGlzdGFuY2VfbWF4LCBlcyk7CisJCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJDYXBhY2l0eSIsIE5VTEwsCisJCQkJCQkJCSAgIHN0YXRzLT5kaXN0 YW5jZV9jYXBhY2l0eSwgZXMpOworCisJCQlFeHBsYWluQ2xvc2VHcm91cCgiUHJlZmV0Y2gi LCAiUHJlZmV0Y2giLCB0cnVlLCBlcyk7CisKKwkJCWlmIChzdGF0cy0+aW9fY291bnQgPiAw KQorCQkJeworCQkJCUV4cGxhaW5PcGVuR3JvdXAoIkkvTyIsICJJL08iLCB0cnVlLCBlcyk7 CisKKwkJCQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigiU3RhbGxzIiwgTlVMTCwKKwkJCQkJ CQkJCQlzdGF0cy0+c3RhbGxfY291bnQsIGVzKTsKKwkJCQlFeHBsYWluUHJvcGVydHlGbG9h dCgiQXZlcmFnZSBJTyBTaXplIiwgTlVMTCwKKwkJCQkJCQkJCSAoc3RhdHMtPmlvX25ibG9j a3MgKiAxLjAgLyBzdGF0cy0+aW9fY291bnQpLCAzLCBlcyk7CisJCQkJRXhwbGFpblByb3Bl cnR5RmxvYXQoIkF2ZXJhZ2UgSU9zIEluIFByb2dyZXNzIiwgTlVMTCwKKwkJCQkJCQkJCSAo c3RhdHMtPmlvX2luX3Byb2dyZXNzICogMS4wIC8gc3RhdHMtPmlvX2NvdW50KSwgMywgZXMp OworCisJCQkJRXhwbGFpbkNsb3NlR3JvdXAoIkkvTyIsICJJL08iLCB0cnVlLCBlcyk7CisJ CQl9CisJCX0KKwl9Cit9CisKIC8qCi0gKiBzaG93X3NjYW5faW9faW5mbworICogc2hvd19z Y2FuX2lvX3VzYWdlCiAgKgkJc2hvdyBpbmZvIGFib3V0IHByZWZldGNoaW5nIGZvciBhIHNl cS9iaXRtYXAgc2NhbgogICoKICAqIFNob3dzIHN1bW1hcnkgb2Ygc3RhdHMgZm9yIGxlYWRl ciBhbmQgd29ya2VycyAoaWYgYW55KS4KICAqLwogc3RhdGljIHZvaWQKLXNob3dfc2Nhbl9p b19pbmZvKFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQorc2hvd19z Y2FuX2lvX3VzYWdlKFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQog ewogCVBsYW4JICAgKnBsYW4gPSBwbGFuc3RhdGUtPnBzLnBsYW47CiAJVGFibGVTY2FuU3Rh dHMJbGVhZGVyX3N0YXRzOwpAQCAtNDA0NCwxNyArNDEwMyw3IEBAIHNob3dfc2Nhbl9pb19p bmZvKFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQlmb3Ig KGludCBpID0gMDsgaSA8IHNpbnN0cnVtZW50LT5udW1fd29ya2VyczsgKytpKQogCQkJCQl7 CiAJCQkJCQlTZXFTY2FuSW5zdHJ1bWVudGF0aW9uICp3aW5zdHJ1bWVudCA9ICZzaW5zdHJ1 bWVudC0+c2luc3RydW1lbnRbaV07Ci0KLQkJCQkJCXN0YXRzLnByZWZldGNoX2NvdW50ICs9 IHdpbnN0cnVtZW50LT5zdHJlYW0ucHJlZmV0Y2hfY291bnQ7Ci0JCQkJCQlzdGF0cy5kaXN0 YW5jZV9zdW0gKz0gd2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9zdW07Ci0JCQkJCQlp ZiAod2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9tYXggPiBzdGF0cy5kaXN0YW5jZV9t YXgpCi0JCQkJCQkJc3RhdHMuZGlzdGFuY2VfbWF4ID0gd2luc3RydW1lbnQtPnN0cmVhbS5k aXN0YW5jZV9tYXg7Ci0JCQkJCQlpZiAod2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9j YXBhY2l0eSA+IHN0YXRzLmRpc3RhbmNlX2NhcGFjaXR5KQotCQkJCQkJCXN0YXRzLmRpc3Rh bmNlX2NhcGFjaXR5ID0gd2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9jYXBhY2l0eTsK LQkJCQkJCXN0YXRzLnN0YWxsX2NvdW50ICs9IHdpbnN0cnVtZW50LT5zdHJlYW0uc3RhbGxf Y291bnQ7Ci0JCQkJCQlzdGF0cy5pb19jb3VudCArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlv X2NvdW50OwotCQkJCQkJc3RhdHMuaW9fbmJsb2NrcyArPSB3aW5zdHJ1bWVudC0+c3RyZWFt LmlvX25ibG9ja3M7Ci0JCQkJCQlzdGF0cy5pb19pbl9wcm9ncmVzcyArPSB3aW5zdHJ1bWVu dC0+c3RyZWFtLmlvX2luX3Byb2dyZXNzOworCQkJCQkJQUNDVU1VTEFURV9UQUJMRV9TVEFU Uygmc3RhdHMsICZ3aW5zdHJ1bWVudC0+aW8pOwogCQkJCQl9CiAJCQkJfQogCkBAIC00MDcx LDE3ICs0MTIwLDcgQEAgc2hvd19zY2FuX2lvX2luZm8oU2NhblN0YXRlICpwbGFuc3RhdGUs IEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgc2luc3RydW1l bnQtPm51bV93b3JrZXJzOyArK2kpCiAJCQkJCXsKIAkJCQkJCUJpdG1hcEhlYXBTY2FuSW5z dHJ1bWVudGF0aW9uICp3aW5zdHJ1bWVudCA9ICZzaW5zdHJ1bWVudC0+c2luc3RydW1lbnRb aV07Ci0KLQkJCQkJCXN0YXRzLnByZWZldGNoX2NvdW50ICs9IHdpbnN0cnVtZW50LT5zdHJl YW0ucHJlZmV0Y2hfY291bnQ7Ci0JCQkJCQlzdGF0cy5kaXN0YW5jZV9zdW0gKz0gd2luc3Ry dW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9zdW07Ci0JCQkJCQlpZiAod2luc3RydW1lbnQtPnN0 cmVhbS5kaXN0YW5jZV9tYXggPiBzdGF0cy5kaXN0YW5jZV9tYXgpCi0JCQkJCQkJc3RhdHMu ZGlzdGFuY2VfbWF4ID0gd2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9tYXg7Ci0JCQkJ CQlpZiAod2luc3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9jYXBhY2l0eSA+IHN0YXRzLmRp c3RhbmNlX2NhcGFjaXR5KQotCQkJCQkJCXN0YXRzLmRpc3RhbmNlX2NhcGFjaXR5ID0gd2lu c3RydW1lbnQtPnN0cmVhbS5kaXN0YW5jZV9jYXBhY2l0eTsKLQkJCQkJCXN0YXRzLnN0YWxs X2NvdW50ICs9IHdpbnN0cnVtZW50LT5zdHJlYW0uc3RhbGxfY291bnQ7Ci0JCQkJCQlzdGF0 cy5pb19jb3VudCArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlvX2NvdW50OwotCQkJCQkJc3Rh dHMuaW9fbmJsb2NrcyArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlvX25ibG9ja3M7Ci0JCQkJ CQlzdGF0cy5pb19pbl9wcm9ncmVzcyArPSB3aW5zdHJ1bWVudC0+c3RyZWFtLmlvX2luX3By b2dyZXNzOworCQkJCQkJQUNDVU1VTEFURV9UQUJMRV9TVEFUUygmc3RhdHMsICZ3aW5zdHJ1 bWVudC0+aW8pOwogCQkJCQl9CiAJCQkJfQogCkBAIC00MDkyLDczICs0MTMxLDIzIEBAIHNo b3dfc2Nhbl9pb19pbmZvKFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVz KQogCQkJcmV0dXJuOwogCX0KIAotCS8qIGRvbid0IHByaW50IGFueXRoaW5nIHdpdGhvdXQg cHJlZmV0Y2hpbmcgKi8KLQlpZiAoc3RhdHMucHJlZmV0Y2hfY291bnQgPiAwKQotCXsKLQkJ aWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKLQkJewotCQkJLyogcHJl ZmV0Y2ggZGlzdGFuY2UgaW5mbyAqLwotCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOwotCQkJ YXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiUHJlZmV0Y2g6IGF2Zz0lLjNmIG1heD0lZCBj YXBhY2l0eT0lZCIsCi0JCQkJCQkJIChzdGF0cy5kaXN0YW5jZV9zdW0gKiAxLjAgLyBzdGF0 cy5wcmVmZXRjaF9jb3VudCksCi0JCQkJCQkJIHN0YXRzLmRpc3RhbmNlX21heCwKLQkJCQkJ CQkgc3RhdHMuZGlzdGFuY2VfY2FwYWNpdHkpOwotCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo ZXMtPnN0ciwgJ1xuJyk7Ci0KLQkJCS8qIHByZWZldGNoIEkvTyBpbmZvIChvbmx5IGlmIHRo ZXJlIHdlcmUgYWN0dWFsIEkvT3MpICovCi0JCQlpZiAoc3RhdHMuc3RhbGxfY291bnQgPiAw IHx8IHN0YXRzLmlvX2NvdW50ID4gMCkKLQkJCXsKLQkJCQlFeHBsYWluSW5kZW50VGV4dChl cyk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiSS9POiBzdGFsbHM9JSIgUFJJ dTY0LAotCQkJCQkJCQkgc3RhdHMuc3RhbGxfY291bnQpOwotCi0JCQkJaWYgKHN0YXRzLmlv X2NvdW50ID4gMCkKLQkJCQl7Ci0JCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiBz aXplPSUuM2YgaW5wcm9ncmVzcz0lLjNmIiwKLQkJCQkJCQkJCSAoc3RhdHMuaW9fbmJsb2Nr cyAqIDEuMCAvIHN0YXRzLmlvX2NvdW50KSwKLQkJCQkJCQkJCSAoc3RhdHMuaW9faW5fcHJv Z3Jlc3MgKiAxLjAgLyBzdGF0cy5pb19jb3VudCkpOwotCQkJCX0KLQotCQkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewot CQkJRXhwbGFpbk9wZW5Hcm91cCgiUHJlZmV0Y2giLCAiSS9PIiwgdHJ1ZSwgZXMpOwotCi0J CQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQXZlcmFnZSBEaXN0YW5jZSIsIE5VTEwsCi0JCQkJ CQkJCSAoc3RhdHMuZGlzdGFuY2Vfc3VtICogMS4wIC8gc3RhdHMucHJlZmV0Y2hfY291bnQp LCAzLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJNYXggRGlzdGFuY2UiLCBO VUxMLAotCQkJCQkJCQkgICBzdGF0cy5kaXN0YW5jZV9tYXgsIGVzKTsKLQkJCUV4cGxhaW5Q cm9wZXJ0eUludGVnZXIoIkNhcGFjaXR5IiwgTlVMTCwKLQkJCQkJCQkJICAgc3RhdHMuZGlz dGFuY2VfY2FwYWNpdHksIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2VyKCJTdGFs bHMiLCBOVUxMLAotCQkJCQkJCQkJc3RhdHMuc3RhbGxfY291bnQsIGVzKTsKLQotCQkJaWYg KHN0YXRzLmlvX2NvdW50ID4gMCkKLQkJCXsKLQkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi QXZlcmFnZSBJTyBTaXplIiwgTlVMTCwKLQkJCQkJCQkJCSAoc3RhdHMuaW9fbmJsb2NrcyAq IDEuMCAvIHN0YXRzLmlvX2NvdW50KSwgMywgZXMpOwotCQkJCUV4cGxhaW5Qcm9wZXJ0eUZs b2F0KCJBdmVyYWdlIElPcyBJbiBQcm9ncmVzcyIsIE5VTEwsCi0JCQkJCQkJCQkgKHN0YXRz LmlvX2luX3Byb2dyZXNzICogMS4wIC8gc3RhdHMuaW9fY291bnQpLCAzLCBlcyk7Ci0JCQl9 Ci0KLQkJCUV4cGxhaW5DbG9zZUdyb3VwKCJQcmVmZXRjaCIsICJJL08iLCB0cnVlLCBlcyk7 Ci0JCX0KLQl9CisJcHJpbnRfaW9fdXNhZ2UoZXMsICZzdGF0cyk7CiB9CiAKIC8qCi0gKiBz aG93X2lvX3dvcmtlcl9pbmZvCi0gKgkJc2hvdyBpbmZvIGFib3V0IHByZWZldGNoaW5nIGZv ciBhIHNpbmdsZSB3b3JrZXIKKyAqIHNob3dfaW9fdXNhZ2UKKyAqCQlzaG93IGluZm8gYWJv dXQgSS9PIHByZWZldGNoaW5nIGZvciBhIHNpbmdsZSB3b3JrZXIKICAqCiAgKiBTaG93cyBw cmVmZXRjaGluZyBzdGF0cyBmb3IgYSBwYXJhbGxlbCBzY2FuIHdvcmtlci4KICAqLwogc3Rh dGljIHZvaWQKLXNob3dfd29ya2VyX2lvX2luZm8oUGxhblN0YXRlICpwbGFuc3RhdGUsIEV4 cGxhaW5TdGF0ZSAqZXMsIGludCB3b3JrZXIpCitzaG93X2lvX3VzYWdlKFBsYW5TdGF0ZSAq cGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzLCBpbnQgd29ya2VyKQogewogCVBsYW4JICAg KnBsYW4gPSBwbGFuc3RhdGUtPnBsYW47Ci0JUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbiAq c3RhdHMgPSBOVUxMOworCUlPU3RhdHMJICAgKnN0YXRzID0gTlVMTDsKKworCS8vIFhYWAor CVRhYmxlU2NhblN0YXRzRGF0YQl0bXA7CiAKIAlpZiAoIWVzLT5pbykKIAkJcmV0dXJuOwpA QCAtNDE3Miw3ICs0MTYxLDcgQEAgc2hvd193b3JrZXJfaW9faW5mbyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcywgaW50IHdvcmtlcikKIAkJCQlTaGFyZWRCaXRt YXBIZWFwSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1bWVudCA9IHN0YXRlLT5zaW5zdHJ1bWVu dDsKIAkJCQlCaXRtYXBIZWFwU2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCA9ICZz aW5zdHJ1bWVudC0+c2luc3RydW1lbnRbd29ya2VyXTsKIAotCQkJCXN0YXRzID0gJmluc3Ry dW1lbnQtPnN0cmVhbTsKKwkJCQlzdGF0cyA9ICZpbnN0cnVtZW50LT5pbzsKIAogCQkJCWJy ZWFrOwogCQkJfQpAQCAtNDE4Miw3ICs0MTcxLDcgQEAgc2hvd193b3JrZXJfaW9faW5mbyhQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcywgaW50IHdvcmtlcikKIAkJ CQlTaGFyZWRTZXFTY2FuSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1bWVudCA9IHN0YXRlLT5z aW5zdHJ1bWVudDsKIAkJCQlTZXFTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0g JnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFt3b3JrZXJdOwogCi0JCQkJc3RhdHMgPSAmaW5z dHJ1bWVudC0+c3RyZWFtOworCQkJCXN0YXRzID0gJmluc3RydW1lbnQtPmlvOwogCiAJCQkJ YnJlYWs7CiAJCQl9CkBAIC00MTkxLDYwICs0MTgwLDE3IEBAIHNob3dfd29ya2VyX2lvX2lu Zm8oUGxhblN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMsIGludCB3b3JrZXIp CiAJCQlyZXR1cm47CiAJfQogCi0JLyogZG9uJ3QgcHJpbnQgc3RhdHMgaWYgdGhlcmUncyBu b3RoaW5nIHRvIHJlcG9ydCAqLwotCWlmIChzdGF0cy0+cHJlZmV0Y2hfY291bnQgPiAwKQot CXsKLQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKLQkJewotCQkJ LyogcHJlZmV0Y2ggZGlzdGFuY2UgaW5mbyAqLwotCQkJRXhwbGFpbkluZGVudFRleHQoZXMp OwotCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiUHJlZmV0Y2g6IGF2Zz0lLjNmIG1h eD0lZCBjYXBhY2l0eT0lZCIsCi0JCQkJCQkJIChzdGF0cy0+ZGlzdGFuY2Vfc3VtICogMS4w IC8gc3RhdHMtPnByZWZldGNoX2NvdW50KSwKLQkJCQkJCQkgc3RhdHMtPmRpc3RhbmNlX21h eCwKLQkJCQkJCQkgc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5KTsKLQkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwotCi0JCQkvKiBwcmVmZXRjaCBJL08gaW5mbyAo b25seSBpZiB0aGVyZSB3ZXJlIGFjdHVhbCBJL09zKSAqLwotCQkJaWYgKHN0YXRzLT5zdGFs bF9jb3VudCA+IDAgfHwgc3RhdHMtPmlvX2NvdW50ID4gMCkKLQkJCXsKLQkJCQlFeHBsYWlu SW5kZW50VGV4dChlcyk7Ci0JCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiSS9POiBz dGFsbHM9JSIgUFJJdTY0LAotCQkJCQkJCQkgc3RhdHMtPnN0YWxsX2NvdW50KTsKLQotCQkJ CWlmIChzdGF0cy0+aW9fY291bnQgPiAwKQotCQkJCXsKLQkJCQkJYXBwZW5kU3RyaW5nSW5m byhlcy0+c3RyLCAiIHNpemU9JS4zZiBpbnByb2dyZXNzPSUuM2YiLAotCQkJCQkJCQkJIChz dGF0cy0+aW9fbmJsb2NrcyAqIDEuMCAvIHN0YXRzLT5pb19jb3VudCksCi0JCQkJCQkJCQkg KHN0YXRzLT5pb19pbl9wcm9ncmVzcyAqIDEuMCAvIHN0YXRzLT5pb19jb3VudCkpOwotCQkJ CX0KLQotCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwotCQkJfQot CQl9Ci0JCWVsc2UKLQkJewotCQkJRXhwbGFpbk9wZW5Hcm91cCgiUHJlZmV0Y2giLCAiSS9P IiwgdHJ1ZSwgZXMpOwotCi0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQXZlcmFnZSBEaXN0 YW5jZSIsIE5VTEwsCi0JCQkJCQkJCSAoc3RhdHMtPmRpc3RhbmNlX3N1bSAqIDEuMCAvIHN0 YXRzLT5wcmVmZXRjaF9jb3VudCksIDMsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVn ZXIoIk1heCBEaXN0YW5jZSIsIE5VTEwsCi0JCQkJCQkJCSAgIHN0YXRzLT5kaXN0YW5jZV9t YXgsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkNhcGFjaXR5IiwgTlVMTCwK LQkJCQkJCQkJICAgc3RhdHMtPmRpc3RhbmNlX2NhcGFjaXR5LCBlcyk7Ci0JCQlFeHBsYWlu UHJvcGVydHlVSW50ZWdlcigiU3RhbGxzIiwgTlVMTCwKLQkJCQkJCQkJCXN0YXRzLT5zdGFs bF9jb3VudCwgZXMpOwotCi0JCQlpZiAoc3RhdHMtPmlvX2NvdW50ID4gMCkKLQkJCXsKLQkJ CQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQXZlcmFnZSBJTyBTaXplIiwgTlVMTCwKLQkJCQkJ CQkJCSAoc3RhdHMtPmlvX25ibG9ja3MgKiAxLjAgLyBzdGF0cy0+aW9fY291bnQpLCAzLCBl cyk7Ci0JCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIkF2ZXJhZ2UgSU9zIEluIFByb2dyZXNz IiwgTlVMTCwKLQkJCQkJCQkJCSAoc3RhdHMtPmlvX2luX3Byb2dyZXNzICogMS4wIC8gc3Rh dHMtPmlvX2NvdW50KSwgMywgZXMpOwotCQkJfQotCi0JCQlFeHBsYWluQ2xvc2VHcm91cCgi UHJlZmV0Y2giLCAiSS9PIiwgdHJ1ZSwgZXMpOwotCQl9Ci0JfQorCS8qIFhYWCBjb252ZXJ0 IHRvIFRhYmxlU2NhblN0YXRzICovCisJdG1wLmRpc3RhbmNlX2NhcGFjaXR5ID0gc3RhdHMt PmRpc3RhbmNlX2NhcGFjaXR5OworCXRtcC5kaXN0YW5jZV9tYXggPSBzdGF0cy0+ZGlzdGFu Y2VfbWF4OworCXRtcC5kaXN0YW5jZV9zdW0gPSBzdGF0cy0+ZGlzdGFuY2Vfc3VtOworCXRt cC5pb19jb3VudCA9IHN0YXRzLT5pb19jb3VudDsKKwl0bXAuaW9faW5fcHJvZ3Jlc3MgPSBz dGF0cy0+aW9faW5fcHJvZ3Jlc3M7CisJdG1wLmlvX25ibG9ja3MgPSBzdGF0cy0+aW9fbmJs b2NrczsKKwl0bXAucHJlZmV0Y2hfY291bnQgPSBzdGF0cy0+cHJlZmV0Y2hfY291bnQ7CisJ dG1wLnN0YWxsX2NvdW50ID0gc3RhdHMtPnN0YWxsX2NvdW50OworCisJcHJpbnRfaW9fdXNh Z2UoZXMsICZ0bXApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbl9zdGF0ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9zdGF0 ZS5jCmluZGV4IGY1Y2JkZDIxYWFhLi4zZDVmOTJiZmE5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW5fc3RhdGUuYwpAQCAtNzksNiArNzksNyBAQCBQYXJzZUV4cGxhaW5PcHRp b25MaXN0KEV4cGxhaW5TdGF0ZSAqZXMsIExpc3QgKm9wdGlvbnMsIFBhcnNlU3RhdGUgKnBz dGF0ZSkKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQl0aW1pbmdfc2V0ID0gZmFsc2U7CiAJ Ym9vbAkJYnVmZmVyc19zZXQgPSBmYWxzZTsKKwlib29sCQlpb19zZXQgPSBmYWxzZTsKIAli b29sCQlzdW1tYXJ5X3NldCA9IGZhbHNlOwogCiAJLyogUGFyc2Ugb3B0aW9ucyBsaXN0LiAq LwpAQCAtMTYxLDYgKzE2Miw3IEBAIFBhcnNlRXhwbGFpbk9wdGlvbkxpc3QoRXhwbGFpblN0 YXRlICplcywgTGlzdCAqb3B0aW9ucywgUGFyc2VTdGF0ZSAqcHN0YXRlKQogCQl9CiAJCWVs c2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJpbyIpID09IDApCiAJCXsKKwkJCWlvX3Nl dCA9IHRydWU7CiAJCQllcy0+aW8gPSBkZWZHZXRCb29sZWFuKG9wdCk7CiAJCX0KIAkJZWxz ZSBpZiAoIUFwcGx5RXh0ZW5zaW9uRXhwbGFpbk9wdGlvbihlcywgb3B0LCBwc3RhdGUpKQpA QCAtMTgzLDYgKzE4NSw5IEBAIFBhcnNlRXhwbGFpbk9wdGlvbkxpc3QoRXhwbGFpblN0YXRl ICplcywgTGlzdCAqb3B0aW9ucywgUGFyc2VTdGF0ZSAqcHN0YXRlKQogCS8qIGlmIHRoZSBi dWZmZXJzIHdhcyBub3Qgc2V0IGV4cGxpY2l0bHksIHNldCBkZWZhdWx0IHZhbHVlICovCiAJ ZXMtPmJ1ZmZlcnMgPSAoYnVmZmVyc19zZXQpID8gZXMtPmJ1ZmZlcnMgOiBlcy0+YW5hbHl6 ZTsKIAorCS8qIGlmIHRoZSBJTyB3YXMgbm90IHNldCBleHBsaWNpdGx5LCBzZXQgZGVmYXVs dCB2YWx1ZSAqLworCWVzLT5pbyA9IChpb19zZXQpID8gZXMtPmlvIDogZXMtPmFuYWx5emU7 CisKIAkvKiBjaGVjayB0aGF0IHRpbWluZyBpcyB1c2VkIHdpdGggRVhQTEFJTiBBTkFMWVpF ICovCiAJaWYgKGVzLT50aW1pbmcgJiYgIWVzLT5hbmFseXplKQogCQllcmVwb3J0KEVSUk9S LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBi ZjlhZjc1OTZjZS4uMGYxNDU5ZjExYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0zMzMsMTYgKzMzMyw3IEBAIEV4ZWNFbmRCaXRtYXBI ZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCQkvKiBjb2xsZWN0IHByZWZl dGNoIGluZm8gZm9yIHRoaXMgcHJvY2VzcyBmcm9tIHRoZSByZWFkX3N0cmVhbSAqLwogCQlp ZiAoKHN0YXRzID0gdGFibGVfc2Nhbl9zdGF0cyhub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2MpKSAhPSBOVUxMKQogCQl7Ci0JCQlzaS0+c3RyZWFtLnByZWZldGNoX2NvdW50ICs9IHN0 YXRzLT5wcmVmZXRjaF9jb3VudDsKLQkJCXNpLT5zdHJlYW0uZGlzdGFuY2Vfc3VtICs9IHN0 YXRzLT5kaXN0YW5jZV9zdW07Ci0JCQlpZiAoc3RhdHMtPmRpc3RhbmNlX21heCA+IHNpLT5z dHJlYW0uZGlzdGFuY2VfbWF4KQotCQkJCXNpLT5zdHJlYW0uZGlzdGFuY2VfbWF4ID0gc3Rh dHMtPmRpc3RhbmNlX21heDsKLQkJCWlmIChzdGF0cy0+ZGlzdGFuY2VfY2FwYWNpdHkgPiBz aS0+c3RyZWFtLmRpc3RhbmNlX2NhcGFjaXR5KQotCQkJCXNpLT5zdHJlYW0uZGlzdGFuY2Vf Y2FwYWNpdHkgPSBzdGF0cy0+ZGlzdGFuY2VfY2FwYWNpdHk7Ci0JCQlzaS0+c3RyZWFtLnN0 YWxsX2NvdW50ICs9IHN0YXRzLT5zdGFsbF9jb3VudDsKLQkJCXNpLT5zdHJlYW0uaW9fY291 bnQgKz0gc3RhdHMtPmlvX2NvdW50OwotCQkJc2ktPnN0cmVhbS5pb19uYmxvY2tzICs9IHN0 YXRzLT5pb19uYmxvY2tzOwotCQkJc2ktPnN0cmVhbS5pb19pbl9wcm9ncmVzcyArPSBzdGF0 cy0+aW9faW5fcHJvZ3Jlc3M7CisJCQlBQ0NVTVVMQVRFX1RBQkxFX1NUQVRTKHN0YXRzLCAm c2ktPmlvKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5k ZXggNzk5Mjk0NmE1YmUuLjRmYTg1YTFiNmJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMKQEAgLTMxOSwxNiArMzE5LDcgQEAgRXhlY0VuZFNlcVNjYW4oU2VxU2NhblN0 YXRlICpub2RlKQogCQkvKiBjb2xsZWN0IHByZWZldGNoIGluZm8gZm9yIHRoaXMgcHJvY2Vz cyBmcm9tIHRoZSByZWFkX3N0cmVhbSAqLwogCQlpZiAoKHN0YXRzID0gdGFibGVfc2Nhbl9z dGF0cyhub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpKSAhPSBOVUxMKQogCQl7Ci0JCQlz aS0+c3RyZWFtLnByZWZldGNoX2NvdW50ICs9IHN0YXRzLT5wcmVmZXRjaF9jb3VudDsKLQkJ CXNpLT5zdHJlYW0uZGlzdGFuY2Vfc3VtICs9IHN0YXRzLT5kaXN0YW5jZV9zdW07Ci0JCQlp ZiAoc3RhdHMtPmRpc3RhbmNlX21heCA+IHNpLT5zdHJlYW0uZGlzdGFuY2VfbWF4KQotCQkJ CXNpLT5zdHJlYW0uZGlzdGFuY2VfbWF4ID0gc3RhdHMtPmRpc3RhbmNlX21heDsKLQkJCWlm IChzdGF0cy0+ZGlzdGFuY2VfY2FwYWNpdHkgPiBzaS0+c3RyZWFtLmRpc3RhbmNlX2NhcGFj aXR5KQotCQkJCXNpLT5zdHJlYW0uZGlzdGFuY2VfY2FwYWNpdHkgPSBzdGF0cy0+ZGlzdGFu Y2VfY2FwYWNpdHk7Ci0JCQlzaS0+c3RyZWFtLnN0YWxsX2NvdW50ICs9IHN0YXRzLT5zdGFs bF9jb3VudDsKLQkJCXNpLT5zdHJlYW0uaW9fY291bnQgKz0gc3RhdHMtPmlvX2NvdW50Owot CQkJc2ktPnN0cmVhbS5pb19uYmxvY2tzICs9IHN0YXRzLT5pb19uYmxvY2tzOwotCQkJc2kt PnN0cmVhbS5pb19pbl9wcm9ncmVzcyArPSBzdGF0cy0+aW9faW5fcHJvZ3Jlc3M7CisJCQlB Q0NVTVVMQVRFX1RBQkxFX1NUQVRTKHN0YXRzLCAmc2ktPmlvKTsKIAkJfQogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0uYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKaW5kZXggZjU2MDA0N2FmZDYuLmZh YTUyY2E0YjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0 cmVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKQEAg LTEwOCw4ICsxMDgsOCBAQCBzdHJ1Y3QgUmVhZFN0cmVhbQogCWJvb2wJCWFkdmljZV9lbmFi bGVkOwogCWJvb2wJCXRlbXBvcmFyeTsKIAotCS8qIHN0YXRzIGNvdW50ZXJzICovCi0JUmVh ZFN0cmVhbUluc3RydW1lbnRhdGlvbiBzdGF0czsKKwkvKiBzY2FuIHN0YXRzIGNvdW50ZXJz ICovCisJSU9TdGF0cwkJc3RhdHM7CiAKIAkvKgogCSAqIE9uZS1ibG9jayBidWZmZXIgdG8g c3VwcG9ydCAndW5nZXR0aW5nJyBhIGJsb2NrIG51bWJlciwgdG8gcmVzb2x2ZSBmbG93CkBA IC0xNzcsOCArMTc3LDcgQEAgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IoUmVhZFN0cmVh bSAqc3RyZWFtLAogfQogCiAvKgotICogcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZl dGNoCi0gKgkJdXBkYXRlIHJlYWRfc3RyZWFtIHN0YXRzIHdpdGggY3VycmVudCBwaW5uZWQg YnVmZmVyIGRlcHRoCisgKiBVcGRhdGUgc3RyZWFtIHN0YXRzIHdpdGggY3VycmVudCBwaW5u ZWQgYnVmZmVyIGRlcHRoLgogICoKICAqIENhbGxlZCBvbmNlIHBlciBidWZmZXIgcmV0dXJu ZWQgdG8gdGhlIGNvbnN1bWVyIGluIHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKCkuCiAgKiBS ZWNvcmRzIHRoZSBudW1iZXIgb2YgcGlubmVkIGJ1ZmZlcnMgYXQgdGhhdCBtb21lbnQsIHNv IHdlIGNhbiBjb21wdXRlIHRoZQpAQCAtMTk0LDggKzE5Myw3IEBAIHJlYWRfc3RyZWFtX3Vw ZGF0ZV9zdGF0c19wcmVmZXRjaChSZWFkU3RyZWFtICpzdHJlYW0pCiB9CiAKIC8qCi0gKiBy ZWFkX3N0cmVhbV91cGRhdGVfc3RhdHNfaW8KLSAqCQl1cGRhdGUgcmVhZF9zdHJlYW0gc3Rh dHMgYWJvdXQgc2l6ZSBvZiBJL08gcmVxdWVzdHMKKyAqIFVwZGF0ZSBzdHJlYW0gc3RhdHMg YWJvdXQgc2l6ZSBvZiBJL08gcmVxdWVzdHMuCiAgKgogICogV2UgY291bnQgdGhlIG51bWJl ciBvZiBJL08gcmVxdWVzdHMsIHNpemUgb2YgcmVxdWVzdHMgKGNvdW50ZWQgaW4gYmxvY2tz KQogICogYW5kIG51bWJlciBvZiBpbi1wcm9ncmVzcyBJL09zLgpAQCAtMjA4LDYgKzIwNiwx MiBAQCByZWFkX3N0cmVhbV91cGRhdGVfc3RhdHNfaW8oUmVhZFN0cmVhbSAqc3RyZWFtLCBp bnQgbmJsb2NrcywgaW50IGluX3Byb2dyZXNzKQogCXN0cmVhbS0+c3RhdHMuaW9faW5fcHJv Z3Jlc3MgKz0gaW5fcHJvZ3Jlc3M7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZAorcmVhZF9z dHJlYW1fdXBkYXRlX3N0YXRzX3N0YWxsKFJlYWRTdHJlYW0gKnN0cmVhbSkKK3sKKwlzdHJl YW0tPnN0YXRzLnN0YWxsX2NvdW50Kys7Cit9CisKIC8qCiAgKiBBc2sgdGhlIGNhbGxiYWNr IHdoaWNoIGJsb2NrIGl0IHdvdWxkIGxpa2UgdXMgdG8gcmVhZCBuZXh0LCB3aXRoIGEgb25l IGJsb2NrCiAgKiBidWZmZXIgaW4gZnJvbnQgdG8gYWxsb3cgcmVhZF9zdHJlYW1fdW5nZXRf YmxvY2soKSB0byB3b3JrLgpAQCAtNzQzLDcgKzc0Nyw3IEBAIHJlYWRfc3RyZWFtX2JlZ2lu X2ltcGwoaW50IGZsYWdzLAogCXN0cmVhbS0+dGVtcG9yYXJ5ID0gU21ncklzVGVtcChzbWdy KTsKIAogCS8qIHplcm8gdGhlIHN0YXRzLCB0aGVuIHNldCBjYXBhY2l0eSAqLwotCW1lbXNl dCgmc3RyZWFtLT5zdGF0cywgMCwgc2l6ZW9mKFJlYWRTdHJlYW1JbnN0cnVtZW50YXRpb24p KTsKKwltZW1zZXQoJnN0cmVhbS0+c3RhdHMsIDAsIHNpemVvZihJT1N0YXRzKSk7CiAJc3Ry ZWFtLT5zdGF0cy5kaXN0YW5jZV9jYXBhY2l0eSA9IG1heF9waW5uZWRfYnVmZmVyczsKIAog CS8qCkBAIC05MDcsNiArOTExLDkgQEAgcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoUmVhZFN0 cmVhbSAqc3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRhKQogCiAJCQkvKiB1cGRhdGUg SS9PIHN0YXRzICovCiAJCQlyZWFkX3N0cmVhbV91cGRhdGVfc3RhdHNfaW8oc3RyZWFtLCAx LCBzdHJlYW0tPmlvc19pbl9wcm9ncmVzcyk7CisKKwkJCS8qIHVwZGF0ZSBwcmVmZXRjaCBk aXN0YW5jZSAqLworCQkJcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZldGNoKHN0cmVh bSk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC05MTgsNyArOTI1LDYgQEAgcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoUmVhZFN0cmVhbSAqc3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRh KQogCQl9CiAKIAkJc3RyZWFtLT5mYXN0X3BhdGggPSBmYWxzZTsKLQkJcmVhZF9zdHJlYW1f dXBkYXRlX3N0YXRzX3ByZWZldGNoKHN0cmVhbSk7CiAJCXJldHVybiBidWZmZXI7CiAJfQog I2VuZGlmCkBAIC05NzQsNyArOTgwLDcgQEAgcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoUmVh ZFN0cmVhbSAqc3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRhKQogCiAJCS8qIENvdW50 IGl0IGFzIGEgc3RhbGwgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBJTyAqLwogCQlpZiAobmVl ZGVkX3dhaXQpCi0JCQlzdHJlYW0tPnN0YXRzLnN0YWxsX2NvdW50ICs9IDE7CisJCQlyZWFk X3N0cmVhbV91cGRhdGVfc3RhdHNfc3RhbGwoc3RyZWFtKTsKIAogCQlBc3NlcnQoc3RyZWFt LT5pb3NfaW5fcHJvZ3Jlc3MgPiAwKTsKIAkJc3RyZWFtLT5pb3NfaW5fcHJvZ3Jlc3MtLTsK QEAgLTExNzUsNyArMTE4MSw3IEBAIHJlYWRfc3RyZWFtX2VuZChSZWFkU3RyZWFtICpzdHJl YW0pCiB9CiAKIC8qIHJldHVybiB0aGUgcHJlZmV0Y2ggc3RhdHMgZm9yIHRoZSByZWFkX3N0 cmVhbSAqLwotUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbgorSU9TdGF0cwogcmVhZF9zdHJl YW1fcHJlZmV0Y2hfc3RhdHMoUmVhZFN0cmVhbSAqc3RyZWFtKQogewogCXJldHVybiBzdHJl YW0tPnN0YXRzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggY2FkYTlmMjhiZDguLmMwNDg4 OTg3YjJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTE0MSw2ICsxNDEsMjAgQEAgdHlw ZWRlZiBzdHJ1Y3QgVGFibGVTY2FuU3RhdHNEYXRhCiB9IFRhYmxlU2NhblN0YXRzRGF0YTsK IHR5cGVkZWYgc3RydWN0IFRhYmxlU2NhblN0YXRzRGF0YSAqVGFibGVTY2FuU3RhdHM7CiAK KyNkZWZpbmUgQUNDVU1VTEFURV9UQUJMRV9TVEFUUyhkc3QsIHNyYykgXAorCWRvIHsgXAor CQkoZHN0KS0+cHJlZmV0Y2hfY291bnQgKz0gKHNyYyktPnByZWZldGNoX2NvdW50OyBcCisJ CShkc3QpLT5kaXN0YW5jZV9zdW0gKz0gKHNyYyktPmRpc3RhbmNlX3N1bTsgXAorCQlpZiAo KHNyYyktPmRpc3RhbmNlX21heCA+IChkc3QpLT5kaXN0YW5jZV9tYXgpIFwKKwkJCShkc3Qp LT5kaXN0YW5jZV9tYXggPSAoc3JjKS0+ZGlzdGFuY2VfbWF4OyBcCisJCWlmICgoc3JjKS0+ ZGlzdGFuY2VfY2FwYWNpdHkgPiAoZHN0KS0+ZGlzdGFuY2VfY2FwYWNpdHkpIFwKKwkJCShk c3QpLT5kaXN0YW5jZV9jYXBhY2l0eSA9IChzcmMpLT5kaXN0YW5jZV9jYXBhY2l0eTsgXAor CQkoZHN0KS0+c3RhbGxfY291bnQgKz0gKHNyYyktPnN0YWxsX2NvdW50OyBcCisJCShkc3Qp LT5pb19jb3VudCArPSAoc3JjKS0+aW9fY291bnQ7IFwKKwkJKGRzdCktPmlvX25ibG9ja3Mg Kz0gKHNyYyktPmlvX25ibG9ja3M7IFwKKwkJKGRzdCktPmlvX2luX3Byb2dyZXNzICs9IChz cmMpLT5pb19pbl9wcm9ncmVzczsgXAorCX0gd2hpbGUgKDApCisKIC8qCiAgKiBCYXNlIGNs YXNzIGZvciBmZXRjaGVzIGZyb20gYSB0YWJsZSB2aWEgYW4gaW5kZXguIFRoaXMgaXMgdGhl IGJhc2UtY2xhc3MKICAqIGZvciBzdWNoIHNjYW5zLCB3aGljaCBuZWVkcyB0byBiZSBlbWJl ZGRlZCBpbiB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3QgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2luc3RydW1lbnRfbm9kZS5oCmluZGV4IGQ5NGRiYmM5MTdkLi5jZGEwMGFkNDBlOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKQEAgLTQ0LDcgKzQ0LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgU2hhcmVkQWdnSW5mbwogICoJSW5zdHJ1bWVudGF0aW9uIGlu Zm9ybWF0aW9uIGFib3V0IHJlYWQgc3RyZWFtcwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKi8KLXR5cGVkZWYgc3RydWN0IFJlYWRTdHJlYW1JbnN0cnVtZW50YXRpb24KK3R5cGVk ZWYgc3RydWN0IElPU3RhdHMKIHsKIAkvKiBudW1iZXIgb2YgYnVmZmVycyByZXR1cm5lZCB0 byBjb25zdW1lciAoZm9yIGF2ZXJhZ2luZyBkaXN0YW5jZSkgKi8KIAl1aW50NjQJCXByZWZl dGNoX2NvdW50OwpAQCAtNjUsNyArNjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWFkU3RyZWFt SW5zdHJ1bWVudGF0aW9uCiAJdWludDY0CQlpb19jb3VudDsJCS8qIG51bWJlciBvZiBJL09z ICovCiAJdWludDY0CQlpb19uYmxvY2tzOwkJLyogc3VtIG9mIGJsb2NrcyBmb3IgYWxsIEkv T3MgKi8KIAl1aW50NjQJCWlvX2luX3Byb2dyZXNzOwkvKiBzdW0gb2YgaW4tcHJvZ3Jlc3Mg SS9PcyAqLwotfSBSZWFkU3RyZWFtSW5zdHJ1bWVudGF0aW9uOworfSBJT1N0YXRzOwogCiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzQsNyArNzQsNyBAQCB0eXBlZGVmIHN0 cnVjdCBSZWFkU3RyZWFtSW5zdHJ1bWVudGF0aW9uCiAgKi8KIHR5cGVkZWYgc3RydWN0IFNl cVNjYW5JbnN0cnVtZW50YXRpb24KIHsKLQlSZWFkU3RyZWFtSW5zdHJ1bWVudGF0aW9uCXN0 cmVhbTsKKwlJT1N0YXRzCQlpbzsKIH0gU2VxU2Nhbkluc3RydW1lbnRhdGlvbjsKIAogLyoK QEAgLTExMyw3ICsxMTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCaXRtYXBIZWFwU2Nhbkluc3Ry dW1lbnRhdGlvbgogewogCXVpbnQ2NAkJZXhhY3RfcGFnZXM7CiAJdWludDY0CQlsb3NzeV9w YWdlczsKLQlSZWFkU3RyZWFtSW5zdHJ1bWVudGF0aW9uCXN0cmVhbTsKKwlJT1N0YXRzCQlp bzsKIH0gQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb247CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3JlYWRfc3RyZWFtLmgKaW5kZXggZWMzOTZkYjUzNjkuLjA2NzZiZGM5YjE0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9yZWFkX3N0cmVhbS5oCkBAIC02NSw3ICs2NSw3IEBACiAKIHN0cnVj dCBSZWFkU3RyZWFtOwogdHlwZWRlZiBzdHJ1Y3QgUmVhZFN0cmVhbSBSZWFkU3RyZWFtOwot dHlwZWRlZiBzdHJ1Y3QgUmVhZFN0cmVhbUluc3RydW1lbnRhdGlvbiBSZWFkU3RyZWFtSW5z dHJ1bWVudGF0aW9uOwordHlwZWRlZiBzdHJ1Y3QgSU9TdGF0cyBJT1N0YXRzOwogCiAvKiBm b3IgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgKi8KIHR5cGVkZWYgc3RydWN0IEJsb2Nr UmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZQpAQCAtMTA1LDYgKzEwNSw2IEBAIGV4dGVybiB2b2lk IHJlYWRfc3RyZWFtX3Jlc3VtZShSZWFkU3RyZWFtICpzdHJlYW0pOwogZXh0ZXJuIHZvaWQg cmVhZF9zdHJlYW1fcmVzZXQoUmVhZFN0cmVhbSAqc3RyZWFtKTsKIGV4dGVybiB2b2lkIHJl YWRfc3RyZWFtX2VuZChSZWFkU3RyZWFtICpzdHJlYW0pOwogCi1leHRlcm4gUmVhZFN0cmVh bUluc3RydW1lbnRhdGlvbiByZWFkX3N0cmVhbV9wcmVmZXRjaF9zdGF0cyhSZWFkU3RyZWFt ICpzdHJlYW0pOworZXh0ZXJuIElPU3RhdHMgcmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3RhdHMo UmVhZFN0cmVhbSAqc3RyZWFtKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJFQURfU1RSRUFNX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IDdjMWYyNmIx ODJjLi4yZDI0N2Y3M2MxNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9leHBsYWluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4u b3V0CkBAIC0yMyw2ICsyMywxMCBAQCBiZWdpbgogICAgICAgICAtLSBJZ25vcmUgdGV4dC1t b2RlIGJ1ZmZlcnMgb3V0cHV0IGJlY2F1c2UgaXQgdmFyaWVzIGRlcGVuZGluZwogICAgICAg ICAtLSBvbiB0aGUgc3lzdGVtIHN0YXRlCiAgICAgICAgIENPTlRJTlVFIFdIRU4gKGxuIH4g JyArQnVmZmVyczogLionKTsKKyAgICAgICAgLS0gSWdub3JlIHRleHQtbW9kZSBwcmVmZXRj aCBhbmQgSS9PIG91dHB1dCBiZWNhdXNlIGl0IHZhcmllcworICAgICAgICAtLSBkZXBlbmRp bmcgb24gdGhlIHN5c3RlbSBzdGF0ZQorICAgICAgICBDT05USU5VRSBXSEVOIChsbiB+ICcg K1ByZWZldGNoOiAuKicpOworICAgICAgICBDT05USU5VRSBXSEVOIChsbiB+ICcgK0kvTzog LionKTsKICAgICAgICAgLS0gSWdub3JlIHRleHQtbW9kZSAiUGxhbm5pbmc6IiBsaW5lIGJl Y2F1c2Ugd2hldGhlciBpdCdzIG91dHB1dAogICAgICAgICAtLSB2YXJpZXMgZGVwZW5kaW5n IG9uIHRoZSBzeXN0ZW0gc3RhdGUKICAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gPSAnUGxh bm5pbmc6Jyk7CkBAIC02OCw3ICs3Miw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhw bGFpbiBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAgU2VxIFNjYW4gb24gaW50OF90 YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQogKDEgcm93KQogCi1zZWxl Y3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmKSBzZWxl Y3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxh aW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpIHNlbGVjdCAqIGZyb20gaW50OF90 YmwgaTgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2Nh biBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pIChhY3R1 YWwgdGltZT1OLk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQpAQCAtNzYsNyArODAsNyBAQCBz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmKSBz ZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4JwogIEV4ZWN1dGlvbiBUaW1lOiBOLk4gbXMKICgz IHJvd3MpCiAKLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVm ZmVycyBvZmYsIHZlcmJvc2UpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKK3NlbGVj dCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycyBvZmYsIGlvIG9m ZiwgdmVyYm9zZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcHVi bGljLmludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikgKGFjdHVh bCB0aW1lPU4uTi4uTi5OIHJvd3M9Ti5OIGxvb3BzPU4pCkBAIC05Myw3ICs5Nyw3IEBAIHNl bGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0 IHRleHQpIHNlbGVjdCAqIGZyb20gaW50CiAgRXhlY3V0aW9uIFRpbWU6IE4uTiBtcwogKDMg cm93cykKIAotc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCBidWZm ZXJzLCBmb3JtYXQgeG1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMsIGlvIG9mZiwgZm9y bWF0IHhtbCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogICAgICAgICAgICAgICAg ICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgPGV4cGxh aW4geG1sbnM9Imh0dHA6Ly93d3cucG9zdGdyZXNxbC5vcmcvTi9leHBsYWluIj4gKwpAQCAt MTQ0LDcgKzE0OCw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6 ZSwgYnVmZmVycywgZm9ybWF0IHhtbCkgc2VsZWN0ICogZnJvbSBpbnQ4CiAgPC9leHBsYWlu PgogKDEgcm93KQogCi1zZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUs IHNlcmlhbGl6ZSwgYnVmZmVycywgZm9ybWF0IHlhbWwpIHNlbGVjdCAqIGZyb20gaW50OF90 YmwgaTgnKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgc2Vy aWFsaXplLCBidWZmZXJzLCBpbyBvZmYsIGZvcm1hdCB5YW1sKSBzZWxlY3QgKiBmcm9tIGlu dDhfdGJsIGk4Jyk7CiAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLSBQbGFuOiAgICAgICAgICAgICAgICAgICAg ICArCkBAIC0zMTAsNiArMzE0LDExIEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFp biAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0IGpzb24pIHNlbGVjdCAqIGZyb20gaW50CiAg ICAgICAgIkFjdHVhbCBSb3dzIjogTi5OLCAgICAgICAgICArCiAgICAgICAgIkFjdHVhbCBM b29wcyI6IE4sICAgICAgICAgICArCiAgICAgICAgIkRpc2FibGVkIjogZmFsc2UsICAgICAg ICAgICArCisgICAgICAgIlByZWZldGNoIjogeyAgICAgICAgICAgICAgICArCisgICAgICAg ICAiQXZlcmFnZSBEaXN0YW5jZSI6IE4uTiwgICArCisgICAgICAgICAiTWF4IERpc3RhbmNl IjogTiwgICAgICAgICArCisgICAgICAgICAiQ2FwYWNpdHkiOiBOICAgICAgICAgICAgICAr CisgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgIlNoYXJl ZCBIaXQgQmxvY2tzIjogTiwgICAgICArCiAgICAgICAgIlNoYXJlZCBSZWFkIEJsb2NrcyI6 IE4sICAgICArCiAgICAgICAgIlNoYXJlZCBEaXJ0aWVkIEJsb2NrcyI6IE4sICArCkBAIC0z OTYsNyArNDA1LDcgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnkp IHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKICAgIE1lbW9yeTogdXNlZD1Oa0IgIGFs bG9jYXRlZD1Oa0IKICgyIHJvd3MpCiAKLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFp biAobWVtb3J5LCBhbmFseXplLCBidWZmZXJzIG9mZikgc2VsZWN0ICogZnJvbSBpbnQ4X3Ri bCBpOCcpOworc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnksIGFuYWx5 emUsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBpbnQ4 X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1O Lk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQpAQCAtNDQ1LDYgKzQ1NCwxMSBAQCBzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKG1lbW9yeSwgYW5hbHl6ZSwgZm9ybWF0IGpzb24p IHNlbGVjdCAqIGZyb20gaW50OAogICAgICAgICJBY3R1YWwgUm93cyI6IE4uTiwgICAgICAg ICArCiAgICAgICAgIkFjdHVhbCBMb29wcyI6IE4sICAgICAgICAgICsKICAgICAgICAiRGlz YWJsZWQiOiBmYWxzZSwgICAgICAgICAgKworICAgICAgICJQcmVmZXRjaCI6IHsgICAgICAg ICAgICAgICArCisgICAgICAgICAiQXZlcmFnZSBEaXN0YW5jZSI6IE4uTiwgICsKKyAgICAg ICAgICJNYXggRGlzdGFuY2UiOiBOLCAgICAgICAgKworICAgICAgICAgIkNhcGFjaXR5Ijog TiAgICAgICAgICAgICArCisgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICsK ICAgICAgICAiU2hhcmVkIEhpdCBCbG9ja3MiOiBOLCAgICAgKwogICAgICAgICJTaGFyZWQg UmVhZCBCbG9ja3MiOiBOLCAgICArCiAgICAgICAgIlNoYXJlZCBEaXJ0aWVkIEJsb2NrcyI6 IE4sICsKQEAgLTU2OCw2ICs1ODIsMTEgQEAgc2VsZWN0IGpzb25iX3ByZXR0eSgKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNjaGVtYSI6ICJwdWJsaWMiLCAg ICAgICAgICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc2FibGVkIjog ZmFsc2UsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBy ZWZldGNoIjogeyAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDYXBhY2l0eSI6IDAsICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJNYXggRGlzdGFuY2UiOiAwLCAgICAgICAgICsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdmVyYWdlIERpc3RhbmNlIjogMC4wICAg ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vZGUgVHlwZSI6 ICJTZXEgU2NhbiIsICAgICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBs YW4gUm93cyI6IDAsICAgICAgICAgICAgICAgICsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlBsYW4gV2lkdGgiOiAwLCAgICAgICAgICAgICAgICsKQEAgLTc0NCw3ICs3NjMs NyBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIGNyZWF0ZSB0 YWJsZSB0ZXN0X2N0YXMgYXMgc2VsZWN0IDEnKTsKICgzIHJvd3MpCiAKIC0tIFRlc3QgU0VS SUFMSVpFIG9wdGlvbgotc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXpl LGJ1ZmZlcnMgb2ZmLHNlcmlhbGl6ZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwor c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGlv IG9mZixzZXJpYWxpemUpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAg KGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiBy b3dzPU4uTiBsb29wcz1OKQpAQCAtNzcyLDcgKzc5MSw3IEBAIHNlbGVjdCBleHBsYWluX2Zp bHRlcignZXhwbGFpbiAoYW5hbHl6ZSxzZXJpYWxpemUgYmluYXJ5LGJ1ZmZlcnMsdGltaW5n KSBzZWxlY3QKICg0IHJvd3MpCiAKIC0tIHRoaXMgdGVzdHMgYW4gZWRnZSBjYXNlIHdoZXJl IHdlIGhhdmUgbm8gZGF0YSB0byByZXR1cm4KLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhw bGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixzZXJpYWxpemUpIGNyZWF0ZSB0ZW1wIHRhYmxl IGV4cGxhaW5fdGVtcCBhcyBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsaW8gb2ZmLHNl cmlhbGl6ZSkgY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl90ZW1wIGFzIHNlbGVjdCAqIGZy b20gaW50OF90YmwgaTgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRo PU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQpAQCAtNzgyLDcg KzgwMSw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZm ZXJzIG9mZixzZXJpYWxpemUpIGNyZWF0ZSB0ZW1wIHRhYmxlCiAoNCByb3dzKQogCiAtLSBU ZXN0IHR1cGxlc3RvcmUgc3RvcmFnZSB1c2FnZSBpbiBXaW5kb3cgYWdncmVnYXRlIChtZW1v cnkgY2FzZSkKLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZm ZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikgb3ZlcigpIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIGEobiknKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAo YW5hbHl6ZSxidWZmZXJzIG9mZixpbyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92 ZXIoKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBhKG4pJyk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgV2luZG93 QWdnIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQpAQCAtNzk1LDcg KzgxNCw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZm ZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikgb3ZlCiAKIC0tIFRlc3QgdHVwbGVz dG9yZSBzdG9yYWdlIHVzYWdlIGluIFdpbmRvdyBhZ2dyZWdhdGUgKGRpc2sgY2FzZSkKIHNl dCB3b3JrX21lbSB0byA2NDsKLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5h bHl6ZSxidWZmZXJzIG9mZixjb3N0cyBvZmYpIHNlbGVjdCBzdW0obikgb3ZlcigpIGZyb20g Z2VuZXJhdGVfc2VyaWVzKDEsMjUwMCkgYShuKScpOworc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGlvIG9mZixjb3N0cyBvZmYpIHNlbGVj dCBzdW0obikgb3ZlcigpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjUwMCkgYShuKScpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIFdpbmRvd0FnZyAoYWN0dWFsIHRpbWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9 TikKQEAgLTgwNyw3ICs4MjYsNyBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4g KGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZQogKDYg cm93cykKIAogLS0gVGVzdCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2luZG93IGFn Z3JlZ2F0ZSAobWVtb3J5IGFuZCBkaXNrIGNhc2UsIGZpbmFsIHJlc3VsdCBpcyBkaXNrKQot c2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNv c3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmVyKHBhcnRpdGlvbiBieSBtKSBmcm9tIChTRUxF Q1QgbiA8IDMgYXMgbSwgbiBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI1MDApIGEobikpJyk7 CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYs aW8gb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmVyKHBhcnRpdGlvbiBieSBtKSBm cm9tIChTRUxFQ1QgbiA8IDMgYXMgbSwgbiBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDI1MDAp IGEobikpJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgV2luZG93QWdnIChhY3R1YWwgdGltZT1O Lk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmNyZW1lbnRhbF9zb3J0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaW5jcmVtZW50YWxfc29ydC5vdXQKaW5kZXggMWU2ZTAyMGZlYTguLjU1ZDVhNTJk OTZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luY3JlbWVudGFs X3NvcnQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5jcmVtZW50YWxf c29ydC5vdXQKQEAgLTM5LDcgKzM5LDcgQEAgZGVjbGFyZQogICBsaW5lIHRleHQ7CiBiZWdp bgogICBmb3IgbGluZSBpbgotICAgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGNvc3Rz IG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSAnIHx8IHF1ZXJ5 CisgICAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1tYXJ5IG9m ZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGlvIG9mZikgJyB8fCBxdWVyeQogICBsb29w CiAgICAgb3V0X2xpbmUgOj0gcmVnZXhwX3JlcGxhY2UobGluZSwgJ1xkK2tCJywgJ05Oa0In LCAnZycpOwogICAgIHJldHVybiBuZXh0OwpAQCAtNTUsNyArNTUsNyBAQCBkZWNsYXJlCiAg IGVsZW1lbnQganNvbmI7CiAgIG1hdGNoaW5nX25vZGVzIGpzb25iIDo9ICdbXSc6Ompzb25i OwogYmVnaW4KLSAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1t YXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCAnJ2pzb24nJykgJyB8 fCBxdWVyeSBpbnRvIHN0cmljdCBlbGVtZW50czsKKyAgZXhlY3V0ZSAnZXhwbGFpbiAoYW5h bHl6ZSwgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYs IGlvIG9mZiwgZm9ybWF0ICcnanNvbicnKSAnIHx8IHF1ZXJ5IGludG8gc3RyaWN0IGVsZW1l bnRzOwogICB3aGlsZSBqc29uYl9hcnJheV9sZW5ndGgoZWxlbWVudHMpID4gMCBsb29wCiAg ICAgZWxlbWVudCA6PSBlbGVtZW50cy0+MDsKICAgICBlbGVtZW50cyA6PSBlbGVtZW50cyAt IDA7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lbW9pemUub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZW1vaXplLm91dAppbmRleCAwMGMzMGI5 MTQ1OS4uNDI1YWVkNGQ3NDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbWVtb2l6ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZW1vaXpl Lm91dApAQCAtMTAsNyArMTAsNyBAQCBkZWNsYXJlCiAgICAgbG4gdGV4dDsKIGJlZ2luCiAg ICAgZm9yIGxuIGluCi0gICAgICAgIGV4ZWN1dGUgZm9ybWF0KCdleHBsYWluIChhbmFseXpl LCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgJXMn LAorICAgICAgICBleGVjdXRlIGZvcm1hdCgnZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2Zm LCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGlvIG9mZikgJXMnLAog ICAgICAgICAgICAgcXVlcnkpCiAgICAgbG9vcAogICAgICAgICBpZiBoaWRlX2hpdG1pc3Mg PSB0cnVlIHRoZW4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWVy Z2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZXJnZS5vdXQKaW5kZXggOWNi MWQ4NzA2NmEuLmYxMzMxYzMwN2QzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL21lcmdlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21lcmdl Lm91dApAQCAtMTYyMyw3ICsxNjIzLDcgQEAgJCQKIERFQ0xBUkUgbG4gdGV4dDsKIEJFR0lO CiAgICAgRk9SIGxuIElOCi0gICAgICAgIEVYRUNVVEUgJ2V4cGxhaW4gKGFuYWx5emUsIHRp bWluZyBvZmYsIHN1bW1hcnkgb2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2ZmKSAnIHx8Cisg ICAgICAgIEVYRUNVVEUgJ2V4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYsIHN1bW1hcnkg b2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpICcgfHwKIAkJICBxdWVyeQog ICAgIExPT1AKICAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICcoTWVtb3J5KCBV c2FnZSk/fEJ1Y2tldHN8QmF0Y2hlcyk6IFxTKicsICAnXDE6IHh4eCcsICdnJyk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXgg ZGVhY2RkNzU4MDcuLjEzMzJjZDBlNjQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CkBAIC0xMSw3ICsxMSw3IEBAIGRlY2xhcmUK ICAgICBsbiB0ZXh0OwogYmVnaW4KICAgICBmb3IgbG4gaW4KLSAgICAgICAgZXhlY3V0ZSBm b3JtYXQoJ2V4cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWlu ZyBvZmYsIGJ1ZmZlcnMgb2ZmKSAlcycsCisgICAgICAgIGV4ZWN1dGUgZm9ybWF0KCdleHBs YWluIChhbmFseXplLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZm ZXJzIG9mZiwgaW8gb2ZmKSAlcycsCiAgICAgICAgICAgICBxdWVyeSkKICAgICBsb29wCiAg ICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnTWF4aW11bSBTdG9yYWdlOiBcZCsn LCAnTWF4aW11bSBTdG9yYWdlOiBOJyk7CkBAIC0yMzIyLDcgKzIzMjIsOCBAQCBleHBsYWlu IChhbmFseXplLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZikgc2VsZWN0ICogZnJvbQogICAgU3VicGxhbnMgUmVtb3ZlZDogMwogICAgLT4gIFNl cSBTY2FuIG9uIGxpc3RfcGFydDEgbGlzdF9wYXJ0XzEgKGFjdHVhbCByb3dzPTEuMDAgbG9v cHM9MSkKICAgICAgICAgIEZpbHRlcjogKGEgPSBsaXN0X3BhcnRfZm4oMSkpCi0oNCByb3dz KQorICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBtYXg9MSBjYXBhY2l0eT05NAorKDUg cm93cykKIAogLS0gRW5zdXJlIHBydW5pbmcgZG9lcyBub3QgdGFrZSBwbGFjZSB3aGVuIHRo ZSBmdW5jdGlvbiBoYXMgYSBWYXIgcGFyYW1ldGVyCiBleHBsYWluIChhbmFseXplLCBjb3N0 cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2VsZWN0ICog ZnJvbSBsaXN0X3BhcnQgd2hlcmUgYSA9IGxpc3RfcGFydF9mbihhKTsKQEAgLTIzMzEsMTMg KzIzMzIsMTcgQEAgZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwg dGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCAqIGZyb20KICBBcHBlbmQgKGFjdHVh bCByb3dzPTQuMDAgbG9vcHM9MSkKICAgIC0+ICBTZXEgU2NhbiBvbiBsaXN0X3BhcnQxIGxp c3RfcGFydF8xIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAgICAgICBGaWx0ZXI6 IChhID0gbGlzdF9wYXJ0X2ZuKGEpKQorICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBt YXg9MSBjYXBhY2l0eT05NAogICAgLT4gIFNlcSBTY2FuIG9uIGxpc3RfcGFydDIgbGlzdF9w YXJ0XzIgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAgICAgIEZpbHRlcjogKGEg PSBsaXN0X3BhcnRfZm4oYSkpCisgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0x IGNhcGFjaXR5PTk0CiAgICAtPiAgU2VxIFNjYW4gb24gbGlzdF9wYXJ0MyBsaXN0X3BhcnRf MyAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoYSA9IGxp c3RfcGFydF9mbihhKSkKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2Fw YWNpdHk9OTQKICAgIC0+ICBTZXEgU2NhbiBvbiBsaXN0X3BhcnQ0IGxpc3RfcGFydF80IChh Y3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAgICAgICBGaWx0ZXI6IChhID0gbGlzdF9w YXJ0X2ZuKGEpKQotKDkgcm93cykKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4 PTEgY2FwYWNpdHk9OTQKKygxMyByb3dzKQogCiAtLSBFbnN1cmUgcHJ1bmluZyBkb2VzIG5v dCB0YWtlIHBsYWNlIHdoZW4gdGhlIGV4cHJlc3Npb24gY29udGFpbnMgYSBWYXIuCiBleHBs YWluIChhbmFseXplLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZm ZXJzIG9mZikgc2VsZWN0ICogZnJvbSBsaXN0X3BhcnQgd2hlcmUgYSA9IGxpc3RfcGFydF9m bigxKSArIGE7CkBAIC0yMzQ3LDE2ICsyMzUyLDIwIEBAIGV4cGxhaW4gKGFuYWx5emUsIGNv c3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3Qg KiBmcm9tCiAgICAtPiAgU2VxIFNjYW4gb24gbGlzdF9wYXJ0MSBsaXN0X3BhcnRfMSAoYWN0 dWFsIHJvd3M9MC4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoYSA9IChsaXN0X3Bh cnRfZm4oMSkgKyBhKSkKICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6IDEKKyAg ICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9OTQKICAgIC0+ICBT ZXEgU2NhbiBvbiBsaXN0X3BhcnQyIGxpc3RfcGFydF8yIChhY3R1YWwgcm93cz0wLjAwIGxv b3BzPTEpCiAgICAgICAgICBGaWx0ZXI6IChhID0gKGxpc3RfcGFydF9mbigxKSArIGEpKQog ICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogMQorICAgICAgICAgUHJlZmV0Y2g6 IGF2Zz0xLjAwMCBtYXg9MSBjYXBhY2l0eT05NAogICAgLT4gIFNlcSBTY2FuIG9uIGxpc3Rf cGFydDMgbGlzdF9wYXJ0XzMgKGFjdHVhbCByb3dzPTAuMDAgbG9vcHM9MSkKICAgICAgICAg IEZpbHRlcjogKGEgPSAobGlzdF9wYXJ0X2ZuKDEpICsgYSkpCiAgICAgICAgICBSb3dzIFJl bW92ZWQgYnkgRmlsdGVyOiAxCisgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0x IGNhcGFjaXR5PTk0CiAgICAtPiAgU2VxIFNjYW4gb24gbGlzdF9wYXJ0NCBsaXN0X3BhcnRf NCAoYWN0dWFsIHJvd3M9MC4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoYSA9IChs aXN0X3BhcnRfZm4oMSkgKyBhKSkKICAgICAgICAgIFJvd3MgUmVtb3ZlZCBieSBGaWx0ZXI6 IDEKLSgxMyByb3dzKQorICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBtYXg9MSBjYXBh Y2l0eT05NAorKDE3IHJvd3MpCiAKIHJvbGxiYWNrOwogZHJvcCB0YWJsZSBsaXN0X3BhcnQ7 CkBAIC0yNTI0LDYgKzI1MzMsNyBAQCBzZWxlY3QgZXhwbGFpbl9wYXJhbGxlbF9hcHBlbmQo J3NlbGVjdCBhdmcoYWIuYSkgZnJvbSBhYiBpbm5lciBqb2luIGxwcnRfYSBhIG9uCiAgICAg ICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVhbCByb3dzPU4gbG9vcHM9TikKICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBscHJ0X2EgYSAo YWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmls dGVyOiAoYSA9IEFOWSAoJ3swLDAsMX0nOjppbnRlZ2VyW10pKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBtYXg9MSBjYXBhY2l0eT05NAogICAg ICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZCAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYWJfYTFf YjFfYV9pZHggb24gYWJfYTFfYjEgYWJfMSAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBhLmEpCkBA IC0yNTQzLDcgKzI1NTMsNyBAQCBzZWxlY3QgZXhwbGFpbl9wYXJhbGxlbF9hcHBlbmQoJ3Nl bGVjdCBhdmcoYWIuYSkgZnJvbSBhYiBpbm5lciBqb2luIGxwcnRfYSBhIG9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEuYSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGFiX2EzX2IzX2Ff aWR4IG9uIGFiX2EzX2IzIGFiXzkgKG5ldmVyIGV4ZWN1dGVkKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBhLmEpCi0oMjcgcm93cykKKygy OCByb3dzKQogCiAtLSBFbnN1cmUgdGhlIHNhbWUgcGFydGl0aW9ucyBhcmUgcHJ1bmVkIHdo ZW4gd2UgbWFrZSB0aGUgbmVzdGVkIGxvb3AKIC0tIHBhcmFtZXRlciBhbiBFeHByIHJhdGhl ciB0aGFuIGEgcGxhaW4gUGFyYW0uCkBAIC0yNTU4LDYgKzI1NjgsNyBAQCBzZWxlY3QgZXhw bGFpbl9wYXJhbGxlbF9hcHBlbmQoJ3NlbGVjdCBhdmcoYWIuYSkgZnJvbSBhYiBpbm5lciBq b2luIGxwcnRfYSBhIG9uCiAgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVh bCByb3dzPU4gbG9vcHM9TikKICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBT ZXEgU2NhbiBvbiBscHJ0X2EgYSAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYSA9IEFOWSAoJ3swLDAsMX0nOjppbnRlZ2Vy W10pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBt YXg9MSBjYXBhY2l0eT05NAogICAgICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZCAoYWN0 dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIElu ZGV4IFNjYW4gdXNpbmcgYWJfYTFfYjFfYV9pZHggb24gYWJfYTFfYjEgYWJfMSAoYWN0dWFs IHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSAoYS5hICsgMCkpCkBAIC0yNTc3LDcgKzI1ODgsNyBAQCBzZWxlY3Qg ZXhwbGFpbl9wYXJhbGxlbF9hcHBlbmQoJ3NlbGVjdCBhdmcoYWIuYSkgZnJvbSBhYiBpbm5l ciBqb2luIGxwcnRfYSBhIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IChhLmEgKyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBJbmRleCBTY2FuIHVzaW5nIGFiX2EzX2IzX2FfaWR4IG9uIGFiX2EzX2IzIGFiXzkg KG5ldmVyIGV4ZWN1dGVkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSAoYS5hICsgMCkpCi0oMjcgcm93cykKKygyOCByb3dzKQogCiBpbnNl cnQgaW50byBscHJ0X2EgdmFsdWVzKDMpLCgzKTsKIHNlbGVjdCBleHBsYWluX3BhcmFsbGVs X2FwcGVuZCgnc2VsZWN0IGF2ZyhhYi5hKSBmcm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEg b24gYWIuYSA9IGEuYSB3aGVyZSBhLmEgaW4oMSwgMCwgMyknKTsKQEAgLTI1OTEsNiArMjYw Miw3IEBAIHNlbGVjdCBleHBsYWluX3BhcmFsbGVsX2FwcGVuZCgnc2VsZWN0IGF2ZyhhYi5h KSBmcm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEgb24KICAgICAgICAgICAgICAgIC0+ICBO ZXN0ZWQgTG9vcCAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGxwcnRfYSBhIChhY3R1YWwgcm93cz1OIGxv b3BzPU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgn ezEsMCwzfSc6OmludGVnZXJbXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVm ZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFjaXR5PTk0CiAgICAgICAgICAgICAgICAgICAg ICAtPiAgQXBwZW5kIChhY3R1YWwgcm93cz1OIGxvb3BzPU4pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBhYl9hMV9iMV9hX2lkeCBvbiBhYl9h MV9iMSBhYl8xIChhY3R1YWwgcm93cz1OIGxvb3BzPU4pCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEuYSkKQEAgLTI2MTAsNyArMjYyMiw3 IEBAIHNlbGVjdCBleHBsYWluX3BhcmFsbGVsX2FwcGVuZCgnc2VsZWN0IGF2ZyhhYi5hKSBm cm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEgb24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gYS5hKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYWJfYTNfYjNfYV9pZHggb24gYWJfYTNfYjMg YWJfOSAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBhLmEpCi0oMjcgcm93cykKKygyOCByb3dzKQog CiBzZWxlY3QgZXhwbGFpbl9wYXJhbGxlbF9hcHBlbmQoJ3NlbGVjdCBhdmcoYWIuYSkgZnJv bSBhYiBpbm5lciBqb2luIGxwcnRfYSBhIG9uIGFiLmEgPSBhLmEgd2hlcmUgYS5hIGluKDEs IDAsIDApJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw bGFpbl9wYXJhbGxlbF9hcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIApAQCAtMjYyNCw2ICsyNjM2LDcgQEAgc2VsZWN0IGV4cGxhaW5fcGFyYWxsZWxf YXBwZW5kKCdzZWxlY3QgYXZnKGFiLmEpIGZyb20gYWIgaW5uZXIgam9pbiBscHJ0X2EgYSBv bgogICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGxwcnRf YSBhIChhY3R1YWwgcm93cz1OIGxvb3BzPU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGaWx0ZXI6IChhID0gQU5ZICgnezEsMCwwfSc6OmludGVnZXJbXSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiBOCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFjaXR5PTk0 CiAgICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kIChhY3R1YWwgcm93cz1OIGxvb3Bz PU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyBh Yl9hMV9iMV9hX2lkeCBvbiBhYl9hMV9iMSBhYl8xIChhY3R1YWwgcm93cz1OIGxvb3BzPU4p CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEu YSkKQEAgLTI2NDMsNyArMjY1Niw3IEBAIHNlbGVjdCBleHBsYWluX3BhcmFsbGVsX2FwcGVu ZCgnc2VsZWN0IGF2ZyhhYi5hKSBmcm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEgb24KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gYS5hKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYWJfYTNf YjNfYV9pZHggb24gYWJfYTNfYjMgYWJfOSAobmV2ZXIgZXhlY3V0ZWQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEuYSkKLSgyOCByb3dz KQorKDI5IHJvd3MpCiAKIGRlbGV0ZSBmcm9tIGxwcnRfYSB3aGVyZSBhID0gMTsKIHNlbGVj dCBleHBsYWluX3BhcmFsbGVsX2FwcGVuZCgnc2VsZWN0IGF2ZyhhYi5hKSBmcm9tIGFiIGlu bmVyIGpvaW4gbHBydF9hIGEgb24gYWIuYSA9IGEuYSB3aGVyZSBhLmEgaW4oMSwgMCwgMCkn KTsKQEAgLTI2NTgsNiArMjY3MSw3IEBAIHNlbGVjdCBleHBsYWluX3BhcmFsbGVsX2FwcGVu ZCgnc2VsZWN0IGF2ZyhhYi5hKSBmcm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEgb24KICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBscHJ0X2EgYSAo YWN0dWFsIHJvd3M9TiBsb29wcz1OKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmls dGVyOiAoYSA9IEFOWSAoJ3sxLDAsMH0nOjppbnRlZ2VyW10pKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRlcjogTgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBtYXg9MSBjYXBhY2l0eT05NAogICAg ICAgICAgICAgICAgICAgICAgLT4gIEFwcGVuZCAoYWN0dWFsIHJvd3M9TiBsb29wcz1OKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYWJfYTFf YjFfYV9pZHggb24gYWJfYTFfYjEgYWJfMSAobmV2ZXIgZXhlY3V0ZWQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEuYSkKQEAgLTI2Nzcs NyArMjY5MSw3IEBAIHNlbGVjdCBleHBsYWluX3BhcmFsbGVsX2FwcGVuZCgnc2VsZWN0IGF2 ZyhhYi5hKSBmcm9tIGFiIGlubmVyIGpvaW4gbHBydF9hIGEgb24KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gYS5hKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgYWJfYTNfYjNfYV9pZHggb24g YWJfYTNfYjMgYWJfOSAobmV2ZXIgZXhlY3V0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IGEuYSkKLSgyOCByb3dzKQorKDI5IHJvd3Mp CiAKIHJlc2V0IGVuYWJsZV9oYXNoam9pbjsKIHJlc2V0IGVuYWJsZV9tZXJnZWpvaW47CkBA IC0yNjk1LDkgKzI3MDksMTEgQEAgc2VsZWN0ICogZnJvbSBhYiB3aGVyZSBhID0gKHNlbGVj dCBtYXgoYSkgZnJvbSBscHJ0X2EpIGFuZCBiID0gKHNlbGVjdCBtYXgoYSktMQogICAgSW5p dFBsYW4gZXhwcl8xCiAgICAgIC0+ICBBZ2dyZWdhdGUgKGFjdHVhbCByb3dzPTEuMDAgbG9v cHM9MSkKICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGxwcnRfYSAoYWN0dWFsIHJvd3M9 MTAyLjAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAg bWF4PTEgY2FwYWNpdHk9OTQKICAgIEluaXRQbGFuIGV4cHJfMgogICAgICAtPiAgQWdncmVn YXRlIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBscHJ0X2EgbHBydF9hXzEgKGFjdHVhbCByb3dzPTEwMi4wMCBsb29wcz0xKQorICAg ICAgICAgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFjaXR5PTk0CiAg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBhYl9hMV9iMSBhYl8xIChuZXZlciBleGVjdXRl ZCkKICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAoSW5pdFBsYW4gZXhwcl8xKS5jb2wx KQogICAgICAgICAgRmlsdGVyOiAoYiA9IChJbml0UGxhbiBleHByXzIpLmNvbDEpCkBAIC0y NzUyLDcgKzI3NjgsNyBAQCBzZWxlY3QgKiBmcm9tIGFiIHdoZXJlIGEgPSAoc2VsZWN0IG1h eChhKSBmcm9tIGxwcnRfYSkgYW5kIGIgPSAoc2VsZWN0IG1heChhKS0xCiAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gYWJfYTNfYjNfYV9pZHggKG5ldmVyIGV4ZWN1dGVk KQogICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAoSW5pdFBsYW4gZXhwcl8xKS5j b2wxKQogICAgICAgICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDAKLSg2MSByb3dzKQorKDYz IHJvd3MpCiAKIC0tIFRlc3QgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgd2l0aCBVTklP TiBBTEwgcGFyZW50cwogZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1tYXJ5IG9m ZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpCkBAIC0yODgwLDEzICsyODk2LDE0IEBAIGV4 cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1 ZmZlcnMgb2ZmKSBleGVjdXRlIGFiX3E2CiAgICAtPiAgU2VxIFNjYW4gb24geHlfMSAoYWN0 dWFsIHJvd3M9MC4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoKHggPSAkMSkgQU5E ICh5ID0gKEluaXRQbGFuIGV4cHJfMSkuY29sMSkpCiAgICAgICAgICBSb3dzIFJlbW92ZWQg YnkgRmlsdGVyOiAxCisgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFj aXR5PTk0CiAgICAtPiAgU2VxIFNjYW4gb24gYWJfYTFfYjEgYWJfNCAobmV2ZXIgZXhlY3V0 ZWQpCiAgICAgICAgICBGaWx0ZXI6ICgoYSA9ICQxKSBBTkQgKGIgPSAoSW5pdFBsYW4gZXhw cl8xKS5jb2wxKSkKICAgIC0+ICBTZXEgU2NhbiBvbiBhYl9hMV9iMiBhYl81IChuZXZlciBl eGVjdXRlZCkKICAgICAgICAgIEZpbHRlcjogKChhID0gJDEpIEFORCAoYiA9IChJbml0UGxh biBleHByXzEpLmNvbDEpKQogICAgLT4gIFNlcSBTY2FuIG9uIGFiX2ExX2IzIGFiXzYgKG5l dmVyIGV4ZWN1dGVkKQogICAgICAgICAgRmlsdGVyOiAoKGEgPSAkMSkgQU5EIChiID0gKElu aXRQbGFuIGV4cHJfMSkuY29sMSkpCi0oMTkgcm93cykKKygyMCByb3dzKQogCiAtLSBFbnN1 cmUgd2Ugc2VlIGp1c3QgdGhlIHh5XzEgcm93LgogZXhlY3V0ZSBhYl9xNigxMDApOwpAQCAt MzAyNSw2ICszMDQyLDcgQEAgc2VsZWN0ICogZnJvbSB0YmwxIGpvaW4gdHBydCBvbiB0Ymwx LmNvbDEgPiB0cHJ0LmNvbDE7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIE5lc3RlZCBM b29wIChhY3R1YWwgcm93cz02LjAwIGxvb3BzPTEpCiAgICAtPiAgU2VxIFNjYW4gb24gdGJs MSAoYWN0dWFsIHJvd3M9Mi4wMCBsb29wcz0xKQorICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0x LjAwMCBtYXg9MSBjYXBhY2l0eT05NAogICAgLT4gIEFwcGVuZCAoYWN0dWFsIHJvd3M9My4w MCBsb29wcz0yKQogICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgdHBydDFfaWR4IG9u IHRwcnRfMSAoYWN0dWFsIHJvd3M9Mi4wMCBsb29wcz0yKQogICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGNvbDEgPCB0YmwxLmNvbDEpCkBAIC0zMDQ0LDcgKzMwNjIsNyBAQCBzZWxl Y3QgKiBmcm9tIHRibDEgam9pbiB0cHJ0IG9uIHRibDEuY29sMSA+IHRwcnQuY29sMTsKICAg ICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRwcnQ2X2lkeCBvbiB0cHJ0XzYgKG5ldmVy IGV4ZWN1dGVkKQogICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGNvbDEgPCB0YmwxLmNv bDEpCiAgICAgICAgICAgICAgICBJbmRleCBTZWFyY2hlczogMAotKDIxIHJvd3MpCisoMjIg cm93cykKIAogZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGlt aW5nIG9mZiwgYnVmZmVycyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRibDEgam9pbiB0cHJ0IG9u IHRibDEuY29sMSA9IHRwcnQuY29sMTsKQEAgLTMwNTIsNiArMzA3MCw3IEBAIHNlbGVjdCAq IGZyb20gdGJsMSBqb2luIHRwcnQgb24gdGJsMS5jb2wxID0gdHBydC5jb2wxOwogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcCAoYWN0dWFsIHJvd3M9Mi4wMCBsb29w cz0xKQogICAgLT4gIFNlcSBTY2FuIG9uIHRibDEgKGFjdHVhbCByb3dzPTIuMDAgbG9vcHM9 MSkKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9OTQKICAg IC0+ICBBcHBlbmQgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MikKICAgICAgICAgIC0+ICBJ bmRleCBTY2FuIHVzaW5nIHRwcnQxX2lkeCBvbiB0cHJ0XzEgKG5ldmVyIGV4ZWN1dGVkKQog ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGNvbDEgPSB0YmwxLmNvbDEpCkBAIC0zMDcx LDcgKzMwOTAsNyBAQCBzZWxlY3QgKiBmcm9tIHRibDEgam9pbiB0cHJ0IG9uIHRibDEuY29s MSA9IHRwcnQuY29sMTsKICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRwcnQ2X2lk eCBvbiB0cHJ0XzYgKG5ldmVyIGV4ZWN1dGVkKQogICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGNvbDEgPSB0YmwxLmNvbDEpCiAgICAgICAgICAgICAgICBJbmRleCBTZWFyY2hlczog MAotKDIxIHJvd3MpCisoMjIgcm93cykKIAogc2VsZWN0IHRibDEuY29sMSwgdHBydC5jb2wx IGZyb20gdGJsMQogaW5uZXIgam9pbiB0cHJ0IG9uIHRibDEuY29sMSA+IHRwcnQuY29sMQpA QCAtMzEwMyw2ICszMTIyLDcgQEAgc2VsZWN0ICogZnJvbSB0YmwxIGlubmVyIGpvaW4gdHBy dCBvbiB0YmwxLmNvbDEgPiB0cHJ0LmNvbDE7CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0yMy4wMCBsb29wcz0xKQogICAgLT4gIFNlcSBT Y2FuIG9uIHRibDEgKGFjdHVhbCByb3dzPTUuMDAgbG9vcHM9MSkKKyAgICAgICAgIFByZWZl dGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9OTQKICAgIC0+ICBBcHBlbmQgKGFjdHVh bCByb3dzPTQuNjAgbG9vcHM9NSkKICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRw cnQxX2lkeCBvbiB0cHJ0XzEgKGFjdHVhbCByb3dzPTIuMDAgbG9vcHM9NSkKICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6IChjb2wxIDwgdGJsMS5jb2wxKQpAQCAtMzEyMiw3ICszMTQy LDcgQEAgc2VsZWN0ICogZnJvbSB0YmwxIGlubmVyIGpvaW4gdHBydCBvbiB0YmwxLmNvbDEg PiB0cHJ0LmNvbDE7CiAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0cHJ0Nl9pZHgg b24gdHBydF82IChuZXZlciBleGVjdXRlZCkKICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChjb2wxIDwgdGJsMS5jb2wxKQogICAgICAgICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDAK LSgyMSByb3dzKQorKDIyIHJvd3MpCiAKIGV4cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwg c3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKQogc2VsZWN0ICogZnJvbSB0 YmwxIGlubmVyIGpvaW4gdHBydCBvbiB0YmwxLmNvbDEgPSB0cHJ0LmNvbDE7CkBAIC0zMTMw LDYgKzMxNTAsNyBAQCBzZWxlY3QgKiBmcm9tIHRibDEgaW5uZXIgam9pbiB0cHJ0IG9uIHRi bDEuY29sMSA9IHRwcnQuY29sMTsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVk IExvb3AgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKICAgIC0+ICBTZXEgU2NhbiBvbiB0 YmwxIChhY3R1YWwgcm93cz01LjAwIGxvb3BzPTEpCisgICAgICAgICBQcmVmZXRjaDogYXZn PTEuMDAwIG1heD0xIGNhcGFjaXR5PTk0CiAgICAtPiAgQXBwZW5kIChhY3R1YWwgcm93cz0w LjYwIGxvb3BzPTUpCiAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0cHJ0MV9pZHgg b24gdHBydF8xIChuZXZlciBleGVjdXRlZCkKICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChjb2wxID0gdGJsMS5jb2wxKQpAQCAtMzE0OSw3ICszMTcwLDcgQEAgc2VsZWN0ICogZnJv bSB0YmwxIGlubmVyIGpvaW4gdHBydCBvbiB0YmwxLmNvbDEgPSB0cHJ0LmNvbDE7CiAgICAg ICAgICAtPiAgSW5kZXggU2NhbiB1c2luZyB0cHJ0Nl9pZHggb24gdHBydF82IChuZXZlciBl eGVjdXRlZCkKICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChjb2wxID0gdGJsMS5jb2wx KQogICAgICAgICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDAKLSgyMSByb3dzKQorKDIyIHJv d3MpCiAKIHNlbGVjdCB0YmwxLmNvbDEsIHRwcnQuY29sMSBmcm9tIHRibDEKIGlubmVyIGpv aW4gdHBydCBvbiB0YmwxLmNvbDEgPiB0cHJ0LmNvbDEKQEAgLTMyMDAsNiArMzIyMSw3IEBA IHNlbGVjdCAqIGZyb20gdGJsMSBqb2luIHRwcnQgb24gdGJsMS5jb2wxIDwgdHBydC5jb2wx OwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcCAoYWN0dWFsIHJvd3M9 MS4wMCBsb29wcz0xKQogICAgLT4gIFNlcSBTY2FuIG9uIHRibDEgKGFjdHVhbCByb3dzPTEu MDAgbG9vcHM9MSkKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNp dHk9OTQKICAgIC0+ICBBcHBlbmQgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAg ICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRwcnQxX2lkeCBvbiB0cHJ0XzEgKG5ldmVyIGV4 ZWN1dGVkKQogICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGNvbDEgPiB0YmwxLmNvbDEp CkBAIC0zMjE5LDcgKzMyNDEsNyBAQCBzZWxlY3QgKiBmcm9tIHRibDEgam9pbiB0cHJ0IG9u IHRibDEuY29sMSA8IHRwcnQuY29sMTsKICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IHRwcnQ2X2lkeCBvbiB0cHJ0XzYgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChjb2wxID4gdGJsMS5jb2wxKQogICAgICAgICAgICAg ICAgSW5kZXggU2VhcmNoZXM6IDEKLSgyMSByb3dzKQorKDIyIHJvd3MpCiAKIHNlbGVjdCB0 YmwxLmNvbDEsIHRwcnQuY29sMSBmcm9tIHRibDEKIGlubmVyIGpvaW4gdHBydCBvbiB0Ymwx LmNvbDEgPCB0cHJ0LmNvbDEKQEAgLTMyMzgsNiArMzI2MCw3IEBAIHNlbGVjdCAqIGZyb20g dGJsMSBqb2luIHRwcnQgb24gdGJsMS5jb2wxID0gdHBydC5jb2wxOwogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogIE5lc3RlZCBMb29wIChhY3R1YWwgcm93cz0wLjAwIGxvb3BzPTEpCiAgICAtPiAgU2Vx IFNjYW4gb24gdGJsMSAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQorICAgICAgICAgUHJl ZmV0Y2g6IGF2Zz0xLjAwMCBtYXg9MSBjYXBhY2l0eT05NAogICAgLT4gIEFwcGVuZCAoYWN0 dWFsIHJvd3M9MC4wMCBsb29wcz0xKQogICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcg dHBydDFfaWR4IG9uIHRwcnRfMSAobmV2ZXIgZXhlY3V0ZWQpCiAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoY29sMSA9IHRibDEuY29sMSkKQEAgLTMyNTcsNyArMzI4MCw3IEBAIHNl bGVjdCAqIGZyb20gdGJsMSBqb2luIHRwcnQgb24gdGJsMS5jb2wxID0gdHBydC5jb2wxOwog ICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgdHBydDZfaWR4IG9uIHRwcnRfNiAobmV2 ZXIgZXhlY3V0ZWQpCiAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoY29sMSA9IHRibDEu Y29sMSkKICAgICAgICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAwCi0oMjEgcm93cykKKygy MiByb3dzKQogCiBzZWxlY3QgdGJsMS5jb2wxLCB0cHJ0LmNvbDEgZnJvbSB0YmwxCiBpbm5l ciBqb2luIHRwcnQgb24gdGJsMS5jb2wxID0gdHBydC5jb2wxCkBAIC0zNDg1LDExICszNTA4 LDE0IEBAIHNlbGVjdCAqIGZyb20gbWMzcCB3aGVyZSBhIDwgMyBhbmQgYWJzKGIpID0gMTsK ICBBcHBlbmQgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKICAgIC0+ICBTZXEgU2NhbiBv biBtYzNwMCBtYzNwXzEgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAgICAgIEZp bHRlcjogKChhIDwgMykgQU5EIChhYnMoYikgPSAxKSkKKyAgICAgICAgIFByZWZldGNoOiBh dmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9OTQKICAgIC0+ICBTZXEgU2NhbiBvbiBtYzNwMSBt YzNwXzIgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAgICAgIEZpbHRlcjogKChh IDwgMykgQU5EIChhYnMoYikgPSAxKSkKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAg bWF4PTEgY2FwYWNpdHk9OTQKICAgIC0+ICBTZXEgU2NhbiBvbiBtYzNwMiBtYzNwXzMgKGFj dHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAgICAgICAgIEZpbHRlcjogKChhIDwgMykgQU5E IChhYnMoYikgPSAxKSkKLSg3IHJvd3MpCisgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAw IG1heD0xIGNhcGFjaXR5PTk0CisoMTAgcm93cykKIAogLS0KIC0tIENoZWNrIHRoYXQgcHJ1 bmluZyB3aXRoIGNvbXBvc2l0ZSByYW5nZSBwYXJ0aXRpb25pbmcgd29ya3MgY29ycmVjdGx5 IHdoZW4KQEAgLTM1MDgsNyArMzUzNCw4IEBAIGV4ZWN1dGUgcHMxKDEpOwogICAgICAtPiAg UmVzdWx0IChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAtPiAgU2VxIFNjYW4gb24g bWMzcDEgbWMzcF8xIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAgICAgICBGaWx0 ZXI6ICgoYSA9ICQxKSBBTkQgKGFicyhiKSA8IChJbml0UGxhbiBleHByXzEpLmNvbDEpKQot KDYgcm93cykKKyAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9 OTQKKyg3IHJvd3MpCiAKIGRlYWxsb2NhdGUgcHMxOwogcHJlcGFyZSBwczIgYXMKQEAgLTM1 MjMsOSArMzU1MCwxMSBAQCBleGVjdXRlIHBzMigxKTsKICAgICAgLT4gIFJlc3VsdCAoYWN0 dWFsIHJvd3M9MS4wMCBsb29wcz0xKQogICAgLT4gIFNlcSBTY2FuIG9uIG1jM3AwIG1jM3Bf MSAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoKGEgPD0g JDEpIEFORCAoYWJzKGIpIDwgKEluaXRQbGFuIGV4cHJfMSkuY29sMSkpCisgICAgICAgICBQ cmVmZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFjaXR5PTk0CiAgICAtPiAgU2VxIFNjYW4g b24gbWMzcDEgbWMzcF8yIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEpCiAgICAgICAgICBG aWx0ZXI6ICgoYSA8PSAkMSkgQU5EIChhYnMoYikgPCAoSW5pdFBsYW4gZXhwcl8xKS5jb2wx KSkKLSg4IHJvd3MpCisgICAgICAgICBQcmVmZXRjaDogYXZnPTEuMDAwIG1heD0xIGNhcGFj aXR5PTk0CisoMTAgcm93cykKIAogZGVhbGxvY2F0ZSBwczI7CiBkcm9wIHRhYmxlIG1jM3A7 CkBAIC0zNTQ0LDExICszNTczLDEyIEBAIHNlbGVjdCAqIGZyb20gYm9vbHAgd2hlcmUgYSA9 IChzZWxlY3QgdmFsdWUgZnJvbSBib29sdmFsdWVzIHdoZXJlIHZhbHVlKTsKICAgICAgLT4g IFNlcSBTY2FuIG9uIGJvb2x2YWx1ZXMgKGFjdHVhbCByb3dzPTEuMDAgbG9vcHM9MSkKICAg ICAgICAgICAgRmlsdGVyOiB2YWx1ZQogICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmls dGVyOiAxCisgICAgICAgICAgIFByZWZldGNoOiBhdmc9MS4wMDAgbWF4PTEgY2FwYWNpdHk9 OTQKICAgIC0+ICBTZXEgU2NhbiBvbiBib29scF9mIGJvb2xwXzEgKG5ldmVyIGV4ZWN1dGVk KQogICAgICAgICAgRmlsdGVyOiAoYSA9IChJbml0UGxhbiBleHByXzEpLmNvbDEpCiAgICAt PiAgU2VxIFNjYW4gb24gYm9vbHBfdCBib29scF8yIChhY3R1YWwgcm93cz0wLjAwIGxvb3Bz PTEpCiAgICAgICAgICBGaWx0ZXI6IChhID0gKEluaXRQbGFuIGV4cHJfMSkuY29sMSkKLSg5 IHJvd3MpCisoMTAgcm93cykKIAogZXhwbGFpbiAoYW5hbHl6ZSwgY29zdHMgb2ZmLCBzdW1t YXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpCiBzZWxlY3QgKiBmcm9tIGJvb2xw IHdoZXJlIGEgPSAoc2VsZWN0IHZhbHVlIGZyb20gYm9vbHZhbHVlcyB3aGVyZSBub3QgdmFs dWUpOwpAQCAtMzU1OSwxMSArMzU4OSwxMiBAQCBzZWxlY3QgKiBmcm9tIGJvb2xwIHdoZXJl IGEgPSAoc2VsZWN0IHZhbHVlIGZyb20gYm9vbHZhbHVlcyB3aGVyZSBub3QgdmFsdWUpOwog ICAgICAtPiAgU2VxIFNjYW4gb24gYm9vbHZhbHVlcyAoYWN0dWFsIHJvd3M9MS4wMCBsb29w cz0xKQogICAgICAgICAgICBGaWx0ZXI6IChOT1QgdmFsdWUpCiAgICAgICAgICAgIFJvd3Mg UmVtb3ZlZCBieSBGaWx0ZXI6IDEKKyAgICAgICAgICAgUHJlZmV0Y2g6IGF2Zz0xLjAwMCBt YXg9MSBjYXBhY2l0eT05NAogICAgLT4gIFNlcSBTY2FuIG9uIGJvb2xwX2YgYm9vbHBfMSAo YWN0dWFsIHJvd3M9MC4wMCBsb29wcz0xKQogICAgICAgICAgRmlsdGVyOiAoYSA9IChJbml0 UGxhbiBleHByXzEpLmNvbDEpCiAgICAtPiAgU2VxIFNjYW4gb24gYm9vbHBfdCBib29scF8y IChuZXZlciBleGVjdXRlZCkKICAgICAgICAgIEZpbHRlcjogKGEgPSAoSW5pdFBsYW4gZXhw cl8xKS5jb2wxKQotKDkgcm93cykKKygxMCByb3dzKQogCiBkcm9wIHRhYmxlIGJvb2xwOwog LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFs bGVsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91 dAppbmRleCA5MzM5MjFkMTg2MC4uYmZhZjEwYTI5MDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3BhcmFsbGVsLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3NlbGVjdF9wYXJhbGxlbC5vdXQKQEAgLTU4MCw3ICs1ODAsNyBA QCBzZWxlY3QgY291bnQoKikgZnJvbSBibXNjYW50ZXN0IHdoZXJlIGE+MTsKIC0tIHRlc3Qg YWNjdW11bGF0aW9uIG9mIHN0YXRzIGZvciBwYXJhbGxlbCBub2RlcwogcmVzZXQgZW5hYmxl X3NlcXNjYW47CiBhbHRlciB0YWJsZSB0ZW5rMiBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAw KTsKLWV4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2ZmLCBjb3N0cyBv ZmYsIGJ1ZmZlcnMgb2ZmKQorZXhwbGFpbiAoYW5hbHl6ZSwgdGltaW5nIG9mZiwgc3VtbWFy eSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYsIGlvIG9mZikKICAgIHNlbGVjdCBjb3Vu dCgqKSBmcm9tIHRlbmsxLCB0ZW5rMiB3aGVyZSB0ZW5rMS5odW5kcmVkID4gMQogICAgICAg ICBhbmQgdGVuazIudGhvdXNhbmQ9MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC02 MDYsNyArNjA2LDcgQEAgJCQKIGRlY2xhcmUgbG4gdGV4dDsKIGJlZ2luCiAgICAgZm9yIGxu IGluCi0gICAgICAgIGV4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2Zm LCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2ZmKQorICAgICAgICBleHBsYWluIChhbmFseXplLCB0 aW1pbmcgb2ZmLCBzdW1tYXJ5IG9mZiwgY29zdHMgb2ZmLCBidWZmZXJzIG9mZiwgaW8gb2Zm KQogICAgICAgICAgIHNlbGVjdCAqIGZyb20KICAgICAgICAgICAoc2VsZWN0IHRlbiBmcm9t IHRlbmsxIHdoZXJlIHRlbiA8IDEwMCBvcmRlciBieSB0ZW4pIHNzCiAgICAgICAgICAgcmln aHQgam9pbiAodmFsdWVzICgxKSwoMiksKDMpKSB2KHgpIG9uIHRydWUKQEAgLTExNzAsNyAr MTE3MCw3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIC0tIHRvIGluY3JlYXNlIHRoZSBwYXJh bGxlbCBxdWVyeSB0ZXN0IGNvdmVyYWdlCiBTQVZFUE9JTlQgc2V0dGluZ3M7CiBTRVQgTE9D QUwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSAxOwotRVhQTEFJTiAoYW5hbHl6ZSwgdGltaW5n IG9mZiwgc3VtbWFyeSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYpIFNFTEVDVCAqIEZS T00gdGVuazE7CitFWFBMQUlOIChhbmFseXplLCB0aW1pbmcgb2ZmLCBzdW1tYXJ5IG9mZiwg Y29zdHMgb2ZmLCBidWZmZXJzIG9mZiwgaW8gb2ZmKSBTRUxFQ1QgKiBGUk9NIHRlbmsxOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIEdhdGhlciAoYWN0dWFsIHJvd3M9MTAwMDAuMDAg bG9vcHM9MSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2Vs ZWN0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dAppbmRl eCAyMDAyMzZhMGE2OS4uMGExZGU2ZDcyNTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3Vic2VsZWN0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNlbGVjdC5vdXQKQEAgLTIwNTEsNyArMjA1MSw3IEBAICQkCiBkZWNsYXJlIGxu IHRleHQ7CiBiZWdpbgogICAgIGZvciBsbiBpbgotICAgICAgICBleHBsYWluIChhbmFseXpl LCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgY29zdHMgb2ZmLCBidWZmZXJzIG9mZikKKyAg ICAgICAgZXhwbGFpbiAoYW5hbHl6ZSwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGNvc3Rz IG9mZiwgYnVmZmVycyBvZmYsIGlvIG9mZikKICAgICAgICAgc2VsZWN0ICogZnJvbSAoc2Vs ZWN0IHBrLGMyIGZyb20gc3FfbGltaXQgb3JkZXIgYnkgYzEscGspIGFzIHggbGltaXQgMwog ICAgIGxvb3AKICAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICdNZW1vcnk6IFxT KicsICAnTWVtb3J5OiB4eHgnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKaW5kZXgg ZWJkYWI0MjYwNGIuLmU5YTNjMmNhZjkxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNx bApAQCAtMjUsNiArMjUsMTAgQEAgYmVnaW4KICAgICAgICAgLS0gSWdub3JlIHRleHQtbW9k ZSBidWZmZXJzIG91dHB1dCBiZWNhdXNlIGl0IHZhcmllcyBkZXBlbmRpbmcKICAgICAgICAg LS0gb24gdGhlIHN5c3RlbSBzdGF0ZQogICAgICAgICBDT05USU5VRSBXSEVOIChsbiB+ICcg K0J1ZmZlcnM6IC4qJyk7CisgICAgICAgIC0tIElnbm9yZSB0ZXh0LW1vZGUgcHJlZmV0Y2gg YW5kIEkvTyBvdXRwdXQgYmVjYXVzZSBpdCB2YXJpZXMKKyAgICAgICAgLS0gZGVwZW5kaW5n IG9uIHRoZSBzeXN0ZW0gc3RhdGUKKyAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gfiAnICtQ cmVmZXRjaDogLionKTsKKyAgICAgICAgQ09OVElOVUUgV0hFTiAobG4gfiAnICtJL086IC4q Jyk7CiAgICAgICAgIC0tIElnbm9yZSB0ZXh0LW1vZGUgIlBsYW5uaW5nOiIgbGluZSBiZWNh dXNlIHdoZXRoZXIgaXQncyBvdXRwdXQKICAgICAgICAgLS0gdmFyaWVzIGRlcGVuZGluZyBv biB0aGUgc3lzdGVtIHN0YXRlCiAgICAgICAgIENPTlRJTlVFIFdIRU4gKGxuID0gJ1BsYW5u aW5nOicpOwpAQCAtNjMsMTEgKzY3LDExIEBAIHNldCB0cmFja19pb190aW1pbmcgPSBvZmY7 CiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IDEgYXMgYSwgMiBhcyBiIGhhdmluZyBm YWxzZTsKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiBzZWxlY3QgKiBmcm9tIGlu dDhfdGJsIGk4Jyk7Ci1zZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUs IGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci1zZWxlY3QgZXhw bGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmLCB2ZXJib3NlKSBz ZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4 cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpIHNlbGVjdCAqIGZyb20gaW50 OF90YmwgaTgnKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwg YnVmZmVycyBvZmYsIGlvIG9mZiwgdmVyYm9zZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBp OCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCBidWZmZXJz LCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwotc2VsZWN0IGV4 cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCBidWZmZXJzLCBmb3JtYXQgeG1sKSBz ZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci1zZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4 cGxhaW4gKGFuYWx5emUsIHNlcmlhbGl6ZSwgYnVmZmVycywgZm9ybWF0IHlhbWwpIHNlbGVj dCAqIGZyb20gaW50OF90YmwgaTgnKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFp biAoYW5hbHl6ZSwgYnVmZmVycywgaW8gb2ZmLCBmb3JtYXQgeG1sKSBzZWxlY3QgKiBmcm9t IGludDhfdGJsIGk4Jyk7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5 emUsIHNlcmlhbGl6ZSwgYnVmZmVycywgaW8gb2ZmLCBmb3JtYXQgeWFtbCkgc2VsZWN0ICog ZnJvbSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChi dWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChidWZmZXJzLCBmb3JtYXQganNvbikgc2Vs ZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogCkBAIC0xMDIsNyArMTA2LDcgQEAgc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCBnZW5lcmljX3BsYW4pIHNlbGVj dCB1bmlxdWUxIGZyb20gdGVuazEKIAogLS0gTUVNT1JZIG9wdGlvbgogc2VsZWN0IGV4cGxh aW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnkpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgn KTsKLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAobWVtb3J5LCBhbmFseXplLCBi dWZmZXJzIG9mZikgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOworc2VsZWN0IGV4cGxh aW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnksIGFuYWx5emUsIGJ1ZmZlcnMgb2ZmLCBpbyBv ZmYpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKIHNlbGVjdCBleHBsYWluX2ZpbHRl cignZXhwbGFpbiAobWVtb3J5LCBzdW1tYXJ5LCBmb3JtYXQgeWFtbCkgc2VsZWN0ICogZnJv bSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChtZW1v cnksIGFuYWx5emUsIGZvcm1hdCBqc29uKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7 CiBwcmVwYXJlIGludDhfcXVlcnkgYXMgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpODsKQEAg LTE3NCwxNyArMTc4LDE3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAodmVy Ym9zZSkgZGVjbGFyZSB0ZXN0X2N1ciBjdXJzb3IgZm9yIHNlbGVjdCAqIGZyCiBzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIGNyZWF0ZSB0YWJsZSB0ZXN0X2N0 YXMgYXMgc2VsZWN0IDEnKTsKIAogLS0gVGVzdCBTRVJJQUxJWkUgb3B0aW9uCi1zZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsc2VyaWFsaXpl KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIo J2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsaW8gb2ZmLHNlcmlhbGl6ZSkgc2VsZWN0 ICogZnJvbSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbmFseXplLHNlcmlhbGl6ZSB0ZXh0LGJ1ZmZlcnMsdGltaW5nIG9mZikgc2VsZWN0ICog ZnJvbSBpbnQ4X3RibCBpOCcpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChh bmFseXplLHNlcmlhbGl6ZSBiaW5hcnksYnVmZmVycyx0aW1pbmcpIHNlbGVjdCAqIGZyb20g aW50OF90YmwgaTgnKTsKIC0tIHRoaXMgdGVzdHMgYW4gZWRnZSBjYXNlIHdoZXJlIHdlIGhh dmUgbm8gZGF0YSB0byByZXR1cm4KLXNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAo YW5hbHl6ZSxidWZmZXJzIG9mZixzZXJpYWxpemUpIGNyZWF0ZSB0ZW1wIHRhYmxlIGV4cGxh aW5fdGVtcCBhcyBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3QgZXhwbGFp bl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsaW8gb2ZmLHNlcmlhbGl6 ZSkgY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl90ZW1wIGFzIHNlbGVjdCAqIGZyb20gaW50 OF90YmwgaTgnKTsKIAogLS0gVGVzdCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2lu ZG93IGFnZ3JlZ2F0ZSAobWVtb3J5IGNhc2UpCi1zZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4 cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92 ZXIoKSBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDEwKSBhKG4pJyk7CitzZWxlY3QgZXhwbGFp bl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsaW8gb2ZmLGNvc3RzIG9m Zikgc2VsZWN0IHN1bShuKSBvdmVyKCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgYShu KScpOwogLS0gVGVzdCB0dXBsZXN0b3JlIHN0b3JhZ2UgdXNhZ2UgaW4gV2luZG93IGFnZ3Jl Z2F0ZSAoZGlzayBjYXNlKQogc2V0IHdvcmtfbWVtIHRvIDY0Owotc2VsZWN0IGV4cGxhaW5f ZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0 IHN1bShuKSBvdmVyKCkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyNTAwKSBhKG4pJyk7Citz ZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsaW8g b2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBvdmVyKCkgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwyNTAwKSBhKG4pJyk7CiAtLSBUZXN0IHR1cGxlc3RvcmUgc3RvcmFnZSB1c2FnZSBp biBXaW5kb3cgYWdncmVnYXRlIChtZW1vcnkgYW5kIGRpc2sgY2FzZSwgZmluYWwgcmVzdWx0 IGlzIGRpc2spCi1zZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVm ZmVycyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZXIocGFydGl0aW9uIGJ5IG0p IGZyb20gKFNFTEVDVCBuIDwgMyBhcyBtLCBuIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjUw MCkgYShuKSknKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxi dWZmZXJzIG9mZixpbyBvZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZXIocGFydGl0 aW9uIGJ5IG0pIGZyb20gKFNFTEVDVCBuIDwgMyBhcyBtLCBuIGZyb20gZ2VuZXJhdGVfc2Vy aWVzKDEsMjUwMCkgYShuKSknKTsKIHJlc2V0IHdvcmtfbWVtOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaW5jcmVtZW50YWxfc29ydC5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9pbmNyZW1lbnRhbF9zb3J0LnNxbAppbmRleCBiYmU2NThhNzU4OC4uMWM4MDM2 ZmFhZGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luY3JlbWVudGFsX3Nv cnQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luY3JlbWVudGFsX3NvcnQuc3Fs CkBAIC0yMSw3ICsyMSw3IEBAIGRlY2xhcmUKICAgbGluZSB0ZXh0OwogYmVnaW4KICAgZm9y IGxpbmUgaW4KLSAgICBleGVjdXRlICdleHBsYWluIChhbmFseXplLCBjb3N0cyBvZmYsIHN1 bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgJyB8fCBxdWVyeQorICAgIGV4 ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWlu ZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpICcgfHwgcXVlcnkKICAgbG9vcAogICAgIG91 dF9saW5lIDo9IHJlZ2V4cF9yZXBsYWNlKGxpbmUsICdcZCtrQicsICdOTmtCJywgJ2cnKTsK ICAgICByZXR1cm4gbmV4dDsKQEAgLTM4LDcgKzM4LDcgQEAgZGVjbGFyZQogICBlbGVtZW50 IGpzb25iOwogICBtYXRjaGluZ19ub2RlcyBqc29uYiA6PSAnW10nOjpqc29uYjsKIGJlZ2lu Ci0gIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYs IHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQgJydqc29uJycpICcgfHwgcXVlcnkg aW50byBzdHJpY3QgZWxlbWVudHM7CisgIGV4ZWN1dGUgJ2V4cGxhaW4gKGFuYWx5emUsIGNv c3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYs IGZvcm1hdCAnJ2pzb24nJykgJyB8fCBxdWVyeSBpbnRvIHN0cmljdCBlbGVtZW50czsKICAg d2hpbGUganNvbmJfYXJyYXlfbGVuZ3RoKGVsZW1lbnRzKSA+IDAgbG9vcAogICAgIGVsZW1l bnQgOj0gZWxlbWVudHMtPjA7CiAgICAgZWxlbWVudHMgOj0gZWxlbWVudHMgLSAwOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9tZW1vaXplLnNxbAppbmRleCA4ZDFjZGQ2OTkwYy4uZDFmODBlMThiNDEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21lbW9pemUuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL21lbW9pemUuc3FsCkBAIC0xMSw3ICsxMSw3IEBAIGRlY2xh cmUKICAgICBsbiB0ZXh0OwogYmVnaW4KICAgICBmb3IgbG4gaW4KLSAgICAgICAgZXhlY3V0 ZSBmb3JtYXQoJ2V4cGxhaW4gKGFuYWx5emUsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRp bWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSAlcycsCisgICAgICAgIGV4ZWN1dGUgZm9ybWF0KCdl eHBsYWluIChhbmFseXplLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBi dWZmZXJzIG9mZiwgaW8gb2ZmKSAlcycsCiAgICAgICAgICAgICBxdWVyeSkKICAgICBsb29w CiAgICAgICAgIGlmIGhpZGVfaGl0bWlzcyA9IHRydWUgdGhlbgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvbWVyZ2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVy Z2Uuc3FsCmluZGV4IDI2NjBiMTlmMjM4Li5jODJlMTk0MDc4ZSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvbWVyZ2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L21lcmdlLnNxbApAQCAtMTA3NCw3ICsxMDc0LDcgQEAgJCQKIERFQ0xBUkUgbG4gdGV4dDsK IEJFR0lOCiAgICAgRk9SIGxuIElOCi0gICAgICAgIEVYRUNVVEUgJ2V4cGxhaW4gKGFuYWx5 emUsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2ZmKSAn IHx8CisgICAgICAgIEVYRUNVVEUgJ2V4cGxhaW4gKGFuYWx5emUsIHRpbWluZyBvZmYsIHN1 bW1hcnkgb2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2ZmLCBpbyBvZmYpICcgfHwKIAkJICBx dWVyeQogICAgIExPT1AKICAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICcoTWVt b3J5KCBVc2FnZSk/fEJ1Y2tldHN8QmF0Y2hlcyk6IFxTKicsICAnXDE6IHh4eCcsICdnJyk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCBkOTNj MGMwM2JhYi4uMjEyZGUwZTYyODUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbApAQCAtMTIsNyArMTIsNyBAQCBkZWNsYXJlCiAgICAgbG4gdGV4dDsK IGJlZ2luCiAgICAgZm9yIGxuIGluCi0gICAgICAgIGV4ZWN1dGUgZm9ybWF0KCdleHBsYWlu IChhbmFseXplLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZikgJXMnLAorICAgICAgICBleGVjdXRlIGZvcm1hdCgnZXhwbGFpbiAoYW5hbHl6ZSwg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGlvIG9m ZikgJXMnLAogICAgICAgICAgICAgcXVlcnkpCiAgICAgbG9vcAogICAgICAgICBsbiA6PSBy ZWdleHBfcmVwbGFjZShsbiwgJ01heGltdW0gU3RvcmFnZTogXGQrJywgJ01heGltdW0gU3Rv cmFnZTogTicpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0X3Bh cmFsbGVsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdF9wYXJhbGxlbC5zcWwK aW5kZXggNzFhNzViYzg2ZWEuLjU2ZTFjZWFjNDkyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zZWxlY3RfcGFyYWxsZWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3NlbGVjdF9wYXJhbGxlbC5zcWwKQEAgLTIzMCw3ICsyMzAsNyBAQCBzZWxlY3QgY291 bnQoKikgZnJvbSBibXNjYW50ZXN0IHdoZXJlIGE+MTsKIC0tIHRlc3QgYWNjdW11bGF0aW9u IG9mIHN0YXRzIGZvciBwYXJhbGxlbCBub2RlcwogcmVzZXQgZW5hYmxlX3NlcXNjYW47CiBh bHRlciB0YWJsZSB0ZW5rMiBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSAwKTsKLWV4cGxhaW4g KGFuYWx5emUsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMg b2ZmKQorZXhwbGFpbiAoYW5hbHl6ZSwgdGltaW5nIG9mZiwgc3VtbWFyeSBvZmYsIGNvc3Rz IG9mZiwgYnVmZmVycyBvZmYsIGlvIG9mZikKICAgIHNlbGVjdCBjb3VudCgqKSBmcm9tIHRl bmsxLCB0ZW5rMiB3aGVyZSB0ZW5rMS5odW5kcmVkID4gMQogICAgICAgICBhbmQgdGVuazIu dGhvdXNhbmQ9MDsKIGFsdGVyIHRhYmxlIHRlbmsyIHJlc2V0IChwYXJhbGxlbF93b3JrZXJz KTsKQEAgLTI0Miw3ICsyNDIsNyBAQCAkJAogZGVjbGFyZSBsbiB0ZXh0OwogYmVnaW4KICAg ICBmb3IgbG4gaW4KLSAgICAgICAgZXhwbGFpbiAoYW5hbHl6ZSwgdGltaW5nIG9mZiwgc3Vt bWFyeSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYpCisgICAgICAgIGV4cGxhaW4gKGFu YWx5emUsIHRpbWluZyBvZmYsIHN1bW1hcnkgb2ZmLCBjb3N0cyBvZmYsIGJ1ZmZlcnMgb2Zm LCBpbyBvZmYpCiAgICAgICAgICAgc2VsZWN0ICogZnJvbQogICAgICAgICAgIChzZWxlY3Qg dGVuIGZyb20gdGVuazEgd2hlcmUgdGVuIDwgMTAwIG9yZGVyIGJ5IHRlbikgc3MKICAgICAg ICAgICByaWdodCBqb2luICh2YWx1ZXMgKDEpLCgyKSwoMykpIHYoeCkgb24gdHJ1ZQpAQCAt NDUwLDcgKzQ1MCw3IEBAIGV4cGxhaW4gKGNvc3RzIG9mZikKIC0tIHRvIGluY3JlYXNlIHRo ZSBwYXJhbGxlbCBxdWVyeSB0ZXN0IGNvdmVyYWdlCiBTQVZFUE9JTlQgc2V0dGluZ3M7CiBT RVQgTE9DQUwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSAxOwotRVhQTEFJTiAoYW5hbHl6ZSwg dGltaW5nIG9mZiwgc3VtbWFyeSBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBvZmYpIFNFTEVD VCAqIEZST00gdGVuazE7CitFWFBMQUlOIChhbmFseXplLCB0aW1pbmcgb2ZmLCBzdW1tYXJ5 IG9mZiwgY29zdHMgb2ZmLCBidWZmZXJzIG9mZiwgaW8gb2ZmKSBTRUxFQ1QgKiBGUk9NIHRl bmsxOwogUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNldHRpbmdzOwogCiAtLSBwcm92b2tlIGVy cm9yIGluIHdvcmtlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2Vs ZWN0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5zcWwKaW5kZXggNGNk MDE2ZjRhYzMuLjNlOTMwZDhiNTZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzZWxlY3Quc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNlbGVjdC5z cWwKQEAgLTEwMTYsNyArMTAxNiw3IEBAICQkCiBkZWNsYXJlIGxuIHRleHQ7CiBiZWdpbgog ICAgIGZvciBsbiBpbgotICAgICAgICBleHBsYWluIChhbmFseXplLCBzdW1tYXJ5IG9mZiwg dGltaW5nIG9mZiwgY29zdHMgb2ZmLCBidWZmZXJzIG9mZikKKyAgICAgICAgZXhwbGFpbiAo YW5hbHl6ZSwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGNvc3RzIG9mZiwgYnVmZmVycyBv ZmYsIGlvIG9mZikKICAgICAgICAgc2VsZWN0ICogZnJvbSAoc2VsZWN0IHBrLGMyIGZyb20g c3FfbGltaXQgb3JkZXIgYnkgYzEscGspIGFzIHggbGltaXQgMwogICAgIGxvb3AKICAgICAg ICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICdNZW1vcnk6IFxTKicsICAnTWVtb3J5OiB4 eHgnKTsKLS0gCjIuNTMuMAoK --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0004-store-the-IO-stats-in-scan-descriptor.patch" Content-Disposition: attachment; filename="v3-0004-store-the-IO-stats-in-scan-descriptor.patch" Content-Transfer-Encoding: base64 RnJvbSBmZWM4YWI4YzViYWMzZWQ0M2NlYzFjY2JiYmI1M2UwZmFmYjU0MWViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogV2VkLCAxOCBNYXIgMjAyNiAxNjowMzo0NyArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djMgNC82XSBzdG9yZSB0aGUgSU8gc3RhdHMgaW4gc2NhbiBkZXNjcmlwdG9yCgotIERvbid0 IHBhc3MgdGhlIHN0YXRzIHRocm91Z2ggdGhlIFRBTSBpbnRlcmZhY2UuIEluc3RlYWQsIG1h a2UgdGhlbQogIHBhcnQgb2YgdGhlIHNjYW4gZGVzY3JpcHRvciAob3B0aW9uYWxseSkuCgot IGFtYmVnaW5zY2FuKCkgbWF5IGFsbG9jYXRlIElPU3RhdHMgaW4gdGhlIHNjYW4gZGVzY3Jp cHRvciwgYW5kIGZpbGwgaXQKICB3aXRoIGRhdGEuIEJlaW5nIHBhcnQgb2YgdGhlIGRlY3Jp cHRvciBtZWFucyBpdCB3b24ndCBzdXJ2aXZlCiAgYW1lbmRzY2FuKCkuCgotIFRoZSBJT1N0 YXRzIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSBSZWFkU3RyZWFtIHRocm91Z2ggYSBuZXcgYXJn dW1lbnQKICBhZGRlZCB0byByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbigpLCBhbmQgdGhl IHN0cmVhbSB1cGRhdGVzIHRoaXMKICBwbGFjZSBkaXJlY3RseS4gVGhlcmUncyBubyBuZWVk IHRvICJmZXRjaCIgdGhlIHN0YXRzIGZyb20gdGhlIHN0cmVhbS4KCi0gV2l0aCBwYXJhbGxl bCBxdWVyeSwgdGhlIGRhdGEgZnJvbSB3b3JrZXJzIGlzIHN0aWxsIGNvcGllZCB0aHJvdWdo CiAgc2hhcmVkIG1lbW9yeSBieSBlbmRzY2FuKCkgaW4gdGhlIHdvcmtlcnMuIFRoZSBsZWFk ZXIgaGFzIHRvIGNvbnN1bWUKICBhbmQgbWVyZ2UgdGhlIGRhdGEuIFRoZSBvbmx5IGRpZmZl cmVuY2UgaXMgdGhhdCB0aGUgd29ya2VycyByZWFkIHRoZQogIGRhdGEgZnJvbSB0aGUgc2Nh biBkZXNjcmlwdG9yLCBhbmQgbm90IGZyb20gdGhlIGluc3RydW1lbnRhdGlvbi4KLS0tCiBj b250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jICAgICAgICAgICB8ICAzICstCiBjb250 cmliL2Jsb29tL2Jsc2Nhbi5jICAgICAgICAgICAgICAgICAgICB8ICAzICstCiBjb250cmli L2Jsb29tL2JsdmFjdXVtLmMgICAgICAgICAgICAgICAgICB8ICA2ICsrLQogY29udHJpYi9w Z19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgICAgICAgICAgfCAgMyArLQogY29udHJpYi9wZ19w cmV3YXJtL3BnX3ByZXdhcm0uYyAgICAgICAgICAgfCAgMyArLQogY29udHJpYi9wZ192aXNp YmlsaXR5L3BnX3Zpc2liaWxpdHkuYyAgICAgfCAgNiArKy0KIGNvbnRyaWIvcGdzdGF0dHVw bGUvcGdzdGF0YXBwcm94LmMgICAgICAgIHwgIDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUv cGdzdGF0aW5kZXguYyAgICAgICAgIHwgIDYgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMgICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnZhY3V1bS5jICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dmFjdXVtLmMgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMg ICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICB8IDQxICsrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMgIHwgIDEgLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICAgICAgfCAgNiArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cmVlLmMgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFj dXVtLmMgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAg ICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAg ICAgIHwgMzEgKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyB8ICA2ICstLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YyAgICAgICAgfCAgNiArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFt LmMgICAgIHwgNTkgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgICAgIHwgIDEgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Jl bHNjYW4uaCAgICAgICAgICAgICAgfCAgNiArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgIHwgMTcgLS0tLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgfCAgMSAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRf c3RyZWFtLmggICAgICAgICB8ICA1ICstCiAyNyBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRp b25zKCspLCAxMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9oZWFwYW0uYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKaW5k ZXggYWRhNzgyZjk4ZjUuLjBlYzRkYzg0OWMzIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hl Y2svdmVyaWZ5X2hlYXBhbS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFt LmMKQEAgLTQ3Niw3ICs0NzYsOCBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCXN0cmVhbV9jYiwKIAkJCQkJ CQkJCQlzdHJlYW1fZGF0YSwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJCQkwLAorCQkJCQkJ CQkJCU5VTEwpOwogCiAJd2hpbGUgKChjdHguYnVmZmVyID0gcmVhZF9zdHJlYW1fbmV4dF9i dWZmZXIoc3RyZWFtLCBOVUxMKSkgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CmRpZmYgLS1naXQg YS9jb250cmliL2Jsb29tL2Jsc2Nhbi5jIGIvY29udHJpYi9ibG9vbS9ibHNjYW4uYwppbmRl eCAxYTBlNDIwMjFlYy4uOWJkYzRhOTVjMTggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20v YmxzY2FuLmMKKysrIGIvY29udHJpYi9ibG9vbS9ibHNjYW4uYwpAQCAtMTM4LDcgKzEzOCw4 IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3Ry ZWFtX2NiLAogCQkJCQkJCQkJCSZwLAotCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCTAsCisJ CQkJCQkJCQkJTlVMTCk7CiAKIAlmb3IgKGJsa25vID0gQkxPT01fSEVBRF9CTEtOTzsgYmxr bm8gPCBucGFnZXM7IGJsa25vKyspCiAJewpkaWZmIC0tZ2l0IGEvY29udHJpYi9ibG9vbS9i bHZhY3V1bS5jIGIvY29udHJpYi9ibG9vbS9ibHZhY3V1bS5jCmluZGV4IDZiZWIxYzIwZWJi Li41ODc3NTdjMWUxOCAxMDA2NDQKLS0tIGEvY29udHJpYi9ibG9vbS9ibHZhY3V1bS5jCisr KyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwpAQCAtNzEsNyArNzEsOCBAQCBibGJ1bGtk ZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9y ZWFkX3N0cmVhbV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJ CQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJZm9yIChibGtubyA9IEJMT09NX0hFQURfQkxL Tk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQogCXsKQEAgLTIyNCw3ICsyMjUsOCBAQCBi bHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKnN0YXRzKQogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9j a19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsK KwkJCQkJCQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJZm9yIChibGtubyA9IEJMT09N X0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQogCXsKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJt L2F1dG9wcmV3YXJtLmMKaW5kZXggYmEwYmM4ZTZkNGEuLjRjNTQ0OGYxNzdhIDEwMDY0NAot LS0gYS9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3Bn X3ByZXdhcm0vYXV0b3ByZXdhcm0uYwpAQCAtNjI4LDcgKzYyOCw4IEBAIGF1dG9wcmV3YXJt X2RhdGFiYXNlX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCQkJCQkJCQlwLmZvcmtudW0s CiAJCQkJCQkJCQkJCQlhcHdfcmVhZF9zdHJlYW1fbmV4dF9ibG9jaywKIAkJCQkJCQkJCQkJ CSZwLAotCQkJCQkJCQkJCQkJMCk7CisJCQkJCQkJCQkJCQkwLAorCQkJCQkJCQkJCQkJTlVM TCk7CiAKIAkJCS8qCiAJCQkgKiBMb29wIHVudGlsIHdlJ3ZlIHByZXdhcm1lZCBhbGwgdGhl IGJsb2NrcyBmcm9tIHRoaXMgZm9yay4gVGhlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3By ZXdhcm0vcGdfcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYwpp bmRleCBjMjcxNjA4NjY5My4uZTQ1NDFmNDY3NzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdf cHJld2FybS9wZ19wcmV3YXJtLmMKKysrIGIvY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdh cm0uYwpAQCAtMjU2LDcgKzI1Niw4IEBAIHBnX3ByZXdhcm0oUEdfRlVOQ1RJT05fQVJHUykK IAkJCQkJCQkJCQkJZm9ya051bWJlciwKIAkJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9z dHJlYW1fY2IsCiAJCQkJCQkJCQkJCSZwLAotCQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJCQkJ MCwKKwkJCQkJCQkJCQkJTlVMTCk7CiAKIAkJZm9yIChibG9jayA9IGZpcnN0X2Jsb2NrOyBi bG9jayA8PSBsYXN0X2Jsb2NrOyArK2Jsb2NrKQogCQl7CmRpZmYgLS1naXQgYS9jb250cmli L3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jIGIvY29udHJpYi9wZ192aXNpYmlsaXR5 L3BnX3Zpc2liaWxpdHkuYwppbmRleCBkZmFiMGI2NGNmNS4uZjA5YmI2ODYyNGYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMKKysrIGIvY29u dHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYwpAQCAtNTE5LDcgKzUxOSw4IEBA IGNvbGxlY3RfdmlzaWJpbGl0eV9kYXRhKE9pZCByZWxpZCwgYm9vbCBpbmNsdWRlX3BkKQog CQkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRf c3RyZWFtX2NiLAogCQkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkJMCk7CisJCQkJCQkJCQkJ CTAsCisJCQkJCQkJCQkJCU5VTEwpOwogCX0KIAogCWZvciAoYmxrbm8gPSAwOyBibGtubyA8 IG5ibG9ja3M7ICsrYmxrbm8pCkBAIC03MzksNyArNzQwLDggQEAgY29sbGVjdF9jb3JydXB0 X2l0ZW1zKE9pZCByZWxpZCwgYm9vbCBhbGxfdmlzaWJsZSwgYm9vbCBhbGxfZnJvemVuKQog CQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQljb2xsZWN0X2NvcnJ1cHRfaXRl bXNfcmVhZF9zdHJlYW1fbmV4dF9ibG9jaywKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkw KTsKKwkJCQkJCQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJLyogTG9vcCBvdmVyIGV2 ZXJ5IGJsb2NrIGluIHRoZSByZWxhdGlvbi4gKi8KIAl3aGlsZSAoKGJ1ZmZlciA9IHJlYWRf c3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkpICE9IEludmFsaWRCdWZmZXIpCmRp ZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYwppbmRleCAyMWUwYjUwZmI0Yi4uYTkyNmEx ZjExNjggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMK KysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYwpAQCAtMTQ2LDcgKzE0 Niw4IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBlICpzdGF0 KQogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlzdGF0YXBwcm94X2hlYXBf cmVhZF9zdHJlYW1fbmV4dCwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJ CQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJZm9yICg7OykKIAl7CmRpZmYgLS1naXQg YS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGluZGV4LmMgYi9jb250cmliL3Bnc3RhdHR1 cGxlL3Bnc3RhdGluZGV4LmMKaW5kZXggM2EzZjI2MzdiZDkuLjBkZTMzNTU4YzQ3IDEwMDY0 NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGluZGV4LmMKKysrIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5jCkBAIC0yOTYsNyArMjk2LDggQEAgcGdzdGF0 aW5kZXhfaW1wbChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJ CQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVh bV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJCQkwLAorCQkJ CQkJCQkJCU5VTEwpOwogCiAJZm9yIChibGtubyA9IHN0YXJ0YmxrOyBibGtubyA8IG5ibG9j a3M7IGJsa25vKyspCiAJewpAQCAtNjg1LDcgKzY4Niw4IEBAIHBnc3RhdGhhc2hpbmRleChQ R19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQli bG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkw KTsKKwkJCQkJCQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJZm9yIChibGtubyA9IHN0 YXJ0YmxrOyBibGtubyA8IG5ibG9ja3M7IGJsa25vKyspCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCmluZGV4IDJhMGY4YzhlM2I4Li5lYjRlNGM1ZGU0YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjE5Miw3ICsyMTkyLDggQEAgYnJpbl92YWN1dW1fc2NhbihSZWxh dGlvbiBpZHhyZWwsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQogCQkJCQkJCQkJ CU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwK IAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJCQkwLAorCQkJCQkJCQkJ CU5VTEwpOwogCiAJLyoKIAkgKiBTY2FuIHRoZSBpbmRleCBpbiBwaHlzaWNhbCBvcmRlciwg YW5kIGNsZWFuIHVwIGFueSBwb3NzaWJsZSBtZXNzIGluCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW52YWN1dW0uYwppbmRleCA4NDA1NDNlYjY2NC4uNDg0MzYwYTlkNmQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW52YWN1dW0uYwpAQCAtNzk5LDcgKzc5OSw4IEBAIGdpbnZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzKQogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9y ZWFkX3N0cmVhbV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJCQkJ CQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJZm9yIChibGtubyA9IEdJTl9ST09UX0JMS05P OyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dmFjdXVtLmMKaW5kZXggNjg2YTA0MTgwNTQuLmU0ZjU3OGIyZGUwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCkBAIC0yMjMsNyArMjIzLDggQEAgZ2lzdHZh Y3V1bXNjYW4oSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5n ZV9yZWFkX3N0cmVhbV9jYiwKIAkJCQkJCQkJCQkmcCwKLQkJCQkJCQkJCQkwKTsKKwkJCQkJ CQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCWZvciAoOzspCiAJewogCQkvKiBHZXQgdGhl IGN1cnJlbnQgcmVsYXRpb24gbGVuZ3RoICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5k ZXggNmRmNWU3Y2NiZDEuLjA0MzA4OGRiZWU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5j CkBAIC01NDYsNyArNTQ2LDggQEAgaGFzaGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICpp bmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQkJCQkJCQkJCU1BSU5fRk9S S05VTSwKIAkJCQkJCQkJCQloYXNoX2J1bGtkZWxldGVfcmVhZF9zdHJlYW1fY2IsCiAJCQkJ CQkJCQkJJnN0cmVhbV9wcml2YXRlLAotCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCTAsCisJ CQkJCQkJCQkJTlVMTCk7CiAKIGJ1Y2tldF9sb29wOgogCXdoaWxlIChjdXJfYnVja2V0IDw9 IGN1cl9tYXhidWNrZXQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDMyM2Jh ZGQyN2YxLi42YWNiY2YxZjM0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAg LTEyNjcsNiArMTI2Nyw5IEBAIGhlYXBfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBT bmFwc2hvdCBzbmFwc2hvdCwKIAogCXNjYW4tPnJzX3JlYWRfc3RyZWFtID0gTlVMTDsKIAor CS8qIHJlc2V0IHRoZSBzdGF0cyBjb3VudGVycyAqLworCW1lbXNldCgmc2Nhbi0+cnNfYmFz ZS5yc19pb3N0YXRzLCAwLCBzaXplb2YoSU9TdGF0cykpOworCiAJLyoKIAkgKiBTZXQgdXAg YSByZWFkIHN0cmVhbSBmb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgVElEIHJhbmdlIHNjYW5z LiBUaGlzCiAJICogc2hvdWxkIGJlIGRvbmUgYWZ0ZXIgaW5pdHNjYW4oKSBiZWNhdXNlIGlu aXRzY2FuKCkgYWxsb2NhdGVzIHRoZQpAQCAtMTI5Niw3ICsxMjk5LDggQEAgaGVhcF9iZWdp bnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJ CQkJCQkgIE1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQkJCQkJICBjYiwKIAkJCQkJCQkJCQkJ CQkJICBzY2FuLAotCQkJCQkJCQkJCQkJCQkgIDApOworCQkJCQkJCQkJCQkJCQkgIDAsCisJ CQkJCQkJCQkJCQkJCSAgJnNjYW4tPnJzX2Jhc2UucnNfaW9zdGF0cyk7CiAJfQogCWVsc2Ug aWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pCiAJewpA QCAtMTMwNyw3ICsxMzExLDggQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24s IFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIE1BSU5fRk9SS05VTSwKIAkJ CQkJCQkJCQkJCQkJICBiaXRtYXBoZWFwX3N0cmVhbV9yZWFkX25leHQsCiAJCQkJCQkJCQkJ CQkJCSAgc2NhbiwKLQkJCQkJCQkJCQkJCQkJICBzaXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkp OworCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSwKKwkJCQkJCQkJ CQkJCQkJICAmc2Nhbi0+cnNfYmFzZS5yc19pb3N0YXRzKTsKIAl9CiAKIAlzY2FuLT5yc192 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CkBAIC0xNDE2LDM4ICsxNDIxLDYgQEAgaGVhcF9l bmRzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJcGZyZWUoc2Nhbik7CiB9CiAKLS8qCi0g KiBoZWFwX3NjYW5fc3RhdHMKLSAqCQlyZXR1cm4gc3RhdHMgY29sbGVjdGVkIGJ5IHRoZSBy ZWFkIHN0cmVhbQotICoKLSAqIFJldHVybnMgTlVMTCBpZiB0aGUgc2NhbiBpcyBub3QgdXNp bmcgYSByZWFkIHN0cmVhbS4KLSAqLwotVGFibGVTY2FuU3RhdHMKLWhlYXBfc2Nhbl9zdGF0 cyhUYWJsZVNjYW5EZXNjIHNzY2FuKQotewotCUhlYXBTY2FuRGVzYyBzY2FuID0gKEhlYXBT Y2FuRGVzYykgc3NjYW47Ci0JSU9TdGF0cyBzdGF0czsKLQlUYWJsZVNjYW5TdGF0cyByZXM7 Ci0KLQlpZiAoIXNjYW4tPnJzX3JlYWRfc3RyZWFtKQotCQlyZXR1cm4gTlVMTDsKLQotCXN0 YXRzID0gcmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3RhdHMoc2Nhbi0+cnNfcmVhZF9zdHJlYW0p OwotCi0JcmVzID0gcGFsbG9jMChzaXplb2YoVGFibGVTY2FuU3RhdHNEYXRhKSk7Ci0KLQly ZXMtPnByZWZldGNoX2NvdW50ID0gc3RhdHMucHJlZmV0Y2hfY291bnQ7Ci0JcmVzLT5kaXN0 YW5jZV9zdW0gPSBzdGF0cy5kaXN0YW5jZV9zdW07Ci0JcmVzLT5kaXN0YW5jZV9tYXggPSBz dGF0cy5kaXN0YW5jZV9tYXg7Ci0JcmVzLT5kaXN0YW5jZV9jYXBhY2l0eSA9IHN0YXRzLmRp c3RhbmNlX2NhcGFjaXR5OwotCXJlcy0+c3RhbGxfY291bnQgPSBzdGF0cy5zdGFsbF9jb3Vu dDsKLQlyZXMtPmlvX2NvdW50ID0gc3RhdHMuaW9fY291bnQ7Ci0JcmVzLT5pb19uYmxvY2tz ID0gc3RhdHMuaW9fbmJsb2NrczsKLQlyZXMtPmlvX2luX3Byb2dyZXNzID0gc3RhdHMuaW9f aW5fcHJvZ3Jlc3M7Ci0KLQlyZXR1cm4gcmVzOwotfQotCiBIZWFwVHVwbGUKIGhlYXBfZ2V0 bmV4dChUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDUxYWMy MTY0YWZkLi4yNTNhNzM1YjZjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCkBAIC0yNjUwLDcgKzI2NTAsNiBAQCBzdGF0aWMgY29uc3QgVGFibGVB bVJvdXRpbmUgaGVhcGFtX21ldGhvZHMgPSB7CiAKIAkuc2Nhbl9zZXRfdGlkcmFuZ2UgPSBo ZWFwX3NldF90aWRyYW5nZSwKIAkuc2Nhbl9nZXRuZXh0c2xvdF90aWRyYW5nZSA9IGhlYXBf Z2V0bmV4dHNsb3RfdGlkcmFuZ2UsCi0JLnNjYW5fc3RhdHMgPSBoZWFwX3NjYW5fc3RhdHMs CiAKIAkucGFyYWxsZWxzY2FuX2VzdGltYXRlID0gdGFibGVfYmxvY2tfcGFyYWxsZWxzY2Fu X2VzdGltYXRlLAogCS5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZSA9IHRhYmxlX2Jsb2NrX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IDgyYzViMjhlMGFkLi5iZWM0NTRkZTZkOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTI5MCw3ICsxMjkwLDggQEAgbGF6eV9zY2FuX2hl YXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJ CQkJCQloZWFwX3ZhY19zY2FuX25leHRfYmxvY2ssCiAJCQkJCQkJCQkJdmFjcmVsLAotCQkJ CQkJCQkJCXNpemVvZihib29sKSk7CisJCQkJCQkJCQkJc2l6ZW9mKGJvb2wpLAorCQkJCQkJ CQkJCU5VTEwpOwogCiAJd2hpbGUgKHRydWUpCiAJewpAQCAtMjc5MCw3ICsyNzkxLDggQEAg bGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkJCQkJCQkJCU1B SU5fRk9SS05VTSwKIAkJCQkJCQkJCQl2YWN1dW1fcmVhcF9scF9yZWFkX3N0cmVhbV9uZXh0 LAogCQkJCQkJCQkJCWl0ZXIsCi0JCQkJCQkJCQkJc2l6ZW9mKFRpZFN0b3JlSXRlclJlc3Vs dCkpOworCQkJCQkJCQkJCXNpemVvZihUaWRTdG9yZUl0ZXJSZXN1bHQpLAorCQkJCQkJCQkJ CU5VTEwpOwogCiAJd2hpbGUgKHRydWUpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cmVlLmMKaW5kZXggYWVkNzQ1OTBjZjQuLmU1Y2Q1MWNjZTRkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTEzMjUsNyArMTMyNSw4IEBAIGJ0dmFjdXVtc2NhbihJ bmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3Ry ZWFtX2NiLAogCQkJCQkJCQkJCSZwLAotCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCTAsCisJ CQkJCQkJCQkJTlVMTCk7CiAJZm9yICg7OykKIAl7CiAJCS8qIEdldCB0aGUgY3VycmVudCBy ZWxhdGlvbiBsZW5ndGggKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5j CmluZGV4IDZiNzExN2I1NmIyLi4yMDZhOGU5YzhiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC04MzUsNyArODM1LDggQEAgc3BndmFjdXVtc2Nhbihz cGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJ CQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IsCiAJCQkJCQkJCQkJJnAsCi0JCQkJ CQkJCQkJMCk7CisJCQkJCQkJCQkJMCwKKwkJCQkJCQkJCQlOVUxMKTsKIAogCS8qCiAJICog VGhlIG91dGVyIGxvb3AgaXRlcmF0ZXMgb3ZlciBhbGwgaW5kZXggcGFnZXMgZXhjZXB0IHRo ZSBtZXRhcGFnZSwgaW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5 emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBlZWVkOTFiZTI2 Ni4uYTJjZjE3NmE0ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTEyNTEsNyAr MTI1MSw4IEBAIGFjcXVpcmVfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxl dmVsLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19zYW1wbGlu Z19yZWFkX3N0cmVhbV9uZXh0LAogCQkJCQkJCQkJCSZicywKLQkJCQkJCQkJCQkwKTsKKwkJ CQkJCQkJCQkwLAorCQkJCQkJCQkJCU5VTEwpOwogCiAJLyogT3V0ZXIgbG9vcCBvdmVyIGJs b2NrcyB0byBzYW1wbGUgKi8KIAl3aGlsZSAodGFibGVfc2Nhbl9hbmFseXplX25leHRfYmxv Y2soc2Nhbiwgc3RyZWFtKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA3YTQwMDlh ZTc0Zi4uMjVhZjY1NTAwOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM5OTgs NyArMzk5OCw3IEBAIHNob3dfdGlkYml0bWFwX2luZm8oQml0bWFwSGVhcFNjYW5TdGF0ZSAq cGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogfQogCiBzdGF0aWMgdm9pZAotcHJpbnRf aW9fdXNhZ2UoRXhwbGFpblN0YXRlICplcywgVGFibGVTY2FuU3RhdHMgc3RhdHMpCitwcmlu dF9pb191c2FnZShFeHBsYWluU3RhdGUgKmVzLCBJT1N0YXRzICpzdGF0cykKIHsKIAkvKiBk b24ndCBwcmludCBzdGF0cyBpZiB0aGVyZSdzIG5vdGhpbmcgdG8gcmVwb3J0ICovCiAJaWYg KHN0YXRzLT5wcmVmZXRjaF9jb3VudCA+IDApCkBAIC00MDY3LDggKzQwNjcsNyBAQCBzdGF0 aWMgdm9pZAogc2hvd19zY2FuX2lvX3VzYWdlKFNjYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBs YWluU3RhdGUgKmVzKQogewogCVBsYW4JICAgKnBsYW4gPSBwbGFuc3RhdGUtPnBzLnBsYW47 Ci0JVGFibGVTY2FuU3RhdHMJbGVhZGVyX3N0YXRzOwotCVRhYmxlU2NhblN0YXRzRGF0YQlz dGF0czsKKwlJT1N0YXRzCQlzdGF0czsKIAogCWlmICghZXMtPmlvKQogCQlyZXR1cm47CkBA IC00MDc4LDE2ICs0MDc3LDcgQEAgc2hvd19zY2FuX2lvX3VzYWdlKFNjYW5TdGF0ZSAqcGxh bnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogCQlyZXR1cm47CiAKIAkvKiBjb2xsZWN0IHBy ZWZldGNoIHN0YXRpc3RpY3MgZnJvbSB0aGUgcmVhZCBzdHJlYW0gKi8KLQlsZWFkZXJfc3Rh dHMgPSB0YWJsZV9zY2FuX3N0YXRzKHBsYW5zdGF0ZS0+c3NfY3VycmVudFNjYW5EZXNjKTsK LQotCWlmIChsZWFkZXJfc3RhdHMpCi0JewotCQltZW1jcHkoJnN0YXRzLCBsZWFkZXJfc3Rh dHMsIHNpemVvZihUYWJsZVNjYW5TdGF0c0RhdGEpKTsKLQl9Ci0JZWxzZQotCXsKLQkJbWVt c2V0KCZzdGF0cywgMCwgc2l6ZW9mKFRhYmxlU2NhblN0YXRzRGF0YSkpOwotCX0KKwlzdGF0 cyA9IHBsYW5zdGF0ZS0+c3NfY3VycmVudFNjYW5EZXNjLT5yc19pb3N0YXRzOwogCiAJLyog SW5pdGlhbGl6ZSBjb3VudGVycyB3aXRoIHN0YXRzIGZyb20gdGhlIGxvY2FsIHByb2Nlc3Mg Zmlyc3QgKi8KIAlzd2l0Y2ggKG5vZGVUYWcocGxhbikpCkBAIC00MTQ2LDkgKzQxMzYsNiBA QCBzaG93X2lvX3VzYWdlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVz LCBpbnQgd29ya2VyKQogCVBsYW4JICAgKnBsYW4gPSBwbGFuc3RhdGUtPnBsYW47CiAJSU9T dGF0cwkgICAqc3RhdHMgPSBOVUxMOwogCi0JLy8gWFhYCi0JVGFibGVTY2FuU3RhdHNEYXRh CXRtcDsKLQogCWlmICghZXMtPmlvKQogCQlyZXR1cm47CiAKQEAgLTQxODAsMTcgKzQxNjcs NyBAQCBzaG93X2lvX3VzYWdlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUg KmVzLCBpbnQgd29ya2VyKQogCQkJcmV0dXJuOwogCX0KIAotCS8qIFhYWCBjb252ZXJ0IHRv IFRhYmxlU2NhblN0YXRzICovCi0JdG1wLmRpc3RhbmNlX2NhcGFjaXR5ID0gc3RhdHMtPmRp c3RhbmNlX2NhcGFjaXR5OwotCXRtcC5kaXN0YW5jZV9tYXggPSBzdGF0cy0+ZGlzdGFuY2Vf bWF4OwotCXRtcC5kaXN0YW5jZV9zdW0gPSBzdGF0cy0+ZGlzdGFuY2Vfc3VtOwotCXRtcC5p b19jb3VudCA9IHN0YXRzLT5pb19jb3VudDsKLQl0bXAuaW9faW5fcHJvZ3Jlc3MgPSBzdGF0 cy0+aW9faW5fcHJvZ3Jlc3M7Ci0JdG1wLmlvX25ibG9ja3MgPSBzdGF0cy0+aW9fbmJsb2Nr czsKLQl0bXAucHJlZmV0Y2hfY291bnQgPSBzdGF0cy0+cHJlZmV0Y2hfY291bnQ7Ci0JdG1w LnN0YWxsX2NvdW50ID0gc3RhdHMtPnN0YWxsX2NvdW50OwotCi0JcHJpbnRfaW9fdXNhZ2Uo ZXMsICZ0bXApOworCXByaW50X2lvX3VzYWdlKGVzLCBzdGF0cyk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IDBmMTQ1OWYx MWE0Li41NWIxZTI5NGQ2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMKQEAgLTMxNSw3ICszMTUsNiBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4o Qml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAlpZiAobm9kZS0+c2luc3RydW1lbnQgIT0g TlVMTCAmJiBJc1BhcmFsbGVsV29ya2VyKCkpCiAJewogCQlCaXRtYXBIZWFwU2Nhbkluc3Ry dW1lbnRhdGlvbiAqc2k7Ci0JCVRhYmxlU2NhblN0YXRzIHN0YXRzOwogCiAJCUFzc2VydChQ YXJhbGxlbFdvcmtlck51bWJlciA8IG5vZGUtPnNpbnN0cnVtZW50LT5udW1fd29ya2Vycyk7 CiAJCXNpID0gJm5vZGUtPnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtl ck51bWJlcl07CkBAIC0zMzEsMTAgKzMzMCw3IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihC aXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCQlzaS0+bG9zc3lfcGFnZXMgKz0gbm9kZS0+ c3RhdHMubG9zc3lfcGFnZXM7CiAKIAkJLyogY29sbGVjdCBwcmVmZXRjaCBpbmZvIGZvciB0 aGlzIHByb2Nlc3MgZnJvbSB0aGUgcmVhZF9zdHJlYW0gKi8KLQkJaWYgKChzdGF0cyA9IHRh YmxlX3NjYW5fc3RhdHMobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKSkgIT0gTlVMTCkK LQkJewotCQkJQUNDVU1VTEFURV9UQUJMRV9TVEFUUyhzdGF0cywgJnNpLT5pbyk7Ci0JCX0K KwkJQUNDVU1VTEFURV9UQUJMRV9TVEFUUygmbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNj LT5yc19pb3N0YXRzLCAmc2ktPmlvKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXFzY2FuLmMKaW5kZXggNGZhODVhMWI2YmMuLjI4ZTMzYWEzOTFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTMwMyw3ICszMDMsNiBAQCBFeGVjRW5kU2Vx U2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPnNpbnN0cnVtZW50ICE9IE5V TEwgJiYgSXNQYXJhbGxlbFdvcmtlcigpKQogCXsKIAkJU2VxU2Nhbkluc3RydW1lbnRhdGlv biAqc2k7Ci0JCVRhYmxlU2NhblN0YXRzIHN0YXRzOwogCiAJCUFzc2VydChQYXJhbGxlbFdv cmtlck51bWJlciA8IG5vZGUtPnNpbnN0cnVtZW50LT5udW1fd29ya2Vycyk7CiAJCXNpID0g Jm5vZGUtPnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtlck51bWJlcl07 CkBAIC0zMTcsMTAgKzMxNiw3IEBAIEV4ZWNFbmRTZXFTY2FuKFNlcVNjYW5TdGF0ZSAqbm9k ZSkKIAkJICovCiAKIAkJLyogY29sbGVjdCBwcmVmZXRjaCBpbmZvIGZvciB0aGlzIHByb2Nl c3MgZnJvbSB0aGUgcmVhZF9zdHJlYW0gKi8KLQkJaWYgKChzdGF0cyA9IHRhYmxlX3NjYW5f c3RhdHMobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKSkgIT0gTlVMTCkKLQkJewotCQkJ QUNDVU1VTEFURV9UQUJMRV9TVEFUUyhzdGF0cywgJnNpLT5pbyk7Ci0JCX0KKwkJQUNDVU1V TEFURV9UQUJMRV9TVEFUUygmbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjLT5yc19pb3N0 YXRzLCAmc2ktPmlvKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9haW8vcmVhZF9zdHJlYW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRf c3RyZWFtLmMKaW5kZXggZmFhNTJjYTRiMmMuLjU2YjBiOGU3ZmI1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3Qg UmVhZFN0cmVhbQogCWJvb2wJCXRlbXBvcmFyeTsKIAogCS8qIHNjYW4gc3RhdHMgY291bnRl cnMgKi8KLQlJT1N0YXRzCQlzdGF0czsKKwlJT1N0YXRzCSAgICpzdGF0czsKIAogCS8qCiAJ ICogT25lLWJsb2NrIGJ1ZmZlciB0byBzdXBwb3J0ICd1bmdldHRpbmcnIGEgYmxvY2sgbnVt YmVyLCB0byByZXNvbHZlIGZsb3cKQEAgLTE4NiwxMCArMTg2LDE1IEBAIGJsb2NrX3Jhbmdl X3JlYWRfc3RyZWFtX2NiKFJlYWRTdHJlYW0gKnN0cmVhbSwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZldGNoKFJlYWRTdHJlYW0gKnN0cmVh bSkKIHsKLQlzdHJlYW0tPnN0YXRzLnByZWZldGNoX2NvdW50Kys7Ci0Jc3RyZWFtLT5zdGF0 cy5kaXN0YW5jZV9zdW0gKz0gc3RyZWFtLT5waW5uZWRfYnVmZmVyczsKLQlpZiAoc3RyZWFt LT5waW5uZWRfYnVmZmVycyA+IHN0cmVhbS0+c3RhdHMuZGlzdGFuY2VfbWF4KQotCQlzdHJl YW0tPnN0YXRzLmRpc3RhbmNlX21heCA9IHN0cmVhbS0+cGlubmVkX2J1ZmZlcnM7CisJSU9T dGF0cyAqc3RhdHMgPSBzdHJlYW0tPnN0YXRzOworCisJaWYgKHN0YXRzID09IE5VTEwpCisJ CXJldHVybjsKKworCXN0YXRzLT5wcmVmZXRjaF9jb3VudCsrOworCXN0YXRzLT5kaXN0YW5j ZV9zdW0gKz0gc3RyZWFtLT5waW5uZWRfYnVmZmVyczsKKwlpZiAoc3RyZWFtLT5waW5uZWRf YnVmZmVycyA+IHN0YXRzLT5kaXN0YW5jZV9tYXgpCisJCXN0YXRzLT5kaXN0YW5jZV9tYXgg PSBzdHJlYW0tPnBpbm5lZF9idWZmZXJzOwogfQogCiAvKgpAQCAtMjAxLDE1ICsyMDYsMjUg QEAgcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX3ByZWZldGNoKFJlYWRTdHJlYW0gKnN0cmVh bSkKIHN0YXRpYyBpbmxpbmUgdm9pZAogcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRzX2lvKFJl YWRTdHJlYW0gKnN0cmVhbSwgaW50IG5ibG9ja3MsIGludCBpbl9wcm9ncmVzcykKIHsKLQlz dHJlYW0tPnN0YXRzLmlvX2NvdW50Kys7Ci0Jc3RyZWFtLT5zdGF0cy5pb19uYmxvY2tzICs9 IG5ibG9ja3M7Ci0Jc3RyZWFtLT5zdGF0cy5pb19pbl9wcm9ncmVzcyArPSBpbl9wcm9ncmVz czsKKwlJT1N0YXRzICpzdGF0cyA9IHN0cmVhbS0+c3RhdHM7CisKKwlpZiAoc3RhdHMgPT0g TlVMTCkKKwkJcmV0dXJuOworCisJc3RhdHMtPmlvX2NvdW50Kys7CisJc3RhdHMtPmlvX25i bG9ja3MgKz0gbmJsb2NrczsKKwlzdGF0cy0+aW9faW5fcHJvZ3Jlc3MgKz0gaW5fcHJvZ3Jl c3M7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAogcmVhZF9zdHJlYW1fdXBkYXRlX3N0YXRz X3N0YWxsKFJlYWRTdHJlYW0gKnN0cmVhbSkKIHsKLQlzdHJlYW0tPnN0YXRzLnN0YWxsX2Nv dW50Kys7CisJSU9TdGF0cyAqc3RhdHMgPSBzdHJlYW0tPnN0YXRzOworCisJaWYgKHN0YXRz ID09IE5VTEwpCisJCXJldHVybjsKKworCXN0YXRzLT5zdGFsbF9jb3VudCsrOwogfQogCiAv KgpAQCAtNTg3LDcgKzYwMiw4IEBAIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoaW50IGZsYWdz LAogCQkJCQkgICBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCQkJCSAgIFJlYWRTdHJlYW1CbG9j a051bWJlckNCIGNhbGxiYWNrLAogCQkJCQkgICB2b2lkICpjYWxsYmFja19wcml2YXRlX2Rh dGEsCi0JCQkJCSAgIHNpemVfdCBwZXJfYnVmZmVyX2RhdGFfc2l6ZSkKKwkJCQkJICAgc2l6 ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplLAorCQkJCQkgICBJT1N0YXRzICpzdGF0cykKIHsK IAlSZWFkU3RyZWFtICpzdHJlYW07CiAJc2l6ZV90CQlzaXplOwpAQCAtNzQ2LDkgKzc2Miwx MCBAQCByZWFkX3N0cmVhbV9iZWdpbl9pbXBsKGludCBmbGFncywKIAlzdHJlYW0tPnNlcV91 bnRpbF9wcm9jZXNzZWQgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CiAJc3RyZWFtLT50ZW1wb3Jh cnkgPSBTbWdySXNUZW1wKHNtZ3IpOwogCi0JLyogemVybyB0aGUgc3RhdHMsIHRoZW4gc2V0 IGNhcGFjaXR5ICovCi0JbWVtc2V0KCZzdHJlYW0tPnN0YXRzLCAwLCBzaXplb2YoSU9TdGF0 cykpOwotCXN0cmVhbS0+c3RhdHMuZGlzdGFuY2VfY2FwYWNpdHkgPSBtYXhfcGlubmVkX2J1 ZmZlcnM7CisJLyogc2V0IGNhcGFjaXR5ICovCisJc3RyZWFtLT5zdGF0cyA9IHN0YXRzOwor CWlmIChzdHJlYW0tPnN0YXRzKQorCQlzdHJlYW0tPnN0YXRzLT5kaXN0YW5jZV9jYXBhY2l0 eSA9IG1heF9waW5uZWRfYnVmZmVyczsKIAogCS8qCiAJICogU2tpcCB0aGUgaW5pdGlhbCBy YW1wLXVwIHBoYXNlIGlmIHRoZSBjYWxsZXIgc2F5cyB3ZSdyZSBnb2luZyB0byBiZQpAQCAt Nzg5LDcgKzgwNiw4IEBAIHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKGludCBmbGFncywK IAkJCQkJCSAgIEZvcmtOdW1iZXIgZm9ya251bSwKIAkJCQkJCSAgIFJlYWRTdHJlYW1CbG9j a051bWJlckNCIGNhbGxiYWNrLAogCQkJCQkJICAgdm9pZCAqY2FsbGJhY2tfcHJpdmF0ZV9k YXRhLAotCQkJCQkJICAgc2l6ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplKQorCQkJCQkJICAg c2l6ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplLAorCQkJCQkJICAgSU9TdGF0cyAqc3RhdHMp CiB7CiAJcmV0dXJuIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoZmxhZ3MsCiAJCQkJCQkJCSAg c3RyYXRlZ3ksCkBAIC03OTksNyArODE3LDggQEAgcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRp b24oaW50IGZsYWdzLAogCQkJCQkJCQkgIGZvcmtudW0sCiAJCQkJCQkJCSAgY2FsbGJhY2ss CiAJCQkJCQkJCSAgY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAotCQkJCQkJCQkgIHBlcl9idWZm ZXJfZGF0YV9zaXplKTsKKwkJCQkJCQkJICBwZXJfYnVmZmVyX2RhdGFfc2l6ZSwKKwkJCQkJ CQkJICBzdGF0cyk7CiB9CiAKIC8qCkBAIC04MjQsNyArODQzLDggQEAgcmVhZF9zdHJlYW1f YmVnaW5fc21ncl9yZWxhdGlvbihpbnQgZmxhZ3MsCiAJCQkJCQkJCSAgZm9ya251bSwKIAkJ CQkJCQkJICBjYWxsYmFjaywKIAkJCQkJCQkJICBjYWxsYmFja19wcml2YXRlX2RhdGEsCi0J CQkJCQkJCSAgcGVyX2J1ZmZlcl9kYXRhX3NpemUpOworCQkJCQkJCQkgIHBlcl9idWZmZXJf ZGF0YV9zaXplLAorCQkJCQkJCQkgIE5VTEwpOwogfQogCiAvKgpAQCAtMTE3OSwxMCArMTE5 OSwzIEBAIHJlYWRfc3RyZWFtX2VuZChSZWFkU3RyZWFtICpzdHJlYW0pCiAJcmVhZF9zdHJl YW1fcmVzZXQoc3RyZWFtKTsKIAlwZnJlZShzdHJlYW0pOwogfQotCi0vKiByZXR1cm4gdGhl IHByZWZldGNoIHN0YXRzIGZvciB0aGUgcmVhZF9zdHJlYW0gKi8KLUlPU3RhdHMKLXJlYWRf c3RyZWFtX3ByZWZldGNoX3N0YXRzKFJlYWRTdHJlYW0gKnN0cmVhbSkKLXsKLQlyZXR1cm4g c3RyZWFtLT5zdGF0czsKLX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4MWRjMGI3NTIxZC4u MmZkYzUwYjg2NWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM1OSw3ICszNTksNiBAQCBl eHRlcm4gdm9pZCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2FuRGVzYyBzc2Nhbik7 CiBleHRlcm4gdm9pZCBoZWFwX3Jlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5 IGtleSwgYm9vbCBzZXRfcGFyYW1zLAogCQkJCQkJYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBh bGxvd19zeW5jLCBib29sIGFsbG93X3BhZ2Vtb2RlKTsKIGV4dGVybiB2b2lkIGhlYXBfZW5k c2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKTsKLWV4dGVybiBUYWJsZVNjYW5TdGF0cyBoZWFw X3NjYW5fc3RhdHMoVGFibGVTY2FuRGVzYyBzc2Nhbik7CiBleHRlcm4gSGVhcFR1cGxlIGhl YXBfZ2V0bmV4dChUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlv bik7CiBleHRlcm4gYm9vbCBoZWFwX2dldG5leHRzbG90KFRhYmxlU2NhbkRlc2Mgc3NjYW4s CiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBjMDQ4ODk4N2IyZC4uZTQxZjBmOGVlMTMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAi YWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9pdHVwLmgiCisjaW5j bHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCiAjaW5jbHVkZSAibm9kZXMvdGlk Yml0bWFwLmgiCiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9yZWxmaWxlbG9jYXRvci5oIgpAQCAtNjIsNiArNjMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg VGFibGVTY2FuRGVzY0RhdGEKIAkgKi8KIAl1aW50MzIJCXJzX2ZsYWdzOwogCisJLyoKKwkg KiBJTyBzdGF0aXN0aWNzIGZvciB0aGUgc2Nhbiwgb3B0aW9uYWxseSBmaWxsZWQgYnkgdGhl IHRhYmxlIEFNLgorCSAqLworCUlPU3RhdHMJCXJzX2lvc3RhdHM7CisKIAlzdHJ1Y3QgUGFy YWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqcnNfcGFyYWxsZWw7CS8qIHBhcmFsbGVsIHNjYW4K IAkJCQkJCQkJCQkJCQkgKiBpbmZvcm1hdGlvbiAqLwogfSBUYWJsZVNjYW5EZXNjRGF0YTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGFiODRiNzY0NDNjLi4wNjA4NDc1MjI0NSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0zODAsMTEgKzM4MCw2IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24s CiAJCQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwogCi0JLyoKLQkgKiBDb2xs ZWN0IHN0YXRpc3RpY3MgYWJvdXQgdGFibGUgc2Nhbi4KLQkgKi8KLQlUYWJsZVNjYW5TdGF0 cwkJKCpzY2FuX3N0YXRzKSAoVGFibGVTY2FuRGVzYyBzY2FuKTsKLQogCS8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogCSAqIFBhcmFsbGVsIHRhYmxlIHNjYW4gcmVsYXRlZCBmdW5jdGlvbnMu CiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDExLDE4ICsxMDA2LDYgQEAgdGFibGVf ZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNjYW4pCiAJc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0t PnNjYW5fZW5kKHNjYW4pOwogfQogCi0vKgotICogRmV0Y2ggc3RhdGlzdGljcyBhYm91dCB0 YWJsZSBzY2FuLgotICovCi1zdGF0aWMgaW5saW5lIFRhYmxlU2NhblN0YXRzCi10YWJsZV9z Y2FuX3N0YXRzKFRhYmxlU2NhbkRlc2Mgc2NhbikKLXsKLQlpZiAoc2Nhbi0+cnNfcmQtPnJk X3RhYmxlYW0tPnNjYW5fc3RhdHMpCi0JCXJldHVybiBzY2FuLT5yc19yZC0+cmRfdGFibGVh bS0+c2Nhbl9zdGF0cyhzY2FuKTsKLQotCXJldHVybiBOVUxMOwotfQotCiAvKgogICogUmVz dGFydCBhIHJlbGF0aW9uIHNjYW4uCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXgg OTZhOGE3NTAzMWYuLmYyODdmOGZjODEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt MTY0NCw3ICsxNjQ0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU2VxU2NhblN0YXRlCiB7CiAJU2Nh blN0YXRlCXNzOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLwogCVNpemUJ CXBzY2FuX2xlbjsJCS8qIHNpemUgb2YgcGFyYWxsZWwgaGVhcCBzY2FuIGRlc2NyaXB0b3Ig Ki8KLQlTZXFTY2FuSW5zdHJ1bWVudGF0aW9uCXN0YXRzOwogCVNoYXJlZFNlcVNjYW5JbnN0 cnVtZW50YXRpb24gKnNpbnN0cnVtZW50OwogfSBTZXFTY2FuU3RhdGU7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcmVhZF9zdHJlYW0uaAppbmRleCAwNjc2YmRjOWIxNC4uYjU2YmY5MjVmYzEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKQEAgLTg4LDcgKzg4LDggQEAgZXh0ZXJu IFJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKGludCBmbGFncywKIAkJ CQkJCQkJCQkJICBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCQkJCQkJCQkJCSAgUmVhZFN0cmVh bUJsb2NrTnVtYmVyQ0IgY2FsbGJhY2ssCiAJCQkJCQkJCQkJCSAgdm9pZCAqY2FsbGJhY2tf cHJpdmF0ZV9kYXRhLAotCQkJCQkJCQkJCQkgIHNpemVfdCBwZXJfYnVmZmVyX2RhdGFfc2l6 ZSk7CisJCQkJCQkJCQkJCSAgc2l6ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplLAorCQkJCQkJ CQkJCQkgIElPU3RhdHMgKnN0YXQpOwogZXh0ZXJuIEJ1ZmZlciByZWFkX3N0cmVhbV9uZXh0 X2J1ZmZlcihSZWFkU3RyZWFtICpzdHJlYW0sIHZvaWQgKipwZXJfYnVmZmVyX2RhdGEpOwog ZXh0ZXJuIEJsb2NrTnVtYmVyIHJlYWRfc3RyZWFtX25leHRfYmxvY2soUmVhZFN0cmVhbSAq c3RyZWFtLAogCQkJCQkJCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgKnN0cmF0ZWd5KTsK QEAgLTEwNSw2ICsxMDYsNCBAQCBleHRlcm4gdm9pZCByZWFkX3N0cmVhbV9yZXN1bWUoUmVh ZFN0cmVhbSAqc3RyZWFtKTsKIGV4dGVybiB2b2lkIHJlYWRfc3RyZWFtX3Jlc2V0KFJlYWRT dHJlYW0gKnN0cmVhbSk7CiBleHRlcm4gdm9pZCByZWFkX3N0cmVhbV9lbmQoUmVhZFN0cmVh bSAqc3RyZWFtKTsKIAotZXh0ZXJuIElPU3RhdHMgcmVhZF9zdHJlYW1fcHJlZmV0Y2hfc3Rh dHMoUmVhZFN0cmVhbSAqc3RyZWFtKTsKLQogI2VuZGlmCQkJCQkJCS8qIFJFQURfU1RSRUFN X0ggKi8KLS0gCjIuNTMuMAoK --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0005-get-rid-of-TableScanStats-Data.patch" Content-Disposition: attachment; filename="v3-0005-get-rid-of-TableScanStats-Data.patch" Content-Transfer-Encoding: base64 RnJvbSA5NDBkYWQ5NmQ5ODEwNjkyZTY2MGIwZjI4OWFmN2M3ZWQyYmYyMDIyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogV2VkLCAxOCBNYXIgMjAyNiAxNjozMDoyOCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djMgNS82XSBnZXQgcmlkIG9mIFRhYmxlU2NhblN0YXRzW0RhdGFdCgpmaW5pc2ggcmVwbGFj aW5nIGl0IHdpdGggSU9TdGF0cwotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YyAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5j ICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAg ICAgICB8IDQxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50X25vZGUuaCAgICB8IDEzICsrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwg MTcgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCmluZGV4IDI1YWY2NTUwMDk4Li4xYjBmZWVhZGQ5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwpAQCAtNDA5Myw3ICs0MDkzLDcgQEAgc2hvd19zY2FuX2lvX3VzYWdlKFNjYW5T dGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQlmb3IgKGludCBpID0g MDsgaSA8IHNpbnN0cnVtZW50LT5udW1fd29ya2VyczsgKytpKQogCQkJCQl7CiAJCQkJCQlT ZXFTY2FuSW5zdHJ1bWVudGF0aW9uICp3aW5zdHJ1bWVudCA9ICZzaW5zdHJ1bWVudC0+c2lu c3RydW1lbnRbaV07Ci0JCQkJCQlBQ0NVTVVMQVRFX1RBQkxFX1NUQVRTKCZzdGF0cywgJndp bnN0cnVtZW50LT5pbyk7CisJCQkJCQlBQ0NVTVVMQVRFX0lPX1NUQVRTKCZzdGF0cywgJndp bnN0cnVtZW50LT5pbyk7CiAJCQkJCX0KIAkJCQl9CiAKQEAgLTQxMTAsNyArNDExMCw3IEBA IHNob3dfc2Nhbl9pb191c2FnZShTY2FuU3RhdGUgKnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRl ICplcykKIAkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBzaW5zdHJ1bWVudC0+bnVtX3dvcmtl cnM7ICsraSkKIAkJCQkJewogCQkJCQkJQml0bWFwSGVhcFNjYW5JbnN0cnVtZW50YXRpb24g KndpbnN0cnVtZW50ID0gJnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFtpXTsKLQkJCQkJCUFD Q1VNVUxBVEVfVEFCTEVfU1RBVFMoJnN0YXRzLCAmd2luc3RydW1lbnQtPmlvKTsKKwkJCQkJ CUFDQ1VNVUxBVEVfSU9fU1RBVFMoJnN0YXRzLCAmd2luc3RydW1lbnQtPmlvKTsKIAkJCQkJ fQogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YwppbmRleCA1NWIxZTI5NGQ2Yy4uYjc4NWNiN2EyMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0zMzAsNyArMzMwLDcgQEAgRXhlY0Vu ZEJpdG1hcEhlYXBTY2FuKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJCXNpLT5sb3Nz eV9wYWdlcyArPSBub2RlLT5zdGF0cy5sb3NzeV9wYWdlczsKIAogCQkvKiBjb2xsZWN0IHBy ZWZldGNoIGluZm8gZm9yIHRoaXMgcHJvY2VzcyBmcm9tIHRoZSByZWFkX3N0cmVhbSAqLwot CQlBQ0NVTVVMQVRFX1RBQkxFX1NUQVRTKCZub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2Mt PnJzX2lvc3RhdHMsICZzaS0+aW8pOworCQlBQ0NVTVVMQVRFX0lPX1NUQVRTKCZzaS0+aW8s ICZub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnJzX2lvc3RhdHMpOwogCX0KIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCAyOGUzM2FhMzkxZC4uMmVj YzBlMzA1NGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMzE2LDcg KzMxNiw3IEBAIEV4ZWNFbmRTZXFTY2FuKFNlcVNjYW5TdGF0ZSAqbm9kZSkKIAkJICovCiAK IAkJLyogY29sbGVjdCBwcmVmZXRjaCBpbmZvIGZvciB0aGlzIHByb2Nlc3MgZnJvbSB0aGUg cmVhZF9zdHJlYW0gKi8KLQkJQUNDVU1VTEFURV9UQUJMRV9TVEFUUygmbm9kZS0+c3Muc3Nf Y3VycmVudFNjYW5EZXNjLT5yc19pb3N0YXRzLCAmc2ktPmlvKTsKKwkJQUNDVU1VTEFURV9J T19TVEFUUygmc2ktPmlvLCAmbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjLT5yc19pb3N0 YXRzKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNj YW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggZTQxZjBmOGVlMTMu LjMyZWYyN2M1NDZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTEyMCw0NyArMTIwLDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEKIH0g UGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJh bGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9ja1RhYmxlU2Nhbldv cmtlcjsKIAotLyoKLSAqIEdlbmVyaWMgcHJlZmV0Y2ggc3RhdHMgZm9yIHRhYmxlIHNjYW5z LgotICovCi10eXBlZGVmIHN0cnVjdCBUYWJsZVNjYW5TdGF0c0RhdGEKLXsKLQkvKiBudW1i ZXIgb2YgYnVmZmVycyByZXR1cm5lZCB0byBjb25zdW1lciAoZm9yIGF2ZXJhZ2luZyBkaXN0 YW5jZSkgKi8KLQl1aW50NjQJCXByZWZldGNoX2NvdW50OwotCi0JLyogc3VtIG9mIHBpbm5l ZF9idWZmZXJzIHNhbXBsZWQgYXQgZWFjaCBidWZmZXIgcmV0dXJuICovCi0JdWludDY0CQlk aXN0YW5jZV9zdW07Ci0KLQkvKiBtYXhpbXVtIGFjdHVhbCBwaW5uZWRfYnVmZmVycyBvYnNl cnZlZCBkdXJpbmcgdGhlIHNjYW4gKi8KLQlpbnQxNgkJZGlzdGFuY2VfbWF4OwotCi0JLyog bWF4aW11bSBwb3NzaWJsZSBsb29rLWFoZWFkIGRpc3RhbmNlIChtYXhfcGlubmVkX2J1ZmZl cnMpICovCi0JaW50MTYJCWRpc3RhbmNlX2NhcGFjaXR5OwotCi0JLyogbnVtYmVyIG9mIHN0 YWxsZWQgcmVhZHMgKHdhaXRpbmcgZm9yIEkvTykgKi8KLQl1aW50NjQJCXN0YWxsX2NvdW50 OwotCi0JLyogSS9PIHN0YXRzICovCi0JdWludDY0CQlpb19jb3VudDsJCS8qIG51bWJlciBv ZiBJL09zICovCi0JdWludDY0CQlpb19uYmxvY2tzOwkJLyogc3VtIG9mIGJsb2NrcyBmb3Ig YWxsIEkvT3MgKi8KLQl1aW50NjQJCWlvX2luX3Byb2dyZXNzOwkvKiBzdW0gb2YgaW4tcHJv Z3Jlc3MgSS9PcyAqLwotfSBUYWJsZVNjYW5TdGF0c0RhdGE7Ci10eXBlZGVmIHN0cnVjdCBU YWJsZVNjYW5TdGF0c0RhdGEgKlRhYmxlU2NhblN0YXRzOwotCi0jZGVmaW5lIEFDQ1VNVUxB VEVfVEFCTEVfU1RBVFMoZHN0LCBzcmMpIFwKLQlkbyB7IFwKLQkJKGRzdCktPnByZWZldGNo X2NvdW50ICs9IChzcmMpLT5wcmVmZXRjaF9jb3VudDsgXAotCQkoZHN0KS0+ZGlzdGFuY2Vf c3VtICs9IChzcmMpLT5kaXN0YW5jZV9zdW07IFwKLQkJaWYgKChzcmMpLT5kaXN0YW5jZV9t YXggPiAoZHN0KS0+ZGlzdGFuY2VfbWF4KSBcCi0JCQkoZHN0KS0+ZGlzdGFuY2VfbWF4ID0g KHNyYyktPmRpc3RhbmNlX21heDsgXAotCQlpZiAoKHNyYyktPmRpc3RhbmNlX2NhcGFjaXR5 ID4gKGRzdCktPmRpc3RhbmNlX2NhcGFjaXR5KSBcCi0JCQkoZHN0KS0+ZGlzdGFuY2VfY2Fw YWNpdHkgPSAoc3JjKS0+ZGlzdGFuY2VfY2FwYWNpdHk7IFwKLQkJKGRzdCktPnN0YWxsX2Nv dW50ICs9IChzcmMpLT5zdGFsbF9jb3VudDsgXAotCQkoZHN0KS0+aW9fY291bnQgKz0gKHNy YyktPmlvX2NvdW50OyBcCi0JCShkc3QpLT5pb19uYmxvY2tzICs9IChzcmMpLT5pb19uYmxv Y2tzOyBcCi0JCShkc3QpLT5pb19pbl9wcm9ncmVzcyArPSAoc3JjKS0+aW9faW5fcHJvZ3Jl c3M7IFwKLQl9IHdoaWxlICgwKQotCiAvKgogICogQmFzZSBjbGFzcyBmb3IgZmV0Y2hlcyBm cm9tIGEgdGFibGUgdmlhIGFuIGluZGV4LiBUaGlzIGlzIHRoZSBiYXNlLWNsYXNzCiAgKiBm b3Igc3VjaCBzY2Fucywgd2hpY2ggbmVlZHMgdG8gYmUgZW1iZWRkZWQgaW4gdGhlIHJlc3Bl Y3RpdmUgc3RydWN0IGZvcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudF9ub2RlLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUu aAppbmRleCBjZGEwMGFkNDBlOS4uY2U2NDNlZjA2MzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2luc3RydW1lbnRfbm9kZS5oCkBAIC02Nyw2ICs2NywxOSBAQCB0eXBlZGVmIHN0cnVj dCBJT1N0YXRzCiAJdWludDY0CQlpb19pbl9wcm9ncmVzczsJLyogc3VtIG9mIGluLXByb2dy ZXNzIEkvT3MgKi8KIH0gSU9TdGF0czsKIAorI2RlZmluZSBBQ0NVTVVMQVRFX0lPX1NUQVRT KGRzdCwgc3JjKSBcCisJZG8geyBcCisJCShkc3QpLT5wcmVmZXRjaF9jb3VudCArPSAoc3Jj KS0+cHJlZmV0Y2hfY291bnQ7IFwKKwkJKGRzdCktPmRpc3RhbmNlX3N1bSArPSAoc3JjKS0+ ZGlzdGFuY2Vfc3VtOyBcCisJCWlmICgoc3JjKS0+ZGlzdGFuY2VfbWF4ID4gKGRzdCktPmRp c3RhbmNlX21heCkgXAorCQkJKGRzdCktPmRpc3RhbmNlX21heCA9IChzcmMpLT5kaXN0YW5j ZV9tYXg7IFwKKwkJaWYgKChzcmMpLT5kaXN0YW5jZV9jYXBhY2l0eSA+IChkc3QpLT5kaXN0 YW5jZV9jYXBhY2l0eSkgXAorCQkJKGRzdCktPmRpc3RhbmNlX2NhcGFjaXR5ID0gKHNyYykt PmRpc3RhbmNlX2NhcGFjaXR5OyBcCisJCShkc3QpLT5zdGFsbF9jb3VudCArPSAoc3JjKS0+ c3RhbGxfY291bnQ7IFwKKwkJKGRzdCktPmlvX2NvdW50ICs9IChzcmMpLT5pb19jb3VudDsg XAorCQkoZHN0KS0+aW9fbmJsb2NrcyArPSAoc3JjKS0+aW9fbmJsb2NrczsgXAorCQkoZHN0 KS0+aW9faW5fcHJvZ3Jlc3MgKz0gKHNyYyktPmlvX2luX3Byb2dyZXNzOyBcCisJfSB3aGls ZSAoMCkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKglJbnN0cnVtZW50YXRpb24g aW5mb3JtYXRpb24gZm9yIHNlcXVlbnRpYWwgc2NhbnMKLS0gCjIuNTMuMAoK --------------vSGELOV63zKPU0uxfVWRgz8W Content-Type: text/x-patch; charset=UTF-8; name="v3-0006-show-prefetch-stats-for-TidRangeScan.patch" Content-Disposition: attachment; filename="v3-0006-show-prefetch-stats-for-TidRangeScan.patch" Content-Transfer-Encoding: base64 RnJvbSA4NTY2OTQxZGZlYjI5ZjA2ODgwOTg0YmNkOTlkYjA0YWMzMDI5YTgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogV2VkLCAxOCBNYXIgMjAyNiAyMDo1NTowMCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djMgNi82XSBzaG93IHByZWZldGNoIHN0YXRzIGZvciBUaWRSYW5nZVNjYW4KCi0gZW5hYmxl IHNob3dfc2Nhbl9pb191c2FnZSBmb3IgVGlkUmFuZ2VTY2FuCgotIGFkZCBpbmZyYXN0cnVj dHVyZSB0byBhbGxvY2F0ZS9jb2xsZWN0IGluc3RydW1lbnRhdGlvbiBmcm9tIHBhcmFsbGVs CiAgd29ya2VycwotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAg ICB8ICAyOCArKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgfCAx MTAgKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0 cnVtZW50X25vZGUuaCAgfCAgMTEgKysrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmggfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDFiMGZlZWFkZDll Li5lZTMyZmJhZmE5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMjE1Miw2ICsy MTUyLDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2Vz dG9ycywKIAkJCQlpZiAocGxhbi0+cXVhbCkKIAkJCQkJc2hvd19pbnN0cnVtZW50YXRpb25f Y291bnQoIlJvd3MgUmVtb3ZlZCBieSBGaWx0ZXIiLCAxLAogCQkJCQkJCQkJCQkgICBwbGFu c3RhdGUsIGVzKTsKKwkJCQlzaG93X3NjYW5faW9fdXNhZ2UoKFNjYW5TdGF0ZSAqKSBwbGFu c3RhdGUsIGVzKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfRm9yZWlnblNjYW46CkBA IC00MTE0LDYgKzQxMTUsMjMgQEAgc2hvd19zY2FuX2lvX3VzYWdlKFNjYW5TdGF0ZSAqcGxh bnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQl9CiAJCQkJfQogCisJCQkJYnJlYWs7 CisJCQl9CisJCWNhc2UgVF9UaWRSYW5nZVNjYW46CisJCQl7CisJCQkJU2hhcmVkVGlkUmFu Z2VTY2FuSW5zdHJ1bWVudGF0aW9uICpzaW5zdHJ1bWVudAorCQkJCQk9ICgoVGlkUmFuZ2VT Y2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+dHJzc19zaW5zdHJ1bWVudDsKKworCQkJCS8qIGdl dCB0aGUgc3VtIG9mIHRoZSBjb3VudGVycyBzZXQgd2l0aGluIGVhY2ggYW5kIGV2ZXJ5IHBy b2Nlc3MgKi8KKwkJCQlpZiAoc2luc3RydW1lbnQpCisJCQkJeworCQkJCQlmb3IgKGludCBp ID0gMDsgaSA8IHNpbnN0cnVtZW50LT5udW1fd29ya2VyczsgKytpKQorCQkJCQl7CisJCQkJ CQlUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb24gKndpbnN0cnVtZW50ID0gJnNpbnN0cnVt ZW50LT5zaW5zdHJ1bWVudFtpXTsKKwkJCQkJCUFDQ1VNVUxBVEVfSU9fU1RBVFMoJnN0YXRz LCAmd2luc3RydW1lbnQtPmlvKTsKKwkJCQkJfQorCQkJCX0KKwogCQkJCWJyZWFrOwogCQkJ fQogCQlkZWZhdWx0OgpAQCAtNDE2MCw2ICs0MTc4LDE2IEBAIHNob3dfaW9fdXNhZ2UoUGxh blN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMsIGludCB3b3JrZXIpCiAKIAkJ CQlzdGF0cyA9ICZpbnN0cnVtZW50LT5pbzsKIAorCQkJCWJyZWFrOworCQkJfQorCQljYXNl IFRfVGlkUmFuZ2VTY2FuOgorCQkJeworCQkJCVRpZFJhbmdlU2NhblN0YXRlICpzdGF0ZSA9 ICgoVGlkUmFuZ2VTY2FuU3RhdGUgKikgcGxhbnN0YXRlKTsKKwkJCQlTaGFyZWRUaWRSYW5n ZVNjYW5JbnN0cnVtZW50YXRpb24gKnNpbnN0cnVtZW50ID0gc3RhdGUtPnRyc3Nfc2luc3Ry dW1lbnQ7CisJCQkJVGlkUmFuZ2VTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50ID0g JnNpbnN0cnVtZW50LT5zaW5zdHJ1bWVudFt3b3JrZXJdOworCisJCQkJc3RhdHMgPSAmaW5z dHJ1bWVudC0+aW87CisKIAkJCQlicmVhazsKIAkJCX0KIAkJZGVmYXVsdDoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggZmZjNzA4ZWQ2YmUuLjYyYjI2YmZkMThh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTEyMiw2ICsxMTIy LDkgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpw bGFuc3RhdGUsCiAJCWNhc2UgVF9TZXFTY2FuU3RhdGU6CiAJCQlFeGVjU2VxU2NhblJldHJp ZXZlSW5zdHJ1bWVudGF0aW9uKChTZXFTY2FuU3RhdGUgKikgcGxhbnN0YXRlKTsKIAkJCWJy ZWFrOworCQljYXNlIFRfVGlkUmFuZ2VTY2FuU3RhdGU6CisJCQlFeGVjVGlkUmFuZ2VTY2Fu UmV0cmlldmVJbnN0cnVtZW50YXRpb24oKFRpZFJhbmdlU2NhblN0YXRlICopIHBsYW5zdGF0 ZSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRleCA2MTc3MTNiZGUwNC4uNGZmNmUz MzMxNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAg LTM0MCw2ICszNDAsMjkgQEAgRXhlY0VuZFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW5TdGF0 ZSAqbm9kZSkKIHsKIAlUYWJsZVNjYW5EZXNjIHNjYW4gPSBub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2M7CiAKKwkvKgorCSAqIFdoZW4gZW5kaW5nIGEgcGFyYWxsZWwgd29ya2VyLCBj b3B5IHRoZSBzdGF0aXN0aWNzIGdhdGhlcmVkIGJ5IHRoZQorCSAqIHdvcmtlciBiYWNrIGlu dG8gc2hhcmVkIG1lbW9yeSBzbyB0aGF0IGl0IGNhbiBiZSBwaWNrZWQgdXAgYnkgdGhlIG1h aW4KKwkgKiBwcm9jZXNzIHRvIHJlcG9ydCBpbiBFWFBMQUlOIEFOQUxZWkUuCisJICovCisJ aWYgKG5vZGUtPnRyc3Nfc2luc3RydW1lbnQgIT0gTlVMTCAmJiBJc1BhcmFsbGVsV29ya2Vy KCkpCisJeworCQlUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb24gKnNpOworCisJCUFzc2Vy dChQYXJhbGxlbFdvcmtlck51bWJlciA8IG5vZGUtPnRyc3Nfc2luc3RydW1lbnQtPm51bV93 b3JrZXJzKTsKKwkJc2kgPSAmbm9kZS0+dHJzc19zaW5zdHJ1bWVudC0+c2luc3RydW1lbnRb UGFyYWxsZWxXb3JrZXJOdW1iZXJdOworCisJCS8qCisJCSAqIEhlcmUgd2UgYWNjdW11bGF0 ZSB0aGUgc3RhdHMgcmF0aGVyIHRoYW4gcGVyZm9ybWluZyBtZW1jcHkgb24KKwkJICogbm9k ZS0+c3RhdHMgaW50byBzaS4gIFdoZW4gYSBHYXRoZXIvR2F0aGVyTWVyZ2Ugbm9kZSBmaW5p c2hlcyBpdAorCQkgKiB3aWxsIHBlcmZvcm0gcGxhbm5lciBzaHV0ZG93biBvbiB0aGUgd29y a2Vycy4gIE9uIHJlc2NhbiBpdCB3aWxsCisJCSAqIHNwaW4gdXAgbmV3IHdvcmtlcnMgd2hp Y2ggd2lsbCBoYXZlIGEgbmV3IHN0YXRlIGFuZCB6ZXJvZWQgc3RhdHMuCisJCSAqLworCisJ CS8qIGNvbGxlY3QgcHJlZmV0Y2ggaW5mbyBmb3IgdGhpcyBwcm9jZXNzIGZyb20gdGhlIHJl YWRfc3RyZWFtICovCisJCUFDQ1VNVUxBVEVfSU9fU1RBVFMoJnNpLT5pbywgJm5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYy0+cnNfaW9zdGF0cyk7CisJfQorCiAJaWYgKHNjYW4gIT0g TlVMTCkKIAkJdGFibGVfZW5kc2NhbihzY2FuKTsKIH0KQEAgLTQzMywxMSArNDU2LDIzIEBA IHZvaWQKIEV4ZWNUaWRSYW5nZVNjYW5Fc3RpbWF0ZShUaWRSYW5nZVNjYW5TdGF0ZSAqbm9k ZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9k ZS0+c3MucHMuc3RhdGU7CisJU2l6ZQkJc2l6ZTsKKworCXNpemUgPSB0YWJsZV9wYXJhbGxl bHNjYW5fZXN0aW1hdGUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCk7CisJbm9kZS0+dHJzc19wc2NhbmxlbiA9IHNpemU7 CisKKwkvKiBtYWtlIHN1cmUgdGhlIGluc3RydW1lbnRhdGlvbiBpcyBwcm9wZXJseSBhbGln bmVkICovCisJc2l6ZSA9IE1BWEFMSUdOKHNpemUpOwogCi0Jbm9kZS0+dHJzc19wc2Nhbmxl biA9Ci0JCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShub2RlLT5zcy5zc19jdXJyZW50 UmVsYXRpb24sCi0JCQkJCQkJCQllc3RhdGUtPmVzX3NuYXBzaG90KTsKLQlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIG5vZGUtPnRyc3NfcHNjYW5sZW4pOwor CS8qIGFjY291bnQgZm9yIGluc3RydW1lbnRhdGlvbiwgaWYgcmVxdWlyZWQgKi8KKwlpZiAo bm9kZS0+c3MucHMuaW5zdHJ1bWVudCAmJiBwY3h0LT5ud29ya2VycyA+IDApCisJeworCQlz aXplID0gYWRkX3NpemUoc2l6ZSwgb2Zmc2V0b2YoU2hhcmVkVGlkUmFuZ2VTY2FuSW5zdHJ1 bWVudGF0aW9uLCBzaW5zdHJ1bWVudCkpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVs X3NpemUocGN4dC0+bndvcmtlcnMsIHNpemVvZihUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRp b24pKSk7CisJfQorCisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBzaXplKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7 CiB9CiAKQEAgLTQ1Miw4ICs0ODcsMTggQEAgRXhlY1RpZFJhbmdlU2NhbkluaXRpYWxpemVE U00oVGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIHsK IAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFi bGVTY2FuRGVzYyBwc2NhbjsKKwlTaGFyZWRUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb24g KnNpbnN0cnVtZW50ID0gTlVMTDsKKwlTaXplCXNpemU7CisJY2hhciAgICpwdHI7CiAKLQlw c2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT50cnNzX3BzY2FubGVu KTsKKwlzaXplID0gTUFYQUxJR04obm9kZS0+dHJzc19wc2Nhbmxlbik7CisJaWYgKG5vZGUt PnNzLnBzLmluc3RydW1lbnQgJiYgcGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFNoYXJlZFRpZFJhbmdlU2Nhbkluc3RydW1lbnRh dGlvbiwgc2luc3RydW1lbnQpKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KHBjeHQtPm53b3JrZXJzLCBzaXplb2YoVGlkUmFuZ2VTY2FuSW5zdHJ1bWVudGF0aW9uKSkp OworCX0KKworCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHNpemUpOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKIAkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90 KTsKQEAgLTQ2MSw2ICs1MDYsMjMgQEAgRXhlY1RpZFJhbmdlU2NhbkluaXRpYWxpemVEU00o VGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAlub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxf dGlkcmFuZ2Uobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgcHNj YW4pOworCisJLyogaW5pdGlhbGl6ZSB0aGUgc2hhcmVkIGluc3RydW1lbnRhdGlvbiAod2l0 aCBjb3JyZWN0IGFsaWdubWVudCkgKi8KKwlwdHIgPSAoY2hhciAqKSBwc2NhbjsKKwlwdHIg Kz0gTUFYQUxJR04obm9kZS0+dHJzc19wc2Nhbmxlbik7CisJaWYgKG5vZGUtPnNzLnBzLmlu c3RydW1lbnQgJiYgcGN4dC0+bndvcmtlcnMgPiAwKQorCQlzaW5zdHJ1bWVudCA9IChTaGFy ZWRUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb24gKikgcHRyOworCisJaWYgKHNpbnN0cnVt ZW50KQorCXsKKwkJc2luc3RydW1lbnQtPm51bV93b3JrZXJzID0gcGN4dC0+bndvcmtlcnM7 CisKKwkJLyogZW5zdXJlIGFueSB1bmZpbGxlZCBzbG90cyB3aWxsIGNvbnRhaW4gemVyb2Vz ICovCisJCW1lbXNldChzaW5zdHJ1bWVudC0+c2luc3RydW1lbnQsIDAsCisJCQkgICBwY3h0 LT5ud29ya2VycyAqIHNpemVvZihUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb24pKTsKKwl9 CisKKwlub2RlLT50cnNzX3NpbnN0cnVtZW50ID0gc2luc3RydW1lbnQ7CiB9CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTQ4OSwxMCArNTUxLDQ4IEBAIHZvaWQKIEV4ZWNUaWRSYW5nZVNjYW5J bml0aWFsaXplV29ya2VyKFRpZFJhbmdlU2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgUGFy YWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IG5v ZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwljaGFy CSAgICpwdHI7CisJU2l6ZQkJc2l6ZTsKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdj eHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X3RpZHJhbmdlKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJCQkgIHBz Y2FuKTsKKworCS8qCisJICogV29ya2VycyBkb24ndCBnZXQgdGhlIHRyc3NfcHNjYW5sZW4g dmFsdWUgaW4gc2NhbiBkZXNjcmlwdG9yLCBzbyB1c2UKKwkgKiB0aGUgVEFNIGNhbGxiYWNr IGFnYWluLiBUaGUgcmVzdWx0IGhhcyB0byBtYXRjaCB0aGUgZWFybGllciByZXN1bHQgaW4K KwkgKiBFeGVjVGlkUmFuZ2VTY2FuRXN0aW1hdGUuCisJICovCisJc2l6ZSA9IHRhYmxlX3Bh cmFsbGVsc2Nhbl9lc3RpbWF0ZShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJ CQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwlwdHIgPSAoY2hhciAqKSBwc2NhbjsK KwlwdHIgKz0gTUFYQUxJR04oc2l6ZSk7CisKKwlpZiAobm9kZS0+c3MucHMuaW5zdHJ1bWVu dCkKKwkJbm9kZS0+dHJzc19zaW5zdHJ1bWVudCA9IChTaGFyZWRUaWRSYW5nZVNjYW5JbnN0 cnVtZW50YXRpb24gKikgcHRyOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJRXhlY1RpZFJh bmdlU2NhblJldHJpZXZlSW5zdHJ1bWVudGF0aW9uCisgKgorICoJCVRyYW5zZmVyIHNjYW4g c3RhdGlzdGljcyBmcm9tIERTTSB0byBwcml2YXRlIG1lbW9yeS4KKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLwordm9pZAorRXhlY1RpZFJhbmdlU2NhblJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFRp ZFJhbmdlU2NhblN0YXRlICpub2RlKQoreworCVNoYXJlZFRpZFJhbmdlU2Nhbkluc3RydW1l bnRhdGlvbiAqc2luc3RydW1lbnQgPSBub2RlLT50cnNzX3NpbnN0cnVtZW50OworCVNpemUJ CXNpemU7CisKKwlpZiAoc2luc3RydW1lbnQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJc2l6 ZSA9IG9mZnNldG9mKFNoYXJlZFRpZFJhbmdlU2Nhbkluc3RydW1lbnRhdGlvbiwgc2luc3Ry dW1lbnQpCisJCSsgc2luc3RydW1lbnQtPm51bV93b3JrZXJzICogc2l6ZW9mKFRpZFJhbmdl U2Nhbkluc3RydW1lbnRhdGlvbik7CisKKwlub2RlLT50cnNzX3NpbnN0cnVtZW50ID0gcGFs bG9jKHNpemUpOworCW1lbWNweShub2RlLT50cnNzX3NpbnN0cnVtZW50LCBzaW5zdHJ1bWVu dCwgc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVt ZW50X25vZGUuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCmlu ZGV4IGNlNjQzZWYwNjM1Li5iMzNiMjk2Y2UwMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudF9ub2RlLmgKQEAgLTk5LDYgKzk5LDE3IEBAIHR5cGVkZWYgc3RydWN0IFNo YXJlZFNlcVNjYW5JbnN0cnVtZW50YXRpb24KIAlTZXFTY2FuSW5zdHJ1bWVudGF0aW9uIHNp bnN0cnVtZW50W0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFNoYXJlZFNlcVNjYW5JbnN0 cnVtZW50YXRpb247CiAKK3R5cGVkZWYgc3RydWN0IFRpZFJhbmdlU2Nhbkluc3RydW1lbnRh dGlvbgoreworCUlPU3RhdHMJCWlvOworfSBUaWRSYW5nZVNjYW5JbnN0cnVtZW50YXRpb247 CisKK3R5cGVkZWYgc3RydWN0IFNoYXJlZFRpZFJhbmdlU2Nhbkluc3RydW1lbnRhdGlvbgor eworCWludAkJCW51bV93b3JrZXJzOworCVRpZFJhbmdlU2Nhbkluc3RydW1lbnRhdGlvbiBz aW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBTaGFyZWRUaWRSYW5nZVNj YW5JbnN0cnVtZW50YXRpb247CisKIHR5cGVkZWYgc3RydWN0IEluZGV4U2Nhbkluc3RydW1l bnRhdGlvbgogewogCS8qIEluZGV4IHNlYXJjaCBjb3VudCAoaW5jcmVtZW50ZWQgd2l0aCBw Z3N0YXRfY291bnRfaW5kZXhfc2NhbiBjYWxsKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVRpZHJhbmdlc2Nhbi5oCmluZGV4IDg3NTJkMWVhOGM0Li40ZjVkZDc0ZTBmYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uaApAQCAtMjcsNSArMjcs NiBAQCBleHRlcm4gdm9pZCBFeGVjVGlkUmFuZ2VTY2FuRXN0aW1hdGUoVGlkUmFuZ2VTY2Fu U3RhdGUgKm5vZGUsIFBhcmFsbGVsQ29udGV4dCAqcAogZXh0ZXJuIHZvaWQgRXhlY1RpZFJh bmdlU2NhbkluaXRpYWxpemVEU00oVGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUsIFBhcmFsbGVs Q29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBFeGVjVGlkUmFuZ2VTY2FuUmVJbml0aWFs aXplRFNNKFRpZFJhbmdlU2NhblN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQp OwogZXh0ZXJuIHZvaWQgRXhlY1RpZFJhbmdlU2NhbkluaXRpYWxpemVXb3JrZXIoVGlkUmFu Z2VTY2FuU3RhdGUgKm5vZGUsIFBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpOworZXh0 ZXJuIHZvaWQgRXhlY1RpZFJhbmdlU2NhblJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFRpZFJh bmdlU2NhblN0YXRlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJCS8qIE5PREVUSURSQU5HRVND QU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBmMjg3ZjhmYzgxMy4uNjExYTYy ODA5ODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xODk2LDYgKzE4OTYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBUaWRSYW5nZVNjYW5TdGF0ZQogCUl0ZW1Qb2ludGVyRGF0YSB0cnNz X21heHRpZDsKIAlib29sCQl0cnNzX2luU2NhbjsKIAlTaXplCQl0cnNzX3BzY2FubGVuOwor CVNoYXJlZFRpZFJhbmdlU2Nhbkluc3RydW1lbnRhdGlvbiAqdHJzc19zaW5zdHJ1bWVudDsK IH0gVGlkUmFuZ2VTY2FuU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNTMu MAoK --------------vSGELOV63zKPU0uxfVWRgz8W--