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 1w94rc-001AYK-0s for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 17:32:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w94ra-00HROg-2d for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 17:32:51 +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 1w94ra-00HRNw-0K for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 17:32:50 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w94rR-00000000axH-2uU3 for pgsql-hackers@postgresql.org; Sat, 04 Apr 2026 17:32:50 +0000 Received: from [10.0.2.15] (unknown [130.41.208.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4fp2jG1XZCz49Q5H; Sat, 04 Apr 2026 20:32:34 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775323956; 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=U4F0pNwwz4xioP1S/uUEZAd/Slk6vXvCEhuAV3Xo29Q=; b=m/A0kliQhOpDdUL2PtM47MoCH/ox9JWroRdnRjP5JxPtDeh3dc5f/RHtX1PLBNM+SNd8OV TDOF3DJ2VjVWxH3CHLNmp0qHSPS/DpT2lFaaJ3l56f+khXQcpySLSl82dzNefLiLW5Kust PPzhUiOud0b28TZD/74xEc7vghKgBMf7129LstmedWoPsfiYoFM3y2/zB7OAeugIfKbAtB flQsbWQXB8UGuwmeKMQesjsN0GJc0APIQtwuteZ8kMiqV0CKmmHbnNp4WNqIwm0bnEYyds ZuHM8Z1LQ8x+aUM6LcbTXBKohT21CADDXFktNSopb2XAk6deRNgYi6TFyLi1Ng== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1775323956; b=vbGkX0/dEnCxcVo1DvmBbIgE0KI46/w6mupSU1bIMI/3sDYqvuNPhm7fwEvAy+/ey6Tvjo OSQQmYwT0Ec9AL0uwxaTKDuC5XQFeuyRMhXx2tv3yEHC3OQsrrBIuqf/Ot6WZoT0ntdngp d+3D5fWdBsGfFCE16cQ3tWAThSYmngFngN7fCoYtcbFMZRvHvynFZ56PpV/gNqomt7YvY7 gSTpGWmshKxRiFBBRVT/sOpcNFmlwq1JUUU1ubA6tPyYNfteP+skZUVj86odWBYX5oD1v4 fnfP24GoZ86hB8qW/+IfvfTPTnKi95IZhUYkKz6zcXEtW0qUS6N2b4bFtSp+3A== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775323956; 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=U4F0pNwwz4xioP1S/uUEZAd/Slk6vXvCEhuAV3Xo29Q=; b=fmIqrGUgTVhNchIjWWvhRPD3wDhsgHjtpm38P3flqMf5t06luCxYAc1Ko0oUQN6AkUw5JJ Dz73UZpAyOpn72AFrvKctfo8Bc4VT8dsDjFKE53rmjTYMmLRAgxqTOYnRDK+Eb1u88iQnH 4v9UcgPwycPy2545SzOxQxO7SYgv3eIArtZJNL1IsAzzHfRXkrmEw0GRo9Kl1d8WSK1BjM 0JwJ0MelFimLCnICdVHuGhtX2Bqe40pVQd/dYXOhg+r++DVdkLAILprGXMjCI4Qa10iRts MUge1Lv8ijqKwle3gPPurUfFi23A3GDeDJ8pisVoubhKL6a8qaivWmDIxYtM7w== Content-Type: multipart/mixed; boundary="------------hsUfGDn10Nt9SeydxgvmbEbZ" Message-ID: <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> Date: Sat, 4 Apr 2026 20:32:33 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Better shared data structure management and resizable shared data structures To: Matthias van de Meent Cc: Ashutosh Bapat , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com References: <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: 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. --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 04/04/2026 15:00, Matthias van de Meent wrote: > On Sat, 4 Apr 2026 at 02:45, Heikki Linnakangas wrote: >>>> I don't understand the use of ShmemStructDesc. They generally/always >>>> are private to request_fn(), and their fields are used exclusively >>>> inside the shmem mechanisms, with no reads of its fields that can't >>>> already be deduced from context. Why do we need that struct >>>> everywhere? >>> >>> My resizable shared memory structure patches use it as a handle to the >>> structure to be resized. >> >> Right. And hash tables and SLRUs use a desc-like object already, so for >> symmetry it feels natural to have it for plain structs too. >> I wonder if we should make it optional though, for the common case that >> you have no intention of doing anything more with the shmem region that >> you'd need a desc for. I'm thinking you could just pass NULL for the >> desc pointer: >> >> ShmemRequestStruct(NULL, >> .name = "pg_stat_statements", >> .size = sizeof(pgssSharedState), >> .ptr = (void **) &pgss, >> }; > > That would help, though I'd still wonder why we'd have separate Opts > and Desc structs. IIUC, they generally carry (exactly) the same data. > > Maybe moving it into a `.handle` or `.desc` field in Shmem*Opts could > make that part of the code a bit cleaner; as it'd further clarify that > it's very much an optional field. Yeah. OTOH, I'd like to separate the options from what's effectively a return value. But maybe you're right and it's nevertheless better that way. Some options on this: a) What's in the patch now static ShmemStructDesc pgssSharedStateDesc; ShmemRequestStruct(&pgssSharedStateDesc, .name = "pg_stat_statements", .size = sizeof(pgssSharedState), .ptr = (void **) &pgss); b) Allow passing NULL for the desc ShmemRequestStruct(NULL, .name = "pg_stat_statements", .size = sizeof(pgssSharedState), .ptr = (void **) &pgss); c) Return the Desc as a return value static ShmemStructDesc *pgssSharedStateDesc; pgssSharedStateDesc = ShmemRequestStruct(.name = "pg_stat_statements", .size = sizeof(pgssSharedState), .ptr = (void **) &pgss); In option c) you can just throw away the result if you don't need it. I kind of like this as a notational thing. However it has some downsides: This changes the return value to be a pointer. I'm thinking that ShmemRequestStruct() palloc's the descriptor struct in TopMemoryContext. This is a little ugly because the descriptor struct is leaked if the caller throws it away. It's not a lot of memory, but still. I'm also not sure how well this fits in with the SLRU code. On 'master', you already have SlruCtlData which is like the "desc" struct. Would we turn that into a pointer too, adding one indirection to all the SLRU calls. It's probably fine from a performance point of view, but it feels like it's going in the wrong direction. d) Make it part of Opts, as you suggested static ShmemStructDesc pgssSharedStateDesc; ShmemRequestStruct(.name = "pg_stat_statements", .size = sizeof(pgssSharedState), .ptr = (void **) &pgss, .desc = &pgssSharedStateDesc); In the attached new version, though, I stepped back and decided to remove the whole ShmemStructDesc after all. I still think having a handle like that is a good idea, and the follow-up patches for resizing need it. However, with option d) it can easily be added later. With option d), it seems silly to have it be part of the patch now, when the desc struct doesn't really do anything. SLRU's still have a similar SlruDesc struct, however. For SLRUs it's essentially the same as the old SlruCtlData struct before these patches. The Desc structs were being used for one thing though: I used the 'size' from the Desc struct in ProcGlobalShmemInit() to get the allocated size of each shmem area. The size computation there is complicated enough that I'd rather not repeat it, and avoiding the repeated size calculation was the raison d'ĂȘtre for these patches. I replaced it with global variables to hold the sizes from the ShmemRequest() step to ShmemInit(). But that would be one case where having the desc would already be useful. Then again, I'm not sure we want to expose the 'size' in the descriptor like that anyway, because as soon as we make shmem regions resizable, we might not be able to keep the size in the descriptor up-to-date. The size of these structs won't change, but we might not want to expose the information because it would be confusing for other structs where it can change to show outdated information. On a related note, when we add back the ".desc" concept later, is ".desc" a good name, or ".handle" as you also suggested? More widely, do we call the concept and the struct a "handle" or "descriptor" or what? Or if we follow the precedence with the existing SlruCtlData struct, it could be ".ctl". I'm not a fan of the "Ctl" naming though, because we already have a lot of structs with "Ctl" in the name and it's not always clear whether a "Ctl" struct refers to the shared memory parts or the handle to it. Now that the "desc" structs are not part of these patches anymore, however, we can punt on that decision. On 02/04/2026 09:58, Ashutosh Bapat wrote: >> >> I renamed it to AttachOrInitShmemIndexEntry, and the args to 'may_init' >> and 'may_attach'. But more importantly I added comments to explain the >> different usages. Hope that helps.. > > The explanation in the prologue looks good. But the function is still > confusing. Instead of if ... else fi ... chain, I feel organizing this > as below would make it more readable. (this was part of one of my > earlier edit patches). > if (found) > ... > else > { > if (!may_init) > error > if (!index_entry) > error > > ... rest of the code to initialize and attach > } > > But other than that I don't have any other brilliant ideas. I did another refactoring in this area: I split AttachOrInitShmemIndexEntry() into separate AttachShmemIndexEntry() and InitShmemIndexEntry functions again. There's a little bit of repetition that way, but IMO it makes it much clearer overall. Other changes in this patch version: - I moved some of the stuff from shmem.h to a new shmem_internal.h header. The idea is that what remains in shmem.h provides the public API for allocating shared memory. - I refactored the "after-startup request" code. It now detects the case that some of the shmem areas, but not all, have already been initialized and throws an error. Still processing the rest of the feedback from the past days. This patch version is also available at https://github.com/hlinnaka/postgres/tree/shmem-init-refactor-11. - Heikki --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0001-refactor-Move-ShmemInitHash-to-separate-file.patch" Content-Disposition: attachment; filename*0="v11-0001-refactor-Move-ShmemInitHash-to-separate-file.patch" Content-Transfer-Encoding: base64 RnJvbSAyYjU1ZjAwOWYyNjA1NjVkMjg1ZjE0OWJkNzlmYTcxNzM2ZDBiZWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTM6MDc6MjggKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAwMS8xNF0gcmVmYWN0b3I6IE1vdmUgU2htZW1Jbml0SGFz aCB0byBzZXBhcmF0ZSBmaWxlCgpJbiBwcmVwYXJhdGlvbiBmb3IgbmV4dCBjb21taXRzCi0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jICAgICAgfCAxMDggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jIHwgMTMwICsrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAg IHwgICA5ICstCiA1IGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxMTAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW1faGFzaC5jCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFr ZWZpbGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQppbmRleCA5YTA3ZjZl MWQ5Mi4uZjcxNjUzYmJlNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCkBAIC0y Miw2ICsyMiw3IEBAIE9CSlMgPSBcCiAJc2htX21xLm8gXAogCXNobV90b2MubyBcCiAJc2ht ZW0ubyBcCisJc2htZW1faGFzaC5vIFwKIAlzaWduYWxmdW5jcy5vIFwKIAlzaW52YWwubyBc CiAJc2ludmFsYWR0Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv bWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZAppbmRl eCA5YzFjYTk1NGQ5ZC4uYjhjMzFlMjk5NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21l c29uLmJ1aWxkCkBAIC0xNCw2ICsxNCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK ICAgJ3NobV9tcS5jJywKICAgJ3NobV90b2MuYycsCiAgICdzaG1lbS5jJywKKyAgJ3NobWVt X2hhc2guYycsCiAgICdzaWduYWxmdW5jcy5jJywKICAgJ3NpbnZhbC5jJywKICAgJ3NpbnZh bGFkdC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDNjYjUxYWQ2MmY4Li5j OTk0Zjc2NzRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0u YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC05Niw5ICs5Niw2 IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtQWxsb2NhdG9yRGF0YQogCiAjZGVmaW5lIFNobWVt SW5kZXhMb2NrICgmU2htZW1BbGxvY2F0b3ItPmluZGV4X2xvY2spCiAKLXN0YXRpYyBIVEFC ICpzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNpemUsIGJvb2wg Zm91bmQsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLCBIQVNI Q1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpOwotc3RhdGljIHZvaWQgKlNobWVtSGFzaEFs bG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKTsKIHN0YXRpYyB2b2lkICpTaG1lbUFs bG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwogCiAvKiBzaGFyZWQg bWVtb3J5IGdsb2JhbCB2YXJpYWJsZXMgKi8KQEAgLTI1NywyOSArMjU0LDYgQEAgU2htZW1B bGxvY05vRXJyb3IoU2l6ZSBzaXplKQogCXJldHVybiBTaG1lbUFsbG9jUmF3KHNpemUsICZh bGxvY2F0ZWRfc2l6ZSk7CiB9CiAKLS8qCi0gKiBTaG1lbUhhc2hBbGxvYyAtLSBhbGxvYyBj YWxsYmFjayBmb3Igc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcwotICoKLSAqIENhcnZlIG91 dCB0aGUgYWxsb2NhdGlvbiBmcm9tIGEgcHJlLWFsbG9jYXRlZCByZWdpb24uICBBbGwgc2hh cmVkIG1lbW9yeQotICogaGFzaCB0YWJsZXMgYXJlIGluaXRpYWxpemVkIHdpdGggSEFTSF9G SVhFRF9TSVpFLCBzbyBhbGwgdGhlIGFsbG9jYXRpb25zCi0gKiBoYXBwZW4gdXBmcm9udCBk dXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIG5vIGxvY2tpbmcgaXMgcmVxdWlyZWQuCi0gKi8K LXN0YXRpYyB2b2lkICoKLVNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2Nf YXJnKQotewotCXNobWVtX2hhc2hfYWxsb2NhdG9yICphbGxvY2F0b3IgPSAoc2htZW1faGFz aF9hbGxvY2F0b3IgKikgYWxsb2NfYXJnOwotCXZvaWQJICAgKnJlc3VsdDsKLQotCXNpemUg PSBNQVhBTElHTihzaXplKTsKLQotCWlmIChhbGxvY2F0b3ItPmVuZCAtIGFsbG9jYXRvci0+ bmV4dCA8IHNpemUpCi0JCXJldHVybiBOVUxMOwotCXJlc3VsdCA9IGFsbG9jYXRvci0+bmV4 dDsKLQlhbGxvY2F0b3ItPm5leHQgKz0gc2l6ZTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0K IC8qCiAgKiBTaG1lbUFsbG9jUmF3IC0tIGFsbG9jYXRlIGFsaWduIGNodW5rIGFuZCByZXR1 cm4gYWxsb2NhdGVkIHNpemUKICAqCkBAIC0zNDEsODggKzMxNSw2IEBAIFNobWVtQWRkcklz VmFsaWQoY29uc3Qgdm9pZCAqYWRkcikKIAlyZXR1cm4gKGFkZHIgPj0gU2htZW1CYXNlKSAm JiAoYWRkciA8IFNobWVtRW5kKTsKIH0KIAotLyoKLSAqIFNobWVtSW5pdEhhc2ggLS0gQ3Jl YXRlIGFuZCBpbml0aWFsaXplLCBvciBhdHRhY2ggdG8sIGEKLSAqCQlzaGFyZWQgbWVtb3J5 IGhhc2ggdGFibGUuCi0gKgotICogV2UgYXNzdW1lIGNhbGxlciBpcyBkb2luZyBzb21lIGtp bmQgb2Ygc3luY2hyb25pemF0aW9uCi0gKiBzbyB0aGF0IHR3byBwcm9jZXNzZXMgZG9uJ3Qg dHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRoZSBzYW1lCi0gKiB0YWJsZSBhdCBvbmNlLiAg KEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFyZSBkb25lIGluIHRoZSBwb3N0bWFzdGVy Ci0gKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hvdWxkIGFsd2F5cyBiZSBhdHRhY2hp bmcgdG8gZXhpc3RpbmcgdGFibGVzLikKLSAqCi0gKiBuZWxlbXMgaXMgdGhlIG1heGltdW0g bnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzLgotICoKLSAqICppbmZvUCBhbmQgaGFzaF9m bGFncyBtdXN0IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVzIGFuZCBrZXkKLSAq IGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBGbGFnIGJpdHMg YW5kIHZhbHVlcyBzcGVjaWZpYwotICogdG8gc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcyBh cmUgYWRkZWQgaGVyZSwgZXhjZXB0IHRoYXQgY2FsbGVycyBtYXkKLSAqIGNob29zZSB0byBz cGVjaWZ5IEhBU0hfUEFSVElUSU9OLgotICoKLSAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5 LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCBmb3Igc29tZSBmYWlsdXJlCi0gKiBj YXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBlcnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJz IG5lZWQgbm90IGNoZWNrCi0gKiBmb3IgTlVMTC4KLSAqLwotSFRBQiAqCi1TaG1lbUluaXRI YXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcgbmFtZSBmb3Igc2htZW0g aW5kZXggKi8KLQkJCSAgaW50NjQgbmVsZW1zLAkJLyogc2l6ZSBvZiB0aGUgdGFibGUgKi8K LQkJCSAgSEFTSENUTCAqaW5mb1AsCS8qIGluZm8gYWJvdXQga2V5IGFuZCBidWNrZXQgc2l6 ZSAqLwotCQkJICBpbnQgaGFzaF9mbGFncykJLyogaW5mbyBhYm91dCBpbmZvUCAqLwotewot CWJvb2wJCWZvdW5kOwotCXNpemVfdAkJc2l6ZTsKLQl2b2lkCSAgICpsb2NhdGlvbjsKLQot CXNpemUgPSBoYXNoX2VzdGltYXRlX3NpemUobmVsZW1zLCBpbmZvUC0+ZW50cnlzaXplKTsK LQotCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlICovCi0J bG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFtZSwgc2l6ZSwgJmZvdW5kKTsKLQotCXJl dHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwgc2l6ZSwgZm91bmQsCi0JCQkJCQkJ IG5hbWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOwotfQotCi0vKgotICogSW5pdGlh bGl6ZSBvciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBpbiB0aGUgZ2l2ZW4gc2ht ZW0gcmVnaW9uLgotICoKLSAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20gU2htZW1Jbml0SGFz aCgpIHRvIGFsbG93IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCi0gKiBzaGFyZSB0aGUgbG9n aWMgZm9yIGJvb3RzdHJhcHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4KLSAqLwot c3RhdGljIEhUQUIgKgotc2htZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVf dCBzaXplLCBib29sIGZvdW5kLAotCQkJCSAgY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVs ZW1zLCBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpCi17Ci0Jc2htZW1faGFzaF9h bGxvY2F0b3IgYWxsb2NhdG9yOwotCi0JLyoKLQkgKiBIYXNoIHRhYmxlcyBhbGxvY2F0ZWQg aW4gc2hhcmVkIG1lbW9yeSBoYXZlIGEgZml4ZWQgZGlyZWN0b3J5IGFuZCBoYXZlCi0JICog YWxsIGVsZW1lbnRzIGFsbG9jYXRlZCB1cGZyb250LiAgV2UgZG9uJ3Qgc3VwcG9ydCBncm93 aW5nIGJlY2F1c2Ugd2UnZAotCSAqIG5lZWQgdG8gZ3JvdyB0aGUgdW5kZXJseWluZyBzaG1l bSByZWdpb24gd2l0aCBpdC4KLQkgKgotCSAqIFRoZSBzaGFyZWQgbWVtb3J5IGFsbG9jYXRv ciBtdXN0IGJlIHNwZWNpZmllZCB0b28uCi0JICovCi0JaW5mb1AtPmFsbG9jID0gU2htZW1I YXNoQWxsb2M7Ci0JaW5mb1AtPmFsbG9jX2FyZyA9IE5VTEw7Ci0JaGFzaF9mbGFncyB8PSBI QVNIX1NIQVJFRF9NRU0gfCBIQVNIX0FMTE9DIHwgSEFTSF9GSVhFRF9TSVpFOwotCi0JLyoK LQkgKiBpZiBpdCBhbHJlYWR5IGV4aXN0cywgYXR0YWNoIHRvIGl0IHJhdGhlciB0aGFuIGFs bG9jYXRlIGFuZCBpbml0aWFsaXplCi0JICogbmV3IHNwYWNlCi0JICovCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCWFsbG9jYXRvci5uZXh0ID0gKGNoYXIgKikgbG9jYXRpb247Ci0JCWFsbG9j YXRvci5lbmQgPSAoY2hhciAqKSBsb2NhdGlvbiArIHNpemU7Ci0JCWluZm9QLT5hbGxvY19h cmcgPSAmYWxsb2NhdG9yOwotCX0KLQllbHNlCi0JewotCQkvKiBQYXNzIGxvY2F0aW9uIG9m IGhhc2h0YWJsZSBoZWFkZXIgdG8gaGFzaF9jcmVhdGUgKi8KLQkJaW5mb1AtPmhjdGwgPSAo SEFTSEhEUiAqKSBsb2NhdGlvbjsKLQkJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKLQl9 Ci0KLQlyZXR1cm4gaGFzaF9jcmVhdGUobmFtZSwgbmVsZW1zLCBpbmZvUCwgaGFzaF9mbGFn cyk7Ci19Ci0KIC8qCiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBh IHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtX2hhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MGIwNTczMDEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbV9oYXNoLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHNobWVtX2hhc2guYworICoJICBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9u IGluIHNoYXJlZCBtZW1vcnkKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogQSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgaW1wbGVtZW50YXRp b24gb24gdG9wIG9mIHRoZSBuYW1lZCwgZml4ZWQtc2l6ZQorICogc2hhcmVkIG1lbW9yeSBh cmVhcyBtYW5hZ2VkIGJ5IHNobWVtLmMuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4 aW11bQorICogc2l6ZSwgYnV0IHRoZWlyIGFjdHVhbCBzaXplIGNhbiB2YXJ5IGR5bmFtaWNh bGx5LiAgV2hlbiBlbnRyaWVzIGFyZSBhZGRlZAorICogdG8gdGhlIHRhYmxlLCBtb3JlIHNw YWNlIGlzIGFsbG9jYXRlZC4gIEVhY2ggc2hhcmVkIGRhdGEgc3RydWN0dXJlIGFuZCBoYXNo CisgKiBoYXMgYSBzdHJpbmcgbmFtZSB0byBpZGVudGlmeSBpdC4KKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKworc3RhdGljIHZvaWQgKlNobWVtSGFz aEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKTsKKworLyoKKyAqIFNobWVtSW5p dEhhc2ggLS0gQ3JlYXRlIGFuZCBpbml0aWFsaXplLCBvciBhdHRhY2ggdG8sIGEKKyAqCQlz aGFyZWQgbWVtb3J5IGhhc2ggdGFibGUuCisgKgorICogV2UgYXNzdW1lIGNhbGxlciBpcyBk b2luZyBzb21lIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uCisgKiBzbyB0aGF0IHR3byBwcm9j ZXNzZXMgZG9uJ3QgdHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRoZSBzYW1lCisgKiB0YWJs ZSBhdCBvbmNlLiAgKEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFyZSBkb25lIGluIHRo ZSBwb3N0bWFzdGVyCisgKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hvdWxkIGFsd2F5 cyBiZSBhdHRhY2hpbmcgdG8gZXhpc3RpbmcgdGFibGVzLikKKyAqCisgKiBuZWxlbXMgaXMg dGhlIG1heGltdW0gbnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzLgorICoKKyAqICppbmZv UCBhbmQgaGFzaF9mbGFncyBtdXN0IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVz IGFuZCBrZXkKKyAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSku ICBGbGFnIGJpdHMgYW5kIHZhbHVlcyBzcGVjaWZpYworICogdG8gc2hhcmVkLW1lbW9yeSBo YXNoIHRhYmxlcyBhcmUgYWRkZWQgaGVyZSwgZXhjZXB0IHRoYXQgY2FsbGVycyBtYXkKKyAq IGNob29zZSB0byBzcGVjaWZ5IEhBU0hfUEFSVElUSU9OLgorICoKKyAqIE5vdGU6IGJlZm9y ZSBQb3N0Z3JlcyA5LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCBmb3Igc29tZSBm YWlsdXJlCisgKiBjYXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBlcnJvciBpbnN0ZWFk LCBzbyBjYWxsZXJzIG5lZWQgbm90IGNoZWNrCisgKiBmb3IgTlVMTC4KKyAqLworSFRBQiAq CitTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcgbmFt ZSBmb3Igc2htZW0gaW5kZXggKi8KKwkJCSAgaW50NjQgbmVsZW1zLAkJLyogc2l6ZSBvZiB0 aGUgdGFibGUgKi8KKwkJCSAgSEFTSENUTCAqaW5mb1AsCS8qIGluZm8gYWJvdXQga2V5IGFu ZCBidWNrZXQgc2l6ZSAqLworCQkJICBpbnQgaGFzaF9mbGFncykJLyogaW5mbyBhYm91dCBp bmZvUCAqLworeworCWJvb2wJCWZvdW5kOworCXNpemVfdAkJc2l6ZTsKKwl2b2lkCSAgICps b2NhdGlvbjsKKworCXNpemUgPSBoYXNoX2VzdGltYXRlX3NpemUobmVsZW1zLCBpbmZvUC0+ ZW50cnlzaXplKTsKKworCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFs bG9jYXRlICovCisJbG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFtZSwgc2l6ZSwgJmZv dW5kKTsKKworCXJldHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwgc2l6ZSwgZm91 bmQsCisJCQkJCQkJIG5hbWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOworfQorCisv KgorICogSW5pdGlhbGl6ZSBvciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBpbiB0 aGUgZ2l2ZW4gc2htZW0gcmVnaW9uLgorICoKKyAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20g U2htZW1Jbml0SGFzaCgpIHRvIGFsbG93IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCisgKiBz aGFyZSB0aGUgbG9naWMgZm9yIGJvb3RzdHJhcHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0 YWJsZS4KKyAqLworSFRBQiAqCitzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwg c2l6ZV90IHNpemUsIGJvb2wgZm91bmQsCisJCQkJICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2 NCBuZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncykKK3sKKwlzaG1lbV9o YXNoX2FsbG9jYXRvciBhbGxvY2F0b3I7CisKKwkvKgorCSAqIEhhc2ggdGFibGVzIGFsbG9j YXRlZCBpbiBzaGFyZWQgbWVtb3J5IGhhdmUgYSBmaXhlZCBkaXJlY3RvcnkgYW5kIGhhdmUK KwkgKiBhbGwgZWxlbWVudHMgYWxsb2NhdGVkIHVwZnJvbnQuICBXZSBkb24ndCBzdXBwb3J0 IGdyb3dpbmcgYmVjYXVzZSB3ZSdkCisJICogbmVlZCB0byBncm93IHRoZSB1bmRlcmx5aW5n IHNobWVtIHJlZ2lvbiB3aXRoIGl0LgorCSAqCisJICogVGhlIHNoYXJlZCBtZW1vcnkgYWxs b2NhdG9yIG11c3QgYmUgc3BlY2lmaWVkIHRvby4KKwkgKi8KKwlpbmZvUC0+YWxsb2MgPSBT aG1lbUhhc2hBbGxvYzsKKwlpbmZvUC0+YWxsb2NfYXJnID0gTlVMTDsKKwloYXNoX2ZsYWdz IHw9IEhBU0hfU0hBUkVEX01FTSB8IEhBU0hfQUxMT0MgfCBIQVNIX0ZJWEVEX1NJWkU7CisK KwkvKgorCSAqIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBhdHRhY2ggdG8gaXQgcmF0aGVyIHRo YW4gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUKKwkgKiBuZXcgc3BhY2UKKwkgKi8KKwlpZiAo IWZvdW5kKQorCXsKKwkJYWxsb2NhdG9yLm5leHQgPSAoY2hhciAqKSBsb2NhdGlvbjsKKwkJ YWxsb2NhdG9yLmVuZCA9IChjaGFyICopIGxvY2F0aW9uICsgc2l6ZTsKKwkJaW5mb1AtPmFs bG9jX2FyZyA9ICZhbGxvY2F0b3I7CisJfQorCWVsc2UKKwl7CisJCS8qIFBhc3MgbG9jYXRp b24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLworCQlpbmZvUC0+aGN0 bCA9IChIQVNISERSICopIGxvY2F0aW9uOworCQloYXNoX2ZsYWdzIHw9IEhBU0hfQVRUQUNI OworCX0KKworCXJldHVybiBoYXNoX2NyZWF0ZShuYW1lLCBuZWxlbXMsIGluZm9QLCBoYXNo X2ZsYWdzKTsKK30KKworLyoKKyAqIFNobWVtSGFzaEFsbG9jIC0tIGFsbG9jIGNhbGxiYWNr IGZvciBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzCisgKgorICogQ2FydmUgb3V0IHRoZSBh bGxvY2F0aW9uIGZyb20gYSBwcmUtYWxsb2NhdGVkIHJlZ2lvbi4gIEFsbCBzaGFyZWQgbWVt b3J5CisgKiBoYXNoIHRhYmxlcyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBIQVNIX0ZJWEVEX1NJ WkUsIHNvIGFsbCB0aGUgYWxsb2NhdGlvbnMKKyAqIGhhcHBlbiB1cGZyb250IGR1cmluZyBp bml0aWFsaXphdGlvbiBhbmQgbm8gbG9ja2luZyBpcyByZXF1aXJlZC4KKyAqLworc3RhdGlj IHZvaWQgKgorU2htZW1IYXNoQWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpCit7 CisJc2htZW1faGFzaF9hbGxvY2F0b3IgKmFsbG9jYXRvciA9IChzaG1lbV9oYXNoX2FsbG9j YXRvciAqKSBhbGxvY19hcmc7CisJdm9pZAkgICAqcmVzdWx0OworCisJc2l6ZSA9IE1BWEFM SUdOKHNpemUpOworCisJaWYgKGFsbG9jYXRvci0+ZW5kIC0gYWxsb2NhdG9yLT5uZXh0IDwg c2l6ZSkKKwkJcmV0dXJuIE5VTEw7CisJcmVzdWx0ID0gYWxsb2NhdG9yLT5uZXh0OworCWFs bG9jYXRvci0+bmV4dCArPSBzaXplOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaAppbmRleCBhMmViNDk5ZDYzYy4uODJmNTQwM2M5NTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3No bWVtLmgKQEAgLTMwLDE1ICszMCwyMCBAQCB0eXBlZGVmIHN0cnVjdCBQR1NobWVtSGVhZGVy IFBHU2htZW1IZWFkZXI7IC8qIGF2b2lkIGluY2x1ZGluZwogZXh0ZXJuIHZvaWQgSW5pdFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CiBleHRlcm4gdm9pZCAqU2ht ZW1BbGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNp emUgc2l6ZSk7CitleHRlcm4gdm9pZCAqU2htZW1IYXNoQWxsb2MoU2l6ZSBzaXplLCB2b2lk ICphbGxvY19hcmcpOwogZXh0ZXJuIGJvb2wgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lk ICphZGRyKTsKLWV4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUs IGludDY0IG5lbGVtcywKLQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFn cyk7CiBleHRlcm4gdm9pZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNp emUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpOwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBz MSwgU2l6ZSBzMik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsK IAogZXh0ZXJuIFBHRExMSU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQp OwogCisvKiBzaG1lbV9oYXNoLmMgKi8KK2V4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNv bnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywKKwkJCQkJCSAgIEhBU0hDVEwgKmluZm9Q LCBpbnQgaGFzaF9mbGFncyk7CitleHRlcm4gSFRBQiAqc2htZW1faGFzaF9jcmVhdGUodm9p ZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAorCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2Zs YWdzKQorCiAvKiBpcGNpLmMgKi8KIGV4dGVybiB2b2lkIFJlcXVlc3RBZGRpblNobWVtU3Bh Y2UoU2l6ZSBzaXplKTsKIAotLSAKMi40Ny4zCgo= --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0002-Introduce-a-new-mechanism-for-registering-shared.patch" Content-Disposition: attachment; filename*0="v11-0002-Introduce-a-new-mechanism-for-registering-shared.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5NjcyZTEwNjFiZTM0ZGYzZmQxOTBiMjVjYzBhMTViODA2YWYwMDQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMDowMTozOSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDAyLzE0XSBJbnRyb2R1Y2UgYSBuZXcgbWVjaGFuaXNtIGZv ciByZWdpc3RlcmluZyBzaGFyZWQKIG1lbW9yeSBhcmVhcwoKVGhpcyBtZXJnZXMgdGhlIHNl cGFyYXRlIFtTdWJzeXN0ZW1dU2htZW1TaXplKCkgYW5kCltTdWJzeXN0ZW1dU2htZW1Jbml0 KCkgcGhhc2VzIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cC4gRWFjaCBzdWJzeXN0ZW0gaXMKbm93 IGNhbGxlZCBpbnRvIGp1c3Qgb25jZSwgYmVmb3JlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21l bnQgaGFzIGJlZW4KYWxsb2NhdGVkLCB0byByZWdpc3RlciBvciAicmVxdWVzdCIgdGhlIHN1 YnN5c3RlbSdzIHNoYXJlZCBtZW1vcnkKbmVlZHMuIFRoaXMgaXMgbW9yZSBlcmdvbm9taWMs IGFzIHlvdSBvbmx5IG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplCm9uY2UuCgpUaGlzIHJl cGxhY2VzIFNobWVtSW5pdFN0cnVjdCgpIGFuZCBTaG1lbUluaXRIYXNoKCksIHdoaWNoIGJl Y29tZSBqdXN0CmJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHdyYXBwZXJzIGFyb3VuZCB0aGUg bmV3IGZ1bmN0aW9ucy4gSW4gZnV0dXJlCmNvbW1pdHMsIEkgcGxhbiB0byByZXBsYWNlIGFs bCBTaG1lbUluaXRTdHJ1Y3QoKSBhbmQgU2htZW1Jbml0SGFzaCgpCmNhbGxzIHdpdGggdGhl IG5ldyBmdW5jdGlvbnMsIGFsdGhvdWdoIHdlJ2xsIHN0aWxsIG5lZWQgdG8ga2VlcCB0aGVt CmFyb3VuZCBmb3IgZXh0ZW5zaW9ucy4KClJldmlld2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8 YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJh Z2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFh cyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1c3RhZnNz b24gPGRhbmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01MlVpSjN6NHZLZDNB SjcyWDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21s ICAgICAgICAgICAgICAgICB8IDE2MiArKystLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jv b3RzdHJhcC5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNo X2JhY2tlbmQuYyB8ICAgNSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu YyAgICAgfCAgMTkgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAg ICB8ICAzMCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgIHwg ODMyICsrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW1faGFzaC5jICAgIHwgIDg2ICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYyAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAg ICAgIHwgMTgzICsrKysrLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5o ICAgIHwgIDUyICsrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAg fCAgIDkgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDExOTAgaW5zZXJ0aW9ucygrKSwgMjA3IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ht ZW1faW50ZXJuYWwuaAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA5ZWUxYTJiZmM2 YS4uMmViZWM2OTI4ZDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNTQsOCAr NDI1NCw4IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBh cmVkX3hhY3RzIHBweAogICA8cGFyYT4KICAgIEFub255bW91cyBhbGxvY2F0aW9ucyBhcmUg YWxsb2NhdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFkZQogICAgd2l0aCA8bGl0ZXJhbD5TaG1l bUFsbG9jKCk8L2xpdGVyYWw+IGRpcmVjdGx5LCByYXRoZXIgdGhhbiB2aWEKLSAgIDxsaXRl cmFsPlNobWVtSW5pdFN0cnVjdCgpPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+U2htZW1J bml0SGFzaCgpPC9saXRlcmFsPi4KKyAgIDxsaXRlcmFsPlNobWVtUmVxdWVzdFN0cnVjdCgp PC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+U2htZW1SZXF1ZXN0SGFzaCgpPC9saXRlcmFs Pi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hm dW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbAppbmRleCA3MGU4MTViOGEyYy4u YWVkM2YyZjAwNzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNjI4LDcxICszNjI4LDEzMiBAQCBDUkVB VEUgRlVOQ1RJT04gbWFrZV9hcnJheShhbnllbGVtZW50KSBSRVRVUk5TIGFueWFycmF5CiAg ICAgICBBZGQtaW5zIGNhbiByZXNlcnZlIHNoYXJlZCBtZW1vcnkgb24gc2VydmVyIHN0YXJ0 dXAuICBUbyBkbyBzbywgdGhlCiAgICAgICBhZGQtaW4ncyBzaGFyZWQgbGlicmFyeSBtdXN0 IGJlIHByZWxvYWRlZCBieSBzcGVjaWZ5aW5nIGl0IGluCiAgICAgICA8eHJlZiBsaW5rZW5k PSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVzIi8+PGluZGV4dGVybT48cHJpbWFyeT5z aGFyZWRfcHJlbG9hZF9saWJyYXJpZXM8L3ByaW1hcnk+PC9pbmRleHRlcm0+LgotICAgICAg VGhlIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBhbHNvIHJlZ2lzdGVyIGEKLSAgICAgIDxsaXRl cmFsPnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gaW4gaXRzCi0gICAgICA8ZnVuY3Rp b24+X1BHX2luaXQ8L2Z1bmN0aW9uPiBmdW5jdGlvbi4gIFRoaXMKLSAgICAgIDxsaXRlcmFs PnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gY2FuIHJlc2VydmUgc2hhcmVkIG1lbW9y eSBieQotICAgICAgY2FsbGluZzoKKyAgICAgIFRoZSBzaGFyZWQgbGlicmFyeSBzaG91bGQg cmVnaXN0ZXIgY2FsbGJhY2tzIGluCisgICAgICBpdHMgPGZ1bmN0aW9uPl9QR19pbml0PC9m dW5jdGlvbj4gZnVuY3Rpb24sIHdoaWNoIHRoZW4gZ2V0IGNhbGxlZCBhdCB0aGUKKyAgICAg IHJpZ2h0IHN0YWdlcyBvZiB0aGUgc3lzdGVtIHN0YXJ0dXAgdG8gaW5pdGlhbGl6ZSB0aGUg c2hhcmVkIG1lbW9yeS4KKyAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKIDxwcm9ncmFtbGlz dGluZz4KLXZvaWQgUmVxdWVzdEFkZGluU2htZW1TcGFjZShTaXplIHNpemUpCi08L3Byb2dy YW1saXN0aW5nPgotICAgICAgRWFjaCBiYWNrZW5kIHNob3VsZCBvYnRhaW4gYSBwb2ludGVy IHRvIHRoZSByZXNlcnZlZCBzaGFyZWQgbWVtb3J5IGJ5Ci0gICAgICBjYWxsaW5nOgotPHBy b2dyYW1saXN0aW5nPgotdm9pZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUs IFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCi08L3Byb2dyYW1saXN0aW5nPgotICAgICAg SWYgdGhpcyBmdW5jdGlvbiBzZXRzIDxsaXRlcmFsPmZvdW5kUHRyPC9saXRlcmFsPiB0bwot ICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCB0aGUgY2FsbGVyIHNob3VsZCBwcm9j ZWVkIHRvIGluaXRpYWxpemUgdGhlCi0gICAgICBjb250ZW50cyBvZiB0aGUgcmVzZXJ2ZWQg c2hhcmVkIG1lbW9yeS4gIElmIDxsaXRlcmFsPmZvdW5kUHRyPC9saXRlcmFsPgotICAgICAg aXMgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgc2hhcmVkIG1lbW9yeSB3 YXMgYWxyZWFkeQotICAgICAgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciBiYWNrZW5kLCBhbmQg dGhlIGNhbGxlciBuZWVkIG5vdCBpbml0aWFsaXplCi0gICAgICBmdXJ0aGVyLgotICAgICA8 L3BhcmE+Cit0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7CisgICAgTFdMb2NrICAgICAg bG9jazsgICAgLyogcHJvdGVjdHMgdGhlIGZpZWxkcyBiZWxvdyAqLwogCi0gICAgIDxwYXJh PgotICAgICAgVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLCBlYWNoIGJhY2tlbmQgc2hvdWxk IHVzZSB0aGUgTFdMb2NrCi0gICAgICA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2NrPC9m dW5jdGlvbj4gd2hlbiBpbml0aWFsaXppbmcgaXRzIGFsbG9jYXRpb24KLSAgICAgIG9mIHNo YXJlZCBtZW1vcnksIGFzIHNob3duIGhlcmU6Ci08cHJvZ3JhbWxpc3Rpbmc+Ci1zdGF0aWMg bXlzdHJ1Y3QgKnB0ciA9IE5VTEw7Ci1ib29sICAgICAgICBmb3VuZDsKKyAgICAuLi4gc2hh cmVkIG1lbW9yeSBjb250ZW50cyAuLi4KK30gTXlTaG1lbURhdGE7CisKK3N0YXRpYyBNeVNo bWVtRGF0YSAqTXlTaG1lbTsgICAgLyogcG9pbnRlciB0byB0aGUgc3RydWN0IGluIHNoYXJl ZCBtZW1vcnkgKi8KKworc3RhdGljIHZvaWQgbXlfc2htZW1fcmVxdWVzdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgbXlfc2htZW1faW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1l bUNhbGxiYWNrcyBteV9zaG1lbV9jYWxsYmFja3MgPSB7CisgICAgLnJlcXVlc3RfZm4gPSBt eV9zaG1lbV9yZXF1ZXN0LAorICAgIC5pbml0X2ZuID0gbXlfc2htZW1faW5pdCwKK307CisK Ky8qCisgKiBNb2R1bGUgbG9hZCBjYWxsYmFjaworICovCit2b2lkCitfUEdfaW5pdCh2b2lk KQoreworICAgIC8qCisgICAgICogSW4gb3JkZXIgdG8gY3JlYXRlIG91ciBzaGFyZWQgbWVt b3J5IGFyZWEsIHdlIGhhdmUgdG8gYmUgbG9hZGVkIHZpYQorICAgICAqIHNoYXJlZF9wcmVs b2FkX2xpYnJhcmllcy4KKyAgICAgKi8KKyAgICBpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxv YWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBS ZWdpc3RlciBvdXIgc2hhcmVkIG1lbW9yeSBuZWVkcyAqLworICAgIFJlZ2lzdGVyU2htZW1D YWxsYmFja3MoJmFtcDtteV9zaG1lbV9jYWxsYmFja3MpOworfQorCisvKiBjYWxsYmFjayB0 byByZXF1ZXN0ICAqLworc3RhdGljIHZvaWQKK215X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJn KQoreworICAgIC8qIEEgcGVyc2lzdGVudCBoYW5kbGUgdG8gdGhlIHNoYXJlZCBtZW1vcnkg YXJlYSBpbiB0aGlzIGJhY2tlbmQgKi8KKyAgICBzdGF0aWMgU2htZW1TdHJ1Y3REZXNjIE15 U2htZW1EZXNjOworCisgICAgU2htZW1SZXF1ZXN0U3RydWN0KCZhbXA7TXlTaG1lbURlc2Ms CisgICAgICAgICAgICAgICAgICAgICAgIC5uYW1lID0gIk15IHNobWVtIGFyZWEiLAorICAg ICAgICAgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZihNeVNobWVtRGF0YSksCisgICAg ICAgICAgICAgICAgICAgICAgIC5wdHIgPSAodm9pZCAqKikgJmFtcDtNeVNobWVtLAorICAg ICAgICApOworfQogCi1MV0xvY2tBY3F1aXJlKEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhD TFVTSVZFKTsKLXB0ciA9IFNobWVtSW5pdFN0cnVjdCgibXkgc3RydWN0IG5hbWUiLCBzaXpl LCAmYW1wO2ZvdW5kKTsKLWlmICghZm91bmQpCisvKiBjYWxsYmFjayB0byBpbml0aWFsaXpl IHRoZSBjb250ZW50cyBvZiB0aGUgTXlTaG1lbSBhcmVhIGF0IHN0YXJ0dXAgKi8KK3N0YXRp YyB2b2lkCitteV9zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKLSAgICAuLi4gaW5pdGlhbGl6 ZSBjb250ZW50cyBvZiBzaGFyZWQgbWVtb3J5IC4uLgotICAgIHB0ci0+bG9ja3MgPSBHZXRO YW1lZExXTG9ja1RyYW5jaGUoIm15IHRyYW5jaGUgbmFtZSIpOworICAgIGludCAgICAgICAg IHRyYW5jaGVfaWQ7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBsb2NrICovCisgICAgdHJh bmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgibXkgdHJhbmNoZSBuYW1lIik7CisgICAg TFdMb2NrSW5pdGlhbGl6ZSgmYW1wO015U2htZW0tPmxvY2ssIHRyYW5jaGVfaWQpOworCisg ICAgLi4uIGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgTXlTaG1lbSBmaWVsZHMgLi4uCiB9Ci1M V0xvY2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CisKIDwvcHJvZ3JhbWxpc3Rpbmc+ Ci0gICAgICA8bGl0ZXJhbD5zaG1lbV9zdGFydHVwX2hvb2s8L2xpdGVyYWw+IHByb3ZpZGVz IGEgY29udmVuaWVudCBwbGFjZSBmb3IgdGhlCi0gICAgICBpbml0aWFsaXphdGlvbiBjb2Rl LCBidXQgaXQgaXMgbm90IHN0cmljdGx5IHJlcXVpcmVkIHRoYXQgYWxsIHN1Y2ggY29kZQot ICAgICAgYmUgcGxhY2VkIGluIHRoaXMgaG9vay4gIE9uIFdpbmRvd3MgKGFuZCBhbnl3aGVy ZSBlbHNlIHdoZXJlCi0gICAgICA8bGl0ZXJhbD5FWEVDX0JBQ0tFTkQ8L2xpdGVyYWw+IGlz IGRlZmluZWQpLCBlYWNoIGJhY2tlbmQgZXhlY3V0ZXMgdGhlCi0gICAgICByZWdpc3RlcmVk IDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBfaG9vazwvbGl0ZXJhbD4gc2hvcnRseSBhZnRlciBp dAotICAgICAgYXR0YWNoZXMgdG8gc2hhcmVkIG1lbW9yeSwgc28gYWRkLWlucyBzaG91bGQg c3RpbGwgYWNxdWlyZQotICAgICAgPGZ1bmN0aW9uPkFkZGluU2htZW1Jbml0TG9jazwvZnVu Y3Rpb24+IHdpdGhpbiB0aGlzIGhvb2ssIGFzIHNob3duIGluIHRoZQotICAgICAgZXhhbXBs ZSBhYm92ZS4gIE9uIG90aGVyIHBsYXRmb3Jtcywgb25seSB0aGUgcG9zdG1hc3RlciBwcm9j ZXNzIGV4ZWN1dGVzCi0gICAgICB0aGUgPGxpdGVyYWw+c2htZW1fc3RhcnR1cF9ob29rPC9s aXRlcmFsPiwgYW5kIGVhY2ggYmFja2VuZCBhdXRvbWF0aWNhbGx5Ci0gICAgICBpbmhlcml0 cyB0aGUgcG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+ cmVxdWVzdF9mbjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCBkdXJpbmcgc3lzdGVt CisgICAgICBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gYWxs b2NhdGVkLiBJdCBzaG91bGQgY2FsbAorICAgICAgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0 cnVjdCgpPC9mdW5jdGlvbj4gdG8gcmVnaXN0ZXIgdGhlIGFkZC1pbidzCisgICAgICBzaGFy ZWQgbWVtb3J5IG5lZWRzLiBOb3RlIHRoYXQgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVj dCgpPC9mdW5jdGlvbj4KKyAgICAgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgYWxsb2NhdGUgb3Ig aW5pdGlhbGl6ZSB0aGUgbWVtb3J5LCBpdCBtZXJlbHkKKyAgICAgIHJlZ2lzdGVycyB0aGUg c3BhY2UgdG8gYmUgYWxsb2NhdGVkIGxhdGVyIGluIHRoZSBzdGFydHVwIHNlcXVlbmNlLiAg V2hlbgorICAgICAgdGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIGl0IGlzIGluaXRpYWxpemVk IHRvIHplcm8uICBGb3IgYW55IG1vcmUKKyAgICAgIGNvbXBsZXggaW5pdGlhbGl6YXRpb24s IHNldCB0aGUgPGZ1bmN0aW9uPmluaXRfZm4oKTwvZnVuY3Rpb24+IGNhbGxiYWNrLAorICAg ICAgd2hpY2ggd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG1lbW9yeSBoYXMgYmVlbiBhbGxv Y2F0ZWQgYW5kIGluaXRpYWxpemVkCisgICAgICB0byB6ZXJvLCBidXQgYmVmb3JlIGFueSBv dGhlciBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcsIGFuZCB0aHVzIG5vIGxvY2tpbmcKKyAgICAg IGlzIHJlcXVpcmVkLgogICAgICA8L3BhcmE+Ci0KICAgICAgPHBhcmE+Ci0gICAgICBBbiBl eGFtcGxlIG9mIGEgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9ob29rPC9saXRlcmFsPiBhbmQK LSAgICAgIDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBfaG9vazwvbGl0ZXJhbD4gY2FuIGJlIGZv dW5kIGluCisgICAgICBPbiBXaW5kb3dzLCB0aGUgPGZ1bmN0aW9uPmF0dGFjaF9mbjwvZnVu Y3Rpb24+IGNhbGxiYWNrLCBpZiBhbnksIGlzCisgICAgICBhZGRpdGlvbmFsbHkgY2FsbGVk IGF0IGV2ZXJ5IGJhY2tlbmQgc3RhcnR1cC4gIEl0IGNhbiBiZSB1c2VkIHRvCisgICAgICBp bml0aWFsaXplIGFkZGl0aW9uYWwgcGVyLWJhY2tlbmQgc3RhdGUgcmVsYXRlZCB0byB0aGUg c2hhcmVkIG1lbW9yeQorICAgICAgYXJlYSB0aGF0IGlzIGluaGVyaXRlZCB2aWEgPGZ1bmN0 aW9uPmZvcmsoKTwvZnVuY3Rpb24+IG9uIG90aGVyIHN5c3RlbXMuCisgICAgIDwvcGFyYT4K KyAgICAgPHBhcmE+CisgICAgICBBbiBleGFtcGxlIG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1l bW9yeSBjYW4gYmUgZm91bmQgaW4KICAgICAgIDxmaWxlbmFtZT5jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYzwvZmlsZW5hbWU+IGluCiAgICAgICB0 aGUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzb3VyY2UgdHJlZS4K ICAgICAgPC9wYXJhPgogICAgIDwvc2VjdDM+CiAKICAgICA8c2VjdDMgaWQ9InhmdW5jLXNo YXJlZC1hZGRpbi1hZnRlci1zdGFydHVwIj4KLSAgICAgPHRpdGxlPlJlcXVlc3RpbmcgU2hh cmVkIE1lbW9yeSBBZnRlciBTdGFydHVwPC90aXRsZT4KKyAgICAgPHRpdGxlPlJlcXVlc3Rp bmcgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVwIHdpdGggPGZ1bmN0aW9uPlNobWVtUmVx dWVzdFN0cnVjdDwvZnVuY3Rpb24+PC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRo ZSA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0KCk8L2Z1bmN0aW9uPiBjYW4gYWxzbyBi ZSBjYWxsZWQgYWZ0ZXIKKyAgICAgIHN5c3RlbSBzdGFydHVwLCB3aGljaCBpcyB1c2VmdWwg dG8gYWxsb3cgc21hbGwgYWxsb2NhdGlvbnMgaW4gYWRkLWluCisgICAgICBsaWJyYXJpZXMg dGhhdCBhcmUgbm90IHNwZWNpZmllZCBpbgorICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXNo YXJlZC1wcmVsb2FkLWxpYnJhcmllcyIvPjxpbmRleHRlcm0+PHByaW1hcnk+c2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPi4KKyAgICAgIEhvd2V2ZXIs IGFmdGVyIHN0YXJ0dXAgdGhlIGFsbG9jYXRpb24gY2FuIGZhaWwgaWYgdGhlcmUgaXMgbm90 IGVub3VnaAorICAgICAgc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuIFRoZSBzeXN0ZW0gcmVz ZXJ2ZXMgc29tZSBtZW1vcnkgZm9yIGFsbG9jYXRpb25zCisgICAgICBhZnRlciBzdGFydHVw LCBidXQgdGhhdCByZXNlcnZhdGlvbiBpcyBzbWFsbC4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgIEJ5IGRlZmF1bHQsIDxmdW5jdGlvbj5SZWdpc3RlclNobWVtQ2FsbGJh Y2tzKCk8L2Z1bmN0aW9uPiBmYWlscyB3aXRoIGFuCisgICAgICBlcnJvciBpZiBjYWxsZWQg YWZ0ZXIgc3lzdGVtIHN0YXJ0dXAuIFRvIHVzZSBpdCBhZnRlciBzdGFydHVwLCB5b3UgbXVz dAorICAgICAgc2V0IHRoZSA8bGl0ZXJhbD5TSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJf U1RBUlRVUDwvbGl0ZXJhbD4gZmxhZyBpbgorICAgICAgdGhlIGFyZ3VtZW50IDxzdHJ1Y3Ru YW1lPlNobWVtQ2FsbGJhY2tzPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3QgdG8KKyAgICAgIGFja25v d2xlZGdlIHRoZSByaXNrLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hl biA8ZnVuY3Rpb24+UmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygpPC9mdW5jdGlvbj4gaXMgY2Fs bGVkIGFmdGVyCisgICAgICBzdGFydHVwLCBpdCB3aWxsIGltbWVkaWF0ZWx5IGNhbGwgdGhl IGFwcHJvcHJpYXRlIGNhbGxiYWNrcywgZGVwZW5kaW5nCisgICAgICBvbiB3aGV0aGVyIHRo ZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzIHdlcmUgYWxyZWFkeSBpbml0aWFsaXplZCBieQor ICAgICAgYW5vdGhlciBiYWNrZW5kLiBUaGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIHdo aWxlIGhvbGRpbmcgYW4gaW50ZXJuYWwKKyAgICAgIGxvY2ssIHdoaWNoIHByZXZlbnRzIGNv bmN1cnJlbnQgdHdvIGJhY2tlbmRzIGZyb20gaW5pdGlhbGl6YXRpbmcgdGhlCisgICAgICBt ZW1vcnkgYXJlYSBjb25jdXJyZW50bHkuCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QzPgor CisgICAgPHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tZHluYW1pYyI+CisgICAgIDx0 aXRsZT5BbGxvY2F0aW5nIER5bmFtaWMgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVwPC90 aXRsZT4KIAogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGlzIGFub3RoZXIsIG1vcmUgZmxl eGlibGUgbWV0aG9kIG9mIHJlc2VydmluZyBzaGFyZWQgbWVtb3J5IHRoYXQKLSAgICAgIGNh biBiZSBkb25lIGFmdGVyIHNlcnZlciBzdGFydHVwIGFuZCBvdXRzaWRlIGEKLSAgICAgIDxs aXRlcmFsPnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4uICBUbyBkbyBzbywgZWFjaCBi YWNrZW5kIHRoYXQgd2lsbAorICAgICAgY2FuIGJlIGRvbmUgYWZ0ZXIgc2VydmVyIHN0YXJ0 dXAuICBUbyBkbyBzbywgZWFjaCBiYWNrZW5kIHRoYXQgd2lsbAogICAgICAgdXNlIHRoZSBz aGFyZWQgbWVtb3J5IHNob3VsZCBvYnRhaW4gYSBwb2ludGVyIHRvIGl0IGJ5IGNhbGxpbmc6 CiA8cHJvZ3JhbWxpc3Rpbmc+CiB2b2lkICpHZXROYW1lZERTTVNlZ21lbnQoY29uc3QgY2hh ciAqbmFtZSwgc2l6ZV90IHNpemUsCkBAIC0zNzExLDEwICszNzcyLDcgQEAgdm9pZCAqR2V0 TmFtZWREU01TZWdtZW50KGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplLAogICAgICA8 L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAgICBVbmxpa2Ugc2hhcmVkIG1lbW9yeSByZXNl cnZlZCBhdCBzZXJ2ZXIgc3RhcnR1cCwgdGhlcmUgaXMgbm8gbmVlZCB0bwotICAgICAgYWNx dWlyZSA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2NrPC9mdW5jdGlvbj4gb3Igb3RoZXJ3 aXNlIHRha2UgYWN0aW9uCi0gICAgICB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2hlbiBy ZXNlcnZpbmcgc2hhcmVkIG1lbW9yeSB3aXRoCi0gICAgICA8ZnVuY3Rpb24+R2V0TmFtZWRE U01TZWdtZW50PC9mdW5jdGlvbj4uICBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBvbmx5 CisgICAgICA8ZnVuY3Rpb24+R2V0TmFtZWREU01TZWdtZW50PC9mdW5jdGlvbj4gZW5zdXJl cyB0aGF0IG9ubHkKICAgICAgIG9uZSBiYWNrZW5kIGFsbG9jYXRlcyBhbmQgaW5pdGlhbGl6 ZXMgdGhlIHNlZ21lbnQgYW5kIHRoYXQgYWxsIG90aGVyCiAgICAgICBiYWNrZW5kcyByZWNl aXZlIGEgcG9pbnRlciB0byB0aGUgZnVsbHkgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZAog ICAgICAgc2VnbWVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290 c3RyYXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBjNTJj MGE2MDIzZC4uYzcwN2NjZmE1NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJh cC9ib290c3RyYXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMK QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpA QCAtMzczLDYgKzM3NCw3IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAogCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7 CiAKKwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CiAJQ3JlYXRlU2hhcmVkTWVtb3J5 QW5kU2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNo X2JhY2tlbmQuYwppbmRleCA0MzRlMDY0MzAyMi4uMDk3MzAxMGI3ZGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKQEAgLTQ5LDcgKzQ5LDkgQEAKICNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pb193b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidGNvcC9iYWNrZW5kX3N0YXJ0 dXAuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC02NzIsNyArNjc0LDEw IEBAIFN1YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBS ZXN0b3JlIGJhc2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8KIAlpZiAoVXNlZFNobWVt U2VnQWRkciAhPSBOVUxMKQorCXsKIAkJSW5pdFNobWVtQWxsb2NhdG9yKFVzZWRTaG1lbVNl Z0FkZHIpOworCQlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisJfQogCiAJLyoKIAkg KiBSdW4gdGhlIGFwcHJvcHJpYXRlIE1haW4gZnVuY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMKaW5kZXggZWI0ZjNlYjcyZDQuLjY5MzQ3NTAxNGZlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMTE1LDYgKzExNSw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRl cm5hbC5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVwLmgiCiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCkBAIC05NTEs NyArOTUyLDE0IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ SW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsKIAogCS8qCi0JICogR2l2ZSBwcmVsb2FkZWQg bGlicmFyaWVzIGEgY2hhbmNlIHRvIHJlcXVlc3QgYWRkaXRpb25hbCBzaGFyZWQgbWVtb3J5 LgorCSAqIEFzayBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nIHByZWxvYWRlZCBsaWJyYXJp ZXMsIHRvIHJlZ2lzdGVyIHRoZWlyCisJICogc2hhcmVkIG1lbW9yeSBuZWVkcy4KKwkgKi8K KwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKKwkvKgorCSAqIEFsc28gY2FsbCBh bnkgbGVnYWN5IHNobWVtIHJlcXVlc3QgaG9va3MgdGhhdCBtaWdodCdiZSBiZWVuIGluc3Rh bGxlZAorCSAqIGJ5IHByZWxvYWRlZCBsaWJyYXJpZXMuCiAJICovCiAJcHJvY2Vzc19zaG1l bV9yZXF1ZXN0cygpOwogCkBAIC0zMjMyLDcgKzMyNDAsMTQgQEAgUG9zdG1hc3RlclN0YXRl TWFjaGluZSh2b2lkKQogCQkvKiByZS1yZWFkIGNvbnRyb2wgZmlsZSBpbnRvIGxvY2FsIG1l bW9yeSAqLwogCQlMb2NhbFByb2Nlc3NDb250cm9sRmlsZSh0cnVlKTsKIAotCQkvKiByZS1j cmVhdGUgc2hhcmVkIG1lbW9yeSBhbmQgc2VtYXBob3JlcyAqLworCQkvKgorCQkgKiBSZS1p bml0aWFsaXplIHNoYXJlZCBtZW1vcnkgYW5kIHNlbWFwaG9yZXMuICBOb3RlOiBXZSBkb24n dCBjYWxsCisJCSAqIFJlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJhY2tzKCksIHdlIGtlZXAg dGhlIG9sZCByZWdpc3RyYXRpb25zLiAgSW4KKwkJICogb3JkZXIgdG8gcmUtcmVnaXN0ZXIg c3RydWN0cyBpbiBleHRlbnNpb25zLCB3ZSdkIG5lZWQgdG8gcmVsb2FkCisJCSAqIHNoYXJl ZCBwcmVsb2FkIGxpYnJhcmllcywgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gdGhhdC4KKwkJ ICovCisJCVJlc2V0U2htZW1BbGxvY2F0b3IoKTsKKwkJU2htZW1DYWxsUmVxdWVzdENhbGxi YWNrcygpOwogCQlDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKCk7CiAKIAkJVXBk YXRlUE1TdGF0ZShQTV9TVEFSVFVQKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCA3 YWFiNWRhMzM4Ni4uMjQ0MjJhODBhYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAg LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgor I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgpAQCAtMTAwLDggKzEwMSw5IEBAIENhbGN1bGF0ZVNobWVt U2l6ZSh2b2lkKQogCSAqIGR1cmluZyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gcGhhc2UuCiAJ ICovCiAJc2l6ZSA9IDEwMDAwMDsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3Rp bWF0ZV9zaXplKFNITUVNX0lOREVYX1NJWkUsCi0JCQkJCQkJCQkJCSBzaXplb2YoU2htZW1J bmRleEVudCkpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRT aXplKCkpOworCisJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgZHNtX2VzdGltYXRlX3NpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIERT TVJlZ2lzdHJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZmZXJN YW5hZ2VyU2htZW1TaXplKCkpOwpAQCAtMTc2LDYgKzE3OCwxMyBAQCBBdHRhY2hTaGFyZWRN ZW1vcnlTdHJ1Y3RzKHZvaWQpCiAJICovCiAJSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsK IAorCS8qCisJICogQXR0YWNoIHRvIExXTG9ja3MgZmlyc3QuIFRoZXkgYXJlIG5lZWRlZCBi eSBtb3N0IG90aGVyIHN1YnN5c3RlbXMuCisJICovCisJTFdMb2NrU2htZW1Jbml0KCk7CisK KwkvKiBFc3RhYmxpc2ggcG9pbnRlcnMgdG8gYWxsIHNoYXJlZCBtZW1vcnkgYXJlYXMgaW4g dGhpcyBiYWNrZW5kICovCisJU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKTsKIAlDcmVhdGVPckF0 dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyoKQEAgLTIyMCw3ICsyMjksMTcgQEAgQ3JlYXRl U2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcyh2b2lkKQogCSAqLwogCUluaXRTaG1lbUFsbG9j YXRvcihzZWdoZHIpOwogCi0JLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCisJLyoKKwkg KiBJbml0aWFsaXplIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRoZSBzaG1lbSBp bml0IGZ1bmN0aW9uIHVzZQorCSAqIExXTG9ja3MuICAoTm90aGluZyBlbHNlIGNhbiBiZSBy dW5uaW5nIGR1cmluZyBzdGFydHVwLCBzbyB0aGV5IGRvbid0CisJICogbmVlZCB0byBkbyBh bnkgbG9ja2luZyB5ZXQsIGJ1dCB3ZSBuZXZlcnRoZWxlc3MgYWxsb3cgaXQuKQorCSAqLwor CUxXTG9ja1NobWVtSW5pdCgpOworCisJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMg Ki8KKwlTaG1lbUluaXRSZXF1ZXN0ZWQoKTsKKworCS8qIEluaXRpYWxpemUgbGVnYWN5IHN1 YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyogSW5p dGlhbGl6ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgZmFjaWxpdGllcy4gKi8KQEAgLTI1MSwx MSArMjcwLDYgQEAgQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcyh2b2lkKQogc3Rh dGljIHZvaWQKIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiB7Ci0JLyoKLQkg KiBTZXQgdXAgTFdMb2Nrcy4gIFRoZXkgYXJlIG5lZWRlZCBieSBtb3N0IG90aGVyIHN1YnN5 c3RlbXMuCi0JICovCi0JTFdMb2NrU2htZW1Jbml0KCk7Ci0KIAlkc21fc2htZW1faW5pdCgp OwogCURTTVJlZ2lzdHJ5U2htZW1Jbml0KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CmluZGV4IGM5OTRmNzY3NGVjLi4yOWZmNjA2NWRkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbS5jCkBAIC0xOSw0MyArMTksMTE1IEBACiAgKiBtZXRob2RzKS4gIFRoZSByb3V0aW5l cyBpbiB0aGlzIGZpbGUgYXJlIHVzZWQgZm9yIGFsbG9jYXRpbmcgYW5kCiAgKiBiaW5kaW5n IHRvIHNoYXJlZCBtZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLgogICoKLSAqIE5PVEVTOgotICoJ CShhKSBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2hhcmVkIG1lbW9yeSBkYXRhIHN0cnVj dHVyZXMKLSAqCWF2YWlsYWJsZSB0byBQT1NUR1JFUzogZml4ZWQtc2l6ZSBzdHJ1Y3R1cmVz LCBxdWV1ZXMgYW5kIGhhc2gKLSAqCXRhYmxlcy4gIEZpeGVkLXNpemUgc3RydWN0dXJlcyBj b250YWluIHRoaW5ncyBsaWtlIGdsb2JhbCB2YXJpYWJsZXMKLSAqCWZvciBhIG1vZHVsZSBh bmQgc2hvdWxkIG5ldmVyIGJlIGFsbG9jYXRlZCBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeQot ICoJaW5pdGlhbGl6YXRpb24gcGhhc2UuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4 aW11bSBzaXplIGFuZAotICoJY2Fubm90IGdyb3cgYmV5b25kIHRoYXQuICBRdWV1ZXMgbGlu ayBkYXRhIHN0cnVjdHVyZXMKLSAqCXRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBlaXRoZXIg d2l0aGluIGZpeGVkLXNpemUgc3RydWN0dXJlcyBvciBhcyBoYXNoCi0gKglidWNrZXRzLiAg RWFjaCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUgaGFzIGEgc3RyaW5nIG5hbWUgdG8gaWRlbnRp ZnkKLSAqCWl0IChhc3NpZ25lZCBpbiB0aGUgbW9kdWxlIHRoYXQgZGVjbGFyZXMgaXQpLgot ICoKLSAqCQkoYikgRHVyaW5nIGluaXRpYWxpemF0aW9uLCBlYWNoIG1vZHVsZSBsb29rcyBm b3IgaXRzCi0gKglzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgaGFzaCB0YWJsZSBjYWxs ZWQgdGhlICJTaG1lbSBJbmRleCIuCi0gKglJZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXMgbm90 IHByZXNlbnQsIHRoZSBjYWxsZXIgY2FuIGFsbG9jYXRlCi0gKglhIG5ldyBvbmUgYW5kIGlu aXRpYWxpemUgaXQuICBJZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXMgcHJlc2VudCwKLSAqCXRo ZSBjYWxsZXIgImF0dGFjaGVzIiB0byB0aGUgc3RydWN0dXJlIGJ5IGluaXRpYWxpemluZyBh IHBvaW50ZXIKLSAqCWluIHRoZSBsb2NhbCBhZGRyZXNzIHNwYWNlLgotICoJCVRoZSBzaG1l bSBpbmRleCBoYXMgdHdvIHB1cnBvc2VzOiBmaXJzdCwgaXQgZ2l2ZXMgdXMKLSAqCWEgc2lt cGxlIG1vZGVsIG9mIGhvdyB0aGUgd29ybGQgbG9va3Mgd2hlbiBhIGJhY2tlbmQgcHJvY2Vz cwotICoJaW5pdGlhbGl6ZXMuICBJZiBzb21ldGhpbmcgaXMgcHJlc2VudCBpbiB0aGUgc2ht ZW0gaW5kZXgsCi0gKglpdCBpcyBpbml0aWFsaXplZC4gIElmIGl0IGlzIG5vdCwgaXQgaXMg dW5pbml0aWFsaXplZC4gIFNlY29uZCwKLSAqCXRoZSBzaG1lbSBpbmRleCBhbGxvd3MgdXMg dG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBvbiBkZW1hbmQKLSAqCWluc3RlYWQgb2YgdHJ5 aW5nIHRvIHByZWFsbG9jYXRlIHN0cnVjdHVyZXMgYW5kIGhhcmQtd2lyZSB0aGUKLSAqCXNp emVzIGFuZCBsb2NhdGlvbnMgaW4gaGVhZGVyIGZpbGVzLiAgSWYgeW91IGFyZSB1c2luZyBh IGxvdAotICoJb2Ygc2hhcmVkIG1lbW9yeSBpbiBhIGxvdCBvZiBkaWZmZXJlbnQgcGxhY2Vz IChhbmQgY2hhbmdpbmcKLSAqCXRoaW5ncyBkdXJpbmcgZGV2ZWxvcG1lbnQpLCB0aGlzIGlz IGltcG9ydGFudC4KLSAqCi0gKgkJKGMpIEluIHN0YW5kYXJkIFVuaXgtaXNoIGVudmlyb25t ZW50cywgaW5kaXZpZHVhbCBiYWNrZW5kcyBkbyBub3QKLSAqCW5lZWQgdG8gcmUtZXN0YWJs aXNoIHRoZWlyIGxvY2FsIHBvaW50ZXJzIGludG8gc2hhcmVkIG1lbW9yeSwgYmVjYXVzZQot ICoJdGhleSBpbmhlcml0IGNvcnJlY3QgdmFsdWVzIG9mIHRob3NlIHZhcmlhYmxlcyB2aWEg Zm9yaygpIGZyb20gdGhlCi0gKglwb3N0bWFzdGVyLiAgSG93ZXZlciwgdGhpcyBkb2VzIG5v dCB3b3JrIGluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZS4KLSAqCUluIHBvcnRzIHVzaW5nIEVY RUNfQkFDS0VORCwgbmV3IGJhY2tlbmRzIGhhdmUgdG8gc2V0IHVwIHRoZWlyIGxvY2FsCi0g Kglwb2ludGVycyB1c2luZyB0aGUgbWV0aG9kIGRlc2NyaWJlZCBpbiAoYikgYWJvdmUuCi0g KgotICoJCShkKSBtZW1vcnkgYWxsb2NhdGlvbiBtb2RlbDogc2hhcmVkIG1lbW9yeSBjYW4g bmV2ZXIgYmUKLSAqCWZyZWVkLCBvbmNlIGFsbG9jYXRlZC4gICBFYWNoIGhhc2ggdGFibGUg aGFzIGl0cyBvd24gZnJlZSBsaXN0LAotICoJc28gaGFzaCBidWNrZXRzIGNhbiBiZSByZXVz ZWQgd2hlbiBhbiBpdGVtIGlzIGRlbGV0ZWQuCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBm YWNpbGl0aWVzIHRvIGFsbG9jYXRlIGZpeGVkLXNpemUgc3RydWN0dXJlcyBpbiBzaGFyZWQK KyAqIG1lbW9yeSwgZm9yIHRoaW5ncyBsaWtlIHZhcmlhYmxlcyBzaGFyZWQgYmV0d2VlbiBh bGwgYmFja2VuZCBwcm9jZXNzZXMuCisgKiBFYWNoIHN1Y2ggc3RydWN0dXJlIGhhcyBhIHN0 cmluZyBuYW1lIHRvIGlkZW50aWZ5IGl0LCBzcGVjaWZpZWQgd2hlbiBpdCBpcworICogcmVx dWVzdGVkLiAgc2htZW1faGFzaC5jIHByb3ZpZGVzIGEgc2hhcmVkIGhhc2ggdGFibGUgaW1w bGVtZW50YXRpb24gb24gdG9wCisgKiBvZiB0aGF0LgorICoKKyAqIFNoYXJlZCBtZW1vcnkg YXJlYXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGFsbG9jYXRlZCBhZnRlciBwb3N0bWFzdGVy CisgKiBzdGFydHVwLCBhbHRob3VnaCB3ZSBkbyBhbGxvdyBzbWFsbCBhbGxvY2F0aW9ucyBs YXRlciBmb3IgdGhlIGJlbmVmaXQgb2YKKyAqIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgYXJl IGxvYWRlZCBhZnRlciBzdGFydHVwLiAgRGVzcGl0ZSB0aGF0IGFsbG93YW5jZSwKKyAqIGV4 dGVuc2lvbnMgdGhhdCBuZWVkIHNoYXJlZCBtZW1vcnkgc2hvdWxkIGJlIGFkZGVkIGluCisg KiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMsIGJlY2F1c2UgdGhlIGFsbG93YW5jZSBpcyBx dWl0ZSBzbWFsbCBhbmQgdGhlcmUgaXMKKyAqIG5vIGd1YXJhbnRlZSB0aGF0IGFueSBtZW1v cnkgaXMgYXZhaWxhYmxlIGFmdGVyIHN0YXJ0dXAuCisgKgorICogTm93YWRheXMsIHRoZXJl IGlzIGFsc28gYSB0aGlyZCB3YXkgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBjYWxsZWQK KyAqIER5bmFtaWMgU2hhcmVkIE1lbW9yeS4gIFNlZSBkc20uYyBmb3IgdGhhdCBmYWNpbGl0 eS4gIE9uZSBiaWcgZGlmZmVyZW5jZQorICogYmV0d2VlbiB0cmFkaXRpb25hbCBzaGFyZWQg bWVtb3J5IGhhbmRsZWQgYnkgc2htZW0uYyBhbmQgZHluYW1pYyBzaGFyZWQKKyAqIG1lbW9y eSBpcyB0aGF0IHRyYWRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgYXJlYXMgYXJlIG1hcHBlZCB0 byB0aGUgc2FtZQorICogYWRkcmVzcyBpbiBhbGwgcHJvY2Vzc2VzLCBzbyB5b3UgY2FuIHVz ZSBub3JtYWwgcG9pbnRlcnMgaW4gc2hhcmVkIG1lbW9yeQorICogc3RydWN0cy4gIFdpdGgg RHluYW1pYyBTaGFyZWQgTWVtb3J5LCB5b3UgbXVzdCB1c2Ugb2Zmc2V0cyBvciBEU0EgcG9p bnRlcnMKKyAqIGluc3RlYWQuCisgKgorICogU2hhcmVkIG1lbW9yeSBtYW5hZ2VkIGJ5IHNo bWVtLmMgY2FuIG5ldmVyIGJlIGZyZWVkLCBvbmNlIGFsbG9jYXRlZC4gIEVhY2gKKyAqIGhh c2ggdGFibGUgaGFzIGl0cyBvd24gZnJlZSBsaXN0LCBzbyBoYXNoIGJ1Y2tldHMgY2FuIGJl IHJldXNlZCB3aGVuIGFuCisgKiBpdGVtIGlzIGRlbGV0ZWQuICBIb3dldmVyLCBpZiBvbmUg aGFzaCB0YWJsZSBncm93cyB2ZXJ5IGxhcmdlIGFuZCB0aGVuCisgKiBzaHJpbmtzLCBpdHMg c3BhY2UgY2Fubm90IGJlIHJlZGlzdHJpYnV0ZWQgdG8gb3RoZXIgdGFibGVzLiAgV2UgY291 bGQgYnVpbGQKKyAqIGEgc2ltcGxlIGhhc2ggYnVja2V0IGdhcmJhZ2UgY29sbGVjdG9yIGlm IG5lZWQgYmUuICBSaWdodCBub3csIGl0IHNlZW1zCisgKiB1bm5lY2Vzc2FyeS4KKyAqCisg KiBVc2FnZQorICogLS0tLS0KKyAqCisgKiBUbyBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5LCB5 b3UgbmVlZCB0byByZWdpc3RlciBhIHNldCBvZiBjYWxsYmFjayBmdW5jdGlvbnMKKyAqIHdo aWNoIGhhbmRsZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBhbGxvY2F0aW9uLiAgSW4gdGhlIHJl cXVlc3RfZm4gY2FsbGJhY2ssCisgKiBmaWxsIGluIGEgU2htZW1SZXF1ZXN0U3RydWN0T3B0 cyBzdHJ1Y3Qgd2l0aCB0aGUgbmFtZSwgc2l6ZSwgYW5kIGFueSBvdGhlcgorICogb3B0aW9u cywgYW5kIGNhbGwgU2htZW1SZXF1ZXN0U3RydWN0KCkuICBMZWF2ZSBhbnkgdW51c2VkIGZp ZWxkcyBhcyB6ZXJvcy4KKyAqCisgKgl0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7Cisg KgkJLi4uCisgKgl9IE15U2htZW1EYXRhOworICoKKyAqCXN0YXRpYyBNeVNobWVtRGF0YSAq TXlTaG1lbTsKKyAqCisgKglzdGF0aWMgdm9pZCBteV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFy Zyk7CisgKglzdGF0aWMgdm9pZCBteV9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisgKgorICog IGNvbnN0IFNobWVtQ2FsbGJhY2tzIE15U2htZW1DYWxsYmFja3MgPSB7CisgKgkJLnJlcXVl c3RfZm4gPSBteV9zaG1lbV9yZXF1ZXN0LAorICoJCS5pbml0X2ZuID0gbXlfc2htZW1faW5p dCwKKyAqCX07CisgKgorICoJc3RhdGljIHZvaWQKKyAqCW15X3NobWVtX3JlcXVlc3Qodm9p ZCAqYXJnKQorICoJeworICoJCXN0YXRpYyBTaG1lbVN0cnVjdERlc2MgTXlTaG1lbURlc2M7 CisgKgorICoJCVNobWVtUmVxdWVzdFN0cnVjdCgmTXlTaG1lbURlc2MsICYoU2htZW1SZXF1 ZXN0U3RydWN0T3B0cykgeworICoJCQkubmFtZSA9ICJNeSBzaG1lbSBhcmVhIiwKKyAqCQkJ LnNpemUgPSBzaXplb2YoTXlTaG1lbURhdGEpLAorICoJCQkucHRyID0gKHZvaWQgKiopICZN eVNobWVtLAorICoJCX0pOworICoJfQorICoKKyAqIEluIGJ1aWx0aW4gUG9zdGdyZVNRTCBj b2RlLCBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGUgbGlzdCBpbgorICogc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmguIEluIGFuIGFkZC1pbiBtb2R1bGUsIHlvdSBjYW4g cmVnaXN0ZXIKKyAqIHRoZSBjYWxsYmFja3MgYnkgY2FsbGluZyBSZWdpc3RlclNobWVtQ2Fs bGJhY2tzKCZNeVNobWVtQ2FsbGJhY2tzKSBpbiB0aGUKKyAqIGV4dGVuc2lvbidzIF9QR19p bml0KCkgZnVuY3Rpb24uCisgKgorICogTGlmZWN5Y2xlCisgKiAtLS0tLS0tLS0KKyAqCisg KiBJbml0aWFsaXppbmcgc2hhcmVkIG1lbW9yeSBoYXBwZW5zIGluIG11bHRpcGxlIHBoYXNl cy4gSW4gdGhlIGZpcnN0IHBoYXNlLAorICogZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cCwg YWxsIHRoZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBhcmUgY2FsbGVkLiAgT25seQorICogYWZ0 ZXIgYWxsIHRoZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2FsbGVkIGFuZCBh bGwgdGhlIHNobWVtIGFyZWFzCisgKiBoYXZlIGJlZW4gcmVxdWVzdGVkIGJ5IHRoZSBTaG1l bVJlcXVlc3RTdHJ1Y3QoKSBjYWxscyB3ZSBrbm93IGhvdyBtdWNoCisgKiBzaGFyZWQgbWVt b3J5IHdlIG5lZWQgaW4gdG90YWwuIEFmdGVyIHRoYXQsIHBvc3RtYXN0ZXIgYWxsb2NhdGVz IGdsb2JhbAorICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBhbmQgY2FsbHMgYWxsIHRoZSBp bml0X2ZuIGNhbGxiYWNrcyB0byBpbml0aWFsaXplCisgKiBhbGwgdGhlIHJlcXVlc3RlZCBz aG1lbSBhcmVhcy4KKyAqCisgKiBJbiBzdGFuZGFyZCBVbml4LWlzaCBlbnZpcm9ubWVudHMs IGluZGl2aWR1YWwgYmFja2VuZHMgZG8gbm90IG5lZWQgdG8KKyAqIHJlLWVzdGFibGlzaCB0 aGVpciBsb2NhbCBwb2ludGVycyBpbnRvIHNoYXJlZCBtZW1vcnksIGJlY2F1c2UgdGhleSBp bmhlcml0CisgKiBjb3JyZWN0IHZhbHVlcyBvZiB0aG9zZSB2YXJpYWJsZXMgdmlhIGZvcmso KSBmcm9tIHRoZSBwb3N0bWFzdGVyLiAgSG93ZXZlciwKKyAqIHRoaXMgZG9lcyBub3Qgd29y ayBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBJbiBwb3J0cyB1c2luZyBFWEVDX0JBQ0tF TkQsCisgKiBiYWNrZW5kIHN0YXJ0dXAgYWxzbyBjYWxscyB0aGUgc2htZW1fcmVxdWVzdCBj YWxsYmFja3MgdG8gcmUtZXN0YWJsaXNoIHRoZQorICoga25vd2xlZGdlIGFib3V0IGVhY2gg c2hhcmVkIG1lbW9yeSBhcmVhLCBzZXRzIHRoZSBwb2ludGVyIHZhcmlhYmxlcworICogKCpT aG1lbVN0cnVjdERlc2MtPnB0ciksIGFuZCBjYWxscyB0aGUgYXR0YWNoX2ZuIGNhbGxiYWNr LCBpZiBhbnksIGZvcgorICogYWRkaXRpb25hbCBwZXItYmFja2VuZCBzZXR1cC4KKyAqCisg KiBMZWdhY3kgU2htZW1Jbml0U3RydWN0KCkvU2htZW1Jbml0SGFzaCgpIGZ1bmN0aW9ucwor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBTaG1lbUluaXRTdHJ1Y3QoKS9TaG1lbUluaXRIYXNoKCkgaXMgYW5vdGhlciB3 YXkgb2YgcmVnaXN0ZXJpbmcgc2htZW0KKyAqIGFyZWFzLiAgSXQgcHJlLWRhdGVzIHRoZSBT aG1lbVJlcXVlc3RTdHJ1Y3QoKS9TaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rpb25zLAorICog YW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZSwgYnV0IGFzIG9mIHRoaXMgd3Jp dGluZyBpdCBpcyBzdGlsbAorICogd2lkZWx5IHVzZWQgaW4gZXh0ZW5zaW9ucy4KKyAqCisg KiBUbyBhbGxvY2F0ZSBhIHNobWVtIGFyZWEgd2l0aCBTaG1lbUluaXRTdHJ1Y3QoKSwgeW91 IG5lZWQgdG8gc2VwYXJhdGVseQorICogcmVnaXN0ZXIgdGhlIHNpemUgbmVlZGVkIGZvciB0 aGUgYXJlYSBieSBjYWxsaW5nIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoKQorICogZnJvbSB0 aGUgZXh0ZW5zaW9uJ3Mgc2htZW1fcmVxdWVzdF9ob29rLCBhbmQgYWxsb2NhdGUgdGhlIGFy ZWEgYnkgY2FsbGluZworICogU2htZW1Jbml0U3RydWN0KCkgZnJvbSB0aGUgZXh0ZW5zaW9u J3Mgc2htZW1fc3RhcnR1cF9ob29rLiAgVGhlcmUgYXJlIG5vCisgKiBpbml0L2F0dGFjaCBj YWxsYmFja3MuICBJbnN0ZWFkLCB0aGUgY2FsbGVyIG9mIFNobWVtSW5pdFN0cnVjdCgpIG11 c3QgY2hlY2sKKyAqIHRoZSByZXR1cm4gc3RhdHVzIG9mIFNobWVtSW5pdFN0cnVjdCgpIGFu ZCBpbml0aWFsaXplIHRoZSBzdHJ1Y3QgaWYgaXQgd2FzCisgKiBub3QgcHJldmlvdXNseSBp bml0aWFsaXplZC4KKyAqCisgKiBDYWxsaW5nIFNobWVtQWxsb2MoKSBkaXJlY3RseQorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGVyZSdzIGEgbW9yZSBs b3ctbGV2ZWwgd2F5IG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSB0b286IHlvdSBjYW4g Y2FsbAorICogU2htZW1BbGxvYygpIGRpcmVjdGx5LiAgSXQncyB1c2VkIHRvIGltcGxlbWVu dCB0aGUgaGlnaGVyIGxldmVsIG1lY2hhbmlzbXMsCisgKiBhbmQgc2hvdWxkIGdlbmVyYWxs eSBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LgogICovCiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5o IgpAQCAtNzAsMTAgKzE0Miw4MCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0u aCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy90dXBsZXN0b3JlLmgiCiAKKy8qCisgKiBSZWdpc3RlcmVkIGNhbGxiYWNrcy4KKyAq CisgKiBEdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLCB3ZSBhY2N1bXVsYXRlIHRoZSBjYWxs YmFja3MgZnJvbSBhbGwgc3Vic3lzdGVtcworICogaW4gdGhpcyBsaXN0LgorICoKKyAqIFRo aXMgaXMgaW4gcHJvY2VzcyBwcml2YXRlIG1lbW9yeSwgYWx0aG91Z2ggb24gVW5peC1saWtl IHN5c3RlbXMsIHdlIGV4cGVjdAorICogYWxsIHRoZSByZWdpc3RyYXRpb25zIHRvIGhhcHBl biBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgdGltZSBhbmQgYmUgaW5oZXJpdGVkCisgKiBieSBh bGwgdGhlIGNoaWxkIHByb2Nlc3NlcyB2aWEgZm9yaygpLgorICovCitzdGF0aWMgTGlzdCAq cmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3M7CisKKy8qCisgKiBJbiB0aGUgc2htZW0gcmVx dWVzdCBwaGFzZSwgYWxsIHRoZSBzaG1lbSBhcmVhcyByZXF1ZXN0ZWQgd2l0aCB0aGUKKyAq IFNobWVtUmVxdWVzdCooKSBmdW5jdGlvbnMgYXJlIGFjY3VtdWxhdGVkIGhlcmUuCisgKi8K K3R5cGVkZWYgc3RydWN0Cit7CisJU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zOworCVNobWVt UmVxdWVzdEtpbmQga2luZDsKK30gU2htZW1SZXF1ZXN0OworCitzdGF0aWMgTGlzdCAqcGVu ZGluZ19zaG1lbV9yZXF1ZXN0czsKKworLyoKKyAqIFBlci1wcm9jZXNzIHN0YXRlIG1hY2hp bmUsIGZvciBzYW5pdHkgY2hlY2tpbmcgdGhhdCB3ZSBkbyB0aGluZ3MgaW4gdGhlCisgKiBy aWdodCBvcmRlci4KKyAqCisgKiBQb3N0bWFzdGVyOgorICogICBJTklUSUFMIC0+IFJFUVVF U1RJTkcgLT4gSU5JVElBTElaSU5HIC0+IERPTkUKKyAqCisgKiBCYWNrZW5kcyBpbiBFWEVD X0JBQ0tFTkQgbW9kZToKKyAqICAgSU5JVElBTCAtPiBSRVFVRVNUSU5HIC0+IEFUVEFDSElO RyAtPiBET05FCisgKgorICogTGF0ZSByZXF1ZXN0OgorICogICBET05FIC0+IFJFUVVFU1RJ TkcgLT4gQUZURVJfU1RBUlRVUF9BVFRBQ0hfT1JfSU5JVCAtPiBET05FCisgKi8KK2VudW0g c2htZW1fcmVxdWVzdF9zdGF0ZQoreworCS8qIEluaXRpYWwgc3RhdGUgKi8KKwlTUlNfSU5J VElBTCwKKworCS8qCisJICogV2hlbiB3ZSBzdGFydCBjYWxsaW5nIHRoZSBzaG1lbV9yZXF1 ZXN0IGNhbGxiYWNrcywgd2UgZW50ZXIgdGhlCisJICogU1JTX1JFUVVFU1RJTkcgcGhhc2Uu ICBBbGwgU2htZW1SZXF1ZXN0U3RydWN0IGNhbGxzIGhhcHBlbiBpbiB0aGlzCisJICogc3Rh dGUuCisJICovCisJU1JTX1JFUVVFU1RJTkcsCisKKwkvKgorCSAqIFBvc3RtYXN0ZXIgaGFz IGZpbmlzaGVkIGFsbCBzaG1lbSByZXF1ZXN0cywgYW5kIGlzIG5vdyBpbml0aWFsaXppbmcg dGhlCisJICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAgaW5pdF9mbiBjYWxsYmFja3MgYXJl IGNhbGxlZCBpbiB0aGlzIHN0YXRlLgorCSAqLworCVNSU19JTklUSUFMSVpJTkcsCisKKwkv KgorCSAqIEEgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlzIHN0YXJ0aW5nIHVwLiAgYXR0 YWNoX2ZuIGNhbGxiYWNrcyBhcmUKKwkgKiBjYWxsZWQgaW4gdGhpcyBzdGF0ZS4KKwkgKi8K KwlTUlNfQVRUQUNISU5HLAorCisJLyogQW4gYWZ0ZXItc3RhcnR1cCBhbGxvY2F0aW9uIG9y IGF0dGFjaG1lbnQgaXMgaW4gcHJvZ3Jlc3MuICovCisJU1JTX0FGVEVSX1NUQVJUVVBfQVRU QUNIX09SX0lOSVQsCisKKwkvKiBOb3JtYWwgc3RhdGUgYWZ0ZXIgc2htZW0gaW5pdGlhbGl6 YXRpb24gLyBhdHRhY2htZW50ICovCisJU1JTX0RPTkUsCit9Oworc3RhdGljIGVudW0gc2ht ZW1fcmVxdWVzdF9zdGF0ZSBzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0lOSVRJQUw7CisK IC8qCiAgKiBUaGlzIGlzIHRoZSBmaXJzdCBkYXRhIHN0cnVjdHVyZSBzdG9yZWQgaW4gdGhl IHNoYXJlZCBtZW1vcnkgc2VnbWVudCwgYXQKICAqIHRoZSBvZmZzZXQgdGhhdCBQR1NobWVt SGVhZGVyLT5jb250ZW50X29mZnNldCBwb2ludHMgdG8uICBBbGxvY2F0aW9ucyBieQpAQCAt MTA1LDM1ICsyNDcsMzc5IEBAIHN0YXRpYyB2b2lkICpTaG1lbUJhc2U7CQkJLyogc3RhcnQg YWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5ICovCiBzdGF0aWMgdm9pZCAqU2htZW1FbmQ7CQkJ LyogZW5kKzEgYWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5ICovCiAKIHN0YXRpYyBTaG1lbUFs bG9jYXRvckRhdGEgKlNobWVtQWxsb2NhdG9yOwotc3RhdGljIEhUQUIgKlNobWVtSW5kZXgg PSBOVUxMOyAvKiBwcmltYXJ5IGluZGV4IGhhc2h0YWJsZSBmb3Igc2htZW0gKi8KKworLyoK KyAqIFNobWVtSW5kZXggaXMgYSBnbG9iYWwgZGlyZWN0b3J5IG9mIHNobWVtIGFyZWFzLCBp dHNlbGYgYWxzbyBzdG9yZWQgaW4gdGhlCisgKiBzaGFyZWQgbWVtb3J5LgorICovCitzdGF0 aWMgSFRBQiAqU2htZW1JbmRleDsKKworIC8qIG1heCBzaXplIG9mIGRhdGEgc3RydWN0dXJl IHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAoNDgpCisK Ky8qCisgKiAjIG9mIGFkZGl0aW9uYWwgZW50cmllcyB0byByZXNlcnZlIGluIHRoZSBzaG1l bSBpbmRleCB0YWJsZSwgZm9yCisgKiBhbGxvY2F0aW9ucyBhZnRlciBwb3N0bWFzdGVyIHN0 YXJ0dXAuICAoVGhpcyBpcyBub3QgYSBoYXJkIGxpbWl0LCB0aGUgaGFzaAorICogdGFibGUg Y2FuIGdyb3cgbGFyZ2VyIHRoYW4gdGhhdCBpZiB0aGVyZSBpcyBzaGFyZWQgbWVtb3J5IGF2 YWlsYWJsZSkKKyAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9BRERJVElPTkFMX1NJWkUJCSAo MTI4KQorCisvKiB0aGlzIGlzIGEgaGFzaCBidWNrZXQgaW4gdGhlIHNobWVtIGluZGV4IHRh YmxlICovCit0eXBlZGVmIHN0cnVjdAoreworCWNoYXIJCWtleVtTSE1FTV9JTkRFWF9LRVlT SVpFXTsJLyogc3RyaW5nIG5hbWUgKi8KKwl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0 aW9uIGluIHNoYXJlZCBtZW0gKi8KKwlTaXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVz dGVkIGZvciB0aGUgc3RydWN0dXJlICovCisJU2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMg Ynl0ZXMgYWN0dWFsbHkgYWxsb2NhdGVkICovCit9IFNobWVtSW5kZXhFbnQ7CiAKIC8qIFRv IGdldCByZWxpYWJsZSByZXN1bHRzIGZvciBOVU1BIGlucXVpcnkgd2UgbmVlZCB0byAidG91 Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBib29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsK IAorc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2FsbGJhY2tzQWZ0ZXJTdGFydHVwKGNvbnN0IFNo bWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOworc3RhdGljIHZvaWQgSW5pdFNobWVtSW5kZXhF bnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOworc3RhdGljIGJvb2wgQXR0YWNoU2htZW1J bmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKTsKKwog RGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpOwogCiAvKgotICog QSB2ZXJ5IHNpbXBsZSBhbGxvY2F0b3IgdXNlZCB0byBjYXJ2ZSBvdXQgZGlmZmVyZW50IHBh cnRzIG9mIGEgaGFzaCB0YWJsZQotICogZnJvbSBhIHByZXZpb3VzbHkgYWxsb2NhdGVkIGNv bnRpZ3VvdXMgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoJU2htZW1SZXF1ZXN0U3RydWN0KCkg LS0tIHJlcXVlc3QgYSBuYW1lZCBzaGFyZWQgbWVtb3J5IGFyZWEKKyAqCisgKiBTdWJzeXN0 ZW1zIGNhbGwgdGhpcyB0byByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5lZWRzLiAg VGhpcyBpcworICogdXN1YWxseSBkb25lIGVhcmx5IGluIHBvc3RtYXN0ZXIgc3RhcnR1cCwg YmVmb3JlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIGhhcyBiZWVuIGNyZWF0ZWQs IHNvIHRoYXQgdGhlIHNpemUgY2FuIGJlIGluY2x1ZGVkIGluIHRoZSBlc3RpbWF0ZSBmb3IK KyAqIHRvdGFsIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZC4gIFdlIHNldCBhc2lk ZSBhIHNtYWxsIGFtb3VudCBvZgorICogbWVtb3J5IGZvciBhbGxvY2F0aW9ucyB0aGF0IGhh cHBlbiBsYXRlciwgZm9yIHRoZSBiZW5lZml0IG9mIG5vbi1wcmVsb2FkZWQKKyAqIGV4dGVu c2lvbnMsIGJ1dCB0aGF0IHNob3VsZCBub3QgYmUgcmVsaWVkIHVwb24uCisgKgorICogVGhp cyBkb2VzIG5vdCB5ZXQgYWxsb2NhdGUgdGhlIG1lbW9yeSwgYnV0IG1lcmVseSByZWdpc3Rl ciB0aGUgbmVlZCBmb3IgaXQuCisgKiBUaGUgYWN0dWFsIGFsbG9jYXRpb24gaGFwcGVucyBs YXRlciBpbiB0aGUgcG9zdG1hc3RlciBzdGFydHVwIHNlcXVlbmNlLgorICoKKyAqIFRoaXMg bXVzdCBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVlc3QgY2FsbGJhY2sgZnVuY3Rpb24s IHJlZ2lzdGVyZWQgd2l0aAorICogUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygpLiAgVGhpcyBl bmZvcmNlcyBhIGNvZGluZyBwYXR0ZXJuIHRoYXQgd29ya3MgdGhlCisgKiBzYW1lIGluIG5v cm1hbCBVbml4IHN5c3RlbXMgYW5kIHdpdGggRVhFQ19CQUNLRU5ELiAgT24gVW5peCBzeXN0 ZW1zLCB0aGUKKyAqIHNobWVtX3JlcXVlc3QgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb25jZSwg ZWFybHkgaW4gcG9zdG1hc3RlciBzdGFydHVwLCBhbmQKKyAqIHRoZSBjaGlsZCBwcm9jZXNz ZXMgaW5oZXJpdCB0aGUgc3RydWN0IGRlc2NyaXB0b3JzIGFuZCBhbnkgb3RoZXIKKyAqIHBl ci1wcm9jZXNzIHN0YXRlIGZyb20gdGhlIHBvc3RtYXN0ZXIuICBJbiBFWEVDX0JBQ0tFTkQg bW9kZSwgc2htZW1fcmVxdWVzdAorICogY2FsbGJhY2tzIGFyZSAqYWxzbyogY2FsbGVkIGlu IGVhY2ggYmFja2VuZCwgYXQgYmFja2VuZCBzdGFydHVwLCB0bworICogcmUtZXN0YWJsaXNo IHRoZSBzdHJ1Y3QgZGVzY3JpcHRvcnMuICBCeSBjYWxsaW5nIHRoZSBzYW1lIGZ1bmN0aW9u IGluIGJvdGgKKyAqIGNhc2VzLCB3ZSBlbnN1cmUgdGhhdCBhbGwgdGhlIHNobWVtIGFyZWFz IGFyZSByZWdpc3RlcmVkIHRoZSBzYW1lIHdheSBpbgorICogYWxsIHByb2Nlc3Nlcy4KKyAq CisgKiAnZGVzYycgaXMgYSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZvciB0aGUgc2hhcmVk IG1lbW9yeSBhcmVhLgorICoKKyAqICdvcHRpb25zJyBkZWZpbmVzIHRoZSBuYW1lIGFuZCBz aXplIG9mIHRoZSBhcmVhLCBhbmQgYW55IG90aGVyIG9wdGlvbmFsCisgKiBmZWF0dXJlcy4g IExlYXZlIHVudXNlZCBvcHRpb25zIGFzIHplcm9zLiAgVGhlIG9wdGlvbnMgYXJlIGNvcGll ZCB0bworICogbG9uZ2VyLWxpdmVkIG1lbW9yeSwgc28gaXQgZG9lc24ndCBuZWVkIHRvIGxp dmUgYWZ0ZXIgdGhlCisgKiBTaG1lbVJlcXVlc3RTdHJ1Y3QoKSBjYWxsIGFuZCBjYW4gcG9p bnQgdG8gYSBsb2NhbCB2YXJpYWJsZSBpbiB0aGUgY2FsbGluZworICogZnVuY3Rpb24uICBU aGUgJ25hbWUnIG11c3QgcG9pbnQgdG8gYSBsb25nLWxpdmVkIHN0cmluZyB0aG91Z2gsIG9u bHkgdGhlCisgKiBwb2ludGVyIHRvIGl0IGlzIGNvcGllZC4KKyAqLwordm9pZAorU2htZW1S ZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKQor eworCVNobWVtU3RydWN0T3B0cyAqb3B0aW9uc19jb3B5OworCisJb3B0aW9uc19jb3B5ID0g TWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkgIHNpemVv ZihTaG1lbVN0cnVjdE9wdHMpKTsKKwltZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25zLCBz aXplb2YoU2htZW1TdHJ1Y3RPcHRzKSk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbChvcHRp b25zX2NvcHksIFNITUVNX0tJTkRfU1RSVUNUKTsKK30KKworLyoKKyAqIEludGVybmFsIHdv cmtob3JzZSBvZiBTaG1lbVJlcXVlc3RTdHJ1Y3QoKSBhbmQgU2htZW1SZXF1ZXN0SGFzaCgp LgorICoKKyAqIE5vdGU6ICdkZXNjJyBhbmQgJ29wdGlvbnMnIG11c3QgbGl2ZSB1bnRpbCB0 aGUgaW5pdC9hdHRhY2ggY2FsbGJhY2tzIGhhdmUKKyAqIGJlZW4gY2FsbGVkLiAgVW5saWtl IGluIHRoZSBwdWJsaWMgU2htZW1SZXF1ZXN0U3RydWN0KCkgYW5kCisgKiBTaG1lbVJlcXVl c3RIYXNoKCkgZnVuY3Rpb25zLCAnb3B0aW9ucycgaXMgKm5vdCogY29waWVkLiAgVGhpcyBh bGxvd3MKKyAqIFNobWVtUmVxdWVzdEhhc2goKSB0byBwYXNzIGEgcG9pbnRlciB0byB0aGUg ZXh0ZW5kZWQgU2htZW1SZXF1ZXN0SGFzaE9wdHMKKyAqIHN0cnVjdCBpbnN0ZWFkLgorICov Cit2b2lkCitTaG1lbVJlcXVlc3RJbnRlcm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMs IFNobWVtUmVxdWVzdEtpbmQga2luZCkKK3sKKwlTaG1lbVJlcXVlc3QgKnJlcXVlc3Q7CisK KwlpZiAob3B0aW9ucy0+bmFtZSA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAic2hhcmVkIG1l bW9yeSByZXF1ZXN0IGlzIG1pc3NpbmcgJ25hbWUnIG9wdGlvbiIpOworCisJaWYgKElzVW5k ZXJQb3N0bWFzdGVyKQorCXsKKwkJaWYgKG9wdGlvbnMtPnNpemUgPD0gMCAmJiBvcHRpb25z LT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIi LAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisJZWxzZQorCXsK KwkJaWYgKG9wdGlvbnMtPnNpemUgPT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKKwkJ CWVsb2coRVJST1IsICJTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1c2Vk IGR1cmluZyBzdGFydHVwIik7CisJCWlmIChvcHRpb25zLT5zaXplIDw9IDApCisJCQllbG9n KEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZv ciBcIiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisK KwlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSAhPSBTUlNfUkVRVUVTVElORykKKwkJZWxvZyhF UlJPUiwgIlNobWVtUmVxdWVzdFN0cnVjdCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHNo bWVtX3JlcXVlc3QgY2FsbGJhY2siKTsKKworCS8qIENoZWNrIHRoYXQgaXQncyBub3QgYWxy ZWFkeSByZWdpc3RlcmVkIGluIHRoaXMgcHJvY2VzcyAqLworCWZvcmVhY2hfcHRyKFNobWVt UmVxdWVzdCwgZXhpc3RpbmcsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlpZiAo c3RyY21wKGV4aXN0aW5nLT5vcHRpb25zLT5uYW1lLCBvcHRpb25zLT5uYW1lKSA9PSAwKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygic2hhcmVkIG1lbW9yeSBzdHJ1Y3Qg XCIlc1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCIsCisJCQkJCQkJb3B0aW9ucy0+bmFtZSkp KTsKKwl9CisKKwlyZXF1ZXN0ID0gcGFsbG9jKHNpemVvZihTaG1lbVJlcXVlc3QpKTsKKwly ZXF1ZXN0LT5vcHRpb25zID0gb3B0aW9uczsKKwlyZXF1ZXN0LT5raW5kID0ga2luZDsKKwlw ZW5kaW5nX3NobWVtX3JlcXVlc3RzID0gbGFwcGVuZChwZW5kaW5nX3NobWVtX3JlcXVlc3Rz LCByZXF1ZXN0KTsKK30KKworLyoKKyAqCVNobWVtR2V0UmVxdWVzdGVkU2l6ZSgpIC0tLSBl c3RpbWF0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgcmVnaXN0ZXJlZCBzaGFyZWQKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHN0cnVjdHVyZXMuCisgKgorICog VGhpcyBpcyBjYWxsZWQgb25jZSBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAsIGJlZm9yZSB0aGUg c2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiBoYXMgYmVlbiBjcmVhdGVkLgorICovCitzaXpl X3QKK1NobWVtR2V0UmVxdWVzdGVkU2l6ZSh2b2lkKQoreworCXNpemVfdAkJc2l6ZTsKKwor CS8qIG1lbW9yeSBuZWVkZWQgZm9yIHRoZSBTaG1lbUluZGV4ICovCisJc2l6ZSA9IGhhc2hf ZXN0aW1hdGVfc2l6ZShsaXN0X2xlbmd0aChwZW5kaW5nX3NobWVtX3JlcXVlc3RzKSArIFNI TUVNX0lOREVYX0FERElUSU9OQUxfU0laRSwKKwkJCQkJCQkgIHNpemVvZihTaG1lbUluZGV4 RW50KSk7CisJc2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCisJLyogbWVtb3J5IG5l ZWRlZCBmb3IgYWxsIHRoZSByZXF1ZXN0ZWQgYXJlYXMgKi8KKwlmb3JlYWNoX3B0cihTaG1l bVJlcXVlc3QsIHJlcXVlc3QsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSk7CisJCS8qIGNhbGN1 bGF0ZSBhbGlnbm1lbnQgcGFkZGluZyBsaWtlIFNobWVtQWxsb2NSYXcoKSBkb2VzICovCisJ CXNpemUgPSBDQUNIRUxJTkVBTElHTihzaXplKTsKKwl9CisKKwlyZXR1cm4gc2l6ZTsKK30K KworLyoKKyAqCVNobWVtSW5pdFJlcXVlc3RlZCgpIC0tLSBhbGxvY2F0ZSBhbmQgaW5pdGlh bGl6ZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeQorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBvbmNlIGF0IHBvc3Rt YXN0ZXIgc3RhcnR1cCwgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogaGFz IGJlZW4gY3JlYXRlZC4KKyAqLwordm9pZAorU2htZW1Jbml0UmVxdWVzdGVkKHZvaWQpCit7 CisJLyogU2hvdWxkIGJlIGNhbGxlZCBvbmx5IGJ5IHRoZSBwb3N0bWFzdGVyIG9yIGEgc3Rh bmRhbG9uZSBiYWNrZW5kLiAqLworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOworCUFz c2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMSVpJTkcpOworCisJLyoK KwkgKiBJbml0aWFsaXplIHRoZSBTaG1lbUluZGV4IGVudHJpZXMgYW5kIHBlcmZvcm0gYmFz aWMgaW5pdGlhbGl6YXRpb24gb2YKKwkgKiBhbGwgdGhlIHJlcXVlc3RlZCBtZW1vcnkgYXJl YXMuICBUaGVyZSBhcmUgbm8gY29uY3VycmVudCBwcm9jZXNzZXMgeWV0LAorCSAqIHNvIG5v IG5lZWQgZm9yIGxvY2tpbmcuCisJICovCisJZm9yZWFjaF9wdHIoU2htZW1SZXF1ZXN0LCBy ZXF1ZXN0LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQorCXsKKwkJSW5pdFNobWVtSW5kZXhF bnRyeShyZXF1ZXN0KTsKKwl9CisJbGlzdF9mcmVlX2RlZXAocGVuZGluZ19zaG1lbV9yZXF1 ZXN0cyk7CisJcGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9IE5JTDsKKworCS8qCisJICogQ2Fs bCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGluaXQgY2FsbGJhY2tzIHRvIGZpbmlzaCBpbml0 aWFsaXphdGlvbiBvZgorCSAqIGFsbCB0aGUgYXJlYXMuCisJICovCisJZm9yZWFjaF9wdHIo Y29uc3QgU2htZW1DYWxsYmFja3MsIGNhbGxiYWNrcywgcmVnaXN0ZXJlZF9zaG1lbV9jYWxs YmFja3MpCisJeworCQlpZiAoY2FsbGJhY2tzLT5pbml0X2ZuKQorCQkJY2FsbGJhY2tzLT5p bml0X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9hcmcpOworCX0KKworCXNobWVtX3JlcXVlc3Rf c3RhdGUgPSBTUlNfRE9ORTsKK30KKworLyoKKyAqIFJlLWVzdGFibGlzaCBwcm9jZXNzIHBy aXZhdGUgc3RhdGUgcmVsYXRlZCB0byBzaG1lbSBhcmVhcy4KKyAqCisgKiBUaGlzIGlzIGNh bGxlZCBhdCBiYWNrZW5kIHN0YXJ0dXAgaW4gRVhFQ19CQUNLRU5EIG1vZGUsIGluIGV2ZXJ5 IGJhY2tlbmQuCisgKi8KKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK3ZvaWQKK1NobWVtQXR0YWNo UmVxdWVzdGVkKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKiBNdXN0IGJlIGlu aXRpYWxpemluZyBhIChub24tc3RhbmRhbG9uZSkgYmFja2VuZCAqLworCUFzc2VydChJc1Vu ZGVyUG9zdG1hc3Rlcik7CisJQXNzZXJ0KFNobWVtQWxsb2NhdG9yLT5pbmRleCAhPSBOVUxM KTsKKwlBc3NlcnQoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfUkVRVUVTVElORyk7CisJ c2htZW1fcmVxdWVzdF9zdGF0ZSA9IFNSU19BVFRBQ0hJTkc7CisKKwlMV0xvY2tBY3F1aXJl KFNobWVtSW5kZXhMb2NrLCBMV19TSEFSRUQpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gYWxs IHRoZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzLgorCSAqLworCWZvcmVhY2hfcHRyKFNobWVt UmVxdWVzdCwgcmVxdWVzdCwgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7CisJCUF0dGFj aFNobWVtSW5kZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJfQorCWxpc3RfZnJlZV9kZWVw KHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBO SUw7CisKKwkvKiBDYWxsIGF0dGFjaCBjYWxsYmFja3MgKi8KKwlmb3JlYWNoKGxjLCByZWdp c3RlcmVkX3NobWVtX2NhbGxiYWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpj YWxsYmFja3MgPSAoY29uc3QgU2htZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKKworCQlp ZiAoY2FsbGJhY2tzLT5hdHRhY2hfZm4pCisJCQljYWxsYmFja3MtPmF0dGFjaF9mbihjYWxs YmFja3MtPmF0dGFjaF9mbl9hcmcpOworCX0KKworCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRl eExvY2spOworCisJc2htZW1fcmVxdWVzdF9zdGF0ZSA9IFNSU19ET05FOworfQorI2VuZGlm CisKKy8qCisgKiBJbnNlcnQgcmVxdWVzdGVkIHNobWVtIGFyZWEgaW50byB0aGUgc2hhcmVk IG1lbW9yeSBpbmRleCBhbmQgaW5pdGlhbGl6ZSBpdC4KKyAqCisgKiBOb3RlIHRoYXQgdGhp cyBvbmx5IGRvZXMgcGVyZm9ybXMgYmFzaWMgaW5pdGlhbGl6YXRpb24gZGVwZW5kaW5nIG9u CisgKiBTaG1lbVJlcXVlc3RLaW5kLCBsaWtlIHNldHRpbmcgdGhlIGdsb2JhbCBwb2ludGVy IHZhcmlhYmxlIHRvIHRoZSBhcmVhIGZvcgorICogU0hNRU1fS0lORF9TVFJVQ1Qgb3Igc2V0 dGluZyB1cCB0aGUgYmFja2VuZC1wcml2YXRlIEhUQUIgY29udHJvbCBzdHJ1Y3QuCisgKiBU aGlzIGRvZXMgKm5vdCogY2FsbCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGluaXQgY2FsbGJh Y2tzLiAgVGhhdCdzIGRvbmUKKyAqIGxhdGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMg aGF2ZSBiZWVuIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLgogICovCi10eXBlZGVmIHN0 cnVjdCBzaG1lbV9oYXNoX2FsbG9jYXRvcgorc3RhdGljIHZvaWQKK0luaXRTaG1lbUluZGV4 RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0KQogewotCWNoYXIJICAgKm5leHQ7CQkJLyog c3RhcnQgb2YgZnJlZSBzcGFjZSBpbiB0aGUgYXJlYSAqLwotCWNoYXIJICAgKmVuZDsJCQkv KiBlbmQgb2YgdGhlIHNobWVtIGFyZWEgKi8KLX0gc2htZW1faGFzaF9hbGxvY2F0b3I7CisJ Y29uc3QgY2hhciAqbmFtZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm5hbWU7CisJU2htZW1JbmRl eEVudCAqaW5kZXhfZW50cnk7CisJYm9vbAkJZm91bmQ7CisJc2l6ZV90CQlhbGxvY2F0ZWRf c2l6ZTsKKwl2b2lkCSAgICpzdHJ1Y3RQdHI7CisKKwkvKiBsb29rIGl0IHVwIGluIHRoZSBz aG1lbSBpbmRleCAqLworCWluZGV4X2VudHJ5ID0gKFNobWVtSW5kZXhFbnQgKikKKwkJaGFz aF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwgSEFTSF9FTlRFUl9OVUxMLCAmZm91bmQpOwor CWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNc IiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgbmFtZSk7CisJaWYgKCFpbmRleF9lbnRyeSkK Kwl7CisJCS8qIHRyaWVkIHRvIGFkZCBpdCB0byB0aGUgaGFzaCB0YWJsZSwgYnV0IHRoZXJl IHdhcyBubyBzcGFjZSAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT1VUX09GX01FTU9SWSksCisJCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0ZSBTaG1l bUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVjdHVyZSBcIiVzXCIiLAorCQkJCQkJbmFtZSkp KTsKKwl9CisKKwkvKgorCSAqIFdlIGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUgc2hhcmVk IG1lbW9yeSBpbmRleC4gIEFsbG9jYXRlIHJlcXVlc3RlZAorCSAqIGFtb3VudCBvZiBzaGFy ZWQgbWVtb3J5IGZvciBpdCwgYW5kIGluaXRpYWxpemUgdGhlIGluZGV4IGVudHJ5LgorCSAq LworCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwg JmFsbG9jYXRlZF9zaXplKTsKKwlpZiAoc3RydWN0UHRyID09IE5VTEwpCisJeworCQkvKiBv dXQgb2YgbWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4IGVudHJ5ICovCisJ CWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAor CQkJCSBlcnJtc2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1 cmUiCisJCQkJCQkiIFwiJXNcIiAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAorCQkJCQkJbmFt ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSkpKTsKKwl9CisJaW5kZXhfZW50cnktPnNpemUg PSByZXF1ZXN0LT5vcHRpb25zLT5zaXplOworCWluZGV4X2VudHJ5LT5hbGxvY2F0ZWRfc2l6 ZSA9IGFsbG9jYXRlZF9zaXplOworCWluZGV4X2VudHJ5LT5sb2NhdGlvbiA9IHN0cnVjdFB0 cjsKKworCS8qIEluaXRpYWxpemUgZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIHNobWVtIGFy ZWEgaXQgaXMgKi8KKwlzd2l0Y2ggKHJlcXVlc3QtPmtpbmQpCisJeworCQljYXNlIFNITUVN X0tJTkRfU1RSVUNUOgorCQkJaWYgKHJlcXVlc3QtPm9wdGlvbnMtPnB0cikKKwkJCQkqKHJl cXVlc3QtPm9wdGlvbnMtPnB0cikgPSBpbmRleF9lbnRyeS0+bG9jYXRpb247CisJCQlicmVh azsKKwkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CisJCQlzaG1lbV9oYXNoX2luaXQoc3RydWN0 UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIExv b2sgdXAgYSBuYW1lZCBzaG1lbSBhcmVhIGluIHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4IGFu ZCBhdHRhY2ggdG8gaXQuCisgKgorICogTm90ZSB0aGF0IHRoaXMgb25seSBwZXJmb3JtcyB0 aGUgYmFzaWMgYXR0YWNobWVudCBhY3Rpb25zIGRlcGVuZGluZyBvbgorICogU2htZW1SZXF1 ZXN0S2luZCwgbGlrZSBzZXR0aW5nIHRoZSBnbG9iYWwgcG9pbnRlciB2YXJpYWJsZSB0byB0 aGUgYXJlYSBmb3IKKyAqIFNITUVNX0tJTkRfU1RSVUNUIG9yIHNldHRpbmcgdXAgdGhlIGJh Y2tlbmQtcHJpdmF0ZSBIVEFCIGNvbnRyb2wgc3RydWN0LgorICogVGhpcyBkb2VzICpub3Qq IGNhbGwgdGhlIHN1YnN5c3RlbS1zcGVjaWZpYyBhdHRhY2ggY2FsbGJhY2tzLiAgVGhhdCdz IGRvbmUKKyAqIGxhdGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMgaGF2ZSBiZWVuIGlu aXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLgorICovCitzdGF0aWMgYm9vbAorQXR0YWNoU2ht ZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQor eworCWNvbnN0IGNoYXIgKm5hbWUgPSByZXF1ZXN0LT5vcHRpb25zLT5uYW1lOworCVNobWVt SW5kZXhFbnQgKmluZGV4X2VudHJ5OworCisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0g aW5kZXggKi8KKwlpbmRleF9lbnRyeSA9IChTaG1lbUluZGV4RW50ICopCisJCWhhc2hfc2Vh cmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRklORCwgTlVMTCk7CisJaWYgKCFpbmRleF9l bnRyeSkKKwl7CisJCWlmICghbWlzc2luZ19vaykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJtc2coImNvdWxkIG5vdCBmaW5kIFNobWVtSW5kZXggZW50cnkgZm9yIGRhdGEgc3Ry dWN0dXJlIFwiJXNcIiIsCisJCQkJCQkJcmVxdWVzdC0+b3B0aW9ucy0+bmFtZSkpKTsKKwkJ cmV0dXJuIGZhbHNlOworCX0KKworCS8qIENoZWNrIHRoYXQgdGhlIHNpemUgaW4gdGhlIGlu ZGV4IG1hdGNoZXMgdGhlIHJlcXVlc3QuICovCisJaWYgKGluZGV4X2VudHJ5LT5zaXplICE9 IHJlcXVlc3QtPm9wdGlvbnMtPnNpemUgJiYKKwkJcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSAh PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0 aCIgXAorCQkJCQkJIiBkaWZmZXJlbnQgc2l6ZTogZXhpc3RpbmcgJXp1LCByZXF1ZXN0ZWQg JXp1IiwKKwkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRpb25z LT5zaXplKSkpOworCX0KKworCS8qCisJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBw b2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCisJICogYXR0YWNoIGRl cGVuZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgorCSAqLworCXN3aXRj aCAocmVxdWVzdC0+a2luZCkKKwl7CisJCWNhc2UgU0hNRU1fS0lORF9TVFJVQ1Q6CisJCQlp ZiAocmVxdWVzdC0+b3B0aW9ucy0+cHRyKQorCQkJCSoocmVxdWVzdC0+b3B0aW9ucy0+cHRy KSA9IGluZGV4X2VudHJ5LT5sb2NhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFNITUVNX0tJ TkRfSEFTSDoKKwkJCXNobWVtX2hhc2hfYXR0YWNoKGluZGV4X2VudHJ5LT5sb2NhdGlvbiwg cmVxdWVzdC0+b3B0aW9ucyk7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30K IAogLyoKICAqCUluaXRTaG1lbUFsbG9jYXRvcigpIC0tLSBzZXQgdXAgYmFzaWMgcG9pbnRl cnMgdG8gc2hhcmVkIG1lbW9yeS4KICAqCiAgKiBDYWxsZWQgYXQgcG9zdG1hc3RlciBvciBz dGFuZC1hbG9uZSBiYWNrZW5kIHN0YXJ0dXAsIHRvIGluaXRpYWxpemUgdGhlCiAgKiBhbGxv Y2F0b3IncyBkYXRhIHN0cnVjdHVyZSBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAg SW4gRVhFQ19CQUNLRU5ELAotICogdGhpcyBpcyBhbHNvIGNhbGxlZCBhdCBiYWNrZW5kIHN0 YXJ0dXAsIHRvIHNldCB1cCBwb2ludGVycyB0byB0aGUgc2hhcmVkCi0gKiBtZW1vcnkgYXJl YXMuCisgKiB0aGlzIGlzIGFsc28gY2FsbGVkIGF0IGJhY2tlbmQgc3RhcnR1cCwgdG8gc2V0 IHVwIHBvaW50ZXJzIHRvIHRoZQorICogYWxyZWFkeS1pbml0aWFsaXplZCBkYXRhIHN0cnVj dHVyZS4KICAqLwogdm9pZAogSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNl Z2hkcikKIHsKIAlTaXplCQlvZmZzZXQ7CisJaW50NjQJCWhhc2hfbmVsZW1zOwogCUhBU0hD VEwJCWluZm87CiAJaW50CQkJaGFzaF9mbGFnczsKIApAQCAtMTQyLDYgKzYyOCwxNiBAQCBJ bml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogI2VuZGlmCiAJQXNz ZXJ0KHNlZ2hkciAhPSBOVUxMKTsKIAorCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwl7CisJ CUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwl9CisJZWxz ZQorCXsKKwkJQXNzZXJ0KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX1JFUVVFU1RJTkcp OworCQlzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0lOSVRJQUxJWklORzsKKwl9CisKIAkv KgogCSAqIFdlIGFzc3VtZSB0aGUgcG9pbnRlciBhbmQgb2Zmc2V0IGFyZSBNQVhBTElHTi4g IE5vdCBhIGhhcmQgcmVxdWlyZW1lbnQsCiAJICogYnV0IGl0J3MgdHJ1ZSB0b2RheSBhbmQg a2VlcHMgdGhlIG1hdGggYmVsb3cgc2ltcGxlci4KQEAgLTE4NiwxOSArNjgyLDIxIEBAIElu aXRTaG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpCiAJICogdXNlIFNobWVt SW5pdEhhc2goKSBoZXJlIGJlY2F1c2UgaXQgcmVsaWVzIG9uIFNobWVtSW5kZXggYmVpbmcg YWxyZWFkeQogCSAqIGluaXRpYWxpemVkLgogCSAqLworCWhhc2hfbmVsZW1zID0gbGlzdF9s ZW5ndGgocGVuZGluZ19zaG1lbV9yZXF1ZXN0cykgKyBTSE1FTV9JTkRFWF9BRERJVElPTkFM X1NJWkU7CisKIAlpbmZvLmtleXNpemUgPSBTSE1FTV9JTkRFWF9LRVlTSVpFOwogCWluZm8u ZW50cnlzaXplID0gc2l6ZW9mKFNobWVtSW5kZXhFbnQpOwogCWhhc2hfZmxhZ3MgPSBIQVNI X0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0ZJWEVEX1NJWkU7CiAKIAlpZiAoIUlzVW5k ZXJQb3N0bWFzdGVyKQogCXsKLQkJU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUgPSBoYXNo X2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhfU0laRSwgaW5mby5lbnRyeXNpemUpOworCQlT aG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShoYXNoX25l bGVtcywgaW5mby5lbnRyeXNpemUpOwogCQlTaG1lbUFsbG9jYXRvci0+aW5kZXggPSAoSEFT SEhEUiAqKSBTaG1lbUFsbG9jKFNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplKTsKIAl9CiAJ U2htZW1JbmRleCA9IHNobWVtX2hhc2hfY3JlYXRlKFNobWVtQWxsb2NhdG9yLT5pbmRleCwK IAkJCQkJCQkJICAgU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUsCiAJCQkJCQkJCSAgIElz VW5kZXJQb3N0bWFzdGVyLAotCQkJCQkJCQkgICAiU2htZW1JbmRleCIsIFNITUVNX0lOREVY X1NJWkUsCisJCQkJCQkJCSAgICJTaG1lbUluZGV4IiwgaGFzaF9uZWxlbXMsCiAJCQkJCQkJ CSAgICZpbmZvLCBoYXNoX2ZsYWdzKTsKIAlBc3NlcnQoU2htZW1JbmRleCAhPSBOVUxMKTsK IApAQCAtMjE5LDYgKzcxNywyMyBAQCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRl ciAqc2VnaGRyKQogCX0KIH0KIAorLyoKKyAqIFJlc2V0IHN0YXRlIG9uIHBvc3RtYXN0ZXIg Y3Jhc2ggcmVzdGFydC4KKyAqLwordm9pZAorUmVzZXRTaG1lbUFsbG9jYXRvcih2b2lkKQor eworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOworCXNobWVtX3JlcXVlc3Rfc3RhdGUg PSBTUlNfSU5JVElBTDsKKworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CisKKwkv KgorCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBjbGVhciB0aGUgcmVnaXN0ZXJlZCBjYWxsYmFj a3MuICBXZSB3aWxsIG5lZWQgdG8KKwkgKiBjYWxsIHRoZW0gYWdhaW4gYXMgd2UgcmVzdGFy dAorCSAqLworfQorCiAvKgogICogU2htZW1BbGxvYyAtLSBhbGxvY2F0ZSBtYXgtYWxpZ25l ZCBjaHVuayBmcm9tIHNoYXJlZCBtZW1vcnkKICAqCkBAIC0zMTYsOTIgKzgzMSwxOTEgQEAg U2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKQogfQogCiAvKgotICogU2htZW1J bml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1l bW9yeS4KKyAqIFJlZ2lzdGVyIGNhbGxiYWNrcyB0aGF0IGRlZmluZSBhIHNoYXJlZCBtZW1v cnkgYXJlYSAob3IgbXVsdGlwbGUgYXJlYXMpLgogICoKLSAqCQlUaGlzIGlzIGNhbGxlZCBk dXJpbmcgaW5pdGlhbGl6YXRpb24gdG8gZmluZCBvciBhbGxvY2F0ZQotICoJCWEgZGF0YSBz dHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9yeS4gIElmIG5vIG90aGVyIHByb2Nlc3MKLSAqCQlo YXMgY3JlYXRlZCB0aGUgc3RydWN0dXJlLCB0aGlzIHJvdXRpbmUgYWxsb2NhdGVzIHNwYWNl Ci0gKgkJZm9yIGl0LiAgSWYgaXQgZXhpc3RzIGFscmVhZHksIGEgcG9pbnRlciB0byB0aGUg ZXhpc3RpbmcKLSAqCQlzdHJ1Y3R1cmUgaXMgcmV0dXJuZWQuCisgKiBUaGUgc3lzdGVtIHdp bGwgY2FsbCB0aGUgY2FsbGJhY2tzIGF0IGRpZmZlcmVudCBzdGFnZXMgb2YgcG9zdG1hc3Rl ciBvcgorICogYmFja2VuZCBzdGFydHVwLCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0 aGUgYXJlYS4KICAqCi0gKglSZXR1cm5zOiBwb2ludGVyIHRvIHRoZSBvYmplY3QuICAqZm91 bmRQdHIgaXMgc2V0IHRydWUgaWYgdGhlIG9iamVjdCB3YXMKLSAqCQlhbHJlYWR5IGluIHRo ZSBzaG1lbSBpbmRleCAoaGVuY2UsIGFscmVhZHkgaW5pdGlhbGl6ZWQpLgorICogVGhpcyBp cyBub3JtYWxseSBjYWxsZWQgZWFybHkgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYnV0 IGlmIHRoZQorICogU0hNRU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVAgaXMgc2V0 LCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgYWZ0ZXIKKyAqIHN0YXJ0dXAsIGFsdGhvdWdoIGFm dGVyIHN0YXJ0dXAgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGVyZSdzIGVub3VnaAor ICogc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuICBXaGVuIGNhbGxlZCBhZnRlciBzdGFydHVw LCB0aGlzIGltbWVkaWF0ZWx5IGNhbGxzCisgKiB0aGUgcmlnaHQgY2FsbGJhY2tzIGRlcGVu ZGluZyBvbiB3aGV0aGVyIGFub3RoZXIgYmFja2VuZCBoYWQgYWxyZWFkeQorICogaW5pdGlh bGl6ZWQgdGhlIGFyZWEuCiAgKgotICoJTm90ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhp cyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIGZvciBzb21lIGZhaWx1cmUKLSAqCWNhc2VzLiAg Tm93LCBpdCBhbHdheXMgdGhyb3dzIGVycm9yIGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBu b3QgY2hlY2sKLSAqCWZvciBOVUxMLgorICogTm90ZTogSW4gRVhFQ19CQUNLRU5EIG1vZGUs IHRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGluIGV2ZXJ5IGJhY2tlbmQKKyAqIHByb2Nlc3Mu ICBUaGF0J3MgbmVlZGVkIGJlY2F1c2Ugd2UgY2Fubm90IHBhc3MgZG93biB0aGUgY2FsbGJh Y2sgZnVuY3Rpb24KKyAqIHBvaW50ZXJzIGZyb20gdGhlIHBvc3RtYXN0ZXIgcHJvY2Vzcywg YmVjYXVzZSBkaWZmZXJlbnQgcHJvY2Vzc2VzIG1heSBoYXZlCisgKiBsb2FkZWQgbGlicmFy aWVzIHRvIGRpZmZlcmVudCBhZGRyZXNzZXMuCiAgKi8KLXZvaWQgKgotU2htZW1Jbml0U3Ry dWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCit2b2lk CitSZWdpc3RlclNobWVtQ2FsbGJhY2tzKGNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFj a3MpCiB7Ci0JU2htZW1JbmRleEVudCAqcmVzdWx0OwotCXZvaWQJICAgKnN0cnVjdFB0cjsK KwlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfRE9ORSAmJiBJc1VuZGVyUG9zdG1h c3RlcikKKwl7CisJCS8qCisJCSAqIEFmdGVyLXN0YXJ0dXAgaW5pdGlhbGl6YXRpb24gb3Ig YXR0YWNobWVudC4gIENhbGwgdGhlIGFwcHJvcHJpYXRlCisJCSAqIGNhbGxiYWNrcyBpbW1t ZWRpYXRlbHkuCisJCSAqLworCQlpZiAoKGNhbGxiYWNrcy0+ZmxhZ3MgJiBTSE1FTV9DQUxM QkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUCkgPT0gMCkKKwkJCWVsb2coRVJST1IsICJjYW5u b3QgcmVxdWVzdCBzaGFyZWQgbWVtb3J5IGF0IHRoaXMgdGltZSIpOwogCi0JQXNzZXJ0KFNo bWVtSW5kZXggIT0gTlVMTCk7CisJCUNhbGxTaG1lbUNhbGxiYWNrc0FmdGVyU3RhcnR1cChj YWxsYmFja3MpOworCX0KKwllbHNlCisJeworCQkvKiBSZW1lbWJlciB0aGUgY2FsbGJhY2tz IGZvciBsYXRlciAqLworCQlyZWdpc3RlcmVkX3NobWVtX2NhbGxiYWNrcyA9IGxhcHBlbmQo cmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3MsCisJCQkJCQkJCQkJCSAodm9pZCAqKSBjYWxs YmFja3MpOworCX0KK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgc2htZW0gYXJlYSAob3IgbXVs dGlwbGUgYXJlYXMpIGFmdGVyIHN0YXJ0dXAuCisgKi8KK3N0YXRpYyB2b2lkCitDYWxsU2ht ZW1DYWxsYmFja3NBZnRlclN0YXJ0dXAoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNr cykKK3sKKwlib29sCQlmb3VuZF9hbnk7CisJYm9vbAkJbm90Zm91bmRfYW55OworCisJQXNz ZXJ0KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX0RPTkUpOworCXNobWVtX3JlcXVlc3Rf c3RhdGUgPSBTUlNfUkVRVUVTVElORzsKKworCS8qCisJICogQ2FsbCB0aGUgcmVxdWVzdCBj YWxsYmFjayBmaXJzdC4gVGhlIGNhbGxiYWNrIG1ha2UgU2htZW1SZXF1ZXN0KigpCisJICog Y2FsbHMgZm9yIGVhY2ggc2htZW0gYXJlYSwgYWRkaW5nIHRoZW0gdG8gcGVuZGluZ19zaG1l bV9yZXF1ZXN0cy4KKwkgKi8KKwlBc3NlcnQocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9PSBO SUwpOworCWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJCWNhbGxiYWNrcy0+cmVxdWVz dF9mbihjYWxsYmFja3MtPnJlcXVlc3RfZm5fYXJnKTsKKwlzaG1lbV9yZXF1ZXN0X3N0YXRl ID0gU1JTX0FGVEVSX1NUQVJUVVBfQVRUQUNIX09SX0lOSVQ7CisKKwlpZiAocGVuZGluZ19z aG1lbV9yZXF1ZXN0cyA9PSBOSUwpCisJeworCQlzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JT X0RPTkU7CisJCXJldHVybjsKKwl9CiAKKwkvKiBIb2xkIFNobWVtSW5kZXhMb2NrIHdoaWxl IHdlIGFsbG9jYXRlIGFsbCB0aGUgc2htZW0gZW50cmllcyAqLwogCUxXTG9ja0FjcXVpcmUo U2htZW1JbmRleExvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLwotCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopCi0JCWhhc2hf c2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRU5URVJfTlVMTCwgZm91bmRQdHIpOwor CS8qCisJICogQ2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBzaGFyZWQgbWVtb3J5IGFyZWFzIGhh dmUgYWxyZWFkeSBiZWVuCisJICogaW5pdGlhbGl6ZWQuICBXZSBhc3N1bWUgYWxsIHRoZSBh cmVhcyByZXF1ZXN0ZWQgYnkgdGhlIHJlcXVlc3QgY2FsbGJhY2sKKwkgKiB0byBmb3JtIGEg Y29oZXJlbnQgdW5pdCBzdWNoIHRoYXQgdGhleSdyZSBhbGwgYWxyZWFkeSBpbml0aWFsaXpl ZCBvcgorCSAqIG5vbmUuICBPdGhlcndpc2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIHdoaWNo IGNhbGxiYWNrLCBpbml0IG9yIGF0dGFjaCwKKwkgKiB0byBjYWxsYmFjayBhZnRlcndhcmRz LgorCSAqLworCWZvdW5kX2FueSA9IG5vdGZvdW5kX2FueSA9IGZhbHNlOworCWZvcmVhY2hf cHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7 CisJCWlmIChoYXNoX3NlYXJjaChTaG1lbUluZGV4LCByZXF1ZXN0LT5vcHRpb25zLT5uYW1l LCBIQVNIX0ZJTkQsIE5VTEwpKQorCQkJZm91bmRfYW55ID0gdHJ1ZTsKKwkJZWxzZQorCQkJ bm90Zm91bmRfYW55ID0gdHJ1ZTsKKwl9CisJaWYgKGZvdW5kX2FueSAmJiBub3Rmb3VuZF9h bnkpCisJCWVsb2coRVJST1IsICJmb3VuZCBzb21lIGJ1dCBub3QgYWxsIik7CiAKLQlpZiAo IXJlc3VsdCkKKwkvKgorCSAqIEFsbG9jYXRlIG9yIGF0dGFjaCBhbGwgdGhlIHNobWVtIGFy ZWFzIHJlcXVlc3RlZCBieSB0aGUgcmVxdWVzdF9mbgorCSAqIGNhbGxiYWNrLgorCSAqLwor CWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwgcGVuZGluZ19zaG1lbV9yZXF1 ZXN0cykKIAl7Ci0JCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQllcmVwb3J0 KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJIGVy cm1zZygiY291bGQgbm90IGNyZWF0ZSBTaG1lbUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVj dHVyZSBcIiVzXCIiLAotCQkJCQkJbmFtZSkpKTsKKwkJaWYgKGZvdW5kX2FueSkKKwkJCUF0 dGFjaFNobWVtSW5kZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJCWVsc2UKKwkJCUluaXRT aG1lbUluZGV4RW50cnkocmVxdWVzdCk7CiAJfQorCWxpc3RfZnJlZV9kZWVwKHBlbmRpbmdf c2htZW1fcmVxdWVzdHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CiAKLQlp ZiAoKmZvdW5kUHRyKQorCS8qIEZpbmlzaCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBz dWJzeXN0ZW0tc3BlY2lmaWMgY2FsbGJhY2sgKi8KKwlpZiAoZm91bmRfYW55KQogCXsKLQkJ LyoKLQkJICogU3RydWN0dXJlIGlzIGluIHRoZSBzaG1lbSBpbmRleCBzbyBzb21lb25lIGVs c2UgaGFzIGFsbG9jYXRlZCBpdAotCQkgKiBhbHJlYWR5LiAgVGhlIHNpemUgYmV0dGVyIGJl IHRoZSBzYW1lIGFzIHRoZSBzaXplIHdlIGFyZSB0cnlpbmcgdG8KLQkJICogaW5pdGlhbGl6 ZSB0bywgb3IgdGhlcmUgaXMgYSBuYW1lIGNvbmZsaWN0IChvciB3b3JzZSkuCi0JCSAqLwot CQlpZiAocmVzdWx0LT5zaXplICE9IHNpemUpCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoU2ht ZW1JbmRleExvY2spOwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycm1zZygiU2htZW1J bmRleCBlbnRyeSBzaXplIGlzIHdyb25nIGZvciBkYXRhIHN0cnVjdHVyZSIKLQkJCQkJCQki IFwiJXNcIjogZXhwZWN0ZWQgJXp1LCBhY3R1YWwgJXp1IiwKLQkJCQkJCQluYW1lLCBzaXpl LCByZXN1bHQtPnNpemUpKSk7Ci0JCX0KLQkJc3RydWN0UHRyID0gcmVzdWx0LT5sb2NhdGlv bjsKKwkJaWYgKGNhbGxiYWNrcy0+YXR0YWNoX2ZuKQorCQkJY2FsbGJhY2tzLT5hdHRhY2hf Zm4oY2FsbGJhY2tzLT5hdHRhY2hfZm5fYXJnKTsKIAl9CiAJZWxzZQogCXsKLQkJU2l6ZQkJ YWxsb2NhdGVkX3NpemU7Ci0KLQkJLyogSXQgaXNuJ3QgaW4gdGhlIHRhYmxlIHlldC4gYWxs b2NhdGUgYW5kIGluaXRpYWxpemUgaXQgKi8KLQkJc3RydWN0UHRyID0gU2htZW1BbGxvY1Jh dyhzaXplLCAmYWxsb2NhdGVkX3NpemUpOwotCQlpZiAoc3RydWN0UHRyID09IE5VTEwpCi0J CXsKLQkJCS8qIG91dCBvZiBtZW1vcnk7IHJlbW92ZSB0aGUgZmFpbGVkIFNobWVtSW5kZXgg ZW50cnkgKi8KLQkJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZF LCBOVUxMKTsKLQkJCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKLQkJCQkJ IGVycm1zZygibm90IGVub3VnaCBzaGFyZWQgbWVtb3J5IGZvciBkYXRhIHN0cnVjdHVyZSIK LQkJCQkJCQkiIFwiJXNcIiAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAotCQkJCQkJCW5hbWUs IHNpemUpKSk7Ci0JCX0KLQkJcmVzdWx0LT5zaXplID0gc2l6ZTsKLQkJcmVzdWx0LT5hbGxv Y2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXplOwotCQlyZXN1bHQtPmxvY2F0aW9uID0gc3Ry dWN0UHRyOworCQlpZiAoY2FsbGJhY2tzLT5pbml0X2ZuKQorCQkJY2FsbGJhY2tzLT5pbml0 X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9hcmcpOwogCX0KIAogCUxXTG9ja1JlbGVhc2UoU2ht ZW1JbmRleExvY2spOworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfRE9ORTsKK30KIAot CUFzc2VydChTaG1lbUFkZHJJc1ZhbGlkKHN0cnVjdFB0cikpOworLyoKKyAqIENhbGwgYWxs IHNobWVtIHJlcXVlc3QgY2FsbGJhY2tzLgorICovCit2b2lkCitTaG1lbUNhbGxSZXF1ZXN0 Q2FsbGJhY2tzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CiAKLQlBc3NlcnQoc3RydWN0 UHRyID09ICh2b2lkICopIENBQ0hFTElORUFMSUdOKHN0cnVjdFB0cikpOworCUFzc2VydChz aG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwlzaG1lbV9yZXF1ZXN0X3N0 YXRlID0gU1JTX1JFUVVFU1RJTkc7CisKKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVt X2NhbGxiYWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAo Y29uc3QgU2htZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKIAotCXJldHVybiBzdHJ1Y3RQ dHI7CisJCWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJCQljYWxsYmFja3MtPnJlcXVl c3RfZm4oY2FsbGJhY2tzLT5yZXF1ZXN0X2ZuX2FyZyk7CisJfQogfQogCisvKgorICogU2ht ZW1Jbml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVk IG1lbW9yeS4KKyAqCisgKgkJVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9u IHRvIGZpbmQgb3IgYWxsb2NhdGUKKyAqCQlhIGRhdGEgc3RydWN0dXJlIGluIHNoYXJlZCBt ZW1vcnkuICBJZiBubyBvdGhlciBwcm9jZXNzCisgKgkJaGFzIGNyZWF0ZWQgdGhlIHN0cnVj dHVyZSwgdGhpcyByb3V0aW5lIGFsbG9jYXRlcyBzcGFjZQorICoJCWZvciBpdC4gIElmIGl0 IGV4aXN0cyBhbHJlYWR5LCBhIHBvaW50ZXIgdG8gdGhlIGV4aXN0aW5nCisgKgkJc3RydWN0 dXJlIGlzIHJldHVybmVkLgorICoKKyAqCVJldHVybnM6IHBvaW50ZXIgdG8gdGhlIG9iamVj dC4gICpmb3VuZFB0ciBpcyBzZXQgdHJ1ZSBpZiB0aGUgb2JqZWN0IHdhcworICoJCWFscmVh ZHkgaW4gdGhlIHNobWVtIGluZGV4IChoZW5jZSwgYWxyZWFkeSBpbml0aWFsaXplZCkuCisg KgorICogTm90ZTogVGhpcyBpcyBhIGxlZ2FjeSBpbnRlcmZhY2UsIGtlcHQgZm9yIGJhY2t3 YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAqIGV4dGVuc2lvbnMuICBVc2UgU2htZW1SZXF1 ZXN0U3RydWN0KCkgaW4gbmV3IGNvZGUhCisgKi8KK3ZvaWQgKgorU2htZW1Jbml0U3RydWN0 KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCit7CisJdm9p ZAkgICAqcHRyID0gTlVMTDsKKwlTaG1lbVN0cnVjdE9wdHMgb3B0aW9ucyA9IHsKKwkJLm5h bWUgPSBuYW1lLAorCQkuc2l6ZSA9IHNpemUsCisJCS5wdHIgPSAmcHRyLAorCX07CisJU2ht ZW1SZXF1ZXN0IHJlcXVlc3QgPSB7Jm9wdGlvbnMsIFNITUVNX0tJTkRfU1RSVUNUfTsKKwor CUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19ET05FIHx8CisJCSAgIHNobWVt X3JlcXVlc3Rfc3RhdGUgPT0gU1JTX0lOSVRJQUxJWklORyB8fAorCQkgICBzaG1lbV9yZXF1 ZXN0X3N0YXRlID09IFNSU19SRVFVRVNUSU5HKTsKKworCUxXTG9ja0FjcXVpcmUoU2htZW1J bmRleExvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIER1cmluZyBwb3N0bWFzdGVy IHN0YXJ0dXAsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIGVudHJ5IGlmIGFueS4KKwkgKi8KKwkq Zm91bmRQdHIgPSBmYWxzZTsKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCSpmb3VuZFB0 ciA9IEF0dGFjaFNobWVtSW5kZXhFbnRyeSgmcmVxdWVzdCwgdHJ1ZSk7CisKKwkvKiBJbml0 aWFsaXplIGl0IGlmIG5vdCBmb3VuZCAqLworCWlmICghKmZvdW5kUHRyKQorCQlJbml0U2ht ZW1JbmRleEVudHJ5KCZyZXF1ZXN0KTsKKworCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExv Y2spOworCisJQXNzZXJ0KHB0ciAhPSBOVUxMKTsKKwlyZXR1cm4gcHRyOworfQogCiAvKgog ICogQWRkIHR3byBTaXplIHZhbHVlcywgY2hlY2tpbmcgZm9yIG92ZXJmbG93CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKaW5kZXggMGIwNTczMDEyOWUuLmFiMzA0NjFm MjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCkBAIC0yMSw5ICsy MSw4MSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgorI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisKKy8qCisgKiBBIHZlcnkgc2ltcGxlIGFsbG9jYXRvciB1 c2VkIHRvIGNhcnZlIG91dCBkaWZmZXJlbnQgcGFydHMgb2YgYSBoYXNoIHRhYmxlCisgKiBm cm9tIGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgY29udGlndW91cyBzaGFyZWQgbWVtb3J5IGFy ZWEuCisgKi8KK3R5cGVkZWYgc3RydWN0IHNobWVtX2hhc2hfYWxsb2NhdG9yCit7CisJY2hh cgkgICAqbmV4dDsJCQkvKiBzdGFydCBvZiBmcmVlIHNwYWNlIGluIHRoZSBhcmVhICovCisJ Y2hhcgkgICAqZW5kOwkJCS8qIGVuZCBvZiB0aGUgc2htZW0gYXJlYSAqLworfSBzaG1lbV9o YXNoX2FsbG9jYXRvcjsKIAogc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6 ZSwgdm9pZCAqYWxsb2NfYXJnKTsKIAorLyoKKyAqIFNobWVtUmVxdWVzdEhhc2ggLS0gUmVx dWVzdCBhIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KKyAqCisgKiBTaW1pbGFyIHRvIFNo bWVtUmVxdWVzdFN0cnVjdCgpLCBidXQgcmVxdWVzdHMgYSBoYXNoIHRhYmxlIGluc3RlYWQg b2YgYW4KKyAqIG9wYXF1ZSBhcmVhLgorICovCit2b2lkCitTaG1lbVJlcXVlc3RIYXNoV2l0 aE9wdHMoY29uc3QgU2htZW1IYXNoT3B0cyAqb3B0aW9ucykKK3sKKwlTaG1lbUhhc2hPcHRz ICpvcHRpb25zX2NvcHk7CisKKwlBc3NlcnQob3B0aW9ucy0+bmFtZSAhPSBOVUxMKTsKKwor CW9wdGlvbnNfY29weSA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJICBzaXplb2YoU2htZW1IYXNoT3B0cykpOworCW1lbWNweShvcHRpb25zX2Nv cHksIG9wdGlvbnMsIHNpemVvZihTaG1lbUhhc2hPcHRzKSk7CisKKwkvKiBTZXQgb3B0aW9u cyBmb3IgdGhlIGZpeGVkLXNpemUgYXJlYSBob2xkaW5nIHRoZSBoYXNoIHRhYmxlICovCisJ b3B0aW9uc19jb3B5LT5iYXNlLm5hbWUgPSBvcHRpb25zLT5uYW1lOworCW9wdGlvbnNfY29w eS0+YmFzZS5zaXplID0gaGFzaF9lc3RpbWF0ZV9zaXplKG9wdGlvbnNfY29weS0+bmVsZW1z LAorCQkJCQkJCQkJCQkJIG9wdGlvbnNfY29weS0+aGFzaF9pbmZvLmVudHJ5c2l6ZSk7CisK KwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0aW9uc19jb3B5LT5iYXNlLCBTSE1FTV9LSU5E X0hBU0gpOworfQorCit2b2lkCitzaG1lbV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNo bWVtU3RydWN0T3B0cyAqYmFzZV9vcHRpb25zKQoreworCVNobWVtSGFzaE9wdHMgKm9wdGlv bnMgPSAoU2htZW1IYXNoT3B0cyAqKSBiYXNlX29wdGlvbnM7CisJaW50CQkJaGFzaF9mbGFn cyA9IG9wdGlvbnMtPmhhc2hfZmxhZ3M7CisJSFRBQgkgICAqaHRhYjsKKworCW9wdGlvbnMt Pmhhc2hfaW5mby5oY3RsID0gbG9jYXRpb247CisJaHRhYiA9IHNobWVtX2hhc2hfY3JlYXRl KGxvY2F0aW9uLCBvcHRpb25zLT5iYXNlLnNpemUsIGZhbHNlLAorCQkJCQkJCSBvcHRpb25z LT5uYW1lLAorCQkJCQkJCSBvcHRpb25zLT5uZWxlbXMsICZvcHRpb25zLT5oYXNoX2luZm8s IGhhc2hfZmxhZ3MpOworCisJaWYgKG9wdGlvbnMtPnB0cikKKwkJKm9wdGlvbnMtPnB0ciA9 IGh0YWI7Cit9CisKK3ZvaWQKK3NobWVtX2hhc2hfYXR0YWNoKHZvaWQgKmxvY2F0aW9uLCBT aG1lbVN0cnVjdE9wdHMgKmJhc2Vfb3B0aW9ucykKK3sKKwlTaG1lbUhhc2hPcHRzICpvcHRp b25zID0gKFNobWVtSGFzaE9wdHMgKikgYmFzZV9vcHRpb25zOworCWludAkJCWhhc2hfZmxh Z3MgPSBvcHRpb25zLT5oYXNoX2ZsYWdzOworCUhUQUIJICAgKmh0YWI7CisKKwkvKiBhdHRh Y2ggdG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgbmV3IHNwYWNl ICovCisJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKKwlvcHRpb25zLT5oYXNoX2luZm8u aGN0bCA9IGxvY2F0aW9uOworCUFzc2VydChvcHRpb25zLT5oYXNoX2luZm8uaGN0bCAhPSBO VUxMKTsKKwlodGFiID0gc2htZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIG9wdGlvbnMtPmJh c2Uuc2l6ZSwgdHJ1ZSwKKwkJCQkJCQkgb3B0aW9ucy0+bmFtZSwKKwkJCQkJCQkgb3B0aW9u cy0+bmVsZW1zLCAmb3B0aW9ucy0+aGFzaF9pbmZvLCBoYXNoX2ZsYWdzKTsKKworCWlmIChv cHRpb25zLT5wdHIpCisJCSpvcHRpb25zLT5wdHIgPSBodGFiOworfQorCiAvKgogICogU2ht ZW1Jbml0SGFzaCAtLSBDcmVhdGUgYW5kIGluaXRpYWxpemUsIG9yIGF0dGFjaCB0bywgYQog ICoJCXNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KQEAgLTQwLDkgKzExMiw4IEBAIHN0YXRp YyB2b2lkICpTaG1lbUhhc2hBbGxvYyhTaXplIHNpemUsIHZvaWQgKmFsbG9jX2FyZyk7CiAg KiB0byBzaGFyZWQtbWVtb3J5IGhhc2ggdGFibGVzIGFyZSBhZGRlZCBoZXJlLCBleGNlcHQg dGhhdCBjYWxsZXJzIG1heQogICogY2hvb3NlIHRvIHNwZWNpZnkgSEFTSF9QQVJUSVRJT04u CiAgKgotICogTm90ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhpcyBmdW5jdGlvbiByZXR1 cm5lZCBOVUxMIGZvciBzb21lIGZhaWx1cmUKLSAqIGNhc2VzLiAgTm93LCBpdCBhbHdheXMg dGhyb3dzIGVycm9yIGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBub3QgY2hlY2sKLSAqIGZv ciBOVUxMLgorICogTm90ZTogVGhpcyBpcyBhIGxlZ2FjeSBpbnRlcmZhY2UsIGtlcHQgZm9y IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAqIGV4dGVuc2lvbnMuICBVc2UgU2ht ZW1SZXF1ZXN0SGFzaCgpIGluIG5ldyBjb2RlIQogICovCiBIVEFCICoKIFNobWVtSW5pdEhh c2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBp bmRleCAqLwpAQCAtNTYsNyArMTI3LDE0IEBAIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAq bmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwogCiAJc2l6 ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShuZWxlbXMsIGluZm9QLT5lbnRyeXNpemUpOwogCi0J LyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggb3IgYWxsb2NhdGUgKi8KKwkvKgor CSAqIExvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlLgorCSAqCisJ ICogTk9URTogVGhlIGFyZWEgaXMgcmVxdWVzdGVkIGludGVybmFsbHkgYXMgU0hNRU1fS0lO RF9TVFJVQ1QgaW5zdGVhZCBvZgorCSAqIFNITUVNX0tJTkRfSEFTSC4gIFRoYXQncyBjb3Jy ZWN0IGJlY2F1c2Ugd2UgZG8gdGhlIGhhc2ggdGFibGUKKwkgKiBpbml0aWFsaXphdGlvbiBi eSBjYWxsaW5nIHNobWVtX2hhc2hfY3JlYXRlKCkgb3Vyc2VsdmVzLiAgKFdlIGRvbid0CisJ ICogZXhwb3NlIHRoZSByZXF1ZXN0IGtpbmQgdG8gdXNlcnM7IGlmIHdlIGRpZCwgdGhhdCB3 b3VsZCBiZSBjb25mdXNpbmcuKQorCSAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0 KG5hbWUsIHNpemUsICZmb3VuZCk7CiAKIAlyZXR1cm4gc2htZW1faGFzaF9jcmVhdGUobG9j YXRpb24sIHNpemUsIGZvdW5kLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNWM0 N2NmMTM0NzMuLjliODgwYTZhZjY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAg LTEyMSw2ICsxMjEsOSBAQCBGYXN0UGF0aExvY2tTaG1lbVNpemUodm9pZCkKIAogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFByb2NzLCAoZnBMb2NrQml0c1NpemUg KyBmcFJlbElkU2l6ZSkpKTsKIAorCUFzc2VydChUb3RhbFByb2NzID4gMCk7CisJQXNzZXJ0 KHNpemUgPiAwKTsKKwogCXJldHVybiBzaXplOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggMTBiZTYwMDExYWQuLjkzODUxMjY5ZTQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC02 Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Np bnZhbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInRjb3Av YmFja2VuZF9zdGFydHVwLmgiCkBAIC00MTU1LDcgKzQxNTYsMTQgQEAgUG9zdGdyZXNTaW5n bGVVc2VyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCUluaXRpYWxpemVGYXN0UGF0 aExvY2tzKCk7CiAKIAkvKgotCSAqIEdpdmUgcHJlbG9hZGVkIGxpYnJhcmllcyBhIGNoYW5j ZSB0byByZXF1ZXN0IGFkZGl0aW9uYWwgc2hhcmVkIG1lbW9yeS4KKwkgKiBCZWZvcmUgY29t cHV0aW5nIHRoZSB0b3RhbCBzaXplIG5lZWRlZCwgZ2l2ZSBhbGwgc3Vic3lzdGVtcywgaW5j bHVkaW5nCisJICogYWRkLWlucywgYSBjaGFuY2UgdG8gY2hhbmNlIHRvIGFkanVzdCB0aGVp ciByZXF1ZXN0ZWQgc2htZW0gc2l6ZXMuCisJICovCisJU2htZW1DYWxsUmVxdWVzdENhbGxi YWNrcygpOworCisJLyoKKwkgKiBBbHNvIGNhbGwgYW55IGxlZ2FjeSBzaG1lbSByZXF1ZXN0 IGhvb2tzIHRoYXQgbWlnaHQnYmUgYmVlbiBpbnN0YWxsZWQKKwkgKiBieSBwcmVsb2FkZWQg bGlicmFyaWVzLgogCSAqLwogCXByb2Nlc3Nfc2htZW1fcmVxdWVzdHMoKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zaG1lbS5oCmluZGV4IDgyZjU0MDNjOTUyLi4xNDdhNjkxNWY3ZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaApAQCAtMyw2ICszLDExIEBACiAgKiBzaG1lbS5oCiAgKgkgIHNoYXJlZCBtZW1v cnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmVzCiAgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHB1 YmxpYyBmdW5jdGlvbnMgZm9yIG90aGVyIGNvcmUgc3Vic3lzdGVtcyBhbmQKKyAqIGV4dGVu c2lvbnMgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS4gIEludGVybmFsIGZ1bmN0aW9ucyBm b3IgdGhlIHNobWVtCisgKiBhbGxvY2F0b3IgaXRzZWxmIGFuZCBob29raW5nIGl0IHRvIHRo ZSByZXN0IG9mIHRoZSBzeXN0ZW0gYXJlIGluCisgKiBzaG1lbV9pbnRlcm5hbC5oCisgKgog ICogSGlzdG9yaWNhbCBub3RlOgogICogQSBsb25nIHRpbWUgYWdvLCBQb3N0Z3Jlcycgc2hh cmVkIG1lbW9yeSByZWdpb24gd2FzIGFsbG93ZWQgdG8gYmUgbWFwcGVkCiAgKiBhdCBhIGRp ZmZlcmVudCBhZGRyZXNzIGluIGVhY2ggcHJvY2VzcywgYW5kIHNoYXJlZCBtZW1vcnkgInBv aW50ZXJzIiB3ZXJlCkBAIC0yMyw0MyArMjgsMTY1IEBACiAKICNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCiAKKy8qCisgKiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RTdHJ1Y3QoKQor ICoKKyAqICduYW1lJyBhbmQgJ3NpemUnIGFyZSByZXF1aXJlZC4gIEluaXRpYWxpemUgYW55 IG9wdGlvbmFsIGZpZWxkcyB0aGF0IHlvdQorICogZG9uJ3QgdXNlIHRvIHplcm9zLgorICoK KyAqIEFmdGVyIHJlZ2lzdHJhdGlvbiwgdGhlIHNobWVtIG1hY2hpbmVyeSByZXNlcnZlcyBt ZW1vcnkgZm9yIHRoZSBhcmVhLCBzZXRzCisgKiAnKnB0cicgdG8gcG9pbnQgdG8gdGhlIGFs bG9jYXRpb24sIGFuZCBjYWxscyB0aGUgY2FsbGJhY2tzIGF0IHRoZSByaWdodAorICogbW9t ZW50cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2htZW1TdHJ1Y3RPcHRzCit7CisJY29uc3Qg Y2hhciAqbmFtZTsKIAotLyogc2htZW0uYyAqLwotdHlwZWRlZiBzdHJ1Y3QgUEdTaG1lbUhl YWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKLQkJCQkJCQkJCQkJICog c3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KLWV4dGVybiB2b2lkIEluaXRTaG1lbUFsbG9j YXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpOwotZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2Mo U2l6ZSBzaXplKTsKLWV4dGVybiB2b2lkICpTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNpemUp OwotZXh0ZXJuIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2Nf YXJnKTsKKwkvKgorCSAqIFJlcXVlc3RlZCBzaXplIG9mIHRoZSBzaG1lbSBhbGxvY2F0aW9u LgorCSAqCisJICogV2hlbiBhdHRhY2hpbmcgdG8gYW4gZXhpc3RpbmcgYWxsb2NhdGlvbiwg dGhlIHNpemUgbXVzdCBtYXRjaCB0aGUgc2l6ZQorCSAqIGdpdmVuIHdoZW4gdGhlIHNobWVt IHJlZ2lvbiB3YXMgYWxsb2NhdGVkLiAgVGhpcyBjcm9zcy1jaGVjayBjYW4gYmUKKwkgKiBk aXNhYmxlZCBzcGVjaWZ5aW5nIFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUuCisJICovCisJ c3NpemVfdAkJc2l6ZTsKKworCS8qCisJICogV2hlbiB0aGUgc2htZW0gYXJlYSBpcyBpbml0 aWFsaXplZCBvciBhdHRhY2hlZCB0bywgcG9pbnRlciB0byBpdCBpcworCSAqIHN0b3JlZCBp biAqcHRyLiAgSXQgdXN1YWxseSBwb2ludHMgdG8gYSBnbG9iYWwgdmFyaWFibGUsIHVzZWQg dG8gYWNjZXNzCisJICogdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSBsYXRlci4gICpwdHIgaXMg c2V0IGJlZm9yZSB0aGUgaW5pdF9mbiBvcgorCSAqIGF0dGFjaF9mbiBjYWxsYmFjayBpcyBj YWxsZWQuCisJICovCisJdm9pZAkgICoqcHRyOworfSBTaG1lbVN0cnVjdE9wdHM7CisKKyNk ZWZpbmUgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSAoLTEpCisKKy8qCisgKiBPcHRpb25z IGZvciBTaG1lbVJlcXVlc3RIYXNoKCkKKyAqCisgKiBFYWNoIGhhc2ggdGFibGUgaXMgYmFj a2VkIGJ5IGFuIGFsbG9jYXRlZCBhcmVhLCBidXQgaWYgJ21heF9zaXplJyBpcworICogZ3Jl YXRlciB0aGFuICdpbml0X3NpemUnLCBpdCBjYW4gYWxzbyBncm93IGJleW9uZCB0aGUgaW5p dGlhbCBhbGxvY2F0ZWQKKyAqIGFyZWEgYnkgYWxsb2NhdGluZyBtb3JlIGhhc2ggZW50cmll cyBmcm9tIHRoZSBnbG9iYWwgdW5yZXNlcnZlZCBzcGFjZS4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgU2htZW1IYXNoT3B0cworeworCVNobWVtU3RydWN0T3B0cyBiYXNlOworCisJLyoKKwkg KiBOYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuICBSZXF1aXJlZC4gIE11c3QgYmUg dW5pcXVlIGFjcm9zcyB0aGUKKwkgKiBzeXN0ZW0uCisJICovCisJY29uc3QgY2hhciAqbmFt ZTsKKworCS8qCisJICogJ25lbGVtcycgaXMgdGhlIG1heCBudW1iZXIgb2YgZWxlbWVudHMg Zm9yIHRoZSBoYXNoIHRhYmxlLgorCSAqLworCWludDY0CQluZWxlbXM7CisKKwkvKgorCSAq IEhhc2ggdGFibGUgb3B0aW9ucyBwYXNzZWQgdG8gaGFzaF9jcmVhdGUoKQorCSAqCisJICog aGFzaF9pbmZvIGFuZCBoYXNoX2ZsYWdzIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCB0aGUgZW50 cnkgc2l6ZXMgYW5kIGtleQorCSAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9j cmVhdGUoKSkuICBGbGFnIGJpdHMgYW5kIHZhbHVlcworCSAqIHNwZWNpZmljIHRvIHNoYXJl ZC1tZW1vcnkgaGFzaCB0YWJsZXMgYXJlIGFkZGVkIGltcGxpY2l0bHkgaW4KKwkgKiBTaG1l bVJlcXVlc3RIYXNoKCksIGV4Y2VwdCB0aGF0IGNhbGxlcnMgbWF5IGNob29zZSB0byBzcGVj aWZ5CisJICogSEFTSF9QQVJUSVRJT04gYW5kL29yIEhBU0hfRklYRURfU0laRS4KKwkgKi8K KwlIQVNIQ1RMCQloYXNoX2luZm87CisJaW50CQkJaGFzaF9mbGFnczsKKworCS8qCisJICog V2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hlZCB0bywgcG9p bnRlciB0byBpdHMKKwkgKiBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGlzIHN0b3JlZCBpbiAq cHRyLiAgSXQgdXN1YWxseSBwb2ludHMgdG8gYQorCSAqIGdsb2JhbCB2YXJpYWJsZSwgdXNl ZCB0byBhY2Nlc3MgdGhlIGhhc2ggdGFibGUgbGF0ZXIuCisJICovCisJSFRBQgkgICoqcHRy OworfSBTaG1lbUhhc2hPcHRzOworCit0eXBlZGVmIHZvaWQgKCpTaG1lbVJlcXVlc3RDYWxs YmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUluaXRDYWxsYmFjaykg KHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxiYWNrKSAodm9p ZCAqYXJnKTsKKworLyoKKyAqIFNoYXJlZCBtZW1vcnkgaXMgcmVzZXJ2ZWQgYW5kIGFsbG9j YXRlZCBpbiBzdGFnZXMgYXQgcG9zdG1hc3RlciBzdGFydHVwLAorICogYW5kIGluIEVYRUNf QkFDS0VORCBtb2RlLCB0aGVyZSdzIHNvbWUgZXh0cmEgd29yayBkb25lIHRvICJhdHRhY2gi IHRvIHRoZW0KKyAqIGF0IGJhY2tlbmQgc3RhcnR1cC4gIFNobWVtQ2FsbGJhY2tzIGhvbGRz IGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0IGFyZQorICogY2FsbGVkIGF0IGRpZmZlcmVudCBz dGFnZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNobWVtQ2FsbGJhY2tzCit7CisJLyogU0hN RU1fQ0FMTEJBQ0tTXyogZmxhZ3MgKi8KKwlpbnQJCQlmbGFnczsKKworCS8qCisJICogJ3Jl cXVlc3RfZm4nIGlzIGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLCBiZWZvcmUg dGhlIHNoYXJlZAorCSAqIG1lbW9yeSBoYXMgYmVlbiBhbGxvY2F0ZWQuICBUaGUgZnVuY3Rp b24gc2hvdWxkIGNhbGwKKwkgKiBSZXF1ZXN0U2htZW1TdHJ1Y3QoKSBhbmQgUmVxdWVzdFNo bWVtSGFzaCgpIHRvIHJlZ2lzdGVyIHRoZSBzdWJzeXN0ZW0ncworCSAqIHNoYXJlZCBtZW1v cnkgbmVlZHMuCisJICovCisJU2htZW1SZXF1ZXN0Q2FsbGJhY2sgcmVxdWVzdF9mbjsKKwl2 b2lkCSAgICpyZXF1ZXN0X2ZuX2FyZzsKKworCS8qCisJICogSW5pdGlhbGl6YXRpb24gY2Fs bGJhY2sgZnVuY3Rpb24uICBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBzaGFyZWQKKwkgKiBt ZW1vcnkgYXJlYSBpcyBhbGxvY2F0ZWQsIHVzdWFsbHkgYXQgcG9zdG1hc3RlciBzdGFydHVw LgorCSAqLworCVNobWVtSW5pdENhbGxiYWNrIGluaXRfZm47CisJdm9pZAkgICAqaW5pdF9m bl9hcmc7CisKKwkvKgorCSAqIEF0dGFjaG1lbnQgY2FsbGJhY2sgZnVuY3Rpb24uICBJbiBF WEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBjYWxsZWQgYXQKKwkgKiBzdGFydHVwIG9mIGVh Y2ggYmFja2VuZC4gIEluICFFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBvbmx5IGNhbGxl ZCBpZgorCSAqIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgaXMgcmVnaXN0ZXJlZCBhZnRlciBw b3N0bWFzdGVyIHN0YXJ0dXAgKHNlZQorCSAqIFNITUVNX0NBTExCQUNLU19BTExPV19BRlRF Ul9TVEFSVFVQKS4KKwkgKi8KKwlTaG1lbUF0dGFjaENhbGxiYWNrIGF0dGFjaF9mbjsKKwl2 b2lkCSAgICphdHRhY2hfZm5fYXJnOworfSBTaG1lbUNhbGxiYWNrczsKKworLyoKKyAqIEZs YWdzIHRvIGNvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIFJlZ2lzdGVyU2htZW1DYWxsYmFja3Mo KS4KKyAqCisgKiBBTExPV19BRlRFUl9TVEFSVFVQOiBBbGxvdyB0aGVzZSBzaGFyZWQgbWVt b3J5IHVzYWdlcyB0byBiZSByZWdpc3RlcmVkCisgKiBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0 dXAuICBOb3JtYWxseSwgcmVnaXN0ZXJpbmcgYSBzaGFyZWQgbWVtb3J5IHN5c3RlbQorICog YWZ0ZXIgcG9zdG1hc3RlciBzdGFydHVwIGlzIG5vdCBhbGxvd2VkIGUuZy4gaW4gYW4gYWRk LWluIGxpYnJhcnkgbG9hZGVkCisgKiBvbi1kZW1haW5kIGluIGEgYmFja2VuZC4gIElmIGEg c3Vic3lzdGVtIHNldHMgdGhpcyBmbGFnLCB0aGUgY2FsbGJhY2tzIGFyZQorICogY2FsbGVk IGltbWVkaWF0ZWx5IGFmdGVyIHJlZ2lzdHJhdGlvbiwgdG8gaW5pdGlhbGl6ZSBvciBhdHRh Y2ggdG8gdGhlCisgKiByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeSBhcmVhcy4gIFRoaXMgaXMg bm90IHVzZWQgYnkgYW55IGJ1aWx0LWluCisgKiBzdWJzeXN0ZW1zLCBidXQgZXh0ZW5zaW9u cyBtYXkgZmluZCBpdCB1c2VmdWwuCisgKi8KKyNkZWZpbmUgU0hNRU1fQ0FMTEJBQ0tTX0FM TE9XX0FGVEVSX1NUQVJUVVAJCTB4MDAwMDAwMDEKKworZXh0ZXJuIHZvaWQgUmVnaXN0ZXJT aG1lbUNhbGxiYWNrcyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tzKTsKIGV4dGVy biBib29sIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CisKKy8qCisgKiBU aGVzZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3VnYXIgZm9yIGNhbGxpbmcgdGhlIHVu ZGVybHlpbmcgZnVuY3Rpb25zCisgKiB3aXRoIG5hbWVkIGFyZ3VtZW50cyAtbGlrZSBzeW50 YXguCisgKi8KKyNkZWZpbmUgU2htZW1SZXF1ZXN0U3RydWN0KC4uLikgIFwKKwlTaG1lbVJl cXVlc3RTdHJ1Y3RXaXRoT3B0cygmKFNobWVtU3RydWN0T3B0cyl7X19WQV9BUkdTX199KQor CisjZGVmaW5lIFNobWVtUmVxdWVzdEhhc2goLi4uKSAgXAorCVNobWVtUmVxdWVzdEhhc2hX aXRoT3B0cygmKFNobWVtSGFzaE9wdHMpe19fVkFfQVJHU19ffSkKKworZXh0ZXJuIHZvaWQg U2htZW1SZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRzICpvcHRp b25zKTsKK2V4dGVybiB2b2lkIFNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cyhjb25zdCBTaG1l bUhhc2hPcHRzICpvcHRpb25zKTsKKworLyogbGVnYWN5IHNobWVtIGFsbG9jYXRpb24gZnVu Y3Rpb25zICovCiBleHRlcm4gdm9pZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5h bWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpOworZXh0ZXJuIEhUQUIgKlNobWVtSW5p dEhhc2goY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLAorCQkJCQkJICAgSEFTSENU TCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKK2V4dGVybiB2b2lkICpTaG1lbUFsbG9jKFNp emUgc2l6ZSk7CitleHRlcm4gdm9pZCAqU2htZW1BbGxvY05vRXJyb3IoU2l6ZSBzaXplKTsK KwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiBleHRlcm4gU2l6 ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFNp emUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCi0vKiBzaG1lbV9oYXNoLmMgKi8K LWV4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5l bGVtcywKLQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7Ci1leHRl cm4gSFRBQiAqc2htZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXpl LCBib29sIGZvdW5kLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVt cywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKQotCiAvKiBpcGNpLmMgKi8KIGV4 dGVybiB2b2lkIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoU2l6ZSBzaXplKTsKIAotLyogc2l6 ZSBjb25zdGFudHMgZm9yIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwotIC8qIG1heCBzaXpl IG9mIGRhdGEgc3RydWN0dXJlIHN0cmluZyBuYW1lICovCi0jZGVmaW5lIFNITUVNX0lOREVY X0tFWVNJWkUJCSAoNDgpCi0gLyogbWF4IG51bWJlciBvZiBuYW1lZCBzaG1lbSBzdHJ1Y3R1 cmVzIGFuZCBoYXNoIHRhYmxlcyAqLwotI2RlZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDI1 NikKLQotLyogdGhpcyBpcyBhIGhhc2ggYnVja2V0IGluIHRoZSBzaG1lbSBpbmRleCB0YWJs ZSAqLwotdHlwZWRlZiBzdHJ1Y3QKLXsKLQljaGFyCQlrZXlbU0hNRU1fSU5ERVhfS0VZU0la RV07CS8qIHN0cmluZyBuYW1lICovCi0Jdm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlv biBpbiBzaGFyZWQgbWVtICovCi0JU2l6ZQkJc2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3Rl ZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwotCVNpemUJCWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5 dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLwotfSBTaG1lbUluZGV4RW50OwotCiAjZW5kaWYJ CQkJCQkJLyogU0hNRU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z aG1lbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mZTEyYmYzMzQzOQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwu aApAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzaG1l bV9pbnRlcm5hbC5oCisgKgkgIEludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHNobWVt IGFsbG9jYXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgU0hNRU1fSU5URVJOQUxfSAorI2Rl ZmluZSBTSE1FTV9JTlRFUk5BTF9ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorCisvKiBEaWZmZXJlbnQga2luZHMgb2Ygc2ht ZW0gYXJlYXMuICovCit0eXBlZGVmIGVudW0KK3sKKwlTSE1FTV9LSU5EX1NUUlVDVCA9IDAs CQkvKiBwbGFpbiwgY29udGlndW91cyBhcmVhIG9mIG1lbW9yeSAqLworCVNITUVNX0tJTkRf SEFTSCwJCQkvKiBhIGhhc2ggdGFibGUgKi8KK30gU2htZW1SZXF1ZXN0S2luZDsKKworLyog c2htZW0uYyAqLwordHlwZWRlZiBzdHJ1Y3QgUEdTaG1lbUhlYWRlciBQR1NobWVtSGVhZGVy OyAvKiBhdm9pZCBpbmNsdWRpbmcKKwkJCQkJCQkJCQkJICogc3RvcmFnZS9wZ19zaG1lbS5o IGhlcmUgKi8KK2V4dGVybiB2b2lkIFNobWVtQ2FsbFJlcXVlc3RDYWxsYmFja3Modm9pZCk7 CitleHRlcm4gdm9pZCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRy KTsKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lkIEF0dGFjaFNobWVtQWxsb2Nh dG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CisjZW5kaWYKK2V4dGVybiB2b2lkIFJlc2V0 U2htZW1BbGxvY2F0b3Iodm9pZCk7CisKK2V4dGVybiB2b2lkIFNobWVtUmVxdWVzdEludGVy bmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKTsK KworZXh0ZXJuIHNpemVfdCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCk7CitleHRlcm4g dm9pZCBTaG1lbUluaXRSZXF1ZXN0ZWQodm9pZCk7CisjaWZkZWYgRVhFQ19CQUNLRU5ECitl eHRlcm4gdm9pZCBTaG1lbUF0dGFjaFJlcXVlc3RlZCh2b2lkKTsKKyNlbmRpZgorCitleHRl cm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCk7CisKKy8q IHNobWVtX2hhc2guYyAqLworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfY3JlYXRlKHZvaWQg KmxvY2F0aW9uLCBzaXplX3Qgc2l6ZSwgYm9vbCBmb3VuZCwKKwkJCQkJCQkgICBjb25zdCBj aGFyICpuYW1lLCBpbnQ2NCBuZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFn cyk7CitleHRlcm4gdm9pZCBzaG1lbV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVt U3RydWN0T3B0cyAqb3B0aW9ucyk7CitleHRlcm4gdm9pZCBzaG1lbV9oYXNoX2F0dGFjaCh2 b2lkICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKTsKKworI2VuZGlmCQkJ CQkJCS8qIFNITUVNX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK aW5kZXggYzcyZjZjNTk1NzMuLmI4NDE2Nzc0MWZiIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdApAQCAtMjg2Myw5ICsyODYzLDE2IEBAIFNoYXJlZFR5cG1vZFRhYmxlRW50cnkK IFNoYXJlZHNvcnQKIFNoZWxsVHlwZUluZm8KIFNoaXBwYWJsZUNhY2hlRW50cnkKLVNobWVt QWxsb2NhdG9yRGF0YQogU2hpcHBhYmxlQ2FjaGVLZXkKK1NobWVtQWxsb2NhdG9yRGF0YQor U2htZW1DYWxsYmFja3MKIFNobWVtSW5kZXhFbnQKK1NobWVtSGFzaERlc2MKK1NobWVtSGFz aE9wdHMKK1NobWVtUmVxdWVzdAorU2htZW1SZXF1ZXN0S2luZAorU2htZW1TdHJ1Y3REZXNj CitTaG1lbVN0cnVjdE9wdHMKIFNodXRkb3duRm9yZWlnblNjYW5fZnVuY3Rpb24KIFNodXRk b3duSW5mb3JtYXRpb24KIFNodXRkb3duTW9kZQotLSAKMi40Ny4zCgo= --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0003-Add-test-module-to-test-after-startup-shmem-allo.patch" Content-Disposition: attachment; filename*0="v11-0003-Add-test-module-to-test-after-startup-shmem-allo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkN2IwYmRkNmJlYTUyODU0ZDQzZWU2ZjgzZWM1NTA4MTBhY2ZiYjlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoxMDozMSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDAzLzE0XSBBZGQgdGVzdCBtb2R1bGUgdG8gdGVzdCBhZnRl ci1zdGFydHVwIHNobWVtCiBhbGxvY2F0aW9ucwoKTm9uZSBvZiB0aGUgZXhpc3RpbmcgbW9k dWxlcyBjb3VsZCBtYWtlIHVzZSBvZiB0aGUgbGF6eSBzaG1lbQphbGxvY2F0aW9uIGFmdGVy IHBvc3RtYXN0ZXIgc3RhcnR1cDoKCi0gcGdfc3RhdF9zdGF0ZW1lbnRzIG5lZWRzIHRvIGxv YWQgYW5kIGR1bXAgc3RhdHMgZmlsZSBvbiBzdGFydHVwIGFuZAogIHNodXRkb3duLCB3aGlj aCBkb2Vzbid0IHJlYWxseSB3b3JrIGlmIHRoZSBsaWJyYXJ5IGlzIG5vdCBsb2FkZWQgaW50 bwogIHBvc3RtYXN0ZXIKCi0gdGVzdF9haW8gcmVnaXN0ZXJzIGluamVjdGlvbiBwb2ludHMs IHdoaWNoIHJlZmVyZW5jZSB0aGUgbGlicmFyeQogIGl0c2VsZiwgd2hpY2ggY3JlYXRlcyBh IHdlaXJkIGluaXRpYWxpemF0aW9uIGxvb3AgaWYgeW91IHRyeSB0byBkbwogIHRoYXQgZGly ZWN0bHkgZnJvbSBfUEdfaW5pdCgpIGluIGEgYmFja2VuZC4gVGhlIGluaXRpYWxpemF0aW9u CiAgcmVhbGx5IG5lZWRzIHRvIGhhcHBlbiBhZnRlciBfUEdfaW5pdCgpCgotIGluamVjdGlv bl9wb2ludHMgd291bGQgYmUgYSBjYW5kaWRhdGUsIGJ1dCBpdCBhbHJlYWR5IGtub3dzIHRv IHVzZQogIERTTSB3aGVuIGl0J3Mgbm90IGxvYWRlZCBmcm9tIHNoYXJlZF9wcmVsb2FkX2xp YnJhcmllcy4KLS0tCiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZSAg ICAgICAgICB8ICAyNCArKysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL21lc29u LmJ1aWxkICAgICAgIHwgIDMzICsrKysrKwogLi4uL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9z aG1lbV9hbGxvYy5wbCAgICAgIHwgIDQ5ICsrKysrKysrKwogLi4uL21vZHVsZXMvdGVzdF9z aG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsICAgIHwgICA5ICsrCiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKysr CiAuLi4vbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uY29udHJvbCAgICAgfCAgIDMg Kwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAx ICsKIDkgZmlsZXMgY2hhbmdlZCwgMjIyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9z aG1lbV9hbGxvYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmNvbnRyb2wKCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9N YWtlZmlsZQppbmRleCA4NjRiNDA3YWJjZi4uZjFiMDRjOTk5NjkgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmls ZQpAQCAtNDgsNiArNDgsNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3RfcmVzb3duZXIgXAog CQkgIHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3Nhc2xwcmVwIFwKKwkJICB0ZXN0X3No bWVtIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKIAkJICB0ZXN0X3Rp ZHN0b3JlIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IGU1YWNhY2Q1MDgzLi5mYzk5NTUy ZDlhYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC00OSw2ICs0OSw3IEBAIHN1YmRpcign dGVzdF9yZWdleCcpCiBzdWJkaXIoJ3Rlc3RfcmVzb3duZXInKQogc3ViZGlyKCd0ZXN0X3Js c19ob29rcycpCiBzdWJkaXIoJ3Rlc3Rfc2FzbHByZXAnKQorc3ViZGlyKCd0ZXN0X3NobWVt JykKIHN1YmRpcigndGVzdF9zaG1fbXEnKQogc3ViZGlyKCd0ZXN0X3NscnUnKQogc3ViZGly KCd0ZXN0X3RpZHN0b3JlJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjQwN2Y3NDYyZmUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUK QEAgLTAsMCArMSwyNCBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vTWFrZWZp bGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X3NobWVtIC0gdGVzdCBjb2RlIGZvciBzaG1lbSBh bGxvY2F0aW9ucyIKKworTU9EVUxFX2JpZyA9IHRlc3Rfc2htZW0KK09CSlMgPSBcCisJJChX SU4zMlJFUykgXAorCXRlc3Rfc2htZW0ubworCitFWFRFTlNJT04gPSB0ZXN0X3NobWVtCitE QVRBID0gdGVzdF9zaG1lbS0tMS4wLnNxbAorCitUQVBfVEVTVFMgPSAxCisKK2lmZGVmIFVT RV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NP TkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htZW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNs dWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9w X3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZmI0YmYzMjhiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBD b3B5cmlnaHQgKGMpIDIwMjQtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKwordGVzdF9zaG1lbV9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X3NobWVtLmMn LAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9zaG1lbV9zb3Vy Y2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWwor ICAgICctLU5BTUUnLCAndGVzdF9zaG1lbScsCisgICAgJy0tRklMRURFU0MnLCAndGVzdF9z aG1lbSAtIHRlc3QgY29kZSBmb3Igc2htZW0gYWxsb2NhdGlvbnMnLF0pCitlbmRpZgorCit0 ZXN0X3NobWVtID0gc2hhcmVkX21vZHVsZSgndGVzdF9zaG1lbScsCisgIHRlc3Rfc2htZW1f c291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxs X2xpYnMgKz0gdGVzdF9zaG1lbQorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAg J3Rlc3Rfc2htZW0uY29udHJvbCcsCisgICd0ZXN0X3NobWVtLS0xLjAuc3FsJywKKykKKwor dGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X3NobWVtJywKKyAgJ3NkJzogbWVzb24uY3Vy cmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCks CisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2xhdGVfc2htZW1f YWxsb2MucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbCBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMTU0ZjU3NjgyYQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2Fs bG9jLnBsCkBAIC0wLDAgKzEsNDkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisK KyMjIworIyBUZXN0IGFsbG9jYXRpbmcgbWVtb3J5IGFmdGVyIHN0YXJ0dXAsIGkuZS4gd2hl biB0aGUgbGlicmFyeSBpcyBub3QKKyMgaW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzCisj IyMKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7 Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworCiskbm9kZS0+c2FmZV9wc3FsKCJw b3N0Z3JlcyIsICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2htZW07Iik7CisKKyMgQ2hlY2sg dGhhdCB0aGUgYXR0YWNoIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgb24gYSBuZXcgY29ubmVj dGlvbgorbXkgJGF0dGFjaF9jb3VudDEgPSAkbm9kZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIs ICJTRUxFQ1QgZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCk7Iik7CitteSAkYXR0YWNo X2NvdW50MiA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNFTEVDVCBnZXRfdGVz dF9zaG1lbV9hdHRhY2hfY291bnQoKTsiKTsKK2NtcF9vaygkYXR0YWNoX2NvdW50MiwgJz4n LCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFjayBpcyBjYWxsZWQgaW4gZWFjaCBi YWNrZW5kIik7Ciskbm9kZS0+c3RvcDsKKworIyMjCisjIFRlc3QgdGhhdCBsb2FkaW5nIHZp YSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgYWxzbyB3b3JrcworIyMjCiskbm9kZS0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMg PSAndGVzdF9zaG1lbSciKTsKKyRub2RlLT5zdGFydDsKKworIyBXaGVuIGxvYWRlZCB2aWEg c2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzLCB0aGUgYXR0YWNoIGNhbGxiYWNrIGlzCisjIGNh bGxlZCBvciBub3QsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgYW4gRVhFQ19CQUNL RU5EIGJ1aWxkLgorbXkgJGV4ZWNfYmFja2VuZCA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3Rn cmVzIiwgIlNIT1cgZGVidWdfZXhlY19iYWNrZW5kOyIpIGVxICdvbic7CiskYXR0YWNoX2Nv dW50MSA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNFTEVDVCBnZXRfdGVzdF9z aG1lbV9hdHRhY2hfY291bnQoKTsiKTsKKyRhdHRhY2hfY291bnQyID0gJG5vZGUtPnNhZmVf cHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIGdldF90ZXN0X3NobWVtX2F0dGFjaF9jb3VudCgp OyIpOworCitpZiAoJGV4ZWNfYmFja2VuZCkKK3sKKyAgIGNtcF9vaygkYXR0YWNoX2NvdW50 MiwgJz4nLCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFjayBpcyBjYWxsZWQgaW4g ZWFjaCBiYWNrZW5kIHdoZW4gbG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMi KTsKK30KK2Vsc2UKK3sKKyAgIG9rKCRhdHRhY2hfY291bnQxID09IDAgJiYgJGF0dGFjaF9j b3VudDIgPT0gMCwgImF0dGFjaCBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4gbG9hZGVk IHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKTsKK30KKworJG5vZGUtPnN0b3A7Citk b25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rl c3Rfc2htZW0tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjJkMDFmZDkyNTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCAqLworCistLSBj b21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEg Q1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2ht ZW0iIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCisKK0NSRUFURSBGVU5DVElPTiBnZXRf dGVzdF9zaG1lbV9hdHRhY2hfY291bnQoKQorUkVUVVJOUyBwZ19jYXRhbG9nLmludDQgU1RS SUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjliZDQwMTJiNDM1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAtMCwwICsxLDEwMSBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9zaG1lbS5jCisgKgkJSGVscGVycyB0 byB0ZXN0IHNobWVtIGFsbG9jYXRpb24gcm91dGluZXMKKyAqCisgKiBUZXN0IGJhc2ljIG1l bW9yeSBhbGxvY2F0aW9uIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUuIE9uZSBub3RhYmxlIGZl YXR1cmUKKyAqIHRoYXQgaXMgbm90IGV4ZXJjaXNlZCBieSBhbnkgb3RoZXIgbW9kdWxlIGlu IHRoZSByZXBvc2l0b3J5IGlzIHRoZQorICogYWxsb2NhdGluZyAobm9uLURTTSkgc2hhcmVk IG1lbW9yeSBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKgorICogQ29weXJpZ2h0IChj KSAyMDIwLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rl c3Rfc2htZW0uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKworCitQR19NT0RVTEVfTUFHSUM7 CisKK3R5cGVkZWYgc3RydWN0IFRlc3RTaG1lbURhdGEKK3sKKwlpbnQJCQl2YWx1ZTsKKwli b29sCQlpbml0aWFsaXplZDsKKwlpbnQJCQlhdHRhY2hfY291bnQ7Cit9IFRlc3RTaG1lbURh dGE7CisKK3N0YXRpYyBUZXN0U2htZW1EYXRhICpUZXN0U2htZW07CisKK3N0YXRpYyBib29s IGF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHRlc3Rf c2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgdGVzdF9zaG1lbV9pbml0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCB0ZXN0X3NobWVtX2F0dGFjaCh2b2lkICphcmcp OworCitzdGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgVGVzdFNobWVtQ2FsbGJhY2tzID0g eworCS5mbGFncyA9IFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFSVFVQLAorCS5y ZXF1ZXN0X2ZuID0gdGVzdF9zaG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gdGVzdF9zaG1l bV9pbml0LAorCS5hdHRhY2hfZm4gPSB0ZXN0X3NobWVtX2F0dGFjaCwKK307CisKK3N0YXRp YyB2b2lkCit0ZXN0X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCWVsb2coTE9HLCAi dGVzdF9zaG1lbV9yZXF1ZXN0IGNhbGxiYWNrIGNhbGxlZCIpOworCisJU2htZW1SZXF1ZXN0 U3RydWN0KC5uYW1lID0gInRlc3Rfc2htZW0gYXJlYSIsCisJCQkJCSAgIC5zaXplID0gc2l6 ZW9mKFRlc3RTaG1lbURhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZUZXN0U2ht ZW0pOworfQorCitzdGF0aWMgdm9pZAordGVzdF9zaG1lbV9pbml0KHZvaWQgKmFyZykKK3sK KwllbG9nKExPRywgImluaXQgY2FsbGJhY2sgY2FsbGVkIik7CisJaWYgKFRlc3RTaG1lbS0+ aW5pdGlhbGl6ZWQpCisJCWVsb2coRVJST1IsICJzaG1lbSBhcmVhIGFscmVhZHkgaW5pdGlh bGl6ZWQiKTsKKwlUZXN0U2htZW0tPmluaXRpYWxpemVkID0gdHJ1ZTsKKworCWlmIChhdHRh Y2hlZF9vcl9pbml0aWFsaXplZCkKKwkJZWxvZyhFUlJPUiwgImF0dGFjaCBvciBpbml0aWFs aXplIGFscmVhZHkgY2FsbGVkIGluIHRoaXMgcHJvY2VzcyIpOworCWF0dGFjaGVkX29yX2lu aXRpYWxpemVkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3Rfc2htZW1fYXR0YWNo KHZvaWQgKmFyZykKK3sKKwllbG9nKExPRywgInRlc3Rfc2htZW1fYXR0YWNoIGNhbGxiYWNr IGNhbGxlZCIpOworCWlmICghVGVzdFNobWVtLT5pbml0aWFsaXplZCkKKwkJZWxvZyhFUlJP UiwgInNobWVtIGFyZWEgbm90IHlldCBpbml0aWFsaXplZCIpOworCVRlc3RTaG1lbS0+YXR0 YWNoX2NvdW50Kys7CisKKwlpZiAoYXR0YWNoZWRfb3JfaW5pdGlhbGl6ZWQpCisJCWVsb2co RVJST1IsICJhdHRhY2ggb3IgaW5pdGlhbGl6ZSBhbHJlYWR5IGNhbGxlZCBpbiB0aGlzIHBy b2Nlc3MiKTsKKwlhdHRhY2hlZF9vcl9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQK K19QR19pbml0KHZvaWQpCit7CisJZWxvZyhMT0csICJ0ZXN0X3NobWVtIG1vZHVsZSdzIF9Q R19pbml0IGNhbGxlZCIpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJlRlc3RTaG1lbUNh bGxiYWNrcyk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2V0X3Rlc3Rfc2htZW1fYXR0 YWNoX2NvdW50KTsKK0RhdHVtCitnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlpZiAoIWF0dGFjaGVkX29yX2luaXRpYWxpemVkKQorCQllbG9n KEVSUk9SLCAic2htZW0gYXJlYSBub3QgYXR0YWNoZWQgb3IgaW5pdGlhbGl6ZWQgaW4gdGhp cyBwcm9jZXNzIik7CisJaWYgKCFUZXN0U2htZW0tPmluaXRpYWxpemVkKQorCQllbG9nKEVS Uk9SLCAic2htZW0gYXJlYSBub3QgeWV0IGluaXRpYWxpemVkIik7CisJUEdfUkVUVVJOX0lO VDMyKFRlc3RTaG1lbS0+YXR0YWNoX2NvdW50KTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5mMmYyNmY0NTM3YQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmNvbnRyb2wKQEAgLTAsMCAr MSwzIEBACitjb21tZW50ID0gJ1Rlc3QgY29kZSBmb3Igc2htZW0gYWxsb2NhdGlvbnMnCitk ZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVz dF9zaG1lbScKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYjg0MTY3NzQxZmIu LjYzYzBiM2E5NDY1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzE0Niw2 ICszMTQ2LDcgQEAgVGVzdERTTVJlZ2lzdHJ5SGFzaEVudHJ5CiBUZXN0RFNNUmVnaXN0cnlT dHJ1Y3QKIFRlc3REZWNvZGluZ0RhdGEKIFRlc3REZWNvZGluZ1R4bkRhdGEKK1Rlc3RTaG1l bURhdGEKIFRlc3RTcGVjCiBUZXN0VmFsdWVUeXBlCiBUZXh0RnJlcQotLSAKMi40Ny4zCgo= --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0004-Convert-pg_stat_statements-to-use-the-new-interf.patch" Content-Disposition: attachment; filename*0="v11-0004-Convert-pg_stat_statements-to-use-the-new-interf.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5ZTY0NGUwZDA4MzRjOGJmNzMxZWJiYWEyMWZhYzdmOWM4YmRiY2IxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMToyNCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDA0LzE0XSBDb252ZXJ0IHBnX3N0YXRfc3RhdGVtZW50cyB0 byB1c2UgdGhlIG5ldyBpbnRlcmZhY2UKCkFzIHBhcnQgb2YgdGhpcywgZW1iZWQgdGhlIExX TG9jayBpdCBuZWVkcyBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3QKaXRzZWxmLCBzbyB0 aGF0IHdlIGRvbid0IG5lZWQgdG8gdXNlIFJlcXVlc3ROYW1lZExXTG9ja1RyYW5jaGUoKQph bnltb3JlLiBMV0xvY2tOZXdUcmFuY2hlSWQrTFdMb2NrSW5pdGlhbGl6ZSBpcyBtb3JlIGNv bnZlbmllbnQgdG8gdXNlCmluIGV4dGVuc2lvbnMuCgpSZXZpZXdlZC1ieTogQXNodXRvc2gg QmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBac29s dCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpSZXZpZXdlZC1ieTogUm9i ZXJ0IEhhYXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93 d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01 MlVpSjN6NHZLZDNBSjcyWDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiAuLi4vcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAxNzMgKysrKysrKyst LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0 YXRlbWVudHMuYwppbmRleCA1NDk0ZDQxZGNhMS4uZjA3OGI0ZmU3MWIgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0y NDksNyArMjQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcGdzc0VudHJ5CiAgKi8KIHR5cGVkZWYg c3RydWN0IHBnc3NTaGFyZWRTdGF0ZQogewotCUxXTG9jawkgICAqbG9jazsJCQkvKiBwcm90 ZWN0cyBoYXNodGFibGUgc2VhcmNoL21vZGlmaWNhdGlvbiAqLworCUxXTG9ja1BhZGRlZCBs b2NrOwkJCS8qIHByb3RlY3RzIGhhc2h0YWJsZSBzZWFyY2gvbW9kaWZpY2F0aW9uICovCiAJ ZG91YmxlCQljdXJfbWVkaWFuX3VzYWdlOwkvKiBjdXJyZW50IG1lZGlhbiB1c2FnZSBpbiBo YXNodGFibGUgKi8KIAlTaXplCQltZWFuX3F1ZXJ5X2xlbjsgLyogY3VycmVudCBtZWFuIGVu dHJ5IHRleHQgbGVuZ3RoICovCiAJc2xvY2tfdAkJbXV0ZXg7CQkJLyogcHJvdGVjdHMgZm9s bG93aW5nIGZpZWxkcyBvbmx5OiAqLwpAQCAtMjU5LDE0ICsyNTksMjQgQEAgdHlwZWRlZiBz dHJ1Y3QgcGdzc1NoYXJlZFN0YXRlCiAJcGdzc0dsb2JhbFN0YXRzIHN0YXRzOwkJLyogZ2xv YmFsIHN0YXRpc3RpY3MgZm9yIHBnc3MgKi8KIH0gcGdzc1NoYXJlZFN0YXRlOwogCisvKiBM aW5rcyB0byBzaGFyZWQgbWVtb3J5IHN0YXRlICovCitzdGF0aWMgcGdzc1NoYXJlZFN0YXRl ICpwZ3NzOworc3RhdGljIEhUQUIgKnBnc3NfaGFzaDsKKworc3RhdGljIHZvaWQgcGdzc19z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBwZ3NzX3NobWVtX2luaXQo dm9pZCAqYXJnKTsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIHBnc3Nfc2htZW1f Y2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gcGdzc19zaG1lbV9yZXF1ZXN0LAorCS5p bml0X2ZuID0gcGdzc19zaG1lbV9pbml0LAorfTsKKwogLyotLS0tIExvY2FsIHZhcmlhYmxl cyAtLS0tKi8KIAogLyogQ3VycmVudCBuZXN0aW5nIGRlcHRoIG9mIHBsYW5uZXIvRXhlY3V0 b3JSdW4vUHJvY2Vzc1V0aWxpdHkgY2FsbHMgKi8KIHN0YXRpYyBpbnQJbmVzdGluZ19sZXZl bCA9IDA7CiAKIC8qIFNhdmVkIGhvb2sgdmFsdWVzICovCi1zdGF0aWMgc2htZW1fcmVxdWVz dF9ob29rX3R5cGUgcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBOVUxMOwotc3RhdGljIHNo bWVtX3N0YXJ0dXBfaG9va190eXBlIHByZXZfc2htZW1fc3RhcnR1cF9ob29rID0gTlVMTDsK IHN0YXRpYyBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHByZXZfcG9zdF9wYXJzZV9h bmFseXplX2hvb2sgPSBOVUxMOwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxh bm5lcl9ob29rID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2 X0V4ZWN1dG9yU3RhcnQgPSBOVUxMOwpAQCAtMjc1LDEwICsyODUsNiBAQCBzdGF0aWMgRXhl Y3V0b3JGaW5pc2hfaG9va190eXBlIHByZXZfRXhlY3V0b3JGaW5pc2ggPSBOVUxMOwogc3Rh dGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRW5kID0gTlVMTDsKIHN0 YXRpYyBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgcHJldl9Qcm9jZXNzVXRpbGl0eSA9IE5V TEw7CiAKLS8qIExpbmtzIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLXN0YXRpYyBwZ3Nz U2hhcmVkU3RhdGUgKnBnc3MgPSBOVUxMOwotc3RhdGljIEhUQUIgKnBnc3NfaGFzaCA9IE5V TEw7Ci0KIC8qLS0tLSBHVUMgdmFyaWFibGVzIC0tLS0qLwogCiB0eXBlZGVmIGVudW0KQEAg LTMzMSw4ICszMzcsNiBAQCBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50 c18xXzEzKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdF9zdGF0ZW1lbnRzKTsKIFBH X0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdF9zdGF0ZW1lbnRzX2luZm8pOwogCi1zdGF0aWMg dm9pZCBwZ3NzX3NobWVtX3JlcXVlc3Qodm9pZCk7Ci1zdGF0aWMgdm9pZCBwZ3NzX3NobWVt X3N0YXJ0dXAodm9pZCk7CiBzdGF0aWMgdm9pZCBwZ3NzX3NobWVtX3NodXRkb3duKGludCBj b2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgcGdzc19wb3N0X3BhcnNlX2FuYWx5emUo UGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXVlcnksCiAJCQkJCQkJCQlKdW1ibGVTdGF0 ZSAqanN0YXRlKTsKQEAgLTM2Niw3ICszNzAsNiBAQCBzdGF0aWMgdm9pZCBwZ3NzX3N0b3Jl KGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVyeUlkLAogc3RhdGljIHZvaWQgcGdfc3Rh dF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJ CQkJCXBnc3NWZXJzaW9uIGFwaV92ZXJzaW9uLAogCQkJCQkJCQkJCWJvb2wgc2hvd3RleHQp Owotc3RhdGljIFNpemUgcGdzc19tZW1zaXplKHZvaWQpOwogc3RhdGljIHBnc3NFbnRyeSAq ZW50cnlfYWxsb2MocGdzc0hhc2hLZXkgKmtleSwgU2l6ZSBxdWVyeV9vZmZzZXQsIGludCBx dWVyeV9sZW4sCiAJCQkJCQkJICBpbnQgZW5jb2RpbmcsIGJvb2wgc3RpY2t5KTsKIHN0YXRp YyB2b2lkIGVudHJ5X2RlYWxsb2Modm9pZCk7CkBAIC00NzEsMTMgKzQ3NCwxNCBAQCBfUEdf aW5pdCh2b2lkKQogCiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJwZ19zdGF0X3N0YXRlbWVu dHMiKTsKIAorCS8qCisJICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkgbmVlZHMuCisJ ICovCisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmcGdzc19zaG1lbV9jYWxsYmFja3MpOwor CiAJLyoKIAkgKiBJbnN0YWxsIGhvb2tzLgogCSAqLwotCXByZXZfc2htZW1fcmVxdWVzdF9o b29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVtX3JlcXVlc3RfaG9vayA9IHBnc3Nf c2htZW1fcmVxdWVzdDsKLQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IHNobWVtX3N0YXJ0 dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSBwZ3NzX3NobWVtX3N0YXJ0dXA7CiAJ cHJldl9wb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29r OwogCXBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0gcGdzc19wb3N0X3BhcnNlX2FuYWx5emU7 CiAJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CkBAIC00OTUsMzAgKzQ5OSw0 MiBAQCBfUEdfaW5pdCh2b2lkKQogfQogCiAvKgotICogc2htZW1fcmVxdWVzdCBob29rOiBy ZXF1ZXN0IGFkZGl0aW9uYWwgc2hhcmVkIHJlc291cmNlcy4gIFdlJ2xsIGFsbG9jYXRlIG9y Ci0gKiBhdHRhY2ggdG8gdGhlIHNoYXJlZCByZXNvdXJjZXMgaW4gcGdzc19zaG1lbV9zdGFy dHVwKCkuCisgKiBzaG1lbSByZXF1ZXN0IGNhbGxiYWNrOiBSZXF1ZXN0IHNoYXJlZCBtZW1v cnkgcmVzb3VyY2VzLgorICoKKyAqIFRoaXMgaXMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgc3Rh cnR1cC4gIE5vdGUgdGhhdCB0aGUgc2hhcmVkIG1lbW9yeSBpc24ndAorICogYWxsb2NhdGVk IGhlcmUgeWV0LCB0aGlzIG1lcmVseSByZWdpc3RlciBvdXIgbmVlZHMuCisgKgorICogSW4g RVhFQ19CQUNLRU5EIG1vZGUsIHRoaXMgaXMgYWxzbyBjYWxsZWQgaW4gZWFjaCBiYWNrZW5k LCB0byByZS1hdHRhY2ggdG8KKyAqIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgdGhhdCB3YXMg YWxyZWFkeSBpbml0aWFsaXplZC4KICAqLwogc3RhdGljIHZvaWQKLXBnc3Nfc2htZW1fcmVx dWVzdCh2b2lkKQorcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlpZiAocHJl dl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2htZW1fcmVxdWVzdF9ob29rKCk7Ci0K LQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKHBnc3NfbWVtc2l6ZSgpKTsKLQlSZXF1ZXN0TmFt ZWRMV0xvY2tUcmFuY2hlKCJwZ19zdGF0X3N0YXRlbWVudHMiLCAxKTsKKwlTaG1lbVJlcXVl c3RIYXNoKC5uYW1lID0gInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKKwkJCQkJIC5uZWxl bXMgPSBwZ3NzX21heCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihwZ3Nz SGFzaEtleSksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50 cnkpLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTLAorCQkJ CQkgLnB0ciA9ICZwZ3NzX2hhc2gsCisJCSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gInBnX3N0YXRfc3RhdGVtZW50cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKHBnc3NT aGFyZWRTdGF0ZSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnBnc3MsCisJCSk7CiB9 CiAKIC8qCi0gKiBzaG1lbV9zdGFydHVwIGhvb2s6IGFsbG9jYXRlIG9yIGF0dGFjaCB0byBz aGFyZWQgbWVtb3J5LAotICogdGhlbiBsb2FkIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGlzdGlj cyBmcm9tIGZpbGUuCi0gKiBBbHNvIGNyZWF0ZSBhbmQgbG9hZCB0aGUgcXVlcnktdGV4dHMg ZmlsZSwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gZXhpc3QKLSAqIChldmVuIGlmIGVtcHR5KSB3 aGlsZSB0aGUgbW9kdWxlIGlzIGVuYWJsZWQuCisgKiBzaG1lbSBpbml0IGNhbGxiYWNrOiBJ bml0aWFsaXplIG91ciBzaGFyZWQgbWVtb3J5IGRhdGEgc3RydWN0dXJlcyBhdAorICogcG9z dG1hc3RlciBzdGFydHVwLgorICoKKyAqIExvYWQgYW55IHByZS1leGlzdGluZyBzdGF0aXN0 aWNzIGZyb20gZmlsZS4gIEFsc28gY3JlYXRlIGFuZCBsb2FkIHRoZQorICogcXVlcnktdGV4 dHMgZmlsZSwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gZXhpc3QgKGV2ZW4gaWYgZW1wdHkpIHdo aWxlIHRoZQorICogbW9kdWxlIGlzIGVuYWJsZWQuCiAgKi8KIHN0YXRpYyB2b2lkCi1wZ3Nz X3NobWVtX3N0YXJ0dXAodm9pZCkKK3Bnc3Nfc2htZW1faW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKKwlpbnQJCQl0cmFuY2hlX2lkOwogCUZJ TEUJICAgKmZpbGUgPSBOVUxMOwogCUZJTEUJICAgKnFmaWxlID0gTlVMTDsKIAl1aW50MzIJ CWhlYWRlcjsKQEAgLTUyOCw1OSArNTQ0LDM4IEBAIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lk KQogCWludAkJCWJ1ZmZlcl9zaXplOwogCWNoYXIJICAgKmJ1ZmZlciA9IE5VTEw7CiAKLQlp ZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXByZXZfc2htZW1fc3RhcnR1cF9ob29r KCk7Ci0KLQkvKiByZXNldCBpbiBjYXNlIHRoaXMgaXMgYSByZXN0YXJ0IHdpdGhpbiB0aGUg cG9zdG1hc3RlciAqLwotCXBnc3MgPSBOVUxMOwotCXBnc3NfaGFzaCA9IE5VTEw7Ci0KIAkv KgotCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBtZW1vcnkgc3RhdGUsIGlu Y2x1ZGluZyBoYXNoIHRhYmxlCisJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgd2UncmUg bG9hZGVkIGZyb20gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGluCisJICogX1BHX2luaXQo KSwgc28gd2Ugc2hvdWxkIG5vdCBnZXQgaGVyZSBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAu CiAJICovCi0JTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lW RSk7Ci0KLQlwZ3NzID0gU2htZW1Jbml0U3RydWN0KCJwZ19zdGF0X3N0YXRlbWVudHMiLAot CQkJCQkJICAgc2l6ZW9mKHBnc3NTaGFyZWRTdGF0ZSksCi0JCQkJCQkgICAmZm91bmQpOwot Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCAuLi4gKi8KLQkJ cGdzcy0+bG9jayA9ICYoR2V0TmFtZWRMV0xvY2tUcmFuY2hlKCJwZ19zdGF0X3N0YXRlbWVu dHMiKSktPmxvY2s7Ci0JCXBnc3MtPmN1cl9tZWRpYW5fdXNhZ2UgPSBBU1NVTUVEX01FRElB Tl9JTklUOwotCQlwZ3NzLT5tZWFuX3F1ZXJ5X2xlbiA9IEFTU1VNRURfTEVOR1RIX0lOSVQ7 Ci0JCVNwaW5Mb2NrSW5pdCgmcGdzcy0+bXV0ZXgpOwotCQlwZ3NzLT5leHRlbnQgPSAwOwot CQlwZ3NzLT5uX3dyaXRlcnMgPSAwOwotCQlwZ3NzLT5nY19jb3VudCA9IDA7Ci0JCXBnc3Mt PnN0YXRzLmRlYWxsb2MgPSAwOwotCQlwZ3NzLT5zdGF0cy5zdGF0c19yZXNldCA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKLQl9Ci0KLQlpbmZvLmtleXNpemUgPSBzaXplb2YocGdzc0hh c2hLZXkpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKHBnc3NFbnRyeSk7Ci0JcGdzc19o YXNoID0gU2htZW1Jbml0SGFzaCgicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAotCQkJCQkJ CSAgcGdzc19tYXgsCi0JCQkJCQkJICAmaW5mbywKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMpOwotCi0JTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOworCUFz c2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOwogCiAJLyoKLQkgKiBJZiB3ZSdyZSBpbiB0aGUg cG9zdG1hc3RlciAob3IgYSBzdGFuZGFsb25lIGJhY2tlbmQuLi4pLCBzZXQgdXAgYSBzaG1l bQotCSAqIGV4aXQgaG9vayB0byBkdW1wIHRoZSBzdGF0aXN0aWNzIHRvIGRpc2suCisJICog SW5pdGlhbGl6ZSB0aGUgc2htZW0gYXJlYSB3aXRoIG5vIHN0YXRpc3RpY3MuCiAJICovCi0J aWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQkJb25fc2htZW1fZXhpdChwZ3NzX3NobWVtX3No dXRkb3duLCAoRGF0dW0pIDApOworCXRyYW5jaGVfaWQgPSBMV0xvY2tOZXdUcmFuY2hlSWQo InBnX3N0YXRfc3RhdGVtZW50cyIpOworCUxXTG9ja0luaXRpYWxpemUoJnBnc3MtPmxvY2su bG9jaywgdHJhbmNoZV9pZCk7CisJcGdzcy0+Y3VyX21lZGlhbl91c2FnZSA9IEFTU1VNRURf TUVESUFOX0lOSVQ7CisJcGdzcy0+bWVhbl9xdWVyeV9sZW4gPSBBU1NVTUVEX0xFTkdUSF9J TklUOworCVNwaW5Mb2NrSW5pdCgmcGdzcy0+bXV0ZXgpOworCXBnc3MtPmV4dGVudCA9IDA7 CisJcGdzcy0+bl93cml0ZXJzID0gMDsKKwlwZ3NzLT5nY19jb3VudCA9IDA7CisJcGdzcy0+ c3RhdHMuZGVhbGxvYyA9IDA7CisJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CisKKwkvKiBUaGUgaGFzaCB0YWJsZSBtdXN0J3ZlIGFsc28gYmVl biBpbml0aWFsaXplZCBieSBub3cgKi8KKwlBc3NlcnQocGdzc19oYXNoICE9IE5VTEwpOwog CiAJLyoKLQkgKiBEb25lIGlmIHNvbWUgb3RoZXIgcHJvY2VzcyBhbHJlYWR5IGNvbXBsZXRl ZCBvdXIgaW5pdGlhbGl6YXRpb24uCisJICogU2V0IHVwIGEgc2htZW0gZXhpdCBob29rIHRv IGR1bXAgdGhlIHN0YXRpc3RpY3MgdG8gZGlzayBvbiBwb3N0bWFzdGVyCisJICogKG9yIHN0 YW5kYWxvbmUgYmFja2VuZCkgZXhpdC4KIAkgKi8KLQlpZiAoZm91bmQpCi0JCXJldHVybjsK Kwlvbl9zaG1lbV9leGl0KHBnc3Nfc2htZW1fc2h1dGRvd24sIChEYXR1bSkgMCk7CiAKIAkv KgorCSAqIExvYWQgYW55IHByZS1leGlzdGluZyBzdGF0aXN0aWNzIGZyb20gZmlsZS4KKwkg KgogCSAqIE5vdGU6IHdlIGRvbid0IGJvdGhlciB3aXRoIGxvY2tzIGhlcmUsIGJlY2F1c2Ug dGhlcmUgc2hvdWxkIGJlIG5vIG90aGVyCiAJICogcHJvY2Vzc2VzIHJ1bm5pbmcgd2hlbiB0 aGlzIGNvZGUgaXMgcmVhY2hlZC4KIAkgKi8KQEAgLTEzMzksNyArMTMzNCw3IEBAIHBnc3Nf c3RvcmUoY29uc3QgY2hhciAqcXVlcnksIGludDY0IHF1ZXJ5SWQsCiAJa2V5LnRvcGxldmVs ID0gKG5lc3RpbmdfbGV2ZWwgPT0gMCk7CiAKIAkvKiBMb29rdXAgdGhlIGhhc2ggdGFibGUg ZW50cnkgd2l0aCBzaGFyZWQgbG9jay4gKi8KLQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ss IExXX1NIQVJFRCk7CisJTFdMb2NrQWNxdWlyZSgmcGdzcy0+bG9jay5sb2NrLCBMV19TSEFS RUQpOwogCiAJZW50cnkgPSAocGdzc0VudHJ5ICopIGhhc2hfc2VhcmNoKHBnc3NfaGFzaCwg JmtleSwgSEFTSF9GSU5ELCBOVUxMKTsKIApAQCAtMTM2MCwxMSArMTM1NSwxMSBAQCBwZ3Nz X3N0b3JlKGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVyeUlkLAogCQkgKi8KIAkJaWYg KGpzdGF0ZSkKIAkJewotCQkJTFdMb2NrUmVsZWFzZShwZ3NzLT5sb2NrKTsKKwkJCUxXTG9j a1JlbGVhc2UoJnBnc3MtPmxvY2subG9jayk7CiAJCQlub3JtX3F1ZXJ5ID0gZ2VuZXJhdGVf bm9ybWFsaXplZF9xdWVyeShqc3RhdGUsIHF1ZXJ5LAogCQkJCQkJCQkJCQkJICAgcXVlcnlf bG9jYXRpb24sCiAJCQkJCQkJCQkJCQkgICAmcXVlcnlfbGVuKTsKLQkJCUxXTG9ja0FjcXVp cmUocGdzcy0+bG9jaywgTFdfU0hBUkVEKTsKKwkJCUxXTG9ja0FjcXVpcmUoJnBnc3MtPmxv Y2subG9jaywgTFdfU0hBUkVEKTsKIAkJfQogCiAJCS8qIEFwcGVuZCBuZXcgcXVlcnkgdGV4 dCB0byBmaWxlIHdpdGggb25seSBzaGFyZWQgbG9jayBoZWxkICovCkBAIC0xMzc5LDggKzEz NzQsOCBAQCBwZ3NzX3N0b3JlKGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVyeUlkLAog CQlkb19nYyA9IG5lZWRfZ2NfcXRleHRzKCk7CiAKIAkJLyogTmVlZCBleGNsdXNpdmUgbG9j ayB0byBtYWtlIGEgbmV3IGhhc2h0YWJsZSBlbnRyeSAtIHByb21vdGUgKi8KLQkJTFdMb2Nr UmVsZWFzZShwZ3NzLT5sb2NrKTsKLQkJTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19F WENMVVNJVkUpOworCQlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOworCQlMV0xv Y2tBY3F1aXJlKCZwZ3NzLT5sb2NrLmxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKIAkJLyoKIAkJ ICogQSBnYXJiYWdlIGNvbGxlY3Rpb24gbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2Vy ZW4ndCBob2xkaW5nIHRoZQpAQCAtMTUxOSw3ICsxNTE0LDcgQEAgcGdzc19zdG9yZShjb25z dCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIAl9CiAKIGRvbmU6Ci0JTFdMb2NrUmVs ZWFzZShwZ3NzLT5sb2NrKTsKKwlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOwog CiAJLyogV2UgcG9zdHBvbmUgdGhpcyBjbGVhbi11cCB1bnRpbCB3ZSdyZSBvdXQgb2YgdGhl IGxvY2sgKi8KIAlpZiAobm9ybV9xdWVyeSkKQEAgLTE4MDgsNyArMTgwMyw3IEBAIHBnX3N0 YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkgKiB3 ZSBuZWVkIHRvIHBhcnRpdGlvbiB0aGUgaGFzaCB0YWJsZSB0byBsaW1pdCB0aGUgdGltZSBz cGVudCBob2xkaW5nIGFueQogCSAqIG9uZSBsb2NrLgogCSAqLwotCUxXTG9ja0FjcXVpcmUo cGdzcy0+bG9jaywgTFdfU0hBUkVEKTsKKwlMV0xvY2tBY3F1aXJlKCZwZ3NzLT5sb2NrLmxv Y2ssIExXX1NIQVJFRCk7CiAKIAlpZiAoc2hvd3RleHQpCiAJewpAQCAtMjA0Niw3ICsyMDQx LDcgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvLAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZv LT5zZXREZXNjLCB2YWx1ZXMsIG51bGxzKTsKIAl9CiAKLQlMV0xvY2tSZWxlYXNlKHBnc3Mt PmxvY2spOworCUxXTG9ja1JlbGVhc2UoJnBnc3MtPmxvY2subG9jayk7CiAKIAlpZiAocWJ1 ZmZlcikKIAkJcGZyZWUocWJ1ZmZlcik7CkBAIC0yMDg2LDIwICsyMDgxLDYgQEAgcGdfc3Rh dF9zdGF0ZW1lbnRzX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fREFUVU0o SGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVs bHMpKSk7CiB9CiAKLS8qCi0gKiBFc3RpbWF0ZSBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRl ZC4KLSAqLwotc3RhdGljIFNpemUKLXBnc3NfbWVtc2l6ZSh2b2lkKQotewotCVNpemUJCXNp emU7Ci0KLQlzaXplID0gTUFYQUxJR04oc2l6ZW9mKHBnc3NTaGFyZWRTdGF0ZSkpOwotCXNp emUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUocGdzc19tYXgsIHNpemVv ZihwZ3NzRW50cnkpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQogLyoKICAqIEFsbG9jYXRl IGEgbmV3IGhhc2h0YWJsZSBlbnRyeS4KICAqIGNhbGxlciBtdXN0IGhvbGQgYW4gZXhjbHVz aXZlIGxvY2sgb24gcGdzcy0+bG9jawpAQCAtMjczMCw3ICsyNzExLDcgQEAgZW50cnlfcmVz ZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29u bHkpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCiAJCQkJIGVycm1zZygicGdfc3RhdF9zdGF0ZW1lbnRzIG11c3QgYmUgbG9hZGVk IHZpYSBcInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllc1wiIikpKTsKIAotCUxXTG9ja0FjcXVp cmUocGdzcy0+bG9jaywgTFdfRVhDTFVTSVZFKTsKKwlMV0xvY2tBY3F1aXJlKCZwZ3NzLT5s b2NrLmxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJbnVtX2VudHJpZXMgPSBoYXNoX2dldF9udW1f ZW50cmllcyhwZ3NzX2hhc2gpOwogCiAJc3RhdHNfcmVzZXQgPSBHZXRDdXJyZW50VGltZXN0 YW1wKCk7CkBAIC0yODI0LDcgKzI4MDUsNyBAQCBkb25lOgogCXJlY29yZF9nY19xdGV4dHMo KTsKIAogcmVsZWFzZV9sb2NrOgotCUxXTG9ja1JlbGVhc2UocGdzcy0+bG9jayk7CisJTFdM b2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2NrKTsKIAogCXJldHVybiBzdGF0c19yZXNldDsK IH0KLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Disposition: attachment; filename="v11-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Transfer-Encoding: base64 RnJvbSBkZTQ3ZGVhMTA1N2U5NGQ2OWYzYzdhZGZkYmVlOWY1ZThkMmExNDE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMTowMiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDA1LzE0XSBJbnRyb2R1Y2UgcmVnaXN0cnkgb2YgYnVpbHQt aW4gc3Vic3lzdGVtcwoKVG8gYWRkIGEgbmV3IGJ1aWx0LWluIHN1YnN5c3RlbSwgYWRkIGl0 IHRvIHN1YnN5c3RlbXNsaXN0LmguIFRoYXQKaG9va3MgdXAgaXRzIGNhbGxiYWNrcyBzbyB0 aGF0IHRoZXkgZ2V0IGNhbGxlZCBhdCB0aGUgcmlnaHQgdGltZXMKZHVyaW5nIHBvc3RtYXN0 ZXIgc3RhcnR1cC4gRm9yIG5vdyB0aGlzIGlzIHVudXNlZCwgYnV0IHdpbGwgcmVwbGFjZQp0 aGUgY3VycmVudCBTdWJzeXN0ZW1TaG1lbVNpemUoKSBhbmQgU3Vic3lzdGVtU2htZW1Jbml0 KCkgY2FsbHMgaW4KdGhlIG5leHQgY29tbWl0cy4KLS0tCiBzcmMvYmFja2VuZC9ib290c3Ry YXAvYm9vdHN0cmFwLmMgICAgICAgfCAgMiArKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9s YXVuY2hfYmFja2VuZC5jIHwgIDIgKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1h c3Rlci5jICAgICB8ICA1ICsrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMg ICAgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jICAgICAgICAgICAgIHwgIDMgKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5o ICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxp c3QuaCAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdl L3N1YnN5c3RlbXMuaCAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrCiBz cmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjayAgICAgICAgfCAgMSArCiA5IGZpbGVz IGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJh cC5jCmluZGV4IGM3MDdjY2ZhNTYzLi40OWQ4OGExYjZkZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJh cC9ib290c3RyYXAuYwpAQCAtMzYzLDYgKzM2Myw4IEBAIEJvb3RzdHJhcE1vZGVNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAlTZXRQcm9jZXNzaW5n TW9kZShCb290c3RyYXBQcm9jZXNzaW5nKTsKIAlJZ25vcmVTeXN0ZW1JbmRleGVzID0gdHJ1 ZTsKIAorCVJlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJhY2tzKCk7CisKIAlJbml0aWFsaXpl TWF4QmFja2VuZHMoKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2xhdW5jaF9iYWNrZW5kLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9i YWNrZW5kLmMKaW5kZXggMDk3MzAxMGI3ZGMuLmVkMGY0ZjJkMjM0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCkBAIC02NjQsNiArNjY0LDggQEAgU3Vi UG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlMb2NhbFBy b2Nlc3NDb250cm9sRmlsZShmYWxzZSk7CiAKKwlSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxi YWNrcygpOworCiAJLyoKIAkgKiBSZWxvYWQgYW55IGxpYnJhcmllcyB0aGF0IHdlcmUgcHJl bG9hZGVkIGJ5IHRoZSBwb3N0bWFzdGVyLiAgU2luY2Ugd2UKIAkgKiBleGVjJ2QgdGhpcyBw cm9jZXNzLCB0aG9zZSBsaWJyYXJpZXMgZGlkbid0IGNvbWUgYWxvbmcgd2l0aCB1czsgYnV0 IHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDY5MzQ3NTAxNGZl Li5iMjAxMGJjZTE4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0 bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAg LTkyMiw2ICs5MjIsMTEgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkgKi8KIAlBcHBseUxhdW5jaGVyUmVnaXN0ZXIoKTsKIAorCS8qCisJICogUmVnaXN0 ZXIgdGhlIHNoYXJlZCBtZW1vcnkgbmVlZHMgb2YgYWxsIGNvcmUgc3Vic3lzdGVtcy4KKwkg Ki8KKwlSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcygpOworCiAJLyoKIAkgKiBwcm9j ZXNzIGFueSBsaWJyYXJpZXMgdGhhdCBzaG91bGQgYmUgcHJlbG9hZGVkIGF0IHBvc3RtYXN0 ZXIgc3RhcnQKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCAyNDQyMmE4MGFi My4uZTRhNmE1MmYxMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTUyLDYgKzUy LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMu aCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCkBAIC0yNTIsNiArMjUzLDI2IEBAIENyZWF0ZVNoYXJlZE1lbW9y eUFuZFNlbWFwaG9yZXModm9pZCkKIAkJc2htZW1fc3RhcnR1cF9ob29rKCk7CiB9CiAKKy8q CisgKiBFYXJseSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIHN1YnN5c3RlbXMsIGdpdmlu ZyB0aGVtIGEgY2hhbmNlIHRvCisgKiByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5l ZWRzIGJlZm9yZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGlzCisgKiBhbGxvY2F0ZWQu CisgKi8KK3ZvaWQKK1JlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJhY2tzKHZvaWQpCit7CisJ LyoKKwkgKiBDYWxsIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoLi4uKSBvbiBlYWNoIHN1YnN5 c3RlbSBsaXN0ZWQgaW4KKwkgKiBzdWJzeXN0ZW1zbGlzdC5oCisJICovCisjZGVmaW5lIFBH X1NITUVNX1NVQlNZU1RFTShzdWJzeXN0ZW1fY2FsbGJhY2tzKSBcCisJUmVnaXN0ZXJTaG1l bUNhbGxiYWNrcygmKHN1YnN5c3RlbV9jYWxsYmFja3MpKTsKKworI2luY2x1ZGUgInN0b3Jh Z2Uvc3Vic3lzdGVtbGlzdC5oIgorCisjdW5kZWYgUEdfU0hNRU1fU1VCU1lTVEVNCit9CisK IC8qCiAgKiBJbml0aWFsaXplIHZhcmlvdXMgc3Vic3lzdGVtcywgc2V0dGluZyB1cCB0aGVp ciBkYXRhIHN0cnVjdHVyZXMgaW4KICAqIHNoYXJlZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKaW5kZXggOTM4NTEyNjllNDMuLjZhOWZmM2FkMjI1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC00MTM4LDYgKzQxMzgsOSBAQCBQb3N0Z3Jlc1NpbmdsZVVzZXJNYWluKGludCBhcmdj LCBjaGFyICphcmd2W10sCiAJLyogcmVhZCBjb250cm9sIGZpbGUgKGVycm9yIGNoZWNraW5n IGFuZCBjb250YWlucyBjb25maWcgKSAqLwogCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGZh bHNlKTsKIAorCS8qIFJlZ2lzdGVyIHRoZSBzaGFyZWQgbWVtb3J5IG5lZWRzIG9mIGFsbCBj b3JlIHN1YnN5c3RlbXMuICovCisJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsK KwogCS8qCiAJICogcHJvY2VzcyBhbnkgbGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxv YWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2lwYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAppbmRleCBkYTMy Nzg3YWI1MS4uYjIwNWIwMGU3YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv aXBjLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaApAQCAtNzcsNiArNzcsNyBA QCBleHRlcm4gdm9pZCBjaGVja19vbl9zaG1lbV9leGl0X2xpc3RzX2FyZV9lbXB0eSh2b2lk KTsKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHNobWVtX3N0YXJ0dXBfaG9v a190eXBlIHNobWVtX3N0YXJ0dXBfaG9vazsKIAorZXh0ZXJuIHZvaWQgUmVnaXN0ZXJCdWls dGluU2htZW1DYWxsYmFja3Modm9pZCk7CiBleHRlcm4gU2l6ZSBDYWxjdWxhdGVTaG1lbVNp emUodm9pZCk7CiBleHRlcm4gdm9pZCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVz KHZvaWQpOwogI2lmZGVmIEVYRUNfQkFDS0VORApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3Rl bWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ0M2M5 MGJjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3Rl bWxpc3QuaApAQCAtMCwwICsxLDIzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICog c3Vic3lzdGVtbGlzdC5oCisgKgorICogTGlzdCBvZiBpbml0aWFsaXphdGlvbiBjYWxsYmFj a3Mgb2YgYnVpbHQtaW4gc3Vic3lzdGVtcy4gVGhpcyBpcyBrZXB0IGluCisgKiBpdHMgb3du IHNvdXJjZSBmaWxlIGZvciBwb3NzaWJsZSB1c2UgYnkgYXV0b21hdGljIHRvb2xzLgorICog UEdfU0hNRU1fU1VCU1lTVEVNIGlzIGRlZmluZWQgaW4gdGhlIGNhbGxlcnMgZGVwZW5kaW5n IG9uIGhvdyB0aGUgbGlzdCBpcworICogdXNlZC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0 ZW1saXN0LmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogdGhlcmUgaXMg ZGVsaWJlcmF0ZWx5IG5vdCBhbiAjaWZuZGVmIFNVQlNZU1RFTUxJU1RfSCBoZXJlICovCisK Ky8qCisgKiBOb3RlOiB0aGVyZSBhcmUgc29tZSBpbnRlci1kZXBlbmRlbmNpZXMgYmV0d2Vl biB0aGVzZSwgc28gdGhlIG9yZGVyIG9mIHNvbWUKKyAqIG9mIHRoZXNlIG1hdHRlci4KKyAq LworCisvKiBUT0RPOiBlbXB0eSBmb3Igbm93ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N1YnN5c3RlbXMuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVt cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOGI3MzViZWM2 NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5o CkBAIC0wLDAgKzEsMzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN1YnN5 c3RlbXMuaAorICoJICBQcm92aWRlIGV4dGVybiBkZWNsYXJhdGlvbnMgZm9yIGFsbCB0aGUg YnVpbHQtaW4gc3Vic3lzdGVtIGNhbGxiYWNrcworICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1zLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBTVUJT WVNURU1TX0gKKyNkZWZpbmUgU1VCU1lTVEVNU19ICisKKyNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCisKKy8qCisgKiBFeHRlcm4gZGVjbGFyYXRpb25zIG9mIGFsbCB0aGUgYnVpbHQt aW4gc3Vic3lzdGVtIGNhbGxiYWNrcworICoKKyAqIFRoZSBhY3R1YWwgbGlzdCBpcyBpbiBz dWJzeXN0ZW1saXN0LmgsIHNvIHRoYXQgdGhlIHNhbWUgbGlzdCBjYW4gYmUgdXNlZAorICog Zm9yIG90aGVyIHB1cnBvc2VzLgorICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RFTShj YWxsYmFja3MpIFwKKwlleHRlcm4gY29uc3QgU2htZW1DYWxsYmFja3MgY2FsbGJhY2tzOwor I2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIgorI3VuZGVmIFBHX1NITUVNX1NV QlNZU1RFTQorCisjZW5kaWYJCQkJCQkJLyogU1VCU1lTVEVNU19IICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjayBiL3NyYy90b29scy9wZ2luY2x1 ZGUvaGVhZGVyc2NoZWNrCmluZGV4IDE0YzQ2NmNjMjM3Li4yNGY3NDE2MTg1ZSAxMDA3NTUK LS0tIGEvc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sKKysrIGIvc3JjL3Rvb2xz L3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sKQEAgLTEzMSw2ICsxMzEsNyBAQCBkbwogCXRlc3Qg IiRmIiA9IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcHJvY3R5cGVsaXN0LmggJiYgY29udGlu dWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9yZWdleC9yZWdlcnJzLmggJiYgY29udGlu dWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCAmJiBj b250aW51ZQorCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlz dC5oICYmIGNvbnRpbnVlCiAJdGVzdCAiJGYiID0gc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWds aXN0LmggJiYgY29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW50ZXJmYWNlcy9lY3BnL3By ZXByb2MvY19rd2xpc3QuaCAmJiBjb250aW51ZQogCXRlc3QgIiRmIiA9IHNyYy9pbnRlcmZh Y2VzL2VjcGcvcHJlcHJvYy9lY3BnX2t3bGlzdC5oICYmIGNvbnRpbnVlCi0tIAoyLjQ3LjMK Cg== --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v11-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 RnJvbSBkNmRiZWE3ZTM0NmY0ZmViZjAxZGIyMDRjMDNjMjgyMzVkNzc1NzZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoxODowNSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDA2LzE0XSBDb252ZXJ0IGx3bG9jay5jIHRvIHVzZSB0aGUg bmV3IGludGVyZmFjZQoKSXQgc2VlbXMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIHRvIGNvbnZl cnQgZmlyc3QgYmVjYXVzZSBpdCBuZWVkcyB0bwppbml0aWFsaXplZCBiZWZvcmUgYW55IG90 aGVyIHN1YnN5c3RlbSwgYnV0IG90aGVyIHRoYW4gdGhhdCBpdCdzCm5vdGhpbmcgc3BlY2lh bC4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICB8IDEzIC0tLS0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jICAgfCA3MSArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaCAgICAg ICAgfCAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCB8ICA5ICsr Ky0KIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IGU0YTZhNTJmMTJkLi5kZTY1YTllZjMz YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMTIxLDcgKzEyMSw2IEBAIENhbGN1 bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBUd29QaGFzZVNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMV0xvY2tTaG1lbVNpemUoKSk7CiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFByb2NBcnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3Np emUoc2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSk7CkBAIC0xNzksMTEgKzE3OCw2IEBA IEF0dGFjaFNoYXJlZE1lbW9yeVN0cnVjdHModm9pZCkKIAkgKi8KIAlJbml0aWFsaXplRmFz dFBhdGhMb2NrcygpOwogCi0JLyoKLQkgKiBBdHRhY2ggdG8gTFdMb2NrcyBmaXJzdC4gVGhl eSBhcmUgbmVlZGVkIGJ5IG1vc3Qgb3RoZXIgc3Vic3lzdGVtcy4KLQkgKi8KLQlMV0xvY2tT aG1lbUluaXQoKTsKLQogCS8qIEVzdGFibGlzaCBwb2ludGVycyB0byBhbGwgc2hhcmVkIG1l bW9yeSBhcmVhcyBpbiB0aGlzIGJhY2tlbmQgKi8KIAlTaG1lbUF0dGFjaFJlcXVlc3RlZCgp OwogCUNyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKCk7CkBAIC0yMzAsMTMgKzIyNCw2IEBA IENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAkgKi8KIAlJbml0U2ht ZW1BbGxvY2F0b3Ioc2VnaGRyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSBMV0xvY2tzIGZp cnN0LCBpbiBjYXNlIGFueSBvZiB0aGUgc2htZW0gaW5pdCBmdW5jdGlvbiB1c2UKLQkgKiBM V0xvY2tzLiAgKE5vdGhpbmcgZWxzZSBjYW4gYmUgcnVubmluZyBkdXJpbmcgc3RhcnR1cCwg c28gdGhleSBkb24ndAotCSAqIG5lZWQgdG8gZG8gYW55IGxvY2tpbmcgeWV0LCBidXQgd2Ug bmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKLQkgKi8KLQlMV0xvY2tTaG1lbUluaXQoKTsKLQog CS8qIEluaXRpYWxpemUgYWxsIHNobWVtIGFyZWFzICovCiAJU2htZW1Jbml0UmVxdWVzdGVk KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRleCA1Y2I2OTY0OTBkNi4u MzBiNzE1YWIwNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xv Y2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTg0LDYg Kzg0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jbnVtYmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTIxMiw2ICsyMTMsMTUgQEAg dHlwZWRlZiBzdHJ1Y3QgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogCiBzdGF0aWMgTGlz dCAqTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdHMgPSBOSUw7CiAKK3N0YXRpYyB2b2lkIExX TG9ja1NobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgTFdMb2NrU2htZW1J bml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIExXTG9ja0NhbGxiYWNr cyA9IHsKKwkucmVxdWVzdF9mbiA9IExXTG9ja1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IExXTG9ja1NobWVtSW5pdCwKK307CisKKwogc3RhdGljIHZvaWQgSW5pdGlhbGl6ZUxXTG9j a3MoaW50IG51bUxvY2tzKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBMV0xvY2tSZXBvcnRXYWl0 U3RhcnQoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBMV0xvY2tSZXBvcnRX YWl0RW5kKHZvaWQpOwpAQCAtNDAxLDU4ICs0MTEsNTEgQEAgTnVtTFdMb2Nrc0Zvck5hbWVk VHJhbmNoZXModm9pZCkKIH0KIAogLyoKLSAqIENvbXB1dGUgc2htZW0gc3BhY2UgbmVlZGVk IGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRoZSBtYWluIExXTG9jawotICogYXJy YXkuCisgKiBSZXF1ZXN0IHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMg YW5kIHRoZSBtYWluIExXTG9jayBhcnJheS4KICAqLwotU2l6ZQotTFdMb2NrU2htZW1TaXpl KHZvaWQpCitzdGF0aWMgdm9pZAorTFdMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlTaXplCQlzaXplOwogCWludAkJCW51bUxvY2tzOworCVNpemUJCXNpemU7CisKKwludW1M b2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMo KTsKIAogCS8qIFNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgKi8KIAlzaXplID0g c2l6ZW9mKExXTG9ja1RyYW5jaGVTaG1lbURhdGEpOwotCi0JLyogU3BhY2UgZm9yIHRoZSBM V0xvY2sgYXJyYXkgKi8KLQludW1Mb2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdM b2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3Np emUobnVtTG9ja3MsIHNpemVvZihMV0xvY2tQYWRkZWQpKSk7CisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gIkxXTG9jayB0cmFuY2hlcyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwK KwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmTFdMb2NrVHJhbmNoZXMsCisJCSk7CiAKLQly ZXR1cm4gc2l6ZTsKKwkvKiBTcGFjZSBmb3IgdGhlIExXTG9jayBhcnJheSAqLworCVNobWVt UmVxdWVzdFN0cnVjdCgubmFtZSA9ICJNYWluIExXTG9jayBhcnJheSIsCisJCQkJCSAgIC5z aXplID0gbnVtTG9ja3MgKiBzaXplb2YoTFdMb2NrUGFkZGVkKSwKKwkJCQkJICAgLnB0ciA9 ICh2b2lkICoqKSAmTWFpbkxXTG9ja0FycmF5LAorCQkpOwogfQogCiAvKgotICogQWxsb2Nh dGUgc2htZW0gc3BhY2UgZm9yIHVzZXItZGVmaW5lZCB0cmFuY2hlcyBhbmQgdGhlIG1haW4g TFdMb2NrIGFycmF5LAotICogYW5kIGluaXRpYWxpemUgaXQuCisgKiBJbml0aWFsaXplIHNo bWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRoZSBtYWluIExXTG9j ayBhcnJheS4KICAqLwotdm9pZAotTFdMb2NrU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9p ZAorTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQludW1Mb2NrczsKLQli b29sCQlmb3VuZDsKIAotCUxXTG9ja1RyYW5jaGVzID0gKExXTG9ja1RyYW5jaGVTaG1lbURh dGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJMV0xvY2sgdHJhbmNoZXMiLCBzaXplb2YoTFdM b2NrVHJhbmNoZVNobWVtRGF0YSksICZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8q IENhbGN1bGF0ZSB0b3RhbCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBtYWluIGFy cmF5ICovCi0JCUxXTG9ja1RyYW5jaGVzLT5udW1fbWFpbl9hcnJheV9sb2NrcyA9Ci0JCQlO VU1fRklYRURfTFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKCk7CisJbnVt TG9ja3MgPSBOVU1fRklYRURfTFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVz KCk7CiAKLQkJLyogSW5pdGlhbGl6ZSB0aGUgZHluYW1pYy1hbGxvY2F0aW9uIGNvdW50ZXIg Zm9yIHRyYW5jaGVzICovCi0JCUxXTG9ja1RyYW5jaGVzLT5udW1fdXNlcl9kZWZpbmVkID0g MDsKKwkvKiBSZW1lbWJlciB0b3RhbCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBt YWluIGFycmF5ICovCisJTFdMb2NrVHJhbmNoZXMtPm51bV9tYWluX2FycmF5X2xvY2tzID0g bnVtTG9ja3M7CiAKLQkJU3BpbkxvY2tJbml0KCZMV0xvY2tUcmFuY2hlcy0+bG9jayk7Ci0J fQorCS8qIEluaXRpYWxpemUgdGhlIGR5bmFtaWMtYWxsb2NhdGlvbiBjb3VudGVyIGZvciB0 cmFuY2hlcyAqLworCUxXTG9ja1RyYW5jaGVzLT5udW1fdXNlcl9kZWZpbmVkID0gMDsKIAot CS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtYWluIGFycmF5ICovCi0JbnVtTG9j a3MgPSBMV0xvY2tUcmFuY2hlcy0+bnVtX21haW5fYXJyYXlfbG9ja3M7Ci0JTWFpbkxXTG9j a0FycmF5ID0gKExXTG9ja1BhZGRlZCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIk1haW4gTFdM b2NrIGFycmF5IiwgbnVtTG9ja3MgKiBzaXplb2YoTFdMb2NrUGFkZGVkKSwgJmZvdW5kKTsK LQlpZiAoIWZvdW5kKQotCXsKLQkJLyogSW5pdGlhbGl6ZSBhbGwgTFdMb2NrcyAqLwotCQlJ bml0aWFsaXplTFdMb2NrcyhudW1Mb2Nrcyk7Ci0JfQorCVNwaW5Mb2NrSW5pdCgmTFdMb2Nr VHJhbmNoZXMtPmxvY2spOworCisJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYWxsIExX TG9ja3MgaW4gdGhlIG1haW4gYXJyYXkgKi8KKwlJbml0aWFsaXplTFdMb2NrcyhudW1Mb2Nr cyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9jay5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaAppbmRleCA2MWYwZGJlNzQ5YS4uZWZh NWI0MjdlOWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaApAQCAtMTI2LDggKzEyNiw2IEBAIGV4 dGVybiBib29sIExXTG9ja0hlbGRCeU1lSW5Nb2RlKExXTG9jayAqbG9jaywgTFdMb2NrTW9k ZSBtb2RlKTsKIGV4dGVybiBib29sIExXTG9ja1dhaXRGb3JWYXIoTFdMb2NrICpsb2NrLCBw Z19hdG9taWNfdWludDY0ICp2YWxwdHIsIHVpbnQ2NCBvbGR2YWwsIHVpbnQ2NCAqbmV3dmFs KTsKIGV4dGVybiB2b2lkIExXTG9ja1VwZGF0ZVZhcihMV0xvY2sgKmxvY2ssIHBnX2F0b21p Y191aW50NjQgKnZhbHB0ciwgdWludDY0IHZhbCk7CiAKLWV4dGVybiBTaXplIExXTG9ja1No bWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIExXTG9ja1NobWVtSW5pdCh2b2lkKTsKIGV4 dGVybiB2b2lkIEluaXRMV0xvY2tBY2Nlc3Modm9pZCk7CiAKIGV4dGVybiBjb25zdCBjaGFy ICpHZXRMV0xvY2tJZGVudGlmaWVyKHVpbnQzMiBjbGFzc0lkLCB1aW50MTYgZXZlbnRJZCk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGVkNDNjOTBiY2MzLi5m MGNmMDFmNWE4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1s aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTIw LDQgKzIwLDExIEBACiAgKiBvZiB0aGVzZSBtYXR0ZXIuCiAgKi8KIAotLyogVE9ETzogZW1w dHkgZm9yIG5vdyAqLworLyoKKyAqIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRo ZSBvdGhlciBzaG1lbSBpbml0IGZ1bmN0aW9ucyB1c2UgTFdMb2Nrcy4KKyAqIChOb3RoaW5n IGVsc2UgY2FuIGJlIHJ1bm5pbmcgZHVyaW5nIHN0YXJ0dXAsIHNvIHRoZXkgZG9uJ3QgbmVl ZCB0byBkbyBhbnkKKyAqIGxvY2tpbmcgeWV0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGFsbG93 IGl0LikKKyAqLworUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9ja0NhbGxiYWNrcykKKworLyog VE9ETzogbm90aGluZyBlbHNlIGZvciBub3cgKi8KLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0007-Use-the-new-mechanism-in-a-few-core-subsystems.patch" Content-Disposition: attachment; filename*0="v11-0007-Use-the-new-mechanism-in-a-few-core-subsystems.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA1ZjgyZDJlNDgyNTkzMjQ0MTMzYjBhNTRlYjUyYTEzYWJiMmU2NTkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoyMToxNyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDA3LzE0XSBVc2UgdGhlIG5ldyBtZWNoYW5pc20gaW4gYSBm ZXcgY29yZSBzdWJzeXN0ZW1zCgpJIGNob3NlIHRoZXNlIHN1YnN5c3RlbXMgc3BlY2lmaWNh bGx5IGJlY2F1c2UgdGhleSBoYXZlIHNvbWUKY29tcGxpY2F0aW5nIHByb3BlcnRpZXMsIG1h a2luZyB0aGVtIHNsaWdodGx5IGhhcmRlciB0byBjb252ZXJ0IHRoYW4KbW9zdDoKCi0gVGhl IGluaXRpYWxpemF0aW9uIGNhbGxiYWNrcyBvZiBzb21lIG9mIHRoZXNlIHN1YnN5c3RlbXMg aGF2ZQogIGRlcGVuZGVuY2llcywgaS5lLiB0aGV5IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQg aW4gdGhlIHJpZ2h0IG9yZGVyLgoKLSBUaGUgUHJvZ0dsb2JhbCBwb2ludGVyIHN0aWxsIG5l ZWRzIHRvIGJlIGluaGVyaXRlZCBieSB0aGUKICBCYWNrZW5kUGFyYW1ldGVycyBtZWNoYW5p c20gb24gRVhFQ19CQUNLRU5EIGJ1aWxkcywgYmVjYXVzZQogIFByb2NHbG9iYWwgaXMgcmVx dWlyZWQgYnkgSW5pdFByb2Nlc3MoKSB0byBnZXQgYSBQR1BST0MgZW50cnksIGFuZAogIHRo ZSBQR1BST0MgZW50cnkgaXMgcmVxdWlyZWQgdG8gdXNlIExXTG9ja3MsIGFuZCB1c3VhbGx5 IGF0dGFjaGluZwogIHRvIHNoYXJlZCBtZW1vcnkgYXJlYXMgcmVxdWlyZXMgdGhlIHVzZSBv ZiBMV0xvY2tzLgoKLSBTaW1pbGFybHksIFByb2NTaWduYWwgcG9pbnRlciBzdGlsbCBuZWVk cyB0byBiZSBoYW5kbGVkIGJ5CiAgQmFja2VuZFBhcmFtZXRlcnMsIGJlY2F1c2UgcXVlcnkg Y2FuY2VsbGF0aW9uIGNvbm5lY3Rpb25zIGFjY2VzcyBpdAogIHdpdGhvdXQgY2FsbGluZyBJ bml0UHJvY2VzcwoKSSdtIGJlbGlldmUgY29udmVydGluZyBhbGwgdGhlIHJlc3Qgb2YgdGhl IHN1YnN5c3RlbXMgYWZ0ZXIgdGhpcyB3aWxsCmJlIHByZXR0eSBtZWNoYW5pYy4KClJldmll d2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+ CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FF eEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwu Z21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jICAgIHwgIDM1 ICsrLS0tCiBzcmMvYmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEuYyAgICAgICAgICB8ICAyMiAr Ky0KIHNyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMgICAgICAgICAgIHwgIDIxICsrLQog c3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMgICAgICAgICAgfCAgMTEgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jICAgICAgICAgIHwgIDY0ICsrKysrLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMgfCAgMzYgKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgIHwgIDI4IC0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wbXNpZ25hbC5jICAgICB8ICA1MSArKysrLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAgICB8IDExMCArKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgfCAgNjQgKysrKy0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyAgICB8ICAzOCArKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgfCAxOTEgKysrKysrKysrKysrKy0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jICAgICAgfCAg IDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmggICAgICAgICAgIHwgICAyIC0K IHNyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtLmggICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmggICAgIHwgICAyIC0KIHNyYy9pbmNsdWRl L3N0b3JhZ2UvcGdfc2VtYS5oICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Btc2lnbmFsLmggICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3By b2MuaCAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJh eS5oICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAg ICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oICAgICAgICB8 ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICB8ICAxNyAr Ky0KIDI1IGZpbGVzIGNoYW5nZWQsIDM0NCBpbnNlcnRpb25zKCspLCAzODEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2Uu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggZDQ2OGM5 Nzc0YjMuLmFiMWNiZDY3YmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS90d29waGFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3Bo YXNlLmMKQEAgLTI4Miw3ICsyODIsNyBAQCBUd29QaGFzZVNobWVtSW5pdCh2b2lkKQogCQkJ Z3hhY3RzW2ldLm5leHQgPSBUd29QaGFzZVN0YXRlLT5mcmVlR1hhY3RzOwogCQkJVHdvUGhh c2VTdGF0ZS0+ZnJlZUdYYWN0cyA9ICZneGFjdHNbaV07CiAKLQkJCS8qIGFzc29jaWF0ZSBp dCB3aXRoIGEgUEdQUk9DIGFzc2lnbmVkIGJ5IEluaXRQcm9jR2xvYmFsICovCisJCQkvKiBh c3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBQcm9jR2xvYmFsU2htZW1J bml0ICovCiAJCQlneGFjdHNbaV0ucGdwcm9jbm8gPSBHZXROdW1iZXJGcm9tUEdQcm9jKCZQ cmVwYXJlZFhhY3RQcm9jc1tpXSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3ZhcnN1cC5jCmluZGV4IDE0NDFhMDUxNzczLi5kYzVlMzJkODZmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0 ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKIApAQCAtMzAsMzUgKzMxLDI1IEBACiAvKiBOdW1iZXIgb2YgT0lEcyB0 byBwcmVmZXRjaCAocHJlYWxsb2NhdGUpIHBlciBYTE9HIHdyaXRlICovCiAjZGVmaW5lIFZB Ul9PSURfUFJFRkVUQ0gJCTgxOTIKIAorc3RhdGljIHZvaWQgVmFyc3VwU2htZW1SZXF1ZXN0 KHZvaWQgKmFyZyk7CisKIC8qIHBvaW50ZXIgdG8gdmFyaWFibGVzIHN0cnVjdCBpbiBzaGFy ZWQgbWVtb3J5ICovCiBUcmFuc2FtVmFyaWFibGVzRGF0YSAqVHJhbnNhbVZhcmlhYmxlcyA9 IE5VTEw7CiAKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFZhcnN1cFNobWVtQ2FsbGJhY2tzID0g eworCS5yZXF1ZXN0X2ZuID0gVmFyc3VwU2htZW1SZXF1ZXN0LAorfTsKIAogLyoKLSAqIElu aXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFRyYW5zYW1WYXJpYWJsZXMuCisg KiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgZm9yIFRyYW5zYW1WYXJpYWJsZXMuCiAgKi8KLVNp emUKLVZhcnN1cFNobWVtU2l6ZSh2b2lkKQotewotCXJldHVybiBzaXplb2YoVHJhbnNhbVZh cmlhYmxlc0RhdGEpOwotfQotCi12b2lkCi1WYXJzdXBTaG1lbUluaXQodm9pZCkKK3N0YXRp YyB2b2lkCitWYXJzdXBTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwotCi0JLyogSW5pdGlhbGl6ZSBvdXIgc2hhcmVkIHN0YXRlIHN0cnVjdCAqLwotCVRyYW5z YW1WYXJpYWJsZXMgPSBTaG1lbUluaXRTdHJ1Y3QoIlRyYW5zYW1WYXJpYWJsZXMiLAotCQkJ CQkJCQkJICAgc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKLQkJCQkJCQkJCSAgICZm b3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCUFzc2VydCghZm91bmQp OwotCQltZW1zZXQoVHJhbnNhbVZhcmlhYmxlcywgMCwgc2l6ZW9mKFRyYW5zYW1WYXJpYWJs ZXNEYXRhKSk7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlTaG1lbVJlcXVlc3RT dHJ1Y3QoLm5hbWUgPSAiVHJhbnNhbVZhcmlhYmxlcyIsCisJCQkJCSAgIC5zaXplID0gc2l6 ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAm VHJhbnNhbVZhcmlhYmxlcywKKwkJKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BvcnQvcG9zaXhfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC9wb3NpeF9zZW1hLmMK aW5kZXggNDAyMDViN2Q0MDAuLjUzZTRhN2E1YzM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3J0L3Bvc2l4X3NlbWEuYworKysgYi9zcmMvYmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEu YwpAQCAtMTU5LDIyICsxNTksMjQgQEAgUG9zaXhTZW1hcGhvcmVLaWxsKHNlbV90ICpzZW0p CiAKIAogLyoKLSAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBuZWVkZWQgZm9y IHNlbWFwaG9yZXMKKyAqIFJlcXVlc3Qgc2hhcmVkIG1lbW9yeSBuZWVkZWQgZm9yIHNlbWFw aG9yZXMKICAqLwotU2l6ZQotUEdTZW1hcGhvcmVTaG1lbVNpemUoaW50IG1heFNlbWFzKQor dm9pZAorUEdTZW1hcGhvcmVTaG1lbVJlcXVlc3QoaW50IG1heFNlbWFzKQogewogI2lmZGVm IFVTRV9OQU1FRF9QT1NJWF9TRU1BUEhPUkVTCiAJLyogTm8gc2hhcmVkIG1lbW9yeSBuZWVk ZWQgaW4gdGhpcyBjYXNlICovCi0JcmV0dXJuIDA7CiAjZWxzZQogCS8qIE5lZWQgYSBQR1Nl bWFwaG9yZURhdGEgcGVyIHNlbWFwaG9yZSAqLwotCXJldHVybiBtdWxfc2l6ZShtYXhTZW1h cywgc2l6ZW9mKFBHU2VtYXBob3JlRGF0YSkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJTZW1hcGhvcmVzIiwKKwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShtYXhTZW1hcywg c2l6ZW9mKFBHU2VtYXBob3JlRGF0YSkpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZz aGFyZWRTZW1hcywKKwkJKTsKICNlbmRpZgogfQogCiAvKgotICogUEdSZXNlcnZlU2VtYXBo b3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9ydAorICogUEdTZW1hcGhvcmVJ bml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAgKgogICogVGhpcyBpcyBj YWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnQgb3Igc2hhcmVkIG1lbW9yeSByZWluaXRp YWxpemF0aW9uLgogICogSXQgc2hvdWxkIGRvIHdoYXRldmVyIGlzIG5lZWRlZCB0byBiZSBh YmxlIHRvIHN1cHBvcnQgdXAgdG8gbWF4U2VtYXMKQEAgLTE5MywxMCArMTk1LDkgQEAgUEdT ZW1hcGhvcmVTaG1lbVNpemUoaW50IG1heFNlbWFzKQogICogd2UgZG9uJ3QgaGF2ZSB0byBl eHBvc2UgdGhlIGNvdW50ZXJzIHRvIG90aGVyIHByb2Nlc3Nlcy4pCiAgKi8KIHZvaWQKLVBH UmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKQorUEdTZW1hcGhvcmVJbml0KGludCBt YXhTZW1hcykKIHsKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCWJvb2wJCWZvdW5kOwogCiAJ LyoKIAkgKiBXZSB1c2UgdGhlIGRhdGEgZGlyZWN0b3J5J3MgaW5vZGUgbnVtYmVyIHRvIHNl ZWQgdGhlIHNlYXJjaCBmb3IgZnJlZQpAQCAtMjE0LDExICsyMTUsNiBAQCBQR1Jlc2VydmVT ZW1hcGhvcmVzKGludCBtYXhTZW1hcykKIAlteVNlbVBvaW50ZXJzID0gKHNlbV90ICoqKSBt YWxsb2MobWF4U2VtYXMgKiBzaXplb2Yoc2VtX3QgKikpOwogCWlmIChteVNlbVBvaW50ZXJz ID09IE5VTEwpCiAJCWVsb2coUEFOSUMsICJvdXQgb2YgbWVtb3J5Iik7Ci0jZWxzZQotCi0J c2hhcmVkU2VtYXMgPSAoUEdTZW1hcGhvcmUpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VtYXBo b3JlcyIsIFBHU2VtYXBob3JlU2htZW1TaXplKG1heFNlbWFzKSwgJmZvdW5kKTsKLQlBc3Nl cnQoIWZvdW5kKTsKICNlbmRpZgogCiAJbnVtU2VtcyA9IDA7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3J0L3N5c3Zfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NlbWEu YwppbmRleCA0YjJiZjg0MDcyZi4uOThkOTk1MTUwNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BvcnQvc3lzdl9zZW1hLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NlbWEu YwpAQCAtMzAxLDE2ICszMDEsMjAgQEAgSXBjU2VtYXBob3JlQ3JlYXRlKGludCBudW1TZW1z KQogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZv ciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZvciBzZW1h cGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcykK K3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcykKIHsKLQlyZXR1 cm4gbXVsX3NpemUobWF4U2VtYXMsIHNpemVvZihQR1NlbWFwaG9yZURhdGEpKTsKKwkvKiBO ZWVkIGEgUEdTZW1hcGhvcmVEYXRhIHBlciBzZW1hcGhvcmUgKi8KKwlTaG1lbVJlcXVlc3RT dHJ1Y3QoLm5hbWUgPSAiU2VtYXBob3JlcyIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUo bWF4U2VtYXMsIHNpemVvZihQR1NlbWFwaG9yZURhdGEpKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmc2hhcmVkU2VtYXMsCisJCSk7CiB9CiAKIC8qCi0gKiBQR1Jlc2VydmVTZW1h cGhvcmVzIC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CisgKiBQR1NlbWFwaG9y ZUluaXQgLS0tIGluaXRpYWxpemUgc2VtYXBob3JlIHN1cHBvcnQKICAqCiAgKiBUaGlzIGlz IGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydCBvciBzaGFyZWQgbWVtb3J5IHJlaW5p dGlhbGl6YXRpb24uCiAgKiBJdCBzaG91bGQgZG8gd2hhdGV2ZXIgaXMgbmVlZGVkIHRvIGJl IGFibGUgdG8gc3VwcG9ydCB1cCB0byBtYXhTZW1hcwpAQCAtMzI3LDEwICszMzEsOSBAQCBQ R1NlbWFwaG9yZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCiAgKiBoYXZlIGNsb2JiZXJlZC4p CiAgKi8KIHZvaWQKLVBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKQorUEdTZW1h cGhvcmVJbml0KGludCBtYXhTZW1hcykKIHsKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCWJv b2wJCWZvdW5kOwogCiAJLyoKIAkgKiBXZSB1c2UgdGhlIGRhdGEgZGlyZWN0b3J5J3MgaW5v ZGUgbnVtYmVyIHRvIHNlZWQgdGhlIHNlYXJjaCBmb3IgZnJlZQpAQCAtMzQ0LDEwICszNDcs NiBAQCBQR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKIAkJCQkgZXJybXNnKCJj b3VsZCBub3Qgc3RhdCBkYXRhIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKIAkJCQkJCURhdGFE aXIpKSk7CiAKLQlzaGFyZWRTZW1hcyA9IChQR1NlbWFwaG9yZSkKLQkJU2htZW1Jbml0U3Ry dWN0KCJTZW1hcGhvcmVzIiwgUEdTZW1hcGhvcmVTaG1lbVNpemUobWF4U2VtYXMpLCAmZm91 bmQpOwotCUFzc2VydCghZm91bmQpOwotCiAJbnVtU2hhcmVkU2VtYXMgPSAwOwogCW1heFNo YXJlZFNlbWFzID0gbWF4U2VtYXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BvcnQv d2luMzJfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMKaW5kZXggYmE5 N2M5YjJkNjQuLmEzMjAyNTU0NzY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3dp bjMyX3NlbWEuYworKysgYi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NlbWEuYwpAQCAtMjUs MTcgKzI1LDE2IEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VTZW1hcGhvcmVzKGludCBjb2RlLCBE YXR1bSBhcmcpOwogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkg bmVlZGVkIGZvciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVk IGZvciBzZW1hcGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXplKGludCBt YXhTZW1hcykKK3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcykK IHsKIAkvKiBObyBzaGFyZWQgbWVtb3J5IG5lZWRlZCBvbiBXaW5kb3dzICovCi0JcmV0dXJu IDA7CiB9CiAKIC8qCi0gKiBQR1Jlc2VydmVTZW1hcGhvcmVzIC0tLSBpbml0aWFsaXplIHNl bWFwaG9yZSBzdXBwb3J0CisgKiBQR1NlbWFwaG9yZUluaXQgLS0tIGluaXRpYWxpemUgc2Vt YXBob3JlIHN1cHBvcnQKICAqCiAgKiBJbiB0aGUgV2luMzIgaW1wbGVtZW50YXRpb24sIHdl IGFjcXVpcmUgc2VtYXBob3JlcyBvbi1kZW1hbmQ7IHRoZQogICogbWF4U2VtYXMgcGFyYW1l dGVyIGlzIGp1c3QgdXNlZCB0byBzaXplIHRoZSBhcnJheSB0aGF0IGtlZXBzIHRyYWNrIG9m CkBAIC00NCw3ICs0Myw3IEBAIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcykK ICAqIHByb2Nlc3MgZXhpdHMuCiAgKi8KIHZvaWQKLVBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50 IG1heFNlbWFzKQorUEdTZW1hcGhvcmVJbml0KGludCBtYXhTZW1hcykKIHsKIAlteVNlbVNl dCA9IChIQU5ETEUgKikgbWFsbG9jKG1heFNlbWFzICogc2l6ZW9mKEhBTkRMRSkpOwogCWlm IChteVNlbVNldCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwppbmRleCA2YTViMTYz OTJmNy4uOGI2OWRmNGZmMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2RzbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jCkBAIC00Myw2ICs0 Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdl L3BnX3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZyZWVwYWdlLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgpA QCAtMTA5LDYgKzExMCwxNSBAQCBzdGF0aWMgYm9vbCBkc21faW5pdF9kb25lID0gZmFsc2U7 CiAKIC8qIFByZWFsbG9jYXRlZCBEU00gc3BhY2UgaW4gdGhlIG1haW4gc2hhcmVkIG1lbW9y eSByZWdpb24uICovCiBzdGF0aWMgdm9pZCAqZHNtX21haW5fc3BhY2VfYmVnaW4gPSBOVUxM Oworc3RhdGljIHNpemVfdCBkc21fbWFpbl9zcGFjZV9zaXplOworCitzdGF0aWMgdm9pZCBk c21fbWFpbl9zcGFjZV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBkc21fbWFp bl9zcGFjZV9pbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIGRzbV9z aG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBkc21fbWFpbl9zcGFjZV9yZXF1 ZXN0LAorCS5pbml0X2ZuID0gZHNtX21haW5fc3BhY2VfaW5pdCwKK307CiAKIC8qCiAgKiBM aXN0IG9mIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyB1c2VkIGJ5IHRoaXMgYmFj a2VuZC4KQEAgLTQ2NCw0MiArNDc0LDQwIEBAIGRzbV9zZXRfY29udHJvbF9oYW5kbGUoZHNt X2hhbmRsZSBoKQogI2VuZGlmCiAKIC8qCi0gKiBSZXNlcnZlIHNvbWUgc3BhY2UgaW4gdGhl IG1haW4gc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciBEU00gc2VnbWVudHMuCisgKiBSZXNl cnZlIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgRFNNIHNl Z21lbnRzLgogICovCi1zaXplX3QKLWRzbV9lc3RpbWF0ZV9zaXplKHZvaWQpCitzdGF0aWMg dm9pZAorZHNtX21haW5fc3BhY2VfcmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0dXJuIDEw MjQgKiAxMDI0ICogKHNpemVfdCkgbWluX2R5bmFtaWNfc2hhcmVkX21lbW9yeTsKKwlkc21f bWFpbl9zcGFjZV9zaXplID0gMTAyNCAqIDEwMjQgKiAoc2l6ZV90KSBtaW5fZHluYW1pY19z aGFyZWRfbWVtb3J5OworCisJaWYgKGRzbV9tYWluX3NwYWNlX3NpemUgPT0gMCkKKwkJcmV0 dXJuOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByZWFsbG9jYXRlZCBEU00i LAorCQkJCQkgICAuc2l6ZSA9IGRzbV9tYWluX3NwYWNlX3NpemUsCisJCQkJCSAgIC5wdHIg PSAmZHNtX21haW5fc3BhY2VfYmVnaW4sCisJCSk7CiB9CiAKLS8qCi0gKiBJbml0aWFsaXpl IHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgRFNNIHNlZ21l bnRzLgotICovCi12b2lkCi1kc21fc2htZW1faW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK2Rz bV9tYWluX3NwYWNlX2luaXQodm9pZCAqYXJnKQogewotCXNpemVfdAkJc2l6ZSA9IGRzbV9l c3RpbWF0ZV9zaXplKCk7Ci0JYm9vbAkJZm91bmQ7CisJRnJlZVBhZ2VNYW5hZ2VyICpmcG0g PSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2JlZ2luOworCXNpemVfdAkJ Zmlyc3RfcGFnZSA9IDA7CisJc2l6ZV90CQlwYWdlczsKIAotCWlmIChzaXplID09IDApCisJ aWYgKGRzbV9tYWluX3NwYWNlX3NpemUgPT0gMCkKIAkJcmV0dXJuOwogCi0JZHNtX21haW5f c3BhY2VfYmVnaW4gPSBTaG1lbUluaXRTdHJ1Y3QoIlByZWFsbG9jYXRlZCBEU00iLCBzaXpl LCAmZm91bmQpOwotCWlmICghZm91bmQpCi0JewotCQlGcmVlUGFnZU1hbmFnZXIgKmZwbSA9 IChGcmVlUGFnZU1hbmFnZXIgKikgZHNtX21haW5fc3BhY2VfYmVnaW47Ci0JCXNpemVfdAkJ Zmlyc3RfcGFnZSA9IDA7Ci0JCXNpemVfdAkJcGFnZXM7Ci0KLQkJLyogUmVzZXJ2ZSBzcGFj ZSBmb3IgdGhlIEZyZWVQYWdlTWFuYWdlci4gKi8KLQkJd2hpbGUgKGZpcnN0X3BhZ2UgKiBG UE1fUEFHRV9TSVpFIDwgc2l6ZW9mKEZyZWVQYWdlTWFuYWdlcikpCi0JCQkrK2ZpcnN0X3Bh Z2U7Ci0KLQkJLyogSW5pdGlhbGl6ZSBpdCBhbmQgZ2l2ZSBpdCBhbGwgdGhlIHJlc3Qgb2Yg dGhlIHNwYWNlLiAqLwotCQlGcmVlUGFnZU1hbmFnZXJJbml0aWFsaXplKGZwbSwgZHNtX21h aW5fc3BhY2VfYmVnaW4pOwotCQlwYWdlcyA9IChzaXplIC8gRlBNX1BBR0VfU0laRSkgLSBm aXJzdF9wYWdlOwotCQlGcmVlUGFnZU1hbmFnZXJQdXQoZnBtLCBmaXJzdF9wYWdlLCBwYWdl cyk7Ci0JfQorCS8qIFJlc2VydmUgc3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFnZXIuICov CisJd2hpbGUgKGZpcnN0X3BhZ2UgKiBGUE1fUEFHRV9TSVpFIDwgc2l6ZW9mKEZyZWVQYWdl TWFuYWdlcikpCisJCSsrZmlyc3RfcGFnZTsKKworCS8qIEluaXRpYWxpemUgaXQgYW5kIGdp dmUgaXQgYWxsIHRoZSByZXN0IG9mIHRoZSBzcGFjZS4gKi8KKwlGcmVlUGFnZU1hbmFnZXJJ bml0aWFsaXplKGZwbSwgZHNtX21haW5fc3BhY2VfYmVnaW4pOworCXBhZ2VzID0gKGRzbV9t YWluX3NwYWNlX3NpemUgLyBGUE1fUEFHRV9TSVpFKSAtIGZpcnN0X3BhZ2U7CisJRnJlZVBh Z2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYwppbmRleCA5YmZjZDYxNjgyNy4uMmI1 Njk3NzY1OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdp c3RyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdpc3RyeS5jCkBA IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKICNp bmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIK KyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv dHVwbGVzdG9yZS5oIgpAQCAtNTcsNiArNTgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRFNNUmVn aXN0cnlDdHhTdHJ1Y3QKIAogc3RhdGljIERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICpEU01SZWdp c3RyeUN0eDsKIAorc3RhdGljIHZvaWQgRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKTsKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQgKmFyZyk7CisK K2NvbnN0IFNobWVtQ2FsbGJhY2tzIERTTVJlZ2lzdHJ5U2htZW1DYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSBEU01SZWdpc3RyeVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IERT TVJlZ2lzdHJ5U2htZW1Jbml0LAorfTsKKwogdHlwZWRlZiBzdHJ1Y3QgTmFtZWREU01TdGF0 ZQogewogCWRzbV9oYW5kbGUJaGFuZGxlOwpAQCAtMTE0LDI3ICsxMjMsMjAgQEAgc3RhdGlj IGNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJzIGRzaF9wYXJhbXMgPSB7CiBzdGF0aWMgZHNhX2Fy ZWEgKmRzbV9yZWdpc3RyeV9kc2E7CiBzdGF0aWMgZHNoYXNoX3RhYmxlICpkc21fcmVnaXN0 cnlfdGFibGU7CiAKLVNpemUKLURTTVJlZ2lzdHJ5U2htZW1TaXplKHZvaWQpCitzdGF0aWMg dm9pZAorRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCXJldHVybiBN QVhBTElHTihzaXplb2YoRFNNUmVnaXN0cnlDdHhTdHJ1Y3QpKTsKKwlTaG1lbVJlcXVlc3RT dHJ1Y3QoLm5hbWUgPSAiRFNNIFJlZ2lzdHJ5IERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNp emVvZihEU01SZWdpc3RyeUN0eFN0cnVjdCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JkRTTVJlZ2lzdHJ5Q3R4LAorCQkpOwogfQogCi12b2lkCi1EU01SZWdpc3RyeVNobWVtSW5p dCh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQgKmFyZykK IHsKLQlib29sCQlmb3VuZDsKLQotCURTTVJlZ2lzdHJ5Q3R4ID0gKERTTVJlZ2lzdHJ5Q3R4 U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiRFNNIFJlZ2lzdHJ5IERhdGEiLAotCQkJ CQkJRFNNUmVnaXN0cnlTaG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZv dW5kKQotCXsKLQkJRFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lOVkFMSUQ7 Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2hoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCX0K KwlEU01SZWdpc3RyeUN0eC0+ZHNhaCA9IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlEU01SZWdp c3RyeUN0eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBkZTY1YTllZjMzYy4uNGY3MDcxNTgzMDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJhY2Nl c3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3N5bmNzY2FuLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3ByZWZldGNo ZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCkBAIC00MiwxNiArNDEs MTEgQEAKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9kc21fcmVnaXN0cnkuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgotI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIK LSNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgpAQCAtMTA1LDE0ICs5OSwxMCBAQCBDYWxjdWxhdGVTaG1lbVNp emUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRTaXpl KCkpOwogCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgZHNtX2VzdGltYXRlX3NpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIERTTVJl Z2lzdHJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZmZXJNYW5h Z2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2NrTWFuYWdlclNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJlZGljYXRlTG9ja1NobWVt U2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY0dsb2JhbFNobWVtU2l6ZSgp KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1ByZWZldGNoU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBWYXJzdXBTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFhMT0dTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFhMb2dSZWNvdmVyeVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ0xP R1NobWVtU2l6ZSgpKTsKQEAgLTEyMSwxMSArMTExLDcgQEAgQ2FsY3VsYXRlU2htZW1TaXpl KHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFR3b1BoYXNlU2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBNdWx0aVhhY3RTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFByb2NBcnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3Np emUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUo c2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IFBNU2lnbmFsU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcm9jU2ln bmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50ZXJT aG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1lbVNp emUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNp emUoKSk7CkBAIC0yNzgsMTMgKzI2NCw5IEBAIFJlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJh Y2tzKHZvaWQpCiBzdGF0aWMgdm9pZAogQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9p ZCkKIHsKLQlkc21fc2htZW1faW5pdCgpOwotCURTTVJlZ2lzdHJ5U2htZW1Jbml0KCk7Ci0K IAkvKgogCSAqIFNldCB1cCB4bG9nLCBjbG9nLCBhbmQgYnVmZmVycwogCSAqLwotCVZhcnN1 cFNobWVtSW5pdCgpOwogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1lbUlu aXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKQEAgLTMwNywyMyArMjg5LDEzIEBA IENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJLyoKIAkgKiBTZXQgdXAgcHJv Y2VzcyB0YWJsZQogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JCUluaXRQcm9j R2xvYmFsKCk7Ci0JUHJvY0FycmF5U2htZW1Jbml0KCk7CiAJQmFja2VuZFN0YXR1c1NobWVt SW5pdCgpOwogCVR3b1BoYXNlU2htZW1Jbml0KCk7CiAJQmFja2dyb3VuZFdvcmtlclNobWVt SW5pdCgpOwogCi0JLyoKLQkgKiBTZXQgdXAgc2hhcmVkLWludmFsIG1lc3NhZ2luZwotCSAq LwotCVNoYXJlZEludmFsU2htZW1Jbml0KCk7Ci0KIAkvKgogCSAqIFNldCB1cCBpbnRlcnBy b2Nlc3Mgc2lnbmFsaW5nIG1lY2hhbmlzbXMKIAkgKi8KLQlQTVNpZ25hbFNobWVtSW5pdCgp OwotCVByb2NTaWduYWxTaG1lbUluaXQoKTsKIAlDaGVja3BvaW50ZXJTaG1lbUluaXQoKTsK IAlBdXRvVmFjdXVtU2htZW1Jbml0KCk7CiAJUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCgp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKaW5kZXggODUzN2U5ZmVmMmQuLjdkNGY0Y2Yz MmJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKQEAgLTgwLDEwICs4MCwxMCBAQCBJ bml0TGF0Y2goTGF0Y2ggKmxhdGNoKQogICogY3VycmVudCBwcm9jZXNzLgogICoKICAqIElu aXRTaGFyZWRMYXRjaCBuZWVkcyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUg Zm9ya2luZyBjaGlsZAotICogcHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9j YXRpbmcgdGhlIHNoYXJlZCBtZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNo IHdpdGggU2htZW1Jbml0U3RydWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRv ZXNuJ3QgYWN0dWFsbHkgcmVxdWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMu KSBCZWNhdXNlIG9mCi0gKiB0aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJl bmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgorICogcHJvY2Vzc2VzLCB1c3VhbGx5 IHJpZ2h0IGFmdGVyIGluaXRpYWxpemluZyB0aGUgc2hhcmVkIG1lbW9yeSBibG9jaworICog Y29udGFpbmluZyB0aGUgbGF0Y2guIChUaGUgVW5peCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0 IGFjdHVhbGx5IHJlcXVpcmUKKyAqIHRoYXQsIGJ1dCB0aGUgV2luZG93cyBvbmUgZG9lcy4p IEJlY2F1c2Ugb2YgdGhpcyByZXN0cmljdGlvbiwgd2UgaGF2ZSBubworICogY29uY3VycmVu Y3kgaXNzdWVzIHRvIHdvcnJ5IGFib3V0IGhlcmUuCiAgKgogICogTm90ZSB0aGF0IG90aGVy IGhhbmRsZXMgY3JlYXRlZCBpbiB0aGlzIG1vZHVsZSBhcmUgbmV2ZXIgbWFya2VkIGFzCiAg KiBpbmhlcml0YWJsZS4gIFRodXMgd2UgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgY2xl YW5pbmcgdXAgY2hpbGQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Bt c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25hbC5jCmluZGV4IDQ2 MTg4MjBiMzM3Li5iZGFkNWZkZDA0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcG1zaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgor I2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAKIApAQCAtODMsNiArODQsMTQgQEAgc3RydWN0IFBNU2lnbmFsRGF0YQogLyog UE1TaWduYWxTdGF0ZSBwb2ludGVyIGlzIHZhbGlkIGluIGJvdGggcG9zdG1hc3RlciBhbmQg Y2hpbGQgcHJvY2Vzc2VzICovCiBOT05fRVhFQ19TVEFUSUMgdm9sYXRpbGUgUE1TaWduYWxE YXRhICpQTVNpZ25hbFN0YXRlID0gTlVMTDsKIAorc3RhdGljIHZvaWQgUE1TaWduYWxTaG1l bVJlcXVlc3Qodm9pZCAqKTsKK3N0YXRpYyB2b2lkIFBNU2lnbmFsU2htZW1Jbml0KHZvaWQg Kik7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFBNU2lnbmFsU2htZW1DYWxsYmFja3MgPSB7 CisJLnJlcXVlc3RfZm4gPSBQTVNpZ25hbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFBN U2lnbmFsU2htZW1Jbml0LAorfTsKKwogLyoKICAqIExvY2FsIGNvcHkgb2YgUE1TaWduYWxT dGF0ZS0+bnVtX2NoaWxkX2ZsYWdzLCBvbmx5IHZhbGlkIGluIHRoZQogICogcG9zdG1hc3Rl ci4gIFBvc3RtYXN0ZXIga2VlcHMgYSBsb2NhbCBjb3B5IHNvIHRoYXQgaXQgZG9lc24ndCBu ZWVkIHRvCkBAIC0xMjMsMzkgKzEzMiwyOSBAQCBwb3N0bWFzdGVyX2RlYXRoX2hhbmRsZXIo U0lHTkFMX0FSR1MpCiBzdGF0aWMgdm9pZCBNYXJrUG9zdG1hc3RlckNoaWxkSW5hY3RpdmUo aW50IGNvZGUsIERhdHVtIGFyZyk7CiAKIC8qCi0gKiBQTVNpZ25hbFNobWVtU2l6ZQotICoJ CUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBwbXNpZ25hbC5jJ3Mgc2hhcmVkIG1lbW9yeQor ICogUE1TaWduYWxTaG1lbVJlcXVlc3QgLSBSZWdpc3RlciBwbXNpZ25hbC5jJ3Mgc2hhcmVk IG1lbW9yeSBuZWVkcwogICovCi1TaXplCi1QTVNpZ25hbFNobWVtU2l6ZSh2b2lkKQorc3Rh dGljIHZvaWQKK1BNU2lnbmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlz aXplOworCXNpemVfdAkJc2l6ZTsKIAotCXNpemUgPSBvZmZzZXRvZihQTVNpZ25hbERhdGEs IFBNQ2hpbGRGbGFncyk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1heExp dmVQb3N0bWFzdGVyQ2hpbGRyZW4oKSwKLQkJCQkJCQkJICAgc2l6ZW9mKHNpZ19hdG9taWNf dCkpKTsKKwludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9zdG1hc3RlckNoaWxkcmVuKCk7 CiAKLQlyZXR1cm4gc2l6ZTsKKwlzaXplID0gYWRkX3NpemUob2Zmc2V0b2YoUE1TaWduYWxE YXRhLCBQTUNoaWxkRmxhZ3MpLAorCQkJCQltdWxfc2l6ZShudW1fY2hpbGRfZmxhZ3MsIHNp emVvZihzaWdfYXRvbWljX3QpKSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlBN U2lnbmFsU3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJlBNU2lnbmFsU3RhdGUsCisJCSk7CiB9CiAKLS8qCi0gKiBQTVNpZ25hbFNo bWVtSW5pdCAtIGluaXRpYWxpemUgZHVyaW5nIHNoYXJlZC1tZW1vcnkgY3JlYXRpb24KLSAq Lwotdm9pZAotUE1TaWduYWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQTVNpZ25h bFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlQTVNpZ25hbFN0 YXRlID0gKFBNU2lnbmFsRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlBNU2lnbmFsU3Rh dGUiLCBQTVNpZ25hbFNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7 Ci0JCS8qIGluaXRpYWxpemUgYWxsIGZsYWdzIHRvIHplcm9lcyAqLwotCQlNZW1TZXQodW52 b2xhdGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2lnbmFsU2ht ZW1TaXplKCkpOwotCQludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9zdG1hc3RlckNoaWxk cmVuKCk7Ci0JCVBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncyA9IG51bV9jaGlsZF9m bGFnczsKLQl9CisJQXNzZXJ0KFBNU2lnbmFsU3RhdGUpOworCUFzc2VydChudW1fY2hpbGRf ZmxhZ3MgPiAwKTsKKwlQTVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hp bGRfZmxhZ3M7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmlu ZGV4IGNjMjA3Y2I1NmUzLi5mNTQwYmI2YjIzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY2FycmF5LmMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1 ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCkBAIC0xMDMsNiArMTA0LDE4IEBAIHR5cGVk ZWYgc3RydWN0IFByb2NBcnJheVN0cnVjdAogCWludAkJCXBncHJvY25vc1tGTEVYSUJMRV9B UlJBWV9NRU1CRVJdOwogfSBQcm9jQXJyYXlTdHJ1Y3Q7CiAKK3N0YXRpYyB2b2lkIFByb2NB cnJheVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0FycmF5U2ht ZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUF0dGFjaCh2 b2lkICphcmcpOworCitzdGF0aWMgUHJvY0FycmF5U3RydWN0ICpwcm9jQXJyYXk7CisKK2Nv bnN0IHN0cnVjdCBTaG1lbUNhbGxiYWNrcyBQcm9jQXJyYXlTaG1lbUNhbGxiYWNrcyA9IHsK KwkucmVxdWVzdF9mbiA9IFByb2NBcnJheVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFBy b2NBcnJheVNobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gUHJvY0FycmF5U2htZW1BdHRhY2gs Cit9OworCiAvKgogICogU3RhdGUgZm9yIHRoZSBHbG9iYWxWaXNUZXN0KiBmYW1pbHkgb2Yg ZnVuY3Rpb25zLiBUaG9zZSBmdW5jdGlvbnMgY2FuCiAgKiBlLmcuIGJlIHVzZWQgdG8gZGVj aWRlIGlmIGEgZGVsZXRlZCByb3cgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCB2aW9sYXRpbmcK QEAgLTI2OSw5ICsyODIsNiBAQCB0eXBlZGVmIGVudW0gS0FYQ29tcHJlc3NSZWFzb24KIAlL QVhfU1RBUlRVUF9QUk9DRVNTX0lETEUsCS8qIHN0YXJ0dXAgcHJvY2VzcyBpcyBhYm91dCB0 byBzbGVlcCAqLwogfSBLQVhDb21wcmVzc1JlYXNvbjsKIAotCi1zdGF0aWMgUHJvY0FycmF5 U3RydWN0ICpwcm9jQXJyYXk7Ci0KIHN0YXRpYyBQR1BST0MgKmFsbFByb2NzOwogCiAvKgpA QCAtMjgyLDggKzI5MiwxMSBAQCBzdGF0aWMgVHJhbnNhY3Rpb25JZCBjYWNoZWRYaWRJc05v dEluUHJvZ3Jlc3MgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIC8qCiAgKiBCb29ra2VlcGlu ZyBmb3IgdHJhY2tpbmcgZW11bGF0ZWQgdHJhbnNhY3Rpb25zIGluIHJlY292ZXJ5CiAgKi8K Kwogc3RhdGljIFRyYW5zYWN0aW9uSWQgKktub3duQXNzaWduZWRYaWRzOworCiBzdGF0aWMg Ym9vbCAqS25vd25Bc3NpZ25lZFhpZHNWYWxpZDsKKwogc3RhdGljIFRyYW5zYWN0aW9uSWQg bGF0ZXN0T2JzZXJ2ZWRYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogLyoKQEAgLTM3 NCwxOSArMzg3LDEzIEBAIHN0YXRpYyBpbmxpbmUgRnVsbFRyYW5zYWN0aW9uSWQgRnVsbFhp ZFJlbGF0aXZlVG8oRnVsbFRyYW5zYWN0aW9uSWQgcmVsLAogc3RhdGljIHZvaWQgR2xvYmFs VmlzVXBkYXRlQXBwbHkoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpob3Jpem9ucyk7CiAK IC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUHJvY0FycmF5 U2htZW1Jbml0CisgKiBSZWdpc3RlciB0aGUgc2hhcmVkIFBHUFJPQyBhcnJheSBkdXJpbmcg cG9zdG1hc3RlciBzdGFydHVwLgogICovCi1TaXplCi1Qcm9jQXJyYXlTaG1lbVNpemUodm9p ZCkKK3N0YXRpYyB2b2lkCitQcm9jQXJyYXlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewot CVNpemUJCXNpemU7Ci0KLQkvKiBTaXplIG9mIHRoZSBQcm9jQXJyYXkgc3RydWN0dXJlIGl0 c2VsZiAqLwogI2RlZmluZSBQUk9DQVJSQVlfTUFYUFJPQ1MJKE1heEJhY2tlbmRzICsgbWF4 X3ByZXBhcmVkX3hhY3RzKQogCi0Jc2l6ZSA9IG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwg cGdwcm9jbm9zKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6ZW9mKGlu dCksIFBST0NBUlJBWV9NQVhQUk9DUykpOwotCiAJLyoKIAkgKiBEdXJpbmcgSG90IFN0YW5k YnkgcHJvY2Vzc2luZyB3ZSBoYXZlIGEgZGF0YSBzdHJ1Y3R1cmUgY2FsbGVkCiAJICogS25v d25Bc3NpZ25lZFhpZHMsIGNyZWF0ZWQgaW4gc2hhcmVkIG1lbW9yeS4gTG9jYWwgZGF0YSBz dHJ1Y3R1cmVzIGFyZQpAQCAtNDA1LDY0ICs0MTIsNDkgQEAgUHJvY0FycmF5U2htZW1TaXpl KHZvaWQpCiAKIAlpZiAoRW5hYmxlSG90U3RhbmRieSkKIAl7Ci0JCXNpemUgPSBhZGRfc2l6 ZShzaXplLAotCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLAotCQkJCQkJ CQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSk7Ci0JCXNpemUgPSBhZGRfc2l6ZShzaXpl LAotCQkJCQkJbXVsX3NpemUoc2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJ RFMpKTsKKwkJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIktub3duQXNzaWduZWRYaWRz IiwKKwkJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLCBU T1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAorCQkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAm S25vd25Bc3NpZ25lZFhpZHMsCisJCQkpOworCisJCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJLbm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKKwkJCQkJCSAgIC5zaXplID0gbXVsX3Np emUoc2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAorCQkJCQkJICAg LnB0ciA9ICh2b2lkICoqKSAmS25vd25Bc3NpZ25lZFhpZHNWYWxpZCwKKwkJCSk7CiAJfQog Ci0JcmV0dXJuIHNpemU7CisJLyogUmVnaXN0ZXIgdGhlIFByb2NBcnJheSBzaGFyZWQgc3Ry dWN0dXJlICovCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2MgQXJyYXkiLAor CQkJCQkgICAuc2l6ZSA9IGFkZF9zaXplKG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwgcGdw cm9jbm9zKSwKKwkJCQkJCQkJCQltdWxfc2l6ZShzaXplb2YoaW50KSwgUFJPQ0FSUkFZX01B WFBST0NTKSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnByb2NBcnJheSwKKwkJKTsK IH0KIAogLyoKICAqIEluaXRpYWxpemUgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5n IHBvc3RtYXN0ZXIgc3RhcnR1cC4KICAqLwotdm9pZAotUHJvY0FycmF5U2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorUHJvY0FycmF5U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQli b29sCQlmb3VuZDsKLQotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIFByb2NBcnJheSBz aGFyZWQgc3RydWN0dXJlICovCi0JcHJvY0FycmF5ID0gKFByb2NBcnJheVN0cnVjdCAqKQot CQlTaG1lbUluaXRTdHJ1Y3QoIlByb2MgQXJyYXkiLAotCQkJCQkJYWRkX3NpemUob2Zmc2V0 b2YoUHJvY0FycmF5U3RydWN0LCBwZ3Byb2Nub3MpLAotCQkJCQkJCQkgbXVsX3NpemUoc2l6 ZW9mKGludCksCi0JCQkJCQkJCQkJICBQUk9DQVJSQVlfTUFYUFJPQ1MpKSwKLQkJCQkJCSZm b3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogV2UncmUgdGhlIGZpcnN0 IC0gaW5pdGlhbGl6ZS4KLQkJICovCi0JCXByb2NBcnJheS0+bnVtUHJvY3MgPSAwOwotCQlw cm9jQXJyYXktPm1heFByb2NzID0gUFJPQ0FSUkFZX01BWFBST0NTOwotCQlwcm9jQXJyYXkt Pm1heEtub3duQXNzaWduZWRYaWRzID0gVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTOwotCQlw cm9jQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzID0gMDsKLQkJcHJvY0FycmF5LT50YWls S25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9jQXJyYXktPmhlYWRLbm93bkFzc2lnbmVk WGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+bGFzdE92ZXJmbG93ZWRYaWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKLQkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X3htaW4gPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X2NhdGFs b2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlUcmFuc2FtVmFyaWFibGVzLT54 YWN0Q29tcGxldGlvbkNvdW50ID0gMTsKLQl9CisJcHJvY0FycmF5LT5udW1Qcm9jcyA9IDA7 CisJcHJvY0FycmF5LT5tYXhQcm9jcyA9IFBST0NBUlJBWV9NQVhQUk9DUzsKKwlwcm9jQXJy YXktPm1heEtub3duQXNzaWduZWRYaWRzID0gVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTOwor CXByb2NBcnJheS0+bnVtS25vd25Bc3NpZ25lZFhpZHMgPSAwOworCXByb2NBcnJheS0+dGFp bEtub3duQXNzaWduZWRYaWRzID0gMDsKKwlwcm9jQXJyYXktPmhlYWRLbm93bkFzc2lnbmVk WGlkcyA9IDA7CisJcHJvY0FycmF5LT5sYXN0T3ZlcmZsb3dlZFhpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOworCXByb2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF94bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X2NhdGFsb2df eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCVRyYW5zYW1WYXJpYWJsZXMtPnhhY3RD b21wbGV0aW9uQ291bnQgPSAxOwogCiAJYWxsUHJvY3MgPSBQcm9jR2xvYmFsLT5hbGxQcm9j czsKK30KIAotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEtub3duQXNzaWduZWRYaWRz IGFycmF5cyB0b28sIGlmIG5lZWRlZCAqLwotCWlmIChFbmFibGVIb3RTdGFuZGJ5KQotCXsK LQkJS25vd25Bc3NpZ25lZFhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKQotCQkJU2htZW1Jbml0 U3RydWN0KCJLbm93bkFzc2lnbmVkWGlkcyIsCi0JCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFRy YW5zYWN0aW9uSWQpLAotCQkJCQkJCQkJIFRPVEFMX01BWF9DQUNIRURfU1VCWElEUyksCi0J CQkJCQkJJmZvdW5kKTsKLQkJS25vd25Bc3NpZ25lZFhpZHNWYWxpZCA9IChib29sICopCi0J CQlTaG1lbUluaXRTdHJ1Y3QoIktub3duQXNzaWduZWRYaWRzVmFsaWQiLAotCQkJCQkJCW11 bF9zaXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKLQkJCQkJ CQkmZm91bmQpOwotCX0KK3N0YXRpYyB2b2lkCitQcm9jQXJyYXlTaG1lbUF0dGFjaCh2b2lk ICphcmcpCit7CisJYWxsUHJvY3MgPSBQcm9jR2xvYmFsLT5hbGxQcm9jczsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBmMWFiM2FhM2ZlMC4u YWRlYmYwZTc4OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAg LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50 LmgiCkBAIC0xMDYsNyArMTA3LDE2IEBAIHN0cnVjdCBQcm9jU2lnbmFsSGVhZGVyCiAjZGVm aW5lIEJBUlJJRVJfQ0xFQVJfQklUKGZsYWdzLCB0eXBlKSBcCiAJKChmbGFncykgJj0gfigo KHVpbnQzMikgMSkgPDwgKHVpbnQzMikgKHR5cGUpKSkKIAorc3RhdGljIHZvaWQgUHJvY1Np Z25hbFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY1NpZ25hbFNo bWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQcm9jU2lnbmFs U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQcm9jU2lnbmFsU2htZW1SZXF1 ZXN0LAorCS5pbml0X2ZuID0gUHJvY1NpZ25hbFNobWVtSW5pdCwKK307CisKIE5PTl9FWEVD X1NUQVRJQyBQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsID0gTlVMTDsKKwogc3RhdGlj IFByb2NTaWduYWxTbG90ICpNeVByb2NTaWduYWxTbG90ID0gTlVMTDsKIAogc3RhdGljIGJv b2wgQ2hlY2tQcm9jU2lnbmFsKFByb2NTaWduYWxSZWFzb24gcmVhc29uKTsKQEAgLTExNCw1 MSArMTI0LDM5IEBAIHN0YXRpYyB2b2lkIENsZWFudXBQcm9jU2lnbmFsU3RhdGUoaW50IHN0 YXR1cywgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFJlc2V0UHJvY1NpZ25hbEJhcnJpZXJC aXRzKHVpbnQzMiBmbGFncyk7CiAKIC8qCi0gKiBQcm9jU2lnbmFsU2htZW1TaXplCi0gKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIFByb2NTaWduYWwncyBzaGFyZWQgbWVtb3J5Cisg KiBQcm9jU2lnbmFsU2htZW1SZXF1ZXN0CisgKgkJUmVnaXN0ZXIgUHJvY1NpZ25hbCdzIHNo YXJlZCBtZW1vcnkgbmVlZHMgYXQgcG9zdG1hc3RlciBzdGFydHVwCiAgKi8KLVNpemUKLVBy b2NTaWduYWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9jU2lnbmFsU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG11bF9zaXpl KE51bVByb2NTaWduYWxTbG90cywgc2l6ZW9mKFByb2NTaWduYWxTbG90KSk7CiAJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFByb2NTaWduYWxIZWFkZXIsIHBzaF9zbG90KSk7 Ci0JcmV0dXJuIHNpemU7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiUHJvY1Np Z25hbCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmUHJvY1NpZ25hbCwKKwkJKTsKIH0KIAotLyoKLSAqIFByb2NTaWduYWxTaG1lbUluaXQK LSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBQcm9jU2lnbmFsJ3Mgc2hhcmVkIG1lbW9y eQotICovCi12b2lkCi1Qcm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAor UHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9IFByb2NT aWduYWxTaG1lbVNpemUoKTsKLQlib29sCQlmb3VuZDsKKwlwZ19hdG9taWNfaW5pdF91NjQo JlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwgMCk7CiAKLQlQcm9jU2lnbmFs ID0gKFByb2NTaWduYWxIZWFkZXIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9jU2lnbmFs Iiwgc2l6ZSwgJmZvdW5kKTsKLQotCS8qIElmIHdlJ3JlIGZpcnN0LCBpbml0aWFsaXplLiAq LwotCWlmICghZm91bmQpCisJZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1Qcm9jU2lnbmFsU2xv dHM7ICsraSkKIAl7Ci0JCWludAkJCWk7Ci0KLQkJcGdfYXRvbWljX2luaXRfdTY0KCZQcm9j U2lnbmFsLT5wc2hfYmFycmllckdlbmVyYXRpb24sIDApOworCQlQcm9jU2lnbmFsU2xvdCAq c2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKIAotCQlmb3IgKGkgPSAwOyBpIDwg TnVtUHJvY1NpZ25hbFNsb3RzOyArK2kpCi0JCXsKLQkJCVByb2NTaWduYWxTbG90ICpzbG90 ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W2ldOwotCi0JCQlTcGluTG9ja0luaXQoJnNsb3Qt PnBzc19tdXRleCk7Ci0JCQlwZ19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19waWQsIDAp OwotCQkJc2xvdC0+cHNzX2NhbmNlbF9rZXlfbGVuID0gMDsKLQkJCU1lbVNldChzbG90LT5w c3Nfc2lnbmFsRmxhZ3MsIDAsIHNpemVvZihzbG90LT5wc3Nfc2lnbmFsRmxhZ3MpKTsKLQkJ CXBnX2F0b21pY19pbml0X3U2NCgmc2xvdC0+cHNzX2JhcnJpZXJHZW5lcmF0aW9uLCBQR19V SU5UNjRfTUFYKTsKLQkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX2JhcnJpZXJD aGVja01hc2ssIDApOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5wc3NfYmFy cmllckNWKTsKLQkJfQorCQlTcGluTG9ja0luaXQoJnNsb3QtPnBzc19tdXRleCk7CisJCXBn X2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX3BpZCwgMCk7CisJCXNsb3QtPnBzc19jYW5j ZWxfa2V5X2xlbiA9IDA7CisJCU1lbVNldChzbG90LT5wc3Nfc2lnbmFsRmxhZ3MsIDAsIHNp emVvZihzbG90LT5wc3Nfc2lnbmFsRmxhZ3MpKTsKKwkJcGdfYXRvbWljX2luaXRfdTY0KCZz bG90LT5wc3NfYmFycmllckdlbmVyYXRpb24sIFBHX1VJTlQ2NF9NQVgpOworCQlwZ19hdG9t aWNfaW5pdF91MzIoJnNsb3QtPnBzc19iYXJyaWVyQ2hlY2tNYXNrLCAwKTsKKwkJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZzbG90LT5wc3NfYmFycmllckNWKTsKIAl9CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKaW5kZXggYTdhN2NjNGYwYTkuLjM3YTIxZmZh ZjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMjUsNiArMjUs NyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3Np bnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc3Vic3lzdGVtcy5oIgogCiAvKgogICogQ29uY2VwdHVhbGx5LCB0aGUgc2hhcmVkIGNh Y2hlIGludmFsaWRhdGlvbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIGFuCkBAIC0yMDUsNiAr MjA2LDE0IEBAIHR5cGVkZWYgc3RydWN0IFNJU2VnCiAKIHN0YXRpYyBTSVNlZyAqc2htSW52 YWxCdWZmZXI7CS8qIHBvaW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KIAor c3RhdGljIHZvaWQgU2hhcmVkSW52YWxTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIFNoYXJlZEludmFsU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVt Q2FsbGJhY2tzIFNoYXJlZEludmFsU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4g PSBTaGFyZWRJbnZhbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFNoYXJlZEludmFsU2ht ZW1Jbml0LAorfTsKKwogCiBzdGF0aWMgTG9jYWxUcmFuc2FjdGlvbklkIG5leHRMb2NhbFRy YW5zYWN0aW9uSWQ7CiAKQEAgLTIxMiwxMCArMjIxLDExIEBAIHN0YXRpYyB2b2lkIENsZWFu dXBJbnZhbGlkYXRpb25TdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpOwogCiAKIC8qCi0g KiBTaGFyZWRJbnZhbFNobWVtU2l6ZSAtLS0gcmV0dXJuIHNoYXJlZC1tZW1vcnkgc3BhY2Ug bmVlZGVkCisgKiBTaGFyZWRJbnZhbFNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVyIHNoYXJl ZCBtZW1vcnkgbmVlZHMgZm9yIHRoZSBTSSBtZXNzYWdlIGJ1ZmZlcgogICovCi1TaXplCi1T aGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1NoYXJlZEludmFsU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBAIC0yMjMsMjYgKzIz MywxOCBAQCBTaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBtdWxfc2l6ZShzaXplb2YoUHJvY1N0YXRlKSwgTnVtUHJvY1N0YXRlU2xvdHMpKTsJ LyogcHJvY1N0YXRlICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKHNpemVv ZihpbnQpLCBOdW1Qcm9jU3RhdGVTbG90cykpOwkvKiBwZ3Byb2Nub3MgKi8KIAotCXJldHVy biBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJzaG1JbnZhbEJ1ZmZlciIs CisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmc2ht SW52YWxCdWZmZXIsCisJCSk7CiB9CiAKLS8qCi0gKiBTaGFyZWRJbnZhbFNobWVtSW5pdAot ICoJCUNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgU0kgbWVzc2FnZSBidWZmZXIKLSAqLwot dm9pZAotU2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitTaGFyZWRJ bnZhbFNobWVtSW5pdCh2b2lkICphcmcpCiB7CiAJaW50CQkJaTsKLQlib29sCQlmb3VuZDsK LQotCS8qIEFsbG9jYXRlIHNwYWNlIGluIHNoYXJlZCBtZW1vcnkgKi8KLQlzaG1JbnZhbEJ1 ZmZlciA9IChTSVNlZyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoInNobUludmFsQnVmZmVyIiwg U2hhcmVkSW52YWxTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0JCXJldHVy bjsKIAotCS8qIENsZWFyIG1lc3NhZ2UgY291bnRlcnMsIHNhdmUgc2l6ZSBvZiBwcm9jU3Rh dGUgYXJyYXksIGluaXQgc3BpbmxvY2sgKi8KKwkvKiBDbGVhciBtZXNzYWdlIGNvdW50ZXJz LCBpbml0IHNwaW5sb2NrICovCiAJc2htSW52YWxCdWZmZXItPm1pbk1zZ051bSA9IDA7CiAJ c2htSW52YWxCdWZmZXItPm1heE1zZ051bSA9IDA7CiAJc2htSW52YWxCdWZmZXItPm5leHRU aHJlc2hvbGQgPSBDTEVBTlVQX01JTjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4 IDliODgwYTZhZjY1Li5hMDVjNTViNTM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5j CkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5Lmgi CisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxz L3dhaXRfZXZlbnQuaCIKQEAgLTcwLDkgKzcxLDIzIEBAIFBHUFJPQwkgICAqTXlQcm9jID0g TlVMTDsKIAogLyogUG9pbnRlcnMgdG8gc2hhcmVkLW1lbW9yeSBzdHJ1Y3R1cmVzICovCiBQ Uk9DX0hEUiAgICpQcm9jR2xvYmFsID0gTlVMTDsKK3N0YXRpYyB2b2lkICpBbGxQcm9jc1No bWVtUHRyOworc3RhdGljIHZvaWQgKkZhc3RQYXRoTG9ja0FycmF5U2htZW1QdHI7CiBOT05f RVhFQ19TVEFUSUMgUEdQUk9DICpBdXhpbGlhcnlQcm9jcyA9IE5VTEw7CiBQR1BST0MJICAg KlByZXBhcmVkWGFjdFByb2NzID0gTlVMTDsKIAorc3RhdGljIHZvaWQgUHJvY0dsb2JhbFNo bWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0dsb2JhbFNobWVtSW5p dCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQcm9jR2xvYmFsU2htZW1D YWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQcm9jR2xvYmFsU2htZW1SZXF1ZXN0LAor CS5pbml0X2ZuID0gUHJvY0dsb2JhbFNobWVtSW5pdCwKK307CisKK3N0YXRpYyB1aW50MzIg VG90YWxQcm9jczsKK3N0YXRpYyBzaXplX3QgUHJvY0dsb2JhbEFsbFByb2NzU2htZW1TaXpl Oworc3RhdGljIHNpemVfdCBGYXN0UGF0aExvY2tBcnJheVNobWVtU2l6ZTsKKwogLyogSXMg YSBkZWFkbG9jayBjaGVjayBwZW5kaW5nPyAqLwogc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBnb3RfZGVhZGxvY2tfdGltZW91dDsKIApAQCAtODMsMzIgKzk4LDEyIEBAIHN0YXRp YyBEZWFkTG9ja1N0YXRlIENoZWNrRGVhZExvY2sodm9pZCk7CiAKIAogLyoKLSAqIFJlcG9y dCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBQR1BST0MuCisgKiBDYWxjdWxhdGUg c2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgRmFzdC1QYXRoIGxvY2tzLgogICovCiBz dGF0aWMgU2l6ZQotUEdQcm9jU2htZW1TaXplKHZvaWQpCitDYWxjdWxhdGVGYXN0UGF0aExv Y2tTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzaXplID0gMDsKLQlTaXplCQlUb3RhbFBy b2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllf UFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwotCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlk cykpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6 ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxh Z3MpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQotLyoKLSAqIFJlcG9ydCBzaGFyZWQtbWVt b3J5IHNwYWNlIG5lZWRlZCBieSBGYXN0LVBhdGggbG9ja3MuCi0gKi8KLXN0YXRpYyBTaXpl Ci1GYXN0UGF0aExvY2tTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplID0gMDsKLQlT aXplCQlUb3RhbFByb2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5V TV9BVVhJTElBUllfUFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwogCVNpemUJCWZwTG9j a0JpdHNTaXplLAogCQkJCWZwUmVsSWRTaXplOwogCkBAIC0xMjgsMjYgKzEyMyw3IEBAIEZh c3RQYXRoTG9ja1NobWVtU2l6ZSh2b2lkKQogfQogCiAvKgotICogUmVwb3J0IHNoYXJlZC1t ZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEluaXRQcm9jR2xvYmFsLgotICovCi1TaXplCi1Qcm9j R2xvYmFsU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0KLQkvKiBQcm9j R2xvYmFsICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihQUk9DX0hEUikpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2Yoc2xvY2tfdCkpOwotCi0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFBHU2VtYXBob3JlU2htZW1TaXplKFByb2NHbG9iYWxTZW1hcygpKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHUHJvY1NobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgRmFzdFBhdGhMb2NrU2htZW1TaXplKCkpOwotCi0JcmV0dXJuIHNp emU7Ci19Ci0KLS8qCi0gKiBSZXBvcnQgbnVtYmVyIG9mIHNlbWFwaG9yZXMgbmVlZGVkIGJ5 IEluaXRQcm9jR2xvYmFsLgorICogUmVwb3J0IG51bWJlciBvZiBzZW1hcGhvcmVzIG5lZWRl ZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogICovCiBpbnQKIFByb2NHbG9iYWxTZW1hcyh2 b2lkKQpAQCAtMTYwLDcgKzEzNiw2NyBAQCBQcm9jR2xvYmFsU2VtYXModm9pZCkKIH0KIAog LyoKLSAqIEluaXRQcm9jR2xvYmFsIC0KKyAqIFByb2NHbG9iYWxTaG1lbVJlcXVlc3QKKyAq CSAgUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxl ZCBkdXJpbmcgcG9zdG1hc3RlciBvciBzdGFuZGFsb25lIGJhY2tlbmQgc3RhcnR1cCwgYW5k IGFsc28KKyAqIGR1cmluZyBiYWNrZW5kIHN0YXJ0dXAgaW4gRVhFQ19CQUNLRU5EIG1vZGUu CisgKi8KK3N0YXRpYyB2b2lkCitQcm9jR2xvYmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK K3sKKwlTaXplCQlzaXplOworCisJLyoKKwkgKiBSZXNlcnZlIGFsbCB0aGUgUEdQUk9DIHN0 cnVjdHVyZXMgd2UnbGwgbmVlZC4gIFRoZXJlIGFyZSBzaXggc2VwYXJhdGUKKwkgKiBjb25z dW1lcnM6ICgxKSBub3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdvcmtlcnMgYW5k IHNwZWNpYWwKKwkgKiB3b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAoNCkgd2Fs c2VuZGVycywgKDUpIGF1eGlsaWFyeQorCSAqIHByb2Nlc3NlcywgYW5kICg2KSBwcmVwYXJl ZCB0cmFuc2FjdGlvbnMuICAoRm9yIGxhcmdlbHktaGlzdG9yaWNhbAorCSAqIHJlYXNvbnMs IHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBhbmQgc3BlY2lhbCB3b3JrZXJzIGludG8gb25lIGNh dGVnb3J5CisJICogd2l0aCBhIHNpbmdsZSBmcmVlbGlzdC4pICBFYWNoIFBHUFJPQyBzdHJ1 Y3R1cmUgaXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkKKwkgKiBvbmUgb2YgdGhlc2UgcHVycG9z ZXMsIGFuZCB0aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4gZ3JvdXBzLgorCSAqLworCVRvdGFs UHJvY3MgPQorCQlhZGRfc2l6ZShNYXhCYWNrZW5kcywgYWRkX3NpemUoTlVNX0FVWElMSUFS WV9QUk9DUywgbWF4X3ByZXBhcmVkX3hhY3RzKSk7CisKKwlzaXplID0gMDsKKwlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKFBHUFJPQykpKTsK KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQ cm9jR2xvYmFsLT54aWRzKSkpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShU b3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpKTsKKwlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdGF0dXNGbGFncykpKTsKKwlQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbVNpemUgPSBz aXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQR1BST0Mgc3RydWN0dXJlcyIs CisJCQkJCSAgIC5zaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1TaXplLAorCQkJCQkg ICAucHRyID0gJkFsbFByb2NzU2htZW1QdHIsCisJCSk7CisKKwlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyKQorCQlzaXplID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVNpemUgPSBDYWxjdWxh dGVGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKKwllbHNlCisJCXNpemUgPSBTSE1FTV9BVFRB Q0hfVU5LTk9XTl9TSVpFOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJGYXN0LVBh dGggTG9jayBBcnJheSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9 ICZGYXN0UGF0aExvY2tBcnJheVNobWVtUHRyLAorCQkpOworCisJLyoKKwkgKiBQcm9jR2xv YmFsIGlzIHJlZ2lzdGVyZWQgaGVyZSBpbiAucHRyIGFzIHVzdWFsLCBidXQgaXQgbmVlZHMg dG8gYmUKKwkgKiBwcm9wYWdhdGVkIHNwZWNpYWxseSBpbiBFWEVDX0JBQ0tFTkQgbW9kZSwg YmVjYXVzZSBQcm9jR2xvYmFsIG5lZWRzIHRvCisJICogYmUgYWNjZXNzZWQgZWFybHkgYXQg YmFja2VuZCBzdGFydHVwLCBiZWZvcmUgU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKSBoYXMKKwkg KiBiZWVuIGNhbGxlZC4KKwkgKi8KKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiUHJv YyBIZWFkZXIiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihQUk9DX0hEUiksCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJlByb2NHbG9iYWwsCisJCSk7CisKKwkvKiBMZXQgdGhlIHNl bWFwaG9yZSBpbXBsZW1lbnRhdGlvbiByZWdpc3RlciBpdHMgc2hhcmVkIG1lbW9yeSBuZWVk cyAqLworCVBHU2VtYXBob3JlU2htZW1SZXF1ZXN0KFByb2NHbG9iYWxTZW1hcygpKTsKK30K KworCisvKgorICogUHJvY0dsb2JhbFNobWVtSW5pdCAtCiAgKgkgIEluaXRpYWxpemUgdGhl IGdsb2JhbCBwcm9jZXNzIHRhYmxlIGR1cmluZyBwb3N0bWFzdGVyIG9yIHN0YW5kYWxvbmUK ICAqCSAgYmFja2VuZCBzdGFydHVwLgogICoKQEAgLTE3OSwzNiArMjE1LDIzIEBAIFByb2NH bG9iYWxTZW1hcyh2b2lkKQogICoJICBBbm90aGVyIHJlYXNvbiBmb3IgY3JlYXRpbmcgc2Vt YXBob3JlcyBoZXJlIGlzIHRoYXQgdGhlIHNlbWFwaG9yZQogICoJICBpbXBsZW1lbnRhdGlv biB0eXBpY2FsbHkgcmVxdWlyZXMgdXMgdG8gY3JlYXRlIHNlbWFwaG9yZXMgaW4gdGhlCiAg KgkgIHBvc3RtYXN0ZXIsIG5vdCBpbiBiYWNrZW5kcy4KLSAqCi0gKiBOb3RlOiB0aGlzIGlz IE5PVCBjYWxsZWQgYnkgaW5kaXZpZHVhbCBiYWNrZW5kcyB1bmRlciBhIHBvc3RtYXN0ZXIs Ci0gKiBub3QgZXZlbiBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBUaGUgUHJvY0dsb2Jh bCBhbmQgQXV4aWxpYXJ5UHJvY3MKLSAqIHBvaW50ZXJzIG11c3QgYmUgcHJvcGFnYXRlZCBz cGVjaWFsbHkgZm9yIEVYRUNfQkFDS0VORCBvcGVyYXRpb24uCiAgKi8KLXZvaWQKLUluaXRQ cm9jR2xvYmFsKHZvaWQpCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lk ICphcmcpCiB7CisJY2hhcgkgICAqcHRyOworCXNpemVfdAkJcmVxdWVzdFNpemU7CiAJUEdQ Uk9DCSAgICpwcm9jczsKIAlpbnQJCQlpLAogCQkJCWo7Ci0JYm9vbAkJZm91bmQ7Ci0JdWlu dDMyCQlUb3RhbFByb2NzID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTICsg bWF4X3ByZXBhcmVkX3hhY3RzOwogCiAJLyogVXNlZCBmb3Igc2V0dXAgb2YgcGVyLWJhY2tl bmQgZmFzdC1wYXRoIHNsb3RzLiAqLwogCWNoYXIJICAgKmZwUHRyLAogCQkJICAgKmZwRW5k UHRyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwK IAkJCQlmcFJlbElkU2l6ZTsKLQlTaXplCQlyZXF1ZXN0U2l6ZTsKLQljaGFyCSAgICpwdHI7 CiAKLQkvKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAqLwotCVBy b2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9jIEhlYWRl ciIsIHNpemVvZihQUk9DX0hEUiksICZmb3VuZCk7Ci0JQXNzZXJ0KCFmb3VuZCk7Ci0KLQkv KgotCSAqIEluaXRpYWxpemUgdGhlIGRhdGEgc3RydWN0dXJlcy4KLQkgKi8KKwlBc3NlcnQo UHJvY0dsb2JhbCk7CiAJUHJvY0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVGQVVMVF9T UElOU19QRVJfREVMQVk7CiAJU3BpbkxvY2tJbml0KCZQcm9jR2xvYmFsLT5mcmVlUHJvY3NM b2NrKTsKIAlkbGlzdF9pbml0KCZQcm9jR2xvYmFsLT5mcmVlUHJvY3MpOwpAQCAtMjIxLDIz ICsyNDQsMTEgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAlwZ19hdG9taWNfaW5pdF91MzIo JlByb2NHbG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19OVU1CRVIp OwogCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+Y2xvZ0dyb3VwRmlyc3QsIElO VkFMSURfUFJPQ19OVU1CRVIpOwogCi0JLyoKLQkgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg YWxsIHRoZSBQR1BST0Mgc3RydWN0dXJlcyB3ZSdsbCBuZWVkLiAgVGhlcmUgYXJlCi0JICog c2l4IHNlcGFyYXRlIGNvbnN1bWVyczogKDEpIG5vcm1hbCBiYWNrZW5kcywgKDIpIGF1dG92 YWN1dW0gd29ya2VycyBhbmQKLQkgKiBzcGVjaWFsIHdvcmtlcnMsICgzKSBiYWNrZ3JvdW5k IHdvcmtlcnMsICg0KSB3YWxzZW5kZXJzLCAoNSkgYXV4aWxpYXJ5Ci0JICogcHJvY2Vzc2Vz LCBhbmQgKDYpIHByZXBhcmVkIHRyYW5zYWN0aW9ucy4gIChGb3IgbGFyZ2VseS1oaXN0b3Jp Y2FsCi0JICogcmVhc29ucywgd2UgY29tYmluZSBhdXRvdmFjdXVtIGFuZCBzcGVjaWFsIHdv cmtlcnMgaW50byBvbmUgY2F0ZWdvcnkKLQkgKiB3aXRoIGEgc2luZ2xlIGZyZWVsaXN0Likg IEVhY2ggUEdQUk9DIHN0cnVjdHVyZSBpcyBkZWRpY2F0ZWQgdG8gZXhhY3RseQotCSAqIG9u ZSBvZiB0aGVzZSBwdXJwb3NlcywgYW5kIHRoZXkgZG8gbm90IG1vdmUgYmV0d2VlbiBncm91 cHMuCi0JICovCi0JcmVxdWVzdFNpemUgPSBQR1Byb2NTaG1lbVNpemUoKTsKLQotCXB0ciA9 IFNobWVtSW5pdFN0cnVjdCgiUEdQUk9DIHN0cnVjdHVyZXMiLAotCQkJCQkJICByZXF1ZXN0 U2l6ZSwKLQkJCQkJCSAgJmZvdW5kKTsKLQorCXB0ciA9IEFsbFByb2NzU2htZW1QdHI7CisJ cmVxdWVzdFNpemUgPSBQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbVNpemU7CiAJTWVtU2V0KHB0 ciwgMCwgcmVxdWVzdFNpemUpOwogCisJLyogQ2FydmUgb3V0IHRoZSBhbGxQcm9jcyBhcnJh eSBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KIAlwcm9jcyA9IChQR1BST0MgKikg cHRyOwogCXB0ciA9IHB0ciArIFRvdGFsUHJvY3MgKiBzaXplb2YoUEdQUk9DKTsKIApAQCAt MjQ2LDcgKzI1Nyw3IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJUHJvY0dsb2JhbC0+YWxs UHJvY0NvdW50ID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTOwogCiAJLyoK LQkgKiBBbGxvY2F0ZSBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBmaWVsZHMgaW4gYSBkZW5z ZSBtYW5uZXIuIFNlZQorCSAqIENhcnZlIG91dCBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBm aWVsZHMgaW4gYSBkZW5zZSBtYW5uZXIuIFNlZQogCSAqIFBST0NfSERSLgogCSAqCiAJICog WFhYOiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGluY3JlYXNlIHBhZGRpbmcgZm9yIHRoZXNl IGFycmF5cywgZ2l2ZW4KQEAgLTI2MSwzMCArMjcyLDI2IEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgcHRyOwogCXB0ciA9 IHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykp OwogCi0JLyogbWFrZSBzdXJlIHdlciBkaWRuJ3Qgb3ZlcmZsb3cgKi8KKwkvKiBtYWtlIHN1 cmUgd2UgZGlkbid0IG92ZXJmbG93ICovCiAJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBwcm9j cykgJiYgKHB0ciA8PSAoY2hhciAqKSBwcm9jcyArIHJlcXVlc3RTaXplKSk7CiAKIAkvKgot CSAqIEFsbG9jYXRlIGFycmF5cyBmb3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFy aWFibGUtbGVuZ3RoLCBzbworCSAqIEluaXRpYWxpemUgYXJyYXlzIGZvciBmYXN0LXBhdGgg bG9ja3MuIFRob3NlIGFyZSB2YXJpYWJsZS1sZW5ndGgsIHNvCiAJICogY2FuJ3QgYmUgaW5j bHVkZWQgaW4gUEdQUk9DIGRpcmVjdGx5LiBXZSBhbGxvY2F0ZSBhIHNlcGFyYXRlIHBpZWNl IG9mCiAJICogc2hhcmVkIG1lbW9yeSBhbmQgdGhlbiBkaXZpZGUgdGhhdCBiZXR3ZWVuIGJh Y2tlbmRzLgogCSAqLwogCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04oRmFzdFBhdGhMb2Nr R3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKIAlmcFJlbElkU2l6ZSA9IE1B WEFMSUdOKEZhc3RQYXRoTG9ja1Nsb3RzUGVyQmFja2VuZCgpICogc2l6ZW9mKE9pZCkpOwog Ci0JcmVxdWVzdFNpemUgPSBGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKLQotCWZwUHRyID0g U2htZW1Jbml0U3RydWN0KCJGYXN0LVBhdGggTG9jayBBcnJheSIsCi0JCQkJCQkJcmVxdWVz dFNpemUsCi0JCQkJCQkJJmZvdW5kKTsKLQotCU1lbVNldChmcFB0ciwgMCwgcmVxdWVzdFNp emUpOworCWZwUHRyID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVB0cjsKKwlyZXF1ZXN0U2l6 ZSA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1TaXplOworCW1lbXNldChmcFB0ciwgMCwgcmVx dWVzdFNpemUpOwogCiAJLyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2UgZGlkIG5vdCBvdmVy Zmxvdy4gKi8KIAlmcEVuZFB0ciA9IGZwUHRyICsgcmVxdWVzdFNpemU7CiAKLQkvKiBSZXNl cnZlIHNwYWNlIGZvciBzZW1hcGhvcmVzLiAqLwotCVBHUmVzZXJ2ZVNlbWFwaG9yZXMoUHJv Y0dsb2JhbFNlbWFzKCkpOworCS8qIEluaXRpYWxpemUgc2VtYXBob3JlcyAqLworCVBHU2Vt YXBob3JlSW5pdChQcm9jR2xvYmFsU2VtYXMoKSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgVG90 YWxQcm9jczsgaSsrKQogCXsKQEAgLTQwNSw3ICs0MTIsNyBAQCBJbml0UHJvY2Vzcyh2b2lk KQogCiAJLyoKIAkgKiBEZWNpZGUgd2hpY2ggbGlzdCBzaG91bGQgc3VwcGx5IG91ciBQR1BS T0MuICBUaGlzIGxvZ2ljIG11c3QgbWF0Y2ggdGhlCi0JICogd2F5IHRoZSBmcmVlbGlzdHMg d2VyZSBjb25zdHJ1Y3RlZCBpbiBJbml0UHJvY0dsb2JhbCgpLgorCSAqIHdheSB0aGUgZnJl ZWxpc3RzIHdlcmUgY29uc3RydWN0ZWQgaW4gUHJvY0dsb2JhbFNobWVtSW5pdCgpLgogCSAq LwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgfHwgQW1TcGVjaWFsV29ya2Vy UHJvY2VzcygpKQogCQlwcm9jZ2xvYmFsbGlzdCA9ICZQcm9jR2xvYmFsLT5hdXRvdmFjRnJl ZVByb2NzOwpAQCAtNDYwLDcgKzQ2Nyw3IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAKIAkvKgog CSAqIEluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBNeVByb2MsIGV4Y2VwdCBmb3IgdGhvc2Ug cHJldmlvdXNseQotCSAqIGluaXRpYWxpemVkIGJ5IEluaXRQcm9jR2xvYmFsLgorCSAqIGlu aXRpYWxpemVkIGJ5IFByb2NHbG9iYWxTaG1lbUluaXQuCiAJICovCiAJZGxpc3Rfbm9kZV9p bml0KCZNeVByb2MtPmZyZWVQcm9jc0xpbmspOwogCU15UHJvYy0+d2FpdFN0YXR1cyA9IFBS T0NfV0FJVF9TVEFUVVNfT0s7CkBAIC01OTMsNyArNjAwLDcgQEAgSW5pdFByb2Nlc3NQaGFz ZTIodm9pZCkKICAqIFRoaXMgaXMgY2FsbGVkIGJ5IGJnd3JpdGVyIGFuZCBzaW1pbGFyIHBy b2Nlc3NlcyBzbyB0aGF0IHRoZXkgd2lsbCBoYXZlIGEKICAqIE15UHJvYyB2YWx1ZSB0aGF0 J3MgcmVhbCBlbm91Z2ggdG8gbGV0IHRoZW0gd2FpdCBmb3IgTFdMb2Nrcy4gIFRoZSBQR1BS T0MKICAqIGFuZCBzZW1hIHRoYXQgYXJlIGFzc2lnbmVkIGFyZSBvbmUgb2YgdGhlIGV4dHJh IG9uZXMgY3JlYXRlZCBkdXJpbmcKLSAqIEluaXRQcm9jR2xvYmFsLgorICogUHJvY0dsb2Jh bFNobWVtSW5pdC4KICAqCiAgKiBBdXhpbGlhcnkgcHJvY2Vzc2VzIGFyZSBwcmVzZW50bHkg bm90IGV4cGVjdGVkIHRvIHdhaXQgZm9yIHJlYWwgKGxvY2ttZ3IpCiAgKiBsb2Nrcywgc28g d2UgbmVlZCBub3Qgc2V0IHVwIHRoZSBkZWFkbG9jayBjaGVja2VyLiAgVGhleSBhcmUgbmV2 ZXIgYWRkZWQKQEAgLTY2Miw3ICs2NjksNyBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lk KQogCiAJLyoKIAkgKiBJbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgTXlQcm9jLCBleGNlcHQg Zm9yIHRob3NlIHByZXZpb3VzbHkKLQkgKiBpbml0aWFsaXplZCBieSBJbml0UHJvY0dsb2Jh bC4KKwkgKiBpbml0aWFsaXplZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogCSAqLwogCWRs aXN0X25vZGVfaW5pdCgmTXlQcm9jLT5mcmVlUHJvY3NMaW5rKTsKIAlNeVByb2MtPndhaXRT dGF0dXMgPSBQUk9DX1dBSVRfU1RBVFVTX09LOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFz aC5jCmluZGV4IGQ0OWE3YTkyYzY0Li44MTE5OWVkY2E4NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hh c2gvZHluYWhhc2guYwpAQCAtMzM4LDcgKzMzOCw4IEBAIHN0cmluZ19jb21wYXJlKGNvbnN0 IGNoYXIgKmtleTEsIGNvbnN0IGNoYXIgKmtleTIsIFNpemUga2V5c2l6ZSkKICAqIHVuZGVy IGluZm8tPmhjeHQgcmF0aGVyIHRoYW4gdW5kZXIgVG9wTWVtb3J5Q29udGV4dDsgdGhlIGRl ZmF1bHQKICAqIGJlaGF2aW9yIGlzIG9ubHkgc3VpdGFibGUgZm9yIHNlc3Npb24tbGlmZXNw YW4gaGFzaCB0YWJsZXMuCiAgKiBPdGhlciBmbGFncyBiaXRzIGFyZSBzcGVjaWFsLXB1cnBv c2UgYW5kIHNlbGRvbSB1c2VkLCBleGNlcHQgZm9yIHRob3NlCi0gKiBhc3NvY2lhdGVkIHdp dGggc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcywgZm9yIHdoaWNoIHNlZSBTaG1lbUluaXRI YXNoKCkuCisgKiBhc3NvY2lhdGVkIHdpdGggc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcywg Zm9yIHdoaWNoIHNlZQorICogU2htZW1SZXF1ZXN0SGFzaCgpLgogICoKICAqIEZpZWxkcyBp biAqaW5mbyBhcmUgcmVhZCBvbmx5IHdoZW4gdGhlIGFzc29jaWF0ZWQgZmxhZ3MgYml0IGlz IHNldC4KICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW5pdGlhbGl6ZSBvdGhlciBmaWVs ZHMgb2YgKmluZm8uCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA2ZmE5MWJmY2RjMC4uNTVh NGFiMjZiMzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzQ1LDggKzM0NSw2IEBAIGV4 dGVybiBUcmFuc2FjdGlvbklkIFRyYW5zYWN0aW9uSWRMYXRlc3QoVHJhbnNhY3Rpb25JZCBt YWlueGlkLAogZXh0ZXJuIFhMb2dSZWNQdHIgVHJhbnNhY3Rpb25JZEdldENvbW1pdExTTihU cmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qIGluIHRyYW5zYW0vdmFyc3VwLmMgKi8KLWV4dGVy biBTaXplIFZhcnN1cFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFZhcnN1cFNobWVt SW5pdCh2b2lkKTsKIGV4dGVybiBGdWxsVHJhbnNhY3Rpb25JZCBHZXROZXdUcmFuc2FjdGlv bklkKGJvb2wgaXNTdWJYYWN0KTsKIGV4dGVybiB2b2lkIEFkdmFuY2VOZXh0RnVsbFRyYW5z YWN0aW9uSWRQYXN0WGlkKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBGdWxsVHJhbnNh Y3Rpb25JZCBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklkKHZvaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9kc20uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtLmgK aW5kZXggNDA3NjU3ZGYzZmYuLjFiZGU3MWI0NDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2RzbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtLmgKQEAgLTI2 LDkgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgZHNtX3Bvc3RtYXN0ZXJfc3RhcnR1cChQR1NobWVt SGVhZGVyICopOwogZXh0ZXJuIHZvaWQgZHNtX2JhY2tlbmRfc2h1dGRvd24odm9pZCk7CiBl eHRlcm4gdm9pZCBkc21fZGV0YWNoX2FsbCh2b2lkKTsKIAotZXh0ZXJuIHNpemVfdCBkc21f ZXN0aW1hdGVfc2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIGRzbV9zaG1lbV9pbml0KHZvaWQp OwotCiAjaWZkZWYgRVhFQ19CQUNLRU5ECiBleHRlcm4gdm9pZCBkc21fc2V0X2NvbnRyb2xf aGFuZGxlKGRzbV9oYW5kbGUgaCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdp c3RyeS5oCmluZGV4IDUwNmZhZTJjOWNhLi5hMjI2OWM4OWYwMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2RzbV9yZWdpc3RyeS5oCkBAIC0yMiw3ICsyMiw1IEBAIGV4dGVybiBkc2FfYXJlYSAq R2V0TmFtZWREU0EoY29uc3QgY2hhciAqbmFtZSwgYm9vbCAqZm91bmQpOwogZXh0ZXJuIGRz aGFzaF90YWJsZSAqR2V0TmFtZWREU0hhc2goY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJCQkJ CWNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJCQkJCQkJCQlib29sICpmb3Vu ZCk7Ci1leHRlcm4gU2l6ZSBEU01SZWdpc3RyeVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2 b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogRFNN X1JFR0lTVFJZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2Vt YS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zZW1hLmgKaW5kZXggNjZmYWNjNjkwN2Eu LmZlNTBlZTUwNWJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NlbWEu aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NlbWEuaApAQCAtMzcsMTEgKzM3LDEx IEBAIHR5cGVkZWYgSEFORExFIFBHU2VtYXBob3JlOwogI2VuZGlmCiAKIAotLyogUmVwb3J0 IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZCAqLwotZXh0ZXJuIFNpemUgUEdTZW1h cGhvcmVTaG1lbVNpemUoaW50IG1heFNlbWFzKTsKKy8qIFJlcXVlc3Qgc2hhcmVkIG1lbW9y eSBuZWVkZWQgZm9yIHNlbWFwaG9yZXMgKi8KK2V4dGVybiB2b2lkIFBHU2VtYXBob3JlU2ht ZW1SZXF1ZXN0KGludCBtYXhTZW1hcyk7CiAKIC8qIE1vZHVsZSBpbml0aWFsaXphdGlvbiAo Y2FsbGVkIGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0IG9yIHNobWVtIHJlaW5pdCkgKi8KLWV4 dGVybiB2b2lkIFBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKTsKK2V4dGVybiB2 b2lkIFBHU2VtYXBob3JlSW5pdChpbnQgbWF4U2VtYXMpOwogCiAvKiBBbGxvY2F0ZSBhIFBH U2VtYXBob3JlIHN0cnVjdHVyZSB3aXRoIGluaXRpYWwgY291bnQgMSAqLwogZXh0ZXJuIFBH U2VtYXBob3JlIFBHU2VtYXBob3JlQ3JlYXRlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNpZ25h bC5oCmluZGV4IDIwNmZiNzhmOGE1Li4wMDFlNmVlYTYxYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcG1z aWduYWwuaApAQCAtNjYsOCArNjYsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg UE1TaWduYWxEYXRhICpQTVNpZ25hbFN0YXRlOwogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1 bmN0aW9ucyBpbiBwbXNpZ25hbC5jCiAgKi8KLWV4dGVybiBTaXplIFBNU2lnbmFsU2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUE1TaWduYWxTaG1lbUluaXQodm9pZCk7CiBleHRl cm4gdm9pZCBTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNpZ25hbFJlYXNvbiByZWFzb24pOwog ZXh0ZXJuIGJvb2wgQ2hlY2tQb3N0bWFzdGVyU2lnbmFsKFBNU2lnbmFsUmVhc29uIHJlYXNv bik7CiBleHRlcm4gdm9pZCBTZXRRdWl0U2lnbmFsUmVhc29uKFF1aXRTaWduYWxSZWFzb24g cmVhc29uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggMjI4MjJmYzY4ZDcuLjNlMWQxZmFkNWY5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNTUyLDggKzU1Miw2IEBAIGV4dGVybiBQR0RMTElN UE9SVCBQR1BST0MgKkF1eGlsaWFyeVByb2NzOwogICogRnVuY3Rpb24gUHJvdG90eXBlcwog ICovCiBleHRlcm4gaW50CVByb2NHbG9iYWxTZW1hcyh2b2lkKTsKLWV4dGVybiBTaXplIFBy b2NHbG9iYWxTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBJbml0UHJvY0dsb2JhbCh2 b2lkKTsKIGV4dGVybiB2b2lkIEluaXRQcm9jZXNzKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5p dFByb2Nlc3NQaGFzZTIodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0QXV4aWxpYXJ5UHJvY2Vz cyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5Lmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCmluZGV4IGFiZGYwMjFlNjZlLi5k NzE4YTViNTQyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXku aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCkBAIC0xOSw4ICsxOSw2 IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKIAogCi1leHRlcm4gU2l6ZSBQcm9j QXJyYXlTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBQcm9jQXJyYXlTaG1lbUluaXQo dm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jQXJyYXlBZGQoUEdQUk9DICpwcm9jKTsKIGV4dGVy biB2b2lkIFByb2NBcnJheVJlbW92ZShQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0WGlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBjYzRmMjZhYTMz ZC4uN2Y4NTU5NzFiNWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3Np Z25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC02Nyw5 ICs2Nyw2IEBAIHR5cGVkZWYgZW51bQogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9u cyBpbiBwcm9jc2lnbmFsLmMKICAqLwotZXh0ZXJuIFNpemUgUHJvY1NpZ25hbFNobWVtU2l6 ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCk7Ci0KIGV4 dGVybiB2b2lkIFByb2NTaWduYWxJbml0KGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5LCBpbnQg Y2FuY2VsX2tleV9sZW4pOwogZXh0ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQs IFByb2NTaWduYWxSZWFzb24gcmVhc29uLAogCQkJCQkJICAgUHJvY051bWJlciBwcm9jTnVt YmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCmluZGV4IDEyMmRiY2RmMTlmLi4yMDhl YTlkMDUxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCkBAIC0yNyw4ICsyNyw2IEBA CiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHNpbnZhbGFkdC5jCiAgKi8K LWV4dGVybiBTaXplIFNoYXJlZEludmFsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQg U2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBTaGFyZWRJbnZhbEJh Y2tlbmRJbml0KGJvb2wgc2VuZE9ubHkpOwogCiBleHRlcm4gdm9pZCBTSUluc2VydERhdGFF bnRyaWVzKGNvbnN0IFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGludCBuKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKaW5kZXggZjBjZjAxZjVhODUuLmQ2 MmMyOWYxMzYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxp c3QuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApAQCAtMjcs NCArMjcsMTkgQEAKICAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9ja0NhbGxiYWNrcykK IAotLyogVE9ETzogbm90aGluZyBlbHNlIGZvciBub3cgKi8KK1BHX1NITUVNX1NVQlNZU1RF TShkc21fc2htZW1fY2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKERTTVJlZ2lzdHJ5 U2htZW1DYWxsYmFja3MpCisKKy8qIHhsb2csIGNsb2csIGFuZCBidWZmZXJzICovCitQR19T SE1FTV9TVUJTWVNURU0oVmFyc3VwU2htZW1DYWxsYmFja3MpCisKKy8qIHByb2Nlc3MgdGFi bGUgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShQcm9jR2xvYmFsU2htZW1DYWxsYmFja3MpCitQ R19TSE1FTV9TVUJTWVNURU0oUHJvY0FycmF5U2htZW1DYWxsYmFja3MpCisKKy8qIHNoYXJl ZC1pbnZhbCBtZXNzYWdpbmcgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShTaGFyZWRJbnZhbFNo bWVtQ2FsbGJhY2tzKQorCisvKiBpbnRlcnByb2Nlc3Mgc2lnbmFsaW5nIG1lY2hhbmlzbXMg Ki8KK1BHX1NITUVNX1NVQlNZU1RFTShQTVNpZ25hbFNobWVtQ2FsbGJhY2tzKQorUEdfU0hN RU1fU1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0008-refactor-predicate.c-inline-SerialInit-to-the-ca.patch" Content-Disposition: attachment; filename*0="v11-0008-refactor-predicate.c-inline-SerialInit-to-the-ca.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNjdjOTlkYTZmMTJkMDMxZmVlODUxZjFmM2RiODFmNzEzODllYWViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMTkgTWFyIDIwMjYgMTc6MjE6MzAgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAwOC8xNF0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IGlubGlu ZSBTZXJpYWxJbml0IHRvIHRoZQogY2FsbGVyCgpUaGUgU2htZW1Jbml0IGZ1bmN0aW9uIGlz IHZlcnkgY29tcGxpY2F0ZWQgY3VycmVudGx5LiBUaGVzZQpyZWZhY3RvcmluZ3MgbW92ZSBp dCBpbiBhIGRpcmVjdGlvbiB0aGF0IGlzIG1vcmUgbmF0dXJhbCB3aXRoIHRoZSBuZXcKc2ht ZW0gY2FsbGJhY2tzLgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUu YyB8IDczICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAy OSBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJlZGljYXRlLmMKaW5kZXggZTAwM2ZhNWIxMDcuLjEzYTZhNGI5M2E2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC00NDQsNyArNDQ0LDYgQEAgc3Rh dGljIHZvaWQgRmxhZ1N4YWN0VW5zYWZlKFNFUklBTElaQUJMRVhBQ1QgKnN4YWN0KTsKIAog c3RhdGljIGJvb2wgU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5KGludDY0IHBhZ2UxLCBp bnQ2NCBwYWdlMik7CiBzdGF0aWMgaW50CXNlcmlhbF9lcnJkZXRhaWxfZm9yX2lvX2Vycm9y KGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKLXN0YXRpYyB2b2lkIFNlcmlhbEluaXQodm9p ZCk7CiBzdGF0aWMgdm9pZCBTZXJpYWxBZGQoVHJhbnNhY3Rpb25JZCB4aWQsIFNlckNvbW1p dFNlcU5vIG1pbkNvbmZsaWN0Q29tbWl0U2VxTm8pOwogc3RhdGljIFNlckNvbW1pdFNlcU5v IFNlcmlhbEdldE1pbkNvbmZsaWN0Q29tbWl0U2VxTm8oVHJhbnNhY3Rpb25JZCB4aWQpOwog c3RhdGljIHZvaWQgU2VyaWFsU2V0QWN0aXZlU2VyWG1pbihUcmFuc2FjdGlvbklkIHhpZCk7 CkBAIC04MDksNDggKzgwOCw2IEBAIFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseVVuaXRU ZXN0cyh2b2lkKQogfQogI2VuZGlmCiAKLS8qCi0gKiBJbml0aWFsaXplIGZvciB0aGUgdHJh Y2tpbmcgb2Ygb2xkIHNlcmlhbGl6YWJsZSBjb21taXR0ZWQgeGlkcy4KLSAqLwotc3RhdGlj IHZvaWQKLVNlcmlhbEluaXQodm9pZCkKLXsKLQlib29sCQlmb3VuZDsKLQotCS8qCi0JICog U2V0IHVwIFNMUlUgbWFuYWdlbWVudCBvZiB0aGUgcGdfc2VyaWFsIGRhdGEuCi0JICovCi0J U2VyaWFsU2xydUN0bC0+UGFnZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVzTG9naWNh bGx5OwotCVNlcmlhbFNscnVDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxf ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsKLQlTaW1wbGVMcnVJbml0KFNlcmlhbFNscnVDdGws ICJzZXJpYWxpemFibGUiLAotCQkJCSAgc2VyaWFsaXphYmxlX2J1ZmZlcnMsIDAsICJwZ19z ZXJpYWwiLAotCQkJCSAgTFdUUkFOQ0hFX1NFUklBTF9CVUZGRVIsIExXVFJBTkNIRV9TRVJJ QUxfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9OT05FLCBmYWxzZSk7Ci0jaWZkZWYgVVNF X0FTU0VSVF9DSEVDS0lORwotCVNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseVVuaXRUZXN0 cygpOwotI2VuZGlmCi0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTZXJpYWxTbHJ1Q3Rs LCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOwotCi0JLyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNo IHRvIHRoZSBTZXJpYWxDb250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzZXJpYWxDb250cm9s ID0gKFNlcmlhbENvbnRyb2wpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29udHJvbERh dGEiLCBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLCAmZm91bmQpOwotCi0JQXNzZXJ0KGZv dW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJ ICogU2V0IGNvbnRyb2wgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkg Ki8KLQkJTFdMb2NrQWNxdWlyZShTZXJpYWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsK LQkJc2VyaWFsQ29udHJvbC0+aGVhZFBhZ2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVh ZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCUxXTG9ja1JlbGVhc2UoU2VyaWFsQ29udHJv bExvY2spOwotCX0KLX0KLQogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzZXJpYWxpemFi bGVfYnVmZmVycwogICovCkBAIC0xMzU1LDcgKzEzMTIsMzUgQEAgUHJlZGljYXRlTG9ja1No bWVtSW5pdCh2b2lkKQogCSAqIEluaXRpYWxpemUgdGhlIFNMUlUgc3RvcmFnZSBmb3Igb2xk IGNvbW1pdHRlZCBzZXJpYWxpemFibGUKIAkgKiB0cmFuc2FjdGlvbnMuCiAJICovCi0JU2Vy aWFsSW5pdCgpOworCVNlcmlhbFNscnVDdGwtPlBhZ2VQcmVjZWRlcyA9IFNlcmlhbFBhZ2VQ cmVjZWRlc0xvZ2ljYWxseTsKKwlTZXJpYWxTbHJ1Q3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vy cm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7CisJU2ltcGxlTHJ1SW5pdChT ZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKKwkJCQkgIHNlcmlhbGl6YWJsZV9idWZm ZXJzLCAwLCAicGdfc2VyaWFsIiwKKwkJCQkgIExXVFJBTkNIRV9TRVJJQUxfQlVGRkVSLCBM V1RSQU5DSEVfU0VSSUFMX1NMUlUsCisJCQkJICBTWU5DX0hBTkRMRVJfTk9ORSwgZmFsc2Up OworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlTZXJpYWxQYWdlUHJlY2VkZXNMb2dp Y2FsbHlVbml0VGVzdHMoKTsKKyNlbmRpZgorCVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMo U2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKKworCS8qCisJICogQ3Jl YXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1cmUuCisJICovCisJ c2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQorCQlTaG1lbUluaXRTdHJ1Y3QoIlNl cmlhbENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwgJmZvdW5kKTsK KworCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7CisJaWYgKCFmb3VuZCkK Kwl7CisJCS8qCisJCSAqIFNldCBjb250cm9sIGluZm9ybWF0aW9uIHRvIHJlZmxlY3QgZW1w dHkgU0xSVS4KKwkJICovCisJCUxXTG9ja0FjcXVpcmUoU2VyaWFsQ29udHJvbExvY2ssIExX X0VYQ0xVU0lWRSk7CisJCXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJCXNlcmlh bENvbnRyb2wtPmhlYWRYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJc2VyaWFsQ29u dHJvbC0+dGFpbFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlMV0xvY2tSZWxlYXNl KFNlcmlhbENvbnRyb2xMb2NrKTsKKwl9CiB9CiAKIC8qCi0tIAoyLjQ3LjMKCg== --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0009-refactor-predicate.c-Move-all-the-initialization.patch" Content-Disposition: attachment; filename*0="v11-0009-refactor-predicate.c-Move-all-the-initialization.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYjNhODA2MDM4YzQwNjExNTk2NWVlNzhiODk3ODFmMTVlZDZkZjZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMjA6Mjc6NTAgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAwOS8xNF0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IE1vdmUg YWxsIHRoZSBpbml0aWFsaXphdGlvbgogdG9nZXRoZXIKClRoZSBTaG1lbUluaXQgZnVuY3Rp b24gaXMgdmVyeSBjb21wbGljYXRlZCBjdXJyZW50bHkuIFRoZXNlCnJlZmFjdG9yaW5ncyBt b3ZlIGl0IGluIGEgZGlyZWN0aW9uIHRoYXQgaXMgbW9yZSBuYXR1cmFsIHdpdGggdGhlIG5l dwpzaG1lbSBjYWxsYmFja3MuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jIHwgMTY0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDc5IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCAxM2E2YTRiOTNhNi4uYWYwMzA3MWE3MWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTExNDQsMTkgKzExNDQs NiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJCQkJCUhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfAogCQkJCQkJCQkJCQlIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklY RURfU0laRSk7CiAKLQkvKgotCSAqIFJlc2VydmUgYSBkdW1teSBlbnRyeSBpbiB0aGUgaGFz aCB0YWJsZTsgd2UgdXNlIGl0IHRvIG1ha2Ugc3VyZSB0aGVyZSdzCi0JICogYWx3YXlzIG9u ZSBlbnRyeSBhdmFpbGFibGUgd2hlbiB3ZSBuZWVkIHRvIHNwbGl0IG9yIGNvbWJpbmUgYSBw YWdlLAotCSAqIGJlY2F1c2UgcnVubmluZyBvdXQgb2Ygc3BhY2UgdGhlcmUgY291bGQgbWVh biBhYm9ydGluZyBhCi0JICogbm9uLXNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbi4KLQkgKi8K LQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJKHZvaWQpIGhhc2hfc2VhcmNoKFBy ZWRpY2F0ZUxvY2tUYXJnZXRIYXNoLCAmU2NyYXRjaFRhcmdldFRhZywKLQkJCQkJCSAgIEhB U0hfRU5URVIsICZmb3VuZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCX0KLQogCS8qIFByZS1j YWxjdWxhdGUgdGhlIGhhc2ggYW5kIHBhcnRpdGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVu dHJ5ICovCiAJU2NyYXRjaFRhcmdldFRhZ0hhc2ggPSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFn SGFzaENvZGUoJlNjcmF0Y2hUYXJnZXRUYWcpOwogCVNjcmF0Y2hQYXJ0aXRpb25Mb2NrID0g UHJlZGljYXRlTG9ja0hhc2hQYXJ0aXRpb25Mb2NrKFNjcmF0Y2hUYXJnZXRUYWdIYXNoKTsK QEAgLTEyMDAsNDkgKzExODcsNiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJ CQkJCQkJICAgcmVxdWVzdFNpemUsCiAJCQkJCQkJICAgJmZvdW5kKTsKIAlBc3NlcnQoZm91 bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwotCWlmICghZm91bmQpCi0JewotCQlpbnQJCQlp OwotCi0JCS8qIGNsZWFuIGV2ZXJ5dGhpbmcsIGJvdGggdGhlIGhlYWRlciBhbmQgdGhlIGVs ZW1lbnQgKi8KLQkJbWVtc2V0KFByZWRYYWN0LCAwLCByZXF1ZXN0U2l6ZSk7Ci0KLQkJZGxp c3RfaW5pdCgmUHJlZFhhY3QtPmF2YWlsYWJsZUxpc3QpOwotCQlkbGlzdF9pbml0KCZQcmVk WGFjdC0+YWN0aXZlTGlzdCk7Ci0JCVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKLQkJUHJlZFhhY3QtPlN4YWN0R2xvYmFsWG1pbkNvdW50ID0g MDsKLQkJUHJlZFhhY3QtPldyaXRhYmxlU3hhY3RDb3VudCA9IDA7Ci0JCVByZWRYYWN0LT5M YXN0U3hhY3RDb21taXRTZXFObyA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8gLSAxOwot CQlQcmVkWGFjdC0+Q2FuUGFydGlhbENsZWFyVGhyb3VnaCA9IDA7Ci0JCVByZWRYYWN0LT5I YXZlUGFydGlhbENsZWFyZWRUaHJvdWdoID0gMDsKLQkJUHJlZFhhY3QtPmVsZW1lbnQKLQkJ CT0gKFNFUklBTElaQUJMRVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RM aXN0RGF0YVNpemUpOwotCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0 LCBjbGVhbi4gKi8KLQkJZm9yIChpID0gMDsgaSA8IG1heF9zZXJpYWxpemFibGVfeGFjdHM7 IGkrKykKLQkJewotCQkJTFdMb2NrSW5pdGlhbGl6ZSgmUHJlZFhhY3QtPmVsZW1lbnRbaV0u cGVyWGFjdFByZWRpY2F0ZUxpc3RMb2NrLAotCQkJCQkJCSBMV1RSQU5DSEVfUEVSX1hBQ1Rf UFJFRElDQVRFX0xJU1QpOwotCQkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFjdC0+YXZhaWxh YmxlTGlzdCwgJlByZWRYYWN0LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKLQkJfQotCQlQcmVk WGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QgPSBDcmVhdGVQcmVkWGFjdCgpOwotCQlTZXRJbnZh bGlkVmlydHVhbFRyYW5zYWN0aW9uSWQoUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT52 eGlkKTsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5wcmVwYXJlU2VxTm8gPSAw OwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmNvbW1pdFNlcU5vID0gMDsKLQkJ UHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5TZXFOby5sYXN0Q29tbWl0QmVmb3JlU25h cHNob3QgPSAwOwotCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3Qt Pm91dENvbmZsaWN0cyk7Ci0JCWRsaXN0X2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRT eGFjdC0+aW5Db25mbGljdHMpOwotCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0 dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKLQkJZGxpc3Rfbm9kZV9pbml0KCZQcmVkWGFj dC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkTGluayk7Ci0JCWRsaXN0X2luaXQoJlBy ZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cG9zc2libGVVbnNhZmVDb25mbGljdHMpOwot CQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkQmVmb3Jl ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dC0+eG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0 dGVkU3hhY3QtPmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7Ci0JCVByZWRYYWN0LT5P bGRDb21taXR0ZWRTeGFjdC0+cGlkID0gMDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4 YWN0LT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JfQotCS8qIFRoaXMgbmV2 ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JT2xkQ29tbWl0 dGVkU3hhY3QgPSBQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3Q7CiAKIAkvKgogCSAqIEFs bG9jYXRlIGhhc2ggdGFibGUgZm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBz dG9yZXMgcGVyLXhpZApAQCAtMTI3OCwyMyArMTIyMiw2IEBAIFByZWRpY2F0ZUxvY2tTaG1l bUluaXQodm9pZCkKIAkJCQkJCQkJCSByZXF1ZXN0U2l6ZSwKIAkJCQkJCQkJCSAmZm91bmQp OwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7Ci0JaWYgKCFmb3VuZCkK LQl7Ci0JCWludAkJCWk7Ci0KLQkJLyogY2xlYW4gZXZlcnl0aGluZywgaW5jbHVkaW5nIHRo ZSBlbGVtZW50cyAqLwotCQltZW1zZXQoUldDb25mbGljdFBvb2wsIDAsIHJlcXVlc3RTaXpl KTsKLQotCQlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7Ci0J CVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gKFJXQ29uZmxpY3QpICgoY2hhciAqKSBSV0Nv bmZsaWN0UG9vbCArCi0JCQkJCQkJCQkJCQlSV0NvbmZsaWN0UG9vbEhlYWRlckRhdGFTaXpl KTsKLQkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICov Ci0JCWZvciAoaSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKyspCi0JCXsKLQkJCWRs aXN0X3B1c2hfdGFpbCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QsCi0JCQkJCQkJ JlJXQ29uZmxpY3RQb29sLT5lbGVtZW50W2ldLm91dExpbmspOwotCQl9Ci0JfQogCiAJLyoK IAkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0IG9mIGZp bmlzaGVkIHNlcmlhbGl6YWJsZQpAQCAtMTMwNSw4ICsxMjMyLDYgQEAgUHJlZGljYXRlTG9j a1NobWVtSW5pdCh2b2lkKQogCQkJCQkJc2l6ZW9mKGRsaXN0X2hlYWQpLAogCQkJCQkJJmZv dW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwotCWlmICghZm91 bmQpCi0JCWRsaXN0X2luaXQoRmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMpOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSBTTFJVIHN0b3JhZ2UgZm9yIG9sZCBjb21taXR0 ZWQgc2VyaWFsaXphYmxlCkBAIC0xMzI4LDE5ICsxMjUzLDg4IEBAIFByZWRpY2F0ZUxvY2tT aG1lbUluaXQodm9pZCkKIAkgKi8KIAlzZXJpYWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wp CiAJCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29udHJvbERhdGEiLCBzaXplb2YoU2VyaWFs Q29udHJvbERhdGEpLCAmZm91bmQpOwotCiAJQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0 bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQorCisJLyoKKwkgKiBJZiB3ZSBqdXN0IGF0dGFjaGVk IHRvIGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgKEVYRUNfQkFDS0VORCksIHdlJ3JlIGFsbAor CSAqIGRvbmUuICBPdGhlcndpc2UsIGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAgcHJvY2Vl ZCB0byBpbml0aWFsaXplIHRoZQorCSAqIHNoYXJlZCBtZW1vcnkuCisJICovCisJaWYgKElz VW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJLyoKLQkJICogU2V0IGNvbnRyb2wgaW5mb3JtYXRp b24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkgKi8KLQkJTFdMb2NrQWNxdWlyZShTZXJp YWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFBh Z2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 Ci0JCUxXTG9ja1JlbGVhc2UoU2VyaWFsQ29udHJvbExvY2spOworCQkvKiBUaGlzIG5ldmVy IGNoYW5nZXMsIHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCQlPbGRDb21taXR0 ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKwkJcmV0dXJuOworCX0K KworCS8qCisJICogUmVzZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3 ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJlJ3MKKwkgKiBhbHdheXMgb25lIGVudHJ5IGF2 YWlsYWJsZSB3aGVuIHdlIG5lZWQgdG8gc3BsaXQgb3IgY29tYmluZSBhIHBhZ2UsCisJICog YmVjYXVzZSBydW5uaW5nIG91dCBvZiBzcGFjZSB0aGVyZSBjb3VsZCBtZWFuIGFib3J0aW5n IGEKKwkgKiBub24tc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uLgorCSAqLworCSh2b2lkKSBo YXNoX3NlYXJjaChQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCwgJlNjcmF0Y2hUYXJnZXRUYWcs CisJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisJQXNzZXJ0KCFmb3VuZCk7CisKKwkv KiBJbml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+ YXZhaWxhYmxlTGlzdCk7CisJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmFjdGl2ZUxpc3QpOwor CVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQ cmVkWGFjdC0+U3hhY3RHbG9iYWxYbWluQ291bnQgPSAwOworCVByZWRYYWN0LT5Xcml0YWJs ZVN4YWN0Q291bnQgPSAwOworCVByZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFObyA9IEZp cnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8gLSAxOworCVByZWRYYWN0LT5DYW5QYXJ0aWFsQ2xl YXJUaHJvdWdoID0gMDsKKwlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9 IDA7CisJUHJlZFhhY3QtPmVsZW1lbnQKKwkJPSAoU0VSSUFMSVpBQkxFWEFDVCAqKSAoKGNo YXIgKikgUHJlZFhhY3QgKyBQcmVkWGFjdExpc3REYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBl bGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBtYXhfc2VyaWFsaXphYmxlX3hhY3RzOyBpKyspCisJeworCQlMV0xvY2tJbml0aWFs aXplKCZQcmVkWGFjdC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCisJ CQkJCQkgTFdUUkFOQ0hFX1BFUl9YQUNUX1BSRURJQ0FURV9MSVNUKTsKKwkJZGxpc3RfcHVz aF90YWlsKCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0LT5lbGVtZW50W2ld LnhhY3RMaW5rKTsKIAl9CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0ID0gQ3JlYXRl UHJlZFhhY3QoKTsKKwlTZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQoUHJlZFhhY3Qt Pk9sZENvbW1pdHRlZFN4YWN0LT52eGlkKTsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QtPnByZXBhcmVTZXFObyA9IDA7CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5j b21taXRTZXFObyA9IDA7CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5TZXFOby5s YXN0Q29tbWl0QmVmb3JlU25hcHNob3QgPSAwOworCWRsaXN0X2luaXQoJlByZWRYYWN0LT5P bGRDb21taXR0ZWRTeGFjdC0+b3V0Q29uZmxpY3RzKTsKKwlkbGlzdF9pbml0KCZQcmVkWGFj dC0+T2xkQ29tbWl0dGVkU3hhY3QtPmluQ29uZmxpY3RzKTsKKwlkbGlzdF9pbml0KCZQcmVk WGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKKwlkbGlzdF9ub2Rl X2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRMaW5rKTsKKwlk bGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBvc3NpYmxlVW5zYWZl Q29uZmxpY3RzKTsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+Zmlu aXNoZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29t bWl0dGVkU3hhY3QtPnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+ T2xkQ29tbWl0dGVkU3hhY3QtPmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7CisJUHJl ZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5waWQgPSAwOworCVByZWRYYWN0LT5PbGRDb21t aXR0ZWRTeGFjdC0+cGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOworCisJLyogVGhp cyBuZXZlciBjaGFuZ2VzLCBzbyBsZXQncyBrZWVwIGEgbG9jYWwgY29weS4gKi8KKwlPbGRD b21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKworCS8qIElu aXRpYWxpemUgdGhlIHJ3LWNvbmZsaWN0IHBvb2wgKi8KKwlkbGlzdF9pbml0KCZSV0NvbmZs aWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7CisJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAo UldDb25mbGljdCkgKChjaGFyICopIFJXQ29uZmxpY3RQb29sICsKKwkJCQkJCQkJCQkJUldD b25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBlbGVtZW50cyB0byBh dmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfcndf Y29uZmxpY3RzOyBpKyspCisJeworCQlkbGlzdF9wdXNoX3RhaWwoJlJXQ29uZmxpY3RQb29s LT5hdmFpbGFibGVMaXN0LAorCQkJCQkJJlJXQ29uZmxpY3RQb29sLT5lbGVtZW50W2ldLm91 dExpbmspOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgZmluaXNoZWQgc2Vy aWFsaXphYmxlIHRyYW5zYWN0aW9ucyAqLworCWRsaXN0X2luaXQoRmluaXNoZWRTZXJpYWxp emFibGVUcmFuc2FjdGlvbnMpOworCisJLyogSW5pdGlhbGl6ZSBTZXJpYWxDb250cm9sIHRv IHJlZmxlY3QgZW1wdHkgU0xSVS4gKi8KKwlMV0xvY2tBY3F1aXJlKFNlcmlhbENvbnRyb2xM b2NrLCBMV19FWENMVVNJVkUpOworCXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJ c2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXNlcmlh bENvbnRyb2wtPnRhaWxYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlMV0xvY2tSZWxl YXNlKFNlcmlhbENvbnRyb2xMb2NrKTsKIH0KIAogLyoKLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v11-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 RnJvbSBhNWQ3NWFkYThjOTFhYTc3N2U0ZTI5YmIzN2RlZWYxZGIxYTlhYzlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDozMjo0NSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDEwLzE0XSBDb252ZXJ0IFNMUlVzIHRvIHVzZSB0aGUgbmV3 IGludGVyZmFjZQoKSSByZXBsYWNlZCB0aGUgb2xkIFNpbXBsZUxydUluaXQoKSBmdW5jdGlv biB3aXRob3V0IGEgYmFja3dhcmRzCmNvbXBhdGliaWxpdHkgd3JhcHBlciwgYmVjYXVzZSBm ZXcgZXh0ZW5zaW9ucyBkZWZpbmUgdGhlaXIgb3duIFNMUlVzLgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgICAgfCAgNTUgKystLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgICB8ICA4NSArKystLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jICAgfCAxMzggKysrKystLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICAgIHwgMzY2ICsrKysrKysrKysrKy0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jICAgIHwg IDU3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgfCAx MTUgKysrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAgICB8 ICAxNiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgIHwgICA3 ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgfCAyNjYgKysr KysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NscnUu YyB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oICAgICAgICAgICAgICAgIHwg ICAyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCAgICAgICAgICAgfCAgIDIg LQogc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oICAgICAgICAgICB8ICAgMiAtCiBz cmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICAgIHwgMTEyICsrKystLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oICAgICAgICAgICAgfCAgIDIgLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oICAgICAgICAgIHwgICA1IC0KIHNyYy9pbmNsdWRl L3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdWJzeXN0ZW1saXN0LmggICAgICB8ICAxMCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc2xydS90ZXN0X3NscnUuYyAgIHwgMTA2ICsrKy0tLS0KIHNyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0ICAgICAgICAgfCAgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDY5 MSBpbnNlcnRpb25zKCspLCA2NjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vY2xvZy5jCmluZGV4IGM2NTRlMDkyOWIzLi43Y2QxYTU2MjAxZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgInBnX3Ry YWNlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z eW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMv d2FpdF9ldmVudC5oIgpAQCAtMTA2LDEzICsxMDcsMjEgQEAgVHJhbnNhY3Rpb25JZFRvUGFn ZShUcmFuc2FjdGlvbklkIHhpZCkKIC8qCiAgKiBMaW5rIHRvIHNoYXJlZC1tZW1vcnkgZGF0 YSBzdHJ1Y3R1cmVzIGZvciBDTE9HIGNvbnRyb2wKICAqLwotc3RhdGljIFNscnVDdGxEYXRh IFhhY3RDdGxEYXRhOworc3RhdGljIHZvaWQgQ0xPR1NobWVtUmVxdWVzdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIGJvb2wg Q0xPR1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGlu dAljbG9nX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp OwogCi0jZGVmaW5lIFhhY3RDdGwgKCZYYWN0Q3RsRGF0YSkKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIENMT0dTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IENMT0dTaG1lbVJl cXVlc3QsCisJLmluaXRfZm4gPSBDTE9HU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNscnVE ZXNjIFhhY3RTbHJ1RGVzYzsKKworI2RlZmluZSBYYWN0Q3RsICgmWGFjdFNscnVEZXNjKQog CiAKLXN0YXRpYyBib29sIENMT0dQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBh Z2UyKTsKLXN0YXRpYyBpbnQJY2xvZ19lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZv aWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2b2lkIFdyaXRlVHJ1bmNhdGVYbG9nUmVjKGlu dDY0IHBhZ2VubywgVHJhbnNhY3Rpb25JZCBvbGRlc3RYYWN0LAogCQkJCQkJCQkgT2lkIG9s ZGVzdFhhY3REYik7CiBzdGF0aWMgdm9pZCBUcmFuc2FjdGlvbklkU2V0UGFnZVN0YXR1cyhU cmFuc2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLApAQCAtNzc1LDE2ICs3ODQsMTAgQEAg Q0xPR1NobWVtQnVmZmVycyh2b2lkKQogfQogCiAvKgotICogSW5pdGlhbGl6YXRpb24gb2Yg c2hhcmVkIG1lbW9yeSBmb3IgQ0xPRworICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3Ig Q0xPRwogICovCi1TaXplCi1DTE9HU2htZW1TaXplKHZvaWQpCi17Ci0JcmV0dXJuIFNpbXBs ZUxydVNobWVtU2l6ZShDTE9HU2htZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJfUEFHRSk7 Ci19Ci0KLXZvaWQKLUNMT0dTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitDTE9HU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRvLXR1bmluZyBpcyByZXF1ZXN0 ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlmICh0cmFuc2FjdGlvbl9idWZm ZXJzID09IDApCkBAIC04MDYsMTIgKzgwOSwyNiBAQCBDTE9HU2htZW1Jbml0KHZvaWQpCiAJ CQkJCQkJUEdDX1NfT1ZFUlJJREUpOwogCX0KIAlBc3NlcnQodHJhbnNhY3Rpb25fYnVmZmVy cyAhPSAwKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlhhY3RTbHJ1RGVzYywKKwkJ CQkJIC5uYW1lID0gInRyYW5zYWN0aW9uIiwKKwkJCQkJIC5EaXIgPSAicGdfeGFjdCIsCisJ CQkJCSAubG9uZ19zZWdtZW50X25hbWVzID0gZmFsc2UsCisKKwkJCQkJIC5uc2xvdHMgPSBD TE9HU2htZW1CdWZmZXJzKCksCisJCQkJCSAubmxzbnMgPSBDTE9HX0xTTlNfUEVSX1BBR0Us CisKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5DX0hBTkRMRVJfQ0xPRywKKwkJCQkJIC5Q YWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVzLAorCQkJCQkgLmVycmRldGFpbF9mb3Jf aW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9mb3JfaW9fZXJyb3IsCiAKLQlYYWN0Q3RsLT5Q YWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVzOwotCVhhY3RDdGwtPmVycmRldGFpbF9m b3JfaW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1 SW5pdChYYWN0Q3RsLCAidHJhbnNhY3Rpb24iLCBDTE9HU2htZW1CdWZmZXJzKCksIENMT0df TFNOU19QRVJfUEFHRSwKLQkJCQkgICJwZ194YWN0IiwgTFdUUkFOQ0hFX1hBQ1RfQlVGRkVS LAotCQkJCSAgTFdUUkFOQ0hFX1hBQ1RfU0xSVSwgU1lOQ19IQU5ETEVSX0NMT0csIGZhbHNl KTsKKwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9YQUNUX0JVRkZFUiwK KwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfWEFDVF9TTFJVLAorCQkpOwor fQorCitzdGF0aWMgdm9pZAorQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpCit7CiAJU2xydVBh Z2VQcmVjZWRlc1VuaXRUZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKIH0K IApAQCAtODI3LDcgKzg0NCw3IEBAIGNoZWNrX3RyYW5zYWN0aW9uX2J1ZmZlcnMoaW50ICpu ZXd2YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIC8qCiAgKiBUaGlzIGZ1 bmMgbXVzdCBiZSBjYWxsZWQgT05DRSBvbiBzeXN0ZW0gaW5zdGFsbC4gIEl0IGNyZWF0ZXMK ICAqIHRoZSBpbml0aWFsIENMT0cgc2VnbWVudC4gIChUaGUgQ0xPRyBkaXJlY3RvcnkgaXMg YXNzdW1lZCB0bwotICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRiLCBhbmQgQ0xPR1No bWVtSW5pdCBtdXN0IGhhdmUgYmVlbgorICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRi LCBhbmQgQ0xPR1NobWVtSW5pdCBtdXN0IGhhdmUgYmVlbiBYWFgKICAqIGNhbGxlZCBhbHJl YWR5LikKICAqLwogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vY29tbWl0X3RzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMu YwppbmRleCAzNjIxOWRkMTNjYy4uMjYyNWNiZjkzYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiZnVu Y2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ht ZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC04MCw5ICs4MSwxOSBAQCBUcmFuc2FjdGlvbklk VG9DVHNQYWdlKFRyYW5zYWN0aW9uSWQgeGlkKQogLyoKICAqIExpbmsgdG8gc2hhcmVkLW1l bW9yeSBkYXRhIHN0cnVjdHVyZXMgZm9yIENvbW1pdFRzIGNvbnRyb2wKICAqLwotc3RhdGlj IFNscnVDdGxEYXRhIENvbW1pdFRzQ3RsRGF0YTsKK3N0YXRpYyB2b2lkIENvbW1pdFRzU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBDb21taXRUc1NobWVtSW5pdCh2 b2lkICphcmcpOworc3RhdGljIGJvb2wgQ29tbWl0VHNQYWdlUHJlY2VkZXMoaW50NjQgcGFn ZTEsIGludDY0IHBhZ2UyKTsKK3N0YXRpYyBpbnQJY29tbWl0X3RzX2VycmRldGFpbF9mb3Jf aW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworCitjb25zdCBTaG1lbUNhbGxi YWNrcyBDb21taXRUc1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQ29tbWl0 VHNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBDb21taXRUc1NobWVtSW5pdCwKK307CisK K3N0YXRpYyBTbHJ1RGVzYyBDb21taXRUc1NscnVEZXNjOwogCi0jZGVmaW5lIENvbW1pdFRz Q3RsICgmQ29tbWl0VHNDdGxEYXRhKQorI2RlZmluZSBDb21taXRUc0N0bCAoJkNvbW1pdFRz U2xydURlc2MpCiAKIC8qCiAgKiBXZSBrZWVwIGEgY2FjaGUgb2YgdGhlIGxhc3QgdmFsdWUg c2V0IGluIHNoYXJlZCBtZW1vcnkuCkBAIC0xMDQsNiArMTE1LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ29tbWl0VGltZXN0YW1wU2hhcmVkCiAKIHN0YXRpYyBDb21taXRUaW1lc3RhbXBTaGFy ZWQgKmNvbW1pdFRzU2hhcmVkOwogCitzdGF0aWMgdm9pZCBDb21taXRUc1NobWVtSW5pdCh2 b2lkICphcmcpOwogCiAvKiBHVUMgdmFyaWFibGUgKi8KIGJvb2wJCXRyYWNrX2NvbW1pdF90 aW1lc3RhbXA7CkBAIC0xMTQsOCArMTI2LDYgQEAgc3RhdGljIHZvaWQgU2V0WGlkQ29tbWl0 VHNJblBhZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywKIHN0YXRpYyB2b2lk IFRyYW5zYWN0aW9uSWRTZXRDb21taXRUcyhUcmFuc2FjdGlvbklkIHhpZCwgVGltZXN0YW1w VHogdHMsCiAJCQkJCQkJCQkgUmVwbE9yaWdpbklkIG5vZGVpZCwgaW50IHNsb3Rubyk7CiBz dGF0aWMgdm9pZCBlcnJvcl9jb21taXRfdHNfZGlzYWJsZWQodm9pZCk7Ci1zdGF0aWMgYm9v bCBDb21taXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3Rh dGljIGludAljb21taXRfdHNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpv cGFxdWVfZGF0YSk7CiBzdGF0aWMgdm9pZCBBY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3Rh dGljIHZvaWQgRGVhY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3RhdGljIHZvaWQgV3JpdGVU cnVuY2F0ZVhsb2dSZWMoaW50NjQgcGFnZW5vLCBUcmFuc2FjdGlvbklkIG9sZGVzdFhpZCk7 CkBAIC01MTIsMjQgKzUyMiwxMiBAQCBDb21taXRUc1NobWVtQnVmZmVycyh2b2lkKQogfQog CiAvKgotICogU2hhcmVkIG1lbW9yeSBzaXppbmcgZm9yIENvbW1pdFRzCisgKiBSZWdpc3Rl ciBDb21taXRUcyBzaGFyZWQgbWVtb3J5IG5lZWRzIGF0IHN5c3RlbSBzdGFydHVwIChwb3N0 bWFzdGVyIHN0YXJ0CisgKiBvciBzdGFuZGFsb25lIGJhY2tlbmQpCiAgKi8KLVNpemUKLUNv bW1pdFRzU2htZW1TaXplKHZvaWQpCi17Ci0JcmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShD b21taXRUc1NobWVtQnVmZmVycygpLCAwKSArCi0JCXNpemVvZihDb21taXRUaW1lc3RhbXBT aGFyZWQpOwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBDb21taXRUcyBhdCBzeXN0ZW0gc3Rh cnR1cCAocG9zdG1hc3RlciBzdGFydCBvciBzdGFuZGFsb25lCi0gKiBiYWNrZW5kKQotICov Ci12b2lkCi1Db21taXRUc1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0NvbW1pdFRz U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQogCS8qIElmIGF1 dG8tdHVuaW5nIGlzIHJlcXVlc3RlZCwgbm93IGlzIHRoZSB0aW1lIHRvIGRvIGl0ICovCiAJ aWYgKGNvbW1pdF90aW1lc3RhbXBfYnVmZmVycyA9PSAwKQogCXsKQEAgLTU1MCwzMSArNTQ4 LDM2IEBAIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJUEdDX1NfT1ZFUlJJREUp OwogCX0KIAlBc3NlcnQoY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzICE9IDApOworCVNpbXBs ZUxydVJlcXVlc3QoLmRlc2MgPSAmQ29tbWl0VHNTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0g ImNvbW1pdF90aW1lc3RhbXAiLAorCQkJCQkgLkRpciA9ICJwZ19jb21taXRfdHMiLAorCQkJ CQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNlLAogCi0JQ29tbWl0VHNDdGwtPlBhZ2VQ cmVjZWRlcyA9IENvbW1pdFRzUGFnZVByZWNlZGVzOwotCUNvbW1pdFRzQ3RsLT5lcnJkZXRh aWxfZm9yX2lvX2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0J U2ltcGxlTHJ1SW5pdChDb21taXRUc0N0bCwgImNvbW1pdF90aW1lc3RhbXAiLCBDb21taXRU c1NobWVtQnVmZmVycygpLCAwLAotCQkJCSAgInBnX2NvbW1pdF90cyIsIExXVFJBTkNIRV9D T01NSVRUU19CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfQ09NTUlUVFNfU0xSVSwKLQkJCQkg IFNZTkNfSEFORExFUl9DT01NSVRfVFMsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVj ZWRlc1VuaXRUZXN0cyhDb21taXRUc0N0bCwgQ09NTUlUX1RTX1hBQ1RTX1BFUl9QQUdFKTsK KwkJCQkJIC5uc2xvdHMgPSBDb21taXRUc1NobWVtQnVmZmVycygpLAogCi0JY29tbWl0VHNT aGFyZWQgPSBTaG1lbUluaXRTdHJ1Y3QoIkNvbW1pdFRzIHNoYXJlZCIsCi0JCQkJCQkJCQkg c2l6ZW9mKENvbW1pdFRpbWVzdGFtcFNoYXJlZCksCi0JCQkJCQkJCQkgJmZvdW5kKTsKKwkJ CQkJIC5QYWdlUHJlY2VkZXMgPSBDb21taXRUc1BhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3Is CiAKLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJQXNzZXJ0KCFmb3VuZCk7CisJ CQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX0NPTU1JVF9UUywKKwkJCQkJIC5i dWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCisJCQkJCSAu YmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX0NPTU1JVFRTX1NMUlUsCisJCSk7CiAKLQkJ Y29tbWl0VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK LQkJVElNRVNUQU1QX05PQkVHSU4oY29tbWl0VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0LnRp bWUpOwotCQljb21taXRUc1NoYXJlZC0+ZGF0YUxhc3RDb21taXQubm9kZWlkID0gSW52YWxp ZFJlcGxPcmlnaW5JZDsKLQkJY29tbWl0VHNTaGFyZWQtPmNvbW1pdFRzQWN0aXZlID0gZmFs c2U7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3Qo Lm5hbWUgPSAiQ29tbWl0VHMgc2hhcmVkIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoQ29t bWl0VGltZXN0YW1wU2hhcmVkKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmY29tbWl0 VHNTaGFyZWQsCisJCSk7Cit9CisKK3N0YXRpYyB2b2lkCitDb21taXRUc1NobWVtSW5pdCh2 b2lkICphcmcpCit7CisJY29tbWl0VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwlUSU1FU1RBTVBfTk9CRUdJTihjb21taXRUc1NoYXJlZC0+ZGF0 YUxhc3RDb21taXQudGltZSk7CisJY29tbWl0VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0Lm5v ZGVpZCA9IEludmFsaWRSZXBsT3JpZ2luSWQ7CisJY29tbWl0VHNTaGFyZWQtPmNvbW1pdFRz QWN0aXZlID0gZmFsc2U7CisKKwlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKENvbW1pdFRz Q3RsLCBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0UpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCA5ZjhkNTQyYzA5OC4uNjJkNThkYTRh YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC04Myw2 ICs4Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgi CiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMv bHN5c2NhY2hlLmgiCkBAIC0xMTMsMTEgKzExNCwxNiBAQCBQcmV2aW91c011bHRpWGFjdElk KE11bHRpWGFjdElkIG11bHRpKQogLyoKICAqIExpbmtzIHRvIHNoYXJlZC1tZW1vcnkgZGF0 YSBzdHJ1Y3R1cmVzIGZvciBNdWx0aVhhY3QgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0 bERhdGEgTXVsdGlYYWN0T2Zmc2V0Q3RsRGF0YTsKLXN0YXRpYyBTbHJ1Q3RsRGF0YSBNdWx0 aVhhY3RNZW1iZXJDdGxEYXRhOworc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UGFnZVBy ZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFj dE9mZnNldElvRXJyb3JEZXRhaWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworc3RhdGlj IGJvb2wgTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBw YWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWwoY29uc3Qg dm9pZCAqb3BhcXVlX2RhdGEpOworCitzdGF0aWMgU2xydURlc2MgTXVsdGlYYWN0T2Zmc2V0 U2xydURlc2M7CitzdGF0aWMgU2xydURlc2MgTXVsdGlYYWN0TWVtYmVyU2xydURlc2M7CiAK LSNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0T2Zmc2V0Q3RsRGF0YSkK LSNkZWZpbmUgTXVsdGlYYWN0TWVtYmVyQ3RsCSgmTXVsdGlYYWN0TWVtYmVyQ3RsRGF0YSkK KyNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0T2Zmc2V0U2xydURlc2Mp CisjZGVmaW5lIE11bHRpWGFjdE1lbWJlckN0bAkoJk11bHRpWGFjdE1lbWJlclNscnVEZXNj KQogCiAvKgogICogTXVsdGlYYWN0IHN0YXRlIHNoYXJlZCBhY3Jvc3MgYWxsIGJhY2tlbmRz LiAgQWxsIHRoaXMgc3RhdGUgaXMgcHJvdGVjdGVkCkBAIC0yMjAsNiArMjI2LDE1IEBAIHN0 YXRpYyBNdWx0aVhhY3RTdGF0ZURhdGEgKk11bHRpWGFjdFN0YXRlOwogc3RhdGljIE11bHRp WGFjdElkICpPbGRlc3RNZW1iZXJNWGFjdElkOwogc3RhdGljIE11bHRpWGFjdElkICpPbGRl c3RWaXNpYmxlTVhhY3RJZDsKIAorc3RhdGljIHZvaWQgTXVsdGlYYWN0U2htZW1SZXF1ZXN0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCAqYXJn KTsKK3N0YXRpYyB2b2lkIE11bHRpWGFjdFNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2Nv bnN0IFNobWVtQ2FsbGJhY2tzIE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1 ZXN0X2ZuID0gTXVsdGlYYWN0U2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gTXVsdGlYYWN0 U2htZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBNdWx0aVhhY3RTaG1lbUF0dGFjaCwKK307CiAK IHN0YXRpYyBpbmxpbmUgTXVsdGlYYWN0SWQgKgogTXlPbGRlc3RNZW1iZXJNWGFjdElkU2xv dCh2b2lkKQpAQCAtMzIxLDEwICszMzYsNiBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RN ZW1iZXJTbHJ1UmVhZENvbnRleHQKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogfSBNdWx0 aVhhY3RNZW1iZXJTbHJ1UmVhZENvbnRleHQ7CiAKLXN0YXRpYyBib29sIE11bHRpWGFjdE9m ZnNldFBhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3RhdGljIGJv b2wgTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdl Mik7Ci1zdGF0aWMgaW50CU11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRhaWwoY29uc3Qgdm9p ZCAqb3BhcXVlX2RhdGEpOwotc3RhdGljIGludAlNdWx0aVhhY3RNZW1iZXJJb0Vycm9yRGV0 YWlsKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2b2lkIEV4dGVuZE11bHRp WGFjdE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0 aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKTsKIHN0 YXRpYyB2b2lkIFNldE9sZGVzdE9mZnNldCh2b2lkKTsKQEAgLTE3NDcsODAgKzE3NTgsODEg QEAgbXVsdGl4YWN0X3R3b3BoYXNlX3Bvc3RhYm9ydChGdWxsVHJhbnNhY3Rpb25JZCBmeGlk LCB1aW50MTYgaW5mbywKIAltdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChmeGlkLCBp bmZvLCByZWNkYXRhLCBsZW4pOwogfQogCisKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBz aGFyZWQgbWVtb3J5IGZvciBNdWx0aVhhY3QuCi0gKgotICogTXVsdGlYYWN0U2hhcmVkU3Rh dGVTaG1lbVNpemUoKSBjYWxjdWxhdGVzIHRoZSBzaXplIG9mIHRoZSBNdWx0aVhhY3RTdGF0 ZQotICogc3RydWN0LCBhbmQgdGhlIHR3byBwZXItYmFja2VuZCBNdWx0aVhhY3RJZCBhcnJh eXMuICBUaGV5IGFyZSBjYXJ2ZWQgb3V0IG9mCi0gKiB0aGUgc2FtZSBhbGxvY2F0aW9uLiAg TXVsdGlYYWN0U2htZW1TaXplKCkgYWRkaXRpb25hbGx5IGluY2x1ZGVzIHRoZSBtZW1vcnkK LSAqIG5lZWRlZCBmb3IgdGhlIHR3byBTTFJVIGFyZWFzLgorICogUmVnaXN0ZXIgc2hhcmVk IG1lbW9yeSBuZWVkcyBmb3IgTXVsdGlYYWN0LgogICovCi1zdGF0aWMgU2l6ZQotTXVsdGlY YWN0U2hhcmVkU3RhdGVTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemU7CiAKKwkvKgorCSAqIENh bGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgTXVsdGlYYWN0U3RhdGUgc3RydWN0LCBhbmQgdGhl IHR3bworCSAqIHBlci1iYWNrZW5kIE11bHRpWGFjdElkIGFycmF5cy4gIFRoZXkgYXJlIGNh cnZlZCBvdXQgb2YgdGhlIHNhbWUKKwkgKiBhbGxvY2F0aW9uLgorCSAqLwogCXNpemUgPSBv ZmZzZXRvZihNdWx0aVhhY3RTdGF0ZURhdGEsIHBlckJhY2tlbmRYYWN0SWRzKTsKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3NpemUoc2l6ZW9mKE11bHRpWGFjdElkKSwg TnVtTWVtYmVyU2xvdHMpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3Np emUoc2l6ZW9mKE11bHRpWGFjdElkKSwgTnVtVmlzaWJsZVNsb3RzKSk7Ci0JcmV0dXJuIHNp emU7Ci19CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNoYXJlZCBNdWx0aVhhY3Qg U3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAq KikgJk11bHRpWGFjdFN0YXRlLAorCQkpOwogCi1TaXplCi1NdWx0aVhhY3RTaG1lbVNpemUo dm9pZCkKLXsKLQlTaXplCQlzaXplOworCVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmTXVs dGlYYWN0T2Zmc2V0U2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJtdWx0aXhhY3Rfb2Zmc2V0 IiwKKwkJCQkJIC5EaXIgPSAicGdfbXVsdGl4YWN0L29mZnNldHMiLAorCQkJCQkgLmxvbmdf c2VnbWVudF9uYW1lcyA9IGZhbHNlLAogCi0Jc2l6ZSA9IE11bHRpWGFjdFNoYXJlZFN0YXRl U2htZW1TaXplKCk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6 ZShtdWx0aXhhY3Rfb2Zmc2V0X2J1ZmZlcnMsIDApKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFjdF9tZW1iZXJfYnVmZmVycywgMCkpOwor CQkJCQkgLm5zbG90cyA9IG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywKIAotCXJldHVybiBz aXplOwotfQorCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNfSEFORExFUl9NVUxUSVhBQ1Rf T0ZGU0VULAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE9mZnNldFBhZ2VQcmVj ZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gTXVsdGlYYWN0T2Zmc2V0 SW9FcnJvckRldGFpbCwKIAotdm9pZAotTXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCi17Ci0J Ym9vbAkJZm91bmQ7CisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVM VElYQUNUT0ZGU0VUX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5D SEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCisJCSk7CiAKLQlkZWJ1Z19lbG9nMihERUJVRzIs ICJTaGFyZWQgTWVtb3J5IEluaXQgZm9yIE11bHRpWGFjdCIpOworCVNpbXBsZUxydVJlcXVl c3QoLmRlc2MgPSAmTXVsdGlYYWN0TWVtYmVyU2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJt dWx0aXhhY3RfbWVtYmVyIiwKKwkJCQkJIC5EaXIgPSAicGdfbXVsdGl4YWN0L21lbWJlcnMi LAorCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCiAKLQlNdWx0aVhhY3RPZmZz ZXRDdGwtPlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlczsKLQlN dWx0aVhhY3RNZW1iZXJDdGwtPlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE1lbWJlclBhZ2VQ cmVjZWRlczsKLQlNdWx0aVhhY3RPZmZzZXRDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3Ig PSBNdWx0aVhhY3RPZmZzZXRJb0Vycm9yRGV0YWlsOwotCU11bHRpWGFjdE1lbWJlckN0bC0+ ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IE11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWw7 CisJCQkJCSAubnNsb3RzID0gbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzLAogCi0JU2ltcGxl THJ1SW5pdChNdWx0aVhhY3RPZmZzZXRDdGwsCi0JCQkJICAibXVsdGl4YWN0X29mZnNldCIs IG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywgMCwKLQkJCQkgICJwZ19tdWx0aXhhY3Qvb2Zm c2V0cyIsIExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSLAotCQkJCSAgTFdUUkFO Q0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX01VTFRJWEFD VF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhN dWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsKLQlTaW1w bGVMcnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKLQkJCQkgICJtdWx0aXhhY3RfbWVtYmVy IiwgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzLCAwLAotCQkJCSAgInBnX211bHRpeGFjdC9t ZW1iZXJzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE1FTUJFUl9CVUZGRVIsCi0JCQkJICBMV1RS QU5DSEVfTVVMVElYQUNUTUVNQkVSX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTVVMVElY QUNUX01FTUJFUiwKLQkJCQkgIHRydWUpOwotCS8qIGRvZXNuJ3QgY2FsbCBTaW1wbGVMcnVU cnVuY2F0ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KLQotCS8qIElu aXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlNdWx0aVhhY3RTdGF0ZSA9 IFNobWVtSW5pdFN0cnVjdCgiU2hhcmVkIE11bHRpWGFjdCBTdGF0ZSIsCi0JCQkJCQkJCQkg TXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUoKSwKLQkJCQkJCQkJCSAmZm91bmQpOwot CWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKKwkJCQkJ IC5zeW5jX2hhbmRsZXIgPSBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUiwKKwkJCQkJ IC5QYWdlUHJlY2VkZXMgPSBNdWx0aVhhY3RNZW1iZXJQYWdlUHJlY2VkZXMsCisJCQkJCSAu ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IE11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWws CiAKLQkJLyogTWFrZSBzdXJlIHdlIHplcm8gb3V0IHRoZSBwZXItYmFja2VuZCBzdGF0ZSAq LwotCQlNZW1TZXQoTXVsdGlYYWN0U3RhdGUsIDAsIE11bHRpWGFjdFNoYXJlZFN0YXRlU2ht ZW1TaXplKCkpOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7CisJCQkJCSAuYnVmZmVy X3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVSX0JVRkZFUiwKKwkJCQkJ IC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVSX1NMUlUsCisJ CSk7CiAKKwkvKgorCSAqIG1lbWJlcnMgU0xSVSBkb2Vzbid0IGNhbGwgU2ltcGxlTHJ1VHJ1 bmNhdGUoKSBvciBtZWV0IGNyaXRlcmlhIGZvciB1bml0CisJICogdGVzdHMKKwkgKi8KK30K Kworc3RhdGljIHZvaWQKK011bHRpWGFjdFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJLyoK KwkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCisJICovCisJT2xkZXN0TWVtYmVyTVhhY3RJ ZCA9IE11bHRpWGFjdFN0YXRlLT5wZXJCYWNrZW5kWGFjdElkczsKKwlPbGRlc3RWaXNpYmxl TVhhY3RJZCA9IE9sZGVzdE1lbWJlck1YYWN0SWQgKyBOdW1NZW1iZXJTbG90czsKKworCVNs cnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBNVUxUSVhBQ1Rf T0ZGU0VUU19QRVJfUEFHRSk7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbUF0 dGFjaCh2b2lkICphcmcpCit7CiAJLyoKIAkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKaW5kZXggYTJiYjhmYTgwMzMuLjQ3 ZGQ1MmQ2NzQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jCkBAIC03MCw3ICs3 MCw5IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2lu dGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIC8qCkBAIC04OSw5 ICs5MSw5IEBACiAgKiAgZGlyLzEyMzQ1NiBmb3IgWzJeMjAsIDJeMjQtMV0KICAqLwogc3Rh dGljIGlubGluZSBpbnQKLVNscnVGaWxlTmFtZShTbHJ1Q3RsIGN0bCwgY2hhciAqcGF0aCwg aW50NjQgc2Vnbm8pCitTbHJ1RmlsZU5hbWUoU2xydURlc2MgKmN0bCwgY2hhciAqcGF0aCwg aW50NjQgc2Vnbm8pCiB7Ci0JaWYgKGN0bC0+bG9uZ19zZWdtZW50X25hbWVzKQorCWlmIChj dGwtPm9wdGlvbnMubG9uZ19zZWdtZW50X25hbWVzKQogCXsKIAkJLyoKIAkJICogV2UgY291 bGQgdXNlIDE2IGNoYXJhY3RlcnMgaGVyZSBidXQgdGhlIGRpc2FkdmFudGFnZSB3b3VsZCBi ZSB0aGF0CkBAIC0xMDEsNyArMTAzLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBj aGFyICpwYXRoLCBpbnQ2NCBzZWdubykKIAkJICogdGhhdCBpbiB0aGUgZnV0dXJlIHdlIGNh bid0IGRlY3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5LgogCQkgKi8KIAkJ QXNzZXJ0KHNlZ25vID49IDAgJiYgc2Vnbm8gPD0gSU5UNjRDT05TVCgweEZGRkZGRkZGRkZG RkZGRikpOwotCQlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIg UFJJWDY0LCBjdGwtPkRpciwgc2Vnbm8pOworCQlyZXR1cm4gc25wcmludGYocGF0aCwgTUFY UEdQQVRILCAiJXMvJTAxNSIgUFJJWDY0LCBjdGwtPm9wdGlvbnMuRGlyLCBzZWdubyk7CiAJ fQogCWVsc2UKIAl7CkBAIC0xMTAsNyArMTEyLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwg Y3RsLCBjaGFyICpwYXRoLCBpbnQ2NCBzZWdubykKIAkJICogaW50ZWdlcnMgYXJlIGFsbG93 ZWQuIFNlZSBTbHJ1Q29ycmVjdFNlZ21lbnRGaWxlbmFtZUxlbmd0aCgpCiAJCSAqLwogCQlB c3NlcnQoc2Vnbm8gPj0gMCAmJiBzZWdubyA8PSBJTlQ2NENPTlNUKDB4RkZGRkZGKSk7Ci0J CXJldHVybiBzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy8lMDRYIiwgKGN0bCktPkRp ciwKKwkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgiLCAoY3Rs KS0+b3B0aW9ucy5EaXIsCiAJCQkJCQkodW5zaWduZWQgaW50KSBzZWdubyk7CiAJfQogfQpA QCAtMTc2LDE5ICsxNzgsMTkgQEAgc3RhdGljIFNscnVFcnJvckNhdXNlIHNscnVfZXJyY2F1 c2U7CiBzdGF0aWMgaW50CXNscnVfZXJybm87CiAKIAotc3RhdGljIHZvaWQgU2ltcGxlTHJ1 WmVyb0xTTnMoU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotc3RhdGljIHZvaWQgU2ltcGxl THJ1V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKTsKLXN0YXRpYyB2b2lkIFNscnVJ bnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubywgU2xydVdyaXRlQWxs IGZkYXRhKTsKLXN0YXRpYyBib29sIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3Rs LCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pOwotc3RhdGljIGJvb2wgU2xydVBoeXNpY2Fs V3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sCitzdGF0 aWMgdm9pZCBTaW1wbGVMcnVaZXJvTFNOcyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsK K3N0YXRpYyB2b2lkIFNpbXBsZUxydVdhaXRJTyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5v KTsKK3N0YXRpYyB2b2lkIFNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBp bnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpOworc3RhdGljIGJvb2wgU2xydVBoeXNp Y2FsUmVhZFBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vKTsK K3N0YXRpYyBib29sIFNscnVQaHlzaWNhbFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2 NCBwYWdlbm8sIGludCBzbG90bm8sCiAJCQkJCQkJCSAgU2xydVdyaXRlQWxsIGZkYXRhKTsK LXN0YXRpYyB2b2lkIFNscnVSZXBvcnRJT0Vycm9yKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdl bm8sCitzdGF0aWMgdm9pZCBTbHJ1UmVwb3J0SU9FcnJvcihTbHJ1RGVzYyAqY3RsLCBpbnQ2 NCBwYWdlbm8sCiAJCQkJCQkJICBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7Ci1zdGF0aWMg aW50CVNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOworc3Rh dGljIGludAlTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8p OwogCi1zdGF0aWMgYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNscnVDdGwgY3Rs LCBjaGFyICpmaWxlbmFtZSwKK3N0YXRpYyBib29sIFNscnVTY2FuRGlyQ2JEZWxldGVDdXRv ZmYoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkgIGludDY0IHNl Z3BhZ2UsIHZvaWQgKmRhdGEpOwotc3RhdGljIHZvaWQgU2xydUludGVybmFsRGVsZXRlU2Vn bWVudChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pOworc3RhdGljIHZvaWQgU2xydUludGVy bmFsRGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubyk7CiBzdGF0aWMg aW5saW5lIHZvaWQgU2xydVJlY2VudGx5VXNlZChTbHJ1U2hhcmVkIHNoYXJlZCwgaW50IHNs b3Rubyk7CiAKIApAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBTbHJ1 UmVjZW50bHlVc2VkKFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xvdG5vKTsKICAqIEluaXRp YWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKICAqLwogCi1TaXplCitzdGF0aWMgU2l6ZQog U2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGludCBubHNucykKIHsKIAlpbnQJCQlu YmFua3MgPSBuc2xvdHMgLyBTTFJVX0JBTktfU0laRTsKQEAgLTIzOCwxMjAgKzI0MCwxMzUg QEAgU2ltcGxlTHJ1QXV0b3R1bmVCdWZmZXJzKGludCBkaXZpc29yLCBpbnQgbWF4KQogfQog CiAvKgotICogSW5pdGlhbGl6ZSwgb3IgYXR0YWNoIHRvLCBhIHNpbXBsZSBMUlUgY2FjaGUg aW4gc2hhcmVkIG1lbW9yeS4KLSAqCi0gKiBjdGw6IGFkZHJlc3Mgb2YgbG9jYWwgKHVuc2hh cmVkKSBjb250cm9sIHN0cnVjdHVyZS4KLSAqIG5hbWU6IG5hbWUgb2YgU0xSVS4gIChUaGlz IGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQotICogbnNsb3RzOiBudW1iZXIg b2YgcGFnZSBzbG90cyB0byB1c2UuCi0gKiBubHNuczogbnVtYmVyIG9mIExTTiBncm91cHMg cGVyIHBhZ2UgKHNldCB0byB6ZXJvIGlmIG5vdCByZWxldmFudCkuCi0gKiBzdWJkaXI6IFBH REFUQS1yZWxhdGl2ZSBzdWJkaXJlY3RvcnkgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIGZpbGVz LgotICogYnVmZmVyX3RyYW5jaGVfaWQ6IHRyYW5jaGUgSUQgdG8gdXNlIGZvciB0aGUgU0xS VSdzIHBlci1idWZmZXIgTFdMb2Nrcy4KLSAqIGJhbmtfdHJhbmNoZV9pZDogdHJhbmNoZSBJ RCB0byB1c2UgZm9yIHRoZSBiYW5rIExXTG9ja3MuCi0gKiBzeW5jX2hhbmRsZXI6IHdoaWNo IHNldCBvZiBmdW5jdGlvbnMgdG8gdXNlIHRvIGhhbmRsZSBzeW5jIHJlcXVlc3RzCi0gKiBs b25nX3NlZ21lbnRfbmFtZXM6IHVzZSBzaG9ydCBvciBsb25nIHNlZ21lbnQgbmFtZXMKKyAq IFJlZ2lzdGVyIGEgc2ltcGxlIExSVSBjYWNoZSBpbiBzaGFyZWQgbWVtb3J5LgogICovCiB2 b2lkCi1TaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg bnNsb3RzLCBpbnQgbmxzbnMsCi0JCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZl cl90cmFuY2hlX2lkLCBpbnQgYmFua190cmFuY2hlX2lkLAotCQkJICBTeW5jUmVxdWVzdEhh bmRsZXIgc3luY19oYW5kbGVyLCBib29sIGxvbmdfc2VnbWVudF9uYW1lcykKK1NpbXBsZUxy dVJlcXVlc3RXaXRoT3B0cyhjb25zdCBTbHJ1T3B0cyAqb3B0aW9ucykKIHsKKwlTbHJ1T3B0 cyAgICpvcHRpb25zX2NvcHk7CisKKwlBc3NlcnQob3B0aW9ucy0+bmFtZSAhPSBOVUxMKTsK KwlBc3NlcnQob3B0aW9ucy0+bnNsb3RzID4gMCk7CisJQXNzZXJ0KG9wdGlvbnMtPlBhZ2VQ cmVjZWRlcyAhPSBOVUxMKTsKKwlBc3NlcnQob3B0aW9ucy0+ZXJyZGV0YWlsX2Zvcl9pb19l cnJvciAhPSBOVUxMKTsKKworCW9wdGlvbnNfY29weSA9IE1lbW9yeUNvbnRleHRBbGxvYyhU b3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICBzaXplb2YoU2xydU9wdHMpKTsKKwltZW1j cHkob3B0aW9uc19jb3B5LCBvcHRpb25zLCBzaXplb2YoU2xydU9wdHMpKTsKKworCW9wdGlv bnNfY29weS0+YmFzZS5uYW1lID0gb3B0aW9ucy0+bmFtZTsKKwlvcHRpb25zX2NvcHktPmJh c2Uuc2l6ZSA9IFNpbXBsZUxydVNobWVtU2l6ZShvcHRpb25zX2NvcHktPm5zbG90cywgb3B0 aW9uc19jb3B5LT5ubHNucyk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0aW9uc19j b3B5LT5iYXNlLCBTSE1FTV9LSU5EX1NMUlUpOworfQorCisvKiBJbml0aWFsaXplIGxvY2tz IGFuZCBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KK3ZvaWQKK3NobWVtX3NscnVfaW5pdCh2b2lk ICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpiYXNlX29wdGlvbnMpCit7CisJU2xydU9w dHMgICAqb3B0aW9ucyA9IChTbHJ1T3B0cyAqKSBiYXNlX29wdGlvbnM7CisJU2xydURlc2Mg ICAqZGVzYyA9IChTbHJ1RGVzYyAqKSBvcHRpb25zLT5kZXNjOworCWNoYXIJCW5hbWVidWZb TkFNRURBVEFMRU5dOwogCVNscnVTaGFyZWQJc2hhcmVkOwotCWJvb2wJCWZvdW5kOworCWlu dAkJCW5zbG90cyA9IG9wdGlvbnMtPm5zbG90czsKIAlpbnQJCQluYmFua3MgPSBuc2xvdHMg LyBTTFJVX0JBTktfU0laRTsKKwlpbnQJCQlubHNucyA9IG9wdGlvbnMtPm5sc25zOworCWNo YXIJICAgKnB0cjsKKwlTaXplCQlvZmZzZXQ7CisKKwlzaGFyZWQgPSAoU2xydVNoYXJlZCkg bG9jYXRpb247CisJZGVzYy0+c2hhcmVkID0gc2hhcmVkOworCWRlc2MtPm5iYW5rcyA9IG5i YW5rczsKKwltZW1jcHkoJmRlc2MtPm9wdGlvbnMsIG9wdGlvbnMsIHNpemVvZihTbHJ1T3B0 cykpOworCisJLyogYXNzaWduIG5ldyB0cmFuY2hlIElEcywgaWYgbm90IGdpdmVuICovCisJ aWYgKGRlc2MtPm9wdGlvbnMuYnVmZmVyX3RyYW5jaGVfaWQgPT0gMCkKKwl7CisJCXNucHJp bnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgIiVzIGJ1ZmZlciIsIGRlc2MtPm9wdGlv bnMubmFtZSk7CisJCWRlc2MtPm9wdGlvbnMuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV0xvY2tO ZXdUcmFuY2hlSWQobmFtZWJ1Zik7CisJfQorCWlmIChkZXNjLT5vcHRpb25zLmJhbmtfdHJh bmNoZV9pZCA9PSAwKQorCXsKKwkJc25wcmludGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYp LCAiJXMgYmFuayIsIGRlc2MtPm9wdGlvbnMubmFtZSk7CisJCWRlc2MtPm9wdGlvbnMuYmFu a190cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKG5hbWVidWYpOworCX0KIAogCUFz c2VydChuc2xvdHMgPD0gU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIAotCUFzc2VydChj dGwtPlBhZ2VQcmVjZWRlcyAhPSBOVUxMKTsKLQlBc3NlcnQoY3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yICE9IE5VTEwpOworCW1lbXNldChzaGFyZWQsIDAsIHNpemVvZihTbHJ1U2hh cmVkRGF0YSkpOwogCi0Jc2hhcmVkID0gKFNscnVTaGFyZWQpIFNobWVtSW5pdFN0cnVjdChu YW1lLAotCQkJCQkJCQkJCSAgU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpLAot CQkJCQkJCQkJCSAgJmZvdW5kKTsKKwlzaGFyZWQtPm51bV9zbG90cyA9IG5zbG90czsKKwlz aGFyZWQtPmxzbl9ncm91cHNfcGVyX3BhZ2UgPSBubHNuczsKIAotCWlmICghSXNVbmRlclBv c3RtYXN0ZXIpCi0JewotCQkvKiBJbml0aWFsaXplIGxvY2tzIGFuZCBzaGFyZWQgbWVtb3J5 IGFyZWEgKi8KLQkJY2hhcgkgICAqcHRyOwotCQlTaXplCQlvZmZzZXQ7Ci0KLQkJQXNzZXJ0 KCFmb3VuZCk7Ci0KLQkJbWVtc2V0KHNoYXJlZCwgMCwgc2l6ZW9mKFNscnVTaGFyZWREYXRh KSk7Ci0KLQkJc2hhcmVkLT5udW1fc2xvdHMgPSBuc2xvdHM7Ci0JCXNoYXJlZC0+bHNuX2dy b3Vwc19wZXJfcGFnZSA9IG5sc25zOwotCi0JCXBnX2F0b21pY19pbml0X3U2NCgmc2hhcmVk LT5sYXRlc3RfcGFnZV9udW1iZXIsIDApOwotCi0JCXNoYXJlZC0+c2xydV9zdGF0c19pZHgg PSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgobmFtZSk7Ci0KLQkJcHRyID0gKGNoYXIgKikgc2hh cmVkOwotCQlvZmZzZXQgPSBNQVhBTElHTihzaXplb2YoU2xydVNoYXJlZERhdGEpKTsKLQkJ c2hhcmVkLT5wYWdlX2J1ZmZlciA9IChjaGFyICoqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsKLQkJc2hhcmVkLT5w YWdlX3N0YXR1cyA9IChTbHJ1UGFnZVN0YXR1cyAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihTbHJ1UGFnZVN0YXR1cykpOwotCQlz aGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9vbCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0 ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihib29sKSk7Ci0JCXNoYXJlZC0+cGFnZV9u dW1iZXIgPSAoaW50NjQgKikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElH Tihuc2xvdHMgKiBzaXplb2YoaW50NjQpKTsKLQkJc2hhcmVkLT5wYWdlX2xydV9jb3VudCA9 IChpbnQgKikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMg KiBzaXplb2YoaW50KSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBMV0xvY2tzICovCi0JCXNoYXJl ZC0+YnVmZmVyX2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJ b2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKLQkJ c2hhcmVkLT5iYW5rX2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsK LQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsK LQkJc2hhcmVkLT5iYW5rX2N1cl9scnVfY291bnQgPSAoaW50ICopIChwdHIgKyBvZmZzZXQp OwotCQlvZmZzZXQgKz0gTUFYQUxJR04obmJhbmtzICogc2l6ZW9mKGludCkpOwotCi0JCWlm IChubHNucyA+IDApCi0JCXsKLQkJCXNoYXJlZC0+Z3JvdXBfbHNuID0gKFhMb2dSZWNQdHIg KikgKHB0ciArIG9mZnNldCk7Ci0JCQlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogbmxz bnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwotCQl9CisJcGdfYXRvbWljX2luaXRfdTY0KCZz aGFyZWQtPmxhdGVzdF9wYWdlX251bWJlciwgMCk7CiAKLQkJcHRyICs9IEJVRkZFUkFMSUdO KG9mZnNldCk7Ci0JCWZvciAoaW50IHNsb3RubyA9IDA7IHNsb3RubyA8IG5zbG90czsgc2xv dG5vKyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YnVmZmVyX2xvY2tz W3Nsb3Rub10ubG9jaywKLQkJCQkJCQkgYnVmZmVyX3RyYW5jaGVfaWQpOworCXNoYXJlZC0+ c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgoZGVzYy0+b3B0aW9ucy5u YW1lKTsKIAotCQkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOwotCQkJc2hh cmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX0VNUFRZOwotCQkJc2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10gPSBmYWxzZTsKLQkJCXNoYXJlZC0+cGFnZV9scnVfY291 bnRbc2xvdG5vXSA9IDA7Ci0JCQlwdHIgKz0gQkxDS1NaOwotCQl9CisJcHRyID0gKGNoYXIg Kikgc2hhcmVkOworCW9mZnNldCA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0YSkp OworCXNoYXJlZC0+cGFnZV9idWZmZXIgPSAoY2hhciAqKikgKHB0ciArIG9mZnNldCk7CisJ b2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsKKwlzaGFyZWQt PnBhZ2Vfc3RhdHVzID0gKFNscnVQYWdlU3RhdHVzICopIChwdHIgKyBvZmZzZXQpOworCW9m ZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoU2xydVBhZ2VTdGF0dXMpKTsKKwlz aGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9vbCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQg Kz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKGJvb2wpKTsKKwlzaGFyZWQtPnBhZ2VfbnVt YmVyID0gKGludDY0ICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCArPSBNQVhBTElHTihu c2xvdHMgKiBzaXplb2YoaW50NjQpKTsKKwlzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50ID0gKGlu dCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6 ZW9mKGludCkpOwogCi0JCS8qIEluaXRpYWxpemUgdGhlIHNsb3QgYmFua3MuICovCi0JCWZv ciAoaW50IGJhbmtubyA9IDA7IGJhbmtubyA8IG5iYW5rczsgYmFua25vKyspCi0JCXsKLQkJ CUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YmFua19sb2Nrc1tiYW5rbm9dLmxvY2ssIGJh bmtfdHJhbmNoZV9pZCk7Ci0JCQlzaGFyZWQtPmJhbmtfY3VyX2xydV9jb3VudFtiYW5rbm9d ID0gMDsKLQkJfQorCS8qIEluaXRpYWxpemUgTFdMb2NrcyAqLworCXNoYXJlZC0+YnVmZmVy X2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0g TUFYQUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOworCXNoYXJlZC0+YmFu a19sb2NrcyA9IChMV0xvY2tQYWRkZWQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9 IE1BWEFMSUdOKG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKKwlzaGFyZWQtPmJh bmtfY3VyX2xydV9jb3VudCA9IChpbnQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9 IE1BWEFMSUdOKG5iYW5rcyAqIHNpemVvZihpbnQpKTsKIAotCQkvKiBTaG91bGQgZml0IHRv IGVzdGltYXRlZCBzaG1lbSBzaXplICovCi0JCUFzc2VydChwdHIgLSAoY2hhciAqKSBzaGFy ZWQgPD0gU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpKTsKKwlpZiAobmxzbnMg PiAwKQorCXsKKwkJc2hhcmVkLT5ncm91cF9sc24gPSAoWExvZ1JlY1B0ciAqKSAocHRyICsg b2Zmc2V0KTsKKwkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIG5sc25zICogc2l6ZW9m KFhMb2dSZWNQdHIpKTsKIAl9Ci0JZWxzZQorCisJcHRyICs9IEJVRkZFUkFMSUdOKG9mZnNl dCk7CisJZm9yIChpbnQgc2xvdG5vID0gMDsgc2xvdG5vIDwgbnNsb3RzOyBzbG90bm8rKykK IAl7Ci0JCUFzc2VydChmb3VuZCk7Ci0JCUFzc2VydChzaGFyZWQtPm51bV9zbG90cyA9PSBu c2xvdHMpOworCQlMV0xvY2tJbml0aWFsaXplKCZzaGFyZWQtPmJ1ZmZlcl9sb2Nrc1tzbG90 bm9dLmxvY2ssCisJCQkJCQkgZGVzYy0+b3B0aW9ucy5idWZmZXJfdHJhbmNoZV9pZCk7CisK KwkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOworCQlzaGFyZWQtPnBhZ2Vf c3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7CisJCXNoYXJlZC0+cGFnZV9kaXJ0 eVtzbG90bm9dID0gZmFsc2U7CisJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xvdG5vXSA9 IDA7CisJCXB0ciArPSBCTENLU1o7CiAJfQogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSB1 bnNoYXJlZCBjb250cm9sIHN0cnVjdCwgaW5jbHVkaW5nIGRpcmVjdG9yeSBwYXRoLiBXZQot CSAqIGFzc3VtZSBjYWxsZXIgc2V0IFBhZ2VQcmVjZWRlcy4KLQkgKi8KLQljdGwtPnNoYXJl ZCA9IHNoYXJlZDsKLQljdGwtPnN5bmNfaGFuZGxlciA9IHN5bmNfaGFuZGxlcjsKLQljdGwt Pmxvbmdfc2VnbWVudF9uYW1lcyA9IGxvbmdfc2VnbWVudF9uYW1lczsKLQljdGwtPm5iYW5r cyA9IG5iYW5rczsKLQlzdHJsY3B5KGN0bC0+RGlyLCBzdWJkaXIsIHNpemVvZihjdGwtPkRp cikpOworCS8qIEluaXRpYWxpemUgdGhlIHNsb3QgYmFua3MuICovCisJZm9yIChpbnQgYmFu a25vID0gMDsgYmFua25vIDwgbmJhbmtzOyBiYW5rbm8rKykKKwl7CisJCUxXTG9ja0luaXRp YWxpemUoJnNoYXJlZC0+YmFua19sb2Nrc1tiYW5rbm9dLmxvY2ssIGRlc2MtPm9wdGlvbnMu YmFua190cmFuY2hlX2lkKTsKKwkJc2hhcmVkLT5iYW5rX2N1cl9scnVfY291bnRbYmFua25v XSA9IDA7CisJfQorCisJLyogU2hvdWxkIGZpdCB0byBlc3RpbWF0ZWQgc2htZW0gc2l6ZSAq LworCUFzc2VydChwdHIgLSAoY2hhciAqKSBzaGFyZWQgPD0gU2ltcGxlTHJ1U2htZW1TaXpl KG5zbG90cywgbmxzbnMpKTsKK30KKwordm9pZAorc2htZW1fc2xydV9hdHRhY2godm9pZCAq bG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqYmFzZV9vcHRpb25zKQoreworCVNscnVPcHRz ICAgKm9wdGlvbnMgPSAoU2xydU9wdHMgKikgYmFzZV9vcHRpb25zOworCVNscnVEZXNjICAg KmRlc2MgPSAoU2xydURlc2MgKikgb3B0aW9ucy0+ZGVzYzsKKwlpbnQJCQluc2xvdHMgPSBv cHRpb25zLT5uc2xvdHM7CisJaW50CQkJbmJhbmtzID0gbnNsb3RzIC8gU0xSVV9CQU5LX1NJ WkU7CisKKwlkZXNjLT5zaGFyZWQgPSAoU2xydVNoYXJlZCkgbG9jYXRpb247CisJZGVzYy0+ bmJhbmtzID0gbmJhbmtzOworCW1lbWNweSgmZGVzYy0+b3B0aW9ucywgb3B0aW9ucywgc2l6 ZW9mKFNscnVPcHRzKSk7CiB9CiAKKwogLyoKICAqIEhlbHBlciBmdW5jdGlvbiBmb3IgR1VD IGNoZWNrX2hvb2sgdG8gY2hlY2sgd2hldGhlciBzbHJ1IGJ1ZmZlcnMgYXJlIGluCiAgKiBt dWx0aXBsZXMgb2YgU0xSVV9CQU5LX1NJWkUuCkBAIC0zNzcsNyArMzk0LDcgQEAgY2hlY2tf c2xydV9idWZmZXJzKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKQogICogQmFuayBs b2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0Lgog ICovCiBpbnQKLVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8p CitTaW1wbGVMcnVaZXJvUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJ U2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlzbG90bm87CkBAIC00 MzAsNyArNDQ3LDcgQEAgU2ltcGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBh Z2VubykKICAqIFRoaXMgYXNzdW1lcyB0aGF0IEludmFsaWRYTG9nUmVjUHRyIGlzIGJpdHdp c2UtYWxsLTAuCiAgKi8KIHN0YXRpYyB2b2lkCi1TaW1wbGVMcnVaZXJvTFNOcyhTbHJ1Q3Rs IGN0bCwgaW50IHNsb3RubykKK1NpbXBsZUxydVplcm9MU05zKFNscnVEZXNjICpjdGwsIGlu dCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIApAQCAt NDQ2LDcgKzQ2Myw3IEBAIFNpbXBsZUxydVplcm9MU05zKFNscnVDdGwgY3RsLCBpbnQgc2xv dG5vKQogICogU0xSVSBiYW5rIGxvY2sgaXMgYWNxdWlyZWQgYW5kIHJlbGVhc2VkIGhlcmUu CiAgKi8KIHZvaWQKLVNpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGlu dDY0IHBhZ2VubykKK1NpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xydURlc2MgKmN0bCwg aW50NjQgcGFnZW5vKQogewogCWludAkJCXNsb3RubzsKIAlMV0xvY2sJICAgKmxvY2s7CkBA IC00NzIsNyArNDg5LDcgQEAgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1Q3RsIGN0 bCwgaW50NjQgcGFnZW5vKQogICogQmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwg YW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBzdGF0aWMgdm9pZAotU2ltcGxlTHJ1 V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQorU2ltcGxlTHJ1V2FpdElPKFNscnVE ZXNjICpjdGwsIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNo YXJlZDsKIAlpbnQJCQliYW5rbm8gPSBTbG90R2V0QmFua051bWJlcihzbG90bm8pOwpAQCAt NTMwLDcgKzU0Nyw3IEBAIFNpbXBsZUxydVdhaXRJTyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3Ru bykKICAqIFRoZSBjb3JyZWN0IGJhbmsgbG9jayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFu ZCB3aWxsIGJlIGhlbGQgYXQgZXhpdC4KICAqLwogaW50Ci1TaW1wbGVMcnVSZWFkUGFnZShT bHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAorU2ltcGxlTHJ1UmVh ZFBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAogCQkJ CSAgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBj dGwtPnNoYXJlZDsKQEAgLTYzNCw3ICs2NTEsNyBAQCBTaW1wbGVMcnVSZWFkUGFnZShTbHJ1 Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAogICogSXQgaXMgdW5zcGVj aWZpZWQgd2hldGhlciB0aGUgbG9jayB3aWxsIGJlIHNoYXJlZCBvciBleGNsdXNpdmUuCiAg Ki8KIGludAotU2ltcGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHkoU2xydUN0bCBjdGwsIGludDY0 IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCitTaW1wbGVMcnVSZWFkUGFnZV9S ZWFkT25seShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGNvbnN0IHZvaWQgKm9wYXF1 ZV9kYXRhKQogewogCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7CiAJTFdMb2Nr CSAgICpiYW5rbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKGN0bCwgcGFnZW5vKTsKQEAg LTY4MSw3ICs2OTgsNyBAQCBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0 bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKICAqIEJhbmsgbG9j ayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFuZCB3aWxsIGJlIGhlbGQgYXQgZXhpdC4KICAq Lwogc3RhdGljIHZvaWQKLVNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50 IHNsb3RubywgU2xydVdyaXRlQWxsIGZkYXRhKQorU2xydUludGVybmFsV3JpdGVQYWdlKFNs cnVEZXNjICpjdGwsIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkKIHsKIAlTbHJ1 U2hhcmVkCXNoYXJlZCA9IGN0bC0+c2hhcmVkOwogCWludDY0CQlwYWdlbm8gPSBzaGFyZWQt PnBhZ2VfbnVtYmVyW3Nsb3Rub107CkBAIC03NjEsNyArNzc4LDcgQEAgU2xydUludGVybmFs V3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEp CiAgKiBmZGF0YSBpcyBhbHdheXMgcGFzc2VkIGEgTlVMTCBoZXJlLgogICovCiB2b2lkCi1T aW1wbGVMcnVXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8pCitTaW1wbGVMcnVX cml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50IHNsb3RubykKIHsKIAlBc3NlcnQoY3RsLT5z aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZKTsKIApAQCAt Nzc1LDcgKzc5Miw3IEBAIFNpbXBsZUxydVdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNs b3RubykKICAqIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBnaXZlbiBwYWdlLgogICov CiBib29sCi1TaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoU2xydUN0bCBjdGwsIGlu dDY0IHBhZ2VubykKK1NpbXBsZUxydURvZXNQaHlzaWNhbFBhZ2VFeGlzdChTbHJ1RGVzYyAq Y3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJaW50NjQJCXNlZ25vID0gcGFnZW5vIC8gU0xSVV9Q QUdFU19QRVJfU0VHTUVOVDsKIAlpbnQJCQlycGFnZW5vID0gcGFnZW5vICUgU0xSVV9QQUdF U19QRVJfU0VHTUVOVDsKQEAgLTgzMyw3ICs4NTAsNyBAQCBTaW1wbGVMcnVEb2VzUGh5c2lj YWxQYWdlRXhpc3QoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKICAqIHJlYWQvd3JpdGUg b3BlcmF0aW9ucy4gIFdlIGNvdWxkIGNhY2hlIG9uZSB2aXJ0dWFsIGZpbGUgcG9pbnRlciAu Li4KICAqLwogc3RhdGljIGJvb2wKLVNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3Rs LCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCitTbHJ1UGh5c2ljYWxSZWFkUGFnZShTbHJ1 RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlz aGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BB R0VTX1BFUl9TRUdNRU5UOwpAQCAtOTA1LDcgKzkyMiw3IEBAIFNscnVQaHlzaWNhbFJlYWRQ YWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiAgKiBTaW1wbGVM cnVXcml0ZUFsbC4KICAqLwogc3RhdGljIGJvb2wKLVNscnVQaHlzaWNhbFdyaXRlUGFnZShT bHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRh dGEpCitTbHJ1UGh5c2ljYWxXcml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5v LCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCiB7CiAJU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UOwpAQCAtMTAzNywxMSArMTA1NCwxMSBAQCBTbHJ1UGh5c2ljYWxXcml0 ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubywgU2xydVdyaXRl QWxsIGZkYXRhKQogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAogCS8qIFF1ZXVlIHVw IGEgc3luYyByZXF1ZXN0IGZvciB0aGUgY2hlY2twb2ludGVyLiAqLwotCWlmIChjdGwtPnN5 bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKKwlpZiAoY3RsLT5vcHRpb25zLnN5 bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKIAl7CiAJCUZpbGVUYWcJCXRhZzsK IAotCQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5jX2hhbmRsZXIsIHNlZ25vKTsK KwkJSU5JVF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5zeW5jX2hhbmRsZXIsIHNl Z25vKTsKIAkJaWYgKCFSZWdpc3RlclN5bmNSZXF1ZXN0KCZ0YWcsIFNZTkNfUkVRVUVTVCwg ZmFsc2UpKQogCQl7CiAJCQkvKiBObyBzcGFjZSB0byBlbnF1ZXVlIHN5bmMgcmVxdWVzdC4g IERvIGl0IHN5bmNocm9ub3VzbHkuICovCkBAIC0xMDc3LDcgKzEwOTQsNyBAQCBTbHJ1UGh5 c2ljYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3Rubywg U2xydVdyaXRlQWxsIGZkYXRhKQogICogU2xydVBoeXNpY2FsV3JpdGVQYWdlLiAgQ2FsbCB0 aGlzIGFmdGVyIGNsZWFuaW5nIHVwIHNoYXJlZC1tZW1vcnkgc3RhdGUuCiAgKi8KIHN0YXRp YyB2b2lkCi1TbHJ1UmVwb3J0SU9FcnJvcihTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBj b25zdCB2b2lkICpvcGFxdWVfZGF0YSkKK1NscnVSZXBvcnRJT0Vycm9yKFNscnVEZXNjICpj dGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiB7CiAJaW50NjQJ CXNlZ25vID0gcGFnZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKIAlpbnQJCQlycGFn ZW5vID0gcGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKQEAgLTEwOTIsMTQgKzEx MDksMTQgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vubywg Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IG9wZW4g ZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCksCi0JCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJy ZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCSBvcGFxdWVf ZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRh KSA6IDApKTsKIAkJCWJyZWFrOwogCQljYXNlIFNMUlVfU0VFS19GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVy cm1zZygiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCIgdG8gb2Zmc2V0ICVkOiAlbSIs CiAJCQkJCQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9k YXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEp IDogMCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgU0xSVV9SRUFEX0ZBSUxFRDoKIAkJCWlmIChl cnJubykKQEAgLTExMDcsMTIgKzExMjQsMTIgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0 bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJCQko ZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBy ZWFkIGZyb20gZmlsZSBcIiVzXCIgYXQgb2Zmc2V0ICVkOiAlbSIsCiAJCQkJCQkJCXBhdGgs IG9mZnNldCksCi0JCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPmVycmRldGFpbF9mb3JfaW9f ZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOworCQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5v cHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOwogCQkJ ZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBmcm9tIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZDogcmVhZCB0b28gZmV3IGJ5dGVzIiwK IAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJy ZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVl X2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0 YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX1dSSVRFX0ZBSUxFRDoKIAkJCWlm IChlcnJubykKQEAgLTExMjAsMjYgKzExMzcsMjYgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xy dUN0bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJ CQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJCSBlcnJtc2coIkNvdWxkIG5v dCB3cml0ZSB0byBmaWxlIFwiJXNcIiBhdCBvZmZzZXQgJWQ6ICVtIiwKIAkJCQkJCQkJcGF0 aCwgb2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9p b19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwt Pm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJ CQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJtc2coIkNvdWxkIG5vdCB3 cml0ZSB0byBmaWxlIFwiJXNcIiBhdCBvZmZzZXQgJWQ6IHdyb3RlIHRvbyBmZXcgYnl0ZXMu IiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkgb3Bh cXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX0ZTWU5DX0ZBSUxFRDoKIAkJ CWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZlbChFUlJPUiksCiAJCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVz XCI6ICVtIiwKIAkJCQkJCQlwYXRoKSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9k YXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEp IDogMCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgU0xSVV9DTE9TRV9GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVy cm1zZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCks Ci0JCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFx dWVfZGF0YSkgOiAwKSk7CisJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQlk ZWZhdWx0OgogCQkJLyogY2FuJ3QgZ2V0IGhlcmUsIHdlIHRydXN0ICovCkBAIC0xMTk5LDcg KzEyMTYsNyBAQCBTbHJ1UmVjZW50bHlVc2VkKFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xv dG5vKQogICogVGhlIGNvcnJlY3QgYmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwg YW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBzdGF0aWMgaW50Ci1TbHJ1U2VsZWN0 TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQorU2xydVNlbGVjdExSVVBhZ2Uo U2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKQogewogCVNscnVTaGFyZWQJc2hhcmVkID0g Y3RsLT5zaGFyZWQ7CiAKQEAgLTEyOTEsOCArMTMwOCw4IEBAIFNscnVTZWxlY3RMUlVQYWdl KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCiAJCQl7CiAJCQkJaWYgKHRoaXNfZGVsdGEg PiBiZXN0X3ZhbGlkX2RlbHRhIHx8CiAJCQkJCSh0aGlzX2RlbHRhID09IGJlc3RfdmFsaWRf ZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFnZVByZWNlZGVzKHRoaXNfcGFnZV9udW1iZXIsCi0J CQkJCQkJCQkgICBiZXN0X3ZhbGlkX3BhZ2VfbnVtYmVyKSkpCisJCQkJCSBjdGwtPm9wdGlv bnMuUGFnZVByZWNlZGVzKHRoaXNfcGFnZV9udW1iZXIsCisJCQkJCQkJCQkJCSAgIGJlc3Rf dmFsaWRfcGFnZV9udW1iZXIpKSkKIAkJCQl7CiAJCQkJCWJlc3R2YWxpZHNsb3QgPSBzbG90 bm87CiAJCQkJCWJlc3RfdmFsaWRfZGVsdGEgPSB0aGlzX2RlbHRhOwpAQCAtMTMwMyw4ICsx MzIwLDggQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykK IAkJCXsKIAkJCQlpZiAodGhpc19kZWx0YSA+IGJlc3RfaW52YWxpZF9kZWx0YSB8fAogCQkJ CQkodGhpc19kZWx0YSA9PSBiZXN0X2ludmFsaWRfZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFn ZVByZWNlZGVzKHRoaXNfcGFnZV9udW1iZXIsCi0JCQkJCQkJCQkgICBiZXN0X2ludmFsaWRf cGFnZV9udW1iZXIpKSkKKwkJCQkJIGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXModGhpc19w YWdlX251bWJlciwKKwkJCQkJCQkJCQkJICAgYmVzdF9pbnZhbGlkX3BhZ2VfbnVtYmVyKSkp CiAJCQkJewogCQkJCQliZXN0aW52YWxpZHNsb3QgPSBzbG90bm87CiAJCQkJCWJlc3RfaW52 YWxpZF9kZWx0YSA9IHRoaXNfZGVsdGE7CkBAIC0xMzUyLDcgKzEzNjksNyBAQCBTbHJ1U2Vs ZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQogICogZW50cmllcyBhcmUg b24gZGlzay4KICAqLwogdm9pZAotU2ltcGxlTHJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJv b2wgYWxsb3dfcmVkaXJ0aWVkKQorU2ltcGxlTHJ1V3JpdGVBbGwoU2xydURlc2MgKmN0bCwg Ym9vbCBhbGxvd19yZWRpcnRpZWQpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNo YXJlZDsKIAlTbHJ1V3JpdGVBbGxEYXRhIGZkYXRhOwpAQCAtMTQyMiw4ICsxNDM5LDggQEAg U2ltcGxlTHJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKQog CQlTbHJ1UmVwb3J0SU9FcnJvcihjdGwsIHBhZ2VubywgTlVMTCk7CiAKIAkvKiBFbnN1cmUg dGhhdCBkaXJlY3RvcnkgZW50cmllcyBmb3IgbmV3IGZpbGVzIGFyZSBvbiBkaXNrLiAqLwot CWlmIChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKLQkJZnN5bmNf Zm5hbWUoY3RsLT5EaXIsIHRydWUpOworCWlmIChjdGwtPm9wdGlvbnMuc3luY19oYW5kbGVy ICE9IFNZTkNfSEFORExFUl9OT05FKQorCQlmc3luY19mbmFtZShjdGwtPm9wdGlvbnMuRGly LCB0cnVlKTsKIH0KIAogLyoKQEAgLTE0MzgsNyArMTQ1NSw3IEBAIFNpbXBsZUxydVdyaXRl QWxsKFNscnVDdGwgY3RsLCBib29sIGFsbG93X3JlZGlydGllZCkKICAqIGFmdGVyIGl0IGhh cyBhY2NydWVkIGZyZXNobHktd3JpdHRlbiBkYXRhLgogICovCiB2b2lkCi1TaW1wbGVMcnVU cnVuY2F0ZShTbHJ1Q3RsIGN0bCwgaW50NjQgY3V0b2ZmUGFnZSkKK1NpbXBsZUxydVRydW5j YXRlKFNscnVEZXNjICpjdGwsIGludDY0IGN1dG9mZlBhZ2UpCiB7CiAJU2xydVNoYXJlZAlz aGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlwcmV2YmFuazsKQEAgLTE0NjAsMTIgKzE0 NzcsMTIgQEAgcmVzdGFydDoKIAkgKiBidWdzIGVsc2V3aGVyZSBpbiBTTFJVIGhhbmRsaW5n LCBzbyB3ZSBkb24ndCBjYXJlIGlmIHdlIHJlYWQgYSBzbGlnaHRseQogCSAqIG91dGRhdGVk IHZhbHVlOyB0aGVyZWZvcmUgd2UgZG9uJ3QgYWRkIGEgbWVtb3J5IGJhcnJpZXIuCiAJICov Ci0JaWYgKGN0bC0+UGFnZVByZWNlZGVzKHBnX2F0b21pY19yZWFkX3U2NCgmc2hhcmVkLT5s YXRlc3RfcGFnZV9udW1iZXIpLAotCQkJCQkJICBjdXRvZmZQYWdlKSkKKwlpZiAoY3RsLT5v cHRpb25zLlBhZ2VQcmVjZWRlcyhwZ19hdG9taWNfcmVhZF91NjQoJnNoYXJlZC0+bGF0ZXN0 X3BhZ2VfbnVtYmVyKSwKKwkJCQkJCQkJICBjdXRvZmZQYWdlKSkKIAl7CiAJCWVyZXBvcnQo TE9HLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCB0cnVuY2F0ZSBkaXJlY3RvcnkgXCIlc1wi OiBhcHBhcmVudCB3cmFwYXJvdW5kIiwKLQkJCQkJCWN0bC0+RGlyKSkpOworCQkJCQkJY3Rs LT5vcHRpb25zLkRpcikpKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTQ4OCw3ICsxNTA1LDcg QEAgcmVzdGFydDoKIAogCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNM UlVfUEFHRV9FTVBUWSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoIWN0bC0+UGFnZVByZWNlZGVz KHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSwgY3V0b2ZmUGFnZSkpCisJCWlmICghY3Rs LT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10sIGN1 dG9mZlBhZ2UpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTE1MzMsMTYgKzE1NTAsMTYg QEAgcmVzdGFydDoKICAqIHRoZXkgZWl0aGVyIGNhbid0IHlldCBjb250YWluIGFueXRoaW5n LCBvciBoYXZlIGFscmVhZHkgYmVlbiBjbGVhbmVkIG91dC4KICAqLwogc3RhdGljIHZvaWQK LVNscnVJbnRlcm5hbERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQor U2xydUludGVybmFsRGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubykK IHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAKIAkvKiBGb3JnZXQgYW55IGZzeW5jIHJl cXVlc3RzIHF1ZXVlZCBmb3IgdGhpcyBzZWdtZW50LiAqLwotCWlmIChjdGwtPnN5bmNfaGFu ZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKKwlpZiAoY3RsLT5vcHRpb25zLnN5bmNfaGFu ZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKIAl7CiAJCUZpbGVUYWcJCXRhZzsKIAotCQlJ TklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5jX2hhbmRsZXIsIHNlZ25vKTsKKwkJSU5J VF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5zeW5jX2hhbmRsZXIsIHNlZ25vKTsK IAkJUmVnaXN0ZXJTeW5jUmVxdWVzdCgmdGFnLCBTWU5DX0ZPUkdFVF9SRVFVRVNULCB0cnVl KTsKIAl9CiAKQEAgLTE1NTYsNyArMTU3Myw3IEBAIFNscnVJbnRlcm5hbERlbGV0ZVNlZ21l bnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQogICogRGVsZXRlIGFuIGluZGl2aWR1YWwg U0xSVSBzZWdtZW50LCBpZGVudGlmaWVkIGJ5IHRoZSBzZWdtZW50IG51bWJlci4KICAqLwog dm9pZAotU2xydURlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQorU2xy dURlbGV0ZVNlZ21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2Vnbm8pCiB7CiAJU2xydVNo YXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlwcmV2YmFuayA9IFNsb3RHZXRC YW5rTnVtYmVyKDApOwpAQCAtMTYzMywxOSArMTY1MCwxOSBAQCByZXN0YXJ0OgogICogZmly c3Q+PWN1dG9mZiAmJiBsYXN0Pj1jdXRvZmY6IG5vOyBldmVyeSBwYWdlIG9mIHRoaXMgc2Vn bWVudCBpcyB0b28geW91bmcKICAqLwogc3RhdGljIGJvb2wKLVNscnVNYXlEZWxldGVTZWdt ZW50KFNscnVDdGwgY3RsLCBpbnQ2NCBzZWdwYWdlLCBpbnQ2NCBjdXRvZmZQYWdlKQorU2xy dU1heURlbGV0ZVNlZ21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2VncGFnZSwgaW50NjQg Y3V0b2ZmUGFnZSkKIHsKIAlpbnQ2NAkJc2VnX2xhc3RfcGFnZSA9IHNlZ3BhZ2UgKyBTTFJV X1BBR0VTX1BFUl9TRUdNRU5UIC0gMTsKIAogCUFzc2VydChzZWdwYWdlICUgU0xSVV9QQUdF U19QRVJfU0VHTUVOVCA9PSAwKTsKIAotCXJldHVybiAoY3RsLT5QYWdlUHJlY2VkZXMoc2Vn cGFnZSwgY3V0b2ZmUGFnZSkgJiYKLQkJCWN0bC0+UGFnZVByZWNlZGVzKHNlZ19sYXN0X3Bh Z2UsIGN1dG9mZlBhZ2UpKTsKKwlyZXR1cm4gKGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMo c2VncGFnZSwgY3V0b2ZmUGFnZSkgJiYKKwkJCWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMo c2VnX2xhc3RfcGFnZSwgY3V0b2ZmUGFnZSkpOwogfQogCiAjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORwogc3RhdGljIHZvaWQKLVNscnVQYWdlUHJlY2VkZXNUZXN0T2Zmc2V0KFNscnVD dGwgY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQpCitTbHJ1UGFnZVByZWNlZGVz VGVzdE9mZnNldChTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQp CiB7CiAJVHJhbnNhY3Rpb25JZCBsaHMsCiAJCQkJcmhzOwpAQCAtMTY1NCw2ICsxNjcxLDkg QEAgU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoU2xydUN0bCBjdGwsIGludCBwZXJfcGFn ZSwgdWludDMyIG9mZnNldCkKIAlUcmFuc2FjdGlvbklkIG5ld2VzdFhhY3QsCiAJCQkJb2xk ZXN0WGFjdDsKIAorCS8qIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIFNscnUgaGFz IGJlZW4gaW5pdGlhbGl6ZWQgKi8KKwlBc3NlcnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRl cyk7CisKIAkvKgogCSAqIENvbXBhcmUgYW4gWElEIHBhaXIgaGF2aW5nIHVuZGVmaW5lZCBv cmRlciAoc2VlIFJGQyAxOTgyKSwgYSBwYWlyIGF0CiAJICogIm9wcG9zaXRlIGVuZHMiIG9m IHRoZSBYSUQgc3BhY2UuICBUcmFuc2FjdGlvbklkUHJlY2VkZXMoKSB0cmVhdHMgZWFjaApA QCAtMTY3MCwxOSArMTY5MCwxOSBAQCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1 Q3RsIGN0bCwgaW50IHBlcl9wYWdlLCB1aW50MzIgb2Zmc2V0KQogCUFzc2VydCghVHJhbnNh Y3Rpb25JZFByZWNlZGVzKHJocywgbGhzICsgMSkpOwogCUFzc2VydCghVHJhbnNhY3Rpb25J ZEZvbGxvd3NPckVxdWFscyhsaHMsIHJocykpOwogCUFzc2VydCghVHJhbnNhY3Rpb25JZEZv bGxvd3NPckVxdWFscyhyaHMsIGxocykpOwotCUFzc2VydCghY3RsLT5QYWdlUHJlY2VkZXMo bGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9wYWdlKSk7Ci0JQXNzZXJ0KCFjdGwtPlBhZ2VQ cmVjZWRlcyhsaHMgLyBwZXJfcGFnZSwgcmhzIC8gcGVyX3BhZ2UpKTsKLQlBc3NlcnQoIWN0 bC0+UGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCBsaHMgLyBwZXJfcGFnZSkpOwotCUFz c2VydCghY3RsLT5QYWdlUHJlY2VkZXMoKGxocyAtIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCBy aHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJf cGFnZSwgKGxocyAtIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwt PlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDIgKiBwZXJfcGFnZSkgLyBw ZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwg KGxocyAtIDEgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkKKwlBc3NlcnQoIWN0bC0+b3B0aW9u cy5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9wYWdlKSk7CisJQXNz ZXJ0KCFjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKGxocyAvIHBlcl9wYWdlLCByaHMgLyBw ZXJfcGFnZSkpOworCUFzc2VydCghY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBw ZXJfcGFnZSwgbGhzIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdl UHJlY2VkZXMoKGxocyAtIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkp OworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCAo bGhzIC0gMyAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9u cy5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIChsaHMgLSAyICogcGVyX3BhZ2UpIC8g cGVyX3BhZ2UpKTsKKwlBc3NlcnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBw ZXJfcGFnZSwgKGxocyAtIDEgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkKIAkJICAgfHwgKDFV IDw8IDMxKSAlIHBlcl9wYWdlICE9IDApOwkvKiBTZWUgQ29tbWl0VHNQYWdlUHJlY2VkZXMo KSAqLwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsgMSAqIHBlcl9wYWdlKSAv IHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkKKwlBc3NlcnQoY3RsLT5vcHRpb25zLlBhZ2VQ cmVjZWRlcygobGhzICsgMSAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFn ZSkKIAkJICAgfHwgKDFVIDw8IDMxKSAlIHBlcl9wYWdlICE9IDApOwotCUFzc2VydChjdGwt PlBhZ2VQcmVjZWRlcygobGhzICsgMiAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBw ZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsgMyAqIHBlcl9w YWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3RsLT5QYWdl UHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFnZSkp OworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKChsaHMgKyAyICogcGVyX3Bh Z2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9u cy5QYWdlUHJlY2VkZXMoKGxocyArIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSwgcmhzIC8g cGVyX3BhZ2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhzIC8g cGVyX3BhZ2UsIChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwogCiAJLyoKIAkgKiBH ZXROZXdUcmFuc2FjdGlvbklkKCkgaGFzIGFzc2lnbmVkIHRoZSBsYXN0IFhJRCBpdCBjYW4g c2FmZWx5IHVzZSwgYW5kCkBAIC0xNzI3LDcgKzE3NDcsNyBAQCBTbHJ1UGFnZVByZWNlZGVz VGVzdE9mZnNldChTbHJ1Q3RsIGN0bCwgaW50IHBlcl9wYWdlLCB1aW50MzIgb2Zmc2V0KQog ICogZG8gbm90IGFwcGx5IHRvIHRoZW0uKQogICovCiB2b2lkCi1TbHJ1UGFnZVByZWNlZGVz VW5pdFRlc3RzKFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UpCitTbHJ1UGFnZVByZWNlZGVz VW5pdFRlc3RzKFNscnVEZXNjICpjdGwsIGludCBwZXJfcGFnZSkKIHsKIAkvKiBUZXN0IGZp cnN0LCBtaWRkbGUgYW5kIGxhc3QgZW50cmllcyBvZiBhIHBhZ2UuICovCiAJU2xydVBhZ2VQ cmVjZWRlc1Rlc3RPZmZzZXQoY3RsLCBwZXJfcGFnZSwgMCk7CkBAIC0xNzQyLDcgKzE3NjIs NyBAQCBTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVDdGwgY3RsLCBpbnQgcGVyX3Bh Z2UpCiAgKgkJb25lIGNvbnRhaW5pbmcgdGhlIHBhZ2UgcGFzc2VkIGFzICJkYXRhIi4KICAq LwogYm9vbAotU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNscnVDdGwgY3RsLCBjaGFy ICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK1NscnVTY2FuRGlyQ2JSZXBvcnRQcmVzZW5j ZShTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKIAkJCQkJ CQl2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0gKihpbnQ2NCAqKSBkYXRh OwpAQCAtMTc1OCw3ICsxNzc4LDcgQEAgU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKICAqCQlUaGlzIGNh bGxiYWNrIGRlbGV0ZXMgc2VnbWVudHMgcHJpb3IgdG8gdGhlIG9uZSBwYXNzZWQgaW4gYXMg ImRhdGEiLgogICovCiBzdGF0aWMgYm9vbAotU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9mZihT bHJ1Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsCitTbHJ1U2NhbkRp ckNiRGVsZXRlQ3V0b2ZmKFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBz ZWdwYWdlLAogCQkJCQkJICB2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0g KihpbnQ2NCAqKSBkYXRhOwpAQCAtMTc3NCw3ICsxNzk0LDcgQEAgU2xydVNjYW5EaXJDYkRl bGV0ZUN1dG9mZihTbHJ1Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2Us CiAgKgkJVGhpcyBjYWxsYmFjayBkZWxldGVzIGFsbCBzZWdtZW50cy4KICAqLwogYm9vbAot U2xydVNjYW5EaXJDYkRlbGV0ZUFsbChTbHJ1Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGlu dDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCitTbHJ1U2NhbkRpckNiRGVsZXRlQWxsKFNscnVE ZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhKQog ewogCVNscnVJbnRlcm5hbERlbGV0ZVNlZ21lbnQoY3RsLCBzZWdwYWdlIC8gU0xSVV9QQUdF U19QRVJfU0VHTUVOVCk7CiAKQEAgLTE3ODgsOSArMTgwOCw5IEBAIFNscnVTY2FuRGlyQ2JE ZWxldGVBbGwoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2 b2lkICpkYXRhKQogICogU0xSVSBzZWdtZW50LgogICovCiBzdGF0aWMgaW5saW5lIGJvb2wK LVNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKFNscnVDdGwgY3RsLCBzaXplX3Qg bGVuKQorU2xydUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydURlc2MgKmN0bCwg c2l6ZV90IGxlbikKIHsKLQlpZiAoY3RsLT5sb25nX3NlZ21lbnRfbmFtZXMpCisJaWYgKGN0 bC0+b3B0aW9ucy5sb25nX3NlZ21lbnRfbmFtZXMpCiAJCXJldHVybiAobGVuID09IDE1KTsJ CS8qIHNlZSBTbHJ1RmlsZU5hbWUoKSAqLwogCWVsc2UKIApAQCAtMTgyMSw3ICsxODQxLDcg QEAgU2xydUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydUN0bCBjdGwsIHNpemVf dCBsZW4pCiAgKiBOb3RlIHRoYXQgbm8gbG9ja2luZyBpcyBhcHBsaWVkLgogICovCiBib29s Ci1TbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxs YmFjaywgdm9pZCAqZGF0YSkKK1NscnVTY2FuRGlyZWN0b3J5KFNscnVEZXNjICpjdGwsIFNs cnVTY2FuQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmRhdGEpCiB7CiAJYm9vbAkJcmV0dmFs ID0gZmFsc2U7CiAJRElSCQkgICAqY2xkaXI7CkBAIC0xODI5LDggKzE4NDksOCBAQCBTbHJ1 U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywg dm9pZCAqZGF0YSkKIAlpbnQ2NAkJc2Vnbm87CiAJaW50NjQJCXNlZ3BhZ2U7CiAKLQljbGRp ciA9IEFsbG9jYXRlRGlyKGN0bC0+RGlyKTsKLQl3aGlsZSAoKGNsZGUgPSBSZWFkRGlyKGNs ZGlyLCBjdGwtPkRpcikpICE9IE5VTEwpCisJY2xkaXIgPSBBbGxvY2F0ZURpcihjdGwtPm9w dGlvbnMuRGlyKTsKKwl3aGlsZSAoKGNsZGUgPSBSZWFkRGlyKGNsZGlyLCBjdGwtPm9wdGlv bnMuRGlyKSkgIT0gTlVMTCkKIAl7CiAJCXNpemVfdAkJbGVuOwogCkBAIC0xODQzLDcgKzE4 NjMsNyBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFj ayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAkJCXNlZ3BhZ2UgPSBzZWdubyAqIFNMUlVfUEFH RVNfUEVSX1NFR01FTlQ7CiAKIAkJCWVsb2coREVCVUcyLCAiU2xydVNjYW5EaXJlY3Rvcnkg aW52b2tpbmcgY2FsbGJhY2sgb24gJXMvJXMiLAotCQkJCSBjdGwtPkRpciwgY2xkZS0+ZF9u YW1lKTsKKwkJCQkgY3RsLT5vcHRpb25zLkRpciwgY2xkZS0+ZF9uYW1lKTsKIAkJCXJldHZh bCA9IGNhbGxiYWNrKGN0bCwgY2xkZS0+ZF9uYW1lLCBzZWdwYWdlLCBkYXRhKTsKIAkJCWlm IChyZXR2YWwpCiAJCQkJYnJlYWs7CkBAIC0xODYxLDcgKzE4ODEsNyBAQCBTbHJ1U2NhbkRp cmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAq ZGF0YSkKICAqIHBlcmZvcm1zIHRoZSBmc3luYy4KICAqLwogaW50Ci1TbHJ1U3luY0ZpbGVU YWcoU2xydUN0bCBjdGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpCitTbHJ1 U3luY0ZpbGVUYWcoU2xydURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAq cGF0aCkKIHsKIAlpbnQJCQlmZDsKIAlpbnQJCQlzYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKaW5kZXggYzZjZTcxZmM3MDMuLmI3OWU2NDhiODk5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKQEAgLTMzLDYgKzMz LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0 ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcG1nci5oIgogCkBAIC02NiwxNiArNjcsMjIgQEAgVHJhbnNhY3Rpb25JZFRvUGFnZShU cmFuc2FjdGlvbklkIHhpZCkKICNkZWZpbmUgVHJhbnNhY3Rpb25JZFRvRW50cnkoeGlkKSAo KHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkgU1VCVFJBTlNfWEFDVFNfUEVSX1BBR0UpCiAKIAor c3RhdGljIHZvaWQgU1VCVFJBTlNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2 b2lkIFNVQlRSQU5TU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBTdWJUcmFu c1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGludAlz dWJ0cmFuc19lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRh KTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgU1VCVFJBTlNTaG1lbUNhbGxiYWNrcyA9IHsK KwkucmVxdWVzdF9mbiA9IFNVQlRSQU5TU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU1VC VFJBTlNTaG1lbUluaXQsCit9OworCiAvKgogICogTGluayB0byBzaGFyZWQtbWVtb3J5IGRh dGEgc3RydWN0dXJlcyBmb3IgU1VCVFJBTlMgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0 bERhdGEgU3ViVHJhbnNDdGxEYXRhOwotCi0jZGVmaW5lIFN1YlRyYW5zQ3RsICAoJlN1YlRy YW5zQ3RsRGF0YSkKK3N0YXRpYyBTbHJ1RGVzYyBTdWJUcmFuc1NscnVEZXNjOwogCi0KLXN0 YXRpYyBib29sIFN1YlRyYW5zUGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdl Mik7Ci1zdGF0aWMgaW50CXN1YnRyYW5zX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qg dm9pZCAqb3BhcXVlX2RhdGEpOworI2RlZmluZSBTdWJUcmFuc0N0bCAgKCZTdWJUcmFuc1Ns cnVEZXNjKQogCiAKIC8qCkBAIC0yMDcsMTcgKzIxNCwxMyBAQCBTVUJUUkFOU1NobWVtQnVm ZmVycyh2b2lkKQogCXJldHVybiBNaW4oTWF4KDE2LCBzdWJ0cmFuc2FjdGlvbl9idWZmZXJz KSwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIH0KIAorCisKIC8qCi0gKiBJbml0aWFs aXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBTVUJUUkFOUworICogUmVnaXN0ZXIgc2hh cmVkIG1lbW9yeSBmb3IgU1VCVFJBTlMKICAqLwotU2l6ZQotU1VCVFJBTlNTaG1lbVNpemUo dm9pZCkKLXsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKFNVQlRSQU5TU2htZW1CdWZm ZXJzKCksIDApOwotfQotCi12b2lkCi1TVUJUUkFOU1NobWVtSW5pdCh2b2lkKQorc3RhdGlj IHZvaWQKK1NVQlRSQU5TU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRv LXR1bmluZyBpcyByZXF1ZXN0ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlm IChzdWJ0cmFuc2FjdGlvbl9idWZmZXJzID09IDApCkBAIC0yNDAsMTEgKzI0MywyNSBAQCBT VUJUUkFOU1NobWVtSW5pdCh2b2lkKQogCX0KIAlBc3NlcnQoc3VidHJhbnNhY3Rpb25fYnVm ZmVycyAhPSAwKTsKIAotCVN1YlRyYW5zQ3RsLT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1Bh Z2VQcmVjZWRlczsKLQlTdWJUcmFuc0N0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHN1 YnRyYW5zX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChTdWJUcmFu c0N0bCwgInN1YnRyYW5zYWN0aW9uIiwgU1VCVFJBTlNTaG1lbUJ1ZmZlcnMoKSwgMCwKLQkJ CQkgICJwZ19zdWJ0cmFucyIsIExXVFJBTkNIRV9TVUJUUkFOU19CVUZGRVIsCi0JCQkJICBM V1RSQU5DSEVfU1VCVFJBTlNfU0xSVSwgU1lOQ19IQU5ETEVSX05PTkUsIGZhbHNlKTsKKwlT aW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlN1YlRyYW5zU2xydURlc2MsCisJCQkJCSAubmFt ZSA9ICJzdWJ0cmFuc2FjdGlvbiIsCisJCQkJCSAuRGlyID0gInBnX3N1YnRyYW5zIiwKKwkJ CQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwKKworCQkJCQkgLm5zbG90cyA9IFNV QlRSQU5TU2htZW1CdWZmZXJzKCksCisKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5DX0hB TkRMRVJfTk9ORSwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRl cywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc3VidHJhbnNfZXJyZGV0YWls X2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hF X1NVQlRSQU5TX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVf U1VCVFJBTlNfU0xSVSwKKwkJKTsKK30KKworc3RhdGljIHZvaWQKK1NVQlRSQU5TU2htZW1J bml0KHZvaWQgKmFyZykKK3sKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5z Q3RsLCBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5j CmluZGV4IGU5MWE2MmZmNDJhLi5kYjZhOWE2NTYxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5j CkBAIC0xNzksNiArMTc5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29w cHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv ZHNhLmgiCkBAIC0zNDUsNiArMzQ2LDE1IEBAIHR5cGVkZWYgc3RydWN0IEFzeW5jUXVldWVD b250cm9sCiAKIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7 CiAKK3N0YXRpYyB2b2lkIEFzeW5jU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMg dm9pZCBBc3luY1NobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNr cyBBc3luY1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQXN5bmNTaG1lbVJl cXVlc3QsCisJLmluaXRfZm4gPSBBc3luY1NobWVtSW5pdCwKK307CisKKwogI2RlZmluZSBR VUVVRV9IRUFECQkJCQkoYXN5bmNRdWV1ZUNvbnRyb2wtPmhlYWQpCiAjZGVmaW5lIFFVRVVF X1RBSUwJCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+dGFpbCkKICNkZWZpbmUgUVVFVUVfU1RP UF9QQUdFCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+c3RvcFBhZ2UpCkBAIC0zNTksOSArMzY5 LDEzIEBAIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7CiAv KgogICogVGhlIFNMUlUgYnVmZmVyIGFyZWEgdGhyb3VnaCB3aGljaCB3ZSBhY2Nlc3MgdGhl IG5vdGlmaWNhdGlvbiBxdWV1ZQogICovCi1zdGF0aWMgU2xydUN0bERhdGEgTm90aWZ5Q3Rs RGF0YTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBhc3luY1F1ZXVlUGFnZVByZWNlZGVzKGludDY0 IHAsIGludDY0IHEpOworc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0YWlsRm9ySW9FcnJv cihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CisKK3N0YXRpYyBTbHJ1RGVzYyBOb3RpZnlT bHJ1RGVzYzsKIAotI2RlZmluZSBOb3RpZnlDdGwJCQkJCSgmTm90aWZ5Q3RsRGF0YSkKKwor I2RlZmluZSBOb3RpZnlDdGwJCQkJCSgmTm90aWZ5U2xydURlc2MpCiAjZGVmaW5lIFFVRVVF X1BBR0VTSVpFCQkJCUJMQ0tTWgogCiAjZGVmaW5lIFFVRVVFX0ZVTExfV0FSTl9JTlRFUlZB TAk1MDAwCS8qIHdhcm4gYXQgbW9zdCBvbmNlIGV2ZXJ5IDVzICovCkBAIC01NzAsOSArNTg0 LDcgQEAgYm9vbAkJVHJhY2Vfbm90aWZ5ID0gZmFsc2U7CiBpbnQJCQltYXhfbm90aWZ5X3F1 ZXVlX3BhZ2VzID0gMTA0ODU3NjsKIAogLyogbG9jYWwgZnVuY3Rpb24gcHJvdG90eXBlcyAq Lwotc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcihjb25zdCB2b2lk ICpvcGFxdWVfZGF0YSk7CiBzdGF0aWMgaW5saW5lIGludDY0IGFzeW5jUXVldWVQYWdlRGlm ZihpbnQ2NCBwLCBpbnQ2NCBxKTsKLXN0YXRpYyBpbmxpbmUgYm9vbCBhc3luY1F1ZXVlUGFn ZVByZWNlZGVzKGludDY0IHAsIGludDY0IHEpOwogc3RhdGljIGlubGluZSB2b2lkIEdsb2Jh bENoYW5uZWxLZXlJbml0KEdsb2JhbENoYW5uZWxLZXkgKmtleSwgT2lkIGRib2lkLAogCQkJ CQkJCQkJCWNvbnN0IGNoYXIgKmNoYW5uZWwpOwogc3RhdGljIGRzaGFzaF9oYXNoIGdsb2Jh bENoYW5uZWxUYWJsZUhhc2goY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qgc2l6ZSwKQEAgLTc4 MCw3OCArNzkyLDYzIEBAIGluaXRQZW5kaW5nTGlzdGVuQWN0aW9ucyh2b2lkKQogfQogCiAv KgotICogUmVwb3J0IHNwYWNlIG5lZWRlZCBmb3Igb3VyIHNoYXJlZCBtZW1vcnkgYXJlYQor ICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkgbmVlZHMKICAqLwotU2l6ZQotQXN5bmNT aG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitBc3luY1NobWVtUmVxdWVzdCh2b2lkICph cmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAotCS8qIFRoaXMgaGFkIGJldHRlciBtYXRjaCBBc3lu Y1NobWVtSW5pdCAqLwogCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcywgc2l6ZW9mKFF1 ZXVlQmFja2VuZFN0YXR1cykpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihB c3luY1F1ZXVlQ29udHJvbCwgYmFja2VuZCkpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IFNpbXBsZUxydVNobWVtU2l6ZShub3RpZnlfYnVmZmVycywgMCkpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJBc3luYyBRdWV1ZSBDb250cm9sIiwKKwkJCQkJICAgLnNpemUg PSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZhc3luY1F1ZXVlQ29udHJvbCwK KwkJKTsKIAotCXJldHVybiBzaXplOwotfQorCVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAm Tm90aWZ5U2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJub3RpZnkiLAorCQkJCQkgLkRpciA9 ICJwZ19ub3RpZnkiLAogCi0vKgotICogSW5pdGlhbGl6ZSBvdXIgc2hhcmVkIG1lbW9yeSBh cmVhCi0gKi8KLXZvaWQKLUFzeW5jU2htZW1Jbml0KHZvaWQpCi17Ci0JYm9vbAkJZm91bmQ7 Ci0JU2l6ZQkJc2l6ZTsKKwkvKiBsb25nIHNlZ21lbnQgbmFtZXMgYXJlIHVzZWQgaW4gb3Jk ZXIgdG8gYXZvaWQgd3JhcGFyb3VuZCAqLworCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9 IHRydWUsCiAKLQkvKgotCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEFzeW5jUXVldWVD b250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzaXplID0gbXVsX3NpemUoTWF4QmFja2VuZHMs IHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg b2Zmc2V0b2YoQXN5bmNRdWV1ZUNvbnRyb2wsIGJhY2tlbmQpKTsKKwkJCQkJIC5uc2xvdHMg PSBub3RpZnlfYnVmZmVycywKIAotCWFzeW5jUXVldWVDb250cm9sID0gKEFzeW5jUXVldWVD b250cm9sICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQXN5bmMgUXVldWUgQ29udHJvbCIsIHNp emUsICZmb3VuZCk7CisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX05PTkUs CisJCQkJCSAuUGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBhZ2VQcmVjZWRlcywKKwkJCQkJ IC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gYXN5bmNRdWV1ZUVycmRldGFpbEZvcklvRXJy b3IsCiAKLQlpZiAoIWZvdW5kKQorCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFO Q0hFX05PVElGWV9CVUZGRVIsCisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hF X05PVElGWV9TTFJVLAorCQkpOworfQorCitzdGF0aWMgdm9pZAorQXN5bmNTaG1lbUluaXQo dm9pZCAqYXJnKQoreworCVNFVF9RVUVVRV9QT1MoUVVFVUVfSEVBRCwgMCwgMCk7CisJU0VU X1FVRVVFX1BPUyhRVUVVRV9UQUlMLCAwLCAwKTsKKwlRVUVVRV9TVE9QX1BBR0UgPSAwOwor CVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwlhc3luY1F1 ZXVlQ29udHJvbC0+bGFzdFF1ZXVlRmlsbFdhcm4gPSAwOworCWFzeW5jUXVldWVDb250cm9s LT5nbG9iYWxDaGFubmVsVGFibGVEU0EgPSBEU0FfSEFORExFX0lOVkFMSUQ7CisJYXN5bmNR dWV1ZUNvbnRyb2wtPmdsb2JhbENoYW5uZWxUYWJsZURTSCA9IERTSEFTSF9IQU5ETEVfSU5W QUxJRDsKKwlmb3IgKGludCBpID0gMDsgaSA8IE1heEJhY2tlbmRzOyBpKyspCiAJewotCQkv KiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgaXQgKi8KLQkJU0VUX1FVRVVF X1BPUyhRVUVVRV9IRUFELCAwLCAwKTsKLQkJU0VUX1FVRVVFX1BPUyhRVUVVRV9UQUlMLCAw LCAwKTsKLQkJUVVFVUVfU1RPUF9QQUdFID0gMDsKLQkJUVVFVUVfRklSU1RfTElTVEVORVIg PSBJTlZBTElEX1BST0NfTlVNQkVSOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+bGFzdFF1ZXVl RmlsbFdhcm4gPSAwOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5lbFRhYmxl RFNBID0gRFNBX0hBTkRMRV9JTlZBTElEOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFs Q2hhbm5lbFRhYmxlRFNIID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCQlmb3IgKGludCBp ID0gMDsgaSA8IE1heEJhY2tlbmRzOyBpKyspCi0JCXsKLQkJCVFVRVVFX0JBQ0tFTkRfUElE KGkpID0gSW52YWxpZFBpZDsKLQkJCVFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlk T2lkOwotCQkJUVVFVUVfTkVYVF9MSVNURU5FUihpKSA9IElOVkFMSURfUFJPQ19OVU1CRVI7 Ci0JCQlTRVRfUVVFVUVfUE9TKFFVRVVFX0JBQ0tFTkRfUE9TKGkpLCAwLCAwKTsKLQkJCVFV RVVFX0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSBmYWxzZTsKLQkJCVFVRVVFX0JBQ0tF TkRfSVNfQURWQU5DSU5HKGkpID0gZmFsc2U7Ci0JCX0KKwkJUVVFVUVfQkFDS0VORF9QSUQo aSkgPSBJbnZhbGlkUGlkOworCQlRVUVVRV9CQUNLRU5EX0RCT0lEKGkpID0gSW52YWxpZE9p ZDsKKwkJUVVFVUVfTkVYVF9MSVNURU5FUihpKSA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJ CVNFVF9RVUVVRV9QT1MoUVVFVUVfQkFDS0VORF9QT1MoaSksIDAsIDApOworCQlRVUVVRV9C QUNLRU5EX1dBS0VVUF9QRU5ESU5HKGkpID0gZmFsc2U7CisJCVFVRVVFX0JBQ0tFTkRfSVNf QURWQU5DSU5HKGkpID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBTZXQgdXAgU0xSVSBtYW5h Z2VtZW50IG9mIHRoZSBwZ19ub3RpZnkgZGF0YS4gTm90ZSB0aGF0IGxvbmcgc2VnbWVudAot CSAqIG5hbWVzIGFyZSB1c2VkIGluIG9yZGVyIHRvIGF2b2lkIHdyYXBhcm91bmQuCisJICog RHVyaW5nIHN0YXJ0IG9yIHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkgZGlyZWN0 b3J5LgogCSAqLwotCU5vdGlmeUN0bC0+UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBhZ2VQ cmVjZWRlczsKLQlOb3RpZnlDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBhc3luY1F1 ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcjsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIm5v dGlmeSIsIG5vdGlmeV9idWZmZXJzLCAwLAotCQkJCSAgInBnX25vdGlmeSIsIExXVFJBTkNI RV9OT1RJRllfQlVGRkVSLCBMV1RSQU5DSEVfTk9USUZZX1NMUlUsCi0JCQkJICBTWU5DX0hB TkRMRVJfTk9ORSwgdHJ1ZSk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogRHVy aW5nIHN0YXJ0IG9yIHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkgZGlyZWN0b3J5 LgotCQkgKi8KLQkJKHZvaWQpIFNscnVTY2FuRGlyZWN0b3J5KE5vdGlmeUN0bCwgU2xydVNj YW5EaXJDYkRlbGV0ZUFsbCwgTlVMTCk7Ci0JfQorCSh2b2lkKSBTbHJ1U2NhbkRpcmVjdG9y eShOb3RpZnlDdGwsIFNscnVTY2FuRGlyQ2JEZWxldGVBbGwsIE5VTEwpOwogfQogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCA0ZjcwNzE1ODMwMy4uN2E4YzY5ZGU4MDIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTEwMSwxNiArMTAxLDExIEBAIENhbGN1bGF0 ZVNobWVtU2l6ZSh2b2lkKQogCS8qIGxlZ2FjeSBzdWJzeXN0ZW1zICovCiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9z aXplKHNpemUsIExvY2tNYW5hZ2VyU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShz aXplLCBQcmVkaWNhdGVMb2NrU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhM T0dTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dSZWNvdmVyeVNo bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ0xPR1NobWVtU2l6ZSgpKTsK LQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ29tbWl0VHNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFNVQlRSQU5TU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBUd29QaGFzZVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwg QmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg TXVsdGlYYWN0U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5k U3RhdHVzU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50 ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1l bVNpemUoKSk7CkBAIC0xMjMsNyArMTE4LDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQp CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIEJUcmVlU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBTeW5jU2NhblNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgQXN5bmNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN0YXRzU2ht ZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRDdXN0b21TaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50U2htZW1T aXplKCkpOwpAQCAtMjcwLDEwICsyNjQsNiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0 cyh2b2lkKQogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1lbUluaXQoKTsK IAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKLQlDTE9HU2htZW1Jbml0KCk7Ci0JQ29tbWl0 VHNTaG1lbUluaXQoKTsKLQlTVUJUUkFOU1NobWVtSW5pdCgpOwotCU11bHRpWGFjdFNobWVt SW5pdCgpOwogCUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQoKTsKIAogCS8qCkBAIC0yODEsMTEg KzI3MSw2IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJICovCiAJTG9j a01hbmFnZXJTaG1lbUluaXQoKTsKIAotCS8qCi0JICogU2V0IHVwIHByZWRpY2F0ZSBsb2Nr IG1hbmFnZXIKLQkgKi8KLQlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KCk7Ci0KIAkvKgogCSAq IFNldCB1cCBwcm9jZXNzIHRhYmxlCiAJICovCkBAIC0zMTMsNyArMjk4LDYgQEAgQ3JlYXRl T3JBdHRhY2hTaG1lbVN0cnVjdHModm9pZCkKIAkgKi8KIAlCVHJlZVNobWVtSW5pdCgpOwog CVN5bmNTY2FuU2htZW1Jbml0KCk7Ci0JQXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVt SW5pdCgpOwogCVdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCgpOwogCUluamVjdGlvblBvaW50 U2htZW1Jbml0KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCAyOWZmNjA2NWRk YS4uYmMxODZkNmVhMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMTM0LDYg KzEzNCw3IEBACiAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorI2luY2x1ZGUgImFjY2Vzcy9z bHJ1LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCkBAIC01NDksNiArNTUwLDkgQEAgSW5pdFNobWVtSW5kZXhF bnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJCWNhc2UgU0hNRU1fS0lORF9IQVNIOgog CQkJc2htZW1faGFzaF9pbml0KHN0cnVjdFB0ciwgcmVxdWVzdC0+b3B0aW9ucyk7CiAJCQli cmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX1NMUlU6CisJCQlzaG1lbV9zbHJ1X2luaXQoc3Ry dWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOwogCX0KIH0KIApAQCAtNjAy LDYgKzYwNiw5IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVl c3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CiAJCQlzaG1l bV9oYXNoX2F0dGFjaChpbmRleF9lbnRyeS0+bG9jYXRpb24sIHJlcXVlc3QtPm9wdGlvbnMp OwogCQkJYnJlYWs7CisJCWNhc2UgU0hNRU1fS0lORF9TTFJVOgorCQkJc2htZW1fc2xydV9h dHRhY2goaW5kZXhfZW50cnktPmxvY2F0aW9uLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJy ZWFrOwogCX0KIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jCmluZGV4IGFmMDMwNzFhNzFmLi45YzM4OWIyMzUwNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTUyLDEwICsxNTIsNiBAQAogLyoKICAqIElO VEVSRkFDRSBST1VUSU5FUwogICoKLSAqIGhvdXNla2VlcGluZyBmb3Igc2V0dGluZyB1cCBz aGFyZWQgbWVtb3J5IHByZWRpY2F0ZSBsb2NrIHN0cnVjdHVyZXMKLSAqCQlQcmVkaWNhdGVM b2NrU2htZW1Jbml0KHZvaWQpCi0gKgkJUHJlZGljYXRlTG9ja1NobWVtU2l6ZSh2b2lkKQot ICoKICAqIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGluZwogICoJCUdldFByZWRpY2F0ZUxvY2tT dGF0dXNEYXRhKHZvaWQpCiAgKgkJUGFnZUlzUHJlZGljYXRlTG9ja2VkKFJlbGF0aW9uIHJl bGF0aW9uLCBCbG9ja051bWJlciBibGtubykKQEAgLTIxMSw2ICsyMDcsOCBAQAogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1 ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBtZ3IuaCIKQEAgLTMyMiw5ICszMjAsMTIgQEAKIC8qCiAgKiBUaGUg U0xSVSBidWZmZXIgYXJlYSB0aHJvdWdoIHdoaWNoIHdlIGFjY2VzcyB0aGUgb2xkIHhpZHMu CiAgKi8KLXN0YXRpYyBTbHJ1Q3RsRGF0YSBTZXJpYWxTbHJ1Q3RsRGF0YTsKK3N0YXRpYyBi b29sIFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFn ZTIpOworc3RhdGljIGludAlzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2 b2lkICpvcGFxdWVfZGF0YSk7CiAKLSNkZWZpbmUgU2VyaWFsU2xydUN0bAkJCSgmU2VyaWFs U2xydUN0bERhdGEpCitzdGF0aWMgU2xydURlc2MgU2VyaWFsU2xydURlc2M7CisKKyNkZWZp bmUgU2VyaWFsU2xydUN0bAkJCSgmU2VyaWFsU2xydURlc2MpCiAKICNkZWZpbmUgU0VSSUFM X1BBR0VTSVpFCQkJQkxDS1NaCiAjZGVmaW5lIFNFUklBTF9FTlRSWVNJWkUJCQlzaXplb2Yo U2VyQ29tbWl0U2VxTm8pCkBAIC0zODQsNiArMzg1LDE3IEBAIGludAkJCW1heF9wcmVkaWNh dGVfbG9ja3NfcGVyX3BhZ2U7CS8qIGluIGd1Y190YWJsZXMuYyAqLwogICovCiBzdGF0aWMg UHJlZFhhY3RMaXN0IFByZWRYYWN0OwogCitzdGF0aWMgdm9pZCBQcmVkaWNhdGVMb2NrU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcmVkaWNhdGVMb2NrU2htZW1J bml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcmVkaWNhdGVMb2NrU2htZW1BdHRhY2go dm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUHJlZGljYXRlTG9ja1NobWVt Q2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUHJlZGljYXRlTG9ja1NobWVtUmVxdWVz dCwKKwkuaW5pdF9mbiA9IFByZWRpY2F0ZUxvY2tTaG1lbUluaXQsCisJLmF0dGFjaF9mbiA9 IFByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCwKK307CisKKwogLyoKICAqIFRoaXMgcHJvdmlk ZXMgYSBwb29sIG9mIFJXQ29uZmxpY3QgZGF0YSBlbGVtZW50cyB0byB1c2UgaW4gY29uZmxp Y3QgbGlzdHMKICAqIGJldHdlZW4gdHJhbnNhY3Rpb25zLgpAQCAtNDMxLDYgKzQ0Myw4IEBA IHN0YXRpYyBib29sIE15WGFjdERpZFdyaXRlID0gZmFsc2U7CiAgKi8KIHN0YXRpYyBTRVJJ QUxJWkFCTEVYQUNUICpTYXZlZFNlcmlhbGl6YWJsZVhhY3QgPSBJbnZhbGlkU2VyaWFsaXph YmxlWGFjdDsKIAorc3RhdGljIGludDY0IG1heF9zZXJpYWxpemFibGVfeGFjdHM7CisKIC8q IGxvY2FsIGZ1bmN0aW9ucyAqLwogCiBzdGF0aWMgU0VSSUFMSVpBQkxFWEFDVCAqQ3JlYXRl UHJlZFhhY3Qodm9pZCk7CkBAIC00NDIsMTMgKzQ1NiwxMiBAQCBzdGF0aWMgdm9pZCBTZXRQ b3NzaWJsZVVuc2FmZUNvbmZsaWN0KFNFUklBTElaQUJMRVhBQ1QgKnJvWGFjdCwgU0VSSUFM SVpBQkxFWEFDVAogc3RhdGljIHZvaWQgUmVsZWFzZVJXQ29uZmxpY3QoUldDb25mbGljdCBj b25mbGljdCk7CiBzdGF0aWMgdm9pZCBGbGFnU3hhY3RVbnNhZmUoU0VSSUFMSVpBQkxFWEFD VCAqc3hhY3QpOwogCi1zdGF0aWMgYm9vbCBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHko aW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0YXRpYyBpbnQJc2VyaWFsX2VycmRldGFp bF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwogc3RhdGljIHZvaWQg U2VyaWFsQWRkKFRyYW5zYWN0aW9uSWQgeGlkLCBTZXJDb21taXRTZXFObyBtaW5Db25mbGlj dENvbW1pdFNlcU5vKTsKIHN0YXRpYyBTZXJDb21taXRTZXFObyBTZXJpYWxHZXRNaW5Db25m bGljdENvbW1pdFNlcU5vKFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyB2b2lkIFNlcmlh bFNldEFjdGl2ZVNlclhtaW4oVHJhbnNhY3Rpb25JZCB4aWQpOwogCiBzdGF0aWMgdWludDMy IHByZWRpY2F0ZWxvY2tfaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSk7CisK IHN0YXRpYyB2b2lkIFN1bW1hcml6ZU9sZGVzdENvbW1pdHRlZFN4YWN0KHZvaWQpOwogc3Rh dGljIFNuYXBzaG90IEdldFNhZmVTbmFwc2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpOwog c3RhdGljIFNuYXBzaG90IEdldFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJbnQo U25hcHNob3Qgc25hcHNob3QsCkBAIC0xMTAwLDcxICsxMTEzLDUzIEBAIENoZWNrUG9pbnRQ cmVkaWNhdGUodm9pZCkKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqIFByZWRp Y2F0ZUxvY2tTaG1lbUluaXQgLS0gSW5pdGlhbGl6ZSB0aGUgcHJlZGljYXRlIGxvY2tpbmcg ZGF0YSBzdHJ1Y3R1cmVzLgotICoKLSAqIFRoaXMgaXMgY2FsbGVkIGZyb20gQ3JlYXRlU2hh cmVkTWVtb3J5QW5kU2VtYXBob3JlcygpLCB3aGljaCBzZWUgZm9yCi0gKiBtb3JlIGNvbW1l bnRzLiAgSW4gdGhlIG5vcm1hbCBwb3N0bWFzdGVyIGNhc2UsIHRoZSBzaGFyZWQgaGFzaCB0 YWJsZXMKLSAqIGFyZSBjcmVhdGVkIGhlcmUuICBCYWNrZW5kcyBpbmhlcml0IHRoZSBwb2lu dGVycwotICogdG8gdGhlIHNoYXJlZCB0YWJsZXMgdmlhIGZvcmsoKS4gIEluIHRoZSBFWEVD X0JBQ0tFTkQgY2FzZSwgZWFjaAotICogYmFja2VuZCByZS1leGVjdXRlcyB0aGlzIGNvZGUg dG8gb2J0YWluIHBvaW50ZXJzIHRvIHRoZSBhbHJlYWR5IGV4aXN0aW5nCi0gKiBzaGFyZWQg aGFzaCB0YWJsZXMuCisgKiBQcmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0IC0tIFJlZ2lzdGVy IHRoZSBwcmVkaWNhdGUgbG9ja2luZyBkYXRhIHN0cnVjdHVyZXMuCiAgKi8KLXZvaWQKLVBy ZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQcmVkaWNhdGVMb2Nr U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlIQVNIQ1RMCQlpbmZvOwogCWludDY0CQlt YXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0czsKIAlpbnQ2NAkJbWF4X3ByZWRpY2F0ZV9sb2Nr czsKLQlpbnQ2NAkJbWF4X3NlcmlhbGl6YWJsZV94YWN0czsKIAlpbnQ2NAkJbWF4X3J3X2Nv bmZsaWN0czsKLQlTaXplCQlyZXF1ZXN0U2l6ZTsKLQlib29sCQlmb3VuZDsKLQotI2lmbmRl ZiBFWEVDX0JBQ0tFTkQKLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyKTsKLSNlbmRpZgog CiAJLyoKLQkgKiBDb21wdXRlIHNpemUgb2YgcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2h0 YWJsZS4gTm90ZSB0aGVzZQotCSAqIGNhbGN1bGF0aW9ucyBtdXN0IGFncmVlIHdpdGggUHJl ZGljYXRlTG9ja1NobWVtU2l6ZSEKKwkgKiBIYXNoIHRhYmxlcyBhbmQgb3RoZXIgc3RydWN0 cyBhcmUgc2V0IHVwIGJ5IFNobWVtSW5pdFJlZ2lzdGVyZWQoKSAvCisJICogU2htZW1BdHRh Y2hSZWdpc3RlcmVkKCkgdmlhIHJlZ2lzdGVyZWQgZGVzY3JpcHRvcnMgaW4KKwkgKiBQcmVk aWNhdGVMb2NrU2htZW1SZWdpc3RlcigpLiAgSGVyZSB3ZSBkbyB0aGUgcmVtYWluaW5nIGlu aXRpYWxpemF0aW9uCisJICogdGhhdCBjYW4ndCBiZSBkb25lIGluIGEgY2FsbGJhY2suCiAJ ICovCiAJbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMgPSBOUFJFRElDQVRFTE9DS1RBUkdF VEVOVFMoKTsKIAogCS8qCi0JICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRF TE9DS1RBUkdFVCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMKKwkgKiBSZWdpc3RlciBoYXNoIHRh YmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VUIHN0cnVjdHMuICBUaGlzIHN0b3JlcwogCSAq IHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5r ZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcpOwotCWluZm8uZW50cnlz aXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwotCWluZm8ubnVtX3BhcnRpdGlv bnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0JUHJlZGljYXRlTG9ja1Rh cmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAot CQkJCQkJCQkJCQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cywKLQkJCQkJCQkJCQkJJmlu Zm8sCi0JCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCQlI QVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7Ci0KLQkvKiBQcmUtY2FsY3VsYXRl IHRoZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLwot CVNjcmF0Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2Rl KCZTY3JhdGNoVGFyZ2V0VGFnKTsKLQlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0 ZUxvY2tIYXNoUGFydGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7CisJU2htZW1S ZXF1ZXN0SGFzaCgubmFtZSA9ICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAorCQkJCQkg Lm5lbGVtcyA9IG1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzLAorCQkJCQkgLnB0ciA9ICZQ cmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNp emVvZihQUkVESUNBVEVMT0NLVEFSR0VUVEFHKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlz aXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpLAorCQkJCQkgLmhhc2hfaW5mby5u dW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlMsCisJCQkJCSAu aGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8 IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICogQWxsb2NhdGUgaGFzaCB0YWJs ZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyCiAJICogeGFj dC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9 IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQ UkVESUNBVEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hhc2g7Ci0JaW5m by5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7CiAKIAkv KiBBc3N1bWUgYW4gYXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJnZXQgKi8KIAltYXhfcHJl ZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMgKiAyOwogCi0JUHJl ZGljYXRlTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLIGhhc2giLAot CQkJCQkJCQkJICBtYXhfcHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJICAmaW5mbywKLQkJ CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8Ci0JCQkJCQkJCQkgIEhBU0hf UEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1l ID0gIlBSRURJQ0FURUxPQ0sgaGFzaCIsCisJCQkJCSAubmVsZW1zID0gbWF4X3ByZWRpY2F0 ZV9sb2NrcywKKwkJCQkJIC5wdHIgPSAmUHJlZGljYXRlTG9ja0hhc2gsCisJCQkJCSAuaGFz aF9pbmZvLmtleXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBRyksCisJCQkJCSAuaGFz aF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLKSwKKwkJCQkJIC5oYXNo X2luZm8uaGFzaCA9IHByZWRpY2F0ZWxvY2tfaGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ubnVt X3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TLAorCQkJCQkgLmhh c2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9QQVJUSVRJT04g fCBIQVNIX0ZJWEVEX1NJWkUsCisJCSk7CiAKIAkvKgogCSAqIENvbXB1dGUgc2l6ZSBmb3Ig c2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uIGhhc2h0YWJsZS4gTm90ZSB0aGVzZQpAQCAtMTE3 NywyOSArMTE3MiwyNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJbWF4X3Nl cmlhbGl6YWJsZV94YWN0cyA9IChNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0cykg KiAxMDsKIAogCS8qCi0JICogQWxsb2NhdGUgYSBsaXN0IHRvIGhvbGQgaW5mb3JtYXRpb24g b24gdHJhbnNhY3Rpb25zIHBhcnRpY2lwYXRpbmcgaW4KKwkgKiBSZWdpc3RlciBhIGxpc3Qg dG8gaG9sZCBpbmZvcm1hdGlvbiBvbiB0cmFuc2FjdGlvbnMgcGFydGljaXBhdGluZyBpbgog CSAqIHByZWRpY2F0ZSBsb2NraW5nLgogCSAqLwotCXJlcXVlc3RTaXplID0gYWRkX3NpemUo UHJlZFhhY3RMaXN0RGF0YVNpemUsCi0JCQkJCQkgICAobXVsX3NpemUoKFNpemUpIG1heF9z ZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1Qp KSkpOwotCVByZWRYYWN0ID0gU2htZW1Jbml0U3RydWN0KCJQcmVkWGFjdExpc3QiLAotCQkJ CQkJCSAgIHJlcXVlc3RTaXplLAotCQkJCQkJCSAgICZmb3VuZCk7Ci0JQXNzZXJ0KGZvdW5k ID09IElzVW5kZXJQb3N0bWFzdGVyKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAi UHJlZFhhY3RMaXN0IiwKKwkJCQkJICAgLnNpemUgPSBhZGRfc2l6ZShQcmVkWGFjdExpc3RE YXRhU2l6ZSwKKwkJCQkJCQkJCQkobXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxpemFibGVf eGFjdHMsCisJCQkJCQkJCQkJCQkgIHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSkpKSwKKwkJ CQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUHJlZFhhY3QsCisJCSk7CiAKIAkvKgotCSAqIEFs bG9jYXRlIGhhc2ggdGFibGUgZm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBz dG9yZXMgcGVyLXhpZAorCSAqIFJlZ2lzdGVyIGhhc2ggdGFibGUgZm9yIFNFUklBTElaQUJM RVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAogCSAqIGluZm9ybWF0aW9uIGZv ciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgYWNjZXNzZWQgZGF0YS4K IAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEVEFHKTsKLQlp bmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0JU2VyaWFsaXph YmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKLQkJ CQkJCQkJCQltYXhfc2VyaWFsaXphYmxlX3hhY3RzLAotCQkJCQkJCQkJCSZpbmZvLAotCQkJ CQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCUhBU0hfRklYRURf U0laRSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJTRVJJQUxJWkFCTEVYSUQgaGFz aCIsCisJCQkJCSAubmVsZW1zID0gbWF4X3NlcmlhbGl6YWJsZV94YWN0cywKKwkJCQkJIC5w dHIgPSAmU2VyaWFsaXphYmxlWGlkSGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9 IHNpemVvZihTRVJJQUxJWkFCTEVYSURUQUcpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNp emUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEKSwKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJ ICogQWxsb2NhdGUgc3BhY2UgZm9yIHRyYWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBh dHRhY2hlZCB0byB0aGUKQEAgLTEyMTQsNTggKzEyMDcsNTAgQEAgUHJlZGljYXRlTG9ja1No bWVtSW5pdCh2b2lkKQogCSAqLwogCW1heF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXph YmxlX3hhY3RzICogNTsKIAotCXJlcXVlc3RTaXplID0gUldDb25mbGljdFBvb2xIZWFkZXJE YXRhU2l6ZSArCi0JCW11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxpY3RzLAotCQkJCSBS V0NvbmZsaWN0RGF0YVNpemUpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJSV0Nv bmZsaWN0UG9vbCIsCisJCQkJCSAgIC5zaXplID0gUldDb25mbGljdFBvb2xIZWFkZXJEYXRh U2l6ZSArIG11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxpY3RzLAorCQkJCQkJCQkJCQkJ CQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZSV0NvbmZsaWN0UG9vbCwKKwkJKTsKIAotCVJXQ29uZmxpY3RQb29sID0gU2htZW1Jbml0 U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgcmVxdWVzdFNpemUsCi0JCQkJ CQkJCQkgJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwot Ci0JLyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0 IG9mIGZpbmlzaGVkIHNlcmlhbGl6YWJsZQotCSAqIHRyYW5zYWN0aW9ucy4KLQkgKi8KLQlG aW5pc2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9ucyA9IChkbGlzdF9oZWFkICopCi0JCVNo bWVtSW5pdFN0cnVjdCgiRmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMiLAotCQkJ CQkJc2l6ZW9mKGRsaXN0X2hlYWQpLAotCQkJCQkJJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQg PT0gSXNVbmRlclBvc3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJG aW5pc2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9ucyIsCisJCQkJCSAgIC5zaXplID0gc2l6 ZW9mKGRsaXN0X2hlYWQpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZGaW5pc2hlZFNl cmlhbGl6YWJsZVRyYW5zYWN0aW9ucywKKwkJKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSB0 aGUgU0xSVSBzdG9yYWdlIGZvciBvbGQgY29tbWl0dGVkIHNlcmlhbGl6YWJsZQogCSAqIHRy YW5zYWN0aW9ucy4KIAkgKi8KLQlTZXJpYWxTbHJ1Q3RsLT5QYWdlUHJlY2VkZXMgPSBTZXJp YWxQYWdlUHJlY2VkZXNMb2dpY2FsbHk7Ci0JU2VyaWFsU2xydUN0bC0+ZXJyZGV0YWlsX2Zv cl9pb19lcnJvciA9IHNlcmlhbF9lcnJkZXRhaWxfZm9yX2lvX2Vycm9yOwotCVNpbXBsZUxy dUluaXQoU2VyaWFsU2xydUN0bCwgInNlcmlhbGl6YWJsZSIsCi0JCQkJICBzZXJpYWxpemFi bGVfYnVmZmVycywgMCwgInBnX3NlcmlhbCIsCi0JCQkJICBMV1RSQU5DSEVfU0VSSUFMX0JV RkZFUiwgTFdUUkFOQ0hFX1NFUklBTF9TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX05PTkUs IGZhbHNlKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlNlcmlhbFNscnVEZXNjLAor CQkJCQkgLm5hbWUgPSAic2VyaWFsaXphYmxlIiwKKwkJCQkJIC5EaXIgPSAicGdfc2VyaWFs IiwKKwkJCQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwKKworCQkJCQkgLm5zbG90 cyA9IHNlcmlhbGl6YWJsZV9idWZmZXJzLAorCisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lO Q19IQU5ETEVSX05PTkUsCisJCQkJCSAuUGFnZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNl ZGVzTG9naWNhbGx5LAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxf ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0g TFdUUkFOQ0hFX1NFUklBTF9CVUZGRVIsCisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdU UkFOQ0hFX1NFUklBTF9TTFJVLAorCQkpOwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcK IAlTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKICNlbmRpZgotCVNs cnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQ RVJQQUdFKTsKIAotCS8qCi0JICogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29u dHJvbCBzdHJ1Y3R1cmUuCi0JICovCi0Jc2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9s KQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlhbENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlh bENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3Rt YXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJTZXJpYWxDb250cm9sRGF0 YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwKKwkJCQkJ ICAgLnB0ciA9ICh2b2lkICoqKSAmc2VyaWFsQ29udHJvbCwKKwkJKTsKK30KIAotCS8qCi0J ICogSWYgd2UganVzdCBhdHRhY2hlZCB0byBleGlzdGluZyBzaGFyZWQgbWVtb3J5IChFWEVD X0JBQ0tFTkQpLCB3ZSdyZSBhbGwKLQkgKiBkb25lLiAgT3RoZXJ3aXNlLCBkdXJpbmcgcG9z dG1hc3RlciBzdGFydHVwIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSB0aGUKLQkgKiBzaGFyZWQg bWVtb3J5LgotCSAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCS8qIFRoaXMg bmV2ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JCU9sZENv bW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwotCQlyZXR1cm47 Ci0JfQorc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCAqYXJnKQor eworCWludAkJCW1heF9yd19jb25mbGljdHM7CisJYm9vbAkJZm91bmQ7CiAKIAkvKgogCSAq IFJlc2VydmUgYSBkdW1teSBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0IHRv IG1ha2Ugc3VyZSB0aGVyZSdzCkBAIC0xMjc3LDcgKzEyNjIsNiBAQCBQcmVkaWNhdGVMb2Nr U2htZW1Jbml0KHZvaWQpCiAJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0 KCFmb3VuZCk7CiAKLQkvKiBJbml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KIAlkbGlzdF9p bml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7CiAJZGxpc3RfaW5pdCgmUHJlZFhhY3Qt PmFjdGl2ZUxpc3QpOwogCVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKQEAgLTEzMTksNiArMTMwMyw5IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCkKIAlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7 CiAJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldDb25mbGljdCkgKChjaGFyICopIFJX Q29uZmxpY3RQb29sICsKIAkJCQkJCQkJCQkJUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6 ZSk7CisKKwltYXhfcndfY29uZmxpY3RzID0gbWF4X3NlcmlhbGl6YWJsZV94YWN0cyAqIDU7 CisKIAkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4gKi8K IAlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yd19jb25mbGljdHM7IGkrKykKIAl7CkBAIC0x MzM1LDU3ICsxMzIyLDI4IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAlzZXJp YWxDb250cm9sLT5oZWFkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJc2VyaWFsQ29u dHJvbC0+dGFpbFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCUxXTG9ja1JlbGVhc2Uo U2VyaWFsQ29udHJvbExvY2spOwotfQotCi0vKgotICogRXN0aW1hdGUgc2hhcmVkLW1lbW9y eSBzcGFjZSB1c2VkIGZvciBwcmVkaWNhdGUgbG9jayB0YWJsZQotICovCi1TaXplCi1QcmVk aWNhdGVMb2NrU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JaW50NjQJ CW1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzOwotCWludDY0CQltYXhfcHJlZGljYXRlX2xv Y2tzOwotCWludDY0CQltYXhfc2VyaWFsaXphYmxlX3hhY3RzOwotCWludDY0CQltYXhfcndf Y29uZmxpY3RzOwotCi0JLyogcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2ggdGFibGUgKi8K LQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cyA9IE5QUkVESUNBVEVMT0NLVEFSR0VURU5U UygpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3By ZWRpY2F0ZV9sb2NrX3RhcmdldHMsCi0JCQkJCQkJCQkJCSBzaXplb2YoUFJFRElDQVRFTE9D S1RBUkdFVCkpKTsKLQotCS8qIHByZWRpY2F0ZSBsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhf cHJlZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMgKiAyOwotCXNp emUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3ByZWRpY2F0ZV9s b2NrcywKLQkJCQkJCQkJCQkJIHNpemVvZihQUkVESUNBVEVMT0NLKSkpOwotCi0JLyogdHJh bnNhY3Rpb24gbGlzdCAqLwotCW1heF9zZXJpYWxpemFibGVfeGFjdHMgPSAoTWF4QmFja2Vu ZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpICogMTA7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IFByZWRYYWN0TGlzdERhdGFTaXplKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3Np emUoKFNpemUpIG1heF9zZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCSAgIHNpemVvZihT RVJJQUxJWkFCTEVYQUNUKSkpOwogCi0JLyogdHJhbnNhY3Rpb24geGlkIHRhYmxlICovCi0J c2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZShtYXhfc2VyaWFsaXph YmxlX3hhY3RzLAotCQkJCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhJRCkpKTsKKwkv KiBUaGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLwor CU9sZENvbW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwogCi0J LyogcnctY29uZmxpY3QgcG9vbCAqLwotCW1heF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFs aXphYmxlX3hhY3RzICogNTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUldDb25mbGljdFBv b2xIZWFkZXJEYXRhU2l6ZSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKChT aXplKSBtYXhfcndfY29uZmxpY3RzLAotCQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUp KTsKKwkvKiBQcmUtY2FsY3VsYXRlIHRoZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0 aGUgc2NyYXRjaCBlbnRyeSAqLworCVNjcmF0Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRl TG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3JhdGNoVGFyZ2V0VGFnKTsKKwlTY3JhdGNoUGFy dGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tIYXNoUGFydGl0aW9uTG9jayhTY3JhdGNoVGFy Z2V0VGFnSGFzaCk7CiAKLQkvKiBIZWFkIGZvciBsaXN0IG9mIGZpbmlzaGVkIHNlcmlhbGl6 YWJsZSB0cmFuc2FjdGlvbnMuICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihk bGlzdF9oZWFkKSk7CisJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTZXJpYWxTbHJ1Q3Rs LCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOworfQogCi0JLyogU2hhcmVkIG1lbW9yeSBzdHJ1 Y3R1cmVzIGZvciBTTFJVIHRyYWNraW5nIG9mIG9sZCBjb21taXR0ZWQgeGlkcy4gKi8KLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSk7Ci0Jc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShzZXJpYWxpemFibGVfYnVm ZmVycywgMCkpOworc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCh2b2lk ICphcmcpCit7CisJLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBzbyBsZXQncyBrZWVwIGEgbG9j YWwgY29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0 ZWRTeGFjdDsKIAotCXJldHVybiBzaXplOworCS8qIFByZS1jYWxjdWxhdGUgdGhlIGhhc2gg YW5kIHBhcnRpdGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCisJU2NyYXRjaFRh cmdldFRhZ0hhc2ggPSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUoJlNjcmF0Y2hU YXJnZXRUYWcpOworCVNjcmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRlTG9ja0hhc2hQ YXJ0aXRpb25Mb2NrKFNjcmF0Y2hUYXJnZXRUYWdIYXNoKTsKIH0KIAotCiAvKgogICogQ29t cHV0ZSB0aGUgaGFzaCBjb2RlIGFzc29jaWF0ZWQgd2l0aCBhIFBSRURJQ0FURUxPQ0tUQUcu CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3Ns cnUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zbHJ1LmMKaW5kZXgg MjE5MGYzODhlYWUuLmY0ZGZlODY5N2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfc2xydS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9zbHJ1LmMKQEAgLTExOSw2ICsxMTksNyBAQCBwZ3N0YXRfZ2V0X3NscnVf aW5kZXgoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpbnQJCQlpOwogCisJQXNzZXJ0KG5hbWUp OwogCWZvciAoaSA9IDA7IGkgPCBTTFJVX05VTV9FTEVNRU5UUzsgaSsrKQogCXsKIAkJaWYg KHN0cmNtcChzbHJ1X25hbWVzW2ldLCBuYW1lKSA9PSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2Nsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKaW5kZXgg YTFjZmVkNWY0M2MuLjc4OTQ5OThjNzYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvY2xvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKQEAgLTQwLDggKzQw LDYgQEAgZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZFNldFRyZWVTdGF0dXMoVHJhbnNhY3Rp b25JZCB4aWQsIGludCBuc3VieGlkcywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnN1 YnhpZHMsIFhpZFN0YXR1cyBzdGF0dXMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiBYaWRT dGF0dXMgVHJhbnNhY3Rpb25JZEdldFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciAqbHNuKTsKIAotZXh0ZXJuIFNpemUgQ0xPR1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVy biB2b2lkIENMT0dTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBDTE9H KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cENMT0codm9pZCk7CiBleHRlcm4gdm9pZCBU cmltQ0xPRyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRf dHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaAppbmRleCA0OWVlMjFjZDVk Mi4uODI1Y2NkYTkwZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRf dHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvY29tbWl0X3RzLmgKQEAgLTI3LDggKzI3 LDYgQEAgZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEdldENvbW1pdFRzRGF0YShUcmFuc2Fj dGlvbklkIHhpZCwKIGV4dGVybiBUcmFuc2FjdGlvbklkIEdldExhdGVzdENvbW1pdFRzRGF0 YShUaW1lc3RhbXBUeiAqdHMsCiAJCQkJCQkJCQkJICAgUmVwbE9yaWdpbklkICpub2RlaWQp OwogCi1leHRlcm4gU2l6ZSBDb21taXRUc1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lk IENvbW1pdFRzU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwQ29tbWl0 VHModm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwQ29tbWl0VHModm9pZCk7CiBleHRlcm4g dm9pZCBDb21taXRUc1BhcmFtZXRlckNoYW5nZShib29sIG5ld3ZhbHVlLCBib29sIG9sZHZh bHVlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCAyYWU4YjU3MWRjYy4uNmJlNTI5 OWFiNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTEyMSw4ICsxMjEsNiBAQCBl eHRlcm4gdm9pZCBBdEVPWGFjdF9NdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBBdFBy ZXBhcmVfTXVsdGlYYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfTXVsdGlY YWN0KEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpOwogCi1leHRlcm4gU2l6ZSBNdWx0aVhhY3RT aG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCk7 CiBleHRlcm4gdm9pZCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBT dGFydHVwTXVsdGlYYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgVHJpbU11bHRpWGFjdCh2b2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3Mvc2xydS5oCmluZGV4IGY5NjZkMGQ5ZmU3Li4zNmE3NTE0ZDdhMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3Mvc2xydS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0u aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3 bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3N5bmMuaCIKIAogLyoKQEAgLTEwNiwyMyArMTA3LDI4IEBAIHR5cGVkZWYgc3RydWN0IFNs cnVTaGFyZWREYXRhCiAKIHR5cGVkZWYgU2xydVNoYXJlZERhdGEgKlNscnVTaGFyZWQ7CiAK LS8qCi0gKiBTbHJ1Q3RsRGF0YSBpcyBhbiB1bnNoYXJlZCBzdHJ1Y3R1cmUgdGhhdCBwb2lu dHMgdG8gdGhlIGFjdGl2ZSBpbmZvcm1hdGlvbgotICogaW4gc2hhcmVkIG1lbW9yeS4KLSAq LwotdHlwZWRlZiBzdHJ1Y3QgU2xydUN0bERhdGEKK3R5cGVkZWYgc3RydWN0IFNscnVEZXNj IFNscnVEZXNjOworCit0eXBlZGVmIHN0cnVjdCBTbHJ1T3B0cwogewotCVNscnVTaGFyZWQJ c2hhcmVkOworCVNobWVtU3RydWN0T3B0cyBiYXNlOwogCi0JLyogTnVtYmVyIG9mIGJhbmtz IGluIHRoaXMgU0xSVS4gKi8KLQl1aW50MTYJCW5iYW5rczsKKwkvKgorCSAqIG5hbWUgb2Yg U0xSVS4gIChUaGlzIGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQorCSAqLwor CWNvbnN0IGNoYXIgKm5hbWU7CiAKIAkvKgotCSAqIElmIHRydWUsIHVzZSBsb25nIHNlZ21l bnQgZmlsZSBuYW1lcy4gIE90aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFtZXMuCi0JICoK LQkgKiBGb3IgZGV0YWlscyBhYm91dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2VlIFNscnVG aWxlTmFtZSgpLgorCSAqIFBvaW50ZXIgdG8gYSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZv ciB0aGUgU0xSVS4gIEl0IGlzIGluaXRpYWxpemVkIGluCisJICogd2hlbiB0aGUgU0xSVSBp cyBpbml0aWFsaXplZCBvciBhdHRhY2hlZCB0by4KIAkgKi8KLQlib29sCQlsb25nX3NlZ21l bnRfbmFtZXM7CisJU2xydURlc2MgICAqZGVzYzsKKworCS8qIG51bWJlciBvZiBwYWdlIHNs b3RzIHRvIHVzZS4gKi8KKwlpbnQJCQluc2xvdHM7CisKKwkvKiBudW1iZXIgb2YgTFNOIGdy b3VwcyBwZXIgcGFnZSAoc2V0IHRvIHplcm8gaWYgbm90IHJlbGV2YW50KS4gKi8KKwlpbnQJ CQlubHNuczsKIAogCS8qCiAJICogV2hpY2ggc3luYyBoYW5kbGVyIGZ1bmN0aW9uIHRvIHVz ZSB3aGVuIGhhbmRpbmcgc3luYyByZXF1ZXN0cyBvdmVyIHRvCkBAIC0xMzAsNiArMTM2LDE5 IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiAJICovCiAJU3luY1JlcXVlc3RIYW5k bGVyIHN5bmNfaGFuZGxlcjsKIAorCS8qCisJICogUEdEQVRBLXJlbGF0aXZlIHN1YmRpcmVj dG9yeSB0aGF0IHdpbGwgY29udGFpbiB0aGUgZmlsZXMuCisJICovCisJY29uc3QgY2hhciAq RGlyOworCisJLyoKKwkgKiBJZiB0cnVlLCB1c2UgbG9uZyBzZWdtZW50IGZpbGUgbmFtZXMu ICBPdGhlcndpc2UsIHVzZSBzaG9ydCBmaWxlIG5hbWVzLgorCSAqCisJICogRm9yIGRldGFp bHMgYWJvdXQgdGhlIGZpbGUgbmFtZSBmb3JtYXQsIHNlZSBTbHJ1RmlsZU5hbWUoKS4KKwkg Ki8KKwlib29sCQlsb25nX3NlZ21lbnRfbmFtZXM7CisKKwogCS8qCiAJICogRGVjaWRlIHdo ZXRoZXIgYSBwYWdlIGlzICJvbGRlciIgZm9yIHRydW5jYXRpb24gYW5kIGFzIGEgaGludCBm b3IKIAkgKiBldmljdGluZyBwYWdlcyBpbiBMUlUgb3JkZXIuICBSZXR1cm4gdHJ1ZSBpZiBl dmVyeSBlbnRyeSBvZiB0aGUgZmlyc3QKQEAgLTE1MywxMyArMTcyLDI2IEBAIHR5cGVkZWYg c3RydWN0IFNscnVDdGxEYXRhCiAJaW50CQkJKCplcnJkZXRhaWxfZm9yX2lvX2Vycm9yKSAo Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwogCiAJLyoKLQkgKiBEaXIgaXMgc2V0IGR1cmlu ZyBTaW1wbGVMcnVJbml0IGFuZCBkb2VzIG5vdCBjaGFuZ2UgdGhlcmVhZnRlci4gU2luY2UK LQkgKiBpdCdzIGFsd2F5cyB0aGUgc2FtZSwgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGluIHNo YXJlZCBtZW1vcnkuCisJICogVHJhbmNoZSBJRHMgdG8gdXNlIGZvciB0aGUgU0xSVSdzIHBl ci1idWZmZXIgYW5kIHBlci1iYW5rIExXTG9ja3MuICBJZgorCSAqIHRoZXNlIGFyZSBsZWZ0 IGFzIHplcm9zLCBuZXcgdHJhbmNoZXMgd2lsbCBiZSBhc3NpZ25lZCBkeW5hbWljYWxseS4K IAkgKi8KLQljaGFyCQlEaXJbNjRdOwotfSBTbHJ1Q3RsRGF0YTsKKwlpbnQJCQlidWZmZXJf dHJhbmNoZV9pZDsKKwlpbnQJCQliYW5rX3RyYW5jaGVfaWQ7Cit9IFNscnVPcHRzOwogCi10 eXBlZGVmIFNscnVDdGxEYXRhICpTbHJ1Q3RsOworLyoKKyAqIFNscnVEZXNjIGlzIGFuIHVu c2hhcmVkIHN0cnVjdHVyZSB0aGF0IHBvaW50cyB0byB0aGUgYWN0aXZlIGluZm9ybWF0aW9u CisgKiBpbiBzaGFyZWQgbWVtb3J5LgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1RGVzYwor eworCVNscnVPcHRzCW9wdGlvbnM7CisKKwlTbHJ1U2hhcmVkCXNoYXJlZDsKKworCS8qIE51 bWJlciBvZiBiYW5rcyBpbiB0aGlzIFNMUlUuICovCisJdWludDE2CQluYmFua3M7Cit9IFNs cnVEZXNjOwogCiAvKgogICogR2V0IHRoZSBTTFJVIGJhbmsgbG9jayBmb3IgZ2l2ZW4gU2xy dUN0bCBhbmQgdGhlIHBhZ2Vuby4KQEAgLTE2OCw0OCArMjAwLDUyIEBAIHR5cGVkZWYgU2xy dUN0bERhdGEgKlNscnVDdGw7CiAgKiByZXNwZWN0aXZlIGJhbmsuCiAgKi8KIHN0YXRpYyBp bmxpbmUgTFdMb2NrICoKLVNpbXBsZUxydUdldEJhbmtMb2NrKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8pCitTaW1wbGVMcnVHZXRCYW5rTG9jayhTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBw YWdlbm8pCiB7CiAJaW50CQkJYmFua25vOwogCisJQXNzZXJ0KGN0bC0+bmJhbmtzICE9IDAp OwogCWJhbmtubyA9IHBhZ2VubyAlIGN0bC0+bmJhbmtzOwogCXJldHVybiAmKGN0bC0+c2hh cmVkLT5iYW5rX2xvY2tzW2Jhbmtub10ubG9jayk7CiB9CiAKLWV4dGVybiBTaXplIFNpbXBs ZUxydVNobWVtU2l6ZShpbnQgbnNsb3RzLCBpbnQgbmxzbnMpOworZXh0ZXJuIHZvaWQgU2lt cGxlTHJ1UmVxdWVzdFdpdGhPcHRzKGNvbnN0IFNscnVPcHRzICpvcHRpb25zKTsKKworI2Rl ZmluZSBTaW1wbGVMcnVSZXF1ZXN0KC4uLikgIFwKKwlTaW1wbGVMcnVSZXF1ZXN0V2l0aE9w dHMoJihTbHJ1T3B0cyl7X19WQV9BUkdTX199KQorCiBleHRlcm4gaW50CVNpbXBsZUxydUF1 dG90dW5lQnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCk7Ci1leHRlcm4gdm9pZCBTaW1w bGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBp bnQgbmxzbnMsCi0JCQkJCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZlcl90cmFu Y2hlX2lkLAotCQkJCQkJICBpbnQgYmFua190cmFuY2hlX2lkLCBTeW5jUmVxdWVzdEhhbmRs ZXIgc3luY19oYW5kbGVyLAotCQkJCQkJICBib29sIGxvbmdfc2VnbWVudF9uYW1lcyk7Ci1l eHRlcm4gaW50CVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8p OwotZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwg aW50NjQgcGFnZW5vKTsKLWV4dGVybiBpbnQJU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydUN0bCBj dGwsIGludDY0IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKK2V4dGVybiBpbnQJU2ltcGxlTHJ1 WmVyb1BhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKK2V4dGVybiB2b2lkIFNp bXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsK K2V4dGVybiBpbnQJU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFn ZW5vLCBib29sIHdyaXRlX29rLAogCQkJCQkJCSAgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp OwotZXh0ZXJuIGludAlTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0bCwg aW50NjQgcGFnZW5vLAorZXh0ZXJuIGludAlTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShT bHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sCiAJCQkJCQkJCQkgICBjb25zdCB2b2lkICpv cGFxdWVfZGF0YSk7Ci1leHRlcm4gdm9pZCBTaW1wbGVMcnVXcml0ZVBhZ2UoU2xydUN0bCBj dGwsIGludCBzbG90bm8pOwotZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1V3JpdGVBbGwoU2xydUN0 bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKTsKK2V4dGVybiB2b2lkIFNpbXBsZUxydVdy aXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK2V4dGVybiB2b2lkIFNpbXBs ZUxydVdyaXRlQWxsKFNscnVEZXNjICpjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKTsKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1leHRlcm4gdm9pZCBTbHJ1UGFnZVByZWNlZGVz VW5pdFRlc3RzKFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UpOworZXh0ZXJuIHZvaWQgU2xy dVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UpOwog I2Vsc2UKICNkZWZpbmUgU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhjdGwsIHBlcl9wYWdl KSBkbyB7fSB3aGlsZSAoMCkKICNlbmRpZgotZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1VHJ1bmNh dGUoU2xydUN0bCBjdGwsIGludDY0IGN1dG9mZlBhZ2UpOwotZXh0ZXJuIGJvb2wgU2ltcGxl THJ1RG9lc1BoeXNpY2FsUGFnZUV4aXN0KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOwor ZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1VHJ1bmNhdGUoU2xydURlc2MgKmN0bCwgaW50NjQgY3V0 b2ZmUGFnZSk7CitleHRlcm4gYm9vbCBTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3Qo U2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKIAotdHlwZWRlZiBib29sICgqU2xydVNj YW5DYWxsYmFjaykgKFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFn ZSwKK3R5cGVkZWYgYm9vbCAoKlNscnVTY2FuQ2FsbGJhY2spIChTbHJ1RGVzYyAqY3RsLCBj aGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKIAkJCQkJCQkJICB2b2lkICpkYXRhKTsK LWV4dGVybiBib29sIFNscnVTY2FuRGlyZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNh bGxiYWNrIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKLWV4dGVybiB2b2lkIFNscnVEZWxldGVT ZWdtZW50KFNscnVDdGwgY3RsLCBpbnQ2NCBzZWdubyk7CitleHRlcm4gYm9vbCBTbHJ1U2Nh bkRpcmVjdG9yeShTbHJ1RGVzYyAqY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2 b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIFNscnVEZWxldGVTZWdtZW50KFNscnVEZXNjICpj dGwsIGludDY0IHNlZ25vKTsKIAotZXh0ZXJuIGludAlTbHJ1U3luY0ZpbGVUYWcoU2xydUN0 bCBjdGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpOworZXh0ZXJuIGludAlT bHJ1U3luY0ZpbGVUYWcoU2xydURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hh ciAqcGF0aCk7CiAKIC8qIFNscnVTY2FuRGlyZWN0b3J5IHB1YmxpYyBjYWxsYmFja3MgKi8K LWV4dGVybiBib29sIFNscnVTY2FuRGlyQ2JSZXBvcnRQcmVzZW5jZShTbHJ1Q3RsIGN0bCwg Y2hhciAqZmlsZW5hbWUsCitleHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiUmVwb3J0UHJlc2Vu Y2UoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkJaW50NjQgc2Vn cGFnZSwgdm9pZCAqZGF0YSk7Ci1leHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQWxs KFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK2V4dGVybiBi b29sIFNscnVTY2FuRGlyQ2JEZWxldGVBbGwoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5h bWUsIGludDY0IHNlZ3BhZ2UsCiAJCQkJCQkJCSAgIHZvaWQgKmRhdGEpOwogZXh0ZXJuIGJv b2wgY2hlY2tfc2xydV9idWZmZXJzKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKTsK IAorZXh0ZXJuIHZvaWQgc2htZW1fc2xydV9pbml0KHZvaWQgKmxvY2F0aW9uLCBTaG1lbVN0 cnVjdE9wdHMgKm9wdGlvbnMpOworZXh0ZXJuIHZvaWQgc2htZW1fc2xydV9hdHRhY2godm9p ZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucyk7CisKICNlbmRpZgkJCQkJ CQkvKiBTTFJVX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFu cy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgKaW5kZXggMTFiNzM1NWRiZGYu LmQ5ODZjZDllODAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaApAQCAtMTUsOCArMTUsNiBA QCBleHRlcm4gdm9pZCBTdWJUcmFuc1NldFBhcmVudChUcmFuc2FjdGlvbklkIHhpZCwgVHJh bnNhY3Rpb25JZCBwYXJlbnQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3ViVHJhbnNHZXRQ YXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3ViVHJh bnNHZXRUb3Btb3N0VHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpOwogCi1leHRlcm4g U2l6ZSBTVUJUUkFOU1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNVQlRSQU5TU2ht ZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwU1VCVFJBTlModm9pZCk7CiBl eHRlcm4gdm9pZCBTdGFydHVwU1VCVFJBTlMoVHJhbnNhY3Rpb25JZCBvbGRlc3RBY3RpdmVY SUQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tQb2ludFNVQlRSQU5TKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2FzeW5jLmgKaW5kZXggM2JhYWU3Y2I4ZGMuLjIwMmU0YWE1ZTc0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2FzeW5jLmgKQEAgLTE5LDkgKzE5LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVHJh Y2Vfbm90aWZ5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbm90aWZ5X3F1ZXVlX3Bh Z2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJ bnRlcnJ1cHRQZW5kaW5nOwogCi1leHRlcm4gU2l6ZSBBc3luY1NobWVtU2l6ZSh2b2lkKTsK LWV4dGVybiB2b2lkIEFzeW5jU2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBOb3Rp ZnlNeUZyb250RW5kKGNvbnN0IGNoYXIgKmNoYW5uZWwsCiAJCQkJCQkJIGNvbnN0IGNoYXIg KnBheWxvYWQsCiAJCQkJCQkJIGludDMyIHNyY1BpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNh dGUuaAppbmRleCBhNWFjNTViOGY3ZS4uNDQzYmZmYjU4ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cmVkaWNhdGUuaApAQCAtNDEsMTEgKzQxLDYgQEAgdHlwZWRlZiB2b2lkICpTZXJpYWxpemFi bGVYYWN0SGFuZGxlOwogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotCi0vKiBo b3VzZWtlZXBpbmcgZm9yIHNoYXJlZCBtZW1vcnkgcHJlZGljYXRlIGxvY2sgc3RydWN0dXJl cyAqLwotZXh0ZXJuIHZvaWQgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKTsKLWV4dGVy biBTaXplIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCk7Ci0KIGV4dGVybiB2b2lkIENo ZWNrUG9pbnRQcmVkaWNhdGUodm9pZCk7CiAKIC8qIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGlu ZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCmluZGV4IGZlMTJiZjMz NDM5Li43YjI1OWQzM2NjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1l bV9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwu aApAQCAtMjEsNiArMjEsNyBAQCB0eXBlZGVmIGVudW0KIHsKIAlTSE1FTV9LSU5EX1NUUlVD VCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91cyBhcmVhIG9mIG1lbW9yeSAqLwogCVNITUVN X0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUgKi8KKwlTSE1FTV9LSU5EX1NMUlUsCQkJ LyogU0xSVSBidWZmZXJzIGFuZCBjb250cm9sIHN0cnVjdHVyZXMgKi8KIH0gU2htZW1SZXF1 ZXN0S2luZDsKIAogLyogc2htZW0uYyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxp c3QuaAppbmRleCBkNjJjMjlmMTM2MS4uYzE5OWYxOGEyN2EgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2Uvc3Vic3lzdGVtbGlzdC5oCkBAIC0zMiw2ICszMiwxMyBAQCBQR19TSE1FTV9TVUJTWVNU RU0oRFNNUmVnaXN0cnlTaG1lbUNhbGxiYWNrcykKIAogLyogeGxvZywgY2xvZywgYW5kIGJ1 ZmZlcnMgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShWYXJzdXBTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNU RU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTVUJUUkFO U1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKE11bHRpWGFjdFNobWVtQ2Fs bGJhY2tzKQorCisvKiBwcmVkaWNhdGUgbG9jayBtYW5hZ2VyICovCitQR19TSE1FTV9TVUJT WVNURU0oUHJlZGljYXRlTG9ja1NobWVtQ2FsbGJhY2tzKQogCiAvKiBwcm9jZXNzIHRhYmxl ICovCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzKQpAQCAt NDMsMyArNTAsNiBAQCBQR19TSE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxi YWNrcykKIC8qIGludGVycHJvY2VzcyBzaWduYWxpbmcgbWVjaGFuaXNtcyAqLwogUEdfU0hN RU1fU1VCU1lTVEVNKFBNU2lnbmFsU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNU RU0oUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tzKQorCisvKiBvdGhlciBtb2R1bGVzIHRoYXQg bmVlZCBzb21lIHNoYXJlZCBtZW1vcnkgc3BhY2UgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShB c3luY1NobWVtQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NscnUvdGVzdF9zbHJ1LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3Ns cnUuYwppbmRleCBlNGJkMmFmMGJmNS4uNDBlZmZmZGJmNjIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCkBAIC00MCwxNCArNDAsMjIgQEAgUEdfRlVOQ1RJ T05fSU5GT19WMSh0ZXN0X3NscnVfZGVsZXRlX2FsbCk7CiAvKiBOdW1iZXIgb2YgU0xSVSBw YWdlIHNsb3RzICovCiAjZGVmaW5lIE5VTV9URVNUX0JVRkZFUlMJCTE2CiAKLXN0YXRpYyBT bHJ1Q3RsRGF0YSBUZXN0U2xydUN0bERhdGE7Ci0jZGVmaW5lIFRlc3RTbHJ1Q3RsCQkJKCZU ZXN0U2xydUN0bERhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X3NscnVfc2htZW1fcmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIGJvb2wgdGVzdF9zbHJ1X3BhZ2VfcHJlY2VkZXNfbG9naWNh bGx5KGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CXRlc3Rfc2xydV9l cnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIAotc3Rh dGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0g TlVMTDsKLXN0YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0 dXBfaG9vayA9IE5VTEw7CitzdGF0aWMgY29uc3QgY2hhciAqVGVzdFNscnVEaXIgPSAicGdf dGVzdF9zbHJ1IjsKKworc3RhdGljIFNscnVEZXNjIFRlc3RTbHJ1RGVzYzsKKworc3RhdGlj IGNvbnN0IFNobWVtQ2FsbGJhY2tzIHRlc3Rfc2xydV9zaG1lbV9jYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSB0ZXN0X3NscnVfc2htZW1fcmVxdWVzdAorfTsKKworI2RlZmluZSBU ZXN0U2xydUN0bAkJCSgmVGVzdFNscnVEZXNjKQogCiBzdGF0aWMgYm9vbAotdGVzdF9zbHJ1 X3NjYW5fY2IoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2 b2lkICpkYXRhKQordGVzdF9zbHJ1X3NjYW5fY2IoU2xydURlc2MgKmN0bCwgY2hhciAqZmls ZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCiB7CiAJZWxvZyhOT1RJQ0UsICJD YWxsaW5nIHRlc3Rfc2xydV9zY2FuX2NiKCkiKTsKIAlyZXR1cm4gU2xydVNjYW5EaXJDYkRl bGV0ZUFsbChjdGwsIGZpbGVuYW1lLCBzZWdwYWdlLCBkYXRhKTsKQEAgLTE5MCwyMCArMTk4 LDYgQEAgdGVzdF9zbHJ1X2RlbGV0ZV9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fVk9JRCgpOwogfQogCi0vKgotICogTW9kdWxlIGxvYWQgY2FsbGJhY2tzIGFuZCBpbml0 aWFsaXphdGlvbi4KLSAqLwotCi1zdGF0aWMgdm9pZAotdGVzdF9zbHJ1X3NobWVtX3JlcXVl c3Qodm9pZCkKLXsKLQlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2ht ZW1fcmVxdWVzdF9ob29rKCk7Ci0KLQkvKiByZXNlcnZlIHNoYXJlZCBtZW1vcnkgZm9yIHRo ZSB0ZXN0IFNMUlUgKi8KLQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNpbXBsZUxydVNobWVt U2l6ZShOVU1fVEVTVF9CVUZGRVJTLCAwKSk7Ci19Ci0KIHN0YXRpYyBib29sCiB0ZXN0X3Ns cnVfcGFnZV9wcmVjZWRlc19sb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKQog ewpAQCAtMjE4LDYwICsyMTIsNDYgQEAgdGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJy b3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJcmV0dXJuIGVycmRldGFpbCgiQ291bGQg bm90IGFjY2VzcyB0ZXN0X3NscnUgZW50cnkgJXUuIiwgeGlkKTsKIH0KIAotc3RhdGljIHZv aWQKLXRlc3Rfc2xydV9zaG1lbV9zdGFydHVwKHZvaWQpCit2b2lkCitfUEdfaW5pdCh2b2lk KQogewotCS8qCi0JICogU2hvcnQgc2VnbWVudHMgbmFtZXMgYXJlIHdlbGwgdGVzdGVkIGVs c2V3aGVyZSBzbyBpbiB0aGlzIHRlc3Qgd2UgYXJlCi0JICogZm9jdXNpbmcgb24gbG9uZyBu YW1lcy4KLQkgKi8KLQljb25zdCBib29sCWxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWU7Ci0J Y29uc3QgY2hhcglzbHJ1X2Rpcl9uYW1lW10gPSAicGdfdGVzdF9zbHJ1IjsKLQlpbnQJCQl0 ZXN0X3RyYW5jaGVfaWQgPSAtMTsKLQlpbnQJCQl0ZXN0X2J1ZmZlcl90cmFuY2hlX2lkID0g LTE7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXByZXZfc2htZW1fc3Rh cnR1cF9ob29rKCk7CisJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19p bl9wcm9ncmVzcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjYW5ub3QgbG9h ZCBcIiVzXCIgYWZ0ZXIgc3RhcnR1cCIsICJ0ZXN0X3NscnUiKSwKKwkJCQkgZXJyZGV0YWls KCJcIiVzXCIgbXVzdCBiZSBsb2FkZWQgd2l0aCBcInNoYXJlZF9wcmVsb2FkX2xpYnJhcmll c1wiLiIsCisJCQkJCQkgICAidGVzdF9zbHJ1IikpKTsKIAogCS8qCiAJICogQ3JlYXRlIHRo ZSBTTFJVIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdCB5ZXQsIGZyb20gdGhlIHJv b3Qgb2YKIAkgKiB0aGUgZGF0YSBkaXJlY3RvcnkuCiAJICovCi0JKHZvaWQpIE1ha2VQR0Rp cmVjdG9yeShzbHJ1X2Rpcl9uYW1lKTsKKwkodm9pZCkgTWFrZVBHRGlyZWN0b3J5KFRlc3RT bHJ1RGlyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgU0xSVSBmYWNpbGl0eS4gIElu IEVYRUNfQkFDS0VORCBidWlsZHMsIHRoZQotCSAqIHNobWVtX3N0YXJ0dXBfaG9vayBpcyBj YWxsZWQgaW4gdGhlIHBvc3RtYXN0ZXIgYW5kIGluIGVhY2ggYmFja2VuZCwgYnV0Ci0JICog d2Ugb25seSBuZWVkIHRvIGdlbmVyYXRlIHRoZSBMV0xvY2sgdHJhbmNoZXMgb25jZS4gIE5v dGUgdGhhdCB0aGVzZQotCSAqIHRyYW5jaGUgSUQgdmFyaWFibGVzIGFyZSBub3QgdXNlZCBi eSBTaW1wbGVMcnVJbml0KCkgd2hlbgotCSAqIElzVW5kZXJQb3N0bWFzdGVyIGlzIHRydWUu Ci0JICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCXRlc3RfdHJhbmNoZV9p ZCA9IExXTG9ja05ld1RyYW5jaGVJZCgidGVzdF9zbHJ1X3RyYW5jaGUiKTsKLQkJdGVzdF9i dWZmZXJfdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgidGVzdF9idWZmZXJfdHJh bmNoZSIpOwotCX0KLQotCVRlc3RTbHJ1Q3RsLT5QYWdlUHJlY2VkZXMgPSB0ZXN0X3NscnVf cGFnZV9wcmVjZWRlc19sb2dpY2FsbHk7Ci0JVGVzdFNscnVDdGwtPmVycmRldGFpbF9mb3Jf aW9fZXJyb3IgPSB0ZXN0X3NscnVfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsKLQlTaW1wbGVM cnVJbml0KFRlc3RTbHJ1Q3RsLCAiVGVzdFNMUlUiLAotCQkJCSAgTlVNX1RFU1RfQlVGRkVS UywgMCwgc2xydV9kaXJfbmFtZSwKLQkJCQkgIHRlc3RfYnVmZmVyX3RyYW5jaGVfaWQsIHRl c3RfdHJhbmNoZV9pZCwgU1lOQ19IQU5ETEVSX05PTkUsCi0JCQkJICBsb25nX3NlZ21lbnRf bmFtZXMpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJnRlc3Rfc2xydV9zaG1lbV9jYWxs YmFja3MpOwogfQogCi12b2lkCi1fUEdfaW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK3Rlc3Rf c2xydV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlpZiAoIXByb2Nlc3Nfc2hhcmVk X3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJtc2coImNhbm5vdCBsb2FkIFwiJXNcIiBhZnRlciBzdGFydHVwIiwgInRlc3Rfc2xy dSIpLAotCQkJCSBlcnJkZXRhaWwoIlwiJXNcIiBtdXN0IGJlIGxvYWRlZCB3aXRoIFwic2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzXCIuIiwKLQkJCQkJCSAgICJ0ZXN0X3NscnUiKSkpOwor CVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmVGVzdFNscnVEZXNjLAorCQkJCQkgLm5hbWUg PSAiVGVzdFNMUlUiLAorCQkJCQkgLkRpciA9IFRlc3RTbHJ1RGlyLAorCisJLyoKKwkgKiBT aG9ydCBzZWdtZW50cyBuYW1lcyBhcmUgd2VsbCB0ZXN0ZWQgZWxzZXdoZXJlIHNvIGluIHRo aXMgdGVzdCB3ZSBhcmUKKwkgKiBmb2N1c2luZyBvbiBsb25nIG5hbWVzLgorCSAqLworCQkJ CQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCisKKwkJCQkJIC5uc2xvdHMgPSBOVU1f VEVTVF9CVUZGRVJTLAorCQkJCQkgLm5sc25zID0gMCwKIAotCXByZXZfc2htZW1fcmVxdWVz dF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVtX3JlcXVlc3RfaG9vayA9IHRl c3Rfc2xydV9zaG1lbV9yZXF1ZXN0OworCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNfSEFO RExFUl9OT05FLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IHRlc3Rfc2xydV9wYWdlX3ByZWNl ZGVzX2xvZ2ljYWxseSwKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gdGVzdF9z bHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IsCiAKLQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9v ayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X3Ns cnVfc2htZW1fc3RhcnR1cDsKKwkvKiBsZXQgc2xydS5jIGFzc2lnbiB0aGVzZSAqLworCQkJ CQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gMCwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSAw LAorCQkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2M2MwYjNhOTQ2 NS4uM2MzNTA5NzM2MWQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yOTAx LDkgKzI5MDEsOSBAQCBTbG90SW52YWxpZGF0aW9uQ2F1c2VNYXAKIFNsb3ROdW1iZXIKIFNs b3RTeW5jQ3R4U3RydWN0CiBTbG90U3luY1NraXBSZWFzb24KLVNscnVDdGwKLVNscnVDdGxE YXRhCitTbHJ1RGVzYwogU2xydUVycm9yQ2F1c2UKK1NscnVPcHRzCiBTbHJ1UGFnZVN0YXR1 cwogU2xydVNjYW5DYWxsYmFjawogU2xydVNlZ1N0YXRlCi0tIAoyLjQ3LjMKCg== --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0011-Convert-AIO-to-the-new-interface.patch" Content-Disposition: attachment; filename="v11-0011-Convert-AIO-to-the-new-interface.patch" Content-Transfer-Encoding: base64 RnJvbSA3YzAxZmFhMDMwY2FmMmNjNjBiNmNkODFhN2RkNmQzMTBiNTg4Y2I1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTI6NDM6MTYgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAxMS8xNF0gQ29udmVydCBBSU8gdG8gdGhlIG5ldyBpbnRl cmZhY2UKClRoaXMgcmVwbGFjZXMgdGhlICJzaG1lbV9zaXplIiBhbmQgInNobWVtX2luaXQi IGNhbGxiYWNrcyBpbiB0aGUgSU8KbWV0aG9kcyB0YWJsZSB3aXRoIHRoZSBzYW1lIFNobWVt Q2FsbGJhY2sgc3RydWN0IHRoYXQgd2Ugbm93IHVzZSBpbgpvdGhlciBzdWJzeXN0ZW1zCi0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2luaXQuYyAgICAgICAgfCAxMTIgKysr KysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lv X3VyaW5nLmMgfCAgMzkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhv ZF93b3JrZXIuYyAgIHwgIDg0ICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYyAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv YWlvX2ludGVybmFsLmggICAgICAgIHwgIDE2ICstLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv YWlvX3N1YnN5cy5oICAgICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vi c3lzdGVtbGlzdC5oICAgICAgIHwgICAzICsKIDcgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2Vy dGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2Fpby9haW9faW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lu aXQuYwppbmRleCBkM2M2OGQ4YjA0Yy4uMThiYjQyMzUwNDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9haW8vYWlvX2luaXQuYwpAQCAtMjMsMTYgKzIzLDI0IEBACiAjaW5jbHVkZSAic3RvcmFn ZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCiAKIAorc3RhdGljIHZvaWQgQWlvU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBBaW9TaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lk IEFpb1NobWVtQXR0YWNoKHZvaWQgKmFyZyk7CiAKLXN0YXRpYyBTaXplCi1BaW9DdGxTaG1l bVNpemUodm9pZCkKLXsKLQkvKiBwZ2Fpb19jdGwgaXRzZWxmICovCi0JcmV0dXJuIHNpemVv ZihQZ0Fpb0N0bCk7Ci19Citjb25zdCBTaG1lbUNhbGxiYWNrcyBBaW9TaG1lbUNhbGxiYWNr cyA9IHsKKwkucmVxdWVzdF9mbiA9IEFpb1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEFp b1NobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gQWlvU2htZW1BdHRhY2gsCit9OworCitzdGF0 aWMgUGdBaW9CYWNrZW5kICpBaW9CYWNrZW5kU2htZW1QdHI7CitzdGF0aWMgUGdBaW9IYW5k bGUgKkFpb0hhbmRsZVNobWVtUHRyOworc3RhdGljIHN0cnVjdCBpb3ZlYyAqQWlvSGFuZGxl SU9WU2htZW1QdHI7CitzdGF0aWMgdWludDY0ICpBaW9IYW5kbGVEYXRhU2htZW1QdHI7CiAK IHN0YXRpYyB1aW50MzIKIEFpb1Byb2NzKHZvaWQpCkBAIC0xMDksMTIgKzExNywxNSBAQCBB aW9DaG9vc2VNYXhDb25jdXJyZW5jeSh2b2lkKQogCXJldHVybiBNaW4obWF4X3Byb3BvcnRp b25hbF9waW5zLCA2NCk7CiB9CiAKLVNpemUKLUFpb1NobWVtU2l6ZSh2b2lkKQorLyoKKyAq IFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgYXJlYSBmb3IgQUlPIHN1YnN5c3RlbS4KKyAqLwor c3RhdGljIHZvaWQKK0Fpb1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc3og PSAwOwotCiAJLyoKKwkgKiBSZXNvbHZlIGlvX21heF9jb25jdXJyZW5jeSBpZiBub3QgYWxy ZWFkeSBkb25lCisJICoKIAkgKiBXZSBwcmVmZXIgdG8gcmVwb3J0IHRoaXMgdmFsdWUncyBz b3VyY2UgYXMgUEdDX1NfRFlOQU1JQ19ERUZBVUxULgogCSAqIEhvd2V2ZXIsIGlmIHRoZSBE QkEgZXhwbGljaXRseSBzZXQgaW9fbWF4X2NvbmN1cnJlbmN5ID0gLTEgaW4gdGhlCiAJICog Y29uZmlnIGZpbGUsIHRoZW4gUEdDX1NfRFlOQU1JQ19ERUZBVUxUIHdpbGwgZmFpbCB0byBv dmVycmlkZSB0aGF0IGFuZApAQCAtMTMyLDQ4ICsxNDMsNTIgQEAgQWlvU2htZW1TaXplKHZv aWQpCiAJCQkJCQkJUEdDX1NfT1ZFUlJJREUpOwogCX0KIAotCXN6ID0gYWRkX3NpemUoc3os IEFpb0N0bFNobWVtU2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBBaW9CYWNrZW5kU2ht ZW1TaXplKCkpOwotCXN6ID0gYWRkX3NpemUoc3osIEFpb0hhbmRsZVNobWVtU2l6ZSgpKTsK LQlzeiA9IGFkZF9zaXplKHN6LCBBaW9IYW5kbGVJT1ZTaG1lbVNpemUoKSk7Ci0Jc3ogPSBh ZGRfc2l6ZShzeiwgQWlvSGFuZGxlRGF0YVNobWVtU2l6ZSgpKTsKLQotCS8qIFJlc2VydmUg c3BhY2UgZm9yIG1ldGhvZCBzcGVjaWZpYyByZXNvdXJjZXMuICovCi0JaWYgKHBnYWlvX21l dGhvZF9vcHMtPnNobWVtX3NpemUpCi0JCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX21ldGhv ZF9vcHMtPnNobWVtX3NpemUoKSk7Ci0KLQlyZXR1cm4gc3o7CisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gIkFpb0N0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFBnQWlvQ3Rs KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmcGdhaW9fY3RsLAorCQkpOworCisJU2ht ZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0JhY2tlbmQiLAorCQkJCQkgICAuc2l6ZSA9 IEFpb0JhY2tlbmRTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWlv QmFja2VuZFNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0g IkFpb0hhbmRsZSIsCisJCQkJCSAgIC5zaXplID0gQWlvSGFuZGxlU2htZW1TaXplKCksCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkFpb0hhbmRsZVNobWVtUHRyLAorCQkpOworCisJ U2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0hhbmRsZUlPViIsCisJCQkJCSAgIC5z aXplID0gQWlvSGFuZGxlSU9WU2htZW1TaXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAq KikgJkFpb0hhbmRsZUlPVlNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIkFpb0hhbmRsZURhdGEiLAorCQkJCQkgICAuc2l6ZSA9IEFpb0hhbmRsZURh dGFTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWlvSGFuZGxlRGF0 YVNobWVtUHRyLAorCQkpOworCisJaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxi YWNrcy5yZXF1ZXN0X2ZuKQorCQlwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3Mu cmVxdWVzdF9mbihwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MucmVxdWVzdF9m bl9hcmcpOwogfQogCi12b2lkCi1BaW9TaG1lbUluaXQodm9pZCkKKy8qCisgKiBJbml0aWFs aXplIEFJTyBzaGFyZWQgbWVtb3J5IGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKi8K K3N0YXRpYyB2b2lkCitBaW9TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwogCXVpbnQzMgkJaW9faGFuZGxlX29mZiA9IDA7CiAJdWludDMyCQlpb3ZlY19vZmYgPSAw OwogCXVpbnQzMgkJcGVyX2JhY2tlbmRfaW92ZWNzID0gaW9fbWF4X2NvbmN1cnJlbmN5ICog aW9fbWF4X2NvbWJpbmVfbGltaXQ7CiAKLQlwZ2Fpb19jdGwgPSAoUGdBaW9DdGwgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJBaW9DdGwiLCBBaW9DdGxTaG1lbVNpemUoKSwgJmZvdW5kKTsK LQotCWlmIChmb3VuZCkKLQkJZ290byBvdXQ7Ci0KLQltZW1zZXQocGdhaW9fY3RsLCAwLCBB aW9DdGxTaG1lbVNpemUoKSk7Ci0KIAlwZ2Fpb19jdGwtPmlvX2hhbmRsZV9jb3VudCA9IEFp b1Byb2NzKCkgKiBpb19tYXhfY29uY3VycmVuY3k7CiAJcGdhaW9fY3RsLT5pb3ZlY19jb3Vu dCA9IEFpb1Byb2NzKCkgKiBwZXJfYmFja2VuZF9pb3ZlY3M7CiAKLQlwZ2Fpb19jdGwtPmJh Y2tlbmRfc3RhdGUgPSAoUGdBaW9CYWNrZW5kICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlv QmFja2VuZCIsIEFpb0JhY2tlbmRTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCXBnYWlvX2N0 bC0+aW9faGFuZGxlcyA9IChQZ0Fpb0hhbmRsZSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFp b0hhbmRsZSIsIEFpb0hhbmRsZVNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JcGdhaW9fY3Rs LT5pb3ZlY3MgPSAoc3RydWN0IGlvdmVjICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlvSGFu ZGxlSU9WIiwgQWlvSGFuZGxlSU9WU2htZW1TaXplKCksICZmb3VuZCk7Ci0JcGdhaW9fY3Rs LT5oYW5kbGVfZGF0YSA9ICh1aW50NjQgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9IYW5k bGVEYXRhIiwgQWlvSGFuZGxlRGF0YVNobWVtU2l6ZSgpLCAmZm91bmQpOworCXBnYWlvX2N0 bC0+YmFja2VuZF9zdGF0ZSA9IEFpb0JhY2tlbmRTaG1lbVB0cjsKKwlwZ2Fpb19jdGwtPmlv X2hhbmRsZXMgPSBBaW9IYW5kbGVTaG1lbVB0cjsKKwlwZ2Fpb19jdGwtPmlvdmVjcyA9IEFp b0hhbmRsZUlPVlNobWVtUHRyOworCXBnYWlvX2N0bC0+aGFuZGxlX2RhdGEgPSBBaW9IYW5k bGVEYXRhU2htZW1QdHI7CiAKIAlmb3IgKGludCBwcm9jbm8gPSAwOyBwcm9jbm8gPCBBaW9Q cm9jcygpOyBwcm9jbm8rKykKIAl7CkBAIC0yMDgsMTAgKzIyMywxNSBAQCBBaW9TaG1lbUlu aXQodm9pZCkKIAkJfQogCX0KIAotb3V0OgotCS8qIEluaXRpYWxpemUgSU8gbWV0aG9kIHNw ZWNpZmljIHJlc291cmNlcy4gKi8KLQlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1faW5p dCkKLQkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1faW5pdCghZm91bmQpOworCWlmIChwZ2Fp b19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbikKKwkJcGdhaW9fbWV0aG9k X29wcy0+c2htZW1fY2FsbGJhY2tzLmluaXRfZm4ocGdhaW9fbWV0aG9kX29wcy0+c2htZW1f Y2FsbGJhY2tzLmluaXRfZm5fYXJnKTsKK30KKworc3RhdGljIHZvaWQKK0Fpb1NobWVtQXR0 YWNoKHZvaWQgKmFyZykKK3sKKwlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJh Y2tzLmF0dGFjaF9mbikKKwkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmF0 dGFjaF9mbihwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuYXR0YWNoX2ZuX2Fy Zyk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21l dGhvZF9pb191cmluZy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3Vy aW5nLmMKaW5kZXggMzk5ODRkZjMxYjQuLmY4ZDBiMjIxNjAwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2RfaW9fdXJpbmcuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2Fpby9tZXRob2RfaW9fdXJpbmcuYwpAQCAtNDksOCArNDksOCBAQAogCiAK IC8qIEVudHJ5IHBvaW50cyBmb3IgSW9NZXRob2RPcHMuICovCi1zdGF0aWMgc2l6ZV90IHBn YWlvX3VyaW5nX3NobWVtX3NpemUodm9pZCk7Ci1zdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19z aG1lbV9pbml0KGJvb2wgZmlyc3RfdGltZSk7CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1l bV9pbml0KHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19pbml0X2JhY2tl bmQodm9pZCk7CiBzdGF0aWMgaW50CXBnYWlvX3VyaW5nX3N1Ym1pdCh1aW50MTYgbnVtX3N0 YWdlZF9pb3MsIFBnQWlvSGFuZGxlICoqc3RhZ2VkX2lvcyk7CiBzdGF0aWMgdm9pZCBwZ2Fp b191cmluZ193YWl0X29uZShQZ0Fpb0hhbmRsZSAqaW9oLCB1aW50NjQgcmVmX2dlbmVyYXRp b24pOwpAQCAtNTksNyArNTksNiBAQCBzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19jaGVja19v bmUoUGdBaW9IYW5kbGUgKmlvaCwgdWludDY0IHJlZl9nZW5lcmF0aW9uKTsKIC8qIGhlbHBl ciBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIHBnYWlvX3VyaW5nX3NxX2Zyb21faW8oUGdB aW9IYW5kbGUgKmlvaCwgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTsKIAotCiBjb25zdCBJ b01ldGhvZE9wcyBwZ2Fpb191cmluZ19vcHMgPSB7CiAJLyoKIAkgKiBXaGlsZSBpb191cmlu ZyBtb3N0bHkgaXMgT0sgd2l0aCBGRHMgZ2V0dGluZyBjbG9zZWQgd2hpbGUgdGhlIElPIGlz IGluCkBAIC03MCw4ICs2OSw4IEBAIGNvbnN0IElvTWV0aG9kT3BzIHBnYWlvX3VyaW5nX29w cyA9IHsKIAkgKi8KIAkud2FpdF9vbl9mZF9iZWZvcmVfY2xvc2UgPSB0cnVlLAogCi0JLnNo bWVtX3NpemUgPSBwZ2Fpb191cmluZ19zaG1lbV9zaXplLAotCS5zaG1lbV9pbml0ID0gcGdh aW9fdXJpbmdfc2htZW1faW5pdCwKKwkuc2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4gPSBw Z2Fpb191cmluZ19zaG1lbV9yZXF1ZXN0LAorCS5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbiA9 IHBnYWlvX3VyaW5nX3NobWVtX2luaXQsCiAJLmluaXRfYmFja2VuZCA9IHBnYWlvX3VyaW5n X2luaXRfYmFja2VuZCwKIAogCS5zdWJtaXQgPSBwZ2Fpb191cmluZ19zdWJtaXQsCkBAIC0y NjcsMjMgKzI2NiwzMSBAQCBwZ2Fpb191cmluZ19zaG1lbV9zaXplKHZvaWQpCiB7CiAJc2l6 ZV90CQlzejsKIAorCXN6ID0gcGdhaW9fdXJpbmdfY29udGV4dF9zaG1lbV9zaXplKCk7CisJ c3ogPSBhZGRfc2l6ZShzeiwgcGdhaW9fdXJpbmdfcmluZ19zaG1lbV9zaXplKCkpOworCisJ cmV0dXJuIHN6OworfQorCitzdGF0aWMgdm9pZAorcGdhaW9fdXJpbmdfc2htZW1fcmVxdWVz dCh2b2lkICphcmcpCit7CiAJLyoKIAkgKiBLZXJuZWwgYW5kIGxpYnVyaW5nIHN1cHBvcnQg Zm9yIHZhcmlvdXMgZmVhdHVyZXMgaW5mbHVlbmNlcyBob3cgbXVjaAogCSAqIHNobWVtIHdl IG5lZWQsIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBjaGVja3MuCiAJICovCiAJcGdhaW9fdXJp bmdfY2hlY2tfY2FwYWJpbGl0aWVzKCk7CiAKLQlzeiA9IHBnYWlvX3VyaW5nX2NvbnRleHRf c2htZW1fc2l6ZSgpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3VyaW5nX3Jpbmdfc2ht ZW1fc2l6ZSgpKTsKLQotCXJldHVybiBzejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiQWlvVXJpbmdDb250ZXh0IiwKKwkJCQkJICAgLnNpemUgPSBwZ2Fpb191cmluZ19zaG1l bV9zaXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnBnYWlvX3VyaW5nX2NvbnRl eHRzLAorCQkpOwogfQogCiBzdGF0aWMgdm9pZAotcGdhaW9fdXJpbmdfc2htZW1faW5pdChi b29sIGZpcnN0X3RpbWUpCitwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsK IAlpbnQJCQlUb3RhbFByb2NzID0gcGdhaW9fdXJpbmdfcHJvY3MoKTsKLQlib29sCQlmb3Vu ZDsKIAljaGFyCSAgICpzaG1lbTsKIAlzaXplX3QJCXJpbmdfbWVtX3JlbWFpbiA9IDA7CiAJ Y2hhcgkgICAqcmluZ19tZW1fbmV4dCA9IDA7CkBAIC0yOTEsMTMgKzI5OCwxMSBAQCBwZ2Fp b191cmluZ19zaG1lbV9pbml0KGJvb2wgZmlyc3RfdGltZSkKIAkvKgogCSAqIFdlIGFsbG9j YXRlIG1lbW9yeSBmb3IgYWxsIFBnQWlvVXJpbmdDb250ZXh0IGluc3RhbmNlcyBhbmQsIGlm CiAJICogc3VwcG9ydGVkLCB0aGUgbWVtb3J5IHJlcXVpcmVkIGZvciBlYWNoIG9mIHRoZSBp b191cmluZyBpbnN0YW5jZXMsIGluCi0JICogb25lIFNobWVtSW5pdFN0cnVjdCgpLgorCSAq IG9uZSBjb21iaW5lZCBhbGxvY2F0aW9uLgorCSAqCisJICogcGdhaW9fdXJpbmdfY29udGV4 dHMgaXMgYWxyZWFkeSBzZXQgdG8gdGhlIGJhc2Ugb2YgdGhlIGFsbG9jYXRpb24uCiAJICov Ci0Jc2htZW0gPSBTaG1lbUluaXRTdHJ1Y3QoIkFpb1VyaW5nQ29udGV4dCIsIHBnYWlvX3Vy aW5nX3NobWVtX3NpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0JCXJldHVybjsKLQot CXBnYWlvX3VyaW5nX2NvbnRleHRzID0gKFBnQWlvVXJpbmdDb250ZXh0ICopIHNobWVtOwor CXNobWVtID0gKGNoYXIgKikgcGdhaW9fdXJpbmdfY29udGV4dHM7CiAJc2htZW0gKz0gcGdh aW9fdXJpbmdfY29udGV4dF9zaG1lbV9zaXplKCk7CiAKIAkvKiBpZiBzdXBwb3J0ZWQsIGhh bmRsZSBtZW1vcnkgYWxpZ25tZW50IC8gc2l6aW5nIGZvciBpb191cmluZyBtZW1vcnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYwppbmRleCBlZmUzOGU5 ZjExMy4uZGY5NGE0MzQ4NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlv L21ldGhvZF93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rf d29ya2VyLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxz L21lbWRlYnVnLmgiCkBAIC03MywxNiArNzQsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdBaW9X b3JrZXJDb250cm9sCiB9IFBnQWlvV29ya2VyQ29udHJvbDsKIAogCi1zdGF0aWMgc2l6ZV90 IHBnYWlvX3dvcmtlcl9zaG1lbV9zaXplKHZvaWQpOwotc3RhdGljIHZvaWQgcGdhaW9fd29y a2VyX3NobWVtX2luaXQoYm9vbCBmaXJzdF90aW1lKTsKK3N0YXRpYyB2b2lkIHBnYWlvX3dv cmtlcl9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBwZ2Fpb193b3Jr ZXJfc2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgcGdhaW9fd29ya2VyX3No bWVtX2F0dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgUGdBaW9Xb3JrZXJTdWJtaXNzaW9u UXVldWUgKmlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlOwogCiBzdGF0aWMgYm9vbCBwZ2Fp b193b3JrZXJfbmVlZHNfc3luY2hyb25vdXNfZXhlY3V0aW9uKFBnQWlvSGFuZGxlICppb2gp Owogc3RhdGljIGludAlwZ2Fpb193b3JrZXJfc3VibWl0KHVpbnQxNiBudW1fc3RhZ2VkX2lv cywgUGdBaW9IYW5kbGUgKipzdGFnZWRfaW9zKTsKIAogCiBjb25zdCBJb01ldGhvZE9wcyBw Z2Fpb193b3JrZXJfb3BzID0gewotCS5zaG1lbV9zaXplID0gcGdhaW9fd29ya2VyX3NobWVt X3NpemUsCi0JLnNobWVtX2luaXQgPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2ht ZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1fcmVxdWVzdCwK Kwkuc2htZW1fY2FsbGJhY2tzLmluaXRfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwK Kwkuc2htZW1fY2FsbGJhY2tzLmF0dGFjaF9mbiA9IHBnYWlvX3dvcmtlcl9zaG1lbV9hdHRh Y2gsCiAKIAkubmVlZHNfc3luY2hyb25vdXNfZXhlY3V0aW9uID0gcGdhaW9fd29ya2VyX25l ZWRzX3N5bmNocm9ub3VzX2V4ZWN1dGlvbiwKIAkuc3VibWl0ID0gcGdhaW9fd29ya2VyX3N1 Ym1pdCwKQEAgLTk1LDcgKzEwMCw2IEBAIGludAkJCWlvX3dvcmtlcnMgPSAzOwogCiBzdGF0 aWMgaW50CWlvX3dvcmtlcl9xdWV1ZV9zaXplID0gNjQ7CiBzdGF0aWMgaW50CU15SW9Xb3Jr ZXJJZDsKLXN0YXRpYyBQZ0Fpb1dvcmtlclN1Ym1pc3Npb25RdWV1ZSAqaW9fd29ya2VyX3N1 Ym1pc3Npb25fcXVldWU7CiBzdGF0aWMgUGdBaW9Xb3JrZXJDb250cm9sICppb193b3JrZXJf Y29udHJvbDsKIAogCkBAIC0xMTYsNTAgKzEyMCw2MCBAQCBwZ2Fpb193b3JrZXJfY29udHJv bF9zaG1lbV9zaXplKHZvaWQpCiAJCXNpemVvZihQZ0Fpb1dvcmtlclNsb3QpICogTUFYX0lP X1dPUktFUlM7CiB9CiAKLXN0YXRpYyBzaXplX3QKLXBnYWlvX3dvcmtlcl9zaG1lbV9zaXpl KHZvaWQpCisvKgorICogU2V0IHNlY29uZGFyeSBBSU8gd29ya2VyIHBvaW50ZXIgZnJvbSB0 aGUgY29tYmluZWQgYWxsb2NhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3BnYWlvX3dvcmtl cl9zZXRfc2Vjb25kYXJ5X3B0cih2b2lkKQogewotCXNpemVfdAkJc3o7CiAJaW50CQkJcXVl dWVfc2l6ZTsKKwlTaXplCQlxdWV1ZV9zeiA9IHBnYWlvX3dvcmtlcl9xdWV1ZV9zaG1lbV9z aXplKCZxdWV1ZV9zaXplKTsKIAotCXN6ID0gcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3Np emUoJnF1ZXVlX3NpemUpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3dvcmtlcl9jb250 cm9sX3NobWVtX3NpemUoKSk7Ci0KLQlyZXR1cm4gc3o7CisJaW9fd29ya2VyX2NvbnRyb2wg PSAoUGdBaW9Xb3JrZXJDb250cm9sICopCisJCSgoY2hhciAqKSBpb193b3JrZXJfc3VibWlz c2lvbl9xdWV1ZSArIE1BWEFMSUdOKHF1ZXVlX3N6KSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1w Z2Fpb193b3JrZXJfc2htZW1faW5pdChib29sIGZpcnN0X3RpbWUpCitwZ2Fpb193b3JrZXJf c2htZW1faW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CiAJaW50CQkJcXVldWVf c2l6ZTsKIAotCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlID0KLQkJU2htZW1Jbml0U3Ry dWN0KCJBaW9Xb3JrZXJTdWJtaXNzaW9uUXVldWUiLAotCQkJCQkJcGdhaW9fd29ya2VyX3F1 ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3NpemUpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZv dW5kKQotCXsKLQkJaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWUtPnNpemUgPSBxdWV1ZV9z aXplOwotCQlpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZS0+aGVhZCA9IDA7Ci0JCWlvX3dv cmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT50YWlsID0gMDsKLQl9CisJcGdhaW9fd29ya2VyX3F1 ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3NpemUpOworCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1 ZXVlLT5zaXplID0gcXVldWVfc2l6ZTsKKwlpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZS0+ aGVhZCA9IDA7CisJaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWUtPnRhaWwgPSAwOwogCi0J aW9fd29ya2VyX2NvbnRyb2wgPQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb1dvcmtlckNvbnRy b2wiLAotCQkJCQkJcGdhaW9fd29ya2VyX2NvbnRyb2xfc2htZW1fc2l6ZSgpLAotCQkJCQkJ JmZvdW5kKTsKLQlpZiAoIWZvdW5kKQorCXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0 cigpOworCisJaW9fd29ya2VyX2NvbnRyb2wtPmlkbGVfd29ya2VyX21hc2sgPSAwOworCWZv ciAoaW50IGkgPSAwOyBpIDwgTUFYX0lPX1dPUktFUlM7ICsraSkKIAl7Ci0JCWlvX3dvcmtl cl9jb250cm9sLT5pZGxlX3dvcmtlcl9tYXNrID0gMDsKLQkJZm9yIChpbnQgaSA9IDA7IGkg PCBNQVhfSU9fV09SS0VSUzsgKytpKQotCQl7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29y a2Vyc1tpXS5sYXRjaCA9IE5VTEw7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tp XS5pbl91c2UgPSBmYWxzZTsKLQkJfQorCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tp XS5sYXRjaCA9IE5VTEw7CisJCWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmluX3Vz ZSA9IGZhbHNlOwogCX0KIH0KIAorc3RhdGljIHZvaWQKK3BnYWlvX3dvcmtlcl9zaG1lbV9h dHRhY2godm9pZCAqYXJnKQoreworCXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cigp OworfQorCitzdGF0aWMgdm9pZAorcGdhaW9fd29ya2VyX3NobWVtX3JlcXVlc3Qodm9pZCAq YXJnKQoreworCXNpemVfdAkJc2l6ZTsKKwlpbnQJCQlxdWV1ZV9zaXplOworCisJc2l6ZSA9 IE1BWEFMSUdOKHBnYWlvX3dvcmtlcl9xdWV1ZV9zaG1lbV9zaXplKCZxdWV1ZV9zaXplKSkg KworCQlwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9zaXplKCk7CisKKwlTaG1lbVJlcXVl c3RTdHJ1Y3QoLm5hbWUgPSAiQWlvV29ya2VyU3VibWlzc2lvblF1ZXVlIiwKKwkJCQkJICAg LnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZpb193b3JrZXJfc3Vi bWlzc2lvbl9xdWV1ZSwKKwkJKTsKK30KKwogc3RhdGljIGludAogcGdhaW9fd29ya2VyX2No b29zZV9pZGxlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggN2E4YzY5 ZGU4MDIuLmE1MTBjOTI4ZGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xMjIs NyArMTIyLDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgSW5qZWN0aW9uUG9pbnRTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFNsb3RTeW5jU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBaW9T aG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRMU05TaG1lbVNpemUo KSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6 ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgRGF0YUNoZWNrc3Vtc1NobWVtU2l6ZSgp KTsKQEAgLTMwMSw3ICszMDAsNiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lk KQogCVN0YXRzU2htZW1Jbml0KCk7CiAJV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KCk7CiAJ SW5qZWN0aW9uUG9pbnRTaG1lbUluaXQoKTsKLQlBaW9TaG1lbUluaXQoKTsKIAlXYWl0TFNO U2htZW1Jbml0KCk7CiAJTG9naWNhbERlY29kaW5nQ3RsU2htZW1Jbml0KCk7CiB9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19pbnRlcm5hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaAppbmRleCAzM2UxZTJkYzA0OC4uOWNhNDA4N2Fh N2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaApAQCAtMjAsNiArMjAsOCBA QAogI2luY2x1ZGUgInBvcnQvcGdfaW92ZWMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5o IgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAKIAogLyoKQEAg LTI2NywyMCArMjY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSW9NZXRob2RPcHMKIAkgKi8KIAli b29sCQl3YWl0X29uX2ZkX2JlZm9yZV9jbG9zZTsKIAotCiAJLyogZ2xvYmFsIGluaXRpYWxp emF0aW9uICovCi0KLQkvKgotCSAqIEFtb3VudCBvZiBhZGRpdGlvbmFsIHNoYXJlZCBtZW1v cnkgdG8gcmVzZXJ2ZSBmb3IgdGhlIGlvX21ldGhvZC4gQ2FsbGVkCi0JICoganVzdCBsaWtl IGEgbm9ybWFsIGlwY2kuYyBzdHlsZSAqU2l6ZSgpIGZ1bmN0aW9uLiBPcHRpb25hbC4KLQkg Ki8KLQlzaXplX3QJCSgqc2htZW1fc2l6ZSkgKHZvaWQpOwotCi0JLyoKLQkgKiBJbml0aWFs aXplIHNoYXJlZCBtZW1vcnkuIEZpcnN0IHRpbWUgaXMgdHJ1ZSBpZiBBSU8ncyBzaGFyZWQg bWVtb3J5IHdhcwotCSAqIGp1c3QgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4gT3B0 aW9uYWwuCi0JICovCi0Jdm9pZAkJKCpzaG1lbV9pbml0KSAoYm9vbCBmaXJzdF90aW1lKTsK KwlTaG1lbUNhbGxiYWNrcyBzaG1lbV9jYWxsYmFja3M7CiAKIAkvKgogCSAqIFBlci1iYWNr ZW5kIGluaXRpYWxpemF0aW9uLiBPcHRpb25hbC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvYWlvX3N1YnN5cy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9fc3Vic3lz LmgKaW5kZXggMjc2Y2IzZTMxYzQuLmRkNTQ4NjkzNTFmIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fp b19zdWJzeXMuaApAQCAtMjAsMTIgKzIwLDggQEAKIAogCiAvKiBhaW9faW5pdC5jICovCi1l eHRlcm4gU2l6ZSBBaW9TaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBBaW9TaG1lbUlu aXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIHBnYWlvX2luaXRfYmFja2VuZCh2b2lkKTsKIAot CiAvKiBhaW8uYyAqLwogZXh0ZXJuIHZvaWQgcGdhaW9fZXJyb3JfY2xlYW51cCh2b2lkKTsK IGV4dGVybiB2b2lkIEF0RU9YYWN0X0Fpbyhib29sIGlzX2NvbW1pdCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGMxOTlmMThhMjdhLi5iNDM4Nzk0ZDQ2ZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTUzLDMgKzUzLDYgQEAg UEdfU0hNRU1fU1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKIAogLyogb3Ro ZXIgbW9kdWxlcyB0aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlICovCiBQR19T SE1FTV9TVUJTWVNURU0oQXN5bmNTaG1lbUNhbGxiYWNrcykKKworLyogQUlPIHN1YnN5c3Rl bS4gVGhpcyBkZWxlZ2F0ZXMgdG8gdGhlIG1ldGhvZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8K K1BHX1NITUVNX1NVQlNZU1RFTShBaW9TaG1lbUNhbGxiYWNrcykKLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Disposition: attachment; filename="v11-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Transfer-Encoding: base64 RnJvbSAwZWY5OWQwOTU4YzEyYmZmYTY5ZjU1MjljY2U4MmZhZjcyMTVkMmYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMjM6NDQ6MTUgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAxMi8xNF0gQWRkIG9wdGlvbiBmb3IgYWxpZ25pbmcgc2ht ZW0gYWxsb2NhdGlvbnMKClRoZSBidWZmZXIgYmxvY2tzIChpbiB0aGUgbmV4dCBjb21taXQp IGFyZSBJTy1hbGlnbmVkLiBUaGlzIG1pZ2h0IGNvbWUKaGFuZHkgaW4gb3RoZXIgcGxhY2Vz IHRvbywgc28gbWFrZSBpdCBhbiBleHBsaWNpdCBmZWF0dXJlIG9mClNobWVtUmVxdWVzdFN0 cnVjdC4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIHwgMjYgKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAg fCAgNiArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTAgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0u YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggYmMxODZkNmVhMTcu Ljk3MzgxMWU1NDVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTIzOSw3ICsy MzksNyBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRvckRhdGEKIAogI2RlZmluZSBT aG1lbUluZGV4TG9jayAoJlNobWVtQWxsb2NhdG9yLT5pbmRleF9sb2NrKQogCi1zdGF0aWMg dm9pZCAqU2htZW1BbGxvY1JhdyhTaXplIHNpemUsIFNpemUgKmFsbG9jYXRlZF9zaXplKTsK K3N0YXRpYyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSBhbGlnbm1lbnQs IFNpemUgKmFsbG9jYXRlZF9zaXplKTsKIAogLyogc2hhcmVkIG1lbW9yeSBnbG9iYWwgdmFy aWFibGVzICovCiAKQEAgLTQwMCw3ICs0MDAsOCBAQCBTaG1lbUdldFJlcXVlc3RlZFNpemUo dm9pZCkKIAl7CiAJCXNpemUgPSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRpb25zLT5z aXplKTsKIAkJLyogY2FsY3VsYXRlIGFsaWdubWVudCBwYWRkaW5nIGxpa2UgU2htZW1BbGxv Y1JhdygpIGRvZXMgKi8KLQkJc2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCQlzaXpl ID0gVFlQRUFMSUdOKE1heChyZXF1ZXN0LT5vcHRpb25zLT5hbGlnbm1lbnQsIFBHX0NBQ0hF X0xJTkVfU0laRSksCisJCQkJCQkgc2l6ZSk7CiAJfQogCiAJcmV0dXJuIHNpemU7CkBAIC01 MjUsNyArNTI2LDkgQEAgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVl c3QpCiAJICogV2UgaW5zZXJ0ZWQgdGhlIGVudHJ5IHRvIHRoZSBzaGFyZWQgbWVtb3J5IGlu ZGV4LiAgQWxsb2NhdGUgcmVxdWVzdGVkCiAJICogYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkg Zm9yIGl0LCBhbmQgaW5pdGlhbGl6ZSB0aGUgaW5kZXggZW50cnkuCiAJICovCi0Jc3RydWN0 UHRyID0gU2htZW1BbGxvY1JhdyhyZXF1ZXN0LT5vcHRpb25zLT5zaXplLCAmYWxsb2NhdGVk X3NpemUpOworCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+ c2l6ZSwKKwkJCQkJCQkgIHJlcXVlc3QtPm9wdGlvbnMtPmFsaWdubWVudCwKKwkJCQkJCQkg ICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQogCXsKIAkJLyog b3V0IG9mIG1lbW9yeTsgcmVtb3ZlIHRoZSBmYWlsZWQgU2htZW1JbmRleCBlbnRyeSAqLwpA QCAtNzU0LDcgKzc1Nyw3IEBAIFNobWVtQWxsb2MoU2l6ZSBzaXplKQogCXZvaWQJICAgKm5l d1NwYWNlOwogCVNpemUJCWFsbG9jYXRlZF9zaXplOwogCi0JbmV3U3BhY2UgPSBTaG1lbUFs bG9jUmF3KHNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7CisJbmV3U3BhY2UgPSBTaG1lbUFsbG9j UmF3KHNpemUsIDAsICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKCFuZXdTcGFjZSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLApAQCAt NzczLDcgKzc3Niw3IEBAIFNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSkKIHsKIAlTaXpl CQlhbGxvY2F0ZWRfc2l6ZTsKIAotCXJldHVybiBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxv Y2F0ZWRfc2l6ZSk7CisJcmV0dXJuIFNobWVtQWxsb2NSYXcoc2l6ZSwgMCwgJmFsbG9jYXRl ZF9zaXplKTsKIH0KIAogLyoKQEAgLTc4Myw4ICs3ODYsOSBAQCBTaG1lbUFsbG9jTm9FcnJv cihTaXplIHNpemUpCiAgKiBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIHJlcXVlc3RlZCBwbHVz IGFueSBwYWRkaW5nIHdlIGNob29zZSB0byBhZGQuCiAgKi8KIHN0YXRpYyB2b2lkICoKLVNo bWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKK1NobWVtQWxs b2NSYXcoU2l6ZSBzaXplLCBTaXplIGFsaWdubWVudCwgU2l6ZSAqYWxsb2NhdGVkX3NpemUp CiB7CisJU2l6ZQkJcmF3U3RhcnQ7CiAJU2l6ZQkJbmV3U3RhcnQ7CiAJU2l6ZQkJbmV3RnJl ZTsKIAl2b2lkCSAgICpuZXdTcGFjZTsKQEAgLTgwMCwxNCArODA0LDE1IEBAIFNobWVtQWxs b2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKIAkgKiBzdHJ1Y3R1cmVz IG91dCB0byBhIHBvd2VyLW9mLXR3byBzaXplIC0gYnV0IHdpdGhvdXQgdGhpcywgZXZlbiB0 aGF0CiAJICogd29uJ3QgYmUgc3VmZmljaWVudC4KIAkgKi8KLQlzaXplID0gQ0FDSEVMSU5F QUxJR04oc2l6ZSk7Ci0JKmFsbG9jYXRlZF9zaXplID0gc2l6ZTsKKwlpZiAoYWxpZ25tZW50 IDwgUEdfQ0FDSEVfTElORV9TSVpFKQorCQlhbGlnbm1lbnQgPSBQR19DQUNIRV9MSU5FX1NJ WkU7CiAKIAlBc3NlcnQoU2htZW1TZWdIZHIgIT0gTlVMTCk7CiAKIAlTcGluTG9ja0FjcXVp cmUoJlNobWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrKTsKIAotCW5ld1N0YXJ0ID0gU2htZW1B bGxvY2F0b3ItPmZyZWVfb2Zmc2V0OworCXJhd1N0YXJ0ID0gU2htZW1BbGxvY2F0b3ItPmZy ZWVfb2Zmc2V0OworCW5ld1N0YXJ0ID0gVFlQRUFMSUdOKGFsaWdubWVudCwgcmF3U3RhcnQp OwogCiAJbmV3RnJlZSA9IG5ld1N0YXJ0ICsgc2l6ZTsKIAlpZiAobmV3RnJlZSA8PSBTaG1l bVNlZ0hkci0+dG90YWxzaXplKQpAQCAtODIxLDggKzgyNiw5IEBAIFNobWVtQWxsb2NSYXco U2l6ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKIAlTcGluTG9ja1JlbGVhc2UoJlNo bWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrKTsKIAogCS8qIG5vdGUgdGhpcyBhc3NlcnQgaXMg b2theSB3aXRoIG5ld1NwYWNlID09IE5VTEwgKi8KLQlBc3NlcnQobmV3U3BhY2UgPT0gKHZv aWQgKikgQ0FDSEVMSU5FQUxJR04obmV3U3BhY2UpKTsKKwlBc3NlcnQobmV3U3BhY2UgPT0g KHZvaWQgKikgVFlQRUFMSUdOKGFsaWdubWVudCwgbmV3U3BhY2UpKTsKIAorCSphbGxvY2F0 ZWRfc2l6ZSA9IG5ld0ZyZWUgLSByYXdTdGFydDsKIAlyZXR1cm4gbmV3U3BhY2U7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc2htZW0uaAppbmRleCAxNDdhNjkxNWY3ZS4uOTEyMThkYjZkNmUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKQEAgLTUxLDYgKzUxLDEyIEBAIHR5cGVkZWYgc3RydWN0IFNobWVt U3RydWN0T3B0cwogCSAqLwogCXNzaXplX3QJCXNpemU7CiAKKwkvKgorCSAqIEFsaWdubWVu dCBvZiB0aGUgc3RhcnRpbmcgYWRkcmVzcy4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gY2Fj aGVsaW5lCisJICogYm91bmRhcnkuICBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgorCSAqLwor CXNpemVfdAkJYWxpZ25tZW50OworCiAJLyoKIAkgKiBXaGVuIHRoZSBzaG1lbSBhcmVhIGlz IGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLCBwb2ludGVyIHRvIGl0IGlzCiAJICogc3Rv cmVkIGluICpwdHIuICBJdCB1c3VhbGx5IHBvaW50cyB0byBhIGdsb2JhbCB2YXJpYWJsZSwg dXNlZCB0byBhY2Nlc3MKLS0gCjIuNDcuMwoK --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Disposition: attachment; filename="v11-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Transfer-Encoding: base64 RnJvbSAzYzM0NWZmMjcyNDdmMGNlNTc3ZmRjNjBkN2I5MDllNTFmYTBlYjM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDo0NDowMiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDEzLzE0XSBDb252ZXJ0IGJ1ZmZlciBtYW5hZ2VyIHRvIHRo ZSBuZXcgQVBJCgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMg IHwgMTQ5ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zl90YWJsZS5jIHwgIDU0ICsrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvZnJlZWxpc3QuYyAgfCAgOTMgKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9zdG9y YWdlL2J1Zl9pbnRlcm5hbHMuaCAgICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1 Zm1nci5oICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3Rl bWxpc3QuaCAgICB8ICAgMyArCiA3IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCsp LCAxODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmX2luaXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0 LmMKaW5kZXggYzBjMjIzYjJlMzIuLjE0MDdjOTMwYzU2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zl9pbml0LmMKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNsdWRlICJzdG9y YWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY2xpc3QuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAKIEJ1ZmZlckRlc2NQYWRkZWQg KkJ1ZmZlckRlc2NyaXB0b3JzOwogY2hhcgkgICAqQnVmZmVyQmxvY2tzOwpAQCAtMjUsNiAr MjcsMTUgQEAgQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKkJ1ZmZlcklPQ1ZB cnJheTsKIFdyaXRlYmFja0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiBDa3B0 U29ydEl0ZW0gKkNrcHRCdWZmZXJJZHM7CiAKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1l bUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUF0dGFj aCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBCdWZmZXJNYW5hZ2VyU2ht ZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBCdWZmZXJNYW5hZ2VyU2htZW1SZXF1 ZXN0LAorCS5pbml0X2ZuID0gQnVmZmVyTWFuYWdlclNobWVtSW5pdCwKKwkuYXR0YWNoX2Zu ID0gQnVmZmVyTWFuYWdlclNobWVtQXR0YWNoLAorfTsKIAogLyoKICAqIERhdGEgU3RydWN0 dXJlczoKQEAgLTYwLDM3ICs3MSwzMSBAQCBDa3B0U29ydEl0ZW0gKkNrcHRCdWZmZXJJZHM7 CiAKIAogLyoKLSAqIEluaXRpYWxpemUgc2hhcmVkIGJ1ZmZlciBwb29sCi0gKgotICogVGhp cyBpcyBjYWxsZWQgb25jZSBkdXJpbmcgc2hhcmVkLW1lbW9yeSBpbml0aWFsaXphdGlvbiAo ZWl0aGVyIGluIHRoZQotICogcG9zdG1hc3Rlciwgb3IgaW4gYSBzdGFuZGFsb25lIGJhY2tl bmQpLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBhcmVhIGZvciB0aGUgYnVmZmVyIHBv b2wuCiAgKi8KLXZvaWQKLUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2 b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZEJ1ZnMsCi0JCQkJZm91bmREZXNjcywKLQkJCQlmb3VuZElPQ1YsCi0JCQkJZm91bmRC dWZDa3B0OwotCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJ1ZmZlciBEZXNjcmlw dG9ycyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQnVmZmVyRGVzY1Bh ZGRlZCksCiAJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnku ICovCi0JQnVmZmVyRGVzY3JpcHRvcnMgPSAoQnVmZmVyRGVzY1BhZGRlZCAqKQotCQlTaG1l bUluaXRTdHJ1Y3QoIkJ1ZmZlciBEZXNjcmlwdG9ycyIsCi0JCQkJCQlOQnVmZmVycyAqIHNp emVvZihCdWZmZXJEZXNjUGFkZGVkKSwKLQkJCQkJCSZmb3VuZERlc2NzKTsKKwkJCQkJICAg LmFsaWdubWVudCA9IFBHX0NBQ0hFX0xJTkVfU0laRSwKKwkJCQkJICAgLnB0ciA9ICh2b2lk ICoqKSAmQnVmZmVyRGVzY3JpcHRvcnMsCisJCSk7CiAKKwlTaG1lbVJlcXVlc3RTdHJ1Y3Qo Lm5hbWUgPSAiQnVmZmVyIEJsb2NrcyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiAo U2l6ZSkgQkxDS1NaLAogCS8qIEFsaWduIGJ1ZmZlciBwb29sIG9uIElPIHBhZ2Ugc2l6ZSBi b3VuZGFyeS4gKi8KLQlCdWZmZXJCbG9ja3MgPSAoY2hhciAqKQotCQlUWVBFQUxJR04oUEdf SU9fQUxJR05fU0laRSwKLQkJCQkgIFNobWVtSW5pdFN0cnVjdCgiQnVmZmVyIEJsb2NrcyIs Ci0JCQkJCQkJCSAgTkJ1ZmZlcnMgKiAoU2l6ZSkgQkxDS1NaICsgUEdfSU9fQUxJR05fU0la RSwKLQkJCQkJCQkJICAmZm91bmRCdWZzKSk7Ci0KLQkvKiBBbGlnbiBjb25kaXRpb24gdmFy aWFibGVzIHRvIGNhY2hlbGluZSBib3VuZGFyeS4gKi8KLQlCdWZmZXJJT0NWQXJyYXkgPSAo Q29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCi0JCQkJCQlOQnVmZmVycyAqIHNp emVvZihDb25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCksCi0JCQkJCQkmZm91bmRJ T0NWKTsKKwkJCQkJICAgLmFsaWdubWVudCA9IFBHX0lPX0FMSUdOX1NJWkUsCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJkJ1ZmZlckJsb2NrcywKKwkJKTsKKworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCisJCQkJ CSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFs bHlQYWRkZWQpLAorCS8qIEFsaWduIGRlc2NyaXB0b3JzIHRvIGEgY2FjaGVsaW5lIGJvdW5k YXJ5LiAqLworCQkJCQkgICAuYWxpZ25tZW50ID0gUEdfQ0FDSEVfTElORV9TSVpFLAorCQkJ CQkgICAucHRyID0gKHZvaWQgKiopICZCdWZmZXJJT0NWQXJyYXksCisJCSk7CiAKIAkvKgog CSAqIFRoZSBhcnJheSB1c2VkIHRvIHNvcnQgdG8tYmUtY2hlY2twb2ludGVkIGJ1ZmZlciBp ZHMgaXMgbG9jYXRlZCBpbgpAQCAtOTksODAgKzEwNCw1MCBAQCBCdWZmZXJNYW5hZ2VyU2ht ZW1Jbml0KHZvaWQpCiAJICogdGhlIGNoZWNrcG9pbnRlciBpcyByZXN0YXJ0ZWQsIG1lbW9y eSBhbGxvY2F0aW9uIGZhaWx1cmVzIHdvdWxkIGJlCiAJICogcGFpbmZ1bC4KIAkgKi8KLQlD a3B0QnVmZmVySWRzID0gKENrcHRTb3J0SXRlbSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNo ZWNrcG9pbnQgQnVmZmVySWRzIiwKLQkJCQkJCU5CdWZmZXJzICogc2l6ZW9mKENrcHRTb3J0 SXRlbSksICZmb3VuZEJ1ZkNrcHQpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJD aGVja3BvaW50IEJ1ZmZlcklkcyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXpl b2YoQ2twdFNvcnRJdGVtKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQ2twdEJ1ZmZl cklkcywKKwkJKTsKK30KIAotCWlmIChmb3VuZERlc2NzIHx8IGZvdW5kQnVmcyB8fCBmb3Vu ZElPQ1YgfHwgZm91bmRCdWZDa3B0KQotCXsKLQkJLyogc2hvdWxkIGZpbmQgYWxsIG9mIHRo ZXNlLCBvciBub25lIG9mIHRoZW0gKi8KLQkJQXNzZXJ0KGZvdW5kRGVzY3MgJiYgZm91bmRC dWZzICYmIGZvdW5kSU9DViAmJiBmb3VuZEJ1ZkNrcHQpOwotCQkvKiBub3RlOiB0aGlzIHBh dGggaXMgb25seSB0YWtlbiBpbiBFWEVDX0JBQ0tFTkQgY2FzZSAqLwotCX0KLQllbHNlCisv KgorICogSW5pdGlhbGl6ZSBzaGFyZWQgYnVmZmVyIHBvb2wKKyAqCisgKiBUaGlzIGlzIGNh bGxlZCBvbmNlIGR1cmluZyBzaGFyZWQtbWVtb3J5IGluaXRpYWxpemF0aW9uIChlaXRoZXIg aW4gdGhlCisgKiBwb3N0bWFzdGVyLCBvciBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCkuCisg Ki8KK3N0YXRpYyB2b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQgKmFyZykKK3sK KwkvKgorCSAqIEluaXRpYWxpemUgYWxsIHRoZSBidWZmZXIgaGVhZGVycy4KKwkgKi8KKwlm b3IgKGludCBpID0gMDsgaSA8IE5CdWZmZXJzOyBpKyspCiAJewotCQlpbnQJCQlpOworCQlC dWZmZXJEZXNjICpidWYgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGkpOwogCi0JCS8qCi0JCSAq IEluaXRpYWxpemUgYWxsIHRoZSBidWZmZXIgaGVhZGVycy4KLQkJICovCi0JCWZvciAoaSA9 IDA7IGkgPCBOQnVmZmVyczsgaSsrKQotCQl7Ci0JCQlCdWZmZXJEZXNjICpidWYgPSBHZXRC dWZmZXJEZXNjcmlwdG9yKGkpOworCQlDbGVhckJ1ZmZlclRhZygmYnVmLT50YWcpOwogCi0J CQlDbGVhckJ1ZmZlclRhZygmYnVmLT50YWcpOworCQlwZ19hdG9taWNfaW5pdF91NjQoJmJ1 Zi0+c3RhdGUsIDApOworCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IElOVkFMSURf UFJPQ19OVU1CRVI7CiAKLQkJCXBnX2F0b21pY19pbml0X3U2NCgmYnVmLT5zdGF0ZSwgMCk7 Ci0JCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7 CisJCWJ1Zi0+YnVmX2lkID0gaTsKIAotCQkJYnVmLT5idWZfaWQgPSBpOworCQlwZ2Fpb193 cmVmX2NsZWFyKCZidWYtPmlvX3dyZWYpOwogCi0JCQlwZ2Fpb193cmVmX2NsZWFyKCZidWYt PmlvX3dyZWYpOwotCi0JCQlwcm9jbGlzdF9pbml0KCZidWYtPmxvY2tfd2FpdGVycyk7Ci0J CQlDb25kaXRpb25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1YoYnVmKSk7 Ci0JCX0KKwkJcHJvY2xpc3RfaW5pdCgmYnVmLT5sb2NrX3dhaXRlcnMpOworCQlDb25kaXRp b25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1YoYnVmKSk7CiAJfQogCi0J LyogSW5pdCBvdGhlciBzaGFyZWQgYnVmZmVyLW1hbmFnZW1lbnQgc3R1ZmYgKi8KLQlTdHJh dGVneUluaXRpYWxpemUoIWZvdW5kRGVzY3MpOwotCiAJLyogSW5pdGlhbGl6ZSBwZXItYmFj a2VuZCBmaWxlIGZsdXNoIGNvbnRleHQgKi8KIAlXcml0ZWJhY2tDb250ZXh0SW5pdCgmQmFj a2VuZFdyaXRlYmFja0NvbnRleHQsCiAJCQkJCQkgJmJhY2tlbmRfZmx1c2hfYWZ0ZXIpOwog fQogCi0vKgotICogQnVmZmVyTWFuYWdlclNobWVtU2l6ZQotICoKLSAqIGNvbXB1dGUgdGhl IHNpemUgb2Ygc2hhcmVkIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sIGluY2x1ZGluZwot ICogZGF0YSBwYWdlcywgYnVmZmVyIGRlc2NyaXB0b3JzLCBoYXNoIHRhYmxlcywgZXRjLgot ICovCi1TaXplCi1CdWZmZXJNYW5hZ2VyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAor QnVmZmVyTWFuYWdlclNobWVtQXR0YWNoKHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0g MDsKLQotCS8qIHNpemUgb2YgYnVmZmVyIGRlc2NyaXB0b3JzICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLCBzaXplb2YoQnVmZmVyRGVzY1BhZGRlZCkp KTsKLQkvKiB0byBhbGxvdyBhbGlnbmluZyBidWZmZXIgZGVzY3JpcHRvcnMgKi8KLQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpFKTsKLQotCS8qIHNpemUgb2Yg ZGF0YSBwYWdlcywgcGx1cyBhbGlnbm1lbnQgcGFkZGluZyAqLwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBQR19JT19BTElHTl9TSVpFKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVs X3NpemUoTkJ1ZmZlcnMsIEJMQ0tTWikpOwotCi0JLyogc2l6ZSBvZiBzdHVmZiBjb250cm9s bGVkIGJ5IGZyZWVsaXN0LmMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RyYXRlZ3lT aG1lbVNpemUoKSk7Ci0KLQkvKiBzaXplIG9mIEkvTyBjb25kaXRpb24gdmFyaWFibGVzICov Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLAotCQkJCQkJCQkg ICBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQpKSk7Ci0JLyogdG8g YWxsb3cgYWxpZ25pbmcgdGhlIGFib3ZlICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBH X0NBQ0hFX0xJTkVfU0laRSk7Ci0KLQkvKiBzaXplIG9mIGNoZWNrcG9pbnQgc29ydCBhcnJh eSBpbiBidWZtZ3IuYyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShOQnVm ZmVycywgc2l6ZW9mKENrcHRTb3J0SXRlbSkpKTsKLQotCXJldHVybiBzaXplOworCS8qIElu aXRpYWxpemUgcGVyLWJhY2tlbmQgZmlsZSBmbHVzaCBjb250ZXh0ICovCisJV3JpdGViYWNr Q29udGV4dEluaXQoJkJhY2tlbmRXcml0ZWJhY2tDb250ZXh0LAorCQkJCQkJICZiYWNrZW5k X2ZsdXNoX2FmdGVyKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zl90YWJsZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxl LmMKaW5kZXggZDA0ZWY3NGI4NTAuLjM0N2JmMjY3ZDczIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZfdGFibGUuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogLyogZW50cnkgZm9yIGJ1ZmZlciBsb29r dXAgaGFzaHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMzIsMzcgKzMzLDQyIEBAIHR5 cGVkZWYgc3RydWN0CiAKIHN0YXRpYyBIVEFCICpTaGFyZWRCdWZIYXNoOwogCitzdGF0aWMg dm9pZCBCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOwogCi0vKgotICogRXN0aW1h dGUgc3BhY2UgbmVlZGVkIGZvciBtYXBwaW5nIGhhc2h0YWJsZQotICoJCXNpemUgaXMgdGhl IGRlc2lyZWQgaGFzaCB0YWJsZSBzaXplIChwb3NzaWJseSBtb3JlIHRoYW4gTkJ1ZmZlcnMp Ci0gKi8KLVNpemUKLUJ1ZlRhYmxlU2htZW1TaXplKGludCBzaXplKQotewotCXJldHVybiBo YXNoX2VzdGltYXRlX3NpemUoc2l6ZSwgc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCkpOwotfQor Y29uc3QgU2htZW1DYWxsYmFja3MgQnVmVGFibGVTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVx dWVzdF9mbiA9IEJ1ZlRhYmxlU2htZW1SZXF1ZXN0LAorCS8qIG5vIHNwZWNpYWwgaW5pdGlh bGl6YXRpb24gbmVlZGVkLCB0aGUgaGFzaCB0YWJsZSB3aWxsIHN0YXJ0IGVtcHR5ICovCit9 OwogCiAvKgotICogSW5pdGlhbGl6ZSBzaG1lbSBoYXNoIHRhYmxlIGZvciBtYXBwaW5nIGJ1 ZmZlcnMKKyAqIFJlZ2lzdGVyIHNobWVtIGhhc2ggdGFibGUgZm9yIG1hcHBpbmcgYnVmZmVy cy4KICAqCQlzaXplIGlzIHRoZSBkZXNpcmVkIGhhc2ggdGFibGUgc2l6ZSAocG9zc2libHkg bW9yZSB0aGFuIE5CdWZmZXJzKQogICovCiB2b2lkCi1Jbml0QnVmVGFibGUoaW50IHNpemUp CitCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JSEFTSENUTAkJaW5mbzsK LQotCS8qIGFzc3VtZSBubyBsb2NraW5nIGlzIG5lZWRlZCB5ZXQgKi8KLQotCS8qIEJ1ZmZl clRhZyBtYXBzIHRvIEJ1ZmZlciAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihCdWZmZXJU YWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCk7Ci0JaW5m by5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKLQotCVNoYXJlZEJ1 Zkhhc2ggPSBTaG1lbUluaXRIYXNoKCJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCi0J CQkJCQkJCSAgc2l6ZSwKLQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTIHwgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCWlu dAkJCXNpemU7CisKKwkvKgorCSAqIFJlcXVlc3QgdGhlIHNoYXJlZCBidWZmZXIgbG9va3Vw IGhhc2h0YWJsZS4KKwkgKgorCSAqIFNpbmNlIHdlIGNhbid0IHRvbGVyYXRlIHJ1bm5pbmcg b3V0IG9mIGxvb2t1cCB0YWJsZSBlbnRyaWVzLCB3ZSBtdXN0IGJlCisJICogc3VyZSB0byBz cGVjaWZ5IGFuIGFkZXF1YXRlIHRhYmxlIHNpemUgaGVyZS4gIFRoZSBtYXhpbXVtIHN0ZWFk eS1zdGF0ZQorCSAqIHVzYWdlIGlzIG9mIGNvdXJzZSBOQnVmZmVycyBlbnRyaWVzLCBidXQg QnVmZmVyQWxsb2MoKSB0cmllcyB0byBpbnNlcnQKKwkgKiBhIG5ldyBlbnRyeSBiZWZvcmUg ZGVsZXRpbmcgdGhlIG9sZC4gIEluIHByaW5jaXBsZSB0aGlzIGNvdWxkIGJlCisJICogaGFw cGVuaW5nIGluIGVhY2ggcGFydGl0aW9uIGNvbmN1cnJlbnRseSwgc28gd2UgY291bGQgbmVl ZCBhcyBtYW55IGFzCisJICogTkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlMgZW50 cmllcy4KKwkgKi8KKwlzaXplID0gTkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlM7 CisKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRh YmxlIiwKKwkJCQkJIC5uZWxlbXMgPSBzaXplLAorCQkJCQkgLnB0ciA9ICZTaGFyZWRCdWZI YXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyksCisJ CQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihCdWZmZXJMb29rdXBFbnQpLAor CQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9O UywKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf UEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFLAorCQkpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggYjc2ODc4MzYxODguLmZkYjViYWQ3 OTEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTIwLDYg KzIwLDggQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIK IAogI2RlZmluZSBJTlRfQUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUgaW50 ICopJih2YXIpKSkpCiAKQEAgLTU2LDYgKzU4LDE0IEBAIHR5cGVkZWYgc3RydWN0CiAvKiBQ b2ludGVycyB0byBzaGFyZWQgc3RhdGUgKi8KIHN0YXRpYyBCdWZmZXJTdHJhdGVneUNvbnRy b2wgKlN0cmF0ZWd5Q29udHJvbCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFN0cmF0ZWd5Q3Rs U2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBTdHJhdGVneUN0bFNobWVt SW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBTdHJhdGVneUN0bFNo bWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gU3RyYXRlZ3lDdGxTaG1lbVJlcXVl c3QsCisJLmluaXRfZm4gPSBTdHJhdGVneUN0bFNobWVtSW5pdCwKK307CisKIC8qCiAgKiBQ cml2YXRlIChub24tc2hhcmVkKSBzdGF0ZSBmb3IgbWFuYWdpbmcgYSByaW5nIG9mIHNoYXJl ZCBidWZmZXJzIHRvIHJlLXVzZS4KICAqIFRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IGtp bmQgb2YgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb2JqZWN0LCBidXQgc29tZWRheQpAQCAtMzY5 LDgwICszNzksMzUgQEAgU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihpbnQgYmd3cHJvY25vKQog CiAKIC8qCi0gKiBTdHJhdGVneVNobWVtU2l6ZQotICoKLSAqIGVzdGltYXRlIHRoZSBzaXpl IG9mIHNoYXJlZCBtZW1vcnkgdXNlZCBieSB0aGUgZnJlZWxpc3QtcmVsYXRlZCBzdHJ1Y3R1 cmVzLgotICoKLSAqIE5vdGU6IGZvciBzb21ld2hhdCBoaXN0b3JpY2FsIHJlYXNvbnMsIHRo ZSBidWZmZXIgbG9va3VwIGhhc2h0YWJsZSBzaXplCi0gKiBpcyBhbHNvIGRldGVybWluZWQg aGVyZS4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1SZXF1ZXN0IC0tIHJlcXVlc3Qgc2hhcmVkIG1l bW9yeSBmb3IgdGhlIGJ1ZmZlcgorICoJCWNhY2hlIHJlcGxhY2VtZW50IHN0cmF0ZWd5Lgog ICovCi1TaXplCi1TdHJhdGVneVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1N0cmF0 ZWd5Q3RsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQot CS8qIHNpemUgb2YgbG9va3VwIGhhc2ggdGFibGUgLi4uIHNlZSBjb21tZW50IGluIFN0cmF0 ZWd5SW5pdGlhbGl6ZSAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZUYWJsZVNobWVt U2l6ZShOQnVmZmVycyArIE5VTV9CVUZGRVJfUEFSVElUSU9OUykpOwotCi0JLyogc2l6ZSBv ZiB0aGUgc2hhcmVkIHJlcGxhY2VtZW50IHN0cmF0ZWd5IGNvbnRyb2wgYmxvY2sgKi8KLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgTUFYQUxJR04oc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29u dHJvbCkpKTsKLQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJCdWZmZXIgU3RyYXRlZ3kgU3RhdHVzIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoQnVm ZmVyU3RyYXRlZ3lDb250cm9sKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmU3RyYXRl Z3lDb250cm9sCisJCSk7CiB9CiAKIC8qCi0gKiBTdHJhdGVneUluaXRpYWxpemUgLS0gaW5p dGlhbGl6ZSB0aGUgYnVmZmVyIGNhY2hlIHJlcGxhY2VtZW50Ci0gKgkJc3RyYXRlZ3kuCi0g KgotICogQXNzdW1lczogQWxsIG9mIHRoZSBidWZmZXJzIGFyZSBhbHJlYWR5IGJ1aWx0IGlu dG8gYSBsaW5rZWQgbGlzdC4KLSAqCQlPbmx5IGNhbGxlZCBieSBwb3N0bWFzdGVyIGFuZCBv bmx5IGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1Jbml0IC0t IGluaXRpYWxpemUgdGhlIGJ1ZmZlciBjYWNoZSByZXBsYWNlbWVudCBzdHJhdGVneS4KICAq Lwotdm9pZAotU3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCkKK3N0YXRpYyB2b2lkCitT dHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CisJU3Bp bkxvY2tJbml0KCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIAot CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxl LgotCSAqCi0JICogU2luY2Ugd2UgY2FuJ3QgdG9sZXJhdGUgcnVubmluZyBvdXQgb2YgbG9v a3VwIHRhYmxlIGVudHJpZXMsIHdlIG11c3QgYmUKLQkgKiBzdXJlIHRvIHNwZWNpZnkgYW4g YWRlcXVhdGUgdGFibGUgc2l6ZSBoZXJlLiAgVGhlIG1heGltdW0gc3RlYWR5LXN0YXRlCi0J ICogdXNhZ2UgaXMgb2YgY291cnNlIE5CdWZmZXJzIGVudHJpZXMsIGJ1dCBCdWZmZXJBbGxv YygpIHRyaWVzIHRvIGluc2VydAotCSAqIGEgbmV3IGVudHJ5IGJlZm9yZSBkZWxldGluZyB0 aGUgb2xkLiAgSW4gcHJpbmNpcGxlIHRoaXMgY291bGQgYmUKLQkgKiBoYXBwZW5pbmcgaW4g ZWFjaCBwYXJ0aXRpb24gY29uY3VycmVudGx5LCBzbyB3ZSBjb3VsZCBuZWVkIGFzIG1hbnkg YXMKLQkgKiBOQnVmZmVycyArIE5VTV9CVUZGRVJfUEFSVElUSU9OUyBlbnRyaWVzLgotCSAq LwotCUluaXRCdWZUYWJsZShOQnVmZmVycyArIE5VTV9CVUZGRVJfUEFSVElUSU9OUyk7Ci0K LQkvKgotCSAqIEdldCBvciBjcmVhdGUgdGhlIHNoYXJlZCBzdHJhdGVneSBjb250cm9sIGJs b2NrCi0JICovCi0JU3RyYXRlZ3lDb250cm9sID0gKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCAq KQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJ1ZmZlciBTdHJhdGVneSBTdGF0dXMiLAotCQkJCQkJ c2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYg KCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIE9ubHkgZG9uZSBvbmNlLCB1c3VhbGx5IGluIHBv c3RtYXN0ZXIKLQkJICovCi0JCUFzc2VydChpbml0KTsKLQotCQlTcGluTG9ja0luaXQoJlN0 cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCS8qIEluaXRpYWxpemUg dGhlIGNsb2NrLXN3ZWVwIHBvaW50ZXIgKi8KKwlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0 ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CiAKLQkJLyogSW5pdGlhbGl6ZSB0 aGUgY2xvY2stc3dlZXAgcG9pbnRlciAqLwotCQlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0 ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CisJLyogQ2xlYXIgc3RhdGlzdGlj cyAqLworCVN0cmF0ZWd5Q29udHJvbC0+Y29tcGxldGVQYXNzZXMgPSAwOworCXBnX2F0b21p Y19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxvY3MsIDApOwogCi0J CS8qIENsZWFyIHN0YXRpc3RpY3MgKi8KLQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBh c3NlcyA9IDA7Ci0JCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1C dWZmZXJBbGxvY3MsIDApOwotCi0JCS8qIE5vIHBlbmRpbmcgbm90aWZpY2F0aW9uICovCi0J CVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0 KCFpbml0KTsKKwkvKiBObyBwZW5kaW5nIG5vdGlmaWNhdGlvbiAqLworCVN0cmF0ZWd5Q29u dHJvbC0+Ymd3cHJvY25vID0gLTE7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmlu ZGV4IGE1MTBjOTI4ZGFhLi5mNjRjMWQ1OWZhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2ku YwpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9haW9fc3Vic3lzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wZ19zaG1lbS5oIgpAQCAtOTksNyArOTgsNiBAQCBDYWxjdWxhdGVTaG1l bVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRT aXplKCkpOwogCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3NpemUo c2l6ZSwgQnVmZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgTG9ja01hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhM b2dQcmVmZXRjaFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExPR1No bWVtU2l6ZSgpKTsKQEAgLTI2Myw3ICsyNjEsNiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3Ry dWN0cyh2b2lkKQogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1lbUluaXQo KTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKLQlCdWZmZXJNYW5hZ2VyU2htZW1Jbml0 KCk7CiAKIAkvKgogCSAqIFNldCB1cCBsb2NrIG1hbmFnZXIKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9i dWZfaW50ZXJuYWxzLmgKaW5kZXggYWQxYjdiMjIxNmEuLjg5NjE1YTI1NGEzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApAQCAtNTg3LDEyICs1ODcsNyBAQCBleHRl cm4gYm9vbCBTdHJhdGVneVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJh dGVneSwKIGV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3RhcnQodWludDMyICpjb21wbGV0ZV9w YXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYyk7CiBleHRlcm4gdm9pZCBTdHJhdGVneU5v dGlmeUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pOwogCi1leHRlcm4gU2l6ZSBTdHJhdGVneVNo bWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGlu aXQpOwotCiAvKiBidWZfdGFibGUuYyAqLwotZXh0ZXJuIFNpemUgQnVmVGFibGVTaG1lbVNp emUoaW50IHNpemUpOwotZXh0ZXJuIHZvaWQgSW5pdEJ1ZlRhYmxlKGludCBzaXplKTsKIGV4 dGVybiB1aW50MzIgQnVmVGFibGVIYXNoQ29kZShCdWZmZXJUYWcgKnRhZ1B0cik7CiBleHRl cm4gaW50CUJ1ZlRhYmxlTG9va3VwKEJ1ZmZlclRhZyAqdGFnUHRyLCB1aW50MzIgaGFzaGNv ZGUpOwogZXh0ZXJuIGludAlCdWZUYWJsZUluc2VydChCdWZmZXJUYWcgKnRhZ1B0ciwgdWlu dDMyIGhhc2hjb2RlLCBpbnQgYnVmX2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvYnVmbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IGFh NjFhMzlkOWU2Li42ODM3YjM1ZmM2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCkBAIC0zNzEs MTAgKzM3MSw2IEBAIGV4dGVybiB2b2lkIE1hcmtEaXJ0eUFsbFVucGlubmVkQnVmZmVycyhp bnQzMiAqYnVmZmVyc19kaXJ0aWVkLAogCQkJCQkJCQkJCWludDMyICpidWZmZXJzX2FscmVh ZHlfZGlydHksCiAJCQkJCQkJCQkJaW50MzIgKmJ1ZmZlcnNfc2tpcHBlZCk7CiAKLS8qIGlu IGJ1Zl9pbml0LmMgKi8KLWV4dGVybiB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9p ZCk7Ci1leHRlcm4gU2l6ZSBCdWZmZXJNYW5hZ2VyU2htZW1TaXplKHZvaWQpOwotCiAvKiBp biBsb2NhbGJ1Zi5jICovCiBleHRlcm4gdm9pZCBBdFByb2NFeGl0X0xvY2FsQnVmZmVycyh2 b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0 LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCBiNDM4Nzk0 ZDQ2ZC4uZDhlMTE3NTZhNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vi c3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5o CkBAIC0zNiw2ICszNiw5IEBAIFBHX1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFj a3MpCiBQR19TSE1FTV9TVUJTWVNURU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKIFBHX1NI TUVNX1NVQlNZU1RFTShTVUJUUkFOU1NobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lT VEVNKE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZmZl ck1hbmFnZXJTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTdHJhdGVneUN0 bFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZlRhYmxlU2htZW1DYWxs YmFja3MpCiAKIC8qIHByZWRpY2F0ZSBsb2NrIG1hbmFnZXIgKi8KIFBHX1NITUVNX1NVQlNZ U1RFTShQcmVkaWNhdGVMb2NrU2htZW1DYWxsYmFja3MpCi0tIAoyLjQ3LjMKCg== --------------hsUfGDn10Nt9SeydxgvmbEbZ Content-Type: text/x-patch; charset=UTF-8; name="v11-0014-Convert-all-remaining-subsystems-to-use-the-new-.patch" Content-Disposition: attachment; filename*0="v11-0014-Convert-all-remaining-subsystems-to-use-the-new-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNTAxYWM1MmQ2MTljOTM4MGUxZjNlNmZlNWM3YTE4ZTZmNGYxNGMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTk6MDU6MjYgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAxNC8xNF0gQ29udmVydCBhbGwgcmVtYWluaW5nIHN1YnN5 c3RlbXMgdG8gdXNlIHRoZSBuZXcgQVBJCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vc3luY3NjYW4uYyAgICAgICAgICB8ICA3NiArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAgIHwgIDU0ICsrKy0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyAgICAgICAgIHwgIDc1ICsrKystLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgODIgKysr KystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jICAg fCAgNTEgKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YyAgICAgfCAgMzUgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQu YyAgICAgICAgIHwgIDUwICsrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYyAgICAgICAgICAgfCAgNzkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Ymd3b3JrZXIuYyAgICAgICAgICAgICB8IDEwNSArKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgIDU2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYyAgIHwgIDQxICsrLS0tCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jICAgICAgICAgICAgICAgfCAgNDMgKysr LS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICB8ICA2 MCArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAg ICB8ICA1NiArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNh bGN0bC5jICB8ICAyOSArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMgICAgICB8ICA1OSArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2xvdHN5bmMuYyAgICB8ICA0MSArKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgICAgIHwgIDY0ICsrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyAgICB8ICA1MSArKystLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICA1OSArKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgICAgICB8IDEyNCArLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAg fCAxMTMgKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5k X3N0YXR1cy5jICAgfCAxNzMgKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYyAgICAgfCAxNTggKysrKysrKystLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgIHwgIDgzICsr KystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYyAgICAg IHwgIDU3ICsrKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAg ICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zeW5jc2Nhbi5oICAgICAgICAg ICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2UuaCAgICAgICAg ICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCAgICAgICAgICAg ICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5o ICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5Lmgg ICAgICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3YWl0LmggICAg ICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCAgICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtl cl9pbnRlcm5hbHMuaCAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0 ZXIuaCAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFj aGVja3N1bV9zdGF0ZS5oICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wZ2Fy Y2guaCAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2Fs c3VtbWFyaXplci5oICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsY3RsLmggICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbGxhdW5jaGVyLmggICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oICAgICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90LmggICAgICAgICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdHN5bmMuaCAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxzZW5kZXIuaCAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9sb2NrLmggICAgICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL3N0b3Jh Z2Uvc3Vic3lzdGVtbGlzdC5oICAgICAgICAgICB8ICAyNyArKysKIHNyYy9pbmNsdWRlL3V0 aWxzL2JhY2tlbmRfc3RhdHVzLmggICAgICAgICAgICB8ICAgOCAtCiBzcmMvaW5jbHVkZS91 dGlscy9pbmplY3Rpb25fcG9pbnQuaCAgICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAyIC0KIC4uLi9pbmplY3Rp b25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMuYyAgICAgICB8ICA1OSArKy0tLS0KIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYyAgICAgICAgICB8IDEwNyArKysrKy0t LS0tLQogNTQgZmlsZXMgY2hhbmdlZCwgOTMzIGluc2VydGlvbnMoKyksIDEyMDYgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9zeW5jc2Nh bi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9zeW5jc2Nhbi5jCmluZGV4IDZmY2Zj YjBlNTYwLi4wZjllYjE2N2JlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9zeW5jc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3Nj YW4uYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog CiAKQEAgLTExMSw2ICsxMTIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3Nfc2Nhbl9sb2NhdGlv bnNfdAogI2RlZmluZSBTaXplT2ZTY2FuTG9jYXRpb25zKE4pIFwKIAkob2Zmc2V0b2Yoc3Nf c2Nhbl9sb2NhdGlvbnNfdCwgaXRlbXMpICsgKE4pICogc2l6ZW9mKHNzX2xydV9pdGVtX3Qp KQogCitzdGF0aWMgdm9pZCBTeW5jU2NhblNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3Rh dGljIHZvaWQgU3luY1NjYW5TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1D YWxsYmFja3MgU3luY1NjYW5TaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFN5 bmNTY2FuU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU3luY1NjYW5TaG1lbUluaXQsCit9 OworCiAvKiBQb2ludGVyIHRvIHN0cnVjdCBpbiBzaGFyZWQgbWVtb3J5ICovCiBzdGF0aWMg c3Nfc2Nhbl9sb2NhdGlvbnNfdCAqc2Nhbl9sb2NhdGlvbnM7CiAKQEAgLTEyMCw1OCArMTI5 LDQ3IEBAIHN0YXRpYyBCbG9ja051bWJlciBzc19zZWFyY2goUmVsRmlsZUxvY2F0b3IgcmVs ZmlsZWxvY2F0b3IsCiAKIAogLyoKLSAqIFN5bmNTY2FuU2htZW1TaXplIC0tLSByZXBvcnQg YW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkCisgKiBTeW5jU2NhblNobWVt UmVxdWVzdCAtLS0gcmVnaXN0ZXIgdGhpcyBtb2R1bGUncyBzaGFyZWQgbWVtb3J5CiAgKi8K LVNpemUKLVN5bmNTY2FuU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorU3luY1NjYW5T aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCXJldHVybiBTaXplT2ZTY2FuTG9jYXRpb25z KFNZTkNfU0NBTl9ORUxFTSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlN5bmMg U2NhbiBMb2NhdGlvbnMgTGlzdCIsCisJCQkJCSAgIC5zaXplID0gU2l6ZU9mU2NhbkxvY2F0 aW9ucyhTWU5DX1NDQU5fTkVMRU0pLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZzY2Fu X2xvY2F0aW9ucywKKwkJKTsKIH0KIAogLyoKICAqIFN5bmNTY2FuU2htZW1Jbml0IC0tLSBp bml0aWFsaXplIHRoaXMgbW9kdWxlJ3Mgc2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1TeW5j U2NhblNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1N5bmNTY2FuU2htZW1Jbml0KHZv aWQgKmFyZykKIHsKIAlpbnQJCQlpOwotCWJvb2wJCWZvdW5kOwogCi0Jc2Nhbl9sb2NhdGlv bnMgPSAoc3Nfc2Nhbl9sb2NhdGlvbnNfdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlN5bmMg U2NhbiBMb2NhdGlvbnMgTGlzdCIsCi0JCQkJCQlTaXplT2ZTY2FuTG9jYXRpb25zKFNZTkNf U0NBTl9ORUxFTSksCi0JCQkJCQkmZm91bmQpOworCXNjYW5fbG9jYXRpb25zLT5oZWFkID0g JnNjYW5fbG9jYXRpb25zLT5pdGVtc1swXTsKKwlzY2FuX2xvY2F0aW9ucy0+dGFpbCA9ICZz Y2FuX2xvY2F0aW9ucy0+aXRlbXNbU1lOQ19TQ0FOX05FTEVNIC0gMV07CiAKLQlpZiAoIUlz VW5kZXJQb3N0bWFzdGVyKQorCWZvciAoaSA9IDA7IGkgPCBTWU5DX1NDQU5fTkVMRU07IGkr KykKIAl7Ci0JCS8qIEluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBhcmVhICovCi0JCUFzc2Vy dCghZm91bmQpOwotCi0JCXNjYW5fbG9jYXRpb25zLT5oZWFkID0gJnNjYW5fbG9jYXRpb25z LT5pdGVtc1swXTsKLQkJc2Nhbl9sb2NhdGlvbnMtPnRhaWwgPSAmc2Nhbl9sb2NhdGlvbnMt Pml0ZW1zW1NZTkNfU0NBTl9ORUxFTSAtIDFdOwotCi0JCWZvciAoaSA9IDA7IGkgPCBTWU5D X1NDQU5fTkVMRU07IGkrKykKLQkJewotCQkJc3NfbHJ1X2l0ZW1fdCAqaXRlbSA9ICZzY2Fu X2xvY2F0aW9ucy0+aXRlbXNbaV07Ci0KLQkJCS8qCi0JCQkgKiBJbml0aWFsaXplIGFsbCBz bG90cyB3aXRoIGludmFsaWQgdmFsdWVzLiBBcyBzY2FucyBhcmUgc3RhcnRlZCwKLQkJCSAq IHRoZXNlIGludmFsaWQgZW50cmllcyB3aWxsIGZhbGwgb2ZmIHRoZSBMUlUgbGlzdCBhbmQg Z2V0Ci0JCQkgKiByZXBsYWNlZCB3aXRoIHJlYWwgZW50cmllcy4KLQkJCSAqLwotCQkJaXRl bS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3Iuc3BjT2lkID0gSW52YWxpZE9pZDsKLQkJCWl0 ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLmRiT2lkID0gSW52YWxpZE9pZDsKLQkJCWl0 ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLnJlbE51bWJlciA9IEludmFsaWRSZWxGaWxl TnVtYmVyOwotCQkJaXRlbS0+bG9jYXRpb24ubG9jYXRpb24gPSBJbnZhbGlkQmxvY2tOdW1i ZXI7Ci0KLQkJCWl0ZW0tPnByZXYgPSAoaSA+IDApID8KLQkJCQkoJnNjYW5fbG9jYXRpb25z LT5pdGVtc1tpIC0gMV0pIDogTlVMTDsKLQkJCWl0ZW0tPm5leHQgPSAoaSA8IFNZTkNfU0NB Tl9ORUxFTSAtIDEpID8KLQkJCQkoJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tpICsgMV0pIDog TlVMTDsKLQkJfQorCQlzc19scnVfaXRlbV90ICppdGVtID0gJnNjYW5fbG9jYXRpb25zLT5p dGVtc1tpXTsKKworCQkvKgorCQkgKiBJbml0aWFsaXplIGFsbCBzbG90cyB3aXRoIGludmFs aWQgdmFsdWVzLiBBcyBzY2FucyBhcmUgc3RhcnRlZCwKKwkJICogdGhlc2UgaW52YWxpZCBl bnRyaWVzIHdpbGwgZmFsbCBvZmYgdGhlIExSVSBsaXN0IGFuZCBnZXQgcmVwbGFjZWQKKwkJ ICogd2l0aCByZWFsIGVudHJpZXMuCisJCSAqLworCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxl bG9jYXRvci5zcGNPaWQgPSBJbnZhbGlkT2lkOworCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxl bG9jYXRvci5kYk9pZCA9IEludmFsaWRPaWQ7CisJCWl0ZW0tPmxvY2F0aW9uLnJlbGZpbGVs b2NhdG9yLnJlbE51bWJlciA9IEludmFsaWRSZWxGaWxlTnVtYmVyOworCQlpdGVtLT5sb2Nh dGlvbi5sb2NhdGlvbiA9IEludmFsaWRCbG9ja051bWJlcjsKKworCQlpdGVtLT5wcmV2ID0g KGkgPiAwKSA/CisJCQkoJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tpIC0gMV0pIDogTlVMTDsK KwkJaXRlbS0+bmV4dCA9IChpIDwgU1lOQ19TQ0FOX05FTEVNIC0gMSkgPworCQkJKCZzY2Fu X2xvY2F0aW9ucy0+aXRlbXNbaSArIDFdKSA6IE5VTEw7CiAJfQotCWVsc2UKLQkJQXNzZXJ0 KGZvdW5kKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpp bmRleCA3MzJiYzc1MGM5ZS4uMDE0ZmFhMTYyMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHV0aWxzLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJsaWIvcXVuaXF1 ZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2Nr LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMv ZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKQEAgLTQxNyw2ICs0MTgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRWYWNJbmZv CiAKIHN0YXRpYyBCVFZhY0luZm8gKmJ0dmFjaW5mbzsKIAorc3RhdGljIHZvaWQgQlRyZWVT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJUcmVlU2htZW1Jbml0KHZv aWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEJUcmVlU2htZW1DYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBCVHJlZVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEJU cmVlU2htZW1Jbml0LAorfTsKIAogLyoKICAqIF9idF92YWN1dW1fY3ljbGVpZCAtLS0gZ2V0 IHRoZSBhY3RpdmUgdmFjdXVtIGN5Y2xlIElEIGZvciBhbiBpbmRleCwKQEAgLTU1Myw0NyAr NTYxLDM3IEBAIF9idF9lbmRfdmFjdXVtX2NhbGxiYWNrKGludCBjb2RlLCBEYXR1bSBhcmcp CiB9CiAKIC8qCi0gKiBCVHJlZVNobWVtU2l6ZSAtLS0gcmVwb3J0IGFtb3VudCBvZiBzaGFy ZWQgbWVtb3J5IHNwYWNlIG5lZWRlZAorICogQlRyZWVTaG1lbVJlcXVlc3QgLS0tIHJlZ2lz dGVyIHRoaXMgbW9kdWxlJ3Mgc2hhcmVkIG1lbW9yeQogICovCi1TaXplCi1CVHJlZVNobWVt U2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0JUcmVlU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK IHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG9mZnNldG9mKEJUVmFjSW5mbywgdmFjdXVt cyk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1heEJhY2tlbmRzLCBzaXpl b2YoQlRPbmVWYWNJbmZvKSkpOwotCXJldHVybiBzaXplOworCisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gIkJUcmVlIFZhY3V1bSBTdGF0ZSIsCisJCQkJCSAgIC5zaXplID0gc2l6 ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmYnR2YWNpbmZvLAorCQkpOwogfQogCiAv KgogICogQlRyZWVTaG1lbUluaXQgLS0tIGluaXRpYWxpemUgdGhpcyBtb2R1bGUncyBzaGFy ZWQgbWVtb3J5CiAgKi8KLXZvaWQKLUJUcmVlU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9p ZAorQlRyZWVTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JYnR2 YWNpbmZvID0gKEJUVmFjSW5mbyAqKSBTaG1lbUluaXRTdHJ1Y3QoIkJUcmVlIFZhY3V1bSBT dGF0ZSIsCi0JCQkJCQkJCQkJCSAgQlRyZWVTaG1lbVNpemUoKSwKLQkJCQkJCQkJCQkJICAm Zm91bmQpOwotCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCS8qIEluaXRpYWxp emUgc2hhcmVkIG1lbW9yeSBhcmVhICovCi0JCUFzc2VydCghZm91bmQpOwotCi0JCS8qCi0J CSAqIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGF0IHRoZSBjeWNsZSBjb3VudGVyIHN0 YXJ0cyBhdCwgYnV0Ci0JCSAqIGhhdmluZyBpdCBhbHdheXMgc3RhcnQgdGhlIHNhbWUgZG9l c24ndCBzZWVtIGdvb2QuICBTZWVkIHdpdGgKLQkJICogbG93LW9yZGVyIGJpdHMgb2YgdGlt ZSgpIGluc3RlYWQuCi0JCSAqLwotCQlidHZhY2luZm8tPmN5Y2xlX2N0ciA9IChCVEN5Y2xl SWQpIHRpbWUoTlVMTCk7CisJLyoKKwkgKiBJdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgd2hh dCB0aGUgY3ljbGUgY291bnRlciBzdGFydHMgYXQsIGJ1dCBoYXZpbmcKKwkgKiBpdCBhbHdh eXMgc3RhcnQgdGhlIHNhbWUgZG9lc24ndCBzZWVtIGdvb2QuICBTZWVkIHdpdGggbG93LW9y ZGVyIGJpdHMKKwkgKiBvZiB0aW1lKCkgaW5zdGVhZC4KKwkgKi8KKwlidHZhY2luZm8tPmN5 Y2xlX2N0ciA9IChCVEN5Y2xlSWQpIHRpbWUoTlVMTCk7CiAKLQkJYnR2YWNpbmZvLT5udW1f dmFjdXVtcyA9IDA7Ci0JCWJ0dmFjaW5mby0+bWF4X3ZhY3V1bXMgPSBNYXhCYWNrZW5kczsK LQl9Ci0JZWxzZQotCQlBc3NlcnQoZm91bmQpOworCWJ0dmFjaW5mby0+bnVtX3ZhY3V1bXMg PSAwOworCWJ0dmFjaW5mby0+bWF4X3ZhY3V1bXMgPSBNYXhCYWNrZW5kczsKIH0KIAogYnl0 ZWEgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2Uu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggYWIxY2Jk NjdiYWMuLjgzNjkyODE4MGE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS90d29waGFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3Bo YXNlLmMKQEAgLTEwMiw2ICsxMDIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRl LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xODcsOCArMTg4LDE2IEBAIHR5cGVk ZWYgc3RydWN0IFR3b1BoYXNlU3RhdGVEYXRhCiAJR2xvYmFsVHJhbnNhY3Rpb24gcHJlcFhh Y3RzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IFR3b1BoYXNlU3RhdGVEYXRhOwogCitz dGF0aWMgdm9pZCBUd29QaGFzZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgVHdvUGhhc2VTaG1lbUluaXQodm9pZCAqYXJnKTsKKwogc3RhdGljIFR3b1BoYXNlU3Rh dGVEYXRhICpUd29QaGFzZVN0YXRlOwogCitjb25zdCBTaG1lbUNhbGxiYWNrcyBUd29QaGFz ZVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gVHdvUGhhc2VTaG1lbVJlcXVl c3QsCisJLmluaXRfZm4gPSBUd29QaGFzZVNobWVtSW5pdCwKK307CisKIC8qCiAgKiBHbG9i YWwgdHJhbnNhY3Rpb24gZW50cnkgY3VycmVudGx5IGxvY2tlZCBieSB1cywgaWYgYW55LiAg Tm90ZSB0aGF0IGFueQogICogYWNjZXNzIHRvIHRoZSBlbnRyeSBwb2ludGVkIHRvIGJ5IHRo aXMgdmFyaWFibGUgbXVzdCBiZSBwcm90ZWN0ZWQgYnkKQEAgLTIzNCwxMCArMjQzLDEwIEBA IHN0YXRpYyB2b2lkIFJlbW92ZVR3b1BoYXNlRmlsZShGdWxsVHJhbnNhY3Rpb25JZCBmeGlk LCBib29sIGdpdmVXYXJuaW5nKTsKIHN0YXRpYyB2b2lkIFJlY3JlYXRlVHdvUGhhc2VGaWxl KEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQsIHZvaWQgKmNvbnRlbnQsIGludCBsZW4pOwogCiAv KgotICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeQorICogUmVnaXN0ZXIgc2hh cmVkIG1lbW9yeSBmb3IgdHdvLXBoYXNlIHN0YXRlLgogICovCi1TaXplCi1Ud29QaGFzZVNo bWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1R3b1BoYXNlU2htZW1SZXF1ZXN0KHZvaWQg KmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBAIC0yNDgsNDYgKzI1Nyw0MCBAQCBUd29QaGFz ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBNQVhBTElHTihzaXplKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgbXVsX3NpemUobWF4X3ByZXBhcmVkX3hhY3RzLAogCQkJCQkJCQkgICBz aXplb2YoR2xvYmFsVHJhbnNhY3Rpb25EYXRhKSkpOwotCi0JcmV0dXJuIHNpemU7CisJU2ht ZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByZXBhcmVkIFRyYW5zYWN0aW9uIFRhYmxlIiwK KwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZUd29Q aGFzZVN0YXRlLAorCQkpOwogfQogCi12b2lkCi1Ud29QaGFzZVNobWVtSW5pdCh2b2lkKQor LyoKKyAqIEluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBmb3IgdHdvLXBoYXNlIHN0YXRlLgor ICovCitzdGF0aWMgdm9pZAorVHdvUGhhc2VTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJv b2wJCWZvdW5kOwotCi0JVHdvUGhhc2VTdGF0ZSA9IFNobWVtSW5pdFN0cnVjdCgiUHJlcGFy ZWQgVHJhbnNhY3Rpb24gVGFibGUiLAotCQkJCQkJCQkJVHdvUGhhc2VTaG1lbVNpemUoKSwK LQkJCQkJCQkJCSZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCUds b2JhbFRyYW5zYWN0aW9uIGd4YWN0czsKLQkJaW50CQkJaTsKKwlHbG9iYWxUcmFuc2FjdGlv biBneGFjdHM7CisJaW50CQkJaTsKIAotCQlBc3NlcnQoIWZvdW5kKTsKLQkJVHdvUGhhc2VT dGF0ZS0+ZnJlZUdYYWN0cyA9IE5VTEw7Ci0JCVR3b1BoYXNlU3RhdGUtPm51bVByZXBYYWN0 cyA9IDA7CisJVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0cyA9IE5VTEw7CisJVHdvUGhhc2VT dGF0ZS0+bnVtUHJlcFhhY3RzID0gMDsKIAotCQkvKgotCQkgKiBJbml0aWFsaXplIHRoZSBs aW5rZWQgbGlzdCBvZiBmcmVlIEdsb2JhbFRyYW5zYWN0aW9uRGF0YSBzdHJ1Y3RzCi0JCSAq LwotCQlneGFjdHMgPSAoR2xvYmFsVHJhbnNhY3Rpb24pCi0JCQkoKGNoYXIgKikgVHdvUGhh c2VTdGF0ZSArCi0JCQkgTUFYQUxJR04ob2Zmc2V0b2YoVHdvUGhhc2VTdGF0ZURhdGEsIHBy ZXBYYWN0cykgKwotCQkJCQkgIHNpemVvZihHbG9iYWxUcmFuc2FjdGlvbikgKiBtYXhfcHJl cGFyZWRfeGFjdHMpKTsKLQkJZm9yIChpID0gMDsgaSA8IG1heF9wcmVwYXJlZF94YWN0czsg aSsrKQotCQl7Ci0JCQkvKiBpbnNlcnQgaW50byBsaW5rZWQgbGlzdCAqLwotCQkJZ3hhY3Rz W2ldLm5leHQgPSBUd29QaGFzZVN0YXRlLT5mcmVlR1hhY3RzOwotCQkJVHdvUGhhc2VTdGF0 ZS0+ZnJlZUdYYWN0cyA9ICZneGFjdHNbaV07CisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBs aW5rZWQgbGlzdCBvZiBmcmVlIEdsb2JhbFRyYW5zYWN0aW9uRGF0YSBzdHJ1Y3RzCisJICov CisJZ3hhY3RzID0gKEdsb2JhbFRyYW5zYWN0aW9uKQorCQkoKGNoYXIgKikgVHdvUGhhc2VT dGF0ZSArCisJCSBNQVhBTElHTihvZmZzZXRvZihUd29QaGFzZVN0YXRlRGF0YSwgcHJlcFhh Y3RzKSArCisJCQkJICBzaXplb2YoR2xvYmFsVHJhbnNhY3Rpb24pICogbWF4X3ByZXBhcmVk X3hhY3RzKSk7CisJZm9yIChpID0gMDsgaSA8IG1heF9wcmVwYXJlZF94YWN0czsgaSsrKQor CXsKKwkJLyogaW5zZXJ0IGludG8gbGlua2VkIGxpc3QgKi8KKwkJZ3hhY3RzW2ldLm5leHQg PSBUd29QaGFzZVN0YXRlLT5mcmVlR1hhY3RzOworCQlUd29QaGFzZVN0YXRlLT5mcmVlR1hh Y3RzID0gJmd4YWN0c1tpXTsKIAotCQkJLyogYXNzb2NpYXRlIGl0IHdpdGggYSBQR1BST0Mg YXNzaWduZWQgYnkgUHJvY0dsb2JhbFNobWVtSW5pdCAqLwotCQkJZ3hhY3RzW2ldLnBncHJv Y25vID0gR2V0TnVtYmVyRnJvbVBHUHJvYygmUHJlcGFyZWRYYWN0UHJvY3NbaV0pOwotCQl9 CisJCS8qIGFzc29jaWF0ZSBpdCB3aXRoIGEgUEdQUk9DIGFzc2lnbmVkIGJ5IFByb2NHbG9i YWxTaG1lbUluaXQgKi8KKwkJZ3hhY3RzW2ldLnBncHJvY25vID0gR2V0TnVtYmVyRnJvbVBH UHJvYygmUHJlcGFyZWRYYWN0UHJvY3NbaV0pOwogCX0KLQllbHNlCi0JCUFzc2VydChmb3Vu ZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggOWU4OTk5 YmJiNjEuLmJiYzU2NTUwOWIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBA IC05Niw2ICs5Niw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9yZWluaXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N5bmMu aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNf dGFibGVzLmgiCkBAIC01NzEsNiArNTcyLDE2IEBAIHR5cGVkZWYgZW51bQogCVdBTElOU0VS VF9TUEVDSUFMX0NIRUNLUE9JTlQKIH0gV2FsSW5zZXJ0Q2xhc3M7CiAKK3N0YXRpYyB2b2lk IFhMT0dTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMT0dTaG1lbUlu aXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMT0dTaG1lbUF0dGFjaCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBYTE9HU2htZW1DYWxsYmFja3MgPSB7CisJLnJl cXVlc3RfZm4gPSBYTE9HU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gWExPR1NobWVtSW5p dCwKKwkuYXR0YWNoX2ZuID0gWExPR1NobWVtQXR0YWNoLAorfTsKKwogc3RhdGljIFhMb2dD dGxEYXRhICpYTG9nQ3RsID0gTlVMTDsKIAogLyogYSBwcml2YXRlIGNvcHkgb2YgWExvZ0N0 bC0+SW5zZXJ0LldBTEluc2VydExvY2tzLCBmb3IgY29udmVuaWVuY2UgKi8KQEAgLTU3OSw2 ICs1OTAsNyBAQCBzdGF0aWMgV0FMSW5zZXJ0TG9ja1BhZGRlZCAqV0FMSW5zZXJ0TG9ja3Mg PSBOVUxMOwogLyoKICAqIFdlIG1haW50YWluIGFuIGltYWdlIG9mIHBnX2NvbnRyb2wgaW4g c2hhcmVkIG1lbW9yeS4KICAqLworc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqTG9jYWxDb250 cm9sRmlsZSA9IE5VTEw7CiBzdGF0aWMgQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSA9 IE5VTEw7CiAKIC8qCkBAIC01MjU3LDcgKzUyNjksOCBAQCB2b2lkCiBMb2NhbFByb2Nlc3ND b250cm9sRmlsZShib29sIHJlc2V0KQogewogCUFzc2VydChyZXNldCB8fCBDb250cm9sRmls ZSA9PSBOVUxMKTsKLQlDb250cm9sRmlsZSA9IHBhbGxvY19vYmplY3QoQ29udHJvbEZpbGVE YXRhKTsKKwlMb2NhbENvbnRyb2xGaWxlID0gcGFsbG9jX29iamVjdChDb250cm9sRmlsZURh dGEpOworCUNvbnRyb2xGaWxlID0gTG9jYWxDb250cm9sRmlsZTsKIAlSZWFkQ29udHJvbEZp bGUoKTsKIAlTZXRMb2NhbERhdGFDaGVja3N1bVN0YXRlKENvbnRyb2xGaWxlLT5kYXRhX2No ZWNrc3VtX3ZlcnNpb24pOwogfQpAQCAtNTI3NCwxMCArNTI4NywxMCBAQCBHZXRBY3RpdmVX YWxMZXZlbE9uU3RhbmRieSh2b2lkKQogfQogCiAvKgotICogSW5pdGlhbGl6YXRpb24gb2Yg c2hhcmVkIG1lbW9yeSBmb3IgWExPRworICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3Ig WExPRy4KICAqLwotU2l6ZQotWExPR1NobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1hM T0dTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemU7CiAKQEAgLTUzMTcs MjMgKzUzMzAsMjQgQEAgWExPR1NobWVtU2l6ZSh2b2lkKQogCS8qIGFuZCB0aGUgYnVmZmVy cyB0aGVtc2VsdmVzICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFhMT0df QkxDS1NaLCBYTE9HYnVmZmVycykpOwogCi0JLyoKLQkgKiBOb3RlOiB3ZSBkb24ndCBjb3Vu dCBDb250cm9sRmlsZURhdGEsIGl0IGNvbWVzIG91dCBvZiB0aGUgInNsb3AgZmFjdG9yIgot CSAqIGFkZGVkIGJ5IENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZXMuICBUaGlzIGxl dHMgdXMgdXNlIHRoaXMKLQkgKiByb3V0aW5lIGFnYWluIGJlbG93IHRvIGNvbXB1dGUgdGhl IGFjdHVhbCBhbGxvY2F0aW9uIHNpemUuCi0JICovCi0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1l bVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiWExPRyBDdGwiLAorCQkJCQkgICAuc2l6ZSA9IHNp emUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlhMb2dDdGwsCisJCSk7CisJU2htZW1S ZXF1ZXN0U3RydWN0KC5uYW1lID0gIkNvbnRyb2wgRmlsZSIsCisJCQkJCSAgIC5zaXplID0g c2l6ZW9mKENvbnRyb2xGaWxlRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkNv bnRyb2xGaWxlLAorCQkpOwogfQogCi12b2lkCi1YTE9HU2htZW1Jbml0KHZvaWQpCisvKgor ICogWExPR1NobWVtSW5pdCAtIGluaXRpYWxpemUgdGhlIFhMb2dDdGwgc2hhcmVkIG1lbW9y eSBhcmVhLgorICovCitzdGF0aWMgdm9pZAorWExPR1NobWVtSW5pdCh2b2lkICphcmcpCiB7 Ci0JYm9vbAkJZm91bmRDRmlsZSwKLQkJCQlmb3VuZFhMb2c7CiAJY2hhcgkgICAqYWxsb2Nw dHI7CiAJaW50CQkJaTsKLQlDb250cm9sRmlsZURhdGEgKmxvY2FsQ29udHJvbEZpbGU7CiAK ICNpZmRlZiBXQUxfREVCVUcKIApAQCAtNTM1MSwzNiArNTM2NSwxNyBAQCBYTE9HU2htZW1J bml0KHZvaWQpCiAJfQogI2VuZGlmCiAKLQotCVhMb2dDdGwgPSAoWExvZ0N0bERhdGEgKikK LQkJU2htZW1Jbml0U3RydWN0KCJYTE9HIEN0bCIsIFhMT0dTaG1lbVNpemUoKSwgJmZvdW5k WExvZyk7Ci0KLQlsb2NhbENvbnRyb2xGaWxlID0gQ29udHJvbEZpbGU7Ci0JQ29udHJvbEZp bGUgPSAoQ29udHJvbEZpbGVEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQ29udHJvbCBG aWxlIiwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSksICZmb3VuZENGaWxlKTsKLQotCWlmIChm b3VuZENGaWxlIHx8IGZvdW5kWExvZykKLQl7Ci0JCS8qIGJvdGggc2hvdWxkIGJlIHByZXNl bnQgb3IgbmVpdGhlciAqLwotCQlBc3NlcnQoZm91bmRDRmlsZSAmJiBmb3VuZFhMb2cpOwot Ci0JCS8qIEluaXRpYWxpemUgbG9jYWwgY29weSBvZiBXQUxJbnNlcnRMb2NrcyAqLwotCQlX QUxJbnNlcnRMb2NrcyA9IFhMb2dDdGwtPkluc2VydC5XQUxJbnNlcnRMb2NrczsKLQotCQlp ZiAobG9jYWxDb250cm9sRmlsZSkKLQkJCXBmcmVlKGxvY2FsQ29udHJvbEZpbGUpOwotCQly ZXR1cm47Ci0JfQogCW1lbXNldChYTG9nQ3RsLCAwLCBzaXplb2YoWExvZ0N0bERhdGEpKTsK IAogCS8qCiAJICogQWxyZWFkeSBoYXZlIHJlYWQgY29udHJvbCBmaWxlIGxvY2FsbHksIHVu bGVzcyBpbiBib290c3RyYXAgbW9kZS4gTW92ZQogCSAqIGNvbnRlbnRzIGludG8gc2hhcmVk IG1lbW9yeS4KIAkgKi8KLQlpZiAobG9jYWxDb250cm9sRmlsZSkKKwlpZiAoTG9jYWxDb250 cm9sRmlsZSkKIAl7Ci0JCW1lbWNweShDb250cm9sRmlsZSwgbG9jYWxDb250cm9sRmlsZSwg c2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOwotCQlwZnJlZShsb2NhbENvbnRyb2xGaWxlKTsK KwkJbWVtY3B5KENvbnRyb2xGaWxlLCBMb2NhbENvbnRyb2xGaWxlLCBzaXplb2YoQ29udHJv bEZpbGVEYXRhKSk7CisJCXBmcmVlKExvY2FsQ29udHJvbEZpbGUpOworCQlMb2NhbENvbnRy b2xGaWxlID0gTlVMTDsKIAl9CiAKIAkvKgpAQCAtNTQ0Miw2ICs1NDM3LDE1IEBAIFhMT0dT aG1lbUluaXQodm9pZCkKIAlwZ19hdG9taWNfaW5pdF91NjQoJlhMb2dDdGwtPnVubG9nZ2Vk TFNOLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CiAKKy8qCisgKiBYTE9HU2htZW1BdHRhY2gg LSBzZXQgdXAgV0FMSW5zZXJ0TG9ja3MgcG9pbnRlciBhZnRlciBhdHRhY2hpbmcuCisgKi8K K3N0YXRpYyB2b2lkCitYTE9HU2htZW1BdHRhY2godm9pZCAqYXJnKQoreworCVdBTEluc2Vy dExvY2tzID0gWExvZ0N0bC0+SW5zZXJ0LldBTEluc2VydExvY2tzOworfQorCiAvKgogICog VGhpcyBmdW5jIG11c3QgYmUgY2FsbGVkIE9OQ0Ugb24gc3lzdGVtIGluc3RhbGwuICBJdCBj cmVhdGVzIHBnX2NvbnRyb2wKICAqIGFuZCB0aGUgaW5pdGlhbCBYTE9HIHNlZ21lbnQuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCBj MjM1ZWNhN2M1MS4uODNhM2Y5N2E1N2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3ByZWZldGNoZXIuYwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgog I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKQEAgLTIwMCw2ICsyMDEsMTQgQEAgc3RhdGlj IExzblJlYWRRdWV1ZU5leHRTdGF0dXMgWExvZ1ByZWZldGNoZXJOZXh0QmxvY2sodWludHB0 cl90IHBnc3JfcHJpdmF0ZSwKIAogc3RhdGljIFhMb2dQcmVmZXRjaFN0YXRzICpTaGFyZWRT dGF0czsKIAorc3RhdGljIHZvaWQgWExvZ1ByZWZldGNoU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBYTG9nUHJlZmV0Y2hTaG1lbUluaXQodm9pZCAqYXJnKTsKKwor Y29uc3QgU2htZW1DYWxsYmFja3MgWExvZ1ByZWZldGNoU2htZW1DYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSBYTG9nUHJlZmV0Y2hTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBY TG9nUHJlZmV0Y2hTaG1lbUluaXQsCit9OworCiBzdGF0aWMgaW5saW5lIExzblJlYWRRdWV1 ZSAqCiBscnFfYWxsb2ModWludDMyIG1heF9kaXN0YW5jZSwKIAkJICB1aW50MzIgbWF4X2lu ZmxpZ2h0LApAQCAtMjkyLDEwICszMDEsMjUgQEAgbHJxX2NvbXBsZXRlX2xzbihMc25SZWFk UXVldWUgKmxycSwgWExvZ1JlY1B0ciBsc24pCiAJCWxycV9wcmVmZXRjaChscnEpOwogfQog Ci1zaXplX3QKLVhMb2dQcmVmZXRjaFNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1hM b2dQcmVmZXRjaFNobWVtUmVxdWVzdCh2b2lkICphcmcpCit7CisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gIlhMb2dQcmVmZXRjaFN0YXRzIiwKKwkJCQkJICAgLnNpemUgPSBzaXpl b2YoWExvZ1ByZWZldGNoU3RhdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZTaGFy ZWRTdGF0cywKKwkJKTsKK30KKworc3RhdGljIHZvaWQKK1hMb2dQcmVmZXRjaFNobWVtSW5p dCh2b2lkICphcmcpCiB7Ci0JcmV0dXJuIHNpemVvZihYTG9nUHJlZmV0Y2hTdGF0cyk7CisJ cGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+cmVzZXRfdGltZSwgR2V0Q3VycmVu dFRpbWVzdGFtcCgpKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5wcmVm ZXRjaCwgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+aGl0LCAwKTsK KwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX2luaXQsIDApOworCXBn X2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfbmV3LCAwKTsKKwlwZ19hdG9t aWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX2ZwdywgMCk7CisJcGdfYXRvbWljX2lu aXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9yZXAsIDApOwogfQogCiAvKgpAQCAtMzEzLDI3 ICszMzcsNiBAQCBYTG9nUHJlZmV0Y2hSZXNldFN0YXRzKHZvaWQpCiAJcGdfYXRvbWljX3dy aXRlX3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfcmVwLCAwKTsKIH0KIAotdm9pZAotWExvZ1By ZWZldGNoU2htZW1Jbml0KHZvaWQpCi17Ci0JYm9vbAkJZm91bmQ7Ci0KLQlTaGFyZWRTdGF0 cyA9IChYTG9nUHJlZmV0Y2hTdGF0cyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlhMb2dQcmVm ZXRjaFN0YXRzIiwKLQkJCQkJCXNpemVvZihYTG9nUHJlZmV0Y2hTdGF0cyksCi0JCQkJCQkm Zm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hh cmVkU3RhdHMtPnJlc2V0X3RpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7Ci0JCXBnX2F0 b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnByZWZldGNoLCAwKTsKLQkJcGdfYXRvbWlj X2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+aGl0LCAwKTsKLQkJcGdfYXRvbWljX2luaXRfdTY0 KCZTaGFyZWRTdGF0cy0+c2tpcF9pbml0LCAwKTsKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZT aGFyZWRTdGF0cy0+c2tpcF9uZXcsIDApOwotCQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJl ZFN0YXRzLT5za2lwX2ZwdywgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3Rh dHMtPnNraXBfcmVwLCAwKTsKLQl9Ci19CiAKIC8qCiAgKiBDYWxsZWQgd2hlbiBhbnkgR1VD IGlzIGNoYW5nZWQgdGhhdCBhZmZlY3RzIHByZWZldGNoaW5nLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBmZDFjMzZkMDYxZC4uYzIzNmUy Yjc5NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5j CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0 ZXRpbWUuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjX2hvb2tzLmgiCkBAIC0zMDcsNiArMzA4LDE0IEBAIHN0YXRpYyBjaGFyICpwcmlt YXJ5X2ltYWdlX21hc2tlZCA9IE5VTEw7CiAKIFhMb2dSZWNvdmVyeUN0bERhdGEgKlhMb2dS ZWNvdmVyeUN0bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFhMb2dSZWNvdmVyeVNobWVtUmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZv aWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFhMb2dSZWNvdmVyeVNobWVtQ2Fs bGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gWExvZ1JlY292ZXJ5U2htZW1SZXF1ZXN0LAor CS5pbml0X2ZuID0gWExvZ1JlY292ZXJ5U2htZW1Jbml0LAorfTsKKwogLyoKICAqIGFib3J0 ZWRSZWNQdHIgaXMgdGhlIHN0YXJ0IHBvaW50ZXIgb2YgYSBicm9rZW4gcmVjb3JkIGF0IGVu ZCBvZiBXQUwgd2hlbgogICogcmVjb3ZlcnkgY29tcGxldGVzOyBtaXNzaW5nQ29udHJlY1B0 ciBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0CkBAIC0zODUsMjggKzM5NCwyMCBAQCBz dGF0aWMgdm9pZCBTZXRDdXJyZW50Q2h1bmtTdGFydFRpbWUoVGltZXN0YW1wVHogeHRpbWUp Owogc3RhdGljIHZvaWQgU2V0TGF0ZXN0WFRpbWUoVGltZXN0YW1wVHogeHRpbWUpOwogCiAv KgotICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgV0FMIHJlY292ZXJ5 CisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IGZvciBXQUwgcmVjb3ZlcnkKICAqLwotU2l6 ZQotWExvZ1JlY292ZXJ5U2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorWExvZ1JlY292 ZXJ5U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCi0JLyogWExv Z1JlY292ZXJ5Q3RsICovCi0Jc2l6ZSA9IHNpemVvZihYTG9nUmVjb3ZlcnlDdGxEYXRhKTsK LQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJYTE9HIFJl Y292ZXJ5IEN0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFhMb2dSZWNvdmVyeUN0bERh dGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZYTG9nUmVjb3ZlcnlDdGwsCisJCSk7 CiB9CiAKLXZvaWQKLVhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQK K1hMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0K LQlYTG9nUmVjb3ZlcnlDdGwgPSAoWExvZ1JlY292ZXJ5Q3RsRGF0YSAqKQotCQlTaG1lbUlu aXRTdHJ1Y3QoIlhMT0cgUmVjb3ZlcnkgQ3RsIiwgWExvZ1JlY292ZXJ5U2htZW1TaXplKCks ICZmb3VuZCk7Ci0JaWYgKGZvdW5kKQotCQlyZXR1cm47CiAJbWVtc2V0KFhMb2dSZWNvdmVy eUN0bCwgMCwgc2l6ZW9mKFhMb2dSZWNvdmVyeUN0bERhdGEpKTsKIAogCVNwaW5Mb2NrSW5p dCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3dhaXQuYwppbmRleCBiZjQ2MzA2NzdiNC4uMmUzMWMwZDY3ZDcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYwpAQCAtNTcsNiArNTcsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1z LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL3Bn X2xzbi5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKQEAgLTY4LDYgKzY5LDE0IEBA IHN0YXRpYyBpbnQJd2FpdGxzbl9jbXAoY29uc3QgcGFpcmluZ2hlYXBfbm9kZSAqYSwgY29u c3QgcGFpcmluZ2hlYXBfbm9kZSAqYiwKIAogc3RydWN0IFdhaXRMU05TdGF0ZSAqd2FpdExT TlN0YXRlID0gTlVMTDsKIAorc3RhdGljIHZvaWQgV2FpdExTTlNobWVtUmVxdWVzdCh2b2lk ICphcmcpOworc3RhdGljIHZvaWQgV2FpdExTTlNobWVtSW5pdCh2b2lkICphcmcpOworCitj b25zdCBTaG1lbUNhbGxiYWNrcyBXYWl0TFNOU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVl c3RfZm4gPSBXYWl0TFNOU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gV2FpdExTTlNobWVt SW5pdCwKK307CisKIC8qCiAgKiBXYWl0IGV2ZW50IGZvciBlYWNoIFdhaXRMU05UeXBlLCB1 c2VkIHdpdGggV2FpdExhdGNoKCkgdG8gcmVwb3J0CiAgKiB0aGUgd2FpdCBpbiBwZ19zdGF0 X2FjdGl2aXR5LgpAQCAtMTA5LDQxICsxMTgsMzQgQEAgR2V0Q3VycmVudExTTkZvcldhaXRU eXBlKFdhaXRMU05UeXBlIGxzblR5cGUpCiAJcGdfdW5yZWFjaGFibGUoKTsKIH0KIAotLyog UmVwb3J0IHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdh aXRMU05TdGF0ZS4gKi8KLVNpemUKLVdhaXRMU05TaG1lbVNpemUodm9pZCkKKy8qIFJlZ2lz dGVyIHRoZSBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdExTTlN0YXRlLiAq Lworc3RhdGljIHZvaWQKK1dhaXRMU05TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNp emUJCXNpemU7CiAKIAlzaXplID0gb2Zmc2V0b2YoV2FpdExTTlN0YXRlLCBwcm9jSW5mb3Mp OwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5kcyArIE5VTV9B VVhJTElBUllfUFJPQ1MsIHNpemVvZihXYWl0TFNOUHJvY0luZm8pKSk7Ci0JcmV0dXJuIHNp emU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIldhaXRMU05TdGF0ZSIsCisJCQkJ CSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmd2FpdExTTlN0 YXRlLAorCQkpOwogfQogCiAvKiBJbml0aWFsaXplIHRoZSBXYWl0TFNOU3RhdGUgaW4gdGhl IHNoYXJlZCBtZW1vcnkuICovCi12b2lkCi1XYWl0TFNOU2htZW1Jbml0KHZvaWQpCitzdGF0 aWMgdm9pZAorV2FpdExTTlNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7 Ci0KLQl3YWl0TFNOU3RhdGUgPSAoV2FpdExTTlN0YXRlICopIFNobWVtSW5pdFN0cnVjdCgi V2FpdExTTlN0YXRlIiwKLQkJCQkJCQkJCQkJCQlXYWl0TFNOU2htZW1TaXplKCksCi0JCQkJ CQkJCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQorCS8qIEluaXRpYWxpemUgaGVhcHMg YW5kIHRyYWNraW5nICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBXQUlUX0xTTl9UWVBFX0NP VU5UOyBpKyspCiAJewotCQlpbnQJCQlpOwotCi0JCS8qIEluaXRpYWxpemUgaGVhcHMgYW5k IHRyYWNraW5nICovCi0JCWZvciAoaSA9IDA7IGkgPCBXQUlUX0xTTl9UWVBFX0NPVU5UOyBp KyspCi0JCXsKLQkJCXBnX2F0b21pY19pbml0X3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0 ZWRMU05baV0sIFBHX1VJTlQ2NF9NQVgpOwotCQkJcGFpcmluZ2hlYXBfaW5pdGlhbGl6ZSgm d2FpdExTTlN0YXRlLT53YWl0ZXJzSGVhcFtpXSwgd2FpdGxzbl9jbXAsIE5VTEwpOwotCQl9 Ci0KLQkJLyogSW5pdGlhbGl6ZSBwcm9jZXNzIGluZm8gYXJyYXkgKi8KLQkJbWVtc2V0KCZ3 YWl0TFNOU3RhdGUtPnByb2NJbmZvcywgMCwKLQkJCSAgIChNYXhCYWNrZW5kcyArIE5VTV9B VVhJTElBUllfUFJPQ1MpICogc2l6ZW9mKFdhaXRMU05Qcm9jSW5mbykpOworCQlwZ19hdG9t aWNfaW5pdF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOW2ldLCBQR19VSU5UNjRf TUFYKTsKKwkJcGFpcmluZ2hlYXBfaW5pdGlhbGl6ZSgmd2FpdExTTlN0YXRlLT53YWl0ZXJz SGVhcFtpXSwgd2FpdGxzbl9jbXAsIE5VTEwpOwogCX0KKworCS8qIEluaXRpYWxpemUgcHJv Y2VzcyBpbmZvIGFycmF5ICovCisJbWVtc2V0KCZ3YWl0TFNOU3RhdGUtPnByb2NJbmZvcywg MCwKKwkJICAgKE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUykgKiBzaXplb2Yo V2FpdExTTlByb2NJbmZvKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCmluZGV4IDg0MDBlNjcyMmNjLi4yNTBjNDNiODVlNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTk4LDYgKzk4LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCkBAIC0zMDksNiArMzEwLDE0IEBAIHR5 cGVkZWYgc3RydWN0CiAKIHN0YXRpYyBBdXRvVmFjdXVtU2htZW1TdHJ1Y3QgKkF1dG9WYWN1 dW1TaG1lbTsKIAorc3RhdGljIHZvaWQgQXV0b1ZhY3V1bVNobWVtUmVxdWVzdCh2b2lkICph cmcpOworc3RhdGljIHZvaWQgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkICphcmcpOworCitj b25zdCBTaG1lbUNhbGxiYWNrcyBBdXRvVmFjdXVtU2htZW1DYWxsYmFja3MgPSB7CisJLnJl cXVlc3RfZm4gPSBBdXRvVmFjdXVtU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQXV0b1Zh Y3V1bVNobWVtSW5pdCwKK307CisKIC8qCiAgKiB0aGUgZGF0YWJhc2UgbGlzdCAob2YgYXZs X2RiYXNlIGVsZW1lbnRzKSBpbiB0aGUgbGF1bmNoZXIsIGFuZCB0aGUgY29udGV4dAogICog dGhhdCBjb250YWlucyBpdApAQCAtMzU0NSwxMSArMzU1NCwxMSBAQCBhdXRvdmFjX2luaXQo dm9pZCkKIH0KIAogLyoKLSAqIEF1dG9WYWN1dW1TaG1lbVNpemUKLSAqCQlDb21wdXRlIHNw YWNlIG5lZWRlZCBmb3IgYXV0b3ZhY3V1bS1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKKyAqIEF1 dG9WYWN1dW1TaG1lbVJlcXVlc3QKKyAqCQlSZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNl IG5lZWRlZCBmb3IgYXV0b3ZhY3V1bQogICovCi1TaXplCi1BdXRvVmFjdXVtU2htZW1TaXpl KHZvaWQpCitzdGF0aWMgdm9pZAorQXV0b1ZhY3V1bVNobWVtUmVxdWVzdCh2b2lkICphcmcp CiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtMzU2MCw1MyArMzU2OSw0MSBAQCBBdXRvVmFjdXVt U2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IE1BWEFMSUdOKHNpemUpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBtdWxfc2l6ZShhdXRvdmFjdXVtX3dvcmtlcl9zbG90cywKIAkJCQkJCQkJ ICAgc2l6ZW9mKFdvcmtlckluZm9EYXRhKSkpOwotCXJldHVybiBzaXplOworCisJU2htZW1S ZXF1ZXN0U3RydWN0KC5uYW1lID0gIkF1dG9WYWN1dW0gRGF0YSIsCisJCQkJCSAgIC5zaXpl ID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQXV0b1ZhY3V1bVNobWVtLAor CQkpOwogfQogCiAvKgogICogQXV0b1ZhY3V1bVNobWVtSW5pdAotICoJCUFsbG9jYXRlIGFu ZCBpbml0aWFsaXplIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVtb3J5CisgKgkJSW5p dGlhbGl6ZSBhdXRvdmFjdXVtLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1B dXRvVmFjdXVtU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorQXV0b1ZhY3V1bVNobWVt SW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlBdXRvVmFjdXVtU2htZW0g PSAoQXV0b1ZhY3V1bVNobWVtU3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQXV0b1Zh Y3V1bSBEYXRhIiwKLQkJCQkJCUF1dG9WYWN1dW1TaG1lbVNpemUoKSwKLQkJCQkJCSZmb3Vu ZCk7Ci0KLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJV29ya2VySW5mbwl3b3Jr ZXI7Ci0JCWludAkJCWk7CisJV29ya2VySW5mbwl3b3JrZXI7CiAKLQkJQXNzZXJ0KCFmb3Vu ZCk7Ci0KLQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7Ci0JCWRjbGlz dF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzKTsKLQkJZGxpc3RfaW5p dCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9ydW5uaW5nV29ya2Vycyk7Ci0JCUF1dG9WYWN1dW1T aG1lbS0+YXZfc3RhcnRpbmdXb3JrZXIgPSBOVUxMOwotCQltZW1zZXQoQXV0b1ZhY3V1bVNo bWVtLT5hdl93b3JrSXRlbXMsIDAsCi0JCQkgICBzaXplb2YoQXV0b1ZhY3V1bVdvcmtJdGVt KSAqIE5VTV9XT1JLSVRFTVMpOwotCi0JCXdvcmtlciA9IChXb3JrZXJJbmZvKSAoKGNoYXIg KikgQXV0b1ZhY3V1bVNobWVtICsKLQkJCQkJCQkgICBNQVhBTElHTihzaXplb2YoQXV0b1Zh Y3V1bVNobWVtU3RydWN0KSkpOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIFdvcmtlckluZm8g ZnJlZSBsaXN0ICovCi0JCWZvciAoaSA9IDA7IGkgPCBhdXRvdmFjdXVtX3dvcmtlcl9zbG90 czsgaSsrKQotCQl7Ci0JCQlkY2xpc3RfcHVzaF9oZWFkKCZBdXRvVmFjdXVtU2htZW0tPmF2 X2ZyZWVXb3JrZXJzLAotCQkJCQkJCSAmd29ya2VyW2ldLndpX2xpbmtzKTsKLQkJCXBnX2F0 b21pY19pbml0X2ZsYWcoJndvcmtlcltpXS53aV9kb2JhbGFuY2UpOwotCQl9CisJQXV0b1Zh Y3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7CisJZGNsaXN0X2luaXQoJkF1dG9WYWN1 dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMpOworCWRsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1l bS0+YXZfcnVubmluZ1dvcmtlcnMpOworCUF1dG9WYWN1dW1TaG1lbS0+YXZfc3RhcnRpbmdX b3JrZXIgPSBOVUxMOworCW1lbXNldChBdXRvVmFjdXVtU2htZW0tPmF2X3dvcmtJdGVtcywg MCwKKwkJICAgc2l6ZW9mKEF1dG9WYWN1dW1Xb3JrSXRlbSkgKiBOVU1fV09SS0lURU1TKTsK IAotCQlwZ19hdG9taWNfaW5pdF91MzIoJkF1dG9WYWN1dW1TaG1lbS0+YXZfbndvcmtlcnNG b3JCYWxhbmNlLCAwKTsKKwl3b3JrZXIgPSAoV29ya2VySW5mbykgKChjaGFyICopIEF1dG9W YWN1dW1TaG1lbSArCisJCQkJCQkgICBNQVhBTElHTihzaXplb2YoQXV0b1ZhY3V1bVNobWVt U3RydWN0KSkpOwogCisJLyogaW5pdGlhbGl6ZSB0aGUgV29ya2VySW5mbyBmcmVlIGxpc3Qg Ki8KKwlmb3IgKGludCBpID0gMDsgaSA8IGF1dG92YWN1dW1fd29ya2VyX3Nsb3RzOyBpKysp CisJeworCQlkY2xpc3RfcHVzaF9oZWFkKCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3Jr ZXJzLAorCQkJCQkJICZ3b3JrZXJbaV0ud2lfbGlua3MpOworCQlwZ19hdG9taWNfaW5pdF9m bGFnKCZ3b3JrZXJbaV0ud2lfZG9iYWxhbmNlKTsKIAl9Ci0JZWxzZQotCQlBc3NlcnQoZm91 bmQpOworCisJcGdfYXRvbWljX2luaXRfdTMyKCZBdXRvVmFjdXVtU2htZW0tPmF2X253b3Jr ZXJzRm9yQmFsYW5jZSwgMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2Vy LmMKaW5kZXggNTM2YWZmN2NhMDUuLjA5OTJiOWI2MzUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5j bHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2FzY2lpLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTExMCw2ICsxMTEsMTQgQEAgc3RydWN0IEJh Y2tncm91bmRXb3JrZXJIYW5kbGUKIAogc3RhdGljIEJhY2tncm91bmRXb3JrZXJBcnJheSAq QmFja2dyb3VuZFdvcmtlckRhdGE7CiAKK3N0YXRpYyB2b2lkIEJhY2tncm91bmRXb3JrZXJT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJhY2tncm91bmRXb3JrZXJT aG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQmFja2dyb3Vu ZFdvcmtlclNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQmFja2dyb3VuZFdv cmtlclNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEJhY2tncm91bmRXb3JrZXJTaG1lbUlu aXQsCit9OworCiAvKgogICogTGlzdCBvZiBpbnRlcm5hbCBiYWNrZ3JvdW5kIHdvcmtlciBl bnRyeSBwb2ludHMuICBXZSBuZWVkIHRoaXMgZm9yCiAgKiByZWFzb25zIGV4cGxhaW5lZCBp biBMb29rdXBCYWNrZ3JvdW5kV29ya2VyRnVuY3Rpb24oKSwgYmVsb3cuCkBAIC0xNjAsMTAg KzE2OSwxMCBAQCBzdGF0aWMgYmd3b3JrZXJfbWFpbl90eXBlIExvb2t1cEJhY2tncm91bmRX b3JrZXJGdW5jdGlvbihjb25zdCBjaGFyICpsaWJyYXJ5bmFtZQogCiAKIC8qCi0gKiBDYWxj dWxhdGUgc2hhcmVkIG1lbW9yeSBuZWVkZWQuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5 IG5lZWRlZCBmb3IgYmFja2dyb3VuZCB3b3JrZXJzLgogICovCi1TaXplCi1CYWNrZ3JvdW5k V29ya2VyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQmFja2dyb3VuZFdvcmtlclNo bWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtMTcxLDY2ICsx ODAsNTggQEAgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBvZmZz ZXRvZihCYWNrZ3JvdW5kV29ya2VyQXJyYXksIHNsb3QpOwogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBtdWxfc2l6ZShtYXhfd29ya2VyX3Byb2Nlc3NlcywKIAkJCQkJCQkJICAgc2l6ZW9m KEJhY2tncm91bmRXb3JrZXJTbG90KSkpOwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1 ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tncm91bmQgV29ya2VyIERhdGEiLAorCQkJCQkgICAu c2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tncm91bmRXb3Jr ZXJEYXRhLAorCQkpOwogfQogCiAvKgotICogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5Lgor ICogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGZvciBiYWNrZ3JvdW5kIHdvcmtlcnMuCiAg Ki8KLXZvaWQKLUJhY2tncm91bmRXb3JrZXJTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lk CitCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3Vu ZDsKLQotCUJhY2tncm91bmRXb3JrZXJEYXRhID0gU2htZW1Jbml0U3RydWN0KCJCYWNrZ3Jv dW5kIFdvcmtlciBEYXRhIiwKLQkJCQkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VyU2htZW1T aXplKCksCi0JCQkJCQkJCQkJICAgJmZvdW5kKTsKLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVy KQotCXsKLQkJZGxpc3RfaXRlcglpdGVyOwotCQlpbnQJCQlzbG90bm8gPSAwOworCWRsaXN0 X2l0ZXIJaXRlcjsKKwlpbnQJCQlzbG90bm8gPSAwOwogCi0JCUJhY2tncm91bmRXb3JrZXJE YXRhLT50b3RhbF9zbG90cyA9IG1heF93b3JrZXJfcHJvY2Vzc2VzOwotCQlCYWNrZ3JvdW5k V29ya2VyRGF0YS0+cGFyYWxsZWxfcmVnaXN0ZXJfY291bnQgPSAwOwotCQlCYWNrZ3JvdW5k V29ya2VyRGF0YS0+cGFyYWxsZWxfdGVybWluYXRlX2NvdW50ID0gMDsKKwlCYWNrZ3JvdW5k V29ya2VyRGF0YS0+dG90YWxfc2xvdHMgPSBtYXhfd29ya2VyX3Byb2Nlc3NlczsKKwlCYWNr Z3JvdW5kV29ya2VyRGF0YS0+cGFyYWxsZWxfcmVnaXN0ZXJfY291bnQgPSAwOworCUJhY2tn cm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF90ZXJtaW5hdGVfY291bnQgPSAwOwogCi0JCS8q Ci0JCSAqIENvcHkgY29udGVudHMgb2Ygd29ya2VyIGxpc3QgaW50byBzaGFyZWQgbWVtb3J5 LiAgUmVjb3JkIHRoZSBzaGFyZWQKLQkJICogbWVtb3J5IHNsb3QgYXNzaWduZWQgdG8gZWFj aCB3b3JrZXIuICBUaGlzIGVuc3VyZXMgYSAxLXRvLTEKLQkJICogY29ycmVzcG9uZGVuY2Ug YmV0d2VlbiB0aGUgcG9zdG1hc3RlcidzIHByaXZhdGUgbGlzdCBhbmQgdGhlIGFycmF5Ci0J CSAqIGluIHNoYXJlZCBtZW1vcnkuCi0JCSAqLwotCQlkbGlzdF9mb3JlYWNoKGl0ZXIsICZC YWNrZ3JvdW5kV29ya2VyTGlzdCkKLQkJewotCQkJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNs b3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3Rbc2xvdG5vXTsKLQkJCVJlZ2lzdGVy ZWRCZ1dvcmtlciAqcnc7CisJLyoKKwkgKiBDb3B5IGNvbnRlbnRzIG9mIHdvcmtlciBsaXN0 IGludG8gc2hhcmVkIG1lbW9yeS4gIFJlY29yZCB0aGUgc2hhcmVkCisJICogbWVtb3J5IHNs b3QgYXNzaWduZWQgdG8gZWFjaCB3b3JrZXIuICBUaGlzIGVuc3VyZXMgYSAxLXRvLTEKKwkg KiBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHRoZSBwb3N0bWFzdGVyJ3MgcHJpdmF0ZSBsaXN0 IGFuZCB0aGUgYXJyYXkgaW4KKwkgKiBzaGFyZWQgbWVtb3J5LgorCSAqLworCWRsaXN0X2Zv cmVhY2goaXRlciwgJkJhY2tncm91bmRXb3JrZXJMaXN0KQorCXsKKwkJQmFja2dyb3VuZFdv cmtlclNsb3QgKnNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3Rbc2xvdG5vXTsK KwkJUmVnaXN0ZXJlZEJnV29ya2VyICpydzsKIAotCQkJcncgPSBkbGlzdF9jb250YWluZXIo UmVnaXN0ZXJlZEJnV29ya2VyLCByd19sbm9kZSwgaXRlci5jdXIpOwotCQkJQXNzZXJ0KHNs b3RubyA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKLQkJCXNsb3QtPmluX3VzZSA9IHRydWU7 Ci0JCQlzbG90LT50ZXJtaW5hdGUgPSBmYWxzZTsKLQkJCXNsb3QtPnBpZCA9IEludmFsaWRQ aWQ7Ci0JCQlzbG90LT5nZW5lcmF0aW9uID0gMDsKLQkJCXJ3LT5yd19zaG1lbV9zbG90ID0g c2xvdG5vOwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7CS8qIG1pZ2h0 IGJlIHJlaW5pdCBhZnRlciBjcmFzaCAqLwotCQkJbWVtY3B5KCZzbG90LT53b3JrZXIsICZy dy0+cndfd29ya2VyLCBzaXplb2YoQmFja2dyb3VuZFdvcmtlcikpOwotCQkJKytzbG90bm87 Ci0JCX0KKwkJcncgPSBkbGlzdF9jb250YWluZXIoUmVnaXN0ZXJlZEJnV29ya2VyLCByd19s bm9kZSwgaXRlci5jdXIpOworCQlBc3NlcnQoc2xvdG5vIDwgbWF4X3dvcmtlcl9wcm9jZXNz ZXMpOworCQlzbG90LT5pbl91c2UgPSB0cnVlOworCQlzbG90LT50ZXJtaW5hdGUgPSBmYWxz ZTsKKwkJc2xvdC0+cGlkID0gSW52YWxpZFBpZDsKKwkJc2xvdC0+Z2VuZXJhdGlvbiA9IDA7 CisJCXJ3LT5yd19zaG1lbV9zbG90ID0gc2xvdG5vOworCQlydy0+cndfd29ya2VyLmJnd19u b3RpZnlfcGlkID0gMDsJLyogbWlnaHQgYmUgcmVpbml0IGFmdGVyIGNyYXNoICovCisJCW1l bWNweSgmc2xvdC0+d29ya2VyLCAmcnctPnJ3X3dvcmtlciwgc2l6ZW9mKEJhY2tncm91bmRX b3JrZXIpKTsKKwkJKytzbG90bm87CisJfQogCi0JCS8qCi0JCSAqIE1hcmsgYW55IHJlbWFp bmluZyBzbG90cyBhcyBub3QgaW4gdXNlLgotCQkgKi8KLQkJd2hpbGUgKHNsb3RubyA8IG1h eF93b3JrZXJfcHJvY2Vzc2VzKQotCQl7Ci0JCQlCYWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xv dCA9ICZCYWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xvdFtzbG90bm9dOworCS8qCisJICogTWFy ayBhbnkgcmVtYWluaW5nIHNsb3RzIGFzIG5vdCBpbiB1c2UuCisJICovCisJd2hpbGUgKHNs b3RubyA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKQorCXsKKwkJQmFja2dyb3VuZFdvcmtlclNs b3QgKnNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3Rbc2xvdG5vXTsKIAotCQkJ c2xvdC0+aW5fdXNlID0gZmFsc2U7Ci0JCQkrK3Nsb3RubzsKLQkJfQorCQlzbG90LT5pbl91 c2UgPSBmYWxzZTsKKwkJKytzbG90bm87CiAJfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2lu dGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDNj OTgyYzZmZmFjLi42YjQyNGVlNjEwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNr cG9pbnRlci5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCkBAIC0xNDMsNiArMTQ0LDE0IEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyBDaGVj a3BvaW50ZXJTaG1lbVN0cnVjdCAqQ2hlY2twb2ludGVyU2htZW07CiAKK3N0YXRpYyB2b2lk IENoZWNrcG9pbnRlclNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQ2hl Y2twb2ludGVyU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tz IENoZWNrcG9pbnRlclNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQ2hlY2tw b2ludGVyU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQ2hlY2twb2ludGVyU2htZW1Jbml0 LAorfTsKKwogLyogaW50ZXJ2YWwgZm9yIGNhbGxpbmcgQWJzb3JiU3luY1JlcXVlc3RzIGlu IENoZWNrcG9pbnRXcml0ZURlbGF5ICovCiAjZGVmaW5lIFdSSVRFU19QRVJfQUJTT1JCCQkx MDAwCiAKQEAgLTk1MCwxMSArOTU5LDExIEBAIFJlcVNodXRkb3duWExPRyhTSUdOQUxfQVJH UykKICAqLwogCiAvKgotICogQ2hlY2twb2ludGVyU2htZW1TaXplCi0gKgkJQ29tcHV0ZSBz cGFjZSBuZWVkZWQgZm9yIGNoZWNrcG9pbnRlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKKyAq IENoZWNrcG9pbnRlclNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkg c3BhY2UgbmVlZGVkIGZvciBjaGVja3BvaW50ZXIKICAqLwotU2l6ZQotQ2hlY2twb2ludGVy U2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQ2hlY2twb2ludGVyU2htZW1SZXF1ZXN0 KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBAIC05NjcsMzkgKzk3NiwyNCBAQCBD aGVja3BvaW50ZXJTaG1lbVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVs X3NpemUoTWluKE5CdWZmZXJzLAogCQkJCQkJCQkJICAgTUFYX0NIRUNLUE9JTlRfUkVRVUVT VFMpLAogCQkJCQkJCQkgICBzaXplb2YoQ2hlY2twb2ludGVyUmVxdWVzdCkpKTsKLQotCXJl dHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJDaGVja3BvaW50ZXIg RGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmQ2hlY2twb2ludGVyU2htZW0sCisJCSk7CiB9CiAKIC8qCiAgKiBDaGVja3BvaW50ZXJT aG1lbUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBjaGVja3BvaW50ZXItcmVs YXRlZCBzaGFyZWQgbWVtb3J5CisgKgkJSW5pdGlhbGl6ZSBjaGVja3BvaW50ZXItcmVsYXRl ZCBzaGFyZWQgbWVtb3J5CiAgKi8KLXZvaWQKLUNoZWNrcG9pbnRlclNobWVtSW5pdCh2b2lk KQorc3RhdGljIHZvaWQKK0NoZWNrcG9pbnRlclNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0J U2l6ZQkJc2l6ZSA9IENoZWNrcG9pbnRlclNobWVtU2l6ZSgpOwotCWJvb2wJCWZvdW5kOwot Ci0JQ2hlY2twb2ludGVyU2htZW0gPSAoQ2hlY2twb2ludGVyU2htZW1TdHJ1Y3QgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJDaGVja3BvaW50ZXIgRGF0YSIsCi0JCQkJCQlzaXplLAotCQkJ CQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKgotCQkgKiBGaXJzdCB0aW1l IHRocm91Z2gsIHNvIGluaXRpYWxpemUuICBOb3RlIHRoYXQgd2UgemVybyB0aGUgd2hvbGUK LQkJICogcmVxdWVzdHMgYXJyYXk7IHRoaXMgaXMgc28gdGhhdCBDb21wYWN0Q2hlY2twb2lu dGVyUmVxdWVzdFF1ZXVlIGNhbgotCQkgKiBhc3N1bWUgdGhhdCBhbnkgcGFkIGJ5dGVzIGlu IHRoZSByZXF1ZXN0IHN0cnVjdHMgYXJlIHplcm9lcy4KLQkJICovCi0JCU1lbVNldChDaGVj a3BvaW50ZXJTaG1lbSwgMCwgc2l6ZSk7Ci0JCVNwaW5Mb2NrSW5pdCgmQ2hlY2twb2ludGVy U2htZW0tPmNrcHRfbGNrKTsKLQkJQ2hlY2twb2ludGVyU2htZW0tPm1heF9yZXF1ZXN0cyA9 IE1pbihOQnVmZmVycywgTUFYX0NIRUNLUE9JTlRfUkVRVUVTVFMpOwotCQlDaGVja3BvaW50 ZXJTaG1lbS0+aGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT50YWlsID0gMDsKLQkJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+c3RhcnRfY3YpOwotCQlDb25k aXRpb25WYXJpYWJsZUluaXQoJkNoZWNrcG9pbnRlclNobWVtLT5kb25lX2N2KTsKLQl9CisJ U3BpbkxvY2tJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+Y2twdF9sY2spOworCUNoZWNrcG9p bnRlclNobWVtLT5tYXhfcmVxdWVzdHMgPSBNaW4oTkJ1ZmZlcnMsIE1BWF9DSEVDS1BPSU5U X1JFUVVFU1RTKTsKKwlDaGVja3BvaW50ZXJTaG1lbS0+aGVhZCA9IENoZWNrcG9pbnRlclNo bWVtLT50YWlsID0gMDsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJkNoZWNrcG9pbnRlclNo bWVtLT5zdGFydF9jdik7CisJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJT aG1lbS0+ZG9uZV9jdik7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9k YXRhY2hlY2tzdW1fc3RhdGUuYwppbmRleCA3NjAwNGJjZWRjNi4uZWI3YjAxZDA5OTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYwpAQCAt MjExLDYgKzIxMSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3Qu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jv aWRzLmgiCkBAIC0zNDYsNiArMzQ3LDcgQEAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBsYXVuY2hlcl9ydW5uaW5nID0gZmFsc2U7CiBzdGF0aWMgRGF0YUNoZWNrc3Vtc1dvcmtl ck9wZXJhdGlvbiBvcGVyYXRpb247CiAKIC8qIFByb3RvdHlwZXMgKi8KK3N0YXRpYyB2b2lk IERhdGFDaGVja3N1bXNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKIHN0YXRpYyBib29sIERh dGFiYXNlRXhpc3RzKE9pZCBkYm9pZCk7CiBzdGF0aWMgTGlzdCAqQnVpbGREYXRhYmFzZUxp c3Qodm9pZCk7CiBzdGF0aWMgTGlzdCAqQnVpbGRSZWxhdGlvbkxpc3QoYm9vbCB0ZW1wX3Jl bGF0aW9ucywgYm9vbCBpbmNsdWRlX3NoYXJlZCk7CkBAIC0zNTYsNiArMzU4LDEwIEBAIHN0 YXRpYyBib29sIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVsYXRpb24gcmVsbiwgRm9y a051bWJlciBmb3JrTnVtLCBCdWZmZXJBCiBzdGF0aWMgdm9pZCBsYXVuY2hlcl9jYW5jZWxf aGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgdm9pZCBXYWl0Rm9yQWxsVHJhbnNhY3Rp b25zVG9GaW5pc2godm9pZCk7CiAKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIERhdGFDaGVja3N1 bXNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IERhdGFDaGVja3N1bXNTaG1l bVJlcXVlc3QsCit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEZ1bmN0aW9u YWxpdHkgZm9yIG1hbmlwdWxhdGluZyB0aGUgZGF0YSBjaGVja3N1bSBzdGF0ZSBpbiB0aGUg Y2x1c3RlcgogICovCkBAIC0xMjM2LDM1ICsxMjQyLDE2IEBAIFByb2Nlc3NBbGxEYXRhYmFz ZXModm9pZCkKIH0KIAogLyoKLSAqIERhdGFDaGVja3N1bVN0YXRlU2l6ZQotICoJCUNvbXB1 dGUgcmVxdWlyZWQgc3BhY2UgZm9yIGRhdGFjaGVja3N1bXN3b3JrZXItcmVsYXRlZCBzaGFy ZWQgbWVtb3J5Ci0gKi8KLVNpemUKLURhdGFDaGVja3N1bXNTaG1lbVNpemUodm9pZCkKLXsK LQlTaXplCQlzaXplOwotCi0Jc2l6ZSA9IHNpemVvZihEYXRhQ2hlY2tzdW1zU3RhdGVTdHJ1 Y3QpOwotCXNpemUgPSBNQVhBTElHTihzaXplKTsKLQotCXJldHVybiBzaXplOwotfQotCi0v KgotICogRGF0YUNoZWNrc3VtU3RhdGVJbml0Ci0gKgkJQWxsb2NhdGUgYW5kIGluaXRpYWxp emUgZGF0YWNoZWNrc3Vtc3dvcmtlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKKyAqIERhdGFD aGVja3N1bVNobWVtUmVxdWVzdAorICoJCVJlcXVlc3QgZGF0YWNoZWNrc3Vtc3dvcmtlci1y ZWxhdGVkIHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotRGF0YUNoZWNrc3Vtc1NobWVtSW5p dCh2b2lkKQorc3RhdGljIHZvaWQKK0RhdGFDaGVja3N1bXNTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JRGF0YUNoZWNrc3VtU3RhdGUgPSAoRGF0YUNo ZWNrc3Vtc1N0YXRlU3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiRGF0YUNoZWNrc3Vt c1dvcmtlciBEYXRhIiwKLQkJCQkJCURhdGFDaGVja3N1bXNTaG1lbVNpemUoKSwKLQkJCQkJ CSZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKLQkJTWVtU2V0KERhdGFDaGVja3N1bVN0YXRlLCAw LCBEYXRhQ2hlY2tzdW1zU2htZW1TaXplKCkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJEYXRhQ2hlY2tzdW1zV29ya2VyIERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVv ZihEYXRhQ2hlY2tzdW1zU3RhdGVTdHJ1Y3QpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZEYXRhQ2hlY2tzdW1TdGF0ZSwKKwkJKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn YXJjaC5jCmluZGV4IGZhNGJkZmU5YWI5Li4wYTFhMTE0OWQ3OCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3BnYXJjaC5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUg InV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcHNfc3RhdHVzLmgiCkBAIC0xNTQsMzMgKzE1NSwzMSBAQCBzdGF0aWMgaW50CXJl YWR5X2ZpbGVfY29tcGFyYXRvcihEYXR1bSBhLCBEYXR1bSBiLCB2b2lkICphcmcpOwogc3Rh dGljIHZvaWQgTG9hZEFyY2hpdmVMaWJyYXJ5KHZvaWQpOwogc3RhdGljIHZvaWQgcGdhcmNo X2NhbGxfbW9kdWxlX3NodXRkb3duX2NiKGludCBjb2RlLCBEYXR1bSBhcmcpOwogCi0vKiBS ZXBvcnQgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUGdBcmNoU2htZW1Jbml0ICov Ci1TaXplCi1QZ0FyY2hTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplID0gMDsKK3N0 YXRpYyB2b2lkIFBnQXJjaFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQg UGdBcmNoU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg c2l6ZW9mKFBnQXJjaERhdGEpKTsKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFBnQXJjaFNobWVt Q2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUGdBcmNoU2htZW1SZXF1ZXN0LAorCS5p bml0X2ZuID0gUGdBcmNoU2htZW1Jbml0LAorfTsKIAotCXJldHVybiBzaXplOworLyogUmVn aXN0ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgdGhlIGFyY2hpdmVyICovCitz dGF0aWMgdm9pZAorUGdBcmNoU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKK3sKKwlTaG1lbVJl cXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQXJjaGl2ZXIgRGF0YSIsCisJCQkJCSAgIC5zaXplID0g c2l6ZW9mKFBnQXJjaERhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZQZ0FyY2gs CisJCSk7CiB9CiAKLS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGFyY2hpdmVyLXJlbGF0 ZWQgc2hhcmVkIG1lbW9yeSAqLwotdm9pZAotUGdBcmNoU2htZW1Jbml0KHZvaWQpCisvKiBJ bml0aWFsaXplIGFyY2hpdmVyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeSAqLworc3RhdGljIHZv aWQKK1BnQXJjaFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlQ Z0FyY2ggPSAoUGdBcmNoRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFyY2hpdmVyIERh dGEiLCBQZ0FyY2hTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJTWVtU2V0KFBn QXJjaCwgMCwgUGdBcmNoU2htZW1TaXplKCkpOwotCQlQZ0FyY2gtPnBncHJvY25vID0gSU5W QUxJRF9QUk9DX05VTUJFUjsKLQkJcGdfYXRvbWljX2luaXRfdTMyKCZQZ0FyY2gtPmZvcmNl X2Rpcl9zY2FuLCAwKTsKLQl9CisJTWVtU2V0KFBnQXJjaCwgMCwgc2l6ZW9mKFBnQXJjaERh dGEpKTsKKwlQZ0FyY2gtPnBncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwlwZ19h dG9taWNfaW5pdF91MzIoJlBnQXJjaC0+Zm9yY2VfZGlyX3NjYW4sIDApOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCBhMzdiMzAxOGFi Zi4uMjA5NjBmNWI2MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs c3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1 Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgpAQCAtMTA5LDYgKzExMCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogLyogUG9p bnRlciB0byBzaGFyZWQgbWVtb3J5IHN0YXRlLiAqLwogc3RhdGljIFdhbFN1bW1hcml6ZXJE YXRhICpXYWxTdW1tYXJpemVyQ3RsOwogCitzdGF0aWMgdm9pZCBXYWxTdW1tYXJpemVyU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBXYWxTdW1tYXJpemVyU2htZW1J bml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFdhbFN1bW1hcml6ZXJT aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFdhbFN1bW1hcml6ZXJTaG1lbVJl cXVlc3QsCisJLmluaXRfZm4gPSBXYWxTdW1tYXJpemVyU2htZW1Jbml0LAorfTsKKwogLyoK ICAqIFdoZW4gd2UgcmVhY2ggZW5kIG9mIFdBTCBhbmQgbmVlZCB0byByZWFkIG1vcmUsIHdl IHNsZWVwIGZvciBhIG51bWJlciBvZgogICogbWlsbGlzZWNvbmRzIHRoYXQgaXMgYW4gaW50 ZWdlciBtdWx0aXBsZSBvZiBNU19QRVJfU0xFRVBfUVVBTlRVTS4gVGhpcyBpcwpAQCAtMTY4 LDQzICsxNzcsMzQgQEAgc3RhdGljIHZvaWQgc3VtbWFyaXplcl93YWl0X2Zvcl93YWwodm9p ZCk7CiBzdGF0aWMgdm9pZCBNYXliZVJlbW92ZU9sZFdhbFN1bW1hcmllcyh2b2lkKTsKIAog LyoKLSAqIEFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIGZvciB0aGlzIG1vZHVs ZS4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IHRoaXMgbW9k dWxlLgogICovCi1TaXplCi1XYWxTdW1tYXJpemVyU2htZW1TaXplKHZvaWQpCitzdGF0aWMg dm9pZAorV2FsU3VtbWFyaXplclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0dXJu IHNpemVvZihXYWxTdW1tYXJpemVyRGF0YSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIldhbCBTdW1tYXJpemVyIEN0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFdhbFN1 bW1hcml6ZXJEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmV2FsU3VtbWFyaXpl ckN0bCwKKwkJKTsKIH0KIAogLyoKLSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gc2hhcmVkIG1l bW9yeSBzZWdtZW50IGZvciB0aGlzIG1vZHVsZS4KKyAqIEluaXRpYWxpemUgc2hhcmVkIG1l bW9yeSBmb3IgdGhpcyBtb2R1bGUuCiAgKi8KLXZvaWQKLVdhbFN1bW1hcml6ZXJTaG1lbUlu aXQodm9pZCkKK3N0YXRpYyB2b2lkCitXYWxTdW1tYXJpemVyU2htZW1Jbml0KHZvaWQgKmFy ZykKIHsKLQlib29sCQlmb3VuZDsKLQotCVdhbFN1bW1hcml6ZXJDdGwgPSAoV2FsU3VtbWFy aXplckRhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJXYWwgU3VtbWFyaXplciBDdGwiLCBX YWxTdW1tYXJpemVyU2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCS8qCi0JCSAqIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZS4K LQkJICoKLQkJICogV2UncmUganVzdCBmaWxsaW5nIGluIGR1bW15IHZhbHVlcyBoZXJlIC0t IHRoZSByZWFsIGluaXRpYWxpemF0aW9uCi0JCSAqIHdpbGwgaGFwcGVuIHdoZW4gR2V0T2xk ZXN0VW5zdW1tYXJpemVkTFNOKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QKLQkJICogdGlt ZS4KLQkJICovCi0JCVdhbFN1bW1hcml6ZXJDdGwtPmluaXRpYWxpemVkID0gZmFsc2U7Ci0J CVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZWRfdGxpID0gMDsKLQkJV2FsU3VtbWFyaXpl ckN0bC0+c3VtbWFyaXplZF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQkJV2FsU3VtbWFy aXplckN0bC0+bHNuX2lzX2V4YWN0ID0gZmFsc2U7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPnN1 bW1hcml6ZXJfcGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCQlXYWxTdW1tYXJp emVyQ3RsLT5wZW5kaW5nX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCQlDb25kaXRpb25W YXJpYWJsZUluaXQoJldhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcnlfZmlsZV9jdik7Ci0JfQor CS8qCisJICogV2UncmUganVzdCBmaWxsaW5nIGluIGR1bW15IHZhbHVlcyBoZXJlIC0tIHRo ZSByZWFsIGluaXRpYWxpemF0aW9uIHdpbGwKKwkgKiBoYXBwZW4gd2hlbiBHZXRPbGRlc3RV bnN1bW1hcml6ZWRMU04oKSBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgorCSAqLwor CVdhbFN1bW1hcml6ZXJDdGwtPmluaXRpYWxpemVkID0gZmFsc2U7CisJV2FsU3VtbWFyaXpl ckN0bC0+c3VtbWFyaXplZF90bGkgPSAwOworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6 ZWRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJV2FsU3VtbWFyaXplckN0bC0+bHNuX2lz X2V4YWN0ID0gZmFsc2U7CisJV2FsU3VtbWFyaXplckN0bC0+c3VtbWFyaXplcl9wZ3Byb2Nu byA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJV2FsU3VtbWFyaXplckN0bC0+cGVuZGluZ19s c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFN1 bW1hcml6ZXJDdGwtPnN1bW1hcnlfZmlsZV9jdik7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggMDk5NjQxOTg1NTAuLjll NzVhM2UwNGVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCkBAIC03MSw2ICs3MiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2Fs UmVwQ3R4U3RydWN0CiAKIHN0YXRpYyBMb2dpY2FsUmVwQ3R4U3RydWN0ICpMb2dpY2FsUmVw Q3R4OwogCitzdGF0aWMgdm9pZCBBcHBseUxhdW5jaGVyU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBBcHBseUxhdW5jaGVyU2htZW1Jbml0KHZvaWQgKmFyZyk7CisK K2NvbnN0IFNobWVtQ2FsbGJhY2tzIEFwcGx5TGF1bmNoZXJTaG1lbUNhbGxiYWNrcyA9IHsK KwkucmVxdWVzdF9mbiA9IEFwcGx5TGF1bmNoZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4g PSBBcHBseUxhdW5jaGVyU2htZW1Jbml0LAorfTsKKwogLyogYW4gZW50cnkgaW4gdGhlIGxh c3Qtc3RhcnQtdGltZXMgc2hhcmVkIGhhc2ggdGFibGUgKi8KIHR5cGVkZWYgc3RydWN0IExh dW5jaGVyTGFzdFN0YXJ0VGltZXNFbnRyeQogewpAQCAtOTcyLDExICs5ODEsMTEgQEAgbG9n aWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQogfQogCiAvKgotICogQXBwbHlM YXVuY2hlclNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNh dGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CisgKiBBcHBseUxhdW5jaGVyU2htZW1SZXF1 ZXN0CisgKgkJUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxp Y2F0aW9uIGxhdW5jaGVyCiAgKi8KLVNpemUKLUFwcGx5TGF1bmNoZXJTaG1lbVNpemUodm9p ZCkKK3N0YXRpYyB2b2lkCitBcHBseUxhdW5jaGVyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK IHsKIAlTaXplCQlzaXplOwogCkBAIC05ODcsNyArOTk2LDEwIEBAIEFwcGx5TGF1bmNoZXJT aG1lbVNpemUodm9pZCkKIAlzaXplID0gTUFYQUxJR04oc2l6ZSk7CiAJc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMsCiAJ CQkJCQkJCSAgIHNpemVvZihMb2dpY2FsUmVwV29ya2VyKSkpOwotCXJldHVybiBzaXplOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJMb2dpY2FsIFJlcGxpY2F0aW9uIExhdW5j aGVyIERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9p ZCAqKikgJkxvZ2ljYWxSZXBDdHgsCisJCSk7CiB9CiAKIC8qCkBAIC0xMDI4LDM1ICsxMDQw LDIzIEBAIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKQogCiAvKgogICogQXBwbHlMYXVu Y2hlclNobWVtSW5pdAotICoJCUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHJlcGxpY2F0aW9u IGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKKyAqCQlJbml0aWFsaXplIHJlcGxpY2F0aW9uIGxh dW5jaGVyIHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotQXBwbHlMYXVuY2hlclNobWVtSW5p dCh2b2lkKQorc3RhdGljIHZvaWQKK0FwcGx5TGF1bmNoZXJTaG1lbUluaXQodm9pZCAqYXJn KQogewotCWJvb2wJCWZvdW5kOworCWludAkJCXNsb3Q7CiAKLQlMb2dpY2FsUmVwQ3R4ID0g KExvZ2ljYWxSZXBDdHhTdHJ1Y3QgKikKLQkJU2htZW1Jbml0U3RydWN0KCJMb2dpY2FsIFJl cGxpY2F0aW9uIExhdW5jaGVyIERhdGEiLAotCQkJCQkJQXBwbHlMYXVuY2hlclNobWVtU2l6 ZSgpLAotCQkJCQkJJmZvdW5kKTsKKwlMb2dpY2FsUmVwQ3R4LT5sYXN0X3N0YXJ0X2RzYSA9 IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlMb2dpY2FsUmVwQ3R4LT5sYXN0X3N0YXJ0X2RzaCA9 IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIAotCWlmICghZm91bmQpCisJLyogSW5pdGlhbGl6 ZSBtZW1vcnkgYW5kIHNwaW4gbG9ja3MgZm9yIGVhY2ggd29ya2VyIHNsb3QuICovCisJZm9y IChzbG90ID0gMDsgc2xvdCA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IHNs b3QrKykKIAl7Ci0JCWludAkJCXNsb3Q7Ci0KLQkJbWVtc2V0KExvZ2ljYWxSZXBDdHgsIDAs IEFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7Ci0KLQkJTG9naWNhbFJlcEN0eC0+bGFzdF9z dGFydF9kc2EgPSBEU0FfSEFORExFX0lOVkFMSUQ7Ci0JCUxvZ2ljYWxSZXBDdHgtPmxhc3Rf c3RhcnRfZHNoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOworCQlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tzbG90XTsKIAotCQkvKiBJbml0 aWFsaXplIG1lbW9yeSBhbmQgc3BpbiBsb2NrcyBmb3IgZWFjaCB3b3JrZXIgc2xvdC4gKi8K LQkJZm9yIChzbG90ID0gMDsgc2xvdCA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnM7IHNsb3QrKykKLQkJewotCQkJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gJkxvZ2lj YWxSZXBDdHgtPndvcmtlcnNbc2xvdF07Ci0KLQkJCW1lbXNldCh3b3JrZXIsIDAsIHNpemVv ZihMb2dpY2FsUmVwV29ya2VyKSk7Ci0JCQlTcGluTG9ja0luaXQoJndvcmtlci0+cmVsbXV0 ZXgpOwotCQl9CisJCW1lbXNldCh3b3JrZXIsIDAsIHNpemVvZihMb2dpY2FsUmVwV29ya2Vy KSk7CisJCVNwaW5Mb2NrSW5pdCgmd29ya2VyLT5yZWxtdXRleCk7CiAJfQogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGN0bC5jCmluZGV4IDRl MjkyOTUxMjAxLi43MmY2OGVjNThlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsY3RsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sb2dpY2FsY3RsLmMKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVt cy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKgpAQCAtOTgs NiArOTksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ3RsRGF0YQogCiBz dGF0aWMgTG9naWNhbERlY29kaW5nQ3RsRGF0YSAqTG9naWNhbERlY29kaW5nQ3RsID0gTlVM TDsKIAorc3RhdGljIHZvaWQgTG9naWNhbERlY29kaW5nQ3RsU2htZW1SZXF1ZXN0KHZvaWQg KmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVt Q2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gTG9naWNhbERlY29kaW5nQ3RsU2htZW1S ZXF1ZXN0LAorfTsKKwogLyoKICAqIEEgcHJvY2Vzcy1sb2NhbCBjYWNoZSBvZiBMb2dpY2Fs RGVjb2RpbmdDdGwtPnhsb2dfbG9naWNhbF9pbmZvLiBUaGlzIGlzCiAgKiBpbml0aWFsaXpl ZCBhdCBwcm9jZXNzIHN0YXJ0dXAsIGFuZCB1cGRhdGVkIHdoZW4gcHJvY2Vzc2luZyB0aGUg cHJvY2VzcwpAQCAtMTIwLDIzICsxMjcsMTMgQEAgc3RhdGljIHZvaWQgdXBkYXRlX3hsb2df bG9naWNhbF9pbmZvKHZvaWQpOwogc3RhdGljIHZvaWQgYWJvcnRfbG9naWNhbF9kZWNvZGlu Z19hY3RpdmF0aW9uKGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgd3JpdGVf bG9naWNhbF9kZWNvZGluZ19zdGF0dXNfdXBkYXRlX3JlY29yZChib29sIHN0YXR1cyk7CiAK LVNpemUKLUxvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6ZSh2b2lkKQotewotCXJldHVybiBz aXplb2YoTG9naWNhbERlY29kaW5nQ3RsRGF0YSk7Ci19Ci0KLXZvaWQKLUxvZ2ljYWxEZWNv ZGluZ0N0bFNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0xvZ2ljYWxEZWNvZGluZ0N0 bFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlMb2dpY2Fs RGVjb2RpbmdDdGwgPSBTaG1lbUluaXRTdHJ1Y3QoIkxvZ2ljYWwgZGVjb2RpbmcgY29udHJv bCIsCi0JCQkJCQkJCQkJIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6ZSgpLAotCQkJCQkJ CQkJCSAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQkJTWVtU2V0KExvZ2ljYWxEZWNvZGlu Z0N0bCwgMCwgTG9naWNhbERlY29kaW5nQ3RsU2htZW1TaXplKCkpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJMb2dpY2FsIGRlY29kaW5nIGNvbnRyb2wiLAorCQkJCQkgICAu c2l6ZSA9IHNpemVvZihMb2dpY2FsRGVjb2RpbmdDdGxEYXRhKSwKKwkJCQkJICAgLnB0ciA9 ICh2b2lkICoqKSAmTG9naWNhbERlY29kaW5nQ3RsLAorCQkpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggNjYxZDY4YWQ2NTMu LjM3MmQ3N2M0NzVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CkBAIC0xNzYsNiArMTc3LDE2IEBAIFJlcGxPcmlnaW5YYWN0U3RhdGUgcmVwbG9yaWdpbl94 YWN0X3N0YXRlID0gewogICovCiBzdGF0aWMgUmVwbGljYXRpb25TdGF0ZSAqcmVwbGljYXRp b25fc3RhdGVzOwogCitzdGF0aWMgdm9pZCBSZXBsaWNhdGlvbk9yaWdpblNobWVtUmVxdWVz dCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUmVwbGljYXRpb25PcmlnaW5TaG1lbUluaXQo dm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1BdHRhY2go dm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUmVwbGljYXRpb25PcmlnaW5T aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFJlcGxpY2F0aW9uT3JpZ2luU2ht ZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gUmVwbGljYXRpb25PcmlnaW5TaG1lbUluaXQsCisJ LmF0dGFjaF9mbiA9IFJlcGxpY2F0aW9uT3JpZ2luU2htZW1BdHRhY2gsCit9OworCiAvKgog ICogQWN0dWFsIHNoYXJlZCBtZW1vcnkgYmxvY2sgKHJlcGxpY2F0aW9uX3N0YXRlc1tdIGlz IG5vdyBwYXJ0IG9mIHRoaXMpLgogICovCkBAIC01MzksNTAgKzU1MCw0OCBAQCByZXBsb3Jp Z2luX2J5X29pZChSZXBsT3JpZ2luSWQgcm9pZGVudCwgYm9vbCBtaXNzaW5nX29rLCBjaGFy ICoqcm9uYW1lKQogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotU2l6ZQotUmVw bGljYXRpb25PcmlnaW5TaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitSZXBsaWNhdGlv bk9yaWdpblNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZSA9IDA7CiAK IAlpZiAobWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zID09IDApCi0JCXJldHVybiBz aXplOworCQlyZXR1cm47CiAKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgb2Zmc2V0b2YoUmVw bGljYXRpb25TdGF0ZUN0bCwgc3RhdGVzKSk7Ci0KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwK IAkJCQkJbXVsX3NpemUobWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zLCBzaXplb2Yo UmVwbGljYXRpb25TdGF0ZSkpKTsKLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1 Y3QoLm5hbWUgPSAiUmVwbGljYXRpb25PcmlnaW5TdGF0ZSIsCisJCQkJCSAgIC5zaXplID0g c2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmcmVwbGljYXRpb25fc3RhdGVzX2N0 bCwKKwkJKTsKIH0KIAotdm9pZAotUmVwbGljYXRpb25PcmlnaW5TaG1lbUluaXQodm9pZCkK K3N0YXRpYyB2b2lkCitSZXBsaWNhdGlvbk9yaWdpblNobWVtSW5pdCh2b2lkICphcmcpCiB7 Ci0JYm9vbAkJZm91bmQ7Ci0KIAlpZiAobWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5z ID09IDApCiAJCXJldHVybjsKIAotCXJlcGxpY2F0aW9uX3N0YXRlc19jdGwgPSAoUmVwbGlj YXRpb25TdGF0ZUN0bCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlJlcGxpY2F0aW9uT3JpZ2lu U3RhdGUiLAotCQkJCQkJUmVwbGljYXRpb25PcmlnaW5TaG1lbVNpemUoKSwKLQkJCQkJCSZm b3VuZCk7CiAJcmVwbGljYXRpb25fc3RhdGVzID0gcmVwbGljYXRpb25fc3RhdGVzX2N0bC0+ c3RhdGVzOwogCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCWludAkJCWk7CisJcmVwbGljYXRpb25f c3RhdGVzX2N0bC0+dHJhbmNoZV9pZCA9IExXVFJBTkNIRV9SRVBMSUNBVElPTl9PUklHSU5f U1RBVEU7CiAKLQkJTWVtU2V0KHJlcGxpY2F0aW9uX3N0YXRlc19jdGwsIDAsIFJlcGxpY2F0 aW9uT3JpZ2luU2htZW1TaXplKCkpOworCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X2FjdGl2 ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOyBpKyspCisJeworCQlMV0xvY2tJbml0aWFsaXplKCZy ZXBsaWNhdGlvbl9zdGF0ZXNbaV0ubG9jaywKKwkJCQkJCSByZXBsaWNhdGlvbl9zdGF0ZXNf Y3RsLT50cmFuY2hlX2lkKTsKKwkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZyZXBsaWNhdGlv bl9zdGF0ZXNbaV0ub3JpZ2luX2N2KTsKKwl9Cit9CiAKLQkJcmVwbGljYXRpb25fc3RhdGVz X2N0bC0+dHJhbmNoZV9pZCA9IExXVFJBTkNIRV9SRVBMSUNBVElPTl9PUklHSU5fU1RBVEU7 CitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25PcmlnaW5TaG1lbUF0dGFjaCh2b2lkICphcmcp Cit7CisJaWYgKG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9PSAwKQorCQlyZXR1 cm47CiAKLQkJZm9yIChpID0gMDsgaSA8IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lu czsgaSsrKQotCQl7Ci0JCQlMV0xvY2tJbml0aWFsaXplKCZyZXBsaWNhdGlvbl9zdGF0ZXNb aV0ubG9jaywKLQkJCQkJCQkgcmVwbGljYXRpb25fc3RhdGVzX2N0bC0+dHJhbmNoZV9pZCk7 Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnJlcGxpY2F0aW9uX3N0YXRlc1tpXS5vcmln aW5fY3YpOwotCQl9Ci0JfQorCXJlcGxpY2F0aW9uX3N0YXRlcyA9IHJlcGxpY2F0aW9uX3N0 YXRlc19jdGwtPnN0YXRlczsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggZTc1ZGI2 OWUzZjYuLmQ2MTVmZjhhODFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9zbG90c3luYy5jCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtMTE4LDYgKzExOSwxNCBAQCB0eXBlZGVmIHN0 cnVjdCBTbG90U3luY0N0eFN0cnVjdAogCiBzdGF0aWMgU2xvdFN5bmNDdHhTdHJ1Y3QgKlNs b3RTeW5jQ3R4ID0gTlVMTDsKIAorc3RhdGljIHZvaWQgU2xvdFN5bmNTaG1lbVJlcXVlc3Qo dm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFNsb3RTeW5jU2htZW1Jbml0KHZvaWQgKmFyZyk7 CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFNsb3RTeW5jU2htZW1DYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSBTbG90U3luY1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFNsb3RT eW5jU2htZW1Jbml0LAorfTsKKwogLyogR1VDIHZhcmlhYmxlICovCiBib29sCQlzeW5jX3Jl cGxpY2F0aW9uX3Nsb3RzID0gZmFsc2U7CiAKQEAgLTE4MjgsMzIgKzE4MzcsMjYgQEAgSXNT eW5jaW5nUmVwbGljYXRpb25TbG90cyh2b2lkKQogfQogCiAvKgotICogQW1vdW50IG9mIHNo YXJlZCBtZW1vcnkgcmVxdWlyZWQgZm9yIHNsb3Qgc3luY2hyb25pemF0aW9uLgorICogUmVn aXN0ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIHNsb3Qgc3luY2hyb25pemF0 aW9uLgogICovCi1TaXplCi1TbG90U3luY1NobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQK K1Nsb3RTeW5jU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlyZXR1cm4gc2l6ZW9mKFNs b3RTeW5jQ3R4U3RydWN0KTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiU2xvdCBT eW5jIERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihTbG90U3luY0N0eFN0cnVjdCks CisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlNsb3RTeW5jQ3R4LAorCQkpOwogfQogCiAv KgotICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgdGhlIHNoYXJlZCBtZW1vcnkgb2Ygc2xv dCBzeW5jaHJvbml6YXRpb24uCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIHNs b3Qgc3luY2hyb25pemF0aW9uLgogICovCi12b2lkCi1TbG90U3luY1NobWVtSW5pdCh2b2lk KQorc3RhdGljIHZvaWQKK1Nsb3RTeW5jU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlTaXpl CQlzaXplID0gU2xvdFN5bmNTaG1lbVNpemUoKTsKLQlib29sCQlmb3VuZDsKLQotCVNsb3RT eW5jQ3R4ID0gKFNsb3RTeW5jQ3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiU2xv dCBTeW5jIERhdGEiLCBzaXplLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCW1l bXNldChTbG90U3luY0N0eCwgMCwgc2l6ZSk7Ci0JCVNsb3RTeW5jQ3R4LT5waWQgPSBJbnZh bGlkUGlkOwotCQlTcGluTG9ja0luaXQoJlNsb3RTeW5jQ3R4LT5tdXRleCk7Ci0JfQorCW1l bXNldChTbG90U3luY0N0eCwgMCwgc2l6ZW9mKFNsb3RTeW5jQ3R4U3RydWN0KSk7CisJU2xv dFN5bmNDdHgtPnBpZCA9IEludmFsaWRQaWQ7CisJU3BpbkxvY2tJbml0KCZTbG90U3luY0N0 eC0+bXV0ZXgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGE5MDky ZmMyMzgyLi4yMWEyMTNhMGViZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNTUs NiArNTUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgpAQCAtMTQ1LDYgKzE0NiwxNCBAQCBTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9m KFNsb3RJbnZhbGlkYXRpb25DYXVzZXMpID09IChSU19JTlZBTF9NQVhfQ0FVU0VTICsgMSks CiAvKiBDb250cm9sIGFycmF5IGZvciByZXBsaWNhdGlvbiBzbG90IG1hbmFnZW1lbnQgKi8K IFJlcGxpY2F0aW9uU2xvdEN0bERhdGEgKlJlcGxpY2F0aW9uU2xvdEN0bCA9IE5VTEw7CiAK K3N0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsK K3N0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQodm9pZCAqYXJnKTsKKwor Y29uc3QgU2htZW1DYWxsYmFja3MgUmVwbGljYXRpb25TbG90c1NobWVtQ2FsbGJhY2tzID0g eworCS5yZXF1ZXN0X2ZuID0gUmVwbGljYXRpb25TbG90c1NobWVtUmVxdWVzdCwKKwkuaW5p dF9mbiA9IFJlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQsCit9OworCiAvKiBNeSBiYWNrZW5k J3MgcmVwbGljYXRpb24gc2xvdCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheSAqLwogUmVw bGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiAKQEAgLTE4Myw1NiAr MTkyLDQxIEBAIHN0YXRpYyB2b2lkIENyZWF0ZVNsb3RPbkRpc2soUmVwbGljYXRpb25TbG90 ICpzbG90KTsKIHN0YXRpYyB2b2lkIFNhdmVTbG90VG9QYXRoKFJlcGxpY2F0aW9uU2xvdCAq c2xvdCwgY29uc3QgY2hhciAqZGlyLCBpbnQgZWxldmVsKTsKIAogLyoKLSAqIFJlcG9ydCBz aGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBSZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0 LgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0 aW9uIHNsb3RzLgogICovCi1TaXplCi1SZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKHZvaWQp CitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25TbG90c1NobWVtUmVxdWVzdCh2b2lkICphcmcp CiB7Ci0JU2l6ZQkJc2l6ZSA9IDA7CisJU2l6ZQkJc2l6ZTsKIAogCWlmIChtYXhfcmVwbGlj YXRpb25fc2xvdHMgPT0gMCkKLQkJcmV0dXJuIHNpemU7CisJCXJldHVybjsKIAogCXNpemUg PSBvZmZzZXRvZihSZXBsaWNhdGlvblNsb3RDdGxEYXRhLCByZXBsaWNhdGlvbl9zbG90cyk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsCiAJCQkJCW11bF9zaXplKG1heF9yZXBsaWNhdGlv bl9zbG90cywgc2l6ZW9mKFJlcGxpY2F0aW9uU2xvdCkpKTsKLQotCXJldHVybiBzaXplOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJSZXBsaWNhdGlvblNsb3QgQ3RsIiwKKwkJ CQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZSZXBsaWNh dGlvblNsb3RDdGwsCisJCSk7CiB9CiAKIC8qCi0gKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6 ZSBzaGFyZWQgbWVtb3J5IGZvciByZXBsaWNhdGlvbiBzbG90cy4KKyAqIEluaXRpYWxpemUg c2hhcmVkIG1lbW9yeSBmb3IgcmVwbGljYXRpb24gc2xvdHMuCiAgKi8KLXZvaWQKLVJlcGxp Y2F0aW9uU2xvdHNTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitSZXBsaWNhdGlvblNs b3RzU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCWlmIChtYXhf cmVwbGljYXRpb25fc2xvdHMgPT0gMCkKLQkJcmV0dXJuOwotCi0JUmVwbGljYXRpb25TbG90 Q3RsID0gKFJlcGxpY2F0aW9uU2xvdEN0bERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJS ZXBsaWNhdGlvblNsb3QgQ3RsIiwgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSgpLAotCQkJ CQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhf cmVwbGljYXRpb25fc2xvdHM7IGkrKykKIAl7Ci0JCWludAkJCWk7CisJCVJlcGxpY2F0aW9u U2xvdCAqc2xvdCA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ld OwogCi0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZSAqLwotCQlNZW1T ZXQoUmVwbGljYXRpb25TbG90Q3RsLCAwLCBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKCkp OwotCi0JCWZvciAoaSA9IDA7IGkgPCBtYXhfcmVwbGljYXRpb25fc2xvdHM7IGkrKykKLQkJ ewotCQkJUmVwbGljYXRpb25TbG90ICpzbG90ID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+cmVw bGljYXRpb25fc2xvdHNbaV07Ci0KLQkJCS8qIGV2ZXJ5dGhpbmcgZWxzZSBpcyB6ZXJvZWQg YnkgdGhlIG1lbXNldCBhYm92ZSAqLwotCQkJc2xvdC0+YWN0aXZlX3Byb2MgPSBJTlZBTElE X1BST0NfTlVNQkVSOwotCQkJU3BpbkxvY2tJbml0KCZzbG90LT5tdXRleCk7Ci0JCQlMV0xv Y2tJbml0aWFsaXplKCZzbG90LT5pb19pbl9wcm9ncmVzc19sb2NrLAotCQkJCQkJCSBMV1RS QU5DSEVfUkVQTElDQVRJT05fU0xPVF9JTyk7Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQo JnNsb3QtPmFjdGl2ZV9jdik7Ci0JCX0KKwkJLyogZXZlcnl0aGluZyBlbHNlIGlzIHplcm9l ZCBieSB0aGUgbWVtc2V0IGFib3ZlICovCisJCXNsb3QtPmFjdGl2ZV9wcm9jID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKKwkJU3BpbkxvY2tJbml0KCZzbG90LT5tdXRleCk7CisJCUxXTG9j a0luaXRpYWxpemUoJnNsb3QtPmlvX2luX3Byb2dyZXNzX2xvY2ssCisJCQkJCQkgTFdUUkFO Q0hFX1JFUExJQ0FUSU9OX1NMT1RfSU8pOworCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNs b3QtPmFjdGl2ZV9jdik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlcmZ1bmNzLmMKaW5kZXggNDViOWQ0ZjA5ZjIuLjRlMDNlNzIxODcyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCkBAIC0yOSw0 NyArMjksNDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUg InN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgog I2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogV2FsUmN2RGF0YSAqV2FsUmN2ID0g TlVMTDsKIAorc3RhdGljIHZvaWQgV2FsUmN2U2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7Citz dGF0aWMgdm9pZCBXYWxSY3ZTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1D YWxsYmFja3MgV2FsUmN2U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBXYWxS Y3ZTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBXYWxSY3ZTaG1lbUluaXQsCit9OworCiAv KgogICogSG93IGxvbmcgdG8gd2FpdCBmb3Igd2FscmVjZWl2ZXIgdG8gc3RhcnQgdXAgYWZ0 ZXIgcmVxdWVzdGluZwogICogcG9zdG1hc3RlciB0byBsYXVuY2ggaXQuIEluIHNlY29uZHMu CiAgKi8KICNkZWZpbmUgV0FMUkNWX1NUQVJUVVBfVElNRU9VVCAxMAogCi0vKiBSZXBvcnQg c2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgV2FsUmN2U2htZW1Jbml0ICovCi1TaXpl Ci1XYWxSY3ZTaG1lbVNpemUodm9pZCkKKy8qIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3Bh Y2UgbmVlZGVkIGJ5IHdhbHJlY2VpdmVyICovCitzdGF0aWMgdm9pZAorV2FsUmN2U2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQotCXNpemUgPSBhZGRf c2l6ZShzaXplLCBzaXplb2YoV2FsUmN2RGF0YSkpOwotCi0JcmV0dXJuIHNpemU7CisJU2ht ZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIldhbCBSZWNlaXZlciBDdGwiLAorCQkJCQkgICAu c2l6ZSA9IHNpemVvZihXYWxSY3ZEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAm V2FsUmN2LAorCQkpOwogfQogCi0vKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB3YWxyZWNl aXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KLXZvaWQKLVdhbFJjdlNobWVtSW5pdCh2 b2lkKQorLyogSW5pdGlhbGl6ZSB3YWxyZWNlaXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkg Ki8KK3N0YXRpYyB2b2lkCitXYWxSY3ZTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJ CWZvdW5kOwotCi0JV2FsUmN2ID0gKFdhbFJjdkRhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJXYWwgUmVjZWl2ZXIgQ3RsIiwgV2FsUmN2U2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlp ZiAoIWZvdW5kKQotCXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXpl ICovCi0JCU1lbVNldChXYWxSY3YsIDAsIFdhbFJjdlNobWVtU2l6ZSgpKTsKLQkJV2FsUmN2 LT53YWxSY3ZTdGF0ZSA9IFdBTFJDVl9TVE9QUEVEOwotCQlDb25kaXRpb25WYXJpYWJsZUlu aXQoJldhbFJjdi0+d2FsUmN2U3RvcHBlZENWKTsKLQkJU3BpbkxvY2tJbml0KCZXYWxSY3Yt Pm11dGV4KTsKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZXYWxSY3YtPndyaXR0ZW5VcHRvLCAw KTsKLQkJV2FsUmN2LT5wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCX0KKwlNZW1T ZXQoV2FsUmN2LCAwLCBzaXplb2YoV2FsUmN2RGF0YSkpOworCVdhbFJjdi0+d2FsUmN2U3Rh dGUgPSBXQUxSQ1ZfU1RPUFBFRDsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFJjdi0+ d2FsUmN2U3RvcHBlZENWKTsKKwlTcGluTG9ja0luaXQoJldhbFJjdi0+bXV0ZXgpOworCXBn X2F0b21pY19pbml0X3U2NCgmV2FsUmN2LT53cml0dGVuVXB0bywgMCk7CisJV2FsUmN2LT5w cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogfQogCiAvKiBJcyB3YWxyZWNlaXZlciBy dW5uaW5nIChvciBzdGFydGluZyB1cCk/ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCmluZGV4IDJiYjNmMzRkYzZkLi5lYzM5OTQyYmZjMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIK ICNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCkBAIC0xMTcsNiArMTE4LDE0IEBACiAvKiBBcnJheSBv ZiBXYWxTbmRzIGluIHNoYXJlZCBtZW1vcnkgKi8KIFdhbFNuZEN0bERhdGEgKldhbFNuZEN0 bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFdhbFNuZFNobWVtUmVxdWVzdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgV2FsU25kU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNo bWVtQ2FsbGJhY2tzIFdhbFNuZFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0g V2FsU25kU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gV2FsU25kU2htZW1Jbml0LAorfTsK KwogLyogTXkgc2xvdCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheSAqLwogV2FsU25kCSAg ICpNeVdhbFNuZCA9IE5VTEw7CiAKQEAgLTM3NjUsNDcgKzM3NzQsMzcgQEAgV2FsU25kU2ln bmFscyh2b2lkKQogCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwogfQogCi0vKiBSZXBv cnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgV2FsU25kU2htZW1Jbml0ICovCi1T aXplCi1XYWxTbmRTaG1lbVNpemUodm9pZCkKKy8qIFJlZ2lzdGVyIHNoYXJlZC1tZW1vcnkg c3BhY2UgbmVlZGVkIGJ5IHdhbHNlbmRlciAqLworc3RhdGljIHZvaWQKK1dhbFNuZFNobWVt UmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9IDA7CisJU2l6ZQkJc2l6ZTsK IAogCXNpemUgPSBvZmZzZXRvZihXYWxTbmRDdGxEYXRhLCB3YWxzbmRzKTsKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobWF4X3dhbF9zZW5kZXJzLCBzaXplb2YoV2FsU25k KSkpOwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIldh bCBTZW5kZXIgQ3RsIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0g KHZvaWQgKiopICZXYWxTbmRDdGwsCisJCSk7CiB9CiAKLS8qIEFsbG9jYXRlIGFuZCBpbml0 aWFsaXplIHdhbHNlbmRlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KLXZvaWQKLVdhbFNu ZFNobWVtSW5pdCh2b2lkKQorLyogSW5pdGlhbGl6ZSB3YWxzZW5kZXItcmVsYXRlZCBzaGFy ZWQgbWVtb3J5ICovCitzdGF0aWMgdm9pZAorV2FsU25kU2htZW1Jbml0KHZvaWQgKmFyZykK IHsKLQlib29sCQlmb3VuZDsKLQlpbnQJCQlpOworCWZvciAoaW50IGkgPSAwOyBpIDwgTlVN X1NZTkNfUkVQX1dBSVRfTU9ERTsgaSsrKQorCQlkbGlzdF9pbml0KCYoV2FsU25kQ3RsLT5T eW5jUmVwUXVldWVbaV0pKTsKIAotCVdhbFNuZEN0bCA9IChXYWxTbmRDdGxEYXRhICopCi0J CVNobWVtSW5pdFN0cnVjdCgiV2FsIFNlbmRlciBDdGwiLCBXYWxTbmRTaG1lbVNpemUoKSwg JmZvdW5kKTsKLQotCWlmICghZm91bmQpCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfd2Fs X3NlbmRlcnM7IGkrKykKIAl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlh bGl6ZSAqLwotCQlNZW1TZXQoV2FsU25kQ3RsLCAwLCBXYWxTbmRTaG1lbVNpemUoKSk7Ci0K LQkJZm9yIChpID0gMDsgaSA8IE5VTV9TWU5DX1JFUF9XQUlUX01PREU7IGkrKykKLQkJCWRs aXN0X2luaXQoJihXYWxTbmRDdGwtPlN5bmNSZXBRdWV1ZVtpXSkpOwotCi0JCWZvciAoaSA9 IDA7IGkgPCBtYXhfd2FsX3NlbmRlcnM7IGkrKykKLQkJewotCQkJV2FsU25kCSAgICp3YWxz bmQgPSAmV2FsU25kQ3RsLT53YWxzbmRzW2ldOwotCi0JCQlTcGluTG9ja0luaXQoJndhbHNu ZC0+bXV0ZXgpOwotCQl9CisJCVdhbFNuZAkgICAqd2Fsc25kID0gJldhbFNuZEN0bC0+d2Fs c25kc1tpXTsKIAotCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX2Zs dXNoX2N2KTsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9yZXBs YXlfY3YpOwotCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX2NvbmZp cm1fcmN2X2N2KTsKKwkJU3BpbkxvY2tJbml0KCZ3YWxzbmQtPm11dGV4KTsKIAl9CisKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX2ZsdXNoX2N2KTsKKwlDb25k aXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX3JlcGxheV9jdik7CisJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9jdik7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggZjY0YzFkNTlmYTMuLmJmNmI4MWU2 MjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xNCw0MSArMTQsMTYgQEAKICAq LwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKLSNpbmNsdWRlICJhY2Nlc3MvY2xvZy5oIgot I2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKLSNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4 YWN0LmgiCi0jaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgotI2luY2x1ZGUgImFjY2Vzcy9z dWJ0cmFucy5oIgotI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgotI2luY2x1ZGUgImFj Y2Vzcy90d29waGFzZS5oIgotI2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIgot I2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxv Z3dhaXQuaCIKLSNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgi Ci0jaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgotI2luY2x1ZGUgInBvc3RtYXN0 ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci93YWxzdW1t YXJpemVyLmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCi0j aW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24v c2xvdC5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCi0jaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxz ZW5kZXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgotI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgotI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogLyog R1VDcyAqLwogaW50CQkJc2hhcmVkX21lbW9yeV90eXBlID0gREVGQVVMVF9TSEFSRURfTUVN T1JZX1RZUEU7CkBAIC01Nyw4ICszMiw2IEBAIHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHNo bWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7CiAKIHN0YXRpYyBTaXplIHRvdGFsX2FkZGluX3Jl cXVlc3QgPSAwOwogCi1zdGF0aWMgdm9pZCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2 b2lkKTsKLQogLyoKICAqIFJlcXVlc3RBZGRpblNobWVtU3BhY2UKICAqCQlSZXF1ZXN0IHRo YXQgZXh0cmEgc2htZW0gc3BhY2UgYmUgYWxsb2NhdGVkIGZvciB1c2UgYnkKQEAgLTk3LDMz ICs3MCw2IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSAxMDAwMDA7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtR2V0UmVxdWVzdGVkU2l6ZSgpKTsKIAotCS8q IGxlZ2FjeSBzdWJzeXN0ZW1zICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvY2tNYW5h Z2VyU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9nUHJlZmV0Y2hT aG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMT0dTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSgpKTsKLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgVHdvUGhhc2VTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIEJhY2tncm91bmRXb3JrZXJTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIEJhY2tlbmRTdGF0dXNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIENoZWNrcG9pbnRlclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUo c2l6ZSwgQXV0b1ZhY3V1bVNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg UmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg UmVwbGljYXRpb25PcmlnaW5TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IFdhbFNuZFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FsUmN2U2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWxTdW1tYXJpemVyU2htZW1T aXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQZ0FyY2hTaG1lbVNpemUoKSk7Ci0J c2l6ZSA9IGFkZF9zaXplKHNpemUsIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7Ci0Jc2l6 ZSA9IGFkZF9zaXplKHNpemUsIEJUcmVlU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBTeW5jU2NhblNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg U3RhdHNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEN1 c3RvbVNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgSW5qZWN0aW9uUG9p bnRTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RTeW5jU2htZW1T aXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0TFNOU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIERhdGFDaGVja3N1bXNTaG1lbVNpemUoKSk7Ci0K IAkvKiBpbmNsdWRlIGFkZGl0aW9uYWwgcmVxdWVzdGVkIHNobWVtIGZyb20gcHJlbG9hZCBs aWJyYXJpZXMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgdG90YWxfYWRkaW5fcmVxdWVz dCk7CiAKQEAgLTE1Nyw3ICsxMDMsNiBAQCBBdHRhY2hTaGFyZWRNZW1vcnlTdHJ1Y3RzKHZv aWQpCiAKIAkvKiBFc3RhYmxpc2ggcG9pbnRlcnMgdG8gYWxsIHNoYXJlZCBtZW1vcnkgYXJl YXMgaW4gdGhpcyBiYWNrZW5kICovCiAJU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKTsKLQlDcmVh dGVPckF0dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyoKIAkgKiBOb3cgZ2l2ZSBsb2FkYWJs ZSBtb2R1bGVzIGEgY2hhbmNlIHRvIHNldCB1cCB0aGVpciBzaG1lbSBhbGxvY2F0aW9ucwpA QCAtMjA0LDkgKzE0OSw2IEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZXModm9p ZCkKIAkvKiBJbml0aWFsaXplIGFsbCBzaG1lbSBhcmVhcyAqLwogCVNobWVtSW5pdFJlcXVl c3RlZCgpOwogCi0JLyogSW5pdGlhbGl6ZSBsZWdhY3kgc3Vic3lzdGVtcyAqLwotCUNyZWF0 ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKCk7Ci0KIAkvKiBJbml0aWFsaXplIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSBmYWNpbGl0aWVzLiAqLwogCWRzbV9wb3N0bWFzdGVyX3N0YXJ0dXAoc2hp bSk7CiAKQEAgLTIzNyw3MCArMTc5LDYgQEAgUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFj a3Modm9pZCkKICN1bmRlZiBQR19TSE1FTV9TVUJTWVNURU0KIH0KIAotLyoKLSAqIEluaXRp YWxpemUgdmFyaW91cyBzdWJzeXN0ZW1zLCBzZXR0aW5nIHVwIHRoZWlyIGRhdGEgc3RydWN0 dXJlcyBpbgotICogc2hhcmVkIG1lbW9yeS4KLSAqCi0gKiBUaGlzIGlzIGNhbGxlZCBieSB0 aGUgcG9zdG1hc3RlciBvciBieSBhIHN0YW5kYWxvbmUgYmFja2VuZC4KLSAqIEl0IGlzIGFs c28gY2FsbGVkIGJ5IGEgYmFja2VuZCBmb3JrZWQgZnJvbSB0aGUgcG9zdG1hc3RlciBpbiB0 aGUKLSAqIEVYRUNfQkFDS0VORCBjYXNlLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2hh cmVkIG1lbW9yeSBzZWdtZW50Ci0gKiBhbHJlYWR5IGV4aXN0cyBhbmQgaGFzIGJlZW4gcGh5 c2ljYWxseSBhdHRhY2hlZCB0bywgYnV0IHdlIGhhdmUgdG8KLSAqIGluaXRpYWxpemUgcG9p bnRlcnMgaW4gbG9jYWwgbWVtb3J5IHRoYXQgcmVmZXJlbmNlIHRoZSBzaGFyZWQgc3RydWN0 dXJlcywKLSAqIGJlY2F1c2Ugd2UgZGlkbid0IGluaGVyaXQgdGhlIGNvcnJlY3QgcG9pbnRl ciB2YWx1ZXMgZnJvbSB0aGUgcG9zdG1hc3RlcgotICogYXMgd2UgZG8gaW4gdGhlIGZvcmso KSBzY2VuYXJpby4gIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIHRvIHJ1bgotICog dGhyb3VnaCB0aGUgc2FtZSBjb2RlIGFzIGJlZm9yZS4gIChOb3RlIHRoYXQgdGhlIGNhbGxl ZCByb3V0aW5lcyBtb3N0bHkKLSAqIGNoZWNrIElzVW5kZXJQb3N0bWFzdGVyLCByYXRoZXIg dGhhbiBFWEVDX0JBQ0tFTkQsIHRvIGRldGVjdCB0aGlzIGNhc2UuCi0gKiBUaGlzIGlzIGEg Yml0IGNvZGUtd2FzdGVmdWwgYW5kIGNvdWxkIGJlIGNsZWFuZWQgdXAuKQotICovCi1zdGF0 aWMgdm9pZAotQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9pZCkKLXsKLQkvKgotCSAq IFNldCB1cCB4bG9nLCBjbG9nLCBhbmQgYnVmZmVycwotCSAqLwotCVhMT0dTaG1lbUluaXQo KTsKLQlYTG9nUHJlZmV0Y2hTaG1lbUluaXQoKTsKLQlYTG9nUmVjb3ZlcnlTaG1lbUluaXQo KTsKLQotCS8qCi0JICogU2V0IHVwIGxvY2sgbWFuYWdlcgotCSAqLwotCUxvY2tNYW5hZ2Vy U2htZW1Jbml0KCk7Ci0KLQkvKgotCSAqIFNldCB1cCBwcm9jZXNzIHRhYmxlCi0JICovCi0J QmFja2VuZFN0YXR1c1NobWVtSW5pdCgpOwotCVR3b1BoYXNlU2htZW1Jbml0KCk7Ci0JQmFj a2dyb3VuZFdvcmtlclNobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgaW50ZXJwcm9j ZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zCi0JICovCi0JQ2hlY2twb2ludGVyU2htZW1Jbml0 KCk7Ci0JQXV0b1ZhY3V1bVNobWVtSW5pdCgpOwotCVJlcGxpY2F0aW9uU2xvdHNTaG1lbUlu aXQoKTsKLQlSZXBsaWNhdGlvbk9yaWdpblNobWVtSW5pdCgpOwotCVdhbFNuZFNobWVtSW5p dCgpOwotCVdhbFJjdlNobWVtSW5pdCgpOwotCVdhbFN1bW1hcml6ZXJTaG1lbUluaXQoKTsK LQlQZ0FyY2hTaG1lbUluaXQoKTsKLQlBcHBseUxhdW5jaGVyU2htZW1Jbml0KCk7Ci0JU2xv dFN5bmNTaG1lbUluaXQoKTsKLQlEYXRhQ2hlY2tzdW1zU2htZW1Jbml0KCk7Ci0KLQkvKgot CSAqIFNldCB1cCBvdGhlciBtb2R1bGVzIHRoYXQgbmVlZCBzb21lIHNoYXJlZCBtZW1vcnkg c3BhY2UKLQkgKi8KLQlCVHJlZVNobWVtSW5pdCgpOwotCVN5bmNTY2FuU2htZW1Jbml0KCk7 Ci0JU3RhdHNTaG1lbUluaXQoKTsKLQlXYWl0RXZlbnRDdXN0b21TaG1lbUluaXQoKTsKLQlJ bmplY3Rpb25Qb2ludFNobWVtSW5pdCgpOwotCVdhaXRMU05TaG1lbUluaXQoKTsKLQlMb2dp Y2FsRGVjb2RpbmdDdGxTaG1lbUluaXQoKTsKLX0KLQogLyoKICAqIEluaXRpYWxpemVTaG1l bUdVQ3MKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCA3OThjNDUzYWIzOC4u NjhkNWEwMzg5ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2Nr LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAtNDMsOCArNDMs MTAgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJzdG9y YWdlL3N0YW5kYnkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBAIC0zMTIsNiArMzE0LDE0IEBAIHR5cGVk ZWYgc3RydWN0CiAKIHN0YXRpYyB2b2xhdGlsZSBGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9j a0RhdGEgKkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrczsKIAorc3RhdGljIHZvaWQgTG9j a01hbmFnZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIExvY2tNYW5h Z2VyU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIExvY2tN YW5hZ2VyU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBMb2NrTWFuYWdlclNo bWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IExvY2tNYW5hZ2VyU2htZW1Jbml0LAorfTsKKwog CiAvKgogICogUG9pbnRlcnMgdG8gaGFzaCB0YWJsZXMgY29udGFpbmluZyBsb2NrIHN0YXRl CkBAIC00MDksNiArNDE5LDcgQEAgUFJPQ0xPQ0tfUFJJTlQoY29uc3QgY2hhciAqd2hlcmUs IGNvbnN0IFBST0NMT0NLICpwcm9jbG9ja1ApCiAKIAogc3RhdGljIHVpbnQzMiBwcm9jbG9j a19oYXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBrZXlzaXplKTsKKwogc3RhdGljIHZvaWQg UmVtb3ZlTG9jYWxMb2NrKExPQ0FMTE9DSyAqbG9jYWxsb2NrKTsKIHN0YXRpYyBQUk9DTE9D SyAqU2V0dXBMb2NrSW5UYWJsZShMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwgUEdQUk9D ICpwcm9jLAogCQkJCQkJCQkgIGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsIHVpbnQzMiBoYXNo Y29kZSwgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtNDMyLDIxICs0NDMsMTUgQEAgc3RhdGlj IHZvaWQgR2V0U2luZ2xlUHJvY0Jsb2NrZXJTdGF0dXNEYXRhKFBHUFJPQyAqYmxvY2tlZF9w cm9jLAogCiAKIC8qCi0gKiBJbml0aWFsaXplIHRoZSBsb2NrIG1hbmFnZXIncyBzaG1lbSBk YXRhIHN0cnVjdHVyZXMuCisgKiBSZWdpc3RlciB0aGUgbG9jayBtYW5hZ2VyJ3Mgc2htZW0g ZGF0YSBzdHJ1Y3R1cmVzLgogICoKLSAqIFRoaXMgaXMgY2FsbGVkIGZyb20gQ3JlYXRlU2hh cmVkTWVtb3J5QW5kU2VtYXBob3JlcygpLCB3aGljaCBzZWUgZm9yIG1vcmUKLSAqIGNvbW1l bnRzLiAgSW4gdGhlIG5vcm1hbCBwb3N0bWFzdGVyIGNhc2UsIHRoZSBzaGFyZWQgaGFzaCB0 YWJsZXMgYXJlCi0gKiBjcmVhdGVkIGhlcmUsIGFuZCBiYWNrZW5kcyBpbmhlcml0IHBvaW50 ZXJzIHRvIHRoZW0gdmlhIGZvcmsoKS4gIEluIHRoZQotICogRVhFQ19CQUNLRU5EIGNhc2Us IGVhY2ggYmFja2VuZCByZS1leGVjdXRlcyB0aGlzIGNvZGUgdG8gb2J0YWluIHBvaW50ZXJz IHRvCi0gKiB0aGUgYWxyZWFkeSBleGlzdGluZyBzaGFyZWQgaGFzaCB0YWJsZXMuICBJbiBl aXRoZXIgY2FzZSwgZWFjaCBiYWNrZW5kIG11c3QKLSAqIGFsc28gY2FsbCBJbml0TG9ja01h bmFnZXJBY2Nlc3MoKSB0byBjcmVhdGUgdGhlIGxvY2FsbG9jayBoYXNoIHRhYmxlLgorICog SW4gYWRkaXRpb24gdG8gdGhpcywgZWFjaCBiYWNrZW5kIG11c3QgYWxzbyBjYWxsIEluaXRM b2NrTWFuYWdlckFjY2VzcygpIHRvCisgKiBjcmVhdGUgdGhlIGxvY2FsbG9jayBoYXNoIHRh YmxlLgogICovCi12b2lkCi1Mb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK0xvY2tNYW5hZ2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlIQVNIQ1RMCQlp bmZvOwogCWludDY0CQltYXhfdGFibGVfc2l6ZTsKLQlib29sCQlmb3VuZDsKIAogCS8qCiAJ ICogQ29tcHV0ZSBzaXplcyBmb3IgbG9jayBoYXNodGFibGVzLiAgTm90ZSB0aGF0IHRoZXNl IGNhbGN1bGF0aW9ucyBtdXN0CkBAIC00NTUsNDUgKzQ2MCw0OCBAQCBMb2NrTWFuYWdlclNo bWVtSW5pdCh2b2lkKQogCW1heF90YWJsZV9zaXplID0gTkxPQ0tFTlRTKCk7CiAKIAkvKgot CSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVz IHBlci1sb2NrZWQtb2JqZWN0CisJICogSGFzaCB0YWJsZSBmb3IgTE9DSyBzdHJ1Y3RzLiAg VGhpcyBzdG9yZXMgcGVyLWxvY2tlZC1vYmplY3QKIAkgKiBpbmZvcm1hdGlvbi4KIAkgKi8K LQlpbmZvLmtleXNpemUgPSBzaXplb2YoTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBz aXplb2YoTE9DSyk7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElP TlM7Ci0KLQlMb2NrTWV0aG9kTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJMT0NLIGhhc2gi LAotCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICAmaW5mbywKLQkJ CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJICAgSEFTSF9Q QVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUg PSAiTE9DSyBoYXNoIiwKKwkJCQkJIC5uZWxlbXMgPSBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJ IC5wdHIgPSAmTG9ja01ldGhvZExvY2tIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXpl ID0gc2l6ZW9mKExPQ0tUQUcpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXpl b2YoTE9DSyksCisJCQkJCSAuaGFzaF9pbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tf UEFSVElUSU9OUywKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfUEFSVElUSU9OLAorCQkpOwogCiAJLyogQXNzdW1lIGFuIGF2ZXJhZ2Ugb2Yg MiBob2xkZXJzIHBlciBsb2NrICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsKIAotCS8qCi0J ICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJPQ0xPQ0sgc3RydWN0cy4gIFRoaXMgc3Rv cmVzCi0JICogcGVyLWxvY2stcGVyLWhvbGRlciBpbmZvcm1hdGlvbi4KLQkgKi8KLQlpbmZv LmtleXNpemUgPSBzaXplb2YoUFJPQ0xPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6 ZW9mKFBST0NMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcm9jbG9ja19oYXNoOwotCWluZm8ubnVt X3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOwotCi0JTG9ja01ldGhvZFByb2NM b2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIlBST0NMT0NLIGhhc2giLAotCQkJCQkJCQkJCSAg IG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfAotCQkJCQkJCQkJCSAgIEhBU0hfRklYRURfU0la RSB8IEhBU0hfUEFSVElUSU9OKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIlBST0NM T0NLIGhhc2giLAorCQkJCQkgLm5lbGVtcyA9IG1heF90YWJsZV9zaXplLAorCQkJCQkgLnB0 ciA9ICZMb2NrTWV0aG9kUHJvY0xvY2tIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXpl ID0gc2l6ZW9mKFBST0NMT0NLVEFHKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlzaXplID0g c2l6ZW9mKFBST0NMT0NLKSwKKwkJCQkJIC5oYXNoX2luZm8uaGFzaCA9IHByb2Nsb2NrX2hh c2gsCisJCQkJCSAuaGFzaF9pbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElU SU9OUywKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8 IEhBU0hfUEFSVElUSU9OLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0g IkZhc3QgUGF0aCBTdHJvbmcgUmVsYXRpb24gTG9jayBEYXRhIiwKKwkJCQkJICAgLnNpemUg PSBzaXplb2YoRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tEYXRhKSwKKwkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAodm9pZCAqKSAmRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzLAor CQkpOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBmYXN0LXBhdGggc3RydWN0dXJlcy4KKwkgKiBG SVhNRTogd2UgdXNlZCB0byBkbyB0aGlzIGluIHRoZSBzaXplIGNhbGN1bGF0aW9uOgorCSAq CisJICogLy8gU2luY2UgTkxPQ0tFTlRTIGlzIG9ubHkgYW4gZXN0aW1hdGUsIGFkZCAxMCUg c2FmZXR5IG1hcmdpbi4gc2l6ZSA9CisJICogYWRkX3NpemUoc2l6ZSwgc2l6ZSAvIDEwKTsK IAkgKi8KLQlGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9ja3MgPQotCQlTaG1lbUluaXRTdHJ1 Y3QoIkZhc3QgUGF0aCBTdHJvbmcgUmVsYXRpb24gTG9jayBEYXRhIiwKLQkJCQkJCXNpemVv ZihGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9ja0RhdGEpLCAmZm91bmQpOwotCWlmICghZm91 bmQpCi0JCVNwaW5Mb2NrSW5pdCgmRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzLT5tdXRl eCk7Cit9CisKK3N0YXRpYyB2b2lkCitMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkICphcmcp Cit7CisJU3BpbkxvY2tJbml0KCZGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9ja3MtPm11dGV4 KTsKIH0KIAogLyoKQEAgLTM3NTgsMjkgKzM3NjYsNiBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhG dWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogfQogCiAKLS8qCi0gKiBFc3RpbWF0ZSBzaGFyZWQt bWVtb3J5IHNwYWNlIHVzZWQgZm9yIGxvY2sgdGFibGVzCi0gKi8KLVNpemUKLUxvY2tNYW5h Z2VyU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JbG9uZwkJbWF4X3Rh YmxlX3NpemU7Ci0KLQkvKiBsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhfdGFibGVfc2l6ZSA9 IE5MT0NLRU5UUygpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3Np emUobWF4X3RhYmxlX3NpemUsIHNpemVvZihMT0NLKSkpOwotCi0JLyogcHJvY2xvY2sgaGFz aCB0YWJsZSAqLwotCW1heF90YWJsZV9zaXplICo9IDI7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIGhhc2hfZXN0aW1hdGVfc2l6ZShtYXhfdGFibGVfc2l6ZSwgc2l6ZW9mKFBST0NMT0NL KSkpOwotCi0JLyogZmFzdC1wYXRoIHN0cnVjdHVyZXMgKi8KLQlzaXplID0gYWRkX3NpemUo c2l6ZSwgc2l6ZW9mKEZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrRGF0YSkpOwotCi0JcmV0 dXJuIHNpemU7Ci19Ci0KIC8qCiAgKiBHZXRMb2NrU3RhdHVzRGF0YSAtIFJldHVybiBhIHN1 bW1hcnkgb2YgdGhlIGxvY2sgbWFuYWdlcidzIGludGVybmFsCiAgKiBzdGF0dXMsIGZvciB1 c2UgaW4gYSB1c2VyLWxldmVsIHJlcG9ydGluZyBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IGNkMDg3MTI5NDY5Li40 Y2I5YzgwYTJjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFj a2VuZF9zdGF0dXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5k X3N0YXR1cy5jCkBAIC0xOCw3ICsxOCw5IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIJCS8qIGZv ciBNeVByb2MgKi8KKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9hc2NpaS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgkJCS8qIGZv ciBhcHBsaWNhdGlvbl9uYW1lICovCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAg LTczLDEzMyArNzUsOTcgQEAgc3RhdGljIHZvaWQgcGdzdGF0X2Jlc2h1dGRvd25faG9vayhp bnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9yZWFkX2N1cnJlbnRf c3RhdHVzKHZvaWQpOwogc3RhdGljIHZvaWQgcGdzdGF0X3NldHVwX2JhY2tlbmRfc3RhdHVz X2NvbnRleHQodm9pZCk7CiAKK3N0YXRpYyB2b2lkIEJhY2tlbmRTdGF0dXNTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJhY2tlbmRTdGF0dXNTaG1lbUluaXQodm9p ZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJhY2tlbmRTdGF0dXNTaG1lbUF0dGFjaCh2b2lkICph cmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBCYWNrZW5kU3RhdHVzU2htZW1DYWxsYmFj a3MgPSB7CisJLnJlcXVlc3RfZm4gPSBCYWNrZW5kU3RhdHVzU2htZW1SZXF1ZXN0LAorCS5p bml0X2ZuID0gQmFja2VuZFN0YXR1c1NobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gQmFja2Vu ZFN0YXR1c1NobWVtQXR0YWNoLAorfTsKIAogLyoKLSAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5 IHNwYWNlIG5lZWRlZCBieSBCYWNrZW5kU3RhdHVzU2htZW1Jbml0LgorICogUmVnaXN0ZXIg c2hhcmVkIG1lbW9yeSBuZWVkcyBmb3IgYmFja2VuZCBzdGF0dXMgcmVwb3J0aW5nLgogICov Ci1TaXplCi1CYWNrZW5kU3RhdHVzU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQmFj a2VuZFN0YXR1c1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZTsKLQot CS8qIEJhY2tlbmRTdGF0dXNBcnJheTogKi8KLQlzaXplID0gbXVsX3NpemUoc2l6ZW9mKFBn QmFja2VuZFN0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCS8qIEJhY2tlbmRBcHBu YW1lQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAotCQkJCQltdWxfc2l6ZShO QU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cykpOwotCS8qIEJhY2tlbmRDbGllbnRI b3N0bmFtZUJ1ZmZlcjogKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJbXVsX3Np emUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpKTsKLQkvKiBCYWNrZW5kQWN0 aXZpdHlCdWZmZXI6ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsCi0JCQkJCW11bF9zaXpl KHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplLCBOdW1CYWNrZW5kU3RhdFNsb3Rz KSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgU3RhdHVzIEFycmF5 IiwKKwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU3RhdHVzKSwg TnVtQmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tl bmRTdGF0dXNBcnJheSwKKwkJKTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJC YWNrZW5kIEFwcGxpY2F0aW9uIE5hbWUgQnVmZmVyIiwKKwkJCQkJICAgLnNpemUgPSBtdWxf c2l6ZShOQU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJkJhY2tlbmRBcHBuYW1lQnVmZmVyLAorCQkpOworCisJU2htZW1SZXF1 ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgQ2xpZW50IEhvc3QgTmFtZSBCdWZmZXIiLAor CQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNs b3RzKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQmFja2VuZENsaWVudEhvc3RuYW1l QnVmZmVyLAorCQkpOworCisJQmFja2VuZEFjdGl2aXR5QnVmZmVyU2l6ZSA9IG11bF9zaXpl KHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplLAorCQkJCQkJCQkJCSBOdW1CYWNr ZW5kU3RhdFNsb3RzKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFja2VuZCBB Y3Rpdml0eSBCdWZmZXIiLAorCQkJCQkgICAuc2l6ZSA9IEJhY2tlbmRBY3Rpdml0eUJ1ZmZl clNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tlbmRBY3Rpdml0eUJ1ZmZl cgorCQkpOworCiAjaWZkZWYgVVNFX1NTTAotCS8qIEJhY2tlbmRTc2xTdGF0dXNCdWZmZXI6 ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsCi0JCQkJCW11bF9zaXplKHNpemVvZihQZ0Jh Y2tlbmRTU0xTdGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSk7CisJU2htZW1SZXF1ZXN0 U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgU1NMIFN0YXR1cyBCdWZmZXIiLAorCQkJCQkgICAu c2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRTU0xTdGF0dXMpLCBOdW1CYWNrZW5k U3RhdFNsb3RzKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQmFja2VuZFNzbFN0YXR1 c0J1ZmZlciwKKwkJKTsKICNlbmRpZgorCiAjaWZkZWYgRU5BQkxFX0dTUwotCS8qIEJhY2tl bmRHc3NTdGF0dXNCdWZmZXI6ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsCi0JCQkJCW11 bF9zaXplKHNpemVvZihQZ0JhY2tlbmRHU1NTdGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3Rz KSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgR1NTIFN0YXR1cyBC dWZmZXIiLAorCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRHU1NT dGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmQmFja2VuZEdzc1N0YXR1c0J1ZmZlciwKKwkJKTsKICNlbmRpZgotCXJldHVybiBzaXpl OwogfQogCiAvKgogICogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIHN0YXR1cyBhcnJheSBhbmQg c2V2ZXJhbCBzdHJpbmcgYnVmZmVycwogICogZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cC4K ICAqLwotdm9pZAotQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQK K0JhY2tlbmRTdGF0dXNTaG1lbUluaXQodm9pZCAqYXJnKQogewotCVNpemUJCXNpemU7Ci0J Ym9vbAkJZm91bmQ7CiAJaW50CQkJaTsKIAljaGFyCSAgICpidWZmZXI7CiAKLQkvKiBDcmVh dGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgYXJyYXkgKi8KLQlzaXplID0gbXVsX3NpemUo c2l6ZW9mKFBnQmFja2VuZFN0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCUJhY2tl bmRTdGF0dXNBcnJheSA9IChQZ0JhY2tlbmRTdGF0dXMgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJCYWNrZW5kIFN0YXR1cyBBcnJheSIsIHNpemUsICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5k KQorCS8qIEluaXRpYWxpemUgc3RfYXBwbmFtZSBwb2ludGVycy4gKi8KKwlidWZmZXIgPSBC YWNrZW5kQXBwbmFtZUJ1ZmZlcjsKKwlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0YXRT bG90czsgaSsrKQogCXsKLQkJLyoKLQkJICogV2UncmUgdGhlIGZpcnN0IC0gaW5pdGlhbGl6 ZS4KLQkJICovCi0JCU1lbVNldChCYWNrZW5kU3RhdHVzQXJyYXksIDAsIHNpemUpOwotCX0K LQotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBhcHBuYW1lIGJ1ZmZlciAq LwotCXNpemUgPSBtdWxfc2l6ZShOQU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cyk7 Ci0JQmFja2VuZEFwcG5hbWVCdWZmZXIgPSAoY2hhciAqKQotCQlTaG1lbUluaXRTdHJ1Y3Qo IkJhY2tlbmQgQXBwbGljYXRpb24gTmFtZSBCdWZmZXIiLCBzaXplLCAmZm91bmQpOwotCi0J aWYgKCFmb3VuZCkKLQl7Ci0JCU1lbVNldChCYWNrZW5kQXBwbmFtZUJ1ZmZlciwgMCwgc2l6 ZSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBzdF9hcHBuYW1lIHBvaW50ZXJzLiAqLwotCQlidWZm ZXIgPSBCYWNrZW5kQXBwbmFtZUJ1ZmZlcjsKLQkJZm9yIChpID0gMDsgaSA8IE51bUJhY2tl bmRTdGF0U2xvdHM7IGkrKykKLQkJewotCQkJQmFja2VuZFN0YXR1c0FycmF5W2ldLnN0X2Fw cG5hbWUgPSBidWZmZXI7Ci0JCQlidWZmZXIgKz0gTkFNRURBVEFMRU47Ci0JCX0KKwkJQmFj a2VuZFN0YXR1c0FycmF5W2ldLnN0X2FwcG5hbWUgPSBidWZmZXI7CisJCWJ1ZmZlciArPSBO QU1FREFUQUxFTjsKIAl9CiAKLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQg Y2xpZW50IGhvc3RuYW1lIGJ1ZmZlciAqLwotCXNpemUgPSBtdWxfc2l6ZShOQU1FREFUQUxF TiwgTnVtQmFja2VuZFN0YXRTbG90cyk7Ci0JQmFja2VuZENsaWVudEhvc3RuYW1lQnVmZmVy ID0gKGNoYXIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJCYWNrZW5kIENsaWVudCBIb3N0IE5h bWUgQnVmZmVyIiwgc2l6ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCisJLyogSW5pdGlh bGl6ZSBzdF9jbGllbnRob3N0bmFtZSBwb2ludGVycy4gKi8KKwlidWZmZXIgPSBCYWNrZW5k Q2xpZW50SG9zdG5hbWVCdWZmZXI7CisJZm9yIChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0 U2xvdHM7IGkrKykKIAl7Ci0JCU1lbVNldChCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXIs IDAsIHNpemUpOwotCi0JCS8qIEluaXRpYWxpemUgc3RfY2xpZW50aG9zdG5hbWUgcG9pbnRl cnMuICovCi0JCWJ1ZmZlciA9IEJhY2tlbmRDbGllbnRIb3N0bmFtZUJ1ZmZlcjsKLQkJZm9y IChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkrKykKLQkJewotCQkJQmFja2Vu ZFN0YXR1c0FycmF5W2ldLnN0X2NsaWVudGhvc3RuYW1lID0gYnVmZmVyOwotCQkJYnVmZmVy ICs9IE5BTUVEQVRBTEVOOwotCQl9CisJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5zdF9jbGll bnRob3N0bmFtZSA9IGJ1ZmZlcjsKKwkJYnVmZmVyICs9IE5BTUVEQVRBTEVOOwogCX0KIAot CS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBhY3Rpdml0eSBidWZmZXIgKi8K LQlCYWNrZW5kQWN0aXZpdHlCdWZmZXJTaXplID0gbXVsX3NpemUocGdzdGF0X3RyYWNrX2Fj dGl2aXR5X3F1ZXJ5X3NpemUsCi0JCQkJCQkJCQkJIE51bUJhY2tlbmRTdGF0U2xvdHMpOwot CUJhY2tlbmRBY3Rpdml0eUJ1ZmZlciA9IChjaGFyICopCi0JCVNobWVtSW5pdFN0cnVjdCgi QmFja2VuZCBBY3Rpdml0eSBCdWZmZXIiLAotCQkJCQkJQmFja2VuZEFjdGl2aXR5QnVmZmVy U2l6ZSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQorCS8qIEluaXRpYWxpemUg c3RfYWN0aXZpdHkgcG9pbnRlcnMuICovCisJYnVmZmVyID0gQmFja2VuZEFjdGl2aXR5QnVm ZmVyOworCWZvciAoaSA9IDA7IGkgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCiAJewot CQlNZW1TZXQoQmFja2VuZEFjdGl2aXR5QnVmZmVyLCAwLCBCYWNrZW5kQWN0aXZpdHlCdWZm ZXJTaXplKTsKLQotCQkvKiBJbml0aWFsaXplIHN0X2FjdGl2aXR5IHBvaW50ZXJzLiAqLwot CQlidWZmZXIgPSBCYWNrZW5kQWN0aXZpdHlCdWZmZXI7Ci0JCWZvciAoaSA9IDA7IGkgPCBO dW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCi0JCXsKLQkJCUJhY2tlbmRTdGF0dXNBcnJheVtp XS5zdF9hY3Rpdml0eV9yYXcgPSBidWZmZXI7Ci0JCQlidWZmZXIgKz0gcGdzdGF0X3RyYWNr X2FjdGl2aXR5X3F1ZXJ5X3NpemU7Ci0JCX0KKwkJQmFja2VuZFN0YXR1c0FycmF5W2ldLnN0 X2FjdGl2aXR5X3JhdyA9IGJ1ZmZlcjsKKwkJYnVmZmVyICs9IHBnc3RhdF90cmFja19hY3Rp dml0eV9xdWVyeV9zaXplOwogCX0KIAogI2lmZGVmIFVTRV9TU0wKLQkvKiBDcmVhdGUgb3Ig YXR0YWNoIHRvIHRoZSBzaGFyZWQgU1NMIHN0YXR1cyBidWZmZXIgKi8KLQlzaXplID0gbXVs X3NpemUoc2l6ZW9mKFBnQmFja2VuZFNTTFN0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMp OwotCUJhY2tlbmRTc2xTdGF0dXNCdWZmZXIgPSAoUGdCYWNrZW5kU1NMU3RhdHVzICopCi0J CVNobWVtSW5pdFN0cnVjdCgiQmFja2VuZCBTU0wgU3RhdHVzIEJ1ZmZlciIsIHNpemUsICZm b3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQogCXsKIAkJUGdCYWNrZW5kU1NMU3RhdHVzICpwdHI7 CiAKLQkJTWVtU2V0KEJhY2tlbmRTc2xTdGF0dXNCdWZmZXIsIDAsIHNpemUpOwotCiAJCS8q IEluaXRpYWxpemUgc3Rfc3Nsc3RhdHVzIHBvaW50ZXJzLiAqLwogCQlwdHIgPSBCYWNrZW5k U3NsU3RhdHVzQnVmZmVyOwogCQlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90 czsgaSsrKQpAQCAtMjExLDE3ICsxNzcsOSBAQCBCYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZv aWQpCiAjZW5kaWYKIAogI2lmZGVmIEVOQUJMRV9HU1MKLQkvKiBDcmVhdGUgb3IgYXR0YWNo IHRvIHRoZSBzaGFyZWQgR1NTQVBJIHN0YXR1cyBidWZmZXIgKi8KLQlzaXplID0gbXVsX3Np emUoc2l6ZW9mKFBnQmFja2VuZEdTU1N0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpOwot CUJhY2tlbmRHc3NTdGF0dXNCdWZmZXIgPSAoUGdCYWNrZW5kR1NTU3RhdHVzICopCi0JCVNo bWVtSW5pdFN0cnVjdCgiQmFja2VuZCBHU1MgU3RhdHVzIEJ1ZmZlciIsIHNpemUsICZmb3Vu ZCk7Ci0KLQlpZiAoIWZvdW5kKQogCXsKIAkJUGdCYWNrZW5kR1NTU3RhdHVzICpwdHI7CiAK LQkJTWVtU2V0KEJhY2tlbmRHc3NTdGF0dXNCdWZmZXIsIDAsIHNpemUpOwotCiAJCS8qIElu aXRpYWxpemUgc3RfZ3Nzc3RhdHVzIHBvaW50ZXJzLiAqLwogCQlwdHIgPSBCYWNrZW5kR3Nz U3RhdHVzQnVmZmVyOwogCQlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90czsg aSsrKQpAQCAtMjMzLDYgKzE5MSwxMyBAQCBCYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZvaWQp CiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQKK0JhY2tlbmRTdGF0dXNTaG1lbUF0dGFjaCh2 b2lkICphcmcpCit7CisJQmFja2VuZEFjdGl2aXR5QnVmZmVyU2l6ZSA9IG11bF9zaXplKHBn c3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplLAorCQkJCQkJCQkJCSBOdW1CYWNrZW5k U3RhdFNsb3RzKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgcGdzdGF0cyBiYWNrZW5kIGFj dGl2aXR5IHN0YXRlLCBhbmQgc2V0IHVwIG91ciBvbi1wcm9jLWV4aXQKICAqIGhvb2suICBD YWxsZWQgZnJvbSBJbml0UG9zdGdyZXMgYW5kIEF1eGlsaWFyeVByb2Nlc3NNYWluLiAgTXlQ cm9jTnVtYmVyIG11c3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3Bnc3RhdF9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3No bWVtLmMKaW5kZXggMzNmYmRjYTk2MDkuLjk1NWZhZjVlYmM3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYwpAQCAtMTQsNiArMTQsNyBAQAogCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvcGdzdGF0X2ludGVybmFsLmgiCiAKQEAgLTU3LDYgKzU4LDEz IEBAIHN0YXRpYyB2b2lkIHBnc3RhdF9yZWxlYXNlX21hdGNoaW5nX2VudHJ5X3JlZnMoYm9v bCBkaXNjYXJkX3BlbmRpbmcsIFJlbGVhc2VNYXRjCiAKIHN0YXRpYyB2b2lkIHBnc3RhdF9z ZXR1cF9tZW1jeHQodm9pZCk7CiAKK3N0YXRpYyB2b2lkIFN0YXRzU2htZW1SZXF1ZXN0KHZv aWQgKmFyZyk7CitzdGF0aWMgdm9pZCBTdGF0c1NobWVtSW5pdCh2b2lkICphcmcpOworCitj b25zdCBTaG1lbUNhbGxiYWNrcyBTdGF0c1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gU3RhdHNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTdGF0c1NobWVtSW5pdCwK K307CiAKIC8qIHBhcmFtZXRlciBmb3IgdGhlIHNoYXJlZCBoYXNoICovCiBzdGF0aWMgY29u c3QgZHNoYXNoX3BhcmFtZXRlcnMgZHNoX3BhcmFtcyA9IHsKQEAgLTEyMyw3ICsxMzEsNyBA QCBwZ3N0YXRfZHNhX2luaXRfc2l6ZSh2b2lkKQogLyoKICAqIENvbXB1dGUgc2hhcmVkIG1l bW9yeSBzcGFjZSBuZWVkZWQgZm9yIGN1bXVsYXRpdmUgc3RhdGlzdGljcwogICovCi1TaXpl CitzdGF0aWMgU2l6ZQogU3RhdHNTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzejsKQEAg LTE0OSwxMDIgKzE1Nyw5OCBAQCBTdGF0c1NobWVtU2l6ZSh2b2lkKQogCXJldHVybiBzejsK IH0KIAorLyoKKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgYXJlYSBmb3IgY3VtdWxhdGl2 ZSBzdGF0aXN0aWNzCisgKi8KK3N0YXRpYyB2b2lkCitTdGF0c1NobWVtUmVxdWVzdCh2b2lk ICphcmcpCit7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNoYXJlZCBNZW1vcnkg U3RhdHMiLAorCQkJCQkgICAuc2l6ZSA9IFN0YXRzU2htZW1TaXplKCksCisJCQkJCSAgIC5w dHIgPSAodm9pZCAqKikgJnBnU3RhdExvY2FsLnNobWVtLAorCQkpOworfQorCiAvKgogICog SW5pdGlhbGl6ZSBjdW11bGF0aXZlIHN0YXRpc3RpY3Mgc3lzdGVtIGR1cmluZyBzdGFydHVw CiAgKi8KLXZvaWQKLVN0YXRzU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorU3RhdHNT aG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCVNpemUJCXN6OworCWRz YV9hcmVhICAgKmRzYTsKKwlkc2hhc2hfdGFibGUgKmRzaDsKKwlQZ1N0YXRfU2htZW1Db250 cm9sICpjdGwgPSBwZ1N0YXRMb2NhbC5zaG1lbTsKKwljaGFyCSAgICpwID0gKGNoYXIgKikg Y3RsOwogCi0Jc3ogPSBTdGF0c1NobWVtU2l6ZSgpOwotCXBnU3RhdExvY2FsLnNobWVtID0g KFBnU3RhdF9TaG1lbUNvbnRyb2wgKikKLQkJU2htZW1Jbml0U3RydWN0KCJTaGFyZWQgTWVt b3J5IFN0YXRzIiwgc3osICZmb3VuZCk7CisJLyogdGhlIGFsbG9jYXRpb24gb2YgcGdTdGF0 TG9jYWwuc2htZW0gaXRzZWxmICovCisJcCArPSBNQVhBTElHTihzaXplb2YoUGdTdGF0X1No bWVtQ29udHJvbCkpOwogCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCWRzYV9h cmVhICAgKmRzYTsKLQkJZHNoYXNoX3RhYmxlICpkc2g7Ci0JCVBnU3RhdF9TaG1lbUNvbnRy b2wgKmN0bCA9IHBnU3RhdExvY2FsLnNobWVtOwotCQljaGFyCSAgICpwID0gKGNoYXIgKikg Y3RsOworCS8qCisJICogQ3JlYXRlIGEgc21hbGwgZHNhIGFsbG9jYXRpb24gaW4gcGxhaW4g c2hhcmVkIG1lbW9yeS4gVGhpcyBpcyByZXF1aXJlZAorCSAqIGJlY2F1c2UgcG9zdG1hc3Rl ciBjYW5ub3QgdXNlIGRzbSBzZWdtZW50cy4gSXQgYWxzbyBwcm92aWRlcyBhIHNtYWxsCisJ ICogZWZmaWNpZW5jeSB3aW4uCisJICovCisJY3RsLT5yYXdfZHNhX2FyZWEgPSBwOworCWRz YSA9IGRzYV9jcmVhdGVfaW5fcGxhY2UoY3RsLT5yYXdfZHNhX2FyZWEsCisJCQkJCQkJICBw Z3N0YXRfZHNhX2luaXRfc2l6ZSgpLAorCQkJCQkJCSAgTFdUUkFOQ0hFX1BHU1RBVFNfRFNB LCBOVUxMKTsKKwlkc2FfcGluKGRzYSk7CiAKLQkJQXNzZXJ0KCFmb3VuZCk7CisJLyoKKwkg KiBUbyBlbnN1cmUgZHNoYXNoIGlzIGNyZWF0ZWQgaW4gInBsYWluIiBzaGFyZWQgbWVtb3J5 LCB0ZW1wb3JhcmlseSBsaW1pdAorCSAqIHNpemUgb2YgZHNhIHRvIHRoZSBpbml0aWFsIHNp emUgb2YgdGhlIGRzYS4KKwkgKi8KKwlkc2Ffc2V0X3NpemVfbGltaXQoZHNhLCBwZ3N0YXRf ZHNhX2luaXRfc2l6ZSgpKTsKIAotCQkvKiB0aGUgYWxsb2NhdGlvbiBvZiBwZ1N0YXRMb2Nh bC5zaG1lbSBpdHNlbGYgKi8KLQkJcCArPSBNQVhBTElHTihzaXplb2YoUGdTdGF0X1NobWVt Q29udHJvbCkpOworCS8qCisJICogV2l0aCB0aGUgbGltaXQgaW4gcGxhY2UsIGNyZWF0ZSB0 aGUgZHNoYXNoIHRhYmxlLiBYWFg6IEl0J2QgYmUgbmljZSBpZgorCSAqIHRoZXJlIHdlcmUg ZHNoYXNoX2NyZWF0ZV9pbl9wbGFjZSgpLgorCSAqLworCWRzaCA9IGRzaGFzaF9jcmVhdGUo ZHNhLCAmZHNoX3BhcmFtcywgTlVMTCk7CisJY3RsLT5oYXNoX2hhbmRsZSA9IGRzaGFzaF9n ZXRfaGFzaF90YWJsZV9oYW5kbGUoZHNoKTsKIAotCQkvKgotCQkgKiBDcmVhdGUgYSBzbWFs bCBkc2EgYWxsb2NhdGlvbiBpbiBwbGFpbiBzaGFyZWQgbWVtb3J5LiBUaGlzIGlzCi0JCSAq IHJlcXVpcmVkIGJlY2F1c2UgcG9zdG1hc3RlciBjYW5ub3QgdXNlIGRzbSBzZWdtZW50cy4g SXQgYWxzbwotCQkgKiBwcm92aWRlcyBhIHNtYWxsIGVmZmljaWVuY3kgd2luLgotCQkgKi8K LQkJY3RsLT5yYXdfZHNhX2FyZWEgPSBwOwotCQlkc2EgPSBkc2FfY3JlYXRlX2luX3BsYWNl KGN0bC0+cmF3X2RzYV9hcmVhLAotCQkJCQkJCQkgIHBnc3RhdF9kc2FfaW5pdF9zaXplKCks Ci0JCQkJCQkJCSAgTFdUUkFOQ0hFX1BHU1RBVFNfRFNBLCBOVUxMKTsKLQkJZHNhX3Bpbihk c2EpOworCS8qIGxpZnQgbGltaXQgc2V0IGFib3ZlICovCisJZHNhX3NldF9zaXplX2xpbWl0 KGRzYSwgLTEpOwogCi0JCS8qCi0JCSAqIFRvIGVuc3VyZSBkc2hhc2ggaXMgY3JlYXRlZCBp biAicGxhaW4iIHNoYXJlZCBtZW1vcnksIHRlbXBvcmFyaWx5Ci0JCSAqIGxpbWl0IHNpemUg b2YgZHNhIHRvIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIGRzYS4KLQkJICovCi0JCWRzYV9z ZXRfc2l6ZV9saW1pdChkc2EsIHBnc3RhdF9kc2FfaW5pdF9zaXplKCkpOworCS8qCisJICog UG9zdG1hc3RlciB3aWxsIG5ldmVyIGFjY2VzcyB0aGVzZSBhZ2FpbiwgdGh1cyBmcmVlIHRo ZSBsb2NhbAorCSAqIGRzYS9kc2hhc2ggcmVmZXJlbmNlcy4KKwkgKi8KKwlkc2hhc2hfZGV0 YWNoKGRzaCk7CisJZHNhX2RldGFjaChkc2EpOwogCi0JCS8qCi0JCSAqIFdpdGggdGhlIGxp bWl0IGluIHBsYWNlLCBjcmVhdGUgdGhlIGRzaGFzaCB0YWJsZS4gWFhYOiBJdCdkIGJlIG5p Y2UKLQkJICogaWYgdGhlcmUgd2VyZSBkc2hhc2hfY3JlYXRlX2luX3BsYWNlKCkuCi0JCSAq LwotCQlkc2ggPSBkc2hhc2hfY3JlYXRlKGRzYSwgJmRzaF9wYXJhbXMsIE5VTEwpOwotCQlj dGwtPmhhc2hfaGFuZGxlID0gZHNoYXNoX2dldF9oYXNoX3RhYmxlX2hhbmRsZShkc2gpOwor CXBnX2F0b21pY19pbml0X3U2NCgmY3RsLT5nY19yZXF1ZXN0X2NvdW50LCAxKTsKIAotCQkv KiBsaWZ0IGxpbWl0IHNldCBhYm92ZSAqLwotCQlkc2Ffc2V0X3NpemVfbGltaXQoZHNhLCAt MSk7CisJLyogRG8gdGhlIHBlci1raW5kIGluaXRpYWxpemF0aW9uICovCisJZm9yIChQZ1N0 YXRfS2luZCBraW5kID0gUEdTVEFUX0tJTkRfTUlOOyBraW5kIDw9IFBHU1RBVF9LSU5EX01B WDsga2luZCsrKQorCXsKKwkJY29uc3QgUGdTdGF0X0tpbmRJbmZvICpraW5kX2luZm8gPSBw Z3N0YXRfZ2V0X2tpbmRfaW5mbyhraW5kKTsKKwkJY2hhcgkgICAqcHRyOwogCi0JCS8qCi0J CSAqIFBvc3RtYXN0ZXIgd2lsbCBuZXZlciBhY2Nlc3MgdGhlc2UgYWdhaW4sIHRodXMgZnJl ZSB0aGUgbG9jYWwKLQkJICogZHNhL2RzaGFzaCByZWZlcmVuY2VzLgotCQkgKi8KLQkJZHNo YXNoX2RldGFjaChkc2gpOwotCQlkc2FfZGV0YWNoKGRzYSk7CisJCWlmICgha2luZF9pbmZv KQorCQkJY29udGludWU7CiAKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZjdGwtPmdjX3JlcXVl c3RfY291bnQsIDEpOworCQkvKiBpbml0aWFsaXplIGVudHJ5IGNvdW50IHRyYWNraW5nICov CisJCWlmIChraW5kX2luZm8tPnRyYWNrX2VudHJ5X2NvdW50KQorCQkJcGdfYXRvbWljX2lu aXRfdTY0KCZjdGwtPmVudHJ5X2NvdW50c1traW5kIC0gMV0sIDApOwogCi0JCS8qIERvIHRo ZSBwZXIta2luZCBpbml0aWFsaXphdGlvbiAqLwotCQlmb3IgKFBnU3RhdF9LaW5kIGtpbmQg PSBQR1NUQVRfS0lORF9NSU47IGtpbmQgPD0gUEdTVEFUX0tJTkRfTUFYOyBraW5kKyspCisJ CS8qIGluaXRpYWxpemUgZml4ZWQtbnVtYmVyZWQgc3RhdHMgKi8KKwkJaWYgKGtpbmRfaW5m by0+Zml4ZWRfYW1vdW50KQogCQl7Ci0JCQljb25zdCBQZ1N0YXRfS2luZEluZm8gKmtpbmRf aW5mbyA9IHBnc3RhdF9nZXRfa2luZF9pbmZvKGtpbmQpOwotCQkJY2hhcgkgICAqcHRyOwot Ci0JCQlpZiAoIWtpbmRfaW5mbykKLQkJCQljb250aW51ZTsKLQotCQkJLyogaW5pdGlhbGl6 ZSBlbnRyeSBjb3VudCB0cmFja2luZyAqLwotCQkJaWYgKGtpbmRfaW5mby0+dHJhY2tfZW50 cnlfY291bnQpCi0JCQkJcGdfYXRvbWljX2luaXRfdTY0KCZjdGwtPmVudHJ5X2NvdW50c1tr aW5kIC0gMV0sIDApOwotCi0JCQkvKiBpbml0aWFsaXplIGZpeGVkLW51bWJlcmVkIHN0YXRz ICovCi0JCQlpZiAoa2luZF9pbmZvLT5maXhlZF9hbW91bnQpCisJCQlpZiAocGdzdGF0X2lz X2tpbmRfYnVpbHRpbihraW5kKSkKKwkJCQlwdHIgPSAoKGNoYXIgKikgY3RsKSArIGtpbmRf aW5mby0+c2hhcmVkX2N0bF9vZmY7CisJCQllbHNlCiAJCQl7Ci0JCQkJaWYgKHBnc3RhdF9p c19raW5kX2J1aWx0aW4oa2luZCkpCi0JCQkJCXB0ciA9ICgoY2hhciAqKSBjdGwpICsga2lu ZF9pbmZvLT5zaGFyZWRfY3RsX29mZjsKLQkJCQllbHNlCi0JCQkJewotCQkJCQlpbnQJCQlp ZHggPSBraW5kIC0gUEdTVEFUX0tJTkRfQ1VTVE9NX01JTjsKLQotCQkJCQlBc3NlcnQoa2lu ZF9pbmZvLT5zaGFyZWRfc2l6ZSAhPSAwKTsKLQkJCQkJY3RsLT5jdXN0b21fZGF0YVtpZHhd ID0gU2htZW1BbGxvYyhraW5kX2luZm8tPnNoYXJlZF9zaXplKTsKLQkJCQkJcHRyID0gY3Rs LT5jdXN0b21fZGF0YVtpZHhdOwotCQkJCX0KLQotCQkJCWtpbmRfaW5mby0+aW5pdF9zaG1l bV9jYihwdHIpOworCQkJCWludAkJCWlkeCA9IGtpbmQgLSBQR1NUQVRfS0lORF9DVVNUT01f TUlOOworCisJCQkJQXNzZXJ0KGtpbmRfaW5mby0+c2hhcmVkX3NpemUgIT0gMCk7CisJCQkJ Y3RsLT5jdXN0b21fZGF0YVtpZHhdID0gU2htZW1BbGxvYyhraW5kX2luZm8tPnNoYXJlZF9z aXplKTsKKwkJCQlwdHIgPSBjdGwtPmN1c3RvbV9kYXRhW2lkeF07CiAJCQl9CisKKwkJCWtp bmRfaW5mby0+aW5pdF9zaG1lbV9jYihwdHIpOwogCQl9CiAJfQotCWVsc2UKLQl7Ci0JCUFz c2VydChmb3VuZCk7Ci0JfQogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMKaW5kZXggMmI3Njk2Nzc3NmMuLjk1NjM1YzdmNTZjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yNSw2ICsyNSw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJz eXN0ZW1zLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMv d2FpdF9ldmVudC5oIgogCkBAIC05NSw1OSArOTYsNDcgQEAgc3RhdGljIFdhaXRFdmVudEN1 c3RvbUNvdW50ZXJEYXRhICpXYWl0RXZlbnRDdXN0b21Db3VudGVyOwogc3RhdGljIHVpbnQz MiBXYWl0RXZlbnRDdXN0b21OZXcodWludDMyIGNsYXNzSWQsIGNvbnN0IGNoYXIgKndhaXRf ZXZlbnRfbmFtZSk7CiBzdGF0aWMgY29uc3QgY2hhciAqR2V0V2FpdEV2ZW50Q3VzdG9tSWRl bnRpZmllcih1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIAorc3RhdGljIHZvaWQgV2FpdEV2 ZW50Q3VzdG9tU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBXYWl0RXZl bnRDdXN0b21TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3Mg V2FpdEV2ZW50Q3VzdG9tU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBXYWl0 RXZlbnRDdXN0b21TaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBXYWl0RXZlbnRDdXN0b21T aG1lbUluaXQsCit9OworCiAvKgotICogIFJldHVybiB0aGUgc3BhY2UgZm9yIGR5bmFtaWMg c2hhcmVkIGhhc2ggdGFibGVzIGFuZCBkeW5hbWljIGFsbG9jYXRpb24gY291bnRlci4KKyAq IFJlZ2lzdGVyIHNobWVtIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoIGFuZCBkeW5h bWljIGFsbG9jYXRpb24gY291bnRlci4KICAqLwotU2l6ZQotV2FpdEV2ZW50Q3VzdG9tU2ht ZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorV2FpdEV2ZW50Q3VzdG9tU2htZW1SZXF1ZXN0 KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzejsKLQotCXN6ID0gTUFYQUxJR04oc2l6ZW9mKFdh aXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhKSk7Ci0Jc3ogPSBhZGRfc2l6ZShzeiwgaGFzaF9l c3RpbWF0ZV9zaXplKFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfU0laRSwKLQkJCQkJCQkJCQkg c2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKSkpOwotCXN6ID0gYWRkX3NpemUo c3osIGhhc2hfZXN0aW1hdGVfc2l6ZShXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX1NJWkUsCi0J CQkJCQkJCQkJIHNpemVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSkpKTsKLQlyZXR1 cm4gc3o7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIldhaXRFdmVudEN1c3RvbUNv dW50ZXJEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tQ291 bnRlckRhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZXYWl0RXZlbnRDdXN0b21D b3VudGVyLAorCQkpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUgPSAiV2FpdEV2ZW50Q3Vz dG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCisJCQkJCSAucHRyID0gJldh aXRFdmVudEN1c3RvbUhhc2hCeUluZm8sCisJCQkJCSAubmVsZW1zID0gV0FJVF9FVkVOVF9D VVNUT01fSEFTSF9TSVpFLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXplID0gc2l6ZW9mKHVp bnQzMiksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihXYWl0RXZlbnRD dXN0b21FbnRyeUJ5SW5mbyksCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMsCisJCSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJXYWl0RXZlbnRD dXN0b20gaGFzaCBieSBuYW1lIiwKKwkJCQkJIC5wdHIgPSAmV2FpdEV2ZW50Q3VzdG9tSGFz aEJ5TmFtZSwKKwkJCQkJIC5uZWxlbXMgPSBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX1NJWkUs CisJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLworCQkJCQkgLmhhc2hf aW5mby5rZXlzaXplID0gc2l6ZW9mKGNoYXJbTkFNRURBVEFMRU5dKSwKKwkJCQkJIC5oYXNo X2luZm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lKSwK KwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTLAorCQkpOwog fQogCi0vKgotICogQWxsb2NhdGUgc2htZW0gc3BhY2UgZm9yIGR5bmFtaWMgc2hhcmVkIGhh c2ggYW5kIGR5bmFtaWMgYWxsb2NhdGlvbiBjb3VudGVyLgotICovCi12b2lkCi1XYWl0RXZl bnRDdXN0b21TaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitXYWl0RXZlbnRDdXN0b21T aG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJCWluZm87 Ci0KLQlXYWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50ZXJE YXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEi LAotCQkJCQkJc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhKSwgJmZvdW5kKTsK LQotCWlmICghZm91bmQpCi0JewotCQkvKiBpbml0aWFsaXplIHRoZSBhbGxvY2F0aW9uIGNv dW50ZXIgYW5kIGl0cyBzcGlubG9jay4gKi8KLQkJV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+ bmV4dElkID0gV0FJVF9FVkVOVF9DVVNUT01fSU5JVElBTF9JRDsKLQkJU3BpbkxvY2tJbml0 KCZXYWl0RXZlbnRDdXN0b21Db3VudGVyLT5tdXRleCk7Ci0JfQotCi0JLyogaW5pdGlhbGl6 ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1c3RvbSB3YWl0IGV2ZW50 cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWluZm8uZW50cnlzaXpl ID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKLQlXYWl0RXZlbnRDdXN0 b21IYXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2gg Ynkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01f SEFTSF9TSVpFLAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCi0JLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLwotCWluZm8u a2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0JaW5mby5lbnRyeXNpemUg PSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwotCVdhaXRFdmVudEN1c3Rv bUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0b20gaGFzaCBi eSBuYW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX1NJWkUsCi0JCQkJCSAg JmluZm8sCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkvKiBpbml0aWFs aXplIHRoZSBhbGxvY2F0aW9uIGNvdW50ZXIgYW5kIGl0cyBzcGlubG9jay4gKi8KKwlXYWl0 RXZlbnRDdXN0b21Db3VudGVyLT5uZXh0SWQgPSBXQUlUX0VWRU5UX0NVU1RPTV9JTklUSUFM X0lEOworCVNwaW5Mb2NrSW5pdCgmV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+bXV0ZXgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25f cG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKaW5k ZXggYzA2YjBlOWI4MDAuLmE3Yzk5ZTA5N2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTE3LDYgKzE3LDcgQEAKICAqLwogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNs dWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogI2lmZGVmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCkBAIC0xMDksNiArMTEwLDExIEBAIHR5cGVkZWYgc3RydWN0IEluamVjdGlvblBv aW50Q2FjaGVFbnRyeQogCiBzdGF0aWMgSFRBQiAqSW5qZWN0aW9uUG9pbnRDYWNoZSA9IE5V TEw7CiAKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworc3RhdGljIHZvaWQgSW5qZWN0 aW9uUG9pbnRTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEluamVjdGlv blBvaW50U2htZW1Jbml0KHZvaWQgKmFyZyk7CisjZW5kaWYKKwogLyoKICAqIGluamVjdGlv bl9wb2ludF9jYWNoZV9hZGQKICAqCkBAIC0yMjYsNDUgKzIzMiwzNCBAQCBpbmplY3Rpb25f cG9pbnRfY2FjaGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpCiB9CiAjZW5kaWYJCQkJCQkJLyog VVNFX0lOSkVDVElPTl9QT0lOVFMgKi8KIAotLyoKLSAqIFJldHVybiB0aGUgc3BhY2UgZm9y IGR5bmFtaWMgc2hhcmVkIGhhc2ggdGFibGUuCi0gKi8KLVNpemUKLUluamVjdGlvblBvaW50 U2htZW1TaXplKHZvaWQpCi17Citjb25zdCBTaG1lbUNhbGxiYWNrcyBJbmplY3Rpb25Qb2lu dFNobWVtQ2FsbGJhY2tzID0gewogI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JU2l6 ZQkJc3ogPSAwOwotCi0Jc3ogPSBhZGRfc2l6ZShzeiwgc2l6ZW9mKEluamVjdGlvblBvaW50 c0N0bCkpOwotCXJldHVybiBzejsKLSNlbHNlCi0JcmV0dXJuIDA7CisJLnJlcXVlc3RfZm4g PSBJbmplY3Rpb25Qb2ludFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEluamVjdGlvblBv aW50U2htZW1Jbml0LAogI2VuZGlmCi19Cit9OwogCiAvKgotICogQWxsb2NhdGUgc2htZW0g c3BhY2UgZm9yIGR5bmFtaWMgc2hhcmVkIGhhc2guCisgKiBSZXNlcnZlIHNwYWNlIGZvciB0 aGUgZHluYW1pYyBzaGFyZWQgaGFzaCB0YWJsZQogICovCi12b2lkCi1JbmplY3Rpb25Qb2lu dFNobWVtSW5pdCh2b2lkKQotewogI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JYm9v bAkJZm91bmQ7CitzdGF0aWMgdm9pZAorSW5qZWN0aW9uUG9pbnRTaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJJbmplY3Rpb25Qb2lu dCBoYXNoIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoSW5qZWN0aW9uUG9pbnRzQ3RsKSwK KwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWN0aXZlSW5qZWN0aW9uUG9pbnRzLAorCQkp OworfQogCi0JQWN0aXZlSW5qZWN0aW9uUG9pbnRzID0gU2htZW1Jbml0U3RydWN0KCJJbmpl Y3Rpb25Qb2ludCBoYXNoIiwKLQkJCQkJCQkJCQkJc2l6ZW9mKEluamVjdGlvblBvaW50c0N0 bCksCi0JCQkJCQkJCQkJCSZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7 Ci0JCUFzc2VydCghZm91bmQpOwotCQlwZ19hdG9taWNfaW5pdF91MzIoJkFjdGl2ZUluamVj dGlvblBvaW50cy0+bWF4X2ludXNlLCAwKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhf SU5KRUNUSU9OX1BPSU5UUzsgaSsrKQotCQkJcGdfYXRvbWljX2luaXRfdTY0KCZBY3RpdmVJ bmplY3Rpb25Qb2ludHMtPmVudHJpZXNbaV0uZ2VuZXJhdGlvbiwgMCk7Ci0JfQotCWVsc2UK LQkJQXNzZXJ0KGZvdW5kKTsKLSNlbmRpZgorc3RhdGljIHZvaWQKK0luamVjdGlvblBvaW50 U2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwlwZ19hdG9taWNfaW5pdF91MzIoJkFjdGl2ZUlu amVjdGlvblBvaW50cy0+bWF4X2ludXNlLCAwKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IE1B WF9JTkpFQ1RJT05fUE9JTlRTOyBpKyspCisJCXBnX2F0b21pY19pbml0X3U2NCgmQWN0aXZl SW5qZWN0aW9uUG9pbnRzLT5lbnRyaWVzW2ldLmdlbmVyYXRpb24sIDApOwogfQorI2VuZGlm CiAKIC8qCiAgKiBBdHRhY2ggYSBuZXcgaW5qZWN0aW9uIHBvaW50LgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oCmluZGV4IGRhNzUwM2M1N2I2Li4zMDk3ZTliYjFhZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHJlZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUu aApAQCAtMTMwMCw4ICsxMzAwLDYgQEAgZXh0ZXJuIEJUQ3ljbGVJZCBfYnRfdmFjdXVtX2N5 Y2xlaWQoUmVsYXRpb24gcmVsKTsKIGV4dGVybiBCVEN5Y2xlSWQgX2J0X3N0YXJ0X3ZhY3V1 bShSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X2VuZF92YWN1dW0oUmVsYXRpb24g cmVsKTsKIGV4dGVybiB2b2lkIF9idF9lbmRfdmFjdXVtX2NhbGxiYWNrKGludCBjb2RlLCBE YXR1bSBhcmcpOwotZXh0ZXJuIFNpemUgQlRyZWVTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4g dm9pZCBCVHJlZVNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBieXRlYSAqYnRvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOwogZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0 eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiAJCQkJCSAgIEluZGV4QU1Qcm9wZXJ0eSBw cm9wLCBjb25zdCBjaGFyICpwcm9wbmFtZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zeW5jc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N5bmNzY2FuLmgKaW5kZXgg MjRjZjMzMjk0ZTUuLjMyZjgzMzJhYWVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3Mvc3luY3NjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3luY3NjYW4uaApAQCAt MjQsNyArMjQsNSBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCB0cmFjZV9zeW5jc2NhbjsK IAogZXh0ZXJuIHZvaWQgc3NfcmVwb3J0X2xvY2F0aW9uKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgbG9jYXRpb24pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHNzX2dldF9sb2NhdGlvbihS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIHJlbG5ibG9ja3MpOwotZXh0ZXJuIHZvaWQgU3lu Y1NjYW5TaG1lbUluaXQodm9pZCk7Ci1leHRlcm4gU2l6ZSBTeW5jU2NhblNobWVtU2l6ZSh2 b2lkKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhh c2UuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCmluZGV4IDc2MWQ1NmE1ZjNk Li4xZDJmZjQyYzliNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNl LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgKQEAgLTMzLDkgKzMzLDYg QEAgdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVHJhbnNhY3Rpb25EYXRhICpHbG9iYWxUcmFuc2Fj dGlvbjsKIC8qIEdVQyB2YXJpYWJsZSAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhf cHJlcGFyZWRfeGFjdHM7CiAKLWV4dGVybiBTaXplIFR3b1BoYXNlU2htZW1TaXplKHZvaWQp OwotZXh0ZXJuIHZvaWQgVHdvUGhhc2VTaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lk IEF0QWJvcnRfVHdvcGhhc2Uodm9pZCk7CiBleHRlcm4gdm9pZCBQb3N0UHJlcGFyZV9Ud29w aGFzZSh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggNGFmMzhlNzRjZTQuLjQzN2I0ZjMy MzQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTI1OSw4ICsyNTksNiBAQCBleHRlcm4gdm9pZCBJ bml0TG9jYWxEYXRhQ2hlY2tzdW1TdGF0ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFNldExvY2Fs RGF0YUNoZWNrc3VtU3RhdGUodWludDMyIGRhdGFfY2hlY2tzdW1fdmVyc2lvbik7CiBleHRl cm4gYm9vbCBHZXREZWZhdWx0Q2hhclNpZ25lZG5lc3Modm9pZCk7CiBleHRlcm4gWExvZ1Jl Y1B0ciBHZXRGYWtlTFNORm9yVW5sb2dnZWRSZWwodm9pZCk7Ci1leHRlcm4gU2l6ZSBYTE9H U2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lkKTsKIGV4 dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codWludDMyIGRhdGFfY2hlY2tzdW1fdmVyc2lvbik7 CiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FsQ29uc2lzdGVuY3lDaGVja2luZyh2b2lkKTsK IGV4dGVybiB2b2lkIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNoZXIuaAppbmRleCA3ZWM0MGM0Yjc4Yi4uNTZhODE2 NzZkOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5oCkBAIC0zNCw5ICsz NCw2IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dQcmVmZXRjaGVyIFhMb2dQcmVmZXRjaGVyOwog CiBleHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hSZWNvbmZpZ3VyZSh2b2lkKTsKIAotZXh0ZXJu IHNpemVfdCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBYTG9n UHJlZmV0Y2hTaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIFhMb2dQcmVmZXRjaFJl c2V0U3RhdHModm9pZCk7CiAKIGV4dGVybiBYTG9nUHJlZmV0Y2hlciAqWExvZ1ByZWZldGNo ZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Z3JlY292ZXJ5LmgKaW5kZXggMjg0MjEwNmIyODUuLmJhNzc1MGRjYTBiIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNTMsOSArMTUzLDYgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgcmVhY2hlZENvbnNpc3RlbmN5OwogLyogQXJlIHdlIGN1cnJlbnRseSBp biBzdGFuZGJ5IG1vZGU/ICovCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBTdGFuZGJ5TW9k ZTsKIAotZXh0ZXJuIFNpemUgWExvZ1JlY292ZXJ5U2htZW1TaXplKHZvaWQpOwotZXh0ZXJu IHZvaWQgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBJbml0 V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwKIAkJCQkJCQlib29s ICp3YXNTaHV0ZG93bl9wdHIsIGJvb2wgKmhhdmVCYWNrdXBMYWJlbF9wdHIsCiAJCQkJCQkJ Ym9vbCAqaGF2ZVRibHNwY01hcF9wdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2d3YWl0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaAppbmRleCBk MTI1MzFkMzJiOC4uMDcxNTdmMjIwZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9nd2FpdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5oCkBAIC0x MDAsOCArMTAwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FpdExTTlN0YXRlCiAKIGV4dGVybiBQ R0RMTElNUE9SVCBXYWl0TFNOU3RhdGUgKndhaXRMU05TdGF0ZTsKIAotZXh0ZXJuIFNpemUg V2FpdExTTlNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFdhaXRMU05TaG1lbUluaXQo dm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciBHZXRDdXJyZW50TFNORm9yV2FpdFR5cGUoV2Fp dExTTlR5cGUgbHNuVHlwZSk7CiBleHRlcm4gdm9pZCBXYWl0TFNOV2FrZXVwKFdhaXRMU05U eXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgY3VycmVudExTTik7CiBleHRlcm4gdm9pZCBXYWl0 TFNOQ2xlYW51cCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIv c3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggOGUzNTQ5YzM3NTIuLjI3ODZhN2M1ZmZiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0 YXQuaApAQCAtNTQxLDEwICs1NDEsNiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQmFja2Vu ZFBlbmRpbmcKICAqIEZ1bmN0aW9ucyBpbiBwZ3N0YXQuYwogICovCiAKLS8qIGZ1bmN0aW9u cyBjYWxsZWQgZnJvbSBwb3N0bWFzdGVyICovCi1leHRlcm4gU2l6ZSBTdGF0c1NobWVtU2l6 ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFN0YXRzU2htZW1Jbml0KHZvaWQpOwotCiAvKiBGdW5j dGlvbnMgY2FsbGVkIGR1cmluZyBzZXJ2ZXIgc3RhcnR1cCAvIHNodXRkb3duICovCiBleHRl cm4gdm9pZCBwZ3N0YXRfcmVzdG9yZV9zdGF0cyh2b2lkKTsKIGV4dGVybiB2b2lkIHBnc3Rh dF9kaXNjYXJkX3N0YXRzKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0u aAppbmRleCBiMjFkMTExZDRkNS4uODk1NGY2YjI4ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oCkBAIC02Niw4ICs2Niw0IEBAIHBnX25vcmV0dXJuIGV4dGVybiB2 b2lkIEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90 IHN0YXJ0CiBleHRlcm4gYm9vbCBBdXRvVmFjdXVtUmVxdWVzdFdvcmsoQXV0b1ZhY3V1bVdv cmtJdGVtVHlwZSB0eXBlLAogCQkJCQkJCQkgIE9pZCByZWxhdGlvbklkLCBCbG9ja051bWJl ciBibGtubyk7CiAKLS8qIHNoYXJlZCBtZW1vcnkgc3R1ZmYgKi8KLWV4dGVybiBTaXplIEF1 dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBBdXRvVmFjdXVtU2htZW1J bml0KHZvaWQpOwotCiAjZW5kaWYJCQkJCQkJLyogQVVUT1ZBQ1VVTV9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oIGIvc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaAppbmRleCBiNzg5Y2Fm NDAzNC4uYjYyNjFiYzAxZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv Ymd3b3JrZXJfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dv cmtlcl9pbnRlcm5hbHMuaApAQCAtNDEsOCArNDEsNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWdp c3RlcmVkQmdXb3JrZXIKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGRsaXN0X2hlYWQgQmFja2dy b3VuZFdvcmtlckxpc3Q7CiAKLWV4dGVybiBTaXplIEJhY2tncm91bmRXb3JrZXJTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQp OwogZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3df bmV3X3dvcmtlcnMpOwogZXh0ZXJuIHZvaWQgRm9yZ2V0QmFja2dyb3VuZFdvcmtlcihSZWdp c3RlcmVkQmdXb3JrZXIgKnJ3KTsKIGV4dGVybiB2b2lkIFJlcG9ydEJhY2tncm91bmRXb3Jr ZXJQSUQoUmVnaXN0ZXJlZEJnV29ya2VyICpydyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3Jp dGVyLmgKaW5kZXggNDc0NzBjYmE4OTMuLjM2ZWVhMGIxYWIwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9iZ3dyaXRlci5oCkBAIC0zOSw5ICszOSw2IEBAIGV4dGVybiBib29sIEZvcndhcmRT eW5jUmVxdWVzdChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSk7 CiAKIGV4dGVybiB2b2lkIEFic29yYlN5bmNSZXF1ZXN0cyh2b2lkKTsKIAotZXh0ZXJuIFNp emUgQ2hlY2twb2ludGVyU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQ2hlY2twb2lu dGVyU2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gYm9vbCBGaXJzdENhbGxTaW5jZUxhc3RD aGVja3BvaW50KHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogX0JHV1JJVEVSX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmgg Yi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5oCmluZGV4IDM0 MzQ5NGVkY2M4Li4wNTYyNTUzOTYwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVy L2RhdGFjaGVja3N1bV9zdGF0ZS5oCkBAIC0xNywxMCArMTcsNiBAQAogCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAKLS8qIFNoYXJlZCBtZW1vcnkgKi8KLWV4dGVybiBT aXplIERhdGFDaGVja3N1bXNTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBEYXRhQ2hl Y2tzdW1zU2htZW1Jbml0KHZvaWQpOwotCiAvKiBQb3NzaWJsZSBvcGVyYXRpb25zIHRoZSBE YXRhY2hlY2tzdW1zd29ya2VyIGNhbiBwZXJmb3JtICovCiB0eXBlZGVmIGVudW0gRGF0YUNo ZWNrc3Vtc1dvcmtlck9wZXJhdGlvbgogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9wZ2FyY2guaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmgKaW5k ZXggZmFhNzYwOWNkODEuLjk3NzJiYjU3M2ExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3BnYXJjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNo LmgKQEAgLTI2LDggKzI2LDYgQEAKICNkZWZpbmUgTUFYX1hGTl9DSEFSUwk0MAogI2RlZmlu ZSBWQUxJRF9YRk5fQ0hBUlMgIjAxMjM0NTY3ODlBQkNERUYuaGlzdG9yeS5iYWNrdXAucGFy dGlhbCIKIAotZXh0ZXJuIFNpemUgUGdBcmNoU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZv aWQgUGdBcmNoU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIGJvb2wgUGdBcmNoQ2FuUmVzdGFy dCh2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIFBnQXJjaGl2ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pOwogZXh0ZXJu IHZvaWQgUGdBcmNoV2FrZXVwKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1 bW1hcml6ZXIuaAppbmRleCBhNGMwNTUwNjZiNC4uYjlhNzU1ZmFkYmMgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oCisrKyBiL3NyYy9pbmNs dWRlL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oCkBAIC0xOSw4ICsxOSw2IEBACiBleHRl cm4gUEdETExJTVBPUlQgYm9vbCBzdW1tYXJpemVfd2FsOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCB3YWxfc3VtbWFyeV9rZWVwX3RpbWU7CiAKLWV4dGVybiBTaXplIFdhbFN1bW1hcml6 ZXJTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBXYWxTdW1tYXJpemVyU2htZW1Jbml0 KHZvaWQpOwogcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgV2FsU3VtbWFyaXplck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbik7CiAKIGV4 dGVybiB2b2lkIEdldFdhbFN1bW1hcml6ZXJTdGF0ZShUaW1lTGluZUlEICpzdW1tYXJpemVk X3RsaSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxjdGwu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxjdGwuaAppbmRleCA0OTU1NTRj NTMyYy4uMGJjMTMwMmYxMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxjdGwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsY3Rs LmgKQEAgLTE0LDggKzE0LDYgQEAKICNpZm5kZWYgTE9HSUNBTENUTF9ICiAjZGVmaW5lIExP R0lDQUxDVExfSAogCi1leHRlcm4gU2l6ZSBMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbVNpemUo dm9pZCk7Ci1leHRlcm4gdm9pZCBMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbUluaXQodm9pZCk7 CiBleHRlcm4gdm9pZCBTdGFydHVwTG9naWNhbERlY29kaW5nU3RhdHVzKGJvb2wgbGFzdF9z dGF0dXMpOwogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVByb2Nlc3NYTG9nTG9naWNhbEluZm8o dm9pZCk7CiBleHRlcm4gYm9vbCBQcm9jZXNzQmFycmllclVwZGF0ZVhMb2dMb2dpY2FsSW5m byh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgK aW5kZXggNTA0YjcxMDUzNmEuLjVmMGMxYjljNjgyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTksOSArMTksNiBAQCBleHRlcm4gUEdE TExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b247CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4g dm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKLWV4dGVybiBTaXpl IEFwcGx5TGF1bmNoZXJTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBBcHBseUxhdW5j aGVyU2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyRm9yZ2V0 V29ya2VyU3RhcnRUaW1lKE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNo ZXJXYWtldXBBdENvbW1pdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5k ZXggZWI0NmI0MWI0YjcuLmE2OWZhZjZlYWFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmln aW4uaApAQCAtODQsOCArODQsNCBAQCBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3JlZG8oWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9kZXNjKFN0 cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3Qg Y2hhciAqcmVwbG9yaWdpbl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIAotLyogc2hhcmVkIG1l bW9yeSBhbGxvY2F0aW9uICovCi1leHRlcm4gU2l6ZSBSZXBsaWNhdGlvbk9yaWdpblNobWVt U2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KHZv aWQpOwotCiAjZW5kaWYJCQkJCQkJLyogUEdfT1JJR0lOX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaAppbmRleCA0YjQ3MDlmNmUyYy4uMWEzNTU3ZGU2MDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9zbG90LmgKQEAgLTMyNywxMCArMzI3LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtYXhfcmVwbGljYXRpb25fc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IGlkbGVf cmVwbGljYXRpb25fc2xvdF90aW1lb3V0X3NlY3M7CiAKLS8qIHNobWVtIGluaXRpYWxpemF0 aW9uIGZ1bmN0aW9ucyAqLwotZXh0ZXJuIFNpemUgUmVwbGljYXRpb25TbG90c1NobWVtU2l6 ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQodm9pZCk7 Ci0KIC8qIG1hbmFnZW1lbnQgb2YgaW5kaXZpZHVhbCBzbG90cyAqLwogZXh0ZXJuIHZvaWQg UmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lm aWMsCiAJCQkJCQkJCSAgUmVwbGljYXRpb25TbG90UGVyc2lzdGVuY3kgcGVyc2lzdGVuY3ks CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaAppbmRleCBlNTQ2ZDBkMDUwZC4uZDIx MjFjZDNlZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5j LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaApAQCAtMzEsOCAr MzEsNiBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBSZXBsU2xvdFN5bmNXb3JrZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90CiBleHRlcm4gdm9pZCBTaHV0RG93 blNsb3RTeW5jKHZvaWQpOwogZXh0ZXJuIGJvb2wgU2xvdFN5bmNXb3JrZXJDYW5SZXN0YXJ0 KHZvaWQpOwogZXh0ZXJuIGJvb2wgSXNTeW5jaW5nUmVwbGljYXRpb25TbG90cyh2b2lkKTsK LWV4dGVybiBTaXplIFNsb3RTeW5jU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgU2xv dFN5bmNTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBTeW5jUmVwbGljYXRpb25TbG90 cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubik7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UU1lO Q19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRleCA4NWQy NGM4NzI5OC4uNDdjMDc1NzRkNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuaApAQCAtNDkxLDggKzQ5MSw2IEBAIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIFdh bFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw CiBleHRlcm4gdm9pZCBXYWxSY3ZSZXF1ZXN0QXBwbHlSZXBseSh2b2lkKTsKIAogLyogcHJv dG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHdhbHJlY2VpdmVyZnVuY3MuYyAqLwotZXh0ZXJu IFNpemUgV2FsUmN2U2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgV2FsUmN2U2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25XYWxSY3Yodm9pZCk7CiBleHRlcm4g Ym9vbCBXYWxSY3ZTdHJlYW1pbmcodm9pZCk7CiBleHRlcm4gYm9vbCBXYWxSY3ZSdW5uaW5n KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAppbmRleCBhNGRmM2I4 ZTBhZS4uODk1MmM4NDhkMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5o CkBAIC00MSw4ICs0MSw2IEBAIGV4dGVybiB2b2lkIFdhbFNuZEVycm9yQ2xlYW51cCh2b2lk KTsKIGV4dGVybiB2b2lkIFBoeXNpY2FsV2FrZXVwTG9naWNhbFdhbFNuZCh2b2lkKTsKIGV4 dGVybiBYTG9nUmVjUHRyIEdldFN0YW5kYnlGbHVzaFJlY1B0cihUaW1lTGluZUlEICp0bGkp OwogZXh0ZXJuIHZvaWQgV2FsU25kU2lnbmFscyh2b2lkKTsKLWV4dGVybiBTaXplIFdhbFNu ZFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFdhbFNuZFNobWVtSW5pdCh2b2lkKTsK IGV4dGVybiB2b2lkIFdhbFNuZFdha2V1cChib29sIHBoeXNpY2FsLCBib29sIGxvZ2ljYWwp OwogZXh0ZXJuIHZvaWQgV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQg V2FsU25kV2FpdFN0b3BwaW5nKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRleCBmYTY4ZTZl Y2VjZS4uZWUzY2IxZGMyMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9j ay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBAIC0zNzUsOCArMzc1LDYg QEAgdHlwZWRlZiBlbnVtCiAvKgogICogZnVuY3Rpb24gcHJvdG90eXBlcwogICovCi1leHRl cm4gdm9pZCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKTsKLWV4dGVybiBTaXplIExvY2tN YW5hZ2VyU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdExvY2tNYW5hZ2VyQWNj ZXNzKHZvaWQpOwogZXh0ZXJuIExvY2tNZXRob2QgR2V0TG9ja3NNZXRob2RUYWJsZShjb25z dCBMT0NLICpsb2NrKTsKIGV4dGVybiBMb2NrTWV0aG9kIEdldExvY2tUYWdzTWV0aG9kVGFi bGUoY29uc3QgTE9DS1RBRyAqbG9ja3RhZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVt bGlzdC5oCmluZGV4IGQ4ZTExNzU2YTYxLi41ZTA5MjU1MmM3MiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTMyLDYgKzMyLDkgQEAgUEdfU0hNRU1fU1VCU1lT VEVNKERTTVJlZ2lzdHJ5U2htZW1DYWxsYmFja3MpCiAKIC8qIHhsb2csIGNsb2csIGFuZCBi dWZmZXJzICovCiBQR19TSE1FTV9TVUJTWVNURU0oVmFyc3VwU2htZW1DYWxsYmFja3MpCitQ R19TSE1FTV9TVUJTWVNURU0oWExPR1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lT VEVNKFhMb2dQcmVmZXRjaFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFhM b2dSZWNvdmVyeVNobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lTVEVNKENMT0dTaG1l bUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShDb21taXRUc1NobWVtQ2FsbGJhY2tz KQogUEdfU0hNRU1fU1VCU1lTVEVNKFNVQlRSQU5TU2htZW1DYWxsYmFja3MpCkBAIC00MCwx MiArNDMsMTggQEAgUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZmZlck1hbmFnZXJTaG1lbUNhbGxi YWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tzKQog UEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZlRhYmxlU2htZW1DYWxsYmFja3MpCiAKKy8qIGxvY2sg bWFuYWdlciAqLworUEdfU0hNRU1fU1VCU1lTVEVNKExvY2tNYW5hZ2VyU2htZW1DYWxsYmFj a3MpCisKIC8qIHByZWRpY2F0ZSBsb2NrIG1hbmFnZXIgKi8KIFBHX1NITUVNX1NVQlNZU1RF TShQcmVkaWNhdGVMb2NrU2htZW1DYWxsYmFja3MpCiAKIC8qIHByb2Nlc3MgdGFibGUgKi8K IFBHX1NITUVNX1NVQlNZU1RFTShQcm9jR2xvYmFsU2htZW1DYWxsYmFja3MpCiBQR19TSE1F TV9TVUJTWVNURU0oUHJvY0FycmF5U2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNU RU0oQmFja2VuZFN0YXR1c1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFR3 b1BoYXNlU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQmFja2dyb3VuZFdv cmtlclNobWVtQ2FsbGJhY2tzKQogCiAvKiBzaGFyZWQtaW52YWwgbWVzc2FnaW5nICovCiBQ R19TSE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxiYWNrcykKQEAgLTUzLDkg KzYyLDI3IEBAIFBHX1NITUVNX1NVQlNZU1RFTShTaGFyZWRJbnZhbFNobWVtQ2FsbGJhY2tz KQogLyogaW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zICovCiBQR19TSE1FTV9T VUJTWVNURU0oUE1TaWduYWxTaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShQ cm9jU2lnbmFsU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQ2hlY2twb2lu dGVyU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQXV0b1ZhY3V1bVNobWVt Q2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFJlcGxpY2F0aW9uU2xvdHNTaG1lbUNh bGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShSZXBsaWNhdGlvbk9yaWdpblNobWVtQ2Fs bGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFdhbFNuZFNobWVtQ2FsbGJhY2tzKQorUEdf U0hNRU1fU1VCU1lTVEVNKFdhbFJjdlNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lT VEVNKFdhbFN1bW1hcml6ZXJTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShQ Z0FyY2hTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShBcHBseUxhdW5jaGVy U2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oU2xvdFN5bmNTaG1lbUNhbGxi YWNrcykKIAogLyogb3RoZXIgbW9kdWxlcyB0aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5 IHNwYWNlICovCitQR19TSE1FTV9TVUJTWVNURU0oQlRyZWVTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShTeW5jU2NhblNobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VC U1lTVEVNKEFzeW5jU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oU3RhdHNT aG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShXYWl0RXZlbnRDdXN0b21TaG1l bUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShJbmplY3Rpb25Qb2ludFNobWVtQ2Fs bGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFdhaXRMU05TaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShEYXRhQ2hlY2tzdW1zU2htZW1DYWxsYmFja3MpCiAKIC8qIEFJ TyBzdWJzeXN0ZW0uIFRoaXMgZGVsZWdhdGVzIHRvIHRoZSBtZXRob2Qtc3BlY2lmaWMgY2Fs bGJhY2tzICovCiBQR19TSE1FTV9TVUJTWVNURU0oQWlvU2htZW1DYWxsYmFja3MpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAppbmRleCBkZGQwNjMwNGU5Ny4uYTMzNGUwOTZl NGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaApAQCAtMjk4LDE0ICsyOTgs NiBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVy eV9zaXplOwogZXh0ZXJuIFBHRExMSU1QT1JUIFBnQmFja2VuZFN0YXR1cyAqTXlCRUVudHJ5 OwogCiAKLS8qIC0tLS0tLS0tLS0KLSAqIEZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBwb3N0bWFz dGVyCi0gKiAtLS0tLS0tLS0tCi0gKi8KLWV4dGVybiBTaXplIEJhY2tlbmRTdGF0dXNTaG1l bVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBCYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZvaWQp OwotCi0KIC8qIC0tLS0tLS0tLS0KICAqIEZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBiYWNrZW5k cwogICogLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5qZWN0 aW9uX3BvaW50LmggYi9zcmMvaW5jbHVkZS91dGlscy9pbmplY3Rpb25fcG9pbnQuaAppbmRl eCAyN2EyNTI2NTI0Zi4uZmFiZDE0NTVjM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2luamVjdGlvbl9wb2ludC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2luamVjdGlv bl9wb2ludC5oCkBAIC00Niw5ICs0Niw2IEBAIHR5cGVkZWYgdm9pZCAoKkluamVjdGlvblBv aW50Q2FsbGJhY2spIChjb25zdCBjaGFyICpuYW1lLAogCQkJCQkJCQkJCWNvbnN0IHZvaWQg KnByaXZhdGVfZGF0YSwKIAkJCQkJCQkJCQl2b2lkICphcmcpOwogCi1leHRlcm4gU2l6ZSBJ bmplY3Rpb25Qb2ludFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEluamVjdGlvblBv aW50U2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBJbmplY3Rpb25Qb2ludEF0dGFj aChjb25zdCBjaGFyICpuYW1lLAogCQkJCQkJCQkgY29uc3QgY2hhciAqbGlicmFyeSwKIAkJ CQkJCQkJIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmlu ZGV4IDM0YzI3Y2MzZGMzLi44NmVlMzQ4MjIwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQu aApAQCAtNDIsOCArNDIsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgdWludDMyICpteV93YWl0 X2V2ZW50X2luZm87CiBleHRlcm4gdWludDMyIFdhaXRFdmVudEV4dGVuc2lvbk5ldyhjb25z dCBjaGFyICp3YWl0X2V2ZW50X25hbWUpOwogZXh0ZXJuIHVpbnQzMiBXYWl0RXZlbnRJbmpl Y3Rpb25Qb2ludE5ldyhjb25zdCBjaGFyICp3YWl0X2V2ZW50X25hbWUpOwogCi1leHRlcm4g dm9pZCBXYWl0RXZlbnRDdXN0b21TaG1lbUluaXQodm9pZCk7Ci1leHRlcm4gU2l6ZSBXYWl0 RXZlbnRDdXN0b21TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gY2hhciAqKkdldFdhaXRFdmVu dEN1c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKTsKIAogLyog LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL2luamVjdGlvbl9wb2ludHMuYyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9pbmplY3Rpb25fcG9pbnRzLmMKaW5kZXggZDU5YzVhZDA1ODIuLjBmMWFmNTEzNjcz IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0 aW9uX3BvaW50cy5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9p bmplY3Rpb25fcG9pbnRzLmMKQEAgLTEwNyw5ICsxMDcsMTMgQEAgZXh0ZXJuIFBHRExMRVhQ T1JUIHZvaWQgaW5qZWN0aW9uX3dhaXQoY29uc3QgY2hhciAqbmFtZSwKIC8qIHRyYWNrIGlm IGluamVjdGlvbiBwb2ludHMgYXR0YWNoZWQgaW4gdGhpcyBwcm9jZXNzIGFyZSBsaW5rZWQg dG8gaXQgKi8KIHN0YXRpYyBib29sIGluamVjdGlvbl9wb2ludF9sb2NhbCA9IGZhbHNlOwog Ci0vKiBTaGFyZWQgbWVtb3J5IGluaXQgY2FsbGJhY2tzICovCi1zdGF0aWMgc2htZW1fcmVx dWVzdF9ob29rX3R5cGUgcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBOVUxMOwotc3RhdGlj IHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHByZXZfc2htZW1fc3RhcnR1cF9ob29rID0gTlVM TDsKK3N0YXRpYyB2b2lkIGluamVjdGlvbl9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7Citz dGF0aWMgdm9pZCBpbmplY3Rpb25fc2htZW1faW5pdCh2b2lkICphcmcpOworCitzdGF0aWMg Y29uc3QgU2htZW1DYWxsYmFja3MgaW5qZWN0aW9uX3NobWVtX2NhbGxiYWNrcyA9IHsKKwku cmVxdWVzdF9mbiA9IGluamVjdGlvbl9zaG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gaW5q ZWN0aW9uX3NobWVtX2luaXQsCit9OwogCiAvKgogICogUm91dGluZSBmb3Igc2hhcmVkIG1l bW9yeSBhcmVhIGluaXRpYWxpemF0aW9uLCB1c2VkIGFzIGEgY2FsbGJhY2sKQEAgLTEyNiw0 NCArMTMwLDIzIEBAIGluamVjdGlvbl9wb2ludF9pbml0X3N0YXRlKHZvaWQgKnB0ciwgdm9p ZCAqYXJnKQogCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmc3RhdGUtPndhaXRfcG9pbnQpOwog fQogCi0vKiBTaGFyZWQgbWVtb3J5IGluaXRpYWxpemF0aW9uIHdoZW4gbG9hZGluZyBtb2R1 bGUgKi8KIHN0YXRpYyB2b2lkCi1pbmplY3Rpb25fc2htZW1fcmVxdWVzdCh2b2lkKQoraW5q ZWN0aW9uX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemU7Ci0KLQlp ZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2htZW1fcmVxdWVzdF9ob29r KCk7Ci0KLQlzaXplID0gTUFYQUxJR04oc2l6ZW9mKEluamVjdGlvblBvaW50U2hhcmVkU3Rh dGUpKTsKLQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKHNpemUpOworCVNobWVtUmVxdWVzdFN0 cnVjdCgubmFtZSA9ICJpbmplY3Rpb25fcG9pbnRzIiwKKwkJCQkJICAgLnNpemUgPSBzaXpl b2YoSW5qZWN0aW9uUG9pbnRTaGFyZWRTdGF0ZSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAq KikgJmlual9zdGF0ZSwKKwkJKTsKIH0KIAogc3RhdGljIHZvaWQKLWluamVjdGlvbl9zaG1l bV9zdGFydHVwKHZvaWQpCitpbmplY3Rpb25fc2htZW1faW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXByZXZf c2htZW1fc3RhcnR1cF9ob29rKCk7Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBz aGFyZWQgbWVtb3J5IHN0YXRlICovCi0JTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExv Y2ssIExXX0VYQ0xVU0lWRSk7Ci0KLQlpbmpfc3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoImlu amVjdGlvbl9wb2ludHMiLAotCQkJCQkJCQlzaXplb2YoSW5qZWN0aW9uUG9pbnRTaGFyZWRT dGF0ZSksCi0JCQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJ ICogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplLiAgVGhpcyBpcyBzaGFyZWQg d2l0aCB0aGUgZHluYW1pYwotCQkgKiBpbml0aWFsaXphdGlvbiB1c2luZyBhIERTTS4KLQkJ ICovCi0JCWluamVjdGlvbl9wb2ludF9pbml0X3N0YXRlKGlual9zdGF0ZSwgTlVMTCk7Ci0J fQotCi0JTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOworCS8qCisJICogRmly c3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplLiAgVGhpcyBpcyBzaGFyZWQgd2l0aCB0 aGUgZHluYW1pYworCSAqIGluaXRpYWxpemF0aW9uIHVzaW5nIGEgRFNNLgorCSAqLworCWlu amVjdGlvbl9wb2ludF9pbml0X3N0YXRlKGlual9zdGF0ZSwgTlVMTCk7CiB9CiAKIC8qCkBA IC02MDEsOSArNTg0LDUgQEAgX1BHX2luaXQodm9pZCkKIAlpZiAoIXByb2Nlc3Nfc2hhcmVk X3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQogCQlyZXR1cm47CiAKLQkvKiBTaGFy ZWQgbWVtb3J5IGluaXRpYWxpemF0aW9uICovCi0JcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sg PSBzaG1lbV9yZXF1ZXN0X2hvb2s7Ci0Jc2htZW1fcmVxdWVzdF9ob29rID0gaW5qZWN0aW9u X3NobWVtX3JlcXVlc3Q7Ci0JcHJldl9zaG1lbV9zdGFydHVwX2hvb2sgPSBzaG1lbV9zdGFy dHVwX2hvb2s7Ci0Jc2htZW1fc3RhcnR1cF9ob29rID0gaW5qZWN0aW9uX3NobWVtX3N0YXJ0 dXA7CisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmaW5qZWN0aW9uX3NobWVtX2NhbGxiYWNr cyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlv LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLmMKaW5kZXggZDc1MzA2 ODExOTIuLjM1ZWZiYTFhNWUzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YWlvL3Rlc3RfYWlvLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fp by5jCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL2NoZWNrc3VtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jbnVtYmVyLmgiCkBAIC00NCw2ICs0Myw3IEBACiBQR19NT0RVTEVfTUFH SUM7CiAKIAorLyogSW4gc2hhcmVkIG1lbW9yeSAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5qSW9F cnJvclN0YXRlCiB7CiAJQ29uZGl0aW9uVmFyaWFibGUgY3Y7CkBAIC03NCw4ICs3NCwxNSBA QCB0eXBlZGVmIHN0cnVjdCBCbG9ja3NSZWFkU3RyZWFtRGF0YQogc3RhdGljIEluaklvRXJy b3JTdGF0ZSAqaW5qX2lvX2Vycm9yX3N0YXRlOwogCiAvKiBTaGFyZWQgbWVtb3J5IGluaXQg Y2FsbGJhY2tzICovCi1zdGF0aWMgc2htZW1fcmVxdWVzdF9ob29rX3R5cGUgcHJldl9zaG1l bV9yZXF1ZXN0X2hvb2sgPSBOVUxMOwotc3RhdGljIHNobWVtX3N0YXJ0dXBfaG9va190eXBl IHByZXZfc2htZW1fc3RhcnR1cF9ob29rID0gTlVMTDsKK3N0YXRpYyB2b2lkIHRlc3RfYWlv X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIHRlc3RfYWlvX3NobWVt X2luaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIHRlc3RfYWlvX3NobWVtX2F0dGFjaCh2 b2lkICphcmcpOworCitzdGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgaW5qX2lvX3NobWVt X2NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IHRlc3RfYWlvX3NobWVtX3JlcXVlc3Qs CisJLmluaXRfZm4gPSB0ZXN0X2Fpb19zaG1lbV9pbml0LAorCS5hdHRhY2hfZm4gPSB0ZXN0 X2Fpb19zaG1lbV9hdHRhY2gsCit9OwogCiAKIHN0YXRpYyBQZ0Fpb0hhbmRsZSAqbGFzdF9o YW5kbGU7CkBAIC04Myw3MCArOTAsNTUgQEAgc3RhdGljIFBnQWlvSGFuZGxlICpsYXN0X2hh bmRsZTsKIAogCiBzdGF0aWMgdm9pZAotdGVzdF9haW9fc2htZW1fcmVxdWVzdCh2b2lkKQor dGVzdF9haW9fc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JaWYgKHByZXZfc2htZW1f cmVxdWVzdF9ob29rKQotCQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vaygpOwotCi0JUmVxdWVz dEFkZGluU2htZW1TcGFjZShzaXplb2YoSW5qSW9FcnJvclN0YXRlKSk7CisJU2htZW1SZXF1 ZXN0U3RydWN0KC5uYW1lID0gInRlc3RfYWlvIGluamVjdGlvbiBwb2ludHMiLAorCQkJCQkg ICAuc2l6ZSA9IHNpemVvZihJbmpJb0Vycm9yU3RhdGUpLAorCQkJCQkgICAucHRyID0gKHZv aWQgKiopICZpbmpfaW9fZXJyb3Jfc3RhdGUsCisJCSk7CiB9CiAKIHN0YXRpYyB2b2lkCi10 ZXN0X2Fpb19zaG1lbV9zdGFydHVwKHZvaWQpCit0ZXN0X2Fpb19zaG1lbV9pbml0KHZvaWQg KmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCWlmIChwcmV2X3NobWVtX3N0YXJ0dXBfaG9v aykKLQkJcHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsKLQotCS8qIENyZWF0ZSBvciBhdHRh Y2ggdG8gdGhlIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLQlMV0xvY2tBY3F1aXJlKEFkZGlu U2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZFKTsKLQotCWlual9pb19lcnJvcl9zdGF0ZSA9 IFNobWVtSW5pdFN0cnVjdCgiaW5qZWN0aW9uX3BvaW50cyIsCi0JCQkJCQkJCQkJIHNpemVv ZihJbmpJb0Vycm9yU3RhdGUpLAotCQkJCQkJCQkJCSAmZm91bmQpOwotCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSAqLwotCQlpbmpf aW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfc2hvcnRfcmVhZCA9IGZhbHNlOwotCQlpbmpfaW9f ZXJyb3Jfc3RhdGUtPmVuYWJsZWRfcmVvcGVuID0gZmFsc2U7Ci0JCWlual9pb19lcnJvcl9z dGF0ZS0+ZW5hYmxlZF9jb21wbGV0aW9uX3dhaXQgPSBmYWxzZTsKKwkvKiBGaXJzdCB0aW1l IHRocm91Z2gsIGluaXRpYWxpemUgKi8KKwlpbmpfaW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRf c2hvcnRfcmVhZCA9IGZhbHNlOworCWlual9pb19lcnJvcl9zdGF0ZS0+ZW5hYmxlZF9yZW9w ZW4gPSBmYWxzZTsKKwlpbmpfaW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfY29tcGxldGlvbl93 YWl0ID0gZmFsc2U7CiAKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZpbmpfaW9fZXJyb3Jf c3RhdGUtPmN2KTsKLQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5jb21wbGV0aW9uX3dhaXRfZXZl bnQgPSBXYWl0RXZlbnRJbmplY3Rpb25Qb2ludE5ldygiY29tcGxldGlvbl93YWl0Iik7CisJ Q29uZGl0aW9uVmFyaWFibGVJbml0KCZpbmpfaW9fZXJyb3Jfc3RhdGUtPmN2KTsKKwlpbmpf aW9fZXJyb3Jfc3RhdGUtPmNvbXBsZXRpb25fd2FpdF9ldmVudCA9IFdhaXRFdmVudEluamVj dGlvblBvaW50TmV3KCJjb21wbGV0aW9uX3dhaXQiKTsKIAogI2lmZGVmIFVTRV9JTkpFQ1RJ T05fUE9JTlRTCi0JCUluamVjdGlvblBvaW50QXR0YWNoKCJhaW8tcHJvY2Vzcy1jb21wbGV0 aW9uLWJlZm9yZS1zaGFyZWQiLAotCQkJCQkJCSAidGVzdF9haW8iLAotCQkJCQkJCSAiaW5q X2lvX2NvbXBsZXRpb25faG9vayIsCi0JCQkJCQkJIE5VTEwsCi0JCQkJCQkJIDApOwotCQlJ bmplY3Rpb25Qb2ludExvYWQoImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJl ZCIpOwotCi0JCUluamVjdGlvblBvaW50QXR0YWNoKCJhaW8td29ya2VyLWFmdGVyLXJlb3Bl biIsCi0JCQkJCQkJICJ0ZXN0X2FpbyIsCi0JCQkJCQkJICJpbmpfaW9fcmVvcGVuIiwKLQkJ CQkJCQkgTlVMTCwKLQkJCQkJCQkgMCk7Ci0JCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXdv cmtlci1hZnRlci1yZW9wZW4iKTsKKwlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYWlvLXByb2Nl c3MtY29tcGxldGlvbi1iZWZvcmUtc2hhcmVkIiwKKwkJCQkJCSAidGVzdF9haW8iLAorCQkJ CQkJICJpbmpfaW9fY29tcGxldGlvbl9ob29rIiwKKwkJCQkJCSBOVUxMLAorCQkJCQkJIDAp OworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXByb2Nlc3MtY29tcGxldGlvbi1iZWZvcmUt c2hhcmVkIik7CisKKwlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYWlvLXdvcmtlci1hZnRlci1y ZW9wZW4iLAorCQkJCQkJICJ0ZXN0X2FpbyIsCisJCQkJCQkgImlual9pb19yZW9wZW4iLAor CQkJCQkJIE5VTEwsCisJCQkJCQkgMCk7CisJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8td29y a2VyLWFmdGVyLXJlb3BlbiIpOwogCiAjZW5kaWYKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJ ICogUHJlLWxvYWQgdGhlIGluamVjdGlvbiBwb2ludHMgbm93LCBzbyB3ZSBjYW4gY2FsbCB0 aGVtIGluIGEKLQkJICogY3JpdGljYWwgc2VjdGlvbi4KLQkJICovCit9CisKK3N0YXRpYyB2 b2lkCit0ZXN0X2Fpb19zaG1lbV9hdHRhY2godm9pZCAqYXJnKQoreworCS8qCisJICogUHJl LWxvYWQgdGhlIGluamVjdGlvbiBwb2ludHMgbm93LCBzbyB3ZSBjYW4gY2FsbCB0aGVtIGlu IGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLwogI2lmZGVmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCi0JCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXByb2Nlc3MtY29tcGxldGlvbi1i ZWZvcmUtc2hhcmVkIik7Ci0JCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXdvcmtlci1hZnRl ci1yZW9wZW4iKTsKLQkJZWxvZyhMT0csICJpbmplY3Rpb24gcG9pbnQgbG9hZGVkIik7CisJ SW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8tcHJvY2Vzcy1jb21wbGV0aW9uLWJlZm9yZS1zaGFy ZWQiKTsKKwlJbmplY3Rpb25Qb2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7 CisJZWxvZyhMT0csICJpbmplY3Rpb24gcG9pbnQgbG9hZGVkIik7CiAjZW5kaWYKLQl9Ci0K LQlMV0xvY2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CiB9CiAKIHZvaWQKQEAgLTE1 NSwxMCArMTQ3LDcgQEAgX1BHX2luaXQodm9pZCkKIAlpZiAoIXByb2Nlc3Nfc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQogCQlyZXR1cm47CiAKLQlwcmV2X3NobWVt X3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKLQlzaG1lbV9yZXF1ZXN0X2hv b2sgPSB0ZXN0X2Fpb19zaG1lbV9yZXF1ZXN0OwotCXByZXZfc2htZW1fc3RhcnR1cF9ob29r ID0gc2htZW1fc3RhcnR1cF9ob29rOwotCXNobWVtX3N0YXJ0dXBfaG9vayA9IHRlc3RfYWlv X3NobWVtX3N0YXJ0dXA7CisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmaW5qX2lvX3NobWVt X2NhbGxiYWNrcyk7CiB9CiAKIAotLSAKMi40Ny4zCgo= --------------hsUfGDn10Nt9SeydxgvmbEbZ--