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.94.2) (envelope-from ) id 1tpzOw-00FGuf-90 for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 00:47:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tpzOu-00AqE9-Sa for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 00:47:48 +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.94.2) (envelope-from ) id 1tpzOt-00Aq9u-Uo for pgsql-hackers@lists.postgresql.org; Thu, 06 Mar 2025 00:47:48 +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.96) (envelope-from ) id 1tpzOn-001Cby-2R for pgsql-hackers@postgresql.org; Thu, 06 Mar 2025 00:47:47 +0000 Received: from [192.168.1.112] (iptv-hkibng21-58c090-167.dhcp.inet.fi [88.192.144.167]) (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 4Z7W3b3c3bz49Pyb; Thu, 6 Mar 2025 02:47:39 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1741222061; 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=RAd69nBY9tC82L7l0tEPMChqJt35/RvPJihC2LmE7Tc=; b=GKmG0LlHJBG8+bbRcMd1xxhGYRdVdpmSUjTPsbRLqvWlmP1gVeOkDLNM87TFUgQWCcGrxf +X1JU+0zcppKiozjgS7RXhP4fwOwsZmnvEDbUa8s9EXU226fyxRs+GA/jsmNyvg2uZz0b4 YWMzmOltAR9Mslj86sNSae4K3aDyxzmKHFQOlT86ucSBqbGTdNEU5XawTt/KEew9RSzszl AxT5Yt7MBKmmHS2Q4s92SOsNr4Ft9YpKQWanoJv8bd6k5Qpr0oTSa+iNwbnnJczpz67OIE XCiKm/0JHzz/Wm2UbSNbSWd2HObkHgabTQjJlcizg1dAPrprYJA9IXtXkVmXJg== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1741222061; a=rsa-sha256; cv=none; b=HpC6DQfDkrOZwYi0ISnjjbsmt9LNWo80TQoTydX6XcetRlPGGVL3RKwHr6UxoVccrA39cm /RApqoKNI40xi9bxGxCEx5Fw2TN/YrLfVetLUA/4oPESOLW3Bjg6k365JdrFKA56wLF8aI hFsDeWiVqpaWDwEz69U+l52cD61dVw6OwCHocQo70rOs2RJGUurpu73eNOx7Rk/MUHKvuB u3rm4nJJ8TQgCRJpZicTBPeLBhnR297wYFHV7fAHMqCT8p2Bz8cEIva0veEpD65LYJ0mDB fMC+bpVPCbVFxKd1J8Z0spkyYqual1WypVfEZSPnWOukyC68xzVa5xN7G+aDWg== 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=1741222061; 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=RAd69nBY9tC82L7l0tEPMChqJt35/RvPJihC2LmE7Tc=; b=urOrWkP12ln0dfvuIGe5gp1UzpIEz7QmTvrSr/8Xfu7AQW7eMl6eOyRdKs6SH1nCMAKICi eZzBNVFL57PtwneM5r2y4Y/dyyoTkRY40syzr7O0063kqC53kNkn3X5QCI5Cy6b5cis47b wpYWevvtnzqy68AIfOyoYWbIxAhHJ2Emt1++C9uCMSzTElcBkKuHbh5Boy68v75jJAVQh2 XRcBjyYiQDWi1WKJ8JuaNW7Hq+0EPUATKRWRCEeVhqLfeMqGlE2XqXyvfF8cljTW7NoYe2 VVFz2vQD+wny98Gz/+9gHQmthIrxbwAX5+gavj60s6kFpjcBDBBMsZnW7Lxy2A== Content-Type: multipart/mixed; boundary="------------OZXx96FoefdRECznQzl2Ss4O" Message-ID: <08382e5c-a820-4aca-90ac-fab50cd4599c@iki.fi> Date: Thu, 6 Mar 2025 02:47:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals To: Andres Freund Cc: Thomas Munro , Michael Paquier , Robert Haas , Fujii Masao , pgsql-hackers References: <8a0ff52f-de8e-49d2-a3af-ea5bc12f5b97@iki.fi> <4ddab51d-e932-40c5-b6fa-18c52db0e082@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. --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here's a new patch set. It includes the previous work, and also goes the whole hog and replaces procsignals and many other signalling with interrupts. It's based on Thomas's v3-0002-Redesign-interrupts-remove-ProcSignals.patch much earlier in this thread. That's included as a separate patch in the patch set, on top of the previous ones. I like the end state, but I'm not sure if that's the most sensible way to commit these. It might make more sense to commit the procsignal->interrupt changes first, and the commit to remove latches second. Or just commit all in one giant commit. Not sure. In any case, I hope this split is easier to review at least than just squashing them all tgoether... I haven't addressed all your comments yet, and there are some TODO/FIXME comments. More details below. On 28/01/2025 19:01, Andres Freund wrote: > On 2024-12-02 16:39:28 +0200, Heikki Linnakangas wrote: >> From eff8de11fbfea4e2aadce9c1d71452b0f5a1b80b Mon Sep 17 00:00:00 2001 >> From: Heikki Linnakangas >> Date: Mon, 2 Dec 2024 15:51:54 +0200 >> Subject: [PATCH v5 1/4] Replace Latches with Interrupts > > Your email has only three attachements - I assume the fourth is something > local that didn't need to be shared? Yeah, it was a work-in-progress patch to convert config-reload requests to the interrupts, to see how it works. >> The Latch was a flag, with an inter-process signalling mechanism that >> allowed a process to wait for the Latch to be set. My original vision >> for Latches was that you could have different latches for different >> things that you need to wait for, but in practice, almost all code >> used one "process latch" that was shared for all wakeups. The only >> exception was the "recoveryWakeupLatch". I think the reason that we >> ended up just sharing the same latch for all wakeups is that it was >> cumbersome in practice to deal with multiple latches. For starters, >> there was no machinery for waiting for multiple latches at the same >> time. Secondly, changing the "ownership" of a latch needed extra >> locking or other coordination. Thirdly, each inter-process latch >> needed to be initialized at postmaster startup time. >> >> This patch embraces the reality of how Latches were used, and replaces >> the Latches with a per-process interrupt mask. You can no longer >> allocate Latches in arbitrary shared memory structs and an interrupt >> is always directed at a particular process, addressed by its >> ProcNumber. Each process has a bitmask of pending interrupts in >> PGPROC. > > That doesn't really remove the need for inter-process coordination to know > what ProcNumber corresponds to what... Right. Was there a comment that claims it does or something, or why do you point that out? >> This commit introduces two interrupt bits. INTERRUPT_GENERAL replaces >> the general-purpose per-process latch. All code that previously set a >> process's process latch now sets its INTERRUPT_GENERAL interrupt bit >> instead. > > Half-formed-at-best thought: I wonder if we should split the "interrupt > yourself in response to a signal" cases from "another process wakes you up", > even in the initial commit. They seem rather different to me. Hmm. Some interrupts are indeed clearly only sent within the process, while others are sent across processes. Not sure where that distinction would help though. Just group them together and have comments? Or what did you have in mind? There are other ways to group the interrupts. Some are harmless if they're sent to a wrong process. Others are not. Some are handled by CHECK_FOR_INTERRUTPS, others are not. >> diff --git a/src/include/storage/interrupt.h b/src/include/storage/interrupt.h >> new file mode 100644 >> index 0000000000..1da05369c3 >> --- /dev/null >> +++ b/src/include/storage/interrupt.h > > So we now have postmaster/interrupt.[ch] and storage/interrupt.h / > storage/ipc/interrupt.c. In the attached version, I renamed the existing postmaster/interrupt.[ch] to postmaster/interrupt_handlers.[ch]. I think that helps. Now that I look at the big picture again, though, I'm thinking that they should perhaps be merged, so that there would be only postmaster/interrupt.[ch]. That's how Thomas had them in the original procsignal->interrupt patches. There's not much left of the old postmaster/interrupt.[ch], and it's all related to interrupts anyway. >> + * The "standard" set of interrupts is handled by CHECK_FOR_INTERRUPTS(), and >> + * consists of tasks that are safe to perform at most times. They can be >> + * suppressed by HOLD_INTERRUPTS()/RESUME_INTERRUPTS(). >> + * >> + * >> + * The correct pattern to wait for event(s) using INTERRUPT_GENERAL is: >> + * >> + * for (;;) >> + * { >> + * ClearInterrupt(INTERRUPT_GENERAL); >> + * if (work to do) >> + * Do Stuff(); >> + * WaitInterrupt(1 << INTERRUPT_GENERAL, ...); >> + * } > > I don't particularly like that there's now dozens of places that need to do > bit-shifting. > > One reason I don't like it is that, for example, this should actually be 1U << > INTERRUPT_GENERAL, and at some later point we might need it to be a 64bit > integer due to a larger number of interrupts, which will require going to all > extensions and updating them. > > Perhaps WaitInterrupt should accept just a single interrupt type and > WaitEventSets should allow registering/reporting different interrupts to wait > for as different events? > > Or perhaps we could introduce an interrupt mask type? I changed the values of INTERRUPT_* to be bitmasks, so that you can do e.g. "INTERRUPT_GENERAL | INTERRUPT_CONFIG_RELOAD" without any bit-shifting. All the functions like ClearInterrupt, RaiseInterrupt, SendInterrupt now work with a bitmask, it doesn't have to be just a single flag anymore. >> +extern PGDLLIMPORT pg_atomic_uint32 *MyPendingInterrupts; >> + >> +/* >> + * Flags in the pending interrupts bitmask. Each value represents one bit in >> + * the bitmask. >> + */ >> +typedef enum > > Personally I prefer if we name the objects underlying typedefs, as otherwise > some tools will label them "anonymous". And, while it doesn't matter for > enums, which we can't forward declare in our version of C, it also is required > to make forward declarations work. Ok >> +/* >> + * Test an interrupt flag. >> + */ >> +static inline bool >> +InterruptIsPending(InterruptType reason) >> +{ >> + return (pg_atomic_read_u32(MyPendingInterrupts) & (1 << reason)) != 0; >> +} > > This has no memory ordering guarantees implied - is that correct? I think > that could lead to missing interrupts in some cases. I added pg_read_barrier() and pg_write_barrier() calls to these. I'm not 100% if that's really needed, or if I got them right, though. > Given functions like ClearInterrupt() are , why differ here? > > >> +/* >> + * Test an interrupt flag. >> + */ >> +static inline bool >> +InterruptsPending(uint32 mask) >> +{ >> + return (pg_atomic_read_u32(MyPendingInterrupts) & (mask)) != 0; >> +} > > It seems somewhat confusing to have two naming patterns for this and the > closely related InterruptIsPending(). > > Maybe IsInterruptPending() and AreInterruptsPending()? Or > IsInterruptPendingMask()? > > I think I like IsInterruptPendingMask() better, because we're not actually > waiting for multiple interrupts, we're waiting for one out of multiple > possible interrupts to arrive There's now just a single function, InterruptPending(mask), which works with a single bit or mask of several bits. I agree it's not a great name, I just didn't get around to think about that yet. >> @@ -4476,7 +4458,10 @@ CheckPromoteSignal(void) >> void >> WakeupRecovery(void) >> { >> - SetLatch(&XLogRecoveryCtl->recoveryWakeupLatch); >> + ProcNumber procno = ((volatile PROC_HDR *) ProcGlobal)->startupProc; >> + >> + if (procno != INVALID_PROC_NUMBER) >> + SendInterrupt(INTERRUPT_RECOVERY_CONTINUE, procno); >> } > > Not a new problem, and not really a problem for the startup process, that we > don't expect to die, but: Code like this could obviously lead to interrupts > being sent to the "former" owner of a procno. > > I think either the file header of SendInterrupt() should mention that risk and > that code has to be aware of it. Yeah, that's fair. As the patch stands, the rules are different for different interrupts. Some interrupts are OK to send to random backends; no harm done. But others, like INTERRUPT_DIE or INTERRUPT_QUERY_CANCEL, are not. I think we need a mechanism to reliably send an interrupt to the right backend, without race conditions if the backend exits concurrently. Holding ProcArrayLock works, but that's a pretty big hammer. > Should we explicitly define the interrupt state a process has at startup? Makes sense. (Not done yet, it's a TODO) >> +/* >> + * Set an interrupt flag in this backend. >> + */ >> +void >> +RaiseInterrupt(InterruptType reason) > >> +{ >> + uint32 old_pending; >> + >> + old_pending = pg_atomic_fetch_or_u32(MyPendingInterrupts, 1 << reason); >> + >> + /* >> + * If the process is currently blocked waiting for an interrupt to arrive, >> + * and the interrupt wasn't already pending, wake it up. >> + */ >> + if ((old_pending & (1 << reason | 1 << SLEEPING_ON_INTERRUPTS)) == 1 << SLEEPING_ON_INTERRUPTS) > > This is a somewhat hard to read line. Maybe it's worth breaking it out into > two conditions? Or use a local variable? It's a little better now that the bitshifts are gone, but still a fair point.. > I was chatting with Heikki about this patch and he mentioned that he recalls a > patch that did some work to unify the signal replacement, procsignal.h and > CHECK_FOR_INTERRUPTS(). Thomas, that was probably from you? Do you have a > pointer, if so? > > It does seem like we're going to have to do some unification here. We have too > many different partially overlapping, partially collaborating systems here. > > > - procsignals - kinda like the interrupts here, but not quite. Probably can't > just merge them 1:1 into the proposed mechanism, or we'll run out of bits > rather soon. I don't know if we want the relevant multiplexing to be built > into interrupt.h or not. > > Or we ought to redesign this mechanism to deal with more than 32 types of > interrupt. In this patch, 29 out of 32 bits are used. Yeah, that doesn't leave much headroom. Some ideas for addressing that: 1. Use 64-bit atomics. Are there any architectures left where that would not be acceptable? 2. Use 64-bit integers, but for the actual signaling part, split it into two 32-bit atomic words. Waiting on the interrupts would need to check both, but that seems fine from a performance point of view. 3. If we need > 64 bits, things get a bit awkward as you can no longer have a single integer to represent a bitmask that includes all the bits. That makes the function signatures more ugly, you need to have two arguments like interruptMask1 and interruptMask2 or somehting. But should basically work otherwise. 4. Multiplex the interrupts so that we need fewer of them. I think all the recovery conflict interrupts could be merged into one, for example, if we had a separate bitmask somewhere else in PGPROC to indicate which ones are set. The limitation would be that if interrupts are multiplexed together into one bit, you could only wait for all or none of them. I'd like to not have to treat these bits as a scarce resource. It'd be nice to use even more distinct interrupts than what's in the patch now for different things, just for clarity. And I'd like to make it possible for extensions to allocate interrupt bits too. (Not included in these patches yet) I'm leaning towards 1. or 2. at the moment. 64 bits should be enough for a long time. > - pmsignal.h - basically the same thing as here, except for signals sent *too* > postmaster. > > It might or might not be required to keep this separate. There are different > "reliability" requirements... I think pmsignal.c could be rewritten to use interrupts fairly easily. I didn't do that yet though. For that, postmaster needs to have a PGPROC slot, or at least a special reserved ProcNumber, but it doesn't seem hard. > - CHECK_FOR_INTERRUPTS(), which uses the mechanism introduced here to react to > signals while blocked, using RaiseInterrupt() (whereas it did SetLatch() > before). > > A fairly simple improvement would be to use different InterruptType for > e.g. termination and query cancellation. That's done now. > But even with this infrastructure in place, we can't *quite* get away from > signal handlers, because we need some way to set at the very least > InterruptPending (and perhaps ProcDiePending, QueryCancelPending etc, > although those could be replaced with InterruptIsPending()). The > infrastructure introduced with these patches provides neither a way to set > those variables in response to delivery of an interrupt, nor can we > currently set them from another backend, as they are global variables. > > We could of course do InterruptsPending(~0) in in > INTERRUPTS_PENDING_CONDITION(), but it would require analyzing the increased > indirection overhead as well as the "timeliness" guarantees. > > Today we don't need a memory barrier around checking InterruptPending, > because delivery of a signal delivery (via SetLatch()) ensures that. But I > think we would need one if we were to not send signals for > cancellation/terminations etc. I.e. right now the overhead of delivery is > bigger, but checking if there pending signals is cheaper. That's changed heavily in this latest patch. All the *Pending global variables are gone, they are replaced with InterruptPending() calls. > Another aspect of this is that we're cramming more and more code into > ProcessInterrupts(), in a long weave of ifs. I wonder if somewhere along > ipc/interrupt.h there should be a facility to register callbacks to react to > delivered interrupts. It'd need to be a bit more than just a mapping of > InterruptType to callback, because of things like InterruptHoldoffCount, > CritSectionCount, QueryCancelHoldoffCount. +1 for the general idea, but I didn't pursue it yet. There are some changes to CHECK_FOR_INTERRUPTS() and the holdoff counts here already though. The pattern for waiting for something now looks like this: for (;;) { CHECK_FOR_INTERRUPTS(); /* * The baker will wake us up with INTERRUPT_GENERAL when the cake * is ready. */ ClearInterrupt(INTERRUPT_GENERAL); if (IsTheCakeBakedYet()) break; WaitInterrupt(CheckForInterruptsMask | INTERRUPT_GENERAL, ...); } CheckForInterruptsMask includes INTERRUPT_BARRIER, INTERRUPT_DIE, INTERRUPT_QUERY_CANCEL, and all the other interrupts that are handled by CHECK_FOR_INTERRUPTS(). However, when you call HOLD_INTERRUPTS(), INTERRUPT_DIE is removed from CheckForInterruptsMask. (I'm not wedded to the name CheckForInterruptsMask. Thomas called them "regular interrupts" in his patch. I think I used the term "standard interrupts" somewhere.) > Other questions: > > - Can ipc/interrupts.c style interrupts be sent by postmaster? I think they > ought to before long. Yes. The postmaster does that now to notify backends when background workers are launched or terminated. -- Heikki Linnakangas Neon (https://neon.tech) --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/x-patch; charset=UTF-8; name="v6-0001-Rename-postmaster-interrupt.c-to-interrupt_handle.patch" Content-Disposition: attachment; filename*0="v6-0001-Rename-postmaster-interrupt.c-to-interrupt_handle.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MWZjMzEyNzYyMWY2ZGE2MTMxMjM2NDIzZDJjZTQ0Mzg1Y2ZiZTcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMSBNYXIgMjAyNSAwMDoxODowMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjYgMS81XSBSZW5hbWUgcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyB0 byBpbnRlcnJ1cHRfaGFuZGxlcnMuYwoKLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3By ZXdhcm0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vcG9zdG1hc3Rlci97aW50 ZXJydXB0LmMgPT4gaW50ZXJydXB0X2hhbmRsZXJzLmN9ICAgfCAgOCArKysrLS0tLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxz dW1tYXJpemVyLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsd3JpdGVyLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgfCAgMiAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMu YyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vcG9zdG1hc3Rlci97aW50ZXJydXB0 LmggPT4gaW50ZXJydXB0X2hhbmRsZXJzLmh9ICAgfCAxMCArKysrKy0tLS0tCiBzcmMvdGVz dC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jICAgICAgICAgICAgICAgfCAgMiAr LQogMjMgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0p CiByZW5hbWUgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci97aW50ZXJydXB0LmMgPT4gaW50ZXJy dXB0X2hhbmRsZXJzLmN9ICg5NCUpCiByZW5hbWUgc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci97 aW50ZXJydXB0LmggPT4gaW50ZXJydXB0X2hhbmRsZXJzLmh9ICg4MiUpCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdh cm0vYXV0b3ByZXdhcm0uYwppbmRleCBiNDU3NTViMzM0Ny4uMWQ3ZmFjZjFmMzYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIv cGdfcHJld2FybS9hdXRvcHJld2FybS5jCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFz dGVyL2Jnd29ya2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvYnVmX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5k ZXggZTgxYzlhOGFiYTMuLmUyNWFiOTdiYzcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpA QCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXJfaW50 ZXJuYWxzLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKaW5kZXggMGY0NDM1ZDJk OTcuLmVlNDNlNDQ2YzY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKQEAgLTE5LDcg KzE5LDcgQEAgT0JKUyA9IFwKIAliZ3dyaXRlci5vIFwKIAljaGVja3BvaW50ZXIubyBcCiAJ Zm9ya19wcm9jZXNzLm8gXAotCWludGVycnVwdC5vIFwKKwlpbnRlcnJ1cHRfaGFuZGxlcnMu byBcCiAJbGF1bmNoX2JhY2tlbmQubyBcCiAJcGdhcmNoLm8gXAogCXBtY2hpbGQubyBcCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDgwMDgxNWRmYmNjLi5jZGJk YzBmM2I4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTg2LDcg Kzg2LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKLSNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0 X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IGE2ODhjYzVkMmExLi40ZDIxNjVmYTk5 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtMzcsNyArMzcsNyBAQAog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5o IgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRs ZXJzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJs ZS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIu YyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggMGUyMjhk MTQzYTAuLmUzNzU5YTdhODBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2lu dGVyLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3Jp dGVyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1 cHRfaGFuZGxlcnMuYwpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCnJlbmFtZSB0byBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5jCmluZGV4IDBhZTliZjkwNmVjLi4xNGZkNzRi NDZkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5jCkBAIC0x LDEzICsxLDEzIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBpbnRlcnJ1cHQu YwotICoJICBJbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMuCisgKiBpbnRlcnJ1cHRfaGFu ZGxlcnMuYworICoJICBDb21tb24gc2lnbmFsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91 dGluZXMuCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoK ICAqIElERU5USUZJQ0FUSU9OCi0gKgkgIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJy dXB0LmMKKyAqCSAgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMu YwogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBAIC0xNyw3ICsxNyw3IEBACiAj aW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZAppbmRleCAwMDA4NjAzY2ZlZS4uOTRlOGE4YTll M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZApAQCAtNyw3ICs3LDcgQEAg YmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnYmd3cml0ZXIuYycsCiAgICdjaGVja3Bv aW50ZXIuYycsCiAgICdmb3JrX3Byb2Nlc3MuYycsCi0gICdpbnRlcnJ1cHQuYycsCisgICdp bnRlcnJ1cHRfaGFuZGxlcnMuYycsCiAgICdsYXVuY2hfYmFja2VuZC5jJywKICAgJ3BnYXJj aC5jJywKICAgJ3BtY2hpbGQuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCBk YmU0ZTFkNDI2Yi4uMWNkMmFlODdlMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpA QCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCi0jaW5j bHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dl ci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwppbmRleCA1MGMyZWRl YzFmNi4uMmE2MWE4Yjc2NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv c3lzbG9nZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwpA QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBndGlt ZS5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRs ZXJzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCBjY2JhMGY4NGU2ZS4u MzE4NDk2MTQ2MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3Vt bWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5j CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCi0jaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVy cnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9mZC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0 ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggMDM4MDYw MWJjYmIuLmRlMTZhYzRhOTU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMK QEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGQyNTA4NWQzNTE1Li40ZDJkM2Zk MmM1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogI2luY2x1ZGUg ImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggYTNjN2FkYmYxYTgu LjQzNGJiMWY2ZjYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgot I2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rl ci9pbnRlcnJ1cHRfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs bGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCAyYzBhNzQzOWJlNC4uNDRjYzVjNmZjMzcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTU1 LDcgKzU1LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVk ZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0 X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc25h cGJ1aWxkLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCAzMWFiNjllYTEzYS4uNjdkMDY0N2FhMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2NvbmZsaWN0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggNzE5ZTUzMWViOTAuLmNhMjcxMzMwNTk0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVk ZSAiY29tbW9uL3N0cmluZy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggODMxMjljYjkyYWYuLjczOTJlODk3NjdkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTY0LDcgKzY0LDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA0NDZkMTBjMWE3ZC4uZWNkOTZhZDdk YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC02OCw3ICs2OCw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvcmVwbG5vZGVz LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCmluZGV4IDk0N2ZmYjQwNDIxLi42MGFiOGNkNDBjNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwpAQCAtNTMsNyArNTMsNyBAQAogI2luY2x1ZGUgInBnX2dldG9wdC5oIgogI2luY2x1 ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAicG9zdG1h c3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdF9oYW5k bGVycy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQv bWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCBk YzM1MjE0NTdjNy4uMzRiODQ1MGI1M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0 LmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKLSNpbmNs dWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50 ZXJydXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5o IGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuaApzaW1pbGFy aXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVy cnVwdC5oCnJlbmFtZSB0byBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdF9oYW5k bGVycy5oCmluZGV4IDNiZjQ5MzIwODQ2Li5iM2E4YzM4MzUzZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0 bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oCkBAIC0xLDcgKzEsNyBAQAogLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgotICogaW50ZXJydXB0LmgKLSAqCSAgSW50ZXJydXB0IGhhbmRs aW5nIHJvdXRpbmVzLgorICogaW50ZXJydXB0X2hhbmRsZXJzLmgKKyAqCSAgQ29tbW9uIHNp Z25hbCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLgogICoKICAqIFJlc3BvbnNl cyB0byBpbnRlcnJ1cHRzIGFyZSBmYWlybHkgdmFyaWVkIGFuZCBtYW55IHR5cGVzIG9mIGJh Y2tlbmRzCiAgKiBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB3ZSBwcm92 aWRlIGEgZmV3IGdlbmVyaWMgdGhpbmdzCkBAIC0xMSwxMyArMTEsMTMgQEAKICAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCiAgKgogICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9pbnRlcnJ1cHQuaAorICoJICBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVy cnVwdF9oYW5kbGVycy5oCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotI2lm bmRlZiBJTlRFUlJVUFRfSAotI2RlZmluZSBJTlRFUlJVUFRfSAorI2lmbmRlZiBJTlRFUlJV UFRfSEFORExFUlNfSAorI2RlZmluZSBJTlRFUlJVUFRfSEFORExFUlNfSAogCiAjaW5jbHVk ZSA8c2lnbmFsLmg+CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3Nw aS93b3JrZXJfc3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3Nw aS5jCmluZGV4IDViODdkNGY3MDM4Li4xZTRlODEzMzE0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYworKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCkBAIC0yNSw3ICsyNSw3IEBACiAvKiBUaGVz ZSBhcmUgYWx3YXlzIG5lY2Vzc2FyeSBmb3IgYSBiZ3dvcmtlciAqLwogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKLSNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogCiAvKiB0aGVz ZSBoZWFkZXJzIGFyZSB1c2VkIGJ5IHRoaXMgcGFydGljdWxhciB3b3JrZXIncyBjb2RlICov Ci0tIAoyLjM5LjUKCg== --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/x-patch; charset=UTF-8; name="v6-0002-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v6-0002-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSA2OGI1OThjODRlMDk0ZDIyM2VmN2ZiNjE1NThhNGUwMjlhY2JiOTNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1MTo1NCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjYgMi81XSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1cHRz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGUgTGF0Y2ggd2FzIGEg ZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxpbmcgbWVjaGFuaXNtIHRoYXQK YWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhlIExhdGNoIHRvIGJlIHNldC4gTXkg b3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0aGF0IHlvdSBjb3VsZCBoYXZlIGRp ZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhpbmdzIHRoYXQgeW91IG5lZWQgdG8g d2FpdCBmb3IsIGJ1dCBpbiBwcmFjdGljZSwgYWxtb3N0IGFsbCBjb2RlCnVzZWQgb25lICJw cm9jZXNzIGxhdGNoIiB0aGF0IHdhcyBzaGFyZWQgZm9yIGFsbCB3YWtldXBzLiBUaGUgb25s eQpleGNlcHRpb24gd2FzIHRoZSAicmVjb3ZlcnlXYWtldXBMYXRjaCIuIEkgdGhpbmsgdGhl IHJlYXNvbiB0aGF0IHdlCmVuZGVkIHVwIGp1c3Qgc2hhcmluZyB0aGUgc2FtZSBsYXRjaCBm b3IgYWxsIHdha2V1cHMgaXMgdGhhdCBpdCB3YXMKY3VtYmVyc29tZSBpbiBwcmFjdGljZSB0 byBkZWFsIHdpdGggbXVsdGlwbGUgbGF0Y2hlcy4gRm9yIHN0YXJ0ZXJzLAp0aGVyZSB3YXMg bm8gbWFjaGluZXJ5IGZvciB3YWl0aW5nIGZvciBtdWx0aXBsZSBsYXRjaGVzIGF0IHRoZSBz YW1lCnRpbWUuIFNlY29uZGx5LCBjaGFuZ2luZyB0aGUgIm93bmVyc2hpcCIgb2YgYSBsYXRj aCBuZWVkZWQgZXh0cmEKbG9ja2luZyBvciBvdGhlciBjb29yZGluYXRpb24uIFRoaXJkbHks IGVhY2ggaW50ZXItcHJvY2VzcyBsYXRjaApuZWVkZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYXQg cG9zdG1hc3RlciBzdGFydHVwIHRpbWUuCgpUaGlzIHBhdGNoIGVtYnJhY2VzIHRoZSByZWFs aXR5IG9mIGhvdyBMYXRjaGVzIHdlcmUgdXNlZCwgYW5kIHJlcGxhY2VzCnRoZSBMYXRjaGVz IHdpdGggYSBwZXItcHJvY2VzcyBpbnRlcnJ1cHQgbWFzay4gWW91IGNhbiBubyBsb25nZXIK YWxsb2NhdGUgTGF0Y2hlcyBpbiBhcmJpdHJhcnkgc2hhcmVkIG1lbW9yeSBzdHJ1Y3RzIGFu ZCBhbiBpbnRlcnJ1cHQKaXMgYWx3YXlzIGRpcmVjdGVkIGF0IGEgcGFydGljdWxhciBwcm9j ZXNzLCBhZGRyZXNzZWQgYnkgaXRzClByb2NOdW1iZXIuICBFYWNoIHByb2Nlc3MgaGFzIGEg Yml0bWFzayBvZiBwZW5kaW5nIGludGVycnVwdHMgaW4KUEdQUk9DLgoKVGhpcyBjb21taXQg aW50cm9kdWNlcyB0d28gaW50ZXJydXB0IGJpdHMuIElOVEVSUlVQVF9HRU5FUkFMIHJlcGxh Y2VzCnRoZSBnZW5lcmFsLXB1cnBvc2UgcGVyLXByb2Nlc3MgbGF0Y2guIEFsbCBjb2RlIHRo YXQgcHJldmlvdXNseSBzZXQgYQpwcm9jZXNzJ3MgcHJvY2VzcyBsYXRjaCBub3cgc2V0cyBp dHMgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0IGJpdAppbnN0ZWFkLgoKVGhlIHNlY29u ZCBpbnRlcnJ1cHQgYml0LCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsIHJlcGxhY2Vz CnJlY292ZXJ5V2FrZXVwTGF0Y2guIFdpdGggdGhpcyBuZXcgaW50ZXJmYWNlLCB0aGUgY29k ZSBjYW4gZWFzaWx5IHdhaXQKZm9yIHRoZSByZWd1bGFyIGludGVycnVwdHMgKElOVEVSUlVQ VF9HRU5FUkFMKSBhdCB0aGUgc2FtZSB0aW1lIGFzCklOVEVSUlVQVF9SRUNPVkVSWV9DT05U SU5VRS4gUHJldmlvdXNseSwgdGhlIGNvZGUgdGhhdCB3YWl0ZWQgb24KcmVjb3ZlcnlXYWtl dXBMYXRjaCBoYWQgdG8gcmVzb3J0IHRvIHRpbWVvdXRzIHRvIHJlYWN0IHRvIG90aGVyCnNp Z25hbHMsIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byB3YWl0IGZvciB0d28gbGF0 Y2hlcyBhdCB0aGUKc2FtZSB0aW1lLiBQcmV2aW91cyBhdHRlbXB0IGF0IHVuaWZ5aW5nIHRo b3NlIHdha2V1cHMgd2FzIGluIGNvbW1pdAphYzIyOTI5YTI2LCBidXQgaXQgd2FzIHJldmVy dGVkIGluIGNvbW1pdCAwMGY2OTBhMjM5IGJlY2F1c2UgaXQgY2F1c2VkCmEgbG90IG9mIHNw dXJpb3VzIHdha2V1cHMgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzIHdhcyB3YWl0aW5nIGZv cgpyZWNvdmVyeSBjb25mbGljdHMuIFRoZSBuZXcgbWFjaGluZXJ5IGF2b2lkcyB0aGF0IHBy b2JsZW0gYnkgbWFraW5nIGl0CmVhc3kgdG8gd2FpdCBmb3IgdHdvIGludGVycnVwdHMgYXQg dGhlIHNhbWUgdGltZS4KCk1vcmUgaW50ZXJydXB0IGJpdHMgYXJlIHBsYW5uZWQgZm9yIGZv bGxvd3VwIHBhdGNoZXMsIHRvIHJlcGxhY2UgdGhlCnZhcmlvdXMgUHJvY1NpZ25hbCBiaXRz LCBhcyB3ZWxsIGFzIENvbmZpZ1JlbG9hZFBlbmRpbmcgYW5kClNodXRkb3duUmVxdWVzdFBl bmRpbmcuCgpSZXZpZXdlZC1ieTogVGhvbWFzIE11bnJvLCBBbmRyZXMgRnJldW5kLCBSb2Jl cnQgSGFhcywgw4FsdmFybyBIZXJyZXJhCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvNDc2NjcyZTctNjJmMS00Y2FiLWE4MjItZjNhOGU5NDlk ZDNmQGlraS5maQotLS0KIGNvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jICAgICAg ICAgICAgICB8ICAyMCArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAg ICAgICAgICAgIHwgIDIyICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbCAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L1JFQURNRSAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcGFyYWxsZWwuYyAgICAgICAgIHwgIDMwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dmdW5jcy5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgIDkxICsrLS0KIHNyYy9iYWNrZW5kL2Jh Y2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMv YmFja2VuZC9saWJwcS9hdXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNy Yy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYyAgICAgICAgICB8ICAxNSArLQog c3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyAgICAgICAgIHwgICA3ICst CiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgMjkg Ky0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jICAgICAgICAgICAgICAgICAgICB8ICAy OSArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwg ICA4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAg fCAgMjIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAg ICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAg ICAgICB8ICAzNyArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAg ICAgICAgIHwgIDQ4ICstLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFu ZGxlcnMuYyAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jICAg ICAgICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jICAgICAgICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVw LmMgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xv Z2dlci5jICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs c3VtbWFyaXplci5jICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWx3cml0ZXIuYyAgICAgICAgICAgIHwgIDIzICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgMzIgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8ICAzOSArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwgIDU0ICstLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgMzUgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8ICAyNSArLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAgICAgfCAgNDcgKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICAyNyArLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgIDEwICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jICAgICAgICAgfCAgMjcg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMgICAgICAgICAgIHwg MjY5ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyAgICAg ICAgICAgICAgIHwgMzg3IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobV9tcS5jICAgICAgICAgICAgICB8IDEwMiArKy0tLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyAgICAgICAgIHwgIDExICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYyAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAyMiArLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMgICAgICAgIHwgMzg0ICsrKysr KysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3Zhcmlh YmxlLmMgfCAgMzQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAg ICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAg ICAgICAgICAgIHwgMTI3ICsrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YyAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMg ICAgICAgICAgICAgICAgICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNj LmMgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Rp bWVzdGFtcC5jICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0 L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDkgLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5p dC9taXNjaW5pdC5jICAgICAgICAgICAgIHwgIDU2ICstLQogc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9wb3N0aW5pdC5jICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3RpbWVvdXQuYyAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvbWN4dC5jICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv YWNjZXNzL3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaCAgICAgICB8ICA0NSArLQogc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEuaCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5j bHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgLQogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCAgICAgICAgICAgICAgIHwgMTcxICsrKysrKysr CiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggICAgICAgICAgICAgICAgICAgfCAxNDAg LS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgIDE2ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oICAgICAgICAg ICAgfCAgMzQgKy0KIHNyYy9wb3J0L3Bnc2xlZXAuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgOCArLQogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jICAg ICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMg ICAgICAgICAgfCAgIDkgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5j ICAgICAgICAgICB8ICAxMyArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3Jr ZXIuYyAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29y a2VyX3NwaS5jICAgICAgfCAgMjAgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICAgICAgICAgICB8ICAgMiArLQogODMgZmlsZXMgY2hhbmdlZCwgMTQ0OCBpbnNl cnRpb25zKCspLCAxNTE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvaW5j bHVkZS9zdG9yYWdlL2xhdGNoLmgKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3ByZXdhcm0v YXV0b3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCmluZGV4 IDFkN2ZhY2YxZjM2Li42OTZjYjQ1ODQ5MyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wcmV3 YXJtL2F1dG9wcmV3YXJtLmMKKysrIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJt LmMKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xv Y2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL3NtZ3IuaCIKQEAgLTIxNiwxMCArMjE2LDEwIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0 dW0gbWFpbl9hcmcpCiAJCWlmIChhdXRvcHJld2FybV9pbnRlcnZhbCA8PSAwKQogCQl7CiAJ CQkvKiBXZSdyZSBvbmx5IGR1bXBpbmcgYXQgc2h1dGRvd24sIHNvIGp1c3Qgd2FpdCBmb3Jl dmVyLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRD SF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAtMUwsCi0JCQkJCQkJIFBH X1dBSVRfRVhURU5TSU9OKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJS VVBUX0dFTkVSQUwsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RF QVRILAorCQkJCQkJCQkgLTFMLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9 CiAJCWVsc2UKIAkJewpAQCAtMjQzLDE0ICsyNDMsMTQgQEAgYXV0b3ByZXdhcm1fbWFpbihE YXR1bSBtYWluX2FyZykKIAkJCX0KIAogCQkJLyogU2xlZXAgdW50aWwgdGhlIG5leHQgZHVt cCB0aW1lLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkg ZGVsYXlfaW5fbXMsCi0JCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKKwkJCSh2b2lkKSBX YWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSBXTF9JTlRF UlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIGRl bGF5X2luX21zLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9CiAKIAkJLyog UmVzZXQgdGhlIGxhdGNoLCBsb29wLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJfQogCiAJLyoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA4ZWY5NzAyYzA1Yy4uNGM0ZjllYTg0YWYgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0 Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1 ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtODAy LDggKzgwMiw4IEBAIGRvX3NxbF9jb21tYW5kX2VuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKnNxbCwgYm9vbCBjb25zdW1lX2lucHV0KQogCS8qCiAJICogSWYgcmVxdWVzdGVkLCBj b25zdW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldC4gKE5v dGUKIAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhpcyBhbGxvd3MgcGdm ZHdfZ2V0X3Jlc3VsdCB0byBjYWxsCi0JICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5n IHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwgd2hpY2gKLQkgKiB3b3VsZCBi ZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQor CSAqIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdElu dGVycnVwdE9yU29ja2V0LAorCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRv IHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVf aW5wdXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQogCQlwZ2Zkd19yZXBvcnRfZXJyb3Io RVJST1IsIE5VTEwsIGNvbm4sIGZhbHNlLCBzcWwpOwpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAg cGdmZHdfY2FuY2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRp bWUsCiAJLyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBh dmFpbGFibGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEg aXMgYXZhaWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQgdG8K LQkgKiBjYWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2Yg V2FpdExhdGNoT3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNp bmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKIAkgKiB3aGljaCB3 b3VsZCBiZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5w dXQuKQogCSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChjb25u KSkKQEAgLTE1NDEsNyArMTU0MSw3IEBAIHBnZmR3X2V4ZWNfY2xlYW51cF9xdWVyeV9lbmQo UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkvKgogCSAqIElmIHJlcXVlc3Rl ZCwgY29uc3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQu IChOb3RlCiAJICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dz IHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0 aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBj YWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdElu dGVycnVwdE9yU29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRv IHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVf aW5wdXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTY1NCwxMiArMTY1NCwxMiBA QCBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBl bmR0aW1lLAogCQkJCQlwZ2Zkd193ZV9jbGVhbnVwX3Jlc3VsdCA9IFdhaXRFdmVudEV4dGVu c2lvbk5ldygiUG9zdGdyZXNGZHdDbGVhbnVwUmVzdWx0Iik7CiAKIAkJCQkvKiBTbGVlcCB1 bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCQkJCXdjID0gV2FpdExhdGNoT3JT b2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1NPQ0tFVF9S RUFEQUJMRSB8Ci0JCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkJICAgY3VyX3RpbWVv dXQsIHBnZmR3X3dlX2NsZWFudXBfcmVzdWx0KTsKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkJCXdjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVS QUwsCisJCQkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwK KwkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdm ZHdfd2VfY2xlYW51cF9yZXN1bHQpOworCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggMTEzMWE4YmY3N2UuLjMxY2Q5MmY5ZTM2IDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMzksNyArMzksNyBAQAog I2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRy ZWUuaCIKICNpbmNsdWRlICJwb3N0Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xh dGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCkBAIC03MzU1LDcgKzczNTUsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3lu Y0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0Fy ZXEgPT0gYXJlcSk7CiAKIAlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFE QUJMRSwgUFFzb2NrZXQoZnNzdGF0ZS0+Y29ubiksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJ CQkJCSAgMCwgYXJlcSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3 b3JrZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IDJjMzkzMzg1 YTkxLi4zMTcxMDU0ZTU1ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTIyNyw3ICsyMjcsNyBA QCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VyCiAgICByZWluaXRpYWxpemVzIHRo ZSBjbHVzdGVyIGR1ZSB0byBhIGJhY2tlbmQgZmFpbHVyZS4gIEJhY2tlbmRzIHdoaWNoIG5l ZWQKICAgIHRvIHN1c3BlbmQgZXhlY3V0aW9uIG9ubHkgdGVtcG9yYXJpbHkgc2hvdWxkIHVz ZSBhbiBpbnRlcnJ1cHRpYmxlIHNsZWVwCiAgICByYXRoZXIgdGhhbiBleGl0aW5nOyB0aGlz IGNhbiBiZSBhY2hpZXZlZCBieSBjYWxsaW5nCi0gICA8ZnVuY3Rpb24+V2FpdExhdGNoKCk8 L2Z1bmN0aW9uPi4gTWFrZSBzdXJlIHRoZQorICAgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHQo KTwvZnVuY3Rpb24+LiBNYWtlIHN1cmUgdGhlCiAgICA8bGl0ZXJhbD5XTF9QT1NUTUFTVEVS X0RFQVRIPC9saXRlcmFsPiBmbGFnIGlzIHNldCB3aGVuIGNhbGxpbmcgdGhhdCBmdW5jdGlv biwgYW5kCiAgICB2ZXJpZnkgdGhlIHJldHVybiBjb2RlIGZvciBhIHByb21wdCBleGl0IGlu IHRoZSBlbWVyZ2VuY3kgY2FzZSB0aGF0CiAgICA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFu ZD4gaXRzZWxmIGhhcyB0ZXJtaW5hdGVkLgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Nv dXJjZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwKaW5kZXggZmE2OGQ0ZDAy NGEuLmZjNjQyZjVmNzEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwKQEAgLTk4OSwxOSArOTg5LDE5IEBA IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgICAgIGNh bGwgYXN5bmMtc2lnbmFsIHNhZmUgZnVuY3Rpb25zIChhcyBkZWZpbmVkIGluIFBPU0lYKSBh bmQgYWNjZXNzCiAgICAgIHZhcmlhYmxlcyBvZiB0eXBlIDxsaXRlcmFsPnZvbGF0aWxlIHNp Z19hdG9taWNfdDwvbGl0ZXJhbD4uIEEgZmV3CiAgICAgIGZ1bmN0aW9ucyBpbiA8Y29tbWFu ZD5wb3N0Z3JlczwvY29tbWFuZD4gYXJlIGFsc28gZGVlbWVkIHNpZ25hbCBzYWZlLCBpbXBv cnRhbnRseQotICAgICA8ZnVuY3Rpb24+U2V0TGF0Y2goKTwvZnVuY3Rpb24+LgorICAgICA8 ZnVuY3Rpb24+UmFpc2VJbnRlcnJ1cHQoKTwvZnVuY3Rpb24+LgogICAgIDwvcGFyYT4KICAg ICA8cGFyYT4KICAgICAgSW4gbW9zdCBjYXNlcyBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGRv IG5vdGhpbmcgbW9yZSB0aGFuIG5vdGUKICAgICAgdGhhdCBhIHNpZ25hbCBoYXMgYXJyaXZl ZCwgYW5kIHdha2UgdXAgY29kZSBydW5uaW5nIG91dHNpZGUgb2YKLSAgICAgdGhlIGhhbmRs ZXIgdXNpbmcgYSBsYXRjaC4gQW4gZXhhbXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUK KyAgICAgdGhlIGhhbmRsZXIgdXNpbmcgUmFpc2VJbnRlcnJ1cHQoKS4gQW4gZXhhbXBsZSBv ZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUKICAgICAgZm9sbG93aW5nOgogPHByb2dyYW1saXN0 aW5nPgogc3RhdGljIHZvaWQKIGhhbmRsZV9zaWdodXAoU0lHTkFMX0FSR1MpCiB7CiAgICAg Z290X1NJR0hVUCA9IHRydWU7Ci0gICAgU2V0TGF0Y2goTXlMYXRjaCk7CisgICAgUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogPC9wcm9ncmFtbGlzdGluZz4KICAg ICA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggM2I5 MWQwMjYwNWEuLmY4ZGYxODY2MGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xNTIsNiArMTUyLDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92 YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvZnJlZXNwYWNlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0zMjQyLDExICszMjQzLDExIEBA IGxhenlfdHJ1bmNhdGVfaGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCQkJcmV0dXJuOwog CQkJfQogCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENI X1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBWQUNV VU1fVFJVTkNBVEVfTE9DS19XQUlUX0lOVEVSVkFMLAotCQkJCQkJCSBXQUlUX0VWRU5UX1ZB Q1VVTV9UUlVOQ0FURSk7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgVkFD VVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRFUlZBTCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRf VkFDVVVNX1RSVU5DQVRFKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9SRUFETUUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUKaW5kZXggMjMx MTA2MjcwZmQuLjdjMjliMjNiMDFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1F CkBAIC03OTQsNyArNzk0LDcgQEAgY29tbWl0IHRvIG1pbmltaXplIHRoZSB3aW5kb3cgaW4g d2hpY2ggdGhlIGZpbGVzeXN0ZW0gY2hhbmdlIGhhcyBiZWVuIG1hZGUKIGJ1dCB0aGUgdHJh bnNhY3Rpb24gaXNuJ3QgZ3VhcmFudGVlZCBjb21taXR0ZWQuCiAKIFRoZSB3YWx3cml0ZXIg cmVndWxhcmx5IHdha2VzIHVwICh2aWEgd2FsX3dyaXRlcl9kZWxheSkgb3IgaXMgd29rZW4g dXAKLSh2aWEgaXRzIGxhdGNoLCB3aGljaCBpcyBzZXQgYnkgYmFja2VuZHMgY29tbWl0dGlu ZyBhc3luY2hyb25vdXNseSkgYW5kCisodmlhIGFuIGludGVycnVwdCwgd2hpY2ggaXMgc2V0 IGJ5IGJhY2tlbmRzIGNvbW1pdHRpbmcgYXN5bmNocm9ub3VzbHkpIGFuZAogcGVyZm9ybXMg YW4gWExvZ0JhY2tncm91bmRGbHVzaCgpLiAgVGhpcyBjaGVja3MgdGhlIGxvY2F0aW9uIG9m IHRoZSBsYXN0CiBjb21wbGV0ZWx5IGZpbGxlZCBXQUwgcGFnZS4gIElmIHRoYXQgaGFzIG1v dmVkIGZvcndhcmRzLCB0aGVuIHdlIHdyaXRlIGFsbAogdGhlIGNoYW5nZWQgYnVmZmVycyB1 cCB0byB0aGF0IHBvaW50LCBzbyB0aGF0IHVuZGVyIGZ1bGwgbG9hZCB3ZSB3cml0ZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggOTRkYjFlYzMwMTIuLjUy YjFjYmMyZDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAg LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCkBAIC03 NTksMTYgKzc2MCwxNiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxs ZWxDb250ZXh0ICpwY3h0KQogCQkJewogCQkJCS8qCiAJCQkJICogV29ya2VyIG5vdCB5ZXQg c3RhcnRlZCwgc28gd2UgbXVzdCB3YWl0LiAgVGhlIHBvc3RtYXN0ZXIKLQkJCQkgKiB3aWxs IG5vdGlmeSB1cyBpZiB0aGUgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4gIE91ciBsYXRjaAot CQkJCSAqIG1pZ2h0IGFsc28gZ2V0IHNldCBmb3Igc29tZSBvdGhlciByZWFzb24sIGJ1dCBp ZiBzbyB3ZSdsbAotCQkJCSAqIGp1c3QgZW5kIHVwIHdhaXRpbmcgZm9yIHRoZSBzYW1lIHdv cmtlciBhZ2Fpbi4KKwkJCQkgKiB3aWxsIG5vdGlmeSB1cyBpZiB0aGUgd29ya2VyJ3Mgc3Rh dGUgY2hhbmdlcy4gIFRoZQorCQkJCSAqIGludGVycnVwdCBtaWdodCBhbHNvIGdldCBzZXQg Zm9yIHNvbWUgb3RoZXIgcmVhc29uLCBidXQgaWYKKwkJCQkgKiBzbyB3ZSdsbCBqdXN0IGVu ZCB1cCB3YWl0aW5nIGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCiAJCQkJICovCi0JCQkJ cmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NU QVJUVVApOworCQkJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM LAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJ CQkJCQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAotCQkJCWlmIChy YyAmIFdMX0xBVENIX1NFVCkKLQkJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlpZiAo cmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAkJCX0KIAkJfQogCkBAIC04NzcsMTUgKzg3OCwxNiBAQCBXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCSAqIHRoZSB3 b3JrZXIgd3JpdGVzIG1lc3NhZ2VzIGFuZCB0ZXJtaW5hdGVzIGFmdGVyIHRoZQogCQkJCSAq IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbmVhciB0aGUgdG9wIG9mIHRoaXMgZnVuY3Rpb24g YW5kCiAJCQkJICogYmVmb3JlIHRoZSBjYWxsIHRvIEdldEJhY2tncm91bmRXb3JrZXJQaWQo KS4gIEluIHRoYXQgY2FzZSwKLQkJCQkgKiBvciBsYXRjaCBzaG91bGQgaGF2ZSBiZWVuIHNl dCBhcyB3ZWxsIGFuZCB0aGUgcmlnaHQgdGhpbmdzCi0JCQkJICogd2lsbCBoYXBwZW4gb24g dGhlIG5leHQgcGFzcyB0aHJvdWdoIHRoZSBsb29wLgorCQkJCSAqIElOVEVSUlVQVF9HRU5F UkFMIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFzIHdlbGwgYW5kIHRoZQorCQkJCSAqIHJpZ2h0 IHRoaW5ncyB3aWxsIGhhcHBlbiBvbiB0aGUgbmV4dCBwYXNzIHRocm91Z2ggdGhlIGxvb3Au CiAJCQkJICovCiAJCQl9CiAJCX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdM X0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAotCQkJCQkJIFdBSVRfRVZF TlRfUEFSQUxMRUxfRklOSVNIKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5U RVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgLTEsCisJCQkJCQkJIFdBSVRfRVZFTlRf UEFSQUxMRUxfRklOSVNIKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCX0KIAogCWlmIChwY3h0LT50b2MgIT0gTlVMTCkKQEAgLTEwMzgsNyArMTA0MCw3IEBA IEhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCh2b2lkKQogewogCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwogCVBhcmFsbGVsTWVzc2FnZVBlbmRpbmcgPSB0cnVlOwotCVNldExh dGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA3OTlmYzczOWUxOC4u NDc0MGRjODllZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTg0LDkg Kzg0LDkgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjY2NCw3ICsy NjY0LDcgQEAgWExvZ1NldEFzeW5jWGFjdExTTihYTG9nUmVjUHRyIGFzeW5jWGFjdExTTikK IAkJUHJvY051bWJlcgl3YWx3cml0ZXJQcm9jID0gcHJvY2dsb2JhbC0+d2Fsd3JpdGVyUHJv YzsKIAogCQlpZiAod2Fsd3JpdGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQkJ U2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHdyaXRlclByb2MpLT5wcm9jTGF0Y2gp OworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgUHJvY0dsb2JhbC0+d2Fs d3JpdGVyUHJvYyk7CiAJfQogfQogCkBAIC05MzgyLDExICs5MzgyLDExIEBAIGRvX3BnX2Jh Y2t1cF9zdG9wKEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCB3YWl0Zm9yYXJjaGl2ZSkKIAkJ CQlyZXBvcnRlZF93YWl0aW5nID0gdHJ1ZTsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgMTAwMEwsCi0JCQkJCQkJIFdBSVRfRVZFTlRfQkFD S1VQX1dBSVRfV0FMX0FSQ0hJVkUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkJIDEwMDBMLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9CQUNLVVBfV0FJVF9XQUxfQVJDSElW RSk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJCWlmICgr K3dhaXRzID49IHNlY29uZHNfYmVmb3JlX3dhcm5pbmcpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IDhjMzA5MDE2NWYwLi5mZmUwMjM3MzI2 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTI4LDcg KzI4LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC03MTgsMTcgKzcxOCwxNyBAQCBwZ19wcm9t b3RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlpbnQJCQlyYzsKIAotCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJ aWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwog CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRj aCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJf REVBVEgsCi0JCQkJCSAgIDEwMDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwKLQkJCQkJICAgV0FJ VF9FVkVOVF9QUk9NT1RFKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfUE9T VE1BU1RFUl9ERUFUSCwKKwkJCQkJCSAgIDEwMDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwKKwkJ CQkJCSAgIFdBSVRfRVZFTlRfUFJPTU9URSk7CiAKIAkJLyoKIAkJICogRW1lcmdlbmN5IGJh aWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGllZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IGE4Mjlh MDU1YTk3Li4xZTMxYjBiNzYxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3JlY292ZXJ5LmMKQEAgLTUyLDkgKzUyLDEwIEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCkBAIC0zMTYsMjMgKzMx Nyw2IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNvdmVyeUN0bERhdGEKIAkgKi8KIAlib29s CQlTaGFyZWRQcm9tb3RlSXNUcmlnZ2VyZWQ7CiAKLQkvKgotCSAqIHJlY292ZXJ5V2FrZXVw TGF0Y2ggaXMgdXNlZCB0byB3YWtlIHVwIHRoZSBzdGFydHVwIHByb2Nlc3MgdG8gY29udGlu dWUKLQkgKiBXQUwgcmVwbGF5LCBpZiBpdCBpcyB3YWl0aW5nIGZvciBXQUwgdG8gYXJyaXZl IG9yIHByb21vdGlvbiB0byBiZQotCSAqIHJlcXVlc3RlZC4KLQkgKgotCSAqIE5vdGUgdGhh dCB0aGUgc3RhcnR1cCBwcm9jZXNzIGFsc28gdXNlcyBhbm90aGVyIGxhdGNoLCBpdHMgcHJv Y0xhdGNoLAotCSAqIHRvIHdhaXQgZm9yIHJlY292ZXJ5IGNvbmZsaWN0LiBJZiB3ZSBnZXQg cmlkIG9mIHJlY292ZXJ5V2FrZXVwTGF0Y2ggZm9yCi0JICogc2lnbmFsaW5nIHRoZSBzdGFy dHVwIHByb2Nlc3MgaW4gZmF2b3Igb2YgdXNpbmcgaXRzIHByb2NMYXRjaCwgd2hpY2gKLQkg KiBjb21wb3J0cyBiZXR0ZXIgd2l0aCBwb3NzaWJsZSBnZW5lcmljIHNpZ25hbCBoYW5kbGVy cyB1c2luZyB0aGF0IGxhdGNoLgotCSAqIEJ1dCB3ZSBzaG91bGQgbm90IGRvIHRoYXQgYmVj YXVzZSB0aGUgc3RhcnR1cCBwcm9jZXNzIGRvZXNuJ3QgYXNzdW1lCi0JICogdGhhdCBpdCdz IHdha2VuIHVwIGJ5IHdhbHJlY2VpdmVyIHByb2Nlc3Mgb3IgU0lHSFVQIHNpZ25hbCBoYW5k bGVyCi0JICogd2hpbGUgaXQncyB3YWl0aW5nIGZvciByZWNvdmVyeSBjb25mbGljdC4gVGhl IHNlcGFyYXRlIGxhdGNoZXMsCi0JICogcmVjb3ZlcnlXYWtldXBMYXRjaCBhbmQgcHJvY0xh dGNoLCBzaG91bGQgYmUgdXNlZCBmb3IgaW50ZXItcHJvY2VzcwotCSAqIGNvbW11bmljYXRp b24gZm9yIFdBTCByZXBsYXkgYW5kIHJlY292ZXJ5IGNvbmZsaWN0LCByZXNwZWN0aXZlbHku Ci0JICovCi0JTGF0Y2gJCXJlY292ZXJ5V2FrZXVwTGF0Y2g7Ci0KIAkvKgogCSAqIExhc3Qg cmVjb3JkIHN1Y2Nlc3NmdWxseSByZXBsYXllZC4KIAkgKi8KQEAgLTQ2Nyw3ICs0NTEsNiBA QCBYTG9nUmVjb3ZlcnlTaG1lbUluaXQodm9pZCkKIAltZW1zZXQoWExvZ1JlY292ZXJ5Q3Rs LCAwLCBzaXplb2YoWExvZ1JlY292ZXJ5Q3RsRGF0YSkpOwogCiAJU3BpbkxvY2tJbml0KCZY TG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKLQlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNv dmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0 KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5Tm90UGF1c2VkQ1YpOwogfQogCkBAIC01NDEs MTMgKzUyNCw2IEBAIEluaXRXYWxSZWNvdmVyeShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xG aWxlLCBib29sICp3YXNTaHV0ZG93bl9wdHIsCiAJcmVhZFJlY292ZXJ5U2lnbmFsRmlsZSgp OwogCXZhbGlkYXRlUmVjb3ZlcnlQYXJhbWV0ZXJzKCk7CiAKLQkvKgotCSAqIFRha2Ugb3du ZXJzaGlwIG9mIHRoZSB3YWtldXAgbGF0Y2ggaWYgd2UncmUgZ29pbmcgdG8gc2xlZXAgZHVy aW5nCi0JICogcmVjb3ZlcnksIGlmIHJlcXVpcmVkLgotCSAqLwotCWlmIChBcmNoaXZlUmVj b3ZlcnlSZXF1ZXN0ZWQpCi0JCU93bkxhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5 V2FrZXVwTGF0Y2gpOwotCiAJLyoKIAkgKiBTZXQgdGhlIFdBTCByZWFkaW5nIHByb2Nlc3Nv ciBub3csIGFzIGl0IHdpbGwgYmUgbmVlZGVkIHdoZW4gcmVhZGluZwogCSAqIHRoZSBjaGVj a3BvaW50IHJlY29yZCByZXF1aXJlZCAoYmFja3VwX2xhYmVsIG9yIG5vdCkuCkBAIC0xNjM3 LDEzICsxNjEzLDYgQEAgU2h1dGRvd25XYWxSZWNvdmVyeSh2b2lkKQogCQlzbnByaW50Zihy ZWNvdmVyeVBhdGgsIE1BWFBHUEFUSCwgWExPR0RJUiAiL1JFQ09WRVJZSElTVE9SWSIpOwog CQl1bmxpbmsocmVjb3ZlcnlQYXRoKTsJLyogaWdub3JlIGFueSBlcnJvciAqLwogCX0KLQot CS8qCi0JICogV2UgZG9uJ3QgbmVlZCB0aGUgbGF0Y2ggYW55bW9yZS4gSXQncyBub3Qgc3Ry aWN0bHkgbmVjZXNzYXJ5IHRvIGRpc293bgotCSAqIGl0LCBidXQgbGV0J3MgZG8gaXQgZm9y IHRoZSBzYWtlIG9mIHRpZGluZXNzLgotCSAqLwotCWlmIChBcmNoaXZlUmVjb3ZlcnlSZXF1 ZXN0ZWQpCi0JCURpc293bkxhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVw TGF0Y2gpOwogfQogCiAvKgpAQCAtMTgwMyw3ICsxNzcyLDcgQEAgUGVyZm9ybVdhbFJlY292 ZXJ5KHZvaWQpCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBJZiB3ZSd2ZSBiZWVuIGFza2VkIHRv IGxhZyB0aGUgcHJpbWFyeSwgd2FpdCBvbiBsYXRjaCB1bnRpbAorCQkJICogSWYgd2UndmUg YmVlbiBhc2tlZCB0byBsYWcgdGhlIHByaW1hcnksIHdhaXQgb24gaW50ZXJydXB0IHVudGls CiAJCQkgKiBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLgogCQkJICovCiAJCQlpZiAocmVjb3Zl cnlBcHBseURlbGF5KHhsb2dyZWFkZXIpKQpAQCAtMzAyNiw4ICsyOTk1LDggQEAgcmVjb3Zl cnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWRlbGF5VW50aWwgPSBU aW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoeHRpbWUsIHJlY292ZXJ5X21pbl9hcHBseV9k ZWxheSk7CiAKIAkvKgotCSAqIEV4aXQgd2l0aG91dCBhcm1pbmcgdGhlIGxhdGNoIGlmIGl0 J3MgYWxyZWFkeSBwYXN0IHRpbWUgdG8gYXBwbHkgdGhpcwotCSAqIHJlY29yZAorCSAqIEV4 aXQgd2l0aG91dCBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGlmIGl0J3MgYWxyZWFkeSBwYXN0 IHRpbWUgdG8gYXBwbHkKKwkgKiB0aGlzIHJlY29yZAogCSAqLwogCW1zZWNzID0gVGltZXN0 YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhHZXRDdXJyZW50VGltZXN0YW1wKCksIGRlbGF5 VW50aWwpOwogCWlmIChtc2VjcyA8PSAwKQpAQCAtMzAzNSwxMSArMzAwNCwxOSBAQCByZWNv dmVyeUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAl3aGlsZSAodHJ1 ZSkKIAl7Ci0JCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CisJCS8qCisJCSAqIElOVEVSUlVQVF9HRU5FUkFMIGlzIHVzZWQgZm9yIGFsbCB0 aGUgdXN1YWwgaW50ZXJydXB0cywgbGlrZSBjb25maWcKKwkJICogcmVsb2Fkcy4gIFRoZSB3 YWtldXBzIHdoZW4gbW9yZSBXQUwgYXJyaXZlIHVzZSBhIGRpZmZlcmVudAorCQkgKiBpbnRl cnJ1cHQgbnVtYmVyIChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpIHNvIHRoYXQgbW9y ZSBXQUwKKwkJICogYXJyaXZpbmcgZG9uJ3Qgd2FrZSB1cCB0aGUgc3RhcnR1cCBwcm9jZXNz IGV4Y2Vzc2l2ZWx5IHdoZW4gd2UncmUKKwkJICogd2FpdGluZyBpbiBvdGhlciBwbGFjZXMs IGxpa2UgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cy4KKwkJICovCisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKiBUaGlzIG1pZ2h0IGNoYW5nZSByZWNvdmVy eV9taW5fYXBwbHlfZGVsYXkuICovCiAJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMo KTsKIAorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwog CQlpZiAoQ2hlY2tGb3JTdGFuZGJ5VHJpZ2dlcigpKQogCQkJYnJlYWs7CiAKQEAgLTMwNjAs MTAgKzMwMzcsMTEgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCiAJCWVsb2coREVCVUcyLCAicmVjb3ZlcnkgYXBwbHkgZGVsYXkgJWxkIG1pbGxp c2Vjb25kcyIsIG1zZWNzKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKCZYTG9nUmVjb3ZlcnlD dGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgbXNlY3MsCi0JCQkJCQkgV0FJ VF9FVkVOVF9SRUNPVkVSWV9BUFBMWV9ERUxBWSk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFIHwKKwkJCQkJCQkgMSA8PCBJTlRF UlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNzLAorCQkJCQkJCSBXQUlUX0VWRU5U X1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRydWU7CiB9CkBAIC0zNzE4 LDE1ICszNjk2LDE3IEBAIFdhaXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRy IFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJLyogRG8gYmFja2dyb3VuZCB0YXNr cyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJCQlLbm93bkFzc2lnbmVk VHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJCQkJKHZvaWQpIFdhaXRM YXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoLAotCQkJCQkJCQkJ CSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJCQkgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAotCQkJCQkJCQkJCSBXQUlUX0VWRU5U X1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJCQkJCVJlc2V0TGF0Y2go JlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJCQkJCQkodm9pZCkg V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSB8CisJCQkJ CQkJCQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkJCQkgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8CisJCQkJCQkJCQkJCSBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJCQkJCQkgd2FpdF90aW1lLAorCQkJCQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVS WV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7CisJCQkJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwogCQkJCQkJbm93ID0gR2V0Q3VycmVudFRpbWVz dGFtcCgpOwogCiAJCQkJCQkvKiBIYW5kbGUgaW50ZXJydXB0IHNpZ25hbHMgb2Ygc3RhcnR1 cCBwcm9jZXNzICovCisJCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCQkJCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CiAJCQkJCX0KIAkJCQkJ bGFzdF9mYWlsX3RpbWUgPSBub3c7CkBAIC0zOTkzLDExICszOTczLDEyIEBAIFdhaXRGb3JX QUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNz LAogCQkJCQkgKiBXYWl0IGZvciBtb3JlIFdBTCB0byBhcnJpdmUsIHdoZW4gd2Ugd2lsbCBi ZSB3b2tlbgogCQkJCQkgKiBpbW1lZGlhdGVseSBieSB0aGUgV0FMIHJlY2VpdmVyLgogCQkJ CQkgKi8KLQkJCQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVy eVdha2V1cExhdGNoLAotCQkJCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCQkJCQkgLTFMLAotCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllf V0FMX1NUUkVBTSk7Ci0JCQkJCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3Zl cnlXYWtldXBMYXRjaCk7CisJCQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJS VVBUX1JFQ09WRVJZX0NPTlRJTlVFIHwKKwkJCQkJCQkJCQkgMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwkJCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkJCQkgLTFMLAorCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9T VFJFQU0pOworCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElO VUUpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTQwMTcsNiArMzk5OCw3IEBAIFdhaXRG b3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNj ZXNzLAogCQkgKiBUaGlzIHBvc3NpYmx5LWxvbmcgbG9vcCBuZWVkcyB0byBoYW5kbGUgaW50 ZXJydXB0cyBvZiBzdGFydHVwCiAJCSAqIHByb2Nlc3MuCiAJCSAqLworCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVw dHMoKTsKIAl9CiAKQEAgLTQ0OTEsNyArNDQ3MywxMCBAQCBDaGVja1Byb21vdGVTaWduYWwo dm9pZCkKIHZvaWQKIFdha2V1cFJlY292ZXJ5KHZvaWQpCiB7Ci0JU2V0TGF0Y2goJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJUHJvY051bWJlcglwcm9jbm8g PSAoKHZvbGF0aWxlIFBST0NfSERSICopIFByb2NHbG9iYWwpLT5zdGFydHVwUHJvYzsKKwor CWlmIChwcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsIHByb2Nubyk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jIGIvc3JjL2Jh Y2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYwppbmRleCBiMmI3NDMyMzhmOS4u MDU0NDNlMDg1M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw X3Rocm90dGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0 bGUuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgImJhY2t1cC9iYXNlYmFja3VwX3Np bmsuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgYmJz aW5rX3Rocm90dGxlCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGhyb3R0bGUoYmJzaW5rX3Rocm90 dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQkoc2luay0+dGhyb3R0bGluZ19jb3Vu dGVyIC8gc2luay0+dGhyb3R0bGluZ19zYW1wbGUpOwogCiAJLyoKLQkgKiBTaW5jZSB0aGUg bGF0Y2ggY291bGQgYmUgc2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkg V0FMCisJICogU2luY2UgdGhlIGludGVycnVwdCBjb3VsZCBiZSBzZXQgcmVwZWF0ZWRseSBi ZWNhdXNlIG9mIGNvbmN1cnJlbnRseSBXQUwKIAkgKiBhY3Rpdml0eSwgc2xlZXAgaW4gYSBs b29wIHRvIGVuc3VyZSBlbm91Z2ggdGltZSBoYXMgcGFzc2VkLgogCSAqLwogCWZvciAoOzsp CkBAIC0xNjMsMjEgKzE2MywyMSBAQCB0aHJvdHRsZShiYnNpbmtfdGhyb3R0bGUgKnNpbmss IHNpemVfdCBpbmNyZW1lbnQpCiAJCWlmIChzbGVlcCA8PSAwKQogCQkJYnJlYWs7CiAKLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCi0JCS8qIFdlJ3JlIGVhdGluZyBhIHBvdGVudGlhbGx5IHNldCBsYXRjaCwgc28g Y2hlY2sgZm9yIGludGVycnVwdHMgKi8KKwkJLyogV2UncmUgZWF0aW5nIGEgd2FrZXVwLCBz byBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCS8qCiAJCSAqIChUQVJfU0VORF9TSVpFIC8gdGhyb3R0bGluZ19zYW1wbGUgKiBlbGFw c2VkX21pbl91bml0KSBzaG91bGQgYmUKIAkJICogdGhlIG1heGltdW0gdGltZSB0byBzbGVl cC4gVGh1cyB0aGUgY2FzdCB0byBsb25nIGlzIHNhZmUuCiAJCSAqLwotCQl3YWl0X3Jlc3Vs dCA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCQlXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEw MDApLAotCQkJCQkJCQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKKwkJd2Fp dF9yZXN1bHQgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJ CQkJCQlXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkJCShsb25nKSAoc2xlZXAgLyAxMDAwKSwKKwkJCQkJCQkJCVdBSVRfRVZFTlRf QkFTRV9CQUNLVVBfVEhST1RUTEUpOwogCi0JCWlmICh3YWl0X3Jlc3VsdCAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHdhaXRfcmVzdWx0ICYgV0xfSU5URVJSVVBUKQogCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAogCQkvKiBEb25lIHdhaXRpbmc/ICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5 bmMuYwppbmRleCA0YmQzN2Q1YmViNS4uMjAxZDcxNTAwODMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5 bmMuYwpAQCAtOTEsNyArOTEsNyBAQAogICoJICBzaG91bGQgZ28gb3V0IGltbWVkaWF0ZWx5 IGFmdGVyIGVhY2ggY29tbWl0LgogICoKICAqIDUuIFVwb24gcmVjZWlwdCBvZiBhIFBST0NT SUdfTk9USUZZX0lOVEVSUlVQVCBzaWduYWwsIHRoZSBzaWduYWwgaGFuZGxlcgotICoJICBz ZXRzIHRoZSBwcm9jZXNzJ3MgbGF0Y2gsIHdoaWNoIHRyaWdnZXJzIHRoZSBldmVudCB0byBi ZSBwcm9jZXNzZWQKKyAqCSAgcmFpc2VzIElOVEVSUlVQVF9HRU5FUkFMLCB3aGljaCB0cmln Z2VycyB0aGUgZXZlbnQgdG8gYmUgcHJvY2Vzc2VkCiAgKgkgIGltbWVkaWF0ZWx5IGlmIHRo aXMgYmFja2VuZCBpcyBpZGxlIChpLmUuLCBpdCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5k CiAgKgkgIGNvbW1hbmQgYW5kIGlzIG5vdCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBibG9jay4g Qy5mLgogICoJICBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpKS4gIE90aGVyd2lzZSB0 aGUgaGFuZGxlciBtYXkgb25seSBzZXQgYQpAQCAtMTQwLDYgKzE0MCw3IEBACiAjaW5jbHVk ZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTQwNiw5ICs0MDcsOSBAQCBzdGF0aWMg Tm90aWZpY2F0aW9uTGlzdCAqcGVuZGluZ05vdGlmaWVzID0gTlVMTDsKIC8qCiAgKiBJbmJv dW5kIG5vdGlmaWNhdGlvbnMgYXJlIGluaXRpYWxseSBwcm9jZXNzZWQgYnkgSGFuZGxlTm90 aWZ5SW50ZXJydXB0KCksCiAgKiBjYWxsZWQgZnJvbSBpbnNpZGUgYSBzaWduYWwgaGFuZGxl ci4gVGhhdCBqdXN0IHNldHMgdGhlCi0gKiBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nIGZsYWcg YW5kIHNldHMgdGhlIHByb2Nlc3MKLSAqIGxhdGNoLiBQcm9jZXNzTm90aWZ5SW50ZXJydXB0 KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVuZXZlciBpdCdzIHNhZmUgdG8KLSAqIGFjdHVh bGx5IGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0LgorICogbm90aWZ5SW50ZXJydXB0UGVuZGlu ZyBmbGFnIGFuZCByYWlzZXMgdGhlIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdC4KKyAq IFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5ldmVy IGl0J3Mgc2FmZSB0byBhY3R1YWxseQorICogZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQuCiAg Ki8KIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gZmFs c2U7CiAKQEAgLTE4MTIsNyArMTgxMyw3IEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lk KQogCW5vdGlmeUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCiAJLyogbWFrZSBzdXJlIHRo ZSBldmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15TGF0 Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKQEAg LTE4MjEsMTAgKzE4MjIsMTAgQEAgSGFuZGxlTm90aWZ5SW50ZXJydXB0KHZvaWQpCiAgKgkJ VGhpcyBpcyBjYWxsZWQgaWYgd2Ugc2VlIG5vdGlmeUludGVycnVwdFBlbmRpbmcgc2V0LCBq dXN0IGJlZm9yZQogICoJCXRyYW5zbWl0dGluZyBSZWFkeUZvclF1ZXJ5IGF0IHRoZSBlbmQg b2YgYSBmcm9udGVuZCBjb21tYW5kLCBhbmQKICAqCQlhbHNvIGlmIGEgbm90aWZ5IHNpZ25h bCBvY2N1cnMgd2hpbGUgcmVhZGluZyBmcm9tIHRoZSBmcm9udGVuZC4KLSAqCQlIYW5kbGVO b3RpZnlJbnRlcnJ1cHQoKSB3aWxsIGNhdXNlIHRoZSByZWFkIHRvIGJlIGludGVycnVwdGVk Ci0gKgkJdmlhIHRoZSBwcm9jZXNzJ3MgbGF0Y2gsIGFuZCB0aGlzIHJvdXRpbmUgd2lsbCBn ZXQgY2FsbGVkLgotICoJCUlmIHdlIGFyZSB0cnVseSBpZGxlIChpZSwgKm5vdCogaW5zaWRl IGEgdHJhbnNhY3Rpb24gYmxvY2spLAotICoJCXByb2Nlc3MgdGhlIGluY29taW5nIG5vdGlm aWVzLgorICoJCUhhbmRsZU5vdGlmeUludGVycnVwdCgpIHdpbGwgY2F1c2UgdGhlIHJlYWQg dG8gYmUgaW50ZXJydXB0ZWQgd2l0aAorICoJCUlOVEVSUlVQVF9HRU5FUkFMLCBhbmQgdGhp cyByb3V0aW5lIHdpbGwgZ2V0IGNhbGxlZC4gIElmIHdlIGFyZSB0cnVseQorICoJCWlkbGUg KGllLCAqbm90KiBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayksIHByb2Nlc3MgdGhlIGlu Y29taW5nCisgKgkJbm90aWZpZXMuCiAgKgogICoJCUlmICJmbHVzaCIgaXMgdHJ1ZSwgZm9y Y2UgYW55IGZyb250ZW5kIG1lc3NhZ2VzIG91dCBpbW1lZGlhdGVseS4KICAqCQlUaGlzIGNh biBiZSBmYWxzZSB3aGVuIGJlaW5nIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQg Y29tbWFuZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggZTI1YWI5N2JjNzEuLjgwMTc0 NDhkZTU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMjQ5Niw4ICsyNDk2LDggQEAg dmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkJLyoKIAkJICogV2UgZG9u J3Qgd2FudCB0byBpZ25vcmUgcG9zdG1hc3RlciBkZWF0aCBkdXJpbmcgdmVyeSBsb25nIHZh Y3V1bXMKIAkJICogd2l0aCB2YWN1dW1fY29zdF9kZWxheSBjb25maWd1cmVkLiAgV2UgY2Fu J3QgdXNlIHRoZSB1c3VhbAotCQkgKiBXYWl0TGF0Y2goKSBhcHByb2FjaCBoZXJlIGJlY2F1 c2Ugd2Ugd2FudCBtaWNyb3NlY29uZC1iYXNlZCBzbGVlcAotCQkgKiBkdXJhdGlvbnMgYWJv dmUuCisJCSAqIFdhaXRJbnRlcnJ1cHQoKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2Fu dCBtaWNyb3NlY29uZC1iYXNlZAorCQkgKiBzbGVlcCBkdXJhdGlvbnMgYWJvdmUuCiAJCSAq LwogCQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCiAJ CQlleGl0KDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDE1YzQyMjdj YzYyLi5kZjRiNWZlMTYyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAt NjEsOSArNjEsOCBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNp bmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVB cHBlbmQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZl bnRzZXQuaCIKIAogLyogU2hhcmVkIHN0YXRlIGZvciBwYXJhbGxlbC1hd2FyZSBBcHBlbmQu ICovCiBzdHJ1Y3QgUGFyYWxsZWxBcHBlbmRTdGF0ZQpAQCAtMTA0Myw3ICsxMDQyLDcgQEAg RXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCUFzc2VydChu b2RlLT5hc19ldmVudHNldCA9PSBOVUxMKTsKIAlub2RlLT5hc19ldmVudHNldCA9IENyZWF0 ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7CiAJQWRkV2Fp dEV2ZW50VG9TZXQobm9kZS0+YXNfZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBH SU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7 CiAKIAkvKiBHaXZlIGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBl dmVudC4gKi8KIAlpID0gLTE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXgg ZGM3ZDE4MzAyNTkuLjVkMGE1ODM4NGIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ci5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvdHF1ZXVlLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgogCiAKQEAgLTM4Miw5ICszODMsMTAgQEAgZ2F0aGVyX3JlYWRuZXh0KEdh dGhlclN0YXRlICpnYXRoZXJzdGF0ZSkKIAkJCQlyZXR1cm4gTlVMTDsKIAogCQkJLyogTm90 aGluZyB0byBkbyBleGNlcHQgd2FpdCBmb3IgZGV2ZWxvcG1lbnRzLiAqLwotCQkJKHZvaWQp IFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LCAwLAotCQkJCQkJCSBXQUlUX0VWRU5UX0VYRUNVVEVfR0FUSEVSKTsKLQkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfRVhFQ1VURV9HQVRIRVIpOworCQkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJbnZpc2l0ZWQgPSAwOwogCQl9CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tlbmQvbGli cHEvYXV0aC5jCmluZGV4IDgxZTJmODE4NGUzLi5hZjI4MmIzZTgwMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgu YwpAQCAtMTY1Myw4ICsxNjUzLDkgQEAgaW50ZXJwcmV0X2lkZW50X3Jlc3BvbnNlKGNvbnN0 IGNoYXIgKmlkZW50X3Jlc3BvbnNlLAogICoJb3ducyB0aGUgdGNwIGNvbm5lY3Rpb24gdG8g ImxvY2FsX2FkZHIiCiAgKglJZiB0aGUgdXNlcm5hbWUgaXMgc3VjY2Vzc2Z1bGx5IHJldHJp ZXZlZCwgY2hlY2sgdGhlIHVzZXJtYXAuCiAgKgotICoJWFhYOiBVc2luZyBXYWl0TGF0Y2hP clNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlCi0g KglsYXRjaCB3YXMgc2V0IHdvdWxkIGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvIHRp bWVvdXRzL2NhbmNlbGxhdGlvbnMuCisgKglYWFg6IFVzaW5nIFdhaXRJbnRlcnJ1cHRPclNv Y2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKKyAqCWlmIHRoZSBp bnRlcnJ1cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3Mg dG8KKyAqCXRpbWVvdXRzL2NhbmNlbGxhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKIGlkZW50 X2luZXQoaGJhUG9ydCAqcG9ydCkKQEAgLTMwODgsOCArMzA4OSw4IEBAIFBlcmZvcm1SYWRp dXNUcmFuc2FjdGlvbihjb25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwg Y29uc3QgY2hhciAqcG9yCiAJICogcGFja2V0cyB0byBvdXIgcG9ydCB0aHVzIGNhdXNpbmcg dXMgdG8gcmV0cnkgaW4gYSBsb29wIGFuZCBuZXZlciB0aW1lCiAJICogb3V0LgogCSAqCi0J ICogWFhYOiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZP Ul9JTlRFUlJVUFRTKCkgaWYKLQkgKiB0aGUgbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3Zl IHRoZSByZXNwb25zaXZlbmVzcyB0bworCSAqIFhYWDogVXNpbmcgV2FpdEludGVycnVwdE9y U29ja2V0KCkgYW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIGlmIHRo ZSBpbnRlcnJ1cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5l c3MgdG8KIAkgKiB0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgogCSAqLwogCWdldHRpbWVvZmRh eSgmZW5kdGltZSwgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtZ3NzYXBpLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMK aW5kZXggYTNkNjEwYjEzNzMuLmQyNjgwNWM5YTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLWdzc2FwaS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0 aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtNDE0LDcg KzQxNSw3IEBAIGJlX2dzc2FwaV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90 IGxlbikKIAogLyoKICAqIFJlYWQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgb2Zm IHRoZSB3aXJlLCB3YWl0aW5nIHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCBpZiB3ZSB3 b3VsZCBibG9jay4KKyAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9j ay4KICAqCiAgKiBSZXN1bHRzIGFyZSByZWFkIGludG8gUHFHU1NSZWN2QnVmZmVyLgogICoK QEAgLTQ1MCw5ICs0NTEsOCBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBs ZW4pCiAJCSAqLwogCQlpZiAocmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0 KE5VTEwsCi0JCQkJCQkJICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJW RVIpOworCQkJV2FpdEludGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9SRUFEQUJMRSB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9F VkVOVF9HU1NfT1BFTl9TRVJWRVIpOwogCiAJCQkvKgogCQkJICogSWYgd2UgZ290IGJhY2sg emVybyBieXRlcywgYW5kIHRoZW4gd2FpdGVkIG9uIHRoZSBzb2NrZXQgdG8gYmUKQEAgLTQ4 OSw3ICs0ODksNyBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAg KgogICogTm90ZSB0aGF0IHVubGlrZSB0aGUgYmVfZ3NzYXBpX3JlYWQvYmVfZ3NzYXBpX3dy aXRlIGZ1bmN0aW9ucywgdGhpcwogICogZnVuY3Rpb24gV0lMTCBibG9jayBvbiB0aGUgc29j a2V0IHRvIGJlIHJlYWR5IGZvciByZWFkL3dyaXRlICh1c2luZwotICogV2FpdExhdGNoT3JT b2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJCisg KiBXYWl0SW50ZXJydXB0T3JTb2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlz aGluZyB0aGUgR1NTQVBJCiAgKiBzZXNzaW9uLgogICovCiBzc2l6ZV90CkBAIC02NjgsOSAr NjY4LDggQEAgc2VjdXJlX29wZW5fZ3NzYXBpKFBvcnQgKnBvcnQpCiAJCQkJLyogV2FpdCBh bmQgcmV0cnkgaWYgd2UgY291bGRuJ3Qgd3JpdGUgeWV0ICovCiAJCQkJaWYgKHJldCA8PSAw KQogCQkJCXsKLQkJCQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkJCSAgV0xf U09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgIHBv cnQtPnNvY2ssIDAsIFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCQkJV2FpdElu dGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BF Tl9TRVJWRVIpOwogCQkJCQljb250aW51ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUtb3BlbnNzbC5jCmluZGV4IDY0ZmYzY2UzZDZhLi5kY2I2NDBhZmJhMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0zMiw3ICszMiw4IEBA CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApA QCAtNTIyLDggKzUyMyw4IEBAIGFsb29wOgogCQkJCWVsc2UKIAkJCQkJd2FpdGZvciA9IFdM X1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCi0JCQkJKHZvaWQp IFdhaXRMYXRjaE9yU29ja2V0KE5VTEwsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCi0JCQkJ CQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKKwkJCQkodm9pZCkgV2FpdElu dGVycnVwdE9yU29ja2V0KDAsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCisJCQkJCQkJCQkJ CSBXQUlUX0VWRU5UX1NTTF9PUEVOX1NFUlZFUik7CiAJCQkJZ290byBhbG9vcDsKIAkJCWNh c2UgU1NMX0VSUk9SX1NZU0NBTEw6CiAJCQkJaWYgKHIgPCAwICYmIGVycm5vICE9IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyBiL3NyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS5jCmluZGV4IDkxNTc2Zjk0Mjg1Li5jNjFmMGJkYjRjMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKKysrIGIvc3JjL2JhY2tl bmQvbGlicHEvYmUtc2VjdXJlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxhcnBh L2luZXQuaD4KIAogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5j bHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpAQCAtMjEzLDcgKzIxMyw3IEBAIHJldHJ5Ogog CiAJCUFzc2VydCh3YWl0Zm9yKTsKIAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQs IEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2 ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CiAK IAkJV2FpdEV2ZW50U2V0V2FpdChGZUJlV2FpdFNldCwgLTEgLyogbm8gdGltZW91dCAqLyAs ICZldmVudCwgMSwKIAkJCQkJCSBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKTsKQEAgLTIyOCwx MiArMjI4LDEyIEBAIHJldHJ5OgogCQkgKiBuZXcgY29ubmVjdGlvbnMgY2FuIGJlIGFjY2Vw dGVkLiAgRXhpdGluZyBjbGVhcnMgdGhlIGRlY2sgZm9yIGEKIAkJICogcG9zdG1hc3RlciBy ZXN0YXJ0LgogCQkgKgotCQkgKiAoTm90ZSB0aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNr IHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNsZWVwIG9uCi0JCSAqIG91ciBsYXRjaC4gIFdl IG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5pbmcgZm9yIGEgd2hpbGUgaWYgdGhlCi0JCSAq IHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1pZC1xdWVyeSwgb3IgZXZlbiB0aHJvdWdoIG11 bHRpcGxlIHF1ZXJpZXMKLQkJICogaWYgd2UgbmV2ZXIgaGF2ZSB0byB3YWl0IGZvciByZWFk LiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuIHRvbyBtYW55Ci0JCSAqIGN5Y2xlcyBjaGVja2lu ZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0aW9uLCBhbmQgdGhpcyBzaG91bGQgY2F1c2UK LQkJICogdXMgdG8gZXhpdCBxdWlja2x5IGluIG1vc3QgY2FzZXMuKQorCQkgKiAoTm90ZSB0 aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNrIHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNs ZWVwCisJCSAqIHdhaXRpbmcgZm9yIGludGVycnVwdC4gIFdlIG1pZ2h0IHN0aWxsIGNvbnRp bnVlIHJ1bm5pbmcgZm9yIGEgd2hpbGUKKwkJICogaWYgdGhlIHBvc3RtYXN0ZXIgaXMga2ls bGVkIGluIG1pZC1xdWVyeSwgb3IgZXZlbiB0aHJvdWdoIG11bHRpcGxlCisJCSAqIHF1ZXJp ZXMgaWYgd2UgbmV2ZXIgaGF2ZSB0byB3YWl0IGZvciByZWFkLiAgV2UgZG9uJ3Qgd2FudCB0 byBidXJuCisJCSAqIHRvbyBtYW55IGN5Y2xlcyBjaGVja2luZyBmb3IgdGhpcyB2ZXJ5IHJh cmUgY29uZGl0aW9uLCBhbmQgdGhpcworCQkgKiBzaG91bGQgY2F1c2UgdXMgdG8gZXhpdCBx dWlja2x5IGluIG1vc3QgY2FzZXMuKQogCQkgKi8KIAkJaWYgKGV2ZW50LmV2ZW50cyAmIFdM X1BPU1RNQVNURVJfREVBVEgpCiAJCQllcmVwb3J0KEZBVEFMLApAQCAtMjQxLDkgKzI0MSw5 IEBAIHJldHJ5OgogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0 byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIpKSk7CiAKIAkJLyogSGFuZGxlIGludGVy cnVwdC4gKi8KLQkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2 ZW50LmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCVByb2Nlc3ND bGllbnRSZWFkSW50ZXJydXB0KHRydWUpOwogCiAJCQkvKgpAQCAtMjg0LDcgKzI4NCw4IEBA IHNlY3VyZV9yYXdfcmVhZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAK IAkvKgogCSAqIFRyeSB0byByZWFkIGZyb20gdGhlIHNvY2tldCB3aXRob3V0IGJsb2NraW5n LiBJZiBpdCBzdWNjZWVkcyB3ZSdyZQotCSAqIGRvbmUsIG90aGVyd2lzZSB3ZSdsbCB3YWl0 IGZvciB0aGUgc29ja2V0IHVzaW5nIHRoZSBsYXRjaCBtZWNoYW5pc20uCisJICogZG9uZSwg b3RoZXJ3aXNlIHdlJ2xsIHdhaXQgZm9yIHRoZSBzb2NrZXQgdXNpbmcgdGhlIGludGVycnVw dAorCSAqIG1lY2hhbmlzbS4KIAkgKi8KICNpZmRlZiBXSU4zMgogCXBnd2luMzJfbm9ibG9j ayA9IHRydWU7CkBAIC0zMzgsNyArMzM5LDcgQEAgcmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRm b3IpOwogCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2Nr ZXRQb3MsIHdhaXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQs IEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKIAogCQlXYWl0RXZlbnRTZXRX YWl0KEZlQmVXYWl0U2V0LCAtMSAvKiBubyB0aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJ CQkJIFdBSVRfRVZFTlRfQ0xJRU5UX1dSSVRFKTsKQEAgLTM1MCw5ICszNTEsOSBAQCByZXRy eToKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gdW5leHBl Y3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwogCiAJCS8qIEhhbmRsZSBpbnRlcnJ1cHQuICov Ci0JCWlmIChldmVudC5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChldmVudC5ldmVu dHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlQcm9jZXNzQ2xpZW50V3Jp dGVJbnRlcnJ1cHQodHJ1ZSk7CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9s aWJwcS9wcWNvbW0uYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCmluZGV4IGU1MTcx NDY3ZGUxLi5kYWY3Yzc0MzViYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFj b21tLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKQEAgLTc3LDYgKzc3LDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jzd2FwLmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInV0 aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xNzUs NyArMTc2LDcgQEAgcHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogewogCVBv cnQJICAgKnBvcnQ7CiAJaW50CQkJc29ja2V0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFk7Ci0JaW50CQkJbGF0Y2hfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJ CQlpbnRlcnJ1cHRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAogCS8qIGFsbG9j YXRlIHRoZSBQb3J0IHN0cnVjdCBhbmQgY29weSB0aGUgQ2xpZW50U29ja2V0IGNvbnRlbnRz IHRvIGl0ICovCiAJcG9ydCA9IHBhbGxvYzAoc2l6ZW9mKFBvcnQpKTsKQEAgLTI4Nyw4ICsy ODgsOCBAQCBwcV9pbml0KENsaWVudFNvY2tldCAqY2xpZW50X3NvY2spCiAKIAkvKgogCSAq IEluIGJhY2tlbmRzIChhcyBzb29uIGFzIGZvcmtlZCkgd2Ugb3BlcmF0ZSB0aGUgdW5kZXJs eWluZyBzb2NrZXQgaW4KLQkgKiBub25ibG9ja2luZyBtb2RlIGFuZCB1c2UgbGF0Y2hlcyB0 byBpbXBsZW1lbnQgYmxvY2tpbmcgc2VtYW50aWNzIGlmCi0JICogbmVlZGVkLiBUaGF0IGFs bG93cyB1cyB0byBwcm92aWRlIHNhZmVseSBpbnRlcnJ1cHRpYmxlIHJlYWRzIGFuZAorCSAq IG5vbmJsb2NraW5nIG1vZGUgYW5kIHVzZSBXYWl0RXZlbnRTZXQgdG8gaW1wbGVtZW50IGJs b2NraW5nIHNlbWFudGljcworCSAqIGlmIG5lZWRlZC4gVGhhdCBhbGxvd3MgdXMgdG8gcHJv dmlkZSBzYWZlbHkgaW50ZXJydXB0aWJsZSByZWFkcyBhbmQKIAkgKiB3cml0ZXMuCiAJICov CiAjaWZuZGVmIFdJTjMyCkBAIC0zMDYsMTggKzMwNywxOCBAQCBwcV9pbml0KENsaWVudFNv Y2tldCAqY2xpZW50X3NvY2spCiAKIAlGZUJlV2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNl dChOVUxMLCBGZUJlV2FpdFNldE5FdmVudHMpOwogCXNvY2tldF9wb3MgPSBBZGRXYWl0RXZl bnRUb1NldChGZUJlV2FpdFNldCwgV0xfU09DS0VUX1dSSVRFQUJMRSwKLQkJCQkJCQkJICAg cG9ydC0+c29jaywgTlVMTCwgTlVMTCk7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50VG9T ZXQoRmVCZVdhaXRTZXQsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJ CQkJICBNeUxhdGNoLCBOVUxMKTsKKwkJCQkJCQkJICAgcG9ydC0+c29jaywgMCwgTlVMTCk7 CisJaW50ZXJydXB0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9J TlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkJCQkgIDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsIE5VTEwpOwogCUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9Q T1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE5VTEwsIE5VTEwp OworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyoKIAkgKiBUaGUgZXZlbnQgcG9zaXRpb25zIG1h dGNoIHRoZSBvcmRlciB3ZSBhZGRlZCB0aGVtLCBidXQgbGV0J3Mgc2FuaXR5CiAJICogY2hl Y2sgdGhlbSB0byBiZSBzdXJlLgogCSAqLwogCUFzc2VydChzb2NrZXRfcG9zID09IEZlQmVX YWl0U2V0U29ja2V0UG9zKTsKLQlBc3NlcnQobGF0Y2hfcG9zID09IEZlQmVXYWl0U2V0TGF0 Y2hQb3MpOworCUFzc2VydChpbnRlcnJ1cHRfcG9zID09IEZlQmVXYWl0U2V0SW50ZXJydXB0 UG9zKTsKIAogCXJldHVybiBwb3J0OwogfQpAQCAtMjA2Myw3ICsyMDY0LDcgQEAgcHFfY2hl Y2tfY29ubmVjdGlvbih2b2lkKQogCSAqIEl0J3MgT0sgdG8gbW9kaWZ5IHRoZSBzb2NrZXQg ZXZlbnQgZmlsdGVyIHdpdGhvdXQgcmVzdG9yaW5nLCBiZWNhdXNlCiAJICogYWxsIEZlQmVX YWl0U2V0IHNvY2tldCB3YWl0IHNpdGVzIGRvIHRoZSBzYW1lLgogCSAqLwotCU1vZGlmeVdh aXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9D TE9TRUQsIE5VTEwpOworCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRT ZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9DTE9TRUQsIDApOwogCiByZXRyeToKIAlyYyA9IFdh aXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIDAsIGV2ZW50cywgbGVuZ3Rob2YoZXZlbnRz KSwgMCk7CkBAIC0yMDcxLDE1ICsyMDcyLDE1IEBAIHJldHJ5OgogCXsKIAkJaWYgKGV2ZW50 c1tpXS5ldmVudHMgJiBXTF9TT0NLRVRfQ0xPU0VEKQogCQkJcmV0dXJuIGZhbHNlOwotCQlp ZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2ZW50c1tpXS5l dmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKIAkJCS8qCi0JCQkgKiBBIGxhdGNoIGV2ZW50 IG1pZ2h0IGJlIHByZXZlbnRpbmcgb3RoZXIgZXZlbnRzIGZyb20gYmVpbmcKKwkJCSAqIEFu IGludGVycnVwdCBldmVudCBtaWdodCBiZSBwcmV2ZW50aW5nIG90aGVyIGV2ZW50cyBmcm9t IGJlaW5nCiAJCQkgKiByZXBvcnRlZC4gIFJlc2V0IGl0IGFuZCBwb2xsIGFnYWluLiAgTm8g bmVlZCB0byByZXN0b3JlIGl0Ci0JCQkgKiBiZWNhdXNlIG5vIGNvZGUgc2hvdWxkIGV4cGVj dCBsYXRjaGVzIHRvIHN1cnZpdmUgYWNyb3NzCi0JCQkgKiBDSEVDS19GT1JfSU5URVJSVVBU UygpLgorCQkJICogYmVjYXVzZSBubyBjb2RlIHNob3VsZCBleHBlY3QgSU5URVJSVVBUX0dF TkVSQUwgdG8gc3Vydml2ZQorCQkJICogYWNyb3NzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCku CiAJCQkgKi8KLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCQlnb3RvIHJldHJ5OwogCQl9CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5j CmluZGV4IGYxYTA4YmMzMmNhLi5lZjA4MGY2MzExMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwpAQCAtMjAs NiArMjAsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0xODEsOSArMTgyLDEwIEBAIG1xX3B1dG1l c3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlpZiAo cmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKLQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UpOwotCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RF QVRILCAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0Up OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmlu ZGV4IGNkYmRjMGYzYjgwLi5lMjdkYTlmZDg4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMKQEAgLTg5LDggKzg5LDggQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2Uv bGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC01NzUsMjQgKzU3 NSwyNCBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWJvb2wJCWNhbl9sYXVuY2g7CiAKIAkJLyoK LQkJICogVGhpcyBsb29wIGlzIGEgYml0IGRpZmZlcmVudCBmcm9tIHRoZSBub3JtYWwgdXNl IG9mIFdhaXRMYXRjaCwKKwkJICogVGhpcyBsb29wIGlzIGEgYml0IGRpZmZlcmVudCBmcm9t IHRoZSBub3JtYWwgdXNlIG9mIFdhaXRJbnRlcnJ1cHQsCiAJCSAqIGJlY2F1c2Ugd2UnZCBs aWtlIHRvIHNsZWVwIGJlZm9yZSB0aGUgZmlyc3QgbGF1bmNoIG9mIGEgY2hpbGQKLQkJICog cHJvY2Vzcy4gIFNvIGl0J3MgV2FpdExhdGNoLCB0aGVuIFJlc2V0TGF0Y2gsIHRoZW4gY2hl Y2sgZm9yCi0JCSAqIHdha2VuaW5nIGNvbmRpdGlvbnMuCisJCSAqIHByb2Nlc3MuICBTbyBp dCdzIFdhaXRJbnRlcnJ1cHQsIHRoZW4gQ2xlYXJJbnRlcnJ1cHQsIHRoZW4gY2hlY2sKKwkJ ICogZm9yIHdha2VuaW5nIGNvbmRpdGlvbnMuCiAJCSAqLwogCiAJCWxhdW5jaGVyX2RldGVy bWluZV9zbGVlcChhdl93b3JrZXJfYXZhaWxhYmxlKCksIGZhbHNlLCAmbmFwKTsKIAogCQkv KgogCQkgKiBXYWl0IHVudGlsIG5hcHRpbWUgZXhwaXJlcyBvciB3ZSBnZXQgc29tZSB0eXBl IG9mIHNpZ25hbCAoYWxsIHRoZQotCQkgKiBzaWduYWwgaGFuZGxlcnMgd2lsbCB3YWtlIHVz IGJ5IGNhbGxpbmcgU2V0TGF0Y2gpLgorCQkgKiBzaWduYWwgaGFuZGxlcnMgd2lsbCB3YWtl IHVzIGJ5IGNhbGxpbmcgUmFpc2VJbnRlcnJ1cHQpLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50 dl91c2VjIC8gMTAwMEwpLAotCQkJCQkJIFdBSVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50dl91c2VjIC8gMTAwMEwpLAor CQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1fTUFJTik7CiAKLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCVBy b2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKCk7CiAKQEAgLTEzNTksNyArMTM1OSw3 IEBAIHN0YXRpYyB2b2lkCiBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKQogewog CWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 eHByb2Nlc3MuYwppbmRleCA0ZjY3OTVmNzI2NS4uNjFiY2FjOGQ5ZjggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog I2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYwppbmRleCAxMTZkZGY3YjgzNS4uYzE3YjhkYjU0NWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJwb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKQEAgLTEyMjYsOSArMTIyNiw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1 cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogCQlpZiAo c3RhdHVzICE9IEJHV0hfTk9UX1lFVF9TVEFSVEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBX YWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RF Ul9ERUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBX TF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9F VkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RF QVRIKQogCQl7CkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtl clN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkK IAkJCWJyZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCXJldHVybiBzdGF0dXM7CkBAIC0x MjY5LDkgKzEyNjksOSBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKEJhY2tn cm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQ RUQpCiAJCQlicmVhazsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VW RU5UX0JHV09SS0VSX1NIVVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5U RVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFTVEVS X0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CiAK IAkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAtMTI3OSw3ICsxMjc5 LDcgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2Vy SGFuZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAlyZXR1 cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRl ci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IDRkMjE2NWZh OTk4Li5hMzcyNTcyMThiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAt NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgi CisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3 bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgpAQCAtMjI0LDcgKzIyNSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ CWludAkJCXJjOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAq LwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiAKIAkJUHJvY2Vzc01haW5Mb29wSW50ZXJydXB0cygpOwogCkBAIC0yOTks MjIgKzMwMCwyMiBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiB3aWxsIGNhbGwgaXQgZXZl cnkgQmdXcml0ZXJEZWxheSBtc2VjLiAgV2hpbGUgaXQncyBub3QgY3JpdGljYWwgZm9yCiAJ CSAqIGNvcnJlY3RuZXNzIHRoYXQgdGhhdCBiZSBleGFjdCwgdGhlIGZlZWRiYWNrIGxvb3Ag bWlnaHQgbWlzYmVoYXZlCiAJCSAqIGlmIHdlIHN0cmF5IHRvbyBmYXIgZnJvbSB0aGF0LiAg SGVuY2UsIGF2b2lkIGxvYWRpbmcgdGhpcyBwcm9jZXNzCi0JCSAqIGRvd24gd2l0aCBsYXRj aCBldmVudHMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhcHBlbiBmcmVxdWVudGx5IGR1cmluZwot CQkgKiBub3JtYWwgb3BlcmF0aW9uLgorCQkgKiBkb3duIHdpdGggaW50ZXJydXB0IGV2ZW50 cyB0aGF0IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50bHkKKwkJICogZHVyaW5nIG5v cm1hbCBvcGVyYXRpb24uCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJ CQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK LQkJCQkJICAgQmdXcml0ZXJEZWxheSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJf TUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkgICBCZ1dyaXRlckRlbGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dS SVRFUl9NQUlOKTsKIAogCQkvKgotCQkgKiBJZiBubyBsYXRjaCBldmVudCBhbmQgQmdCdWZm ZXJTeW5jIHNheXMgbm90aGluZydzIGhhcHBlbmluZywgZXh0ZW5kCi0JCSAqIHRoZSBzbGVl cCBpbiAiaGliZXJuYXRpb24iIG1vZGUsIHdoZXJlIHdlIHNsZWVwIGZvciBtdWNoIGxvbmdl cgotCQkgKiB0aGFuIGJnd3JpdGVyX2RlbGF5IHNheXMuICBGZXdlciB3YWtldXBzIHNhdmUg ZWxlY3RyaWNpdHkuICBXaGVuIGEKLQkJICogYmFja2VuZCBzdGFydHMgdXNpbmcgYnVmZmVy cyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVzIHVwIGJ5IHNldHRpbmcKLQkJICogb3VyIGxhdGNo LiAgQmVjYXVzZSB0aGUgZXh0cmEgc2xlZXAgd2lsbCBwZXJzaXN0IG9ubHkgYXMgbG9uZyBh cyBubwotCQkgKiBidWZmZXIgYWxsb2NhdGlvbnMgaGFwcGVuLCB0aGlzIHNob3VsZCBub3Qg ZGlzdG9ydCB0aGUgYmVoYXZpb3Igb2YKLQkJICogQmdCdWZmZXJTeW5jJ3MgY29udHJvbCBs b29wIHRvbyBiYWRseTsgZXNzZW50aWFsbHksIGl0IHdpbGwgdGhpbmsKLQkJICogdGhhdCB0 aGUgc3lzdGVtLXdpZGUgaWRsZSBpbnRlcnZhbCBkaWRuJ3QgZXhpc3QuCisJCSAqIElmIG5v IGludGVycnVwdCBldmVudCBhbmQgQmdCdWZmZXJTeW5jIHNheXMgbm90aGluZydzIGhhcHBl bmluZywKKwkJICogZXh0ZW5kIHRoZSBzbGVlcCBpbiAiaGliZXJuYXRpb24iIG1vZGUsIHdo ZXJlIHdlIHNsZWVwIGZvciBtdWNoCisJCSAqIGxvbmdlciB0aGFuIGJnd3JpdGVyX2RlbGF5 IHNheXMuICBGZXdlciB3YWtldXBzIHNhdmUgZWxlY3RyaWNpdHkuCisJCSAqIFdoZW4gYSBi YWNrZW5kIHN0YXJ0cyB1c2luZyBidWZmZXJzIGFnYWluLCBpdCB3aWxsIHdha2UgdXMgdXAg YnkKKwkJICogc2VuZGluZyB1cyBhbiBpbnRlcnJ1cHQuICBCZWNhdXNlIHRoZSBleHRyYSBz bGVlcCB3aWxsIHBlcnNpc3Qgb25seQorCQkgKiBhcyBsb25nIGFzIG5vIGJ1ZmZlciBhbGxv Y2F0aW9ucyBoYXBwZW4sIHRoaXMgc2hvdWxkIG5vdCBkaXN0b3J0CisJCSAqIHRoZSBiZWhh dmlvciBvZiBCZ0J1ZmZlclN5bmMncyBjb250cm9sIGxvb3AgdG9vIGJhZGx5OyBlc3NlbnRp YWxseSwKKwkJICogaXQgd2lsbCB0aGluayB0aGF0IHRoZSBzeXN0ZW0td2lkZSBpZGxlIGlu dGVydmFsIGRpZG4ndCBleGlzdC4KIAkJICoKIAkJICogVGhlcmUgaXMgYSByYWNlIGNvbmRp dGlvbiBoZXJlLCBpbiB0aGF0IGEgYmFja2VuZCBtaWdodCBhbGxvY2F0ZSBhCiAJCSAqIGJ1 ZmZlciBiZXR3ZWVuIHRoZSB0aW1lIEJnQnVmZmVyU3luYyBzYXcgdGhlIGFsbG9jIGNvdW50 IGFzIHplcm8KQEAgLTMyOSwxMCArMzMwLDEwIEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQkv KiBBc2sgZm9yIG5vdGlmaWNhdGlvbiBhdCBuZXh0IGJ1ZmZlciBhbGxvY2F0aW9uICovCiAJ CQlTdHJhdGVneU5vdGlmeUJnV3JpdGVyKE15UHJvY051bWJlcik7CiAJCQkvKiBTbGVlcCAu Li4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hf U0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIEJnV3Jp dGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JHV1JJ VEVSX0hJQkVSTkFURSk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZB Q1RPUiwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKIAkJCS8q IFJlc2V0IHRoZSBub3RpZmljYXRpb24gcmVxdWVzdCBpbiBjYXNlIHdlIHRpbWVkIG91dCAq LwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcigtMSk7CiAJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGUzNzU5YTdhODBiLi5kYTZjYWE2NDQ1NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC01Miw2ICs1Miw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgi CkBAIC0zNTIsNyArMzUzLDcgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlib29sCQljaGtwdF9vcl9y c3RwdF90aW1lZCA9IGZhbHNlOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcg d2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyoKIAkJICogUHJvY2VzcyBhbnkgcmVxdWVzdHMg b3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KQEAgLTUzNCw3ICs1MzUsNyBAQCBDaGVj a3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBf ZGF0YV9sZW4pCiAKIAkJCS8qCiAJCQkgKiBXZSBtYXkgaGF2ZSByZWNlaXZlZCBhbiBpbnRl cnJ1cHQgZHVyaW5nIHRoZSBjaGVja3BvaW50IGFuZCB0aGUKLQkJCSAqIGxhdGNoIG1pZ2h0 IGhhdmUgYmVlbiByZXNldCAoZS5nLiBpbiBDaGVja3BvaW50V3JpdGVEZWxheSkuCisJCQkg KiBpbnRlcnJ1cHQgbWlnaHQgaGF2ZSBiZWVuIHJlc2V0IChlLmcuIGluIENoZWNrcG9pbnRX cml0ZURlbGF5KS4KIAkJCSAqLwogCQkJUHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHMo KTsKIAkJCWlmIChTaHV0ZG93blhMT0dQZW5kaW5nIHx8IFNodXRkb3duUmVxdWVzdFBlbmRp bmcpCkBAIC01NzIsMTAgKzU3MywxMCBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQljdXJfdGltZW91 dCA9IE1pbihjdXJfdGltZW91dCwgWExvZ0FyY2hpdmVUaW1lb3V0IC0gZWxhcHNlZF9zZWNz KTsKIAkJfQogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRD SF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBjdXJf dGltZW91dCAqIDEwMDBMIC8qIGNvbnZlcnQgdG8gbXMgKi8gLAotCQkJCQkJIFdBSVRfRVZF TlRfQ0hFQ0tQT0lOVEVSX01BSU4pOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQgKiAxMDAwTCAvKiBj b252ZXJ0IHRvIG1zICovICwKKwkJCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfTUFJ Tik7CiAJfQogCiAJLyoKQEAgLTYxMywxNyArNjE0LDE3IEBAIENoZWNrcG9pbnRlck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlm b3IgKDs7KQogCXsKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICov Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAogCQlQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cygpOwogCiAJCWlm IChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCQkgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9TSFVURE9X Tik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJ CQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDAs CisJCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKIAl9CiAKIAkv KiBOb3JtYWwgZXhpdCBmcm9tIHRoZSBjaGVja3BvaW50ZXIgaXMgaGVyZSAqLwpAQCAtODA0 LDEwICs4MDUsMTEgQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUg cHJvZ3Jlc3MpCiAJCSAqIENoZWNrcG9pbnRlciBhbmQgYmd3cml0ZXIgYXJlIG5vIGxvbmdl ciByZWxhdGVkIHNvIHRha2UgdGhlIEJpZwogCQkgKiBTbGVlcC4KIAkJICovCi0JCVdhaXRM YXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xf VElNRU9VVCwKLQkJCQkgIDEwMCwKLQkJCQkgIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVF9XUklU RV9ERUxBWSk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCVdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKKwkJCQkJICAxMDAsCisJCQkJCSAgV0FJVF9FVkVO VF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwpOwogCX0KIAllbHNlIGlmICgtLWFic29yYl9jb3VudGVyIDw9IDApCiAJewpA QCAtOTE2LDcgKzkxOCw3IEBAIHN0YXRpYyB2b2lkCiBSZXFTaHV0ZG93blhMT0coU0lHTkFM X0FSR1MpCiB7CiAJU2h1dGRvd25YTE9HUGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlM YXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAKQEAg LTEwMzMsMTQgKzEwMzUsMTQgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdzKQogCVNw aW5Mb2NrUmVsZWFzZSgmQ2hlY2twb2ludGVyU2htZW0tPmNrcHRfbGNrKTsKIAogCS8qCi0J ICogU2V0IGNoZWNrcG9pbnRlcidzIGxhdGNoIHRvIHJlcXVlc3QgY2hlY2twb2ludC4gIEl0 J3MgcG9zc2libGUgdGhhdCB0aGUKLQkgKiBjaGVja3BvaW50ZXIgaGFzbid0IHN0YXJ0ZWQg eWV0LCBzbyB3ZSB3aWxsIHJldHJ5IGEgZmV3IHRpbWVzIGlmCisJICogU2VuZCBJTlRFUlJV UFRfR0VORVJBTCB0byB3YWtlIHVwIHRoZSBjaGVja3BvaW50ZXIuICBJdCdzIHBvc3NpYmxl IHRoYXQKKwkgKiB0aGUgY2hlY2twb2ludGVyIGhhc24ndCBzdGFydGVkIHlldCwgc28gd2Ug d2lsbCByZXRyeSBhIGZldyB0aW1lcyBpZgogCSAqIG5lZWRlZC4gIChBY3R1YWxseSwgbW9y ZSB0aGFuIGEgZmV3IHRpbWVzLCBzaW5jZSBvbiBzbG93IG9yIG92ZXJsb2FkZWQKIAkgKiBi dWlsZGZhcm0gbWFjaGluZXMsIGl0J3MgYmVlbiBvYnNlcnZlZCB0aGF0IHRoZSBjaGVja3Bv aW50ZXIgY2FuIHRha2UKIAkgKiBzZXZlcmFsIHNlY29uZHMgdG8gc3RhcnQuKSAgSG93ZXZl ciwgaWYgbm90IHRvbGQgdG8gd2FpdCBmb3IgdGhlCi0JICogY2hlY2twb2ludCB0byBvY2N1 ciwgd2UgY29uc2lkZXIgZmFpbHVyZSB0byBzZXQgdGhlIGxhdGNoIHRvIGJlCi0JICogbm9u ZmF0YWwgYW5kIG1lcmVseSBMT0cgaXQuICBUaGUgY2hlY2twb2ludGVyIHNob3VsZCBzZWUg dGhlIHJlcXVlc3QKLQkgKiB3aGVuIGl0IGRvZXMgc3RhcnQsIHdpdGggb3Igd2l0aG91dCB0 aGUgU2V0TGF0Y2goKS4KKwkgKiBjaGVja3BvaW50IHRvIG9jY3VyLCB3ZSBjb25zaWRlciBm YWlsdXJlIHRvIHdha2UgdXAgdGhlIGNoZWNrcG9pbnRlciB0bworCSAqIGJlIG5vbmZhdGFs IGFuZCBtZXJlbHkgTE9HIGl0LiAgVGhlIGNoZWNrcG9pbnRlciBzaG91bGQgc2VlIHRoZSBy ZXF1ZXN0CisJICogd2hlbiBpdCBkb2VzIHN0YXJ0LCB3aXRoIG9yIHdpdGhvdXQgdGhlIFNl bmRJbnRlcnJ1cHQoKS4KIAkgKi8KICNkZWZpbmUgTUFYX1NJR05BTF9UUklFUyA2MDAJLyog bWF4IHdhaXQgNjAuMCBzZWMgKi8KIAlmb3IgKG50cmllcyA9IDA7OyBudHJpZXMrKykKQEAg LTEwNTksNyArMTA2MSw3IEBAIFJlcXVlc3RDaGVja3BvaW50KGludCBmbGFncykKIAkJfQog CQllbHNlCiAJCXsKLQkJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50 ZXJQcm9jKS0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwsIGNoZWNrcG9pbnRlclByb2MpOwogCQkJLyogbm90aWZpZWQgc3VjY2Vzc2Z1bGx5ICov CiAJCQlicmVhazsKIAkJfQpAQCAtMTE4Niw3ICsxMTg4LDcgQEAgRm9yd2FyZFN5bmNSZXF1 ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCQlQcm9j TnVtYmVyCWNoZWNrcG9pbnRlclByb2MgPSBwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9j OwogCiAJCWlmIChjaGVja3BvaW50ZXJQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0J CQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NM YXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBQcm9jR2xvYmFs LT5jaGVja3BvaW50ZXJQcm9jKTsKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5jCmluZGV4IDE0ZmQ3NGI0NmQz Li4xMGE0NzEwZjQwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRl cnJ1cHRfaGFuZGxlcnMuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVw dF9oYW5kbGVycy5jCkBAIC0xOCw4ICsxOCw4IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFs LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9h ZChTSUdOQUxfQVJHUykKIHsKIAlDb25maWdSZWxvYWRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRM YXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9 CiAKIC8qCkBAIC0xMDUsNSArMTA1LDUgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvclNodXRk b3duUmVxdWVzdChTSUdOQUxfQVJHUykKIHsKIAlTaHV0ZG93blJlcXVlc3RQZW5kaW5nID0g dHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJj aC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCAxY2QyYWU4N2Ux OC4uMWU5MjFjMGU2NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdh cmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtNDEsOCAr NDEsOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNoLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jc2lnbmFsLmgiCkBAIC0yNDcsOCArMjQ3LDggQEAgUGdBcmNoaXZlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlvbl9zaG1l bV9leGl0KHBnYXJjaF9kaWUsIDApOwogCiAJLyoKLQkgKiBBZHZlcnRpc2Ugb3VyIHByb2Mg bnVtYmVyIHNvIHRoYXQgYmFja2VuZHMgY2FuIHVzZSBvdXIgbGF0Y2ggdG8gd2FrZSB1cwot CSAqIHVwIHdoaWxlIHdlJ3JlIHNsZWVwaW5nLgorCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBu dW1iZXIgc28gdGhhdCBiYWNrZW5kcyBjYW4gd2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQorCSAq IHNsZWVwaW5nLgogCSAqLwogCVBnQXJjaC0+cGdwcm9jbm8gPSBNeVByb2NOdW1iZXI7CiAK QEAgLTI4MiwxMyArMjgyLDEyIEBAIFBnQXJjaFdha2V1cCh2b2lkKQogCWludAkJCWFyY2hf cGdwcm9jbm8gPSBQZ0FyY2gtPnBncHJvY25vOwogCiAJLyoKLQkgKiBXZSBkb24ndCBhY3F1 aXJlIFByb2NBcnJheUxvY2sgaGVyZS4gIEl0J3MgYWN0dWFsbHkgZmluZSBiZWNhdXNlCi0J ICogcHJvY0xhdGNoIGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuIHBvdGVudGlh bGx5IHNldCB0aGUgd3JvbmcKLQkgKiBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNo LiAgRXZlbiBpbiB0aGF0IGNhc2UgdGhlIGFyY2hpdmVyIHdpbGwKLQkgKiBiZSByZWxhdW5j aGVkIHNob3J0bHkgYW5kIHdpbGwgc3RhcnQgYXJjaGl2aW5nLgorCSAqIFdlIGRvbid0IGFj cXVpcmUgUHJvY0FycmF5TG9jayBoZXJlLCBzbyB3ZSBtYXkgc2VuZCB0aGUgaW50ZXJydXB0 IHRvCisJICogd3JvbmcgcHJvY2VzcywgYnV0IHRoYXQncyBoYXJtbGVzcy4gIEV2ZW4gaW4g dGhhdCBjYXNlIHRoZSBhcmNoaXZlcgorCSAqIHdpbGwgYmUgcmVsYXVuY2hlZCBzaG9ydGx5 IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KIAkgKi8KIAlpZiAoYXJjaF9wZ3Byb2NubyAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJv Y3NbYXJjaF9wZ3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwgYXJjaF9wZ3Byb2Nubyk7CiB9CiAKIApAQCAtMjk4LDcgKzI5Nyw3IEBA IHBnYXJjaF93YWtlbl9zdG9wKFNJR05BTF9BUkdTKQogewogCS8qIHNldCBmbGFnIHRvIGRv IGEgZmluYWwgY3ljbGUgYW5kIHNodXQgZG93biBhZnRlcndhcmRzICovCiAJcmVhZHlfdG9f c3RvcCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpAQCAtMzE4LDcgKzMxNyw3IEBAIHBnYXJjaF9N YWluTG9vcCh2b2lkKQogCSAqLwogCWRvCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gpOwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogV2hlbiB3ZSBn ZXQgU0lHVVNSMiwgd2UgZG8gb25lIG1vcmUgYXJjaGl2ZSBjeWNsZSwgdGhlbiBleGl0ICov CiAJCXRpbWVfdG9fc3RvcCA9IHJlYWR5X3RvX3N0b3A7CkBAIC0zNTUsMTAgKzM1NCwxMCBA QCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkJewogCQkJaW50CQkJcmM7CiAKLQkJCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VU IHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKLQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRF UlZBTCAqIDEwMDBMLAotCQkJCQkJICAgV0FJVF9FVkVOVF9BUkNISVZFUl9NQUlOKTsKKwkJ CXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSAg IFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAorCQkJ CQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRFUlZBTCAqIDEwMDBMLAorCQkJCQkJCSAgIFdB SVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CiAJCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RF QVRIKQogCQkJCXRpbWVfdG9fc3RvcCA9IHRydWU7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMKaW5kZXggZDJhN2E3YWRkNmYuLmE3MmUyODA4NDVjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpAQCAtMTA5LDYgKzEwOSw3IEBACiAjaW5j bHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93 YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL2JhY2tlbmRfc3RhcnR1cC5oIgpA QCAtNTQ5LDcgKzU1MCw2IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAKIAkvKiBUaGlzIG1heSBjb25maWd1cmUgU0lHVVJHLCBkZXBlbmRpbmcgb24gcGxh dGZvcm0uICovCiAJSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vz c0xvY2FsTGF0Y2goKTsKIAogCS8qCiAJICogTm8gb3RoZXIgcGxhY2UgaW4gUG9zdGdyZXMg c2hvdWxkIHRvdWNoIFNJR1RUSU4vU0lHVFRPVSBoYW5kbGluZy4gIFdlCkBAIC0xNjIwLDE0 ICsxNjIwLDE0IEBAIENvbmZpZ3VyZVBvc3RtYXN0ZXJXYWl0U2V0KGJvb2wgYWNjZXB0X2Nv bm5lY3Rpb25zKQogCiAJcG1fd2FpdF9zZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwK IAkJCQkJCQkJCSBhY2NlcHRfY29ubmVjdGlvbnMgPyAoMSArIE51bUxpc3RlblNvY2tldHMp IDogMSk7Ci0JQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX0xBVENIX1NFVCwg UEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRjaCwKLQkJCQkJICBOVUxMKTsKKwlBZGRXYWl0RXZl bnRUb1NldChwbV93YWl0X3NldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAor CQkJCQkgIDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIE5VTEwpOwogCiAJaWYgKGFjY2VwdF9j b25uZWN0aW9ucykKIAl7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgTnVtTGlzdGVuU29ja2V0 czsgaSsrKQogCQkJQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX1NPQ0tFVF9B Q0NFUFQsIExpc3RlblNvY2tldHNbaV0sCi0JCQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJ CQkgIDAsIE5VTEwpOwogCX0KIH0KIApAQCAtMTY1NiwxOSArMTY1NiwyMCBAQCBTZXJ2ZXJM b29wKHZvaWQpCiAJCQkJCQkJCSAgIDAgLyogcG9zdG1hc3RlciBwb3N0cyBubyB3YWl0X2V2 ZW50cyAqLyApOwogCiAJCS8qCi0JCSAqIExhdGNoIHNldCBieSBzaWduYWwgaGFuZGxlciwg b3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbiBhbnkgb2YKLQkJICogb3VyIHNvY2tldHM/ IElmIHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwgd2l0aCBpdC4K KwkJICogSW50ZXJydXB0IHJhaXNlZCBieSBzaWduYWwgaGFuZGxlciwgb3IgbmV3IGNvbm5l Y3Rpb24gcGVuZGluZyBvbgorCQkgKiBhbnkgb2Ygb3VyIHNvY2tldHM/ICBJZiB0aGUgbGF0 dGVyLCBmb3JrIGEgY2hpbGQgcHJvY2VzcyB0byBkZWFsCisJCSAqIHdpdGggaXQuCiAJCSAq LwogCQlmb3IgKGludCBpID0gMDsgaSA8IG5ldmVudHM7IGkrKykKIAkJewotCQkJaWYgKGV2 ZW50c1tpXS5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfSU5URVJSVVBUKQorCQkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJLyoKIAkJCSAqIFRoZSBmb2xs b3dpbmcgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdW5jb25kaXRpb25hbGx5LCBldmVuIGlmIHdl Ci0JCQkgKiBkaWRuJ3Qgc2VlIFdMX0xBVENIX1NFVC4gIFRoaXMgZ2l2ZXMgaGlnaCBwcmlv cml0eSB0byBzaHV0ZG93bgotCQkJICogYW5kIHJlbG9hZCByZXF1ZXN0cyB3aGVyZSB0aGUg bGF0Y2ggaGFwcGVucyB0byBhcHBlYXIgbGF0ZXIgaW4KLQkJCSAqIGV2ZW50c1tdIG9yIHdp bGwgYmUgcmVwb3J0ZWQgYnkgYSBsYXRlciBjYWxsIHRvCisJCQkgKiBkaWRuJ3Qgc2VlIFdM X0lOVEVSUlVQVC4gIFRoaXMgZ2l2ZXMgaGlnaCBwcmlvcml0eSB0byBzaHV0ZG93bgorCQkJ ICogYW5kIHJlbG9hZCByZXF1ZXN0cyB3aGVyZSB0aGUgaW50ZXJydXB0IGV2ZW50IGhhcHBl bnMgdG8gYXBwZWFyCisJCQkgKiBsYXRlciBpbiBldmVudHNbXSBvciB3aWxsIGJlIHJlcG9y dGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bwogCQkJICogV2FpdEV2ZW50U2V0V2FpdCgpLgogCQkJ ICovCiAJCQlpZiAocGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0KQpAQCAtMTk2MSw3ICsx OTYyLDcgQEAgc3RhdGljIHZvaWQKIGhhbmRsZV9wbV9wbXNpZ25hbF9zaWduYWwoU0lHTkFM X0FSR1MpCiB7CiAJcGVuZGluZ19wbV9wbXNpZ25hbCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlM YXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpA QCAtMTk3MSw3ICsxOTcyLDcgQEAgc3RhdGljIHZvaWQKIGhhbmRsZV9wbV9yZWxvYWRfcmVx dWVzdF9zaWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVuZGluZ19wbV9yZWxvYWRfcmVxdWVz dCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogfQogCiAvKgpAQCAtMjA0OCw3ICsyMDQ5LDcgQEAgaGFuZGxlX3Bt X3NodXRkb3duX3JlcXVlc3Rfc2lnbmFsKFNJR05BTF9BUkdTKQogCQkJcGVuZGluZ19wbV9z aHV0ZG93bl9yZXF1ZXN0ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCX0KLQlTZXRMYXRjaChNeUxh dGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBA IC0yMjA5LDcgKzIyMTAsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX2NoaWxkX2V4aXRf c2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdfcG1fY2hpbGRfZXhpdCA9IHRydWU7 Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFy dHVwLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwppbmRleCAyN2U4NmNm MzkzZi4uZjJhYzg2MjUxM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv c3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCkBAIC0y OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CkBAIC00MCw3ICs0MSw3IEBACiAgKiBPbiBzeXN0ZW1zIHRoYXQgbmVlZCB0byBtYWtlIGEg c3lzdGVtIGNhbGwgdG8gZmluZCBvdXQgaWYgdGhlIHBvc3RtYXN0ZXIgaGFzCiAgKiBnb25l IGF3YXksIHdlJ2xsIGRvIHNvIG9ubHkgZXZlcnkgTnRoIGNhbGwgdG8gUHJvY2Vzc1N0YXJ0 dXBQcm9jSW50ZXJydXB0cygpLgogICogVGhpcyBvbmx5IGFmZmVjdHMgaG93IGxvbmcgaXQg dGFrZXMgdXMgdG8gZGV0ZWN0IHRoZSBjb25kaXRpb24gd2hpbGUgd2UncmUKLSAqIGJ1c3kg cmVwbGF5aW5nIFdBTC4gIExhdGNoIHdhaXRzIGFuZCBzaW1pbGFyIHdoaWNoIHNob3VsZCBy ZWFjdCBpbW1lZGlhdGVseQorICogYnVzeSByZXBsYXlpbmcgV0FMLiAgSW50ZXJydXB0IHdh aXRzIGFuZCBzaW1pbGFyIHNob3VsZCByZWFjdCBpbW1lZGlhdGVseQogICogdGhyb3VnaCB0 aGUgdXN1YWwgdGVjaG5pcXVlcy4KICAqLwogI2RlZmluZSBQT1NUTUFTVEVSX1BPTExfUkFU RV9MSU1JVCAxMDI0CkBAIC0yMDUsNiArMjA2LDggQEAgU3RhcnR1cFByb2NFeGl0KGludCBj b2RlLCBEYXR1bSBhcmcpCiAJLyogU2h1dGRvd24gdGhlIHJlY292ZXJ5IGVudmlyb25tZW50 ICovCiAJaWYgKHN0YW5kYnlTdGF0ZSAhPSBTVEFOREJZX0RJU0FCTEVEKQogCQlTaHV0ZG93 blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCgpOworCisJUHJvY0dsb2JhbC0+c3Rh cnR1cFByb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogfQogCiAKQEAgLTIyMCw2ICsyMjMs MTIgQEAgU3RhcnR1cFByb2Nlc3NNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJTXlCYWNrZW5kVHlwZSA9IEJfU1RBUlRVUDsKIAlB dXhpbGlhcnlQcm9jZXNzTWFpbkNvbW1vbigpOwogCisJLyoKKwkgKiBBZHZlcnRpc2Ugb3Vy IHByb2MgbnVtYmVyIHNvIHRoYXQgYmFja2VuZHMgY2FuIHdha2UgdXMgdXAsIHdoZW4gdGhl CisJICogc2VydmVyIGlzIHByb21vdGVkIG9yIHJlY292ZXJ5IGlzIHBhdXNlZC9yZXN1bWVk LgorCSAqLworCVByb2NHbG9iYWwtPnN0YXJ0dXBQcm9jID0gTXlQcm9jTnVtYmVyOworCiAJ LyogQXJyYW5nZSB0byBjbGVhbiB1cCBhdCBzdGFydHVwIHByb2Nlc3MgZXhpdCAqLwogCW9u X3NobWVtX2V4aXQoU3RhcnR1cFByb2NFeGl0LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv c3lzbG9nZ2VyLmMKaW5kZXggMmE2MWE4Yjc2NmIuLjgwM2RjZGUwNzFiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKQEAgLTQ0LDggKzQ0LDggQEAKICNpbmNsdWRlICJw b3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3Qu aCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyOCw3ICszMjgsNyBAQCBTeXNMb2dn ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0Tm9uZTsKIAogCS8qCi0JICogU2V0IHVw IGEgcmV1c2FibGUgV2FpdEV2ZW50U2V0IG9iamVjdCB3ZSdsbCB1c2UgdG8gd2FpdCBmb3Ig b3VyIGxhdGNoLAorCSAqIFNldCB1cCBhIHJldXNhYmxlIFdhaXRFdmVudFNldCBvYmplY3Qg d2UnbGwgdXNlIHRvIHdhaXQgZm9yIGludGVycnVwdHMsCiAJICogYW5kIChleGNlcHQgb24g V2luZG93cykgb3VyIHNvY2tldC4KIAkgKgogCSAqIFVubGlrZSBhbGwgb3RoZXIgcG9zdG1h c3RlciBjaGlsZCBwcm9jZXNzZXMsIHdlJ2xsIGlnbm9yZSBwb3N0bWFzdGVyCkBAIC0zMzgs OSArMzM4LDkgQEAgU3lzTG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqIChpbmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIp LgogCSAqLwogCXdlcyA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKLQlBZGRXYWl0 RXZlbnRUb1NldCh3ZXMsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRj aCwgTlVMTCk7CisJQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5W QUxJRF9TT0NLRVQsIDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIE5VTEwpOwogI2lmbmRlZiBX SU4zMgotCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBzeXNs b2dQaXBlWzBdLCBOVUxMLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX1NP Q0tFVF9SRUFEQUJMRSwgc3lzbG9nUGlwZVswXSwgMCwgTlVMTCk7CiAjZW5kaWYKIAogCS8q IG1haW4gd29ya2VyIGxvb3AgKi8KQEAgLTM1Niw3ICszNTYsNyBAQCBTeXNMb2dnZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAj ZW5kaWYKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCiAJCS8qCiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVj ZWl2ZWQgcmVjZW50bHkuCkBAIC0xMTg4LDcgKzExODgsNyBAQCBwaXBlVGhyZWFkKHZvaWQg KmFyZykKIAkJCQkgZnRlbGxvKGNzdmxvZ0ZpbGUpID49IExvZ19Sb3RhdGlvblNpemUgKiAo cGdvZmZfdCkgMTAyNCkgfHwKIAkJCQkoanNvbmxvZ0ZpbGUgIT0gTlVMTCAmJgogCQkJCSBm dGVsbG8oanNvbmxvZ0ZpbGUpID49IExvZ19Sb3RhdGlvblNpemUgKiAocGdvZmZfdCkgMTAy NCkpCi0JCQkJU2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCQl9CiAJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzeXNsb2dnZXJT ZWN0aW9uKTsKIAl9CkBAIC0xMTk5LDggKzExOTksOCBAQCBwaXBlVGhyZWFkKHZvaWQgKmFy ZykKIAkvKiBpZiB0aGVyZSdzIGFueSBkYXRhIGxlZnQgdGhlbiBmb3JjZSBpdCBvdXQgbm93 ICovCiAJZmx1c2hfcGlwZV9pbnB1dChsb2didWZmZXIsICZieXRlc19pbl9sb2didWZmZXIp OwogCi0JLyogc2V0IHRoZSBsYXRjaCB0byB3YWtlbiB0aGUgbWFpbiB0aHJlYWQsIHdoaWNo IHdpbGwgcXVpdCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIHJhaXNlIHRoZSBpbnRl cnJ1cHQgdG8gd2FrZW4gdGhlIG1haW4gdGhyZWFkLCB3aGljaCB3aWxsIHF1aXQgKi8KKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAlMZWF2ZUNyaXRpY2FsU2Vj dGlvbigmc3lzbG9nZ2VyU2VjdGlvbik7CiAJX2VuZHRocmVhZCgpOwpAQCAtMTU5NSw1ICsx NTk1LDUgQEAgc3RhdGljIHZvaWQKIHNpZ1VzcjFIYW5kbGVyKFNJR05BTF9BUkdTKQogewog CXJvdGF0aW9uX3JlcXVlc3RlZCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFp c2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCAzMTg0OTYxNDYyYS4uOTI4OGExYjI5OWEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC0zOSw4ICszOSw4 IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9j ay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y3NpZ25hbC5oIgpAQCAtMzE2LDEwICszMTYsOCBAQCBXYWxTdW1tYXJpemVyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiBT byBhIHJlYWxseSBmYXN0IHJldHJ5IHRpbWUgZG9lc24ndCBzZWVtIHRvIGJlIGVzcGVjaWFs bHkKIAkJICogYmVuZWZpY2lhbCwgYW5kIGl0IHdpbGwgY2x1dHRlciB0aGUgbG9ncy4KIAkJ ICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTlVMTCwKLQkJCQkJCSBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMDAwMCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dB TF9TVU1NQVJJWkVSX0VSUk9SKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMCwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDEwMDAwLAorCQkJCQkJCSBXQUlUX0VWRU5U X1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKIAl9CiAKIAkvKiBXZSBjYW4gbm93IGhhbmRsZSBl cmVwb3J0KEVSUk9SKSAqLwpAQCAtNjMxLDggKzYyOSw4IEBAIEdldE9sZGVzdFVuc3VtbWFy aXplZExTTihUaW1lTGluZUlEICp0bGksIGJvb2wgKmxzbl9pc19leGFjdCkKICAqCiAgKiBU aGlzIG1pZ2h0IG5vdCB3b3JrLCBiZWNhdXNlIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQg dGhlIFdBTCBzdW1tYXJpemVyCiAgKiBwcm9jZXNzIHdhcyBzdWNjZXNzZnVsbHkgc3RhcnRl ZCwgYW5kIGl0IGFsc28gbWlnaHQgaGF2ZSBzdGFydGVkIGJ1dAotICogc3Vic2VxdWVudGx5 IHRlcm1pbmF0ZWQuIFNvLCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxs IGdldCB0aGUKLSAqIGxhdGNoIHNldCwgYnV0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlLgorICog c3Vic2VxdWVudGx5IHRlcm1pbmF0ZWQuIFNvLCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNl cywgdGhpcyB3aWxsIHNlbmQKKyAqIHRoZSBpbnRlcnJ1cHQsIGJ1dCB0aGVyZSdzIG5vIGd1 YXJhbnRlZS4KICAqLwogdm9pZAogV2FrZXVwV2FsU3VtbWFyaXplcih2b2lkKQpAQCAtNjQ3 LDcgKzY0NSw3IEBAIFdha2V1cFdhbFN1bW1hcml6ZXIodm9pZCkKIAlMV0xvY2tSZWxlYXNl KFdBTFN1bW1hcml6ZXJMb2NrKTsKIAogCWlmIChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0Nf TlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dLnBy b2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHBncHJvY25v KTsKIH0KIAogLyoKQEAgLTE2NDEsMTEgKzE2MzksMTEgQEAgc3VtbWFyaXplcl93YWl0X2Zv cl93YWwodm9pZCkKIAlwZ3N0YXRfcmVwb3J0X3dhbChmYWxzZSk7CiAKIAkvKiBPSywgbm93 IHNsZWVwLiAqLwotCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJIFdMX0xBVENI X1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgc2xlZXBf cXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0sCi0JCQkJCSBXQUlUX0VWRU5UX1dBTF9T VU1NQVJJWkVSX1dBTCk7Ci0JUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkodm9pZCkgV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIHNsZWVwX3F1YW50 YSAqIE1TX1BFUl9TTEVFUF9RVUFOVFVNLAorCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1B UklaRVJfV0FMKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkv KiBSZXNldCBjb3VudCBvZiBwYWdlcyByZWFkLiAqLwogCXBhZ2VzX3JlYWRfc2luY2VfbGFz dF9zbGVlcCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdy aXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwppbmRleCBkZTE2 YWM0YTk1Ni4uOTY3OGMwMWM1YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvd2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIu YwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAtMjIyLDEyICsyMjMsMTIgQEAgV2FsV3JpdGVyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CiAJCS8qCiAJCSAqIEFkdmVydGlzZSB3aGV0aGVyIHdlIG1pZ2h0IGhpYmVybmF0ZSBpbiB0 aGlzIGN5Y2xlLiAgV2UgZG8gdGhpcwotCQkgKiBiZWZvcmUgcmVzZXR0aW5nIHRoZSBsYXRj aCB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmMgY29tbWl0cyB3aWxsCi0JCSAqIHNlZSB0aGUg ZmxhZyBzZXQgaWYgdGhleSBtaWdodCBwb3NzaWJseSBuZWVkIHRvIHdha2UgdXMgdXAsIGFu ZAotCQkgKiB0aGF0IHdlIHdvbid0IG1pc3MgYW55IHNpZ25hbCB0aGV5IHNlbmQgdXMuICAo SWYgd2UgZGlzY292ZXIgd29yawotCQkgKiB0byBkbyBpbiB0aGUgbGFzdCBjeWNsZSBiZWZv cmUgd2Ugd291bGQgaGliZXJuYXRlLCB0aGUgZ2xvYmFsIGZsYWcKLQkJICogd2lsbCBiZSBz ZXQgdW5uZWNlc3NhcmlseSwgYnV0IGxpdHRsZSBoYXJtIGlzIGRvbmUuKSAgQnV0IGF2b2lk Ci0JCSAqIHRvdWNoaW5nIHRoZSBnbG9iYWwgZmxhZyBpZiBpdCBkb2Vzbid0IG5lZWQgdG8g Y2hhbmdlLgorCQkgKiBiZWZvcmUgY2xlYXJpbmcgdGhlIGludGVycnVwdCBmbGFnIHRvIGVu c3VyZSB0aGF0IGFueSBhc3luYyBjb21taXRzCisJCSAqIHdpbGwgc2VlIHRoZSBmbGFnIHNl dCBpZiB0aGV5IG1pZ2h0IHBvc3NpYmx5IG5lZWQgdG8gd2FrZSB1cyB1cCwKKwkJICogYW5k IHRoYXQgd2Ugd29uJ3QgbWlzcyBhbnkgc2lnbmFsIHRoZXkgc2VuZCB1cy4gIChJZiB3ZSBk aXNjb3ZlcgorCQkgKiB3b3JrIHRvIGRvIGluIHRoZSBsYXN0IGN5Y2xlIGJlZm9yZSB3ZSB3 b3VsZCBoaWJlcm5hdGUsIHRoZSBnbG9iYWwKKwkJICogZmxhZyB3aWxsIGJlIHNldCB1bm5l Y2Vzc2FyaWx5LCBidXQgbGl0dGxlIGhhcm0gaXMgZG9uZS4pICBCdXQKKwkJICogYXZvaWQg dG91Y2hpbmcgdGhlIGdsb2JhbCBmbGFnIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2Uu CiAJCSAqLwogCQlpZiAoaGliZXJuYXRpbmcgIT0gKGxlZnRfdGlsbF9oaWJlcm5hdGUgPD0g MSkpCiAJCXsKQEAgLTIzNiw3ICsyMzcsNyBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZvaWQg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCX0KIAogCQkvKiBD bGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8qIFBy b2Nlc3MgYW55IHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KIAkJUHJvY2Vzc01haW5M b29wSW50ZXJydXB0cygpOwpAQCAtMjYzLDkgKzI2NCw5IEBAIFdhbFdyaXRlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJZWxz ZQogCQkJY3VyX3RpbWVvdXQgPSBXYWxXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1I7 CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIGN1cl90aW1lb3V0 LAotCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGN1cl90aW1l b3V0LAorCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTik7CiAJfQogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJw cXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2Vp dmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCAxYjE1OGM5ZDI4OC4uNDExMzdiNGQzNzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIv bGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBx d2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIK KyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9w Z19sc24uaCIKQEAgLTIzNywxNiArMjM3LDE2IEBAIGxpYnBxcmN2X2Nvbm5lY3QoY29uc3Qg Y2hhciAqY29ubmluZm8sIGJvb2wgcmVwbGljYXRpb24sIGJvb2wgbG9naWNhbCwKIAkJZWxz ZQogCQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJcmMgPSBXYWl0TGF0 Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBX TF9MQVRDSF9TRVQgfCBpb19mbGFnLAotCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVh bUNvbm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9MSUJQUVdBTFJF Q0VJVkVSX0NPTk5FQ1QpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xf SU5URVJSVVBUIHwgaW9fZmxhZywKKwkJCQkJCQkJICAgUFFzb2NrZXQoY29ubi0+c3RyZWFt Q29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTElCUFFXQUxS RUNFSVZFUl9DT05ORUNUKTsKIAogCQkvKiBJbnRlcnJ1cHRlZD8gKi8KLQkJaWYgKHJjICYg V0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwogCQl9CiAKQEAgLTg0OCwxNyArODQ4 LDE3IEBAIGxpYnBxcmN2X1BRZ2V0UmVzdWx0KFBHY29ubiAqc3RyZWFtQ29ubikKIAkJICog c2luY2Ugd2UnbGwgZ2V0IGludGVycnVwdGVkIGJ5IHNpZ25hbHMgYW5kIGNhbiBoYW5kbGUg YW55CiAJCSAqIGludGVycnVwdHMgaGVyZS4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoT3JT b2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfU09D S0VUX1JFQURBQkxFIHwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQsCi0JCQkJCQkJICAgUFFz b2NrZXQoc3RyZWFtQ29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICBXQUlUX0VWRU5U X0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CisJCXJjID0gV2FpdEludGVycnVwdE9yU29j a2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1f REVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQs CisJCQkJCQkJCSAgIFBRc29ja2V0KHN0cmVhbUNvbm4pLAorCQkJCQkJCQkgICAwLAorCQkJ CQkJCQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CiAKIAkJLyog SW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYg V0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dhbFJjdkludGVycnVw dHMoKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDRkMmQzZmQyYzU2Li41ZDI3YjRk NTg4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTE2NSw2ICsxNjUsNyBAQAogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9v cmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgpAQCAtODA0LDEzICs4MDUsMTMgQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9t cV9oYW5kbGUgKm1xaCkKIAkJCQlpbnQJCQlyYzsKIAogCQkJCS8qIFdhaXQgZm9yIG1vcmUg d29yay4gKi8KLQkJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAg IDEwMDBMLAotCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9N QUlOKTsKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwK KwkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJCSAgIDEwMDBMLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lD QUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7CiAKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQp Ci0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJaWYgKHJjICYgV0xfSU5URVJSVVBU KQorCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQl9CiAJCX0K IAkJZWxzZQpAQCAtOTkwLDcgKzk5MSw3IEBAIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl SW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJUGFyYWxs ZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xMTgyLDE0 ICsxMTgzLDE0IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCQlBc3NlcnQocmVzdWx0ID09 IFNITV9NUV9XT1VMRF9CTE9DSyk7CiAKIAkJLyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICov Ci0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICBTSE1fU0VORF9SRVRS WV9JTlRFUlZBTF9NUywKLQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRf REFUQSk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKKwkJCQkJCSAgIFdB SVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9TRU5EX0RBVEEpOwogCi0JCWlmIChyYyAmIFdMX0xB VENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCkBAIC0xMjU0LDEzICsxMjU1LDEzIEBA IHBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv LAogCQkJYnJlYWs7CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCi0JCSh2b2lk KSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMEwsCi0JCQkJCQkgV0FJVF9FVkVO VF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisJCSh2b2lkKSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAxMEwsCisJ CQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0Up OwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2Ug ZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwog CiAJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdh aXRpbmcuICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggNDM0YmIxZjZmNjIuLjY1Nzhj ODMxOTRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBAIC0yMDksMTYgKzIxMCwxNyBA QCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLAogCQl9CiAKIAkJLyoKLQkJICogV2UgbmVlZCB0aW1lb3V0IGJlY2F1c2Ugd2UgZ2Vu ZXJhbGx5IGRvbid0IGdldCBub3RpZmllZCB2aWEgbGF0Y2gKLQkJICogYWJvdXQgdGhlIHdv cmtlciBhdHRhY2guICBCdXQgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25n LgorCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgZG9uJ3QgZ2V0 IG5vdGlmaWVkIHZpYSBhbgorCQkgKiBpbnRlcnJ1cHQgYWJvdXQgdGhlIHdvcmtlciBhdHRh Y2guICBCdXQgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8KKwkJICogd2FpdCBsb25nLgog CQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJ VF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwg SU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dP UktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAJCX0KIAl9CkBAIC01NDQsMTMgKzU0NiwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0 IC0tLSB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JL RVJfU1RBUlRVUCk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7 CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQp CiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAg LTU4NSwxMyArNTg3LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyLCBpbnQgc2lnbm8pCiAJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwogCiAJCS8qIFdhaXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4 cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZy4gKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRj aCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CisJ CXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOwogCi0JCWlmIChyYyAm IFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCkBAIC02NjcsNyArNjY5LDcg QEAgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8pCiB9CiAKIC8qCi0gKiBXYWtlIHVwICh1c2luZyBsYXRjaCkgYW55IGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyIGZvciBzcGVjaWZpZWQgc3ViL3JlbC4KKyAqIFdha2UgdXAg KHVzaW5nIGludGVycnVwdCkgYW55IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBz cGVjaWZpZWQgc3ViL3JlbC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93b3JrZXJfd2FrZXVw KE9pZCBzdWJpZCwgT2lkIHJlbGlkKQpAQCAtNjg1LDcgKzY4Nyw3IEBAIGxvZ2ljYWxyZXBf d29ya2VyX3dha2V1cChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIH0KIAogLyoKLSAqIFdha2Ug dXAgKHVzaW5nIGxhdGNoKSB0aGUgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyLgorICogV2FrZSB1cCAodXNpbmcgaW50ZXJydXB0KSB0aGUgc3BlY2lmaWVkIGxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyLgogICoKICAqIENhbGxlciBtdXN0IGhvbGQgbG9jaywg ZWxzZSB3b3JrZXItPnByb2MgY291bGQgY2hhbmdlIHVuZGVyIHVzLgogICovCkBAIC02OTQs NyArNjk2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29y a2VyICp3b3JrZXIpCiB7CiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKSk7CiAKLQlTZXRMYXRjaCgmd29ya2VyLT5wcm9jLT5wcm9jTGF0Y2gpOworCVNl bmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2Mod29y a2VyLT5wcm9jKSk7CiB9CiAKIC8qCkBAIC0xMjEyLDE0ICsxMjE0LDE0IEBAIEFwcGx5TGF1 bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHN1YmN0 eCk7CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQlyYyA9IFdhaXRMYXRjaChN eUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKLQkJCQkJICAgd2FpdF90aW1lLAotCQkJCQkgICBXQUlUX0VWRU5UX0xP R0lDQUxfTEFVTkNIRVJfTUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICB3YWl0X3RpbWUsCisJCQkJCQkgICBXQUlU X0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hf U0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCA0NGNjNWM2ZmMzNy4uNTA1Y2YyMWMxNDMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTU5 LDYgKzU5LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbmFw YnVpbGQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCkBAIC0xMjUyLDEzICsxMjUzLDEzIEBAIHdhaXRfZm9yX3Nsb3RfYWN0 aXZpdHkoYm9vbCBzb21lX3Nsb3RfdXBkYXRlZCkKIAkJc2xlZXBfbXMgPSBNSU5fU0xPVFNZ TkNfV09SS0VSX05BUFRJTUVfTVM7CiAJfQogCi0JcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkgICBzbGVlcF9tcywKLQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NM T1RTWU5DX01BSU4pOworCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJICAgc2xlZXBfbXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElD QVRJT05fU0xPVFNZTkNfTUFJTik7CiAKLQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJaWYgKHJjICYgV0xfSU5URVJSVVBUKQorCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xNTg4LDEzICsxNTg5 LDEzIEBAIFNodXREb3duU2xvdFN5bmModm9pZCkKIAkJaW50CQkJcmM7CiAKIAkJLyogV2Fp dCBhIGJpdCwgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nICovCi0JCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQ TElDQVRJT05fU0xPVFNZTkNfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX1JF UExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggNmFmNWM5ZmUxNmMuLjg3N2ZiN2FjYTM2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAg LTExMSw2ICsxMTEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTIxMCwxMSArMjExLDExIEBAIHdhaXRfZm9yX3Jl bGF0aW9uX3N0YXRlX2NoYW5nZShPaWQgcmVsaWQsIGNoYXIgZXhwZWN0ZWRfc3RhdGUpCiAJ CWlmICghd29ya2VyKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFO R0UpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5H RSk7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTI2MCwxNSArMjYxLDE1 IEBAIHdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9jaGFuZ2UoY2hhciBleHBlY3RlZF9zdGF0ZSkK IAkJCWJyZWFrOwogCiAJCS8qCi0JCSAqIFdhaXQuICBXZSBleHBlY3QgdG8gZ2V0IGEgbGF0 Y2ggc2lnbmFsIGJhY2sgZnJvbSB0aGUgYXBwbHkgd29ya2VyLAorCQkgKiBXYWl0LiAgV2Ug ZXhwZWN0IHRvIGdldCBhbiBpbnRlcnJ1cHQgd2FrZXVwIGZyb20gdGhlIGFwcGx5IHdvcmtl ciwKIAkJICogYnV0IHVzZSBhIHRpbWVvdXQgaW4gY2FzZSBpdCBkaWVzIHdpdGhvdXQgc2Vu ZGluZyBvbmUuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ ICAgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCXJj ID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xf SU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkg ICAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKIAotCQlp ZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlpZiAo cmMgJiBXTF9JTlRFUlJVUFQpCisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CiAJfQogCiAJcmV0dXJuIGZhbHNlOwpAQCAtNTU1LDcgKzU1Niw3IEBAIHByb2Nlc3Nf c3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJ CQkgKiB0aGUgZXhpc3RpbmcgbG9ja3MgYmVmb3JlIGVudGVyaW5nIGEgYnVzeSBsb29wLgog CQkJCQkJICogVGhpcyBpcyByZXF1aXJlZCB0byBhdm9pZCBhbnkgdW5kZXRlY3RlZCBkZWFk bG9ja3MKIAkJCQkJCSAqIGR1ZSB0byBhbnkgZXhpc3RpbmcgbG9jayBhcyBkZWFkbG9jayBk ZXRlY3RvciB3b24ndAotCQkJCQkJICogYmUgYWJsZSB0byBkZXRlY3QgdGhlIHdhaXRzIG9u IHRoZSBsYXRjaC4KKwkJCQkJCSAqIGJlIGFibGUgdG8gZGV0ZWN0IHRoZSB3YWl0cyBvbiB0 aGUgaW50ZXJydXB0CiAJCQkJCQkgKi8KIAkJCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCQkJCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKQEAgLTc3MSwxNCArNzcy LDE0IEBAIGNvcHlfcmVhZF9kYXRhKHZvaWQgKm91dGJ1ZiwgaW50IG1pbnJlYWQsIGludCBt YXhyZWFkKQogCQl9CiAKIAkJLyoKLQkJICogV2FpdCBmb3IgbW9yZSBkYXRhIG9yIGxhdGNo LgorCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgaW50ZXJydXB0LgogCQkgKi8KLQkJKHZv aWQpIFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJCSBXTF9TT0NLRVRfUkVB REFCTEUgfCBXTF9MQVRDSF9TRVQgfAotCQkJCQkJCQkgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCi0JCQkJCQkJCSBmZCwgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9T WU5DX0RBVEEpOworCQkodm9pZCkgV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJS VVBUX0dFTkVSQUwsCisJCQkJCQkJCQkgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfSU5URVJS VVBUIHwKKwkJCQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCQkJCSBmZCwgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEpOwogCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAl9CiAKIAlyZXR1cm4gYnl0ZXNyZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNjdkMDY0N2FhMzIuLjI5ZDAzYWYwYWM1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE3Nyw2 ICsxNzcsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgog I2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1ZmZpbGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgpAQCAtMzc0MiwyNiArMzc0MywyNiBAQCBMb2dpY2FsUmVwQXBw bHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJCWJyZWFrOwogCiAJCS8qCi0J CSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBsYXRjaC4gIElmIHdlIGhhdmUgdW5mbHVzaGVk IHRyYW5zYWN0aW9ucywKLQkJICogd2FrZSB1cCBhZnRlciBXYWxXcml0ZXJEZWxheSB0byBz ZWUgaWYgdGhleSd2ZSBiZWVuIGZsdXNoZWQgeWV0IChpbgotCQkgKiB3aGljaCBjYXNlIHdl IHNob3VsZCBzZW5kIGEgZmVlZGJhY2sgbWVzc2FnZSkuICBPdGhlcndpc2UsIHRoZXJlJ3MK LQkJICogbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdha2luZyB1cCB1bmxlc3Mgd2Ug Z2V0IGRhdGEgb3IgYQotCQkgKiBzaWduYWwuCisJCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBv ciBpbnRlcnJ1cHQuICBJZiB3ZSBoYXZlIHVuZmx1c2hlZAorCQkgKiB0cmFuc2FjdGlvbnMs IHdha2UgdXAgYWZ0ZXIgV2FsV3JpdGVyRGVsYXkgdG8gc2VlIGlmIHRoZXkndmUgYmVlbgor CQkgKiBmbHVzaGVkIHlldCAoaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgc2VuZCBhIGZlZWRi YWNrIG1lc3NhZ2UpLgorCQkgKiBPdGhlcndpc2UsIHRoZXJlJ3Mgbm8gcGFydGljdWxhciB1 cmdlbmN5IGFib3V0IHdha2luZyB1cCB1bmxlc3Mgd2UKKwkJICogZ2V0IGRhdGEgb3IgYSBz aWduYWwuCiAJCSAqLwogCQlpZiAoIWRsaXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZykpCiAJ CQl3YWl0X3RpbWUgPSBXYWxXcml0ZXJEZWxheTsKIAkJZWxzZQogCQkJd2FpdF90aW1lID0g TkFQVElNRV9QRVJfQ1lDTEU7CiAKLQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNo LAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJ CQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgZmQs IHdhaXRfdGltZSwKLQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTik7 CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUws CisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJ CQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICBm ZCwgd2FpdF90aW1lLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJ Tik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJV UFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwppbmRleCBkNzVlMzk2ODAzNS4uMWMwZDc5 Yjg1NjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKQEAgLTgxLDYgKzgxLDcg QEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyX3By aXZhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWNfaG9va3MuaCIKQEAgLTIyMiwyMiArMjIzLDIyIEBAIFN5bmNSZXBXYWl0Rm9y TFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkvKgogCSAqIFdhaXQgZm9yIHNw ZWNpZmllZCBMU04gdG8gYmUgY29uZmlybWVkLgogCSAqCi0JICogRWFjaCBwcm9jIGhhcyBp dHMgb3duIHdhaXQgbGF0Y2gsIHNvIHdlIHBlcmZvcm0gYSBub3JtYWwgbGF0Y2gKKwkgKiBF YWNoIHByb2MgaGFzIGl0cyBvd24gd2FpdCBpbnRlcnJ1cHQgdmVjdG9yLCBzbyB3ZSBwZXJm b3JtIGEgbm9ybWFsCiAJICogY2hlY2svd2FpdCBsb29wIGhlcmUuCiAJICovCiAJZm9yICg7 OykKIAl7CiAJCWludAkJCXJjOwogCi0JCS8qIE11c3QgcmVzZXQgdGhlIGxhdGNoIGJlZm9y ZSB0ZXN0aW5nIHN0YXRlLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBNdXN0 IGNsZWFyIHRoZSBpbnRlcnJ1cHQgZmxhZyBiZWZvcmUgdGVzdGluZyBzdGF0ZS4gKi8KKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8qCi0JCSAqIEFjcXVp cmluZyB0aGUgbG9jayBpcyBub3QgbmVlZGVkLCB0aGUgbGF0Y2ggZW5zdXJlcyBwcm9wZXIK LQkJICogYmFycmllcnMuIElmIGl0IGxvb2tzIGxpa2Ugd2UncmUgZG9uZSwgd2UgbXVzdCBy ZWFsbHkgYmUgZG9uZSwKLQkJICogYmVjYXVzZSBvbmNlIHdhbHNlbmRlciBjaGFuZ2VzIHRo ZSBzdGF0ZSB0byBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFLAotCQkgKiBpdCB3aWxsIG5ldmVy IHVwZGF0ZSBpdCBhZ2Fpbiwgc28gd2UgY2FuJ3QgYmUgc2VlaW5nIGEgc3RhbGUgdmFsdWUK LQkJICogaW4gdGhhdCBjYXNlLgorCQkgKiBBY3F1aXJpbmcgdGhlIGxvY2sgaXMgbm90IG5l ZWRlZCwgdGhlIGludGVycnVwdCBlbnN1cmVzIHByb3BlcgorCQkgKiBiYXJyaWVycyAoRklY TUU6IGlzIHRoYXQgc28/KS4gSWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBkb25lLCB3ZSBtdXN0 CisJCSAqIHJlYWxseSBiZSBkb25lLCBiZWNhdXNlIG9uY2Ugd2Fsc2VuZGVyIGNoYW5nZXMg dGhlIHN0YXRlIHRvCisJCSAqIFNZTkNfUkVQX1dBSVRfQ09NUExFVEUsIGl0IHdpbGwgbmV2 ZXIgdXBkYXRlIGl0IGFnYWluLCBzbyB3ZSBjYW4ndAorCQkgKiBiZSBzZWVpbmcgYSBzdGFs ZSB2YWx1ZSBpbiB0aGF0IGNhc2UuCiAJCSAqLwogCQlpZiAoTXlQcm9jLT5zeW5jUmVwU3Rh dGUgPT0gU1lOQ19SRVBfV0FJVF9DT01QTEVURSkKIAkJCWJyZWFrOwpAQCAtMjgyLDExICsy ODMsMTMgQEAgU3luY1JlcFdhaXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0 KQogCQl9CiAKIAkJLyoKLQkJICogV2FpdCBvbiBsYXRjaC4gIEFueSBjb25kaXRpb24gdGhh dCBzaG91bGQgd2FrZSB1cyB1cCB3aWxsIHNldCB0aGUKLQkJICogbGF0Y2gsIHNvIG5vIG5l ZWQgZm9yIHRpbWVvdXQuCisJCSAqIFdhaXQgb24gaW50ZXJydXB0LiAgQW55IGNvbmRpdGlv biB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0CisJCSAqIHRoZSBpbnRlcnJ1cHQs IHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAtMSwKLQkJCQkJICAg V0FJVF9FVkVOVF9TWU5DX1JFUCk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9E RUFUSCwKKwkJCQkJCSAgIC0xLAorCQkJCQkJICAgV0FJVF9FVkVOVF9TWU5DX1JFUCk7CiAK IAkJLyoKIAkJICogSWYgdGhlIHBvc3RtYXN0ZXIgZGllcywgd2UnbGwgcHJvYmFibHkgbmV2 ZXIgZ2V0IGFuIGFja25vd2xlZGdtZW50LApAQCAtOTAyLDcgKzkwNSw3IEBAIFN5bmNSZXBX YWtlUXVldWUoYm9vbCBhbGwsIGludCBtb2RlKQogCQkvKgogCQkgKiBXYWtlIG9ubHkgd2hl biB3ZSBoYXZlIHNldCBzdGF0ZSBhbmQgcmVtb3ZlZCBmcm9tIHF1ZXVlLgogCQkgKi8KLQkJ U2V0TGF0Y2goJihwcm9jLT5wcm9jTGF0Y2gpKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAKIAkJbnVtcHJvY3Mr KzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCA3Mzky ZTg5NzY3ZC4uNGJjMjNhZTIxYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYwpAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKQEAgLTE0Niwx NyArMTQ3LDE3IEBAIHN0YXRpYyB2b2lkIFByb2Nlc3NXYWxTbmRyTWVzc2FnZShYTG9nUmVj UHRyIHdhbEVuZCwgVGltZXN0YW1wVHogc2VuZFRpbWUpOwogc3RhdGljIHZvaWQgV2FsUmN2 Q29tcHV0ZU5leHRXYWtldXAoV2FsUmN2V2FrZXVwUmVhc29uIHJlYXNvbiwgVGltZXN0YW1w VHogbm93KTsKIAogLyoKLSAqIFByb2Nlc3MgYW55IGludGVycnVwdHMgdGhlIHdhbHJlY2Vp dmVyIHByb2Nlc3MgbWF5IGhhdmUgcmVjZWl2ZWQuCi0gKiBUaGlzIHNob3VsZCBiZSBjYWxs ZWQgYW55IHRpbWUgdGhlIHByb2Nlc3MncyBsYXRjaCBoYXMgYmVjb21lIHNldC4KKyAqIFBy b2Nlc3MgYW55IGludGVycnVwdHMgdGhlIHdhbHJlY2VpdmVyIHByb2Nlc3MgbWF5IGhhdmUg cmVjZWl2ZWQuICBUaGlzCisgKiBzaG91bGQgYmUgY2FsbGVkIGFueSB0aW1lIHRoZSBJTlRF UlJVUFRfR0VORVJBTCBpbnRlcnJ1cHQgaGFzIGJlY29tZSBzZXQuCiAgKgogICogQ3VycmVu dGx5LCBvbmx5IFNJR1RFUk0gaXMgb2YgaW50ZXJlc3QuICBXZSBjYW4ndCBqdXN0IGV4aXQo MSkgd2l0aGluIHRoZQogICogU0lHVEVSTSBzaWduYWwgaGFuZGxlciwgYmVjYXVzZSB0aGUg c2lnbmFsIG1pZ2h0IGFycml2ZSBpbiB0aGUgbWlkZGxlIG9mCiAgKiBzb21lIGNyaXRpY2Fs IG9wZXJhdGlvbiwgbGlrZSB3aGlsZSB3ZSdyZSBob2xkaW5nIGEgc3BpbmxvY2suICBJbnN0 ZWFkLCB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHNldHMgYSBmbGFnIHZhcmlhYmxlIGFzIHdl bGwgYXMgc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoLgorICogc2lnbmFsIGhhbmRsZXIg c2V0cyBhIGZsYWcgdmFyaWFibGUgYXMgd2VsbCBhcyByYWlzaW5nIElOVEVSUlVQVF9HRU5F UkFMLgogICogV2UgbXVzdCBjaGVjayB0aGUgZmxhZyAoYnkgY2FsbGluZyBQcm9jZXNzV2Fs UmN2SW50ZXJydXB0cykgYW55dGltZSB0aGUKLSAqIGxhdGNoIGhhcyBiZWNvbWUgc2V0LiAg T3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIGZvciBhIGxvbmcgdGltZSwgc3VjaCBhcwot ICogcmVhZGluZyBmcm9tIGEgcmVtb3RlIHNlcnZlciwgbXVzdCBwYXkgYXR0ZW50aW9uIHRv IHRoZSBsYXRjaCB0b287IHNlZQotICogbGlicHFyY3ZfUFFnZXRSZXN1bHQgZm9yIGV4YW1w bGUuCisgKiBJTlRFUlJVUFRfR0VORVJBTCBoYXMgYmVjb21lIHNldC4gIE9wZXJhdGlvbnMg dGhhdCBjb3VsZCBibG9jayBmb3IgYSBsb25nCisgKiB0aW1lLCBzdWNoIGFzIHJlYWRpbmcg ZnJvbSBhIHJlbW90ZSBzZXJ2ZXIsIG11c3QgcGF5IGF0dGVudGlvbiB0byB0aGUKKyAqIGlu dGVycnVwdCB0b287IHNlZSBsaWJwcXJjdl9QUWdldFJlc3VsdCBmb3IgZXhhbXBsZS4KICAq Lwogdm9pZAogUHJvY2Vzc1dhbFJjdkludGVycnVwdHModm9pZCkKQEAgLTUzNiwyNSArNTM3 LDI1IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCiAJCQkJLyoKIAkJCQkgKiBJZGVhbGx5IHdlIHdvdWxk IHJldXNlIGEgV2FpdEV2ZW50U2V0IG9iamVjdCByZXBlYXRlZGx5Ci0JCQkJICogaGVyZSB0 byBhdm9pZCB0aGUgb3ZlcmhlYWRzIG9mIFdhaXRMYXRjaE9yU29ja2V0IG9uIGVwb2xsCi0J CQkJICogc3lzdGVtcywgYnV0IHdlIGNhbid0IGJlIHN1cmUgdGhhdCBsaWJwcSAob3IgYW55 IG90aGVyCi0JCQkJICogd2FscmVjZWl2ZXIgaW1wbGVtZW50YXRpb24pIGhhcyB0aGUgc2Ft ZSBzb2NrZXQgKGV2ZW4gaWYKLQkJCQkgKiB0aGUgZmQgaXMgdGhlIHNhbWUgbnVtYmVyLCBp dCBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhbmQKKwkJCQkgKiBoZXJlIHRvIGF2b2lkIHRoZSBv dmVyaGVhZHMgb2YgV2FpdEludGVycnVwdE9yU29ja2V0IG9uCisJCQkJICogZXBvbGwgc3lz dGVtcywgYnV0IHdlIGNhbid0IGJlIHN1cmUgdGhhdCBsaWJwcSAob3IgYW55CisJCQkJICog b3RoZXIgd2FscmVjZWl2ZXIgaW1wbGVtZW50YXRpb24pIGhhcyB0aGUgc2FtZSBzb2NrZXQg KGV2ZW4KKwkJCQkgKiBpZiB0aGUgZmQgaXMgdGhlIHNhbWUgbnVtYmVyLCBpdCBtYXkgaGF2 ZSBiZWVuIGNsb3NlZCBhbmQKIAkJCQkgKiByZW9wZW5lZCBzaW5jZSB0aGUgbGFzdCB0aW1l KS4gIEluIGZ1dHVyZSwgaWYgdGhlcmUgaXMgYQogCQkJCSAqIGZ1bmN0aW9uIGZvciByZW1v dmluZyBzb2NrZXRzIGZyb20gV2FpdEV2ZW50U2V0LCB0aGVuIHdlCiAJCQkJICogY291bGQg YWRkIGFuZCByZW1vdmUganVzdCB0aGUgc29ja2V0IGVhY2ggdGltZSwgcG90ZW50aWFsbHkK IAkJCQkgKiBhdm9pZGluZyBzb21lIHN5c3RlbSBjYWxscy4KIAkJCQkgKi8KIAkJCQlBc3Nl cnQod2FpdF9mZCAhPSBQR0lOVkFMSURfU09DS0VUKTsKLQkJCQlyYyA9IFdhaXRMYXRjaE9y U29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xf U09DS0VUX1JFQURBQkxFIHwKLQkJCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9MQVRDSF9T RVQsCi0JCQkJCQkJCQkgICB3YWl0X2ZkLAotCQkJCQkJCQkJICAgbmFwLAotCQkJCQkJCQkJ ICAgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTik7Ci0JCQkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQkJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tF VF9SRUFEQUJMRSB8CisJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQVCwK KwkJCQkJCQkJCQkgICB3YWl0X2ZkLAorCQkJCQkJCQkJCSAgIG5hcCwKKwkJCQkJCQkJCQkg ICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9NQUlOKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRF UlJVUFQpCiAJCQkJewotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1 cHRzKCk7CiAKIAkJCQkJaWYgKHdhbHJjdi0+Zm9yY2VfcmVwbHkpCkBAIC03MDIsNyArNzAz LDcgQEAgV2FsUmN2V2FpdEZvclN0YXJ0UG9zaXRpb24oWExvZ1JlY1B0ciAqc3RhcnRwb2lu dCwgVGltZUxpbmVJRCAqc3RhcnRwb2ludFRMSSkKIAlXYWtldXBSZWNvdmVyeSgpOwogCWZv ciAoOzspCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKIApA QCAtNzM0LDggKzczNSwxMCBAQCBXYWxSY3ZXYWl0Rm9yU3RhcnRQb3NpdGlvbihYTG9nUmVj UHRyICpzdGFydHBvaW50LCBUaW1lTGluZUlEICpzdGFydHBvaW50VExJKQogCQl9CiAJCVNw aW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChN eUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJ IFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQpOworCQkodm9pZCkgV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAwLAorCQkJCQkJCSBXQUlUX0VWRU5U X1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUKTsKIAl9CiAKIAlpZiAodXBkYXRlX3Byb2Nlc3Nf dGl0bGUpCkBAIC0xMzc2LDcgKzEzNzksNyBAQCBXYWxSY3ZGb3JjZVJlcGx5KHZvaWQpCiAJ cHJvY25vID0gV2FsUmN2LT5wcm9jbm87CiAJU3BpbkxvY2tSZWxlYXNlKCZXYWxSY3YtPm11 dGV4KTsKIAlpZiAocHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNo KCZHZXRQR1Byb2NCeU51bWJlcihwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMLCBwcm9jbm8pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCmluZGV4IDhkZTI4ODZmZjBiLi40 Zjc1MjIwMDhmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXJmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy ZnVuY3MuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3Zl cnkuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKQEAgLTMxNyw3ICszMTgsNyBAQCBSZXF1ZXN0WExvZ1N0 cmVhbWluZyhUaW1lTGluZUlEIHRsaSwgWExvZ1JlY1B0ciByZWNwdHIsIGNvbnN0IGNoYXIg KmNvbm5pbmZvLAogCWlmIChsYXVuY2gpCiAJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lH TkFMX1NUQVJUX1dBTFJFQ0VJVkVSKTsKIAllbHNlIGlmICh3YWxyY3ZfcHJvYyAhPSBJTlZB TElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2FscmN2 X3Byb2MpLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM LCB3YWxyY3ZfcHJvYyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCmluZGV4IGVjZDk2YWQ3ZGJjLi40Y2FmYTY5Yjg5YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0xMDEz LDggKzEwMTQsOCBAQCBTdGFydFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNt ZCkKICAqIFhMb2dSZWFkZXJSb3V0aW5lLT5wYWdlX3JlYWQgY2FsbGJhY2sgZm9yIGxvZ2lj YWwgZGVjb2RpbmcgY29udGV4dHMsIGFzIGEKICAqIHdhbHNlbmRlciBwcm9jZXNzLgogICoK LSAqIEluc2lkZSB0aGUgd2Fsc2VuZGVyIHdlIGNhbiBkbyBiZXR0ZXIgdGhhbiByZWFkX2xv Y2FsX3hsb2dfcGFnZSwKLSAqIHdoaWNoIGhhcyB0byBkbyBhIHBsYWluIHNsZWVwL2J1c3kg bG9vcCwgYmVjYXVzZSB0aGUgd2Fsc2VuZGVyJ3MgbGF0Y2ggZ2V0cworICogSW5zaWRlIHRo ZSB3YWxzZW5kZXIgd2UgY2FuIGRvIGJldHRlciB0aGFuIHJlYWRfbG9jYWxfeGxvZ19wYWdl LCB3aGljaAorICogaGFzIHRvIGRvIGEgcGxhaW4gc2xlZXAvYnVzeSBsb29wLCBiZWNhdXNl IHRoZSB3YWxzZW5kZXIncyBpbnRlcnJ1cHQgZ2V0cwogICogc2V0IGV2ZXJ5IHRpbWUgV0FM IGlzIGZsdXNoZWQuCiAgKi8KIHN0YXRpYyBpbnQKQEAgLTE2MTEsNyArMTYxMiw3IEBAIFBy b2Nlc3NQZW5kaW5nV3JpdGVzKHZvaWQpCiAJCQkJICAgV0FJVF9FVkVOVF9XQUxfU0VOREVS X1dSSVRFX0RBVEEpOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVw cyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtMTYyOCw4 ICsxNjI5LDggQEAgUHJvY2Vzc1BlbmRpbmdXcml0ZXModm9pZCkKIAkJCVdhbFNuZFNodXRk b3duKCk7CiAJfQogCi0JLyogcmVhY3RpdmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dz IHRvIGNvbnRpbnVlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmVhY3RpdmF0ZSBp bnRlcnJ1cHQgc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKQEAgLTE4MTcsNyArMTgxOCw3 IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCWxvbmcJCXNsZWVwdGlt ZTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTE5MzcsOCArMTkzOCw4IEBA IFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCVdhbFNuZFdhaXQod2FrZUV2 ZW50cywgc2xlZXB0aW1lLCB3YWl0X2V2ZW50KTsKIAl9CiAKLQkvKiByZWFjdGl2YXRlIGxh dGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KLQlTZXRMYXRjaChNeUxh dGNoKTsKKwkvKiByZWFjdGl2YXRlIGludGVycnVwdCBmbGFnIHNvIFdhbFNuZExvb3Aga25v d3MgdG8gY29udGludWUgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJcmV0dXJuIFJlY2VudEZsdXNoUHRyOwogfQogCkBAIC0yNzU0LDcgKzI3NTUsNyBAQCBX YWxTbmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQogCWZvciAoOzsp CiAJewogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTM1NTMsNyArMzU1NCw3IEBA IHN0YXRpYyB2b2lkCiBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKFNJR05BTF9BUkdTKQogewog CWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qIFNldCB1cCBzaWduYWwgaGFuZGxl cnMgKi8KQEAgLTM2NTksNyArMzY2MCw3IEBAIFdhbFNuZFdhaXQodWludDMyIHNvY2tldF9l dmVudHMsIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQpCiB7CiAJV2FpdEV2ZW50 CWV2ZW50OwogCi0JTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNv Y2tldFBvcywgc29ja2V0X2V2ZW50cywgTlVMTCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVX YWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgc29ja2V0X2V2ZW50cywgMCk7CiAKIAkv KgogCSAqIFdlIHVzZSBhIGNvbmRpdGlvbiB2YXJpYWJsZSB0byBlZmZpY2llbnRseSB3YWtl IHVwIHdhbHNlbmRlcnMgaW4KQEAgLTM2NzEsOCArMzY3Miw4IEBAIFdhbFNuZFdhaXQodWlu dDMyIHNvY2tldF9ldmVudHMsIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQpCiAJ ICogQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgpKS4gSXQgc3RpbGwgdXNlcyBXYWl0RXZlbnRT ZXRXYWl0KCkgZm9yCiAJICogd2FpdGluZywgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG8gd2Fp dCBmb3Igc29ja2V0IGV2ZW50cy4gVGhlIHByb2Nlc3NlcwogCSAqIChzdGFydHVwIHByb2Nl c3MsIHdhbHJlY2VpdmVyIGV0Yy4pIHdhbnRpbmcgdG8gd2FrZSB1cCB3YWxzZW5kZXJzIHVz ZQotCSAqIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCksIHdoaWNoIGluIHR1cm4gY2Fs bHMgU2V0TGF0Y2goKSwgaGVscGluZwotCSAqIHdhbHNlbmRlcnMgY29tZSBvdXQgb2YgV2Fp dEV2ZW50U2V0V2FpdCgpLgorCSAqIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCksIHdo aWNoIGluIHR1cm4gY2FsbHMgU2VuZEludGVycnVwdCgpLAorCSAqIGhlbHBpbmcgd2Fsc2Vu ZGVycyBjb21lIG91dCBvZiBXYWl0RXZlbnRTZXRXYWl0KCkuCiAJICoKIAkgKiBUaGlzIGFw cHJvYWNoIGlzIHNpbXBsZSBhbmQgZWZmaWNpZW50IGJlY2F1c2UsIG9uZSBkb2Vzbid0IGhh dmUgdG8gbG9vcAogCSAqIHRocm91Z2ggYWxsIHRoZSB3YWxzZW5kZXJzIHNsb3RzLCB3aXRo IGEgc3BpbmxvY2sgYWNxdWlzaXRpb24gYW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jCmluZGV4IDc5MTVlZDYyNGMxLi5jNWJmNGE3MDkyNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0yODgwLDcgKzI4ODEsNyBAQCBVbnBpbkJ1 ZmZlck5vT3duZXIoQnVmZmVyRGVzYyAqYnVmKQogCiAJCQkJYnVmX3N0YXRlICY9IH5CTV9Q SU5fQ09VTlRfV0FJVEVSOwogCQkJCVVubG9ja0J1ZkhkcihidWYsIGJ1Zl9zdGF0ZSk7Ci0J CQkJUHJvY1NlbmRTaWduYWwod2FpdF9iYWNrZW5kX3BncHJvY25vKTsKKwkJCQlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCB3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOwogCQkJ fQogCQkJZWxzZQogCQkJCVVubG9ja0J1ZkhkcihidWYsIGJ1Zl9zdGF0ZSk7CkBAIC01Mjgz LDcgKzUyODQsMTIgQEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJ CVNldFN0YXJ0dXBCdWZmZXJQaW5XYWl0QnVmSWQoLTEpOwogCQl9CiAJCWVsc2UKLQkJCVBy b2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7CisJCXsKKwkJCVdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwkJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisJCX0KIAogCQkvKgogCQkgKiBSZW1vdmUgZmxhZyBtYXJraW5nIHVzIGFz IHdhaXRlci4gTm9ybWFsbHkgdGhpcyB3aWxsIG5vdCBiZSBzZXQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IDMzNjcxNWI2YzYzLi4wMmIyMjM3MTdkYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xOSw2ICsxOSw3 IEBACiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZf aW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAjZGVm aW5lIElOVF9BQ0NFU1NfT05DRSh2YXIpCSgoaW50KSgqKCh2b2xhdGlsZSBpbnQgKikmKHZh cikpKSkKQEAgLTIxOSwyNyArMjIwLDI1IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9y CiAJLyoKIAkgKiBJZiBhc2tlZCwgd2UgbmVlZCB0byB3YWtlbiB0aGUgYmd3cml0ZXIuIFNp bmNlIHdlIGRvbid0IHdhbnQgdG8gcmVseSBvbgogCSAqIGEgc3BpbmxvY2sgZm9yIHRoaXMg d2UgZm9yY2UgYSByZWFkIGZyb20gc2hhcmVkIG1lbW9yeSBvbmNlLCBhbmQgdGhlbgotCSAq IHNldCB0aGUgbGF0Y2ggYmFzZWQgb24gdGhhdCB2YWx1ZS4gV2UgbmVlZCB0byBnbyB0aHJv dWdoIHRoYXQgbGVuZ3RoCi0JICogYmVjYXVzZSBvdGhlcndpc2UgYmd3cHJvY25vIG1pZ2h0 IGJlIHJlc2V0IHdoaWxlL2FmdGVyIHdlIGNoZWNrIGJlY2F1c2UKLQkgKiB0aGUgY29tcGls ZXIgbWlnaHQganVzdCByZXJlYWQgZnJvbSBtZW1vcnkuCisJICogc2VuZCB0aGUgaW50ZXJy dXB0IGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGF0CisJ ICogbGVuZ3RoIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3Byb2NubyBtaWdodCBiZSByZXNldCB3 aGlsZS9hZnRlciB3ZSBjaGVjaworCSAqIGJlY2F1c2UgdGhlIGNvbXBpbGVyIG1pZ2h0IGp1 c3QgcmVyZWFkIGZyb20gbWVtb3J5LgogCSAqCi0JICogVGhpcyBjYW4gcG9zc2libHkgc2V0 IHRoZSBsYXRjaCBvZiB0aGUgd3JvbmcgcHJvY2VzcyBpZiB0aGUgYmd3cml0ZXIKLQkgKiBk aWVzIGluIHRoZSB3cm9uZyBtb21lbnQuIEJ1dCBzaW5jZSBQR1BST0MtPnByb2NMYXRjaCBp cyBuZXZlcgotCSAqIGRlYWxsb2NhdGVkIHRoZSB3b3JzdCBjb25zZXF1ZW5jZSBvZiB0aGF0 IGlzIHRoYXQgd2Ugc2V0IHRoZSBsYXRjaCBvZgotCSAqIHNvbWUgYXJiaXRyYXJ5IHByb2Nl c3MuCisJICogVGhpcyBjYW4gcG9zc2libHkgc2VuZCB0aGUgaW50ZXJydXB0IHRvIHRoZSB3 cm9uZyBwcm9jZXNzIGlmIHRoZQorCSAqIGJnd3JpdGVyIGRpZXMgaW4gdGhlIHdyb25nIG1v bWVudCwgYnV0IHRoYXQncyBoYXJtbGVzcy4KIAkgKi8KIAliZ3dwcm9jbm8gPSBJTlRfQUND RVNTX09OQ0UoU3RyYXRlZ3lDb250cm9sLT5iZ3dwcm9jbm8pOwogCWlmIChiZ3dwcm9jbm8g IT0gLTEpCiAJewotCQkvKiByZXNldCBiZ3dwcm9jbm8gZmlyc3QsIGJlZm9yZSBzZXR0aW5n IHRoZSBsYXRjaCAqLworCQkvKiByZXNldCBiZ3dwcm9jbm8gZmlyc3QsIGJlZm9yZSBzZW5k aW5nIHRoZSBpbnRlcnJ1cHQgKi8KIAkJU3RyYXRlZ3lDb250cm9sLT5iZ3dwcm9jbm8gPSAt MTsKIAogCQkvKgotCQkgKiBOb3QgYWNxdWlyaW5nIFByb2NBcnJheUxvY2sgaGVyZSB3aGlj aCBpcyBzbGlnaHRseSBpY2t5LiBJdCdzCi0JCSAqIGFjdHVhbGx5IGZpbmUgYmVjYXVzZSBw cm9jTGF0Y2ggaXNuJ3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4KLQkJICogcG90ZW50 aWFsbHkgc2V0IHRoZSB3cm9uZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLgor CQkgKiBOb3QgYWNxdWlyaW5nIFByb2NBcnJheUxvY2sgaGVyZSB3aGljaCBpcyBzbGlnaHRs eSBpY2t5LCBiZWNhdXNlIHdlCisJCSAqIGNhbiBwb3RlbnRpYWxseSBzZW5kIHRoZSBpbnRl cnJ1cHQgdG8gdGhlIHdyb25nIHByb2Nlc3MgKG9yIG5vCisJCSAqIHByb2Nlc3MpLCBidXQg aXQncyBoYXJtbGVzcy4KIAkJICovCi0JCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9j c1tiZ3dwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIGJnd3Byb2Nubyk7CiAJfQogCiAJLyoKQEAgLTQyMCwxMCArNDE5LDEwIEBAIFN0 cmF0ZWd5U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm51bV9i dWZfYWxsb2MpCiB9CiAKIC8qCi0gKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyIC0tIHNldCBv ciBjbGVhciBhbGxvY2F0aW9uIG5vdGlmaWNhdGlvbiBsYXRjaAorICogU3RyYXRlZ3lOb3Rp ZnlCZ1dyaXRlciAtLSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24gcHJv Y2VzcwogICoKICAqIElmIGJnd3Byb2NubyBpc24ndCAtMSwgdGhlIG5leHQgaW52b2NhdGlv biBvZiBTdHJhdGVneUdldEJ1ZmZlciB3aWxsCi0gKiBzZXQgdGhhdCBsYXRjaC4gIFBhc3Mg LTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9yZSBpdAorICogaW50 ZXJydXB0IHRoYXQgcHJvY2Vzcy4gIFBhc3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90 aWZpY2F0aW9uIGJlZm9yZSBpdAogICogaGFwcGVucy4gIFRoaXMgZmVhdHVyZSBpcyB1c2Vk IGJ5IHRoZSBiZ3dyaXRlciBwcm9jZXNzIHRvIHdha2UgaXRzZWxmIHVwCiAgKiBmcm9tIGhp YmVybmF0aW9uLCBhbmQgaXMgbm90IG1lYW50IGZvciBhbnlib2R5IGVsc2UgdG8gdXNlLgog ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCmluZGV4IDlhMDdmNmUxZDkyLi41Yzdj NzJmOTAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKQEAgLTEzLDkgKzEzLDkg QEAgT0JKUyA9IFwKIAlkc20ubyBcCiAJZHNtX2ltcGwubyBcCiAJZHNtX3JlZ2lzdHJ5Lm8g XAorCWludGVycnVwdC5vIFwKIAlpcGMubyBcCiAJaXBjaS5vIFwKLQlsYXRjaC5vIFwKIAlw bXNpZ25hbC5vIFwKIAlwcm9jYXJyYXkubyBcCiAJcHJvY3NpZ25hbC5vIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjRkMGVkZGRjZjk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIGludGVycnVwdC5jCisgKgkgIEludGVyLXByb2Nlc3MgaW50 ZXJydXB0cworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRl cnJ1cHQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvd2FpdGV2ZW50c2V0LmgiCisKKy8qIEEgY29tbW9uIFdhaXRFdmVudFNldCB1c2VkIHRv IGltcGxlbWVudCBXYWl0SW50ZXJydXB0KCkgKi8KK3N0YXRpYyBXYWl0RXZlbnRTZXQgKklu dGVycnVwdFdhaXRTZXQ7CisKKy8qIFRoZSBwb3NpdGlvbiBvZiB0aGUgaW50ZXJydXB0IGlu IEludGVycnVwdFdhaXRTZXQuICovCisjZGVmaW5lIEludGVycnVwdFdhaXRTZXRJbnRlcnJ1 cHRQb3MgMAorI2RlZmluZSBJbnRlcnJ1cHRXYWl0U2V0UG9zdG1hc3RlckRlYXRoUG9zIDEK Kworc3RhdGljIHBnX2F0b21pY191aW50MzIgTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKKwor cGdfYXRvbWljX3VpbnQzMiAqTXlQZW5kaW5nSW50ZXJydXB0cyA9ICZMb2NhbFBlbmRpbmdJ bnRlcnJ1cHRzOworCisvKgorICogU3dpdGNoIHRvIGxvY2FsIGludGVycnVwdHMuICBPdGhl ciBiYWNrZW5kcyBjYW4ndCBzZW5kIGludGVycnVwdHMgdG8gdGhpcworICogb25lLiAgT25s eSBSYWlzZUludGVycnVwdCgpIGNhbiBzZXQgdGhlbSwgZnJvbSBpbnNpZGUgdGhpcyBwcm9j ZXNzLgorICovCit2b2lkCitTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKQoreworCWlm IChNeVBlbmRpbmdJbnRlcnJ1cHRzID09ICZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzKQorCQly ZXR1cm47CisKKwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxvY2FsUGVuZGluZ0ludGVycnVw dHM7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGF0IFNJR0FMUk0gaGFuZGxlcnMgdGhhdCBj YWxsIFJhaXNlSW50ZXJydXB0KCkgYXJlIG5vdworCSAqIHNlZWluZyB0aGUgbmV3IE15UGVu ZGluZ0ludGVycnVwdHMgZGVzdGluYXRpb24uCisJICovCisJcGdfbWVtb3J5X2JhcnJpZXIo KTsKKworCS8qCisJICogTWl4IGluIHRoZSBpbnRlcnJ1cHRzIHRoYXQgd2UgaGF2ZSByZWNl aXZlZCBhbHJlYWR5IGluIG91ciBzaGFyZWQKKwkgKiBpbnRlcnJ1cHQgdmVjdG9yLCB3aGls ZSBhdG9taWNhbGx5IGNsZWFyaW5nIGl0LiAgT3RoZXIgYmFja2VuZHMgbWF5CisJICogY29u dGludWUgdG8gc2V0IGJpdHMgaW4gaXQgYWZ0ZXIgdGhpcyBwb2ludCwgYnV0IHdlJ3ZlIGF0 b21pY2FsbHkKKwkgKiB0cmFuc2ZlcnJlZCB0aGUgZXhpc3RpbmcgYml0cyB0byBvdXIgbG9j YWwgdmVjdG9yIHNvIHdlIHdvbid0IGdldAorCSAqIGR1cGxpY2F0ZWQgaW50ZXJydXB0cyBs YXRlciBpZiB3ZSBzd2l0Y2ggYmFja3guCisJICovCisJcGdfYXRvbWljX2ZldGNoX29yX3Uz MihNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWljX2V4Y2hhbmdlX3Uz MigmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgorICogU3dpdGNo IHRvIHNoYXJlZCBtZW1vcnkgaW50ZXJydXB0cy4gIE90aGVyIGJhY2tlbmRzIGNhbiBzZW5k IGludGVycnVwdHMgdG8KKyAqIHRoaXMgb25lIGlmIHRoZXkga25vdyBpdHMgUHJvY051bWJl ciwgYW5kIHdlJ2xsIG5vdyBzZWUgYW55IHRoYXQgd2UgbWlzc2VkLgorICovCit2b2lkCitT d2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCkKK3sKKwlpZiAoTXlQZW5kaW5nSW50ZXJy dXB0cyA9PSAmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cykKKwkJcmV0dXJuOworCisJTXlQ ZW5kaW5nSW50ZXJydXB0cyA9ICZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzOworCisJLyoK KwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlzZUlu dGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5ldyBNeVBlbmRpbmdJbnRlcnJ1 cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9iYXJyaWVyKCk7CisKKwkvKiBN aXggaW4gYW55IHVuaGFuZGxlZCBiaXRzIGZyb20gTG9jYWxQZW5kaW5nSW50ZXJydXB0cy4g Ki8KKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsCisJCQkJ CQkgICBwZ19hdG9taWNfZXhjaGFuZ2VfdTMyKCZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzLCAw KSk7Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gdGhpcyBiYWNrZW5k LgorICovCit2b2lkCitSYWlzZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sK Kwl1aW50MzIJCW9sZF9wZW5kaW5nOworCisJb2xkX3BlbmRpbmcgPSBwZ19hdG9taWNfZmV0 Y2hfb3JfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIDEgPDwgcmVhc29uKTsKKworCS8qCisJ ICogSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5IGJsb2NrZWQgd2FpdGluZyBmb3IgYW4g aW50ZXJydXB0IHRvIGFycml2ZSwKKwkgKiBhbmQgdGhlIGludGVycnVwdCB3YXNuJ3QgYWxy ZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVwLgorCSAqLworCWlmICgob2xkX3BlbmRpbmcgJiAo MSA8PCByZWFzb24gfCAxIDw8IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpKSA9PSAxIDw8IFNM RUVQSU5HX09OX0lOVEVSUlVQVFMpCisJCVdha2V1cE15UHJvYygpOworfQorCisvKgorICog U2V0IGFuIGludGVycnVwdCBmbGFnIGluIGFub3RoZXIgYmFja2VuZC4KKyAqLwordm9pZAor U2VuZEludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbiwgUHJvY051bWJlciBwZ3Byb2Nu bykKK3sKKwlQR1BST0MJICAgKnByb2M7CisJdWludDMyCQlvbGRfcGVuZGluZzsKKworCUFz c2VydChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlBc3NlcnQocGdwcm9j bm8gPj0gMCk7CisJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50 KTsKKworCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dOworCW9sZF9w ZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMigmcHJvYy0+cGVuZGluZ0ludGVycnVw dHMsIDEgPDwgcmVhc29uKTsKKworCS8qCisJICogSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVu dGx5IGJsb2NrZWQgd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IHRvIGFycml2ZSwKKwkgKiBh bmQgdGhlIGludGVycnVwdCB3YXNuJ3QgYWxyZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVwLgor CSAqLworCWlmICgob2xkX3BlbmRpbmcgJiAoMSA8PCByZWFzb24gfCAxIDw8IFNMRUVQSU5H X09OX0lOVEVSUlVQVFMpKSA9PSAxIDw8IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpCisJCVdh a2V1cE90aGVyUHJvYyhwcm9jKTsKK30KKwordm9pZAorSW5pdGlhbGl6ZUludGVycnVwdFdh aXRTZXQodm9pZCkKK3sKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zIFBHX1VTRURfRk9SX0FTU0VS VFNfT05MWTsKKworCUFzc2VydChJbnRlcnJ1cHRXYWl0U2V0ID09IE5VTEwpOworCisJLyog U2V0IHVwIHRoZSBXYWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0SW50ZXJydXB0KCkuICovCisJ SW50ZXJydXB0V2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKKwlpbnRl cnJ1cHRfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoSW50ZXJydXB0V2FpdFNldCwgV0xfSU5U RVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJCQkJICAwLCBOVUxMKTsKKwlpZiAo SXNVbmRlclBvc3RtYXN0ZXIpCisJCUFkZFdhaXRFdmVudFRvU2V0KEludGVycnVwdFdhaXRT ZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgIFBHSU5WQUxJRF9TT0NLRVQsIDAs IE5VTEwpOworCisJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0gSW50ZXJydXB0V2FpdFNldElu dGVycnVwdFBvcyk7Cit9CisKKworLyoKKyAqIFdhaXQgZm9yIGFueSBvZiB0aGUgaW50ZXJy dXB0cyBpbiBpbnRlcnJ1cHRNYXNrIHRvIGJlIHNldCwgb3IgZm9yCisgKiBwb3N0bWFzdGVy IGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0IGlzIGV4Y2VlZGVkLiAnd2FrZUV2ZW50cycgaXMg YSBiaXRtYXNrCisgKiB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMgdG8g d2FpdCBmb3IuIElmIHRoZSBpbnRlcnJ1cHQgaXMKKyAqIGFscmVhZHkgcGVuZGluZyAoYW5k IFdMX0lOVEVSUlVQVCBpcyBnaXZlbiksIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgKiBpbW1l ZGlhdGVseS4KKyAqCisgKiBUaGUgInRpbWVvdXQiIGlzIGdpdmVuIGluIG1pbGxpc2Vjb25k cy4gSXQgbXVzdCBiZSA+PSAwIGlmIFdMX1RJTUVPVVQgZmxhZworICogaXMgZ2l2ZW4uICBB bHRob3VnaCBpdCBpcyBkZWNsYXJlZCBhcyAibG9uZyIsIHdlIGRvbid0IGFjdHVhbGx5IHN1 cHBvcnQKKyAqIHRpbWVvdXRzIGxvbmdlciB0aGFuIElOVF9NQVggbWlsbGlzZWNvbmRzLiAg Tm90ZSB0aGF0IHNvbWUgZXh0cmEgb3ZlcmhlYWQKKyAqIGlzIGluY3VycmVkIHdoZW4gV0xf VElNRU9VVCBpcyBnaXZlbiwgc28gYXZvaWQgdXNpbmcgYSB0aW1lb3V0IGlmIHBvc3NpYmxl LgorICoKKyAqIFJldHVybnMgYml0IG1hc2sgaW5kaWNhdGluZyB3aGljaCBjb25kaXRpb24o cykgY2F1c2VkIHRoZSB3YWtlLXVwLiBOb3RlCisgKiB0aGF0IGlmIG11bHRpcGxlIHdha2Ut dXAgY29uZGl0aW9ucyBhcmUgdHJ1ZSwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQKKyAq IHdlIHJldHVybiBhbGwgb2YgdGhlbSBpbiBvbmUgY2FsbCwgYnV0IHdlIHdpbGwgcmV0dXJu IGF0IGxlYXN0IG9uZS4KKyAqLworaW50CitXYWl0SW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1 cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJICB1aW50MzIgd2Fp dF9ldmVudF9pbmZvKQoreworCVdhaXRFdmVudAlldmVudDsKKworCS8qIFBvc3RtYXN0ZXIt bWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4g Ki8KKwlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYg V0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFT VEVSX0RFQVRIKSk7CisKKwkvKgorCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhbiBpbnRl cnJ1cHQgbWFzayBkaWZmZXJlbnQgZnJvbSBsYXN0IHRpbWUsIG9yIG5vCisJICogaW50ZXJy dXB0IG1hc2sgYXQgYWxsLCBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIGRp ZmZlcmVudGx5LgorCSAqIEl0J3MgY2hlYXAgdG8gYXNzaWduIHRob3NlLCBzbyBqdXN0IGRv IGl0IGV2ZXJ5IHRpbWUuCisJICovCisJaWYgKCEod2FrZUV2ZW50cyAmIFdMX0lOVEVSUlVQ VCkpCisJCWludGVycnVwdE1hc2sgPSAwOworCU1vZGlmeVdhaXRFdmVudChJbnRlcnJ1cHRX YWl0U2V0LCBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9zLAorCQkJCQlXTF9JTlRFUlJV UFQsIGludGVycnVwdE1hc2spOworCisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVwdFdhaXRT ZXQsIEludGVycnVwdFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MsCisJCQkJCSh3YWtlRXZl bnRzICYgKFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFTVEVSX0RFQVRIKSksCisJ CQkJCTApOworCisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJydXB0V2FpdFNldCwKKwkJ CQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAorCQkJCQkJ ICZldmVudCwgMSwKKwkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCisJCXJldHVybiBX TF9USU1FT1VUOworCWVsc2UKKwkJcmV0dXJuIGV2ZW50LmV2ZW50czsKK30KKworLyoKKyAq IExpa2UgV2FpdEludGVycnVwdCwgYnV0IHdpdGggYW4gZXh0cmEgc29ja2V0IGFyZ3VtZW50 IGZvciBXTF9TT0NLRVRfKgorICogY29uZGl0aW9ucy4KKyAqCisgKiBXaGVuIHdhaXRpbmcg b24gYSBzb2NrZXQsIEVPRiBhbmQgZXJyb3IgY29uZGl0aW9ucyBhbHdheXMgY2F1c2UgdGhl IHNvY2tldAorICogdG8gYmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFibGUvY29ubmVj dGVkLCBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGRlYWwKKyAqIHdpdGggdGhlIGNvbmRpdGlv bi4KKyAqCisgKiB3YWtlRXZlbnRzIG11c3QgaW5jbHVkZSBlaXRoZXIgV0xfRVhJVF9PTl9Q TV9ERUFUSCBmb3IgYXV0b21hdGljIGV4aXQKKyAqIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMg b3IgV0xfUE9TVE1BU1RFUl9ERUFUSCBmb3IgYSBmbGFnIHNldCBpbiB0aGUKKyAqIHJldHVy biB2YWx1ZSBpZiB0aGUgcG9zdG1hc3RlciBkaWVzLiAgVGhlIGxhdHRlciBpcyB1c2VmdWwg Zm9yIHJhcmUgY2FzZXMKKyAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhhbiBpbW1l ZGlhdGUgZXhpdCBpcyBuZWVkZWQuCisgKgorICogTkI6IFRoZXNlIGRheXMgdGhpcyBpcyBq dXN0IGEgd3JhcHBlciBhcm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4KKyAqIHVz aW5nIGFuIGludGVycnVwdCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEg bG9uZ2VyIGxpdmluZworICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVm ZmljaWVudC4KKyAqLworaW50CitXYWl0SW50ZXJydXB0T3JTb2NrZXQodWludDMyIGludGVy cnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAorCQkJCQkgIGxvbmcg dGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK3sKKwlpbnQJCQlyZXQgPSAwOwor CWludAkJCXJjOworCVdhaXRFdmVudAlldmVudDsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IENy ZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgMyk7CisKKwlpZiAod2Fr ZUV2ZW50cyAmIFdMX1RJTUVPVVQpCisJCUFzc2VydCh0aW1lb3V0ID49IDApOworCWVsc2UK KwkJdGltZW91dCA9IC0xOworCisJaWYgKHdha2VFdmVudHMgJiBXTF9JTlRFUlJVUFQpCisJ CUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VU LAorCQkJCQkJICBpbnRlcnJ1cHRNYXNrLCBOVUxMKTsKKworCS8qIFBvc3RtYXN0ZXItbWFu YWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8K KwlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xf RVhJVF9PTl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVS X0RFQVRIKSk7CisKKwlpZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSAm JiBJc1VuZGVyUG9zdG1hc3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9QT1NU TUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJICAwLCBOVUxMKTsKKwor CWlmICgod2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0 bWFzdGVyKQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgs IFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkgIDAsIE5VTEwpOworCisJaWYgKHdha2VFdmVu dHMgJiBXTF9TT0NLRVRfTUFTSykKKwl7CisJCWludAkJCWV2OworCisJCWV2ID0gd2FrZUV2 ZW50cyAmIFdMX1NPQ0tFVF9NQVNLOworCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBz b2NrLCAwLCBOVUxMKTsKKwl9CisKKwlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1l b3V0LCAmZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7CisKKwlpZiAocmMgPT0gMCkKKwkJ cmV0IHw9IFdMX1RJTUVPVVQ7CisJZWxzZQorCXsKKwkJcmV0IHw9IGV2ZW50LmV2ZW50cyAm IChXTF9JTlRFUlJVUFQgfAorCQkJCQkJCSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAorCQkJ CQkJCSAgIFdMX1NPQ0tFVF9NQVNLKTsKKwl9CisKKwlGcmVlV2FpdEV2ZW50U2V0KHNldCk7 CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvbGF0Y2guYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YWVmZDJmNjg4Li4wMDAwMDAwMDAwMAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCisrKyAvZGV2L251bGwKQEAgLTEsMzg3 ICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIGxhdGNoLmMKLSAqCSAg Um91dGluZXMgZm9yIGludGVyLXByb2Nlc3MgbGF0Y2hlcwotICoKLSAqIFRoZSBsYXRjaCBp bnRlcmZhY2UgaXMgYSByZWxpYWJsZSByZXBsYWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0 ZXJuIG9mCi0gKiB1c2luZyBwZ191c2xlZXAoKSBvciBzZWxlY3QoKSB0byB3YWl0IHVudGls IGEgc2lnbmFsIGFycml2ZXMsIHdoZXJlIHRoZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBh IGZsYWcgdmFyaWFibGUuICBTZWUgbGF0Y2guaCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICog b24gaG93IHRvIHVzZSB0aGVtLgotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKLSAqCi0gKiBJREVOVElGSUNBVElPTgotICoJICBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9sYXRjaC5jCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpbmNs dWRlICJwb3N0Z3Jlcy5oIgotCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAi cG9ydC9hdG9taWNzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgotI2luY2x1ZGUg InN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCi0jaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIK LQotLyogQSBjb21tb24gV2FpdEV2ZW50U2V0IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRMYXRj aCgpICovCi1zdGF0aWMgV2FpdEV2ZW50U2V0ICpMYXRjaFdhaXRTZXQ7Ci0KLS8qIFRoZSBw b3NpdGlvbnMgb2YgdGhlIGxhdGNoIGFuZCBQTSBkZWF0aCBldmVudHMgaW4gTGF0Y2hXYWl0 U2V0ICovCi0jZGVmaW5lIExhdGNoV2FpdFNldExhdGNoUG9zIDAKLSNkZWZpbmUgTGF0Y2hX YWl0U2V0UG9zdG1hc3RlckRlYXRoUG9zIDEKLQotdm9pZAotSW5pdGlhbGl6ZUxhdGNoV2Fp dFNldCh2b2lkKQotewotCWludAkJCWxhdGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09O TFk7Ci0KLQlBc3NlcnQoTGF0Y2hXYWl0U2V0ID09IE5VTEwpOwotCi0JLyogU2V0IHVwIHRo ZSBXYWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0TGF0Y2goKS4gKi8KLQlMYXRjaFdhaXRTZXQg PSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2 ZW50VG9TZXQoTGF0Y2hXYWl0U2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQs Ci0JCQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7Ci0JQXNzZXJ0KGxhdGNoX3BvcyA9PSBMYXRj aFdhaXRTZXRMYXRjaFBvcyk7Ci0KLQkvKgotCSAqIFdhaXRMYXRjaCB3aWxsIG1vZGlmeSB0 aGlzIHRvIFdMX0VYSVRfT05fUE1fREVBVEggb3IKLQkgKiBXTF9QT1NUTUFTVEVSX0RFQVRI IG9uIGVhY2ggY2FsbC4KLQkgKi8KLQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQls YXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChMYXRjaFdhaXRTZXQsIFdMX0VYSVRfT05f UE1fREVBVEgsCi0JCQkJCQkJCQkgIFBHSU5WQUxJRF9TT0NLRVQsIE5VTEwsIE5VTEwpOwot CQlBc3NlcnQobGF0Y2hfcG9zID09IExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcyk7 Ci0JfQotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2guCi0g Ki8KLXZvaWQKLUluaXRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JbGF0Y2gtPmlzX3NldCA9 IGZhbHNlOwotCWxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwotCWxhdGNoLT5vd25l cl9waWQgPSBNeVByb2NQaWQ7Ci0JbGF0Y2gtPmlzX3NoYXJlZCA9IGZhbHNlOwotCi0jaWZk ZWYgV0lOMzIKLQlsYXRjaC0+ZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxT RSwgTlVMTCk7Ci0JaWYgKGxhdGNoLT5ldmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAi Q3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsK LSNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHNo YXJlZCBsYXRjaCB0aGF0IGNhbiBiZSBzZXQgZnJvbSBvdGhlciBwcm9jZXNzZXMuIFRoZSBs YXRjaAotICogaXMgaW5pdGlhbGx5IG93bmVkIGJ5IG5vLW9uZTsgdXNlIE93bkxhdGNoIHRv IGFzc29jaWF0ZSBpdCB3aXRoIHRoZQotICogY3VycmVudCBwcm9jZXNzLgotICoKLSAqIElu aXRTaGFyZWRMYXRjaCBuZWVkcyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUg Zm9ya2luZyBjaGlsZAotICogcHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9j YXRpbmcgdGhlIHNoYXJlZCBtZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNo IHdpdGggU2htZW1Jbml0U3RydWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRv ZXNuJ3QgYWN0dWFsbHkgcmVxdWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMu KSBCZWNhdXNlIG9mCi0gKiB0aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJl bmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCBvdGhl ciBoYW5kbGVzIGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwot ICogaW5oZXJpdGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNs ZWFuaW5nIHVwIGNoaWxkCi0gKiBwcm9jZXNzIHJlZmVyZW5jZXMgdG8gcG9zdG1hc3Rlci1w cml2YXRlIGxhdGNoZXMgb3IgV2FpdEV2ZW50U2V0cy4KLSAqLwotdm9pZAotSW5pdFNoYXJl ZExhdGNoKExhdGNoICpsYXRjaCkKLXsKLSNpZmRlZiBXSU4zMgotCVNFQ1VSSVRZX0FUVFJJ QlVURVMgc2E7Ci0KLQkvKgotCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNw ZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZSBpbmhlcml0ZWQuCi0JICovCi0JWmVyb01lbW9y eSgmc2EsIHNpemVvZihzYSkpOwotCXNhLm5MZW5ndGggPSBzaXplb2Yoc2EpOwotCXNhLmJJ bmhlcml0SGFuZGxlID0gVFJVRTsKLQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50KCZz YSwgVFJVRSwgRkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJ ZWxvZyhFUlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRM YXN0RXJyb3IoKSk7Ci0jZW5kaWYKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRj aC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLQls YXRjaC0+aXNfc2hhcmVkID0gdHJ1ZTsKLX0KLQotLyoKLSAqIEFzc29jaWF0ZSBhIHNoYXJl ZCBsYXRjaCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MsIGFsbG93aW5nIGl0IHRvCi0gKiB3 YWl0IG9uIHRoZSBsYXRjaC4KLSAqCi0gKiBBbHRob3VnaCB0aGVyZSBpcyBhIHNhbml0eSBj aGVjayBmb3IgbGF0Y2gtYWxyZWFkeS1vd25lZCwgd2UgZG9uJ3QgZG8KLSAqIGFueSBzb3J0 IG9mIGxvY2tpbmcgaGVyZSwgbWVhbmluZyB0aGF0IHdlIGNvdWxkIGZhaWwgdG8gZGV0ZWN0 IHRoZSBlcnJvcgotICogaWYgdHdvIHByb2Nlc3NlcyB0cnkgdG8gb3duIHRoZSBzYW1lIGxh dGNoIGF0IGFib3V0IHRoZSBzYW1lIHRpbWUuICBJZgotICogdGhlcmUgaXMgYW55IHJpc2sg b2YgdGhhdCwgY2FsbGVyIG11c3QgcHJvdmlkZSBhbiBpbnRlcmxvY2sgdG8gcHJldmVudCBp dC4KLSAqLwotdm9pZAotT3duTGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWludAkJCW93bmVy X3BpZDsKLQotCS8qIFNhbml0eSBjaGVja3MgKi8KLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJl ZCk7Ci0KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwotCWlmIChvd25lcl9waWQg IT0gMCkKLQkJZWxvZyhQQU5JQywgImxhdGNoIGFscmVhZHkgb3duZWQgYnkgUElEICVkIiwg b3duZXJfcGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci19Ci0KLS8q Ci0gKiBEaXNvd24gYSBzaGFyZWQgbGF0Y2ggY3VycmVudGx5IG93bmVkIGJ5IHRoZSBjdXJy ZW50IHByb2Nlc3MuCi0gKi8KLXZvaWQKLURpc293bkxhdGNoKExhdGNoICpsYXRjaCkKLXsK LQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0JQXNzZXJ0KGxhdGNoLT5vd25lcl9waWQg PT0gTXlQcm9jUGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSAwOwotfQotCi0vKgotICog V2FpdCBmb3IgYSBnaXZlbiBsYXRjaCB0byBiZSBzZXQsIG9yIGZvciBwb3N0bWFzdGVyIGRl YXRoLCBvciB1bnRpbCB0aW1lb3V0Ci0gKiBpcyBleGNlZWRlZC4gJ3dha2VFdmVudHMnIGlz IGEgYml0bWFzayB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMKLSAqIHRv IHdhaXQgZm9yLiBJZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQgKGFuZCBXTF9MQVRDSF9T RVQgaXMgZ2l2ZW4pLCB0aGUKLSAqIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuCi0g KgotICogVGhlICJ0aW1lb3V0IiBpcyBnaXZlbiBpbiBtaWxsaXNlY29uZHMuIEl0IG11c3Qg YmUgPj0gMCBpZiBXTF9USU1FT1VUIGZsYWcKLSAqIGlzIGdpdmVuLiAgQWx0aG91Z2ggaXQg aXMgZGVjbGFyZWQgYXMgImxvbmciLCB3ZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0Ci0gKiB0 aW1lb3V0cyBsb25nZXIgdGhhbiBJTlRfTUFYIG1pbGxpc2Vjb25kcy4gIE5vdGUgdGhhdCBz b21lIGV4dHJhIG92ZXJoZWFkCi0gKiBpcyBpbmN1cnJlZCB3aGVuIFdMX1RJTUVPVVQgaXMg Z2l2ZW4sIHNvIGF2b2lkIHVzaW5nIGEgdGltZW91dCBpZiBwb3NzaWJsZS4KLSAqCi0gKiBU aGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLCBpZS4gaXQg bXVzdCBiZSBhCi0gKiBwcm9jZXNzLWxvY2FsIGxhdGNoIGluaXRpYWxpemVkIHdpdGggSW5p dExhdGNoLCBvciBhIHNoYXJlZCBsYXRjaAotICogYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJy ZW50IHByb2Nlc3MgYnkgY2FsbGluZyBPd25MYXRjaC4KLSAqCi0gKiBSZXR1cm5zIGJpdCBt YXNrIGluZGljYXRpbmcgd2hpY2ggY29uZGl0aW9uKHMpIGNhdXNlZCB0aGUgd2FrZS11cC4g Tm90ZQotICogdGhhdCBpZiBtdWx0aXBsZSB3YWtlLXVwIGNvbmRpdGlvbnMgYXJlIHRydWUs IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0Ci0gKiB3ZSByZXR1cm4gYWxsIG9mIHRoZW0g aW4gb25lIGNhbGwsIGJ1dCB3ZSB3aWxsIHJldHVybiBhdCBsZWFzdCBvbmUuCi0gKi8KLWlu dAotV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91 dCwKLQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCVdhaXRFdmVudAlldmVudDsK LQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0 ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8Ci0J CSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJICAgKHdha2VF dmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQkvKgotCSAqIFNvbWUgY2FsbGVy cyBtYXkgaGF2ZSBhIGxhdGNoIG90aGVyIHRoYW4gTXlMYXRjaCwgb3Igbm8gbGF0Y2ggYXQg YWxsLAotCSAqIG9yIHdhbnQgdG8gaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggZGlmZmVyZW50 bHkuICBJdCdzIGNoZWFwIHRvIGFzc2lnbgotCSAqIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2 ZXJ5IHRpbWUuCi0JICovCi0JaWYgKCEod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkpCi0J CWxhdGNoID0gTlVMTDsKLQlNb2RpZnlXYWl0RXZlbnQoTGF0Y2hXYWl0U2V0LCBMYXRjaFdh aXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hfU0VULCBsYXRjaCk7Ci0JTW9kaWZ5V2FpdEV2ZW50 KExhdGNoV2FpdFNldCwgTGF0Y2hXYWl0U2V0UG9zdG1hc3RlckRlYXRoUG9zLAotCQkJCQko d2FrZUV2ZW50cyAmIChXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfUE9TVE1BU1RFUl9ERUFU SCkpLAotCQkJCQlOVUxMKTsKLQotCWlmIChXYWl0RXZlbnRTZXRXYWl0KExhdGNoV2FpdFNl dCwKLQkJCQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAot CQkJCQkJICZldmVudCwgMSwKLQkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCi0JCXJl dHVybiBXTF9USU1FT1VUOwotCWVsc2UKLQkJcmV0dXJuIGV2ZW50LmV2ZW50czsKLX0KLQot LyoKLSAqIExpa2UgV2FpdExhdGNoLCBidXQgd2l0aCBhbiBleHRyYSBzb2NrZXQgYXJndW1l bnQgZm9yIFdMX1NPQ0tFVF8qCi0gKiBjb25kaXRpb25zLgotICoKLSAqIFdoZW4gd2FpdGlu ZyBvbiBhIHNvY2tldCwgRU9GIGFuZCBlcnJvciBjb25kaXRpb25zIGFsd2F5cyBjYXVzZSB0 aGUgc29ja2V0Ci0gKiB0byBiZSByZXBvcnRlZCBhcyByZWFkYWJsZS93cml0YWJsZS9jb25u ZWN0ZWQsIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbAotICogd2l0aCB0aGUgY29uZGl0 aW9uLgotICoKLSAqIHdha2VFdmVudHMgbXVzdCBpbmNsdWRlIGVpdGhlciBXTF9FWElUX09O X1BNX0RFQVRIIGZvciBhdXRvbWF0aWMgZXhpdAotICogaWYgdGhlIHBvc3RtYXN0ZXIgZGll cyBvciBXTF9QT1NUTUFTVEVSX0RFQVRIIGZvciBhIGZsYWcgc2V0IGluIHRoZQotICogcmV0 dXJuIHZhbHVlIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMuICBUaGUgbGF0dGVyIGlzIHVzZWZ1 bCBmb3IgcmFyZSBjYXNlcwotICogd2hlcmUgc29tZSBiZWhhdmlvciBvdGhlciB0aGFuIGlt bWVkaWF0ZSBleGl0IGlzIG5lZWRlZC4KLSAqCi0gKiBOQjogVGhlc2UgZGF5cyB0aGlzIGlz IGp1c3QgYSB3cmFwcGVyIGFyb3VuZCB0aGUgV2FpdEV2ZW50U2V0IEFQSS4gV2hlbgotICog dXNpbmcgYSBsYXRjaCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9u Z2VyIGxpdmluZwotICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVmZmlj aWVudC4KLSAqLwotaW50Ci1XYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3 YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAotCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIg d2FpdF9ldmVudF9pbmZvKQotewotCWludAkJCXJldCA9IDA7Ci0JaW50CQkJcmM7Ci0JV2Fp dEV2ZW50CWV2ZW50OwotCVdhaXRFdmVudFNldCAqc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0 KEN1cnJlbnRSZXNvdXJjZU93bmVyLCAzKTsKLQotCWlmICh3YWtlRXZlbnRzICYgV0xfVElN RU9VVCkKLQkJQXNzZXJ0KHRpbWVvdXQgPj0gMCk7Ci0JZWxzZQotCQl0aW1lb3V0ID0gLTE7 Ci0KLQlpZiAod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJQWRkV2FpdEV2ZW50VG9T ZXQoc2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkgIGxhdGNo LCBOVUxMKTsKLQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxl IHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFz dGVyIHx8Ci0JCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJ ICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQlpZiAoKHdha2VF dmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKLQkJ QWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURf U09DS0VULAotCQkJCQkJICBOVUxMLCBOVUxMKTsKLQotCWlmICgod2FrZUV2ZW50cyAmIFdM X0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQotCQlBZGRXYWl0RXZl bnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0J CQkJCQkgIE5VTEwsIE5VTEwpOwotCi0JaWYgKHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFT SykKLQl7Ci0JCWludAkJCWV2OwotCi0JCWV2ID0gd2FrZUV2ZW50cyAmIFdMX1NPQ0tFVF9N QVNLOwotCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCBOVUxMLCBOVUxMKTsK LQl9Ci0KLQlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAmZXZlbnQsIDEs IHdhaXRfZXZlbnRfaW5mbyk7Ci0KLQlpZiAocmMgPT0gMCkKLQkJcmV0IHw9IFdMX1RJTUVP VVQ7Ci0JZWxzZQotCXsKLQkJcmV0IHw9IGV2ZW50LmV2ZW50cyAmIChXTF9MQVRDSF9TRVQg fAotCQkJCQkJCSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAotCQkJCQkJCSAgIFdMX1NPQ0tF VF9NQVNLKTsKLQl9Ci0KLQlGcmVlV2FpdEV2ZW50U2V0KHNldCk7Ci0KLQlyZXR1cm4gcmV0 OwotfQotCi0vKgotICogU2V0cyBhIGxhdGNoIGFuZCB3YWtlcyB1cCBhbnlvbmUgd2FpdGlu ZyBvbiBpdC4KLSAqCi0gKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBsYXRjaCBpcyBhbHJlYWR5 IHNldCwgb3RoZXJ3aXNlIG5vdCBzbyBtdWNoLgotICoKLSAqIE5COiB3aGVuIGNhbGxpbmcg dGhpcyBpbiBhIHNpZ25hbCBoYW5kbGVyLCBiZSBzdXJlIHRvIHNhdmUgYW5kIHJlc3RvcmUK LSAqIGVycm5vIGFyb3VuZCBpdC4gIChUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgaW4gbW9z dCBzaWduYWwgaGFuZGxlcnMsIG9mCi0gKiBjb3Vyc2UsIGJ1dCB3ZSB1c2VkIHRvIG9taXQg aXQgaW4gaGFuZGxlcnMgdGhhdCBvbmx5IHNldCBhIGZsYWcuKQotICoKLSAqIE5COiB0aGlz IGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBzaWduYWwg aGFuZGxlcnMgc28KLSAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2QgaWRlYS4K LSAqLwotdm9pZAotU2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotI2lmbmRlZiBXSU4zMgot CXBpZF90CQlvd25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwotI2VuZGlmCi0K LQkvKgotCSAqIFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2VkIGhlcmUgdG8g ZW5zdXJlIHRoYXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkgY2hhbmdlZCBi eSB0aGlzIHByb2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAqIG1lbW9yeSwg YmVmb3JlIHdlIGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5X2JhcnJpZXIo KTsKLQotCS8qIFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAobGF0Y2gtPmlz X3NldCkKLQkJcmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0KLQlwZ19tZW1v cnlfYmFycmllcigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQlyZXR1cm47 Ci0KLSNpZm5kZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcg Zm9yIHRoZSBsYXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3 ZSdyZSBpbiBhIHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlwZSBvciBTSUdV UkcgdG8gb3Vyc2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRXYWl0QmxvY2so KSB3aXRob3V0IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFub3RoZXIgcHJv Y2Vzcywgc2VuZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3BpZCBvbmx5IG9u Y2UsIGluIGNhc2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5nCi0JICogb3du ZWQgb3IgZGlzb3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3QgaXMgYXRvbWlj LCB3aGljaCBpc24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4gcHJhY3RpY2Us IHRoZSBlZmZlY3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEgMzIgYml0IGlu dGVnZXIsIGFuZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3QgY2FzZSwgd2UK LQkgKiBtaWdodCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNzLiBFdmVuIHRo ZW4sIHlvdSdyZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0aCB0aGF0IGJv Z3VzIHBpZCBleGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3JlczsgYW5kIFBHIGRh dGFiYXNlIHByb2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1IxCi0JICogaW50 ZXJydXB0cyB3aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBBbm90aGVyIHNv cnQgb2YgcmFjZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMgZm9yIGEgbmV3 Ci0JICogcHJvY2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFmdGVyIHdlIGxv b2ssIHNvIHdlIGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkgc28gbG9uZyBh cyBhbGwgY2FsbGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cKLQkgKiB0aGUg c3RhbmRhcmQgY29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUgYm90dG9tIG9m IHRoZWlyIGxvb3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXknbGwgY29ycmVj dGx5IHByb2Nlc3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhhcHBlbiBiZWZv cmUgdGhleSBlbnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBsYXRjaC0+b3du ZXJfcGlkOwotCWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVsc2UgaWYgKG93 bmVyX3BpZCA9PSBNeVByb2NQaWQpCi0JCVdha2V1cE15UHJvYygpOwotCWVsc2UKLQkJV2Fr ZXVwT3RoZXJQcm9jKG93bmVyX3BpZCk7Ci0KLSNlbHNlCi0KLQkvKgotCSAqIFNlZSBpZiBh bnlvbmUncyB3YWl0aW5nIGZvciB0aGUgbGF0Y2guIEl0IGNhbiBiZSB0aGUgY3VycmVudCBw cm9jZXNzIGlmCi0JICogd2UncmUgaW4gYSBzaWduYWwgaGFuZGxlci4KLQkgKgotCSAqIFVz ZSBhIGxvY2FsIHZhcmlhYmxlIGhlcmUganVzdCBpbiBjYXNlIHNvbWVib2R5IGNoYW5nZXMg dGhlIGV2ZW50IGZpZWxkCi0JICogY29uY3VycmVudGx5ICh3aGljaCByZWFsbHkgc2hvdWxk IG5vdCBoYXBwZW4pLgotCSAqLwotCWhhbmRsZSA9IGxhdGNoLT5ldmVudDsKLQlpZiAoaGFu ZGxlKQotCXsKLQkJU2V0RXZlbnQoaGFuZGxlKTsKLQotCQkvKgotCQkgKiBOb3RlIHRoYXQg d2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFs Ci0JCSAqIGhhbmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBz YWZlIHRvIGNhbGwgZWxvZygpLgotCQkgKi8KLQl9Ci0jZW5kaWYKLX0KLQotLyoKLSAqIENs ZWFyIHRoZSBsYXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3aWxsIHNsZWVw LCB1bmxlc3MKLSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRoZSBXYWl0TGF0 Y2ggY2FsbC4KLSAqLwotdm9pZAotUmVzZXRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JLyog T25seSB0aGUgb3duZXIgc2hvdWxkIHJlc2V0IHRoZSBsYXRjaCAqLwotCUFzc2VydChsYXRj aC0+b3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0JQXNzZXJ0KGxhdGNoLT5tYXliZV9zbGVl cGluZyA9PSBmYWxzZSk7Ci0KLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0KLQkvKgotCSAq IEVuc3VyZSB0aGF0IHRoZSB3cml0ZSB0byBpc19zZXQgZ2V0cyBmbHVzaGVkIHRvIG1haW4g bWVtb3J5IGJlZm9yZSB3ZQotCSAqIGV4YW1pbmUgYW55IGZsYWcgdmFyaWFibGVzLiAgT3Ro ZXJ3aXNlIGEgY29uY3VycmVudCBTZXRMYXRjaCBtaWdodAotCSAqIGZhbHNlbHkgY29uY2x1 ZGUgdGhhdCBpdCBuZWVkbid0IHNpZ25hbCB1cywgZXZlbiB0aG91Z2ggd2UgaGF2ZSBtaXNz ZWQKLQkgKiBzZWVpbmcgc29tZSBmbGFnIHVwZGF0ZXMgdGhhdCBTZXRMYXRjaCB3YXMgc3Vw cG9zZWQgdG8gaW5mb3JtIHVzIG9mLgotCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci19 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4IGIxYjczZGFjM2JlLi44 MTMyYjU3YzhiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24u YnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKQEAgLTUs OSArNSw5IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2RzbS5jJywKICAgJ2Rz bV9pbXBsLmMnLAogICAnZHNtX3JlZ2lzdHJ5LmMnLAorICAnaW50ZXJydXB0LmMnLAogICAn aXBjLmMnLAogICAnaXBjaS5jJywKLSAgJ2xhdGNoLmMnLAogICAncG1zaWduYWwuYycsCiAg ICdwcm9jYXJyYXkuYycsCiAgICdwcm9jc2lnbmFsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDdkMjAxOTY1NTAzLi45MTU1N2E3OTI3ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjUsOCArMjUsOCBAQAogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJs ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCkBAIC00ODMsNyArNDgzLDcgQEAgSGFuZGxlUHJvY1NpZ25hbEJhcnJp ZXJJbnRlcnJ1cHQodm9pZCkKIHsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAlQcm9j U2lnbmFsQmFycmllclBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5 IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyogaW50ZXJydXB0IHdpbGwgYmUg cmFpc2VkIGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCiB9CiAKIC8qCkBAIC03 MTQsNyArNzE0LDcgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1Mp CiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZF UlBJTikpCiAJCUhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwogCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFp c2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zaG1fbXEuYwppbmRleCAyYzc5YTY0OWY0Ni4uYjc1MmRjY2VlMWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobV9tcS5jCkBAIC00LDcgKzQsNyBAQAogICoJICBzaW5nbGUtcmVh ZGVyLCBzaW5nbGUtd3JpdGVyIHNoYXJlZCBtZW1vcnkgbWVzc2FnZSBxdWV1ZQogICoKICAq IEJvdGggdGhlIHNlbmRlciBhbmQgdGhlIHJlY2VpdmVyIG11c3QgaGF2ZSBhIFBHUFJPQzsg dGhlaXIgcmVzcGVjdGl2ZQotICogcHJvY2VzcyBsYXRjaGVzIGFyZSB1c2VkIGZvciBzeW5j aHJvbml6YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCisgKiBwcm9jZXNzIGlu dGVycnVwdHMgYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlIHNlbmRl ciBtYXkgc2VuZCwKICAqIGFuZCBvbmx5IHRoZSByZWNlaXZlciBtYXkgcmVjZWl2ZS4gIFRo aXMgaXMgaW50ZW5kZWQgdG8gYWxsb3cgYSB1c2VyCiAgKiBiYWNrZW5kIHRvIGNvbW11bmlj YXRlIHdpdGggd29ya2VyIGJhY2tlbmRzIHRoYXQgaXQgaGFzIHJlZ2lzdGVyZWQuCiAgKgpA QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQv cGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCkBAIC00NCwxMCArNDUsMTEgQEAKICAqCiAgKiBtcV9kZXRhY2hlZCBuZWVkcyBubyBs b2NraW5nLiAgSXQgY2FuIGJlIHNldCBieSBlaXRoZXIgdGhlIHNlbmRlciBvciB0aGUKICAq IHJlY2VpdmVyLCBidXQgb25seSBldmVyIGZyb20gZmFsc2UgdG8gdHJ1ZSwgc28gcmVkdW5k YW50IHdyaXRlcyBkb24ndAotICogbWF0dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYg d2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0aGVuIHNldCB0aGUKLSAqIGNvdW50ZXJwYXJ0eSdz IGxhdGNoLCB0aGUgY291bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlIGNo YW5nZQotICogYWZ0ZXIgd2FraW5nIHVwLiAgU2luY2UgU2V0TGF0Y2ggYmVnaW5zIHdpdGgg YSBtZW1vcnkgYmFycmllciBhbmQgUmVzZXRMYXRjaAotICogZW5kcyB3aXRoIG9uZSwgdGhp cyBzaG91bGQgYmUgT0suCisgKiBtYXR0ZXIuICBJdCBpcyBpbXBvcnRhbnQgdGhhdCBpZiB3 ZSBzZXQgbXFfZGV0YWNoZWQgYW5kIHRoZW4gc2VuZCB0aGUKKyAqIGludGVycnVwdCB0byB0 aGUgY291bnRlcnBhcnR5LCB0aGUgY291bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBz ZWUgdGhlCisgKiBjaGFuZ2UgYWZ0ZXIgd2FraW5nIHVwLiAgU2luY2UgU2VuZEludGVycnVw dCBiZWdpbnMgd2l0aCBhIG1lbW9yeSBiYXJyaWVyCisgKiBhbmQgQ2xlYXJJbnRlcnJ1cHQg ZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91bGQgYmUgT0suCisgKiBYWFg6IE5vIGV4cGxpY2l0 IG1lbW9yeSBiYXJyaWVycyBpbiBTZW5kSW50dGVydXB0L0NsZWFySW50ZXJydXB0LCBkbyB3 ZSBuZWVkIHRvIGFkZCBzb21lPwogICoKICAqIG1xX3Jpbmdfc2l6ZSBhbmQgbXFfcmluZ19v ZmZzZXQgbmV2ZXIgY2hhbmdlIGFmdGVyIGluaXRpYWxpemF0aW9uLCBhbmQKICAqIGNhbiB0 aGVyZWZvcmUgYmUgcmVhZCB3aXRob3V0IHRoZSBsb2NrLgpAQCAtMTEyLDcgKzExNCw3IEBA IHN0cnVjdCBzaG1fbXEKICAqIHlldCB1cGRhdGVkIGluIHRoZSBzaGFyZWQgbWVtb3J5LiAg V2Ugd2lsbCBub3QgdXBkYXRlIGl0IHVudGlsIHRoZSB3cml0dGVuCiAgKiBkYXRhIGlzIDEv NHRoIG9mIHRoZSByaW5nIHNpemUgb3IgdGhlIHR1cGxlIHF1ZXVlIGlzIGZ1bGwuICBUaGlz IHdpbGwKICAqIHByZXZlbnQgZnJlcXVlbnQgQ1BVIGNhY2hlIG1pc3NlcywgYW5kIGl0IHdp bGwgYWxzbyBhdm9pZCBmcmVxdWVudAotICogU2V0TGF0Y2goKSBjYWxscywgd2hpY2ggYXJl IHF1aXRlIGV4cGVuc2l2ZS4KKyAqIFNlbmRJbnRlcnJ1cHQoKSBjYWxscywgd2hpY2ggYXJl IHF1aXRlIGV4cGVuc2l2ZS4KICAqCiAgKiBtcWhfcGFydGlhbF9ieXRlcywgbXFoX2V4cGVj dGVkX2J5dGVzLCBhbmQgbXFoX2xlbmd0aF93b3JkX2NvbXBsZXRlCiAgKiBhcmUgdXNlZCB0 byB0cmFjayB0aGUgc3RhdGUgb2Ygbm9uLWJsb2NraW5nIG9wZXJhdGlvbnMuICBXaGVuIHRo ZSBjYWxsZXIKQEAgLTIxNCw3ICsyMTYsNyBAQCBzaG1fbXFfc2V0X3JlY2VpdmVyKHNobV9t cSAqbXEsIFBHUFJPQyAqcHJvYykKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7 CiAKIAlpZiAoc2VuZGVyICE9IE5VTEwpCi0JCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRj aCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21Q R1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCkBAIC0yMzIsNyArMjM0LDcgQEAgc2htX21xX3Nl dF9zZW5kZXIoc2htX21xICptcSwgUEdQUk9DICpwcm9jKQogCVNwaW5Mb2NrUmVsZWFzZSgm bXEtPm1xX211dGV4KTsKIAogCWlmIChyZWNlaXZlciAhPSBOVUxMKQotCQlTZXRMYXRjaCgm cmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwsIEdldE51bWJlckZyb21QR1Byb2MocmVjZWl2ZXIpKTsKIH0KIAogLyoKQEAgLTM0MSwx NCArMzQzLDE0IEBAIHNobV9tcV9zZW5kKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0 ZXMsIGNvbnN0IHZvaWQgKmRhdGEsIGJvb2wgbm93YWl0LAogICogV3JpdGUgYSBtZXNzYWdl IGludG8gYSBzaGFyZWQgbWVzc2FnZSBxdWV1ZSwgZ2F0aGVyZWQgZnJvbSBtdWx0aXBsZQog ICogYWRkcmVzc2VzLgogICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQg b24gb3VyIHByb2Nlc3MgbGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIKLSAqIGZpbGxzIHVw LCBhbmQgdGhlbiBjb250aW51ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFp bmVkIHNvbWUgZGF0YS4KLSAqIFRoZSBwcm9jZXNzIGxhdGNoIGlzIHJlc2V0IGFmdGVyIGVh Y2ggd2FpdC4KKyAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHBy b2Nlc3MgaW50ZXJydXB0IHdoZW4gdGhlIHJpbmcKKyAqIGJ1ZmZlciBmaWxscyB1cCwgYW5k IHRoZW4gY29udGludWUgd3JpdGluZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5lZAor ICogc29tZSBkYXRhLiAgVGhlIHByb2Nlc3MgaW50ZXJydXB0IGlzIGNsZWFyZWQgYWZ0ZXIg ZWFjaCB3YWl0LgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlw dWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGxhdGNoOworICogV2hlbiBub3dhaXQg PSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3Mg aW50ZXJydXB0OwogICogaW5zdGVhZCwgaWYgdGhlIGJ1ZmZlciBiZWNvbWVzIGZ1bGwsIHdl IHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJbgogICogdGhpcyBjYXNlLCB0aGUgY2Fs bGVyIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4sIHdpdGggdGhlIHNhbWUKLSAq IGFyZ3VtZW50cywgZWFjaCB0aW1lIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldC4gIChPbmNl IGJlZ3VuLCB0aGUgc2VuZGluZworICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nl c3MgaW50ZXJydXB0IGlzIHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2VuZGluZwogICogb2Yg YSBtZXNzYWdlIGNhbm5vdCBiZSBhYm9ydGVkIGV4Y2VwdCBieSBkZXRhY2hpbmcgZnJvbSB0 aGUgcXVldWU7IGNoYW5naW5nCiAgKiB0aGUgbGVuZ3RoIG9yIHBheWxvYWQgd2lsbCBjb3Jy dXB0IHRoZSBxdWV1ZS4pCiAgKgpAQCAtNTM5LDcgKzU0MSw3IEBAIHNobV9tcV9zZW5kdihz aG1fbXFfaGFuZGxlICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBib29s IG5vd2FpdCwKIAl7CiAJCXNobV9tcV9pbmNfYnl0ZXNfd3JpdHRlbihtcSwgbXFoLT5tcWhf c2VuZF9wZW5kaW5nKTsKIAkJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCQlTZXRMYXRjaCgm cmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJlY2VpdmVyKSk7CiAJCW1xaC0+bXFoX3NlbmRf cGVuZGluZyA9IDA7CiAJfQogCkBAIC01NTcsMTYgKzU1OSwxNiBAQCBzaG1fbXFfc2VuZHYo c2htX21xX2hhbmRsZSAqbXFoLCBzaG1fbXFfaW92ZWMgKmlvdiwgaW50IGlvdmNudCwgYm9v bCBub3dhaXQsCiAgKiB3aGlsZSBzdGlsbCBhbGxvd2luZyBsb25nZXIgbWVzc2FnZXMuICBJ biBlaXRoZXIgY2FzZSwgdGhlIHJldHVybiB2YWx1ZQogICogcmVtYWlucyB2YWxpZCB1bnRp bCB0aGUgbmV4dCByZWNlaXZlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgb24gdGhlIHF1ZXVl LgogICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nl c3MgbGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIKLSAqIGlzIGVtcHR5IGFuZCB3ZSBoYXZl IG5vdCB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3NhZ2UuICBUaGUgc2VuZGVyIHdpbGwKLSAq IHNldCBvdXIgcHJvY2VzcyBsYXRjaCBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRl biwgYW5kIHdlJ2xsIHJlc3VtZQotICogcHJvY2Vzc2luZy4gIEVhY2ggY2FsbCB3aWxsIHRo ZXJlZm9yZSByZXR1cm4gYSBjb21wbGV0ZSBtZXNzYWdlCisgKiBXaGVuIG5vd2FpdCA9IGZh bHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRoZSByaW5n CisgKiBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIGhhdmUgbm90IHlldCByZWNlaXZlZCBhIGZ1 bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIKKyAqIHdpbGwgc2V0IG91ciBwcm9jZXNzIGludGVy cnVwdCBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdlJ2xsCisgKiBy ZXN1bWUgcHJvY2Vzc2luZy4gIEVhY2ggY2FsbCB3aWxsIHRoZXJlZm9yZSByZXR1cm4gYSBj b21wbGV0ZSBtZXNzYWdlCiAgKiAodW5sZXNzIHRoZSBzZW5kZXIgZGV0YWNoZXMgdGhlIHF1 ZXVlKS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRl IHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcyBsYXRjaDsKLSAqIGluc3RlYWQsIHdoZW5ldmVy IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIG5lZWQgdG8gcmVhZCBmcm9tIGl0LCB3ZQot ICogcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxl ciBzaG91bGQgY2FsbCB0aGlzCi0gKiBmdW5jdGlvbiBhZ2FpbiBhZnRlciB0aGUgcHJvY2Vz cyBsYXRjaCBoYXMgYmVlbiBzZXQuCisgKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5v dCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcworICogaW50ZXJydXB0OyBp bnN0ZWFkLCB3aGVuZXZlciB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCB3ZSBuZWVkIHRvIHJl YWQgZnJvbQorICogaXQsIHdlIHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJbiB0aGlz IGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24gYWdhaW4g YWZ0ZXIgdGhlIHByb2Nlc3MgaW50ZXJydXB0IGhhcyBiZWVuIHNldC4KICAqLwogc2htX21x X3Jlc3VsdAogc2htX21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplICpuYnl0 ZXNwLCB2b2lkICoqZGF0YXAsIGJvb2wgbm93YWl0KQpAQCAtNjE5LDggKzYyMSw4IEBAIHNo bV9tcV9yZWNlaXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwgdm9pZCAq KmRhdGFwLCBib29sIG5vd2FpdCkKIAkgKiBJZiB3ZSd2ZSBjb25zdW1lZCBhbiBhbW91bnQg b2YgZGF0YSBncmVhdGVyIHRoYW4gMS80dGggb2YgdGhlIHJpbmcKIAkgKiBzaXplLCBtYXJr IGl0IGNvbnN1bWVkIGluIHNoYXJlZCBtZW1vcnkuICBXZSB0cnkgdG8gYXZvaWQgZG9pbmcg dGhpcwogCSAqIHVubmVjZXNzYXJpbHkgd2hlbiBvbmx5IGEgc21hbGwgYW1vdW50IG9mIGRh dGEgaGFzIGJlZW4gY29uc3VtZWQsCi0JICogYmVjYXVzZSBTZXRMYXRjaCgpIGlzIGZhaXJs eSBleHBlbnNpdmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQgdG9vCi0JICogb2Z0ZW4u CisJICogYmVjYXVzZSBTZW5kSW50ZXJydXB0KCkgaXMgZmFpcmx5IGV4cGVuc2l2ZSBhbmQg d2UgZG9uJ3Qgd2FudCB0byBkbyBpdAorCSAqIHRvbyBvZnRlbi4KIAkgKi8KIAlpZiAobXFo LT5tcWhfY29uc3VtZV9wZW5kaW5nID4gbXEtPm1xX3Jpbmdfc2l6ZSAvIDQpCiAJewpAQCAt ODk1LDcgKzg5Nyw3IEBAIHNobV9tcV9kZXRhY2hfaW50ZXJuYWwoc2htX21xICptcSkKIAlT cGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAodmljdGltICE9IE5VTEwp Ci0JCVNldExhdGNoKCZ2aWN0aW0tPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2ModmljdGltKSk7CiB9CiAKIC8q CkBAIC05OTMsNyArOTk1LDcgQEAgc2htX21xX3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAq bXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAkJCSAqIFRoZXJlZm9yZSwg d2UgY2FuIHJlYWQgaXQgd2l0aG91dCBhY3F1aXJpbmcgdGhlIHNwaW5sb2NrLgogCQkJICov CiAJCQlBc3NlcnQobXFoLT5tcWhfY291bnRlcnBhcnR5X2F0dGFjaGVkKTsKLQkJCVNldExh dGNoKCZtcS0+bXFfcmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKG1xLT5tcV9yZWNlaXZlcikp OwogCiAJCQkvKgogCQkJICogV2UgaGF2ZSBqdXN0IHVwZGF0ZWQgdGhlIG1xaF9zZW5kX3Bl bmRpbmcgYnl0ZXMgaW4gdGhlIHNoYXJlZApAQCAtMTAwMSw3ICsxMDAzLDcgQEAgc2htX21x X3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9p ZCAqZGF0YSwKIAkJCSAqLwogCQkJbXFoLT5tcWhfc2VuZF9wZW5kaW5nID0gMDsKIAotCQkJ LyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9IHRydWUuICov CisJCQkvKiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4gKi8KIAkJCWlmIChub3dh aXQpCiAJCQl7CiAJCQkJKmJ5dGVzX3dyaXR0ZW4gPSBzZW50OwpAQCAtMTAwOSwxNyArMTAx MSwxNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5 dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJfQogCiAJCQkvKgotCQkJICogV2FpdCBmb3Ig b3VyIGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21l CisJCQkgKiBXYWl0IGZvciB0aGUgaW50ZXJydXB0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBz ZXQgZm9yIHNvbWUKIAkJCSAqIHVucmVsYXRlZCByZWFzb24sIGJ1dCB0aGF0J2xsIGp1c3Qg cmVzdWx0IGluIG9uZSBleHRyYSB0cmlwCi0JCQkgKiB0aHJvdWdoIHRoZSBsb29wLiAgSXQn cyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNoCi0JCQkgKiBhdCB0b3Ag b2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGxhdGNoIGlzIG11Y2gK LQkJCSAqIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJlc2V0Lgor CQkJICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgY2xlYXJp bmcgdGhlCisJCQkgKiBpbnRlcnJ1cHQgYXQgdG9wIG9mIGxvb3AsIGJlY2F1c2Ugc2V0dGlu ZyBhbiBhbHJlYWR5LXNldAorCQkJICogaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBlciB0aGFu IHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQuCiAJCQkgKi8KLQkJCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NFTkQpOworCQkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9R VUVVRV9TRU5EKTsKIAotCQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4u ICovCi0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJLyogQ2xlYXIgdGhlIGludGVycnVw dCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCiAJCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUg d2Ugd2VyZSB3YWl0aW5nLiAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTEw NTQsNyArMTA1Niw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwg U2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAKIAkJCS8qCiAJCQkgKiBGb3IgZWZm aWNpZW5jeSwgd2UgZG9uJ3QgdXBkYXRlIHRoZSBieXRlcyB3cml0dGVuIGluIHRoZSBzaGFy ZWQKLQkJCSAqIG1lbW9yeSBhbmQgYWxzbyBkb24ndCBzZXQgdGhlIHJlYWRlcidzIGxhdGNo IGhlcmUuICBSZWZlciB0bworCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0IHNlbmQgdGhl IHJlYWRlciBpbnRlcnJ1cHQgaGVyZS4gIFJlZmVyIHRvCiAJCQkgKiB0aGUgY29tbWVudHMg YXRvcCB0aGUgc2htX21xX2hhbmRsZSBzdHJ1Y3R1cmUgZm9yIG1vcmUKIAkJCSAqIGluZm9y bWF0aW9uLgogCQkJICovCkBAIC0xMTUwLDIyICsxMTUyLDIyIEBAIHNobV9tcV9yZWNlaXZl X2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBieXRlc19uZWVkZWQsIGJvb2wgbm93 YWl0LAogCQkJbXFoLT5tcWhfY29uc3VtZV9wZW5kaW5nID0gMDsKIAkJfQogCi0JCS8qIFNr aXAgbWFuaXB1bGF0aW9uIG9mIG91ciBsYXRjaCBpZiBub3dhaXQgPSB0cnVlLiAqLworCQkv KiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4gKi8KIAkJaWYgKG5vd2FpdCkKIAkJ CXJldHVybiBTSE1fTVFfV09VTERfQkxPQ0s7CiAKIAkJLyoKLQkJICogV2FpdCBmb3Igb3Vy IGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21lCisJ CSAqIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQgdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFk eSBiZSBzZXQgZm9yIHNvbWUKIAkJICogdW5yZWxhdGVkIHJlYXNvbiwgYnV0IHRoYXQnbGwg anVzdCByZXN1bHQgaW4gb25lIGV4dHJhIHRyaXAgdGhyb3VnaAotCQkgKiB0aGUgbG9vcC4g IEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBsYXRjaCBhdCB0b3Agb2YK LQkJICogbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGxhdGNoIGlzIG11 Y2ggY2hlYXBlciB0aGFuCi0JCSAqIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQu CisJCSAqIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCBjbGVhcmluZyB0aGUg aW50ZXJydXB0IGF0IHRvcCBvZgorCQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxy ZWFkeS1zZXQgaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBlciB0aGFuCisJCSAqIHNldHRpbmcg b25lIHRoYXQgaGFzIGJlZW4gY2xlYXJlZC4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2go TXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJ CSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUkVDRUlWRSk7CisJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNF SVZFKTsKIAotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBk b24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAK IAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2Fp dGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTEyNTAsMTEgKzEyNTIs MTEgQEAgc2htX21xX3dhaXRfaW50ZXJuYWwoc2htX21xICptcSwgUEdQUk9DICoqcHRyLCBC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCX0KIAogCQkvKiBXYWl0IHRvIGJl IHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdF X1FVRVVFX0lOVEVSTkFMKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX0lOVEVSTkFMKTsKIAotCQkvKiBSZXNl dCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQW4gaW50ZXJydXB0 IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKQEAgLTEyOTMsNyArMTI5NSw3IEBAIHNobV9tcV9pbmNfYnl0 ZXNfcmVhZChzaG1fbXEgKm1xLCBTaXplIG4pCiAJICovCiAJc2VuZGVyID0gbXEtPm1xX3Nl bmRlcjsKIAlBc3NlcnQoc2VuZGVyICE9IE5VTEwpOwotCVNldExhdGNoKCZzZW5kZXItPnBy b2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhzZW5kZXIpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aWduYWxmdW5jcy5jCmluZGV4IGJlYmM5N2VjZmZkLi5kNzdiNGY0NGFkNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9zeXNsb2dnZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjA0LDEyICsyMDUsMTIg QEAgcGdfd2FpdF91bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0aW1lb3V0KQog CQkvKiBQcm9jZXNzIGludGVycnVwdHMsIGlmIGFueSwgYmVmb3JlIHdhaXRpbmcgKi8KIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCQkgd2FpdHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1J TkFUSU9OKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJIHdhaXR0aW1lLAorCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tFTkRf VEVSTUlOQVRJT04pOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQlyZW1haW5pbmd0aW1lIC09IHdhaXR0aW1l OwogCX0gd2hpbGUgKHJlbWFpbmluZ3RpbWUgPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lu dmFsLmMKaW5kZXggNmVlYThlODcxNjkuLjNjMTEyZGFmMDAxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zaW52YWwuYwpAQCAtMTYsNyArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hh Y3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAKQEAgLTMxLDggKzMx LDggQEAgdWludDY0CQlTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50ZXI7CiAgKiB0aHJvdWdo IGEgY2FjaGUgcmVzZXQgZXhlcmNpc2UuICBUaGlzIGlzIGRvbmUgYnkgc2VuZGluZwogICog UFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCB0byBhbnkgYmFja2VuZCB0aGF0IGdldHMgdG9v IGZhciBiZWhpbmQuCiAgKgotICogVGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgc2V0IGFuIGlu dGVycnVwdCBwZW5kaW5nIGZsYWcgYW5kIHdpbGwgc2V0IHRoZQotICogcHJvY2Vzc2VzIGxh dGNoLiBXaGVuZXZlciBzdGFydGluZyB0byByZWFkIGZyb20gdGhlIGNsaWVudCwgb3Igd2hl bgorICogVGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgc2V0IGFuIGludGVycnVwdCBwZW5kaW5n IGZsYWcgYW5kIHJhaXNlIHRoZQorICogSU5URVJSVVBUX0dFTkVSQUwuIFdoZW5ldmVyIHN0 YXJ0aW5nIHRvIHJlYWQgZnJvbSB0aGUgY2xpZW50LCBvciB3aGVuCiAgKiBpbnRlcnJ1cHRl ZCB3aGlsZSBkb2luZyBzbywgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsIGNh bGwKICAqIFByb2Nlc3NDYXRjaHVwRXZlbnQoKS4KICAqLwpAQCAtMTQ4LDcgKzE0OCw3IEBA IFJlY2VpdmVTaGFyZWRJbnZhbGlkTWVzc2FnZXModm9pZCAoKmludmFsRnVuY3Rpb24pIChT aGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlICptCiAgKgogICogV2UgdXNlZCB0byBkaXJlY3Rs eSBjYWxsIFByb2Nlc3NDYXRjaHVwRXZlbnQgZGlyZWN0bHkgd2hlbiBpZGxlLiBUaGVzZSBk YXlzCiAgKiB3ZSBqdXN0IHNldCBhIGZsYWcgdG8gZG8gaXQgbGF0ZXIgYW5kIG5vdGlmeSB0 aGUgcHJvY2VzcyBvZiB0aGF0IGZhY3QgYnkKLSAqIHNldHRpbmcgdGhlIHByb2Nlc3MncyBs YXRjaC4KKyAqIHJhaXNpbmcgSU5URVJSVVBUX0dFTkVSQUwuCiAgKi8KIHZvaWQKIEhhbmRs ZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKQEAgLTE2MSw3ICsxNjEsNyBAQCBIYW5kbGVDYXRj aHVwSW50ZXJydXB0KHZvaWQpCiAJY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwog CiAJLyogbWFrZSBzdXJlIHRoZSBldmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAq LwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA1YWNi NDUwOGY4NS4uNzZiMjk5NmYzMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxh ZHQuaCIKQEAgLTU5NCw3ICs1OTUsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhE YXRhYmFzZShPaWQgZGJpZCkKICAqIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2sg aXMgY2FsbGVkIGZyb20gUHJvY1NsZWVwKCkKICAqIHRvIHJlc29sdmUgY29uZmxpY3RzIHdp dGggb3RoZXIgYmFja2VuZHMgaG9sZGluZyByZWxhdGlvbiBsb2Nrcy4KICAqCi0gKiBUaGUg V2FpdExhdGNoIHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJvY1NsZWVwKCkKKyAqIFRoZSBX YWl0SW50ZXJydXB0IHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJvY1NsZWVwKCkKICAqICh3 aGVuIG5vdCBJbkhvdFN0YW5kYnkpIGlzIHBlcmZvcm1lZCBoZXJlLCBmb3IgY29kZSBjbGFy aXR5LgogICoKICAqIFdlIGVpdGhlciByZXNvbHZlIGNvbmZsaWN0cyBpbW1lZGlhdGVseSBv ciBzZXQgYSB0aW1lb3V0IHRvIHdha2UgdXMgYXQKQEAgLTY5Niw3ICs2OTcsMTAgQEAgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0YWcsIGJvb2wgbG9n Z2luZ19jb25mbGljdCkKIAl9CiAKIAkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkIGJ5IHRoZSBy ZWxlYXNlIG9mIHRoZSBSZWxhdGlvbiBMb2NrICovCi0JUHJvY1dhaXRGb3JTaWduYWwoUEdf V0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCVdhaXRJbnRlcnJ1cHQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwgMCwKKwkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKIAogCS8qCiAJICogRXhpdCBpZiBsdGltZSBpcyByZWFjaGVkLiBUaGVuIGFsbCB0 aGUgYmFja2VuZHMgaG9sZGluZyBjb25mbGljdGluZwpAQCAtNzQ1LDcgKzc0OSwxMCBAQCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBs b2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRpbCB0aGUgcmVsYXRpb24gbG9ja3MgYXJlIHJl bGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQuCiAJCSAqLwogCQlnb3Rfc3RhbmRieV9kZWFk bG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVByb2NXYWl0Rm9yU2lnbmFsKFBHX1dBSVRfTE9D SyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAor CQkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCX0KIAogY2xlYW51cDoKQEAgLTgzNyw5ICs4NDQsMTQgQEAgUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCiAJICogV2UgYXNzdW1lIHRoYXQgb25seSBV bnBpbkJ1ZmZlcigpIGFuZCB0aGUgdGltZW91dCByZXF1ZXN0cyBlc3RhYmxpc2hlZAogCSAq IGFib3ZlIGNhbiB3YWtlIHVzIHVwIGhlcmUuIFdha2V1cFJlY292ZXJ5KCkgY2FsbGVkIGJ5 IHdhbHJlY2VpdmVyIG9yCiAJICogU0lHSFVQIHNpZ25hbCBoYW5kbGVyLCBldGMgY2Fubm90 IGRvIHRoYXQgYmVjYXVzZSBpdCB1c2VzIHRoZSBkaWZmZXJlbnQKLQkgKiBsYXRjaCBmcm9t IHRoYXQgUHJvY1dhaXRGb3JTaWduYWwoKSB3YWl0cyBvbi4KKwkgKiBpbnRlcnJ1cHQgZmxh Zy4gRklYTUU6IHNlZW1zIGxpa2UgYSBzaGFreSBhc3N1bXB0aW9uLiBXYWtldXBSZWNvdmVy eSgpCisJICogaW5kZWVkIHVzZXMgYSBkaWZmZXJlbnQgaW50ZXJydXB0IGZsYWcgKGRpZmZl cmVudCBsYXRjaCBlYXJsaWVyKSwgYnV0CisJICogdGhlIHNpZ25hbCBoYW5kbGVyPz8KIAkg Ki8KLQlQcm9jV2FpdEZvclNpZ25hbChXQUlUX0VWRU5UX0JVRkZFUl9QSU4pOworCVdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7CisJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKIAlpZiAoZ290X3N0YW5kYnlfZGVsYXlfdGltZW91dCkKIAkJU2VuZFJlY292ZXJ5 Q29uZmxpY3RXaXRoQnVmZmVyUGluKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVS UElOKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNl dC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggN2Mw ZTY2OTAwZjkuLjFiN2IzOTI2ODY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy93YWl0ZXZlbnRzZXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0 ZXZlbnRzZXQuYwpAQCAtOCw4ICs4LDggQEAKICAqIHBzZWxlY3QoKSAoYXMgb3Bwb3NlZCB0 byBwbGFpbiBwb2xsKCkvc2VsZWN0KCkpLgogICoKICAqIFlvdSBjYW4gd2FpdCBmb3I6Ci0g KiAtIGEgbGF0Y2ggYmVpbmcgc2V0IGZyb20gYW5vdGhlciBwcm9jZXNzIG9yIGZyb20gc2ln bmFsIGhhbmRsZXIgaW4gdGhlIHNhbWUKLSAqICAgcHJvY2VzcyAoV0xfTEFUQ0hfU0VUKQor ICogLSBhbiBpbnRlcnJ1cHQgZnJvbSBhbm90aGVyIHByb2Nlc3Mgb3IgZnJvbSBzaWduYWwg aGFuZGxlciBpbiB0aGUgc2FtZQorICogICBwcm9jZXNzIChXTF9JTlRFUlJVUFQpCiAgKiAt IGRhdGEgdG8gYmVjb21lIHJlYWRhYmxlIG9yIHdyaXRlYWJsZSBvbiBhIHNvY2tldCAoV0xf U09DS0VUXyopCiAgKiAtIHBvc3RtYXN0ZXIgZGVhdGggKFdMX1BPU1RNQVNURVJfREVBVEgg b3IgV0xfRVhJVF9PTl9QTV9ERUFUSCkKICAqIC0gdGltZW91dCAoV0xfVElNRU9VVCkKQEAg LTE3LDE1ICsxNywxNiBAQAogICogSW1wbGVtZW50YXRpb24KICAqIC0tLS0tLS0tLS0tLS0t CiAgKgotICogVGhlIHBvbGwoKSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQg c2VsZi1waXBlIHRyaWNrIHRvIG92ZXJjb21lIHRoZQotICogcmFjZSBjb25kaXRpb24gaW52 b2x2ZWQgd2l0aCBwb2xsKCkgYW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUgc2ln bmFsCi0gKiBoYW5kbGVyLiBXaGVuIGEgbGF0Y2ggaXMgc2V0IGFuZCB0aGUgY3VycmVudCBw cm9jZXNzIGlzIHdhaXRpbmcgZm9yIGl0LCB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHdha2Vz IHVwIHRoZSBwb2xsKCkgaW4gV2FpdExhdGNoIGJ5IHdyaXRpbmcgYSBieXRlIHRvIGEgcGlw ZS4KLSAqIEEgc2lnbmFsIGJ5IGl0c2VsZiBkb2Vzbid0IGludGVycnVwdCBwb2xsKCkgb24g YWxsIHBsYXRmb3JtcywgYW5kIGV2ZW4gb24KLSAqIHBsYXRmb3JtcyB3aGVyZSBpdCBkb2Vz LCBhIHNpZ25hbCB0aGF0IGFycml2ZXMganVzdCBiZWZvcmUgdGhlIHBvbGwoKSBjYWxsCi0g KiBkb2VzIG5vdCBwcmV2ZW50IHBvbGwoKSBmcm9tIGVudGVyaW5nIHNsZWVwLiBBbiBpbmNv bWluZyBieXRlIG9uIGEgcGlwZQotICogaG93ZXZlciByZWxpYWJseSBpbnRlcnJ1cHRzIHRo ZSBzbGVlcCwgYW5kIGNhdXNlcyBwb2xsKCkgdG8gcmV0dXJuCi0gKiBpbW1lZGlhdGVseSBl dmVuIGlmIHRoZSBzaWduYWwgYXJyaXZlcyBiZWZvcmUgcG9sbCgpIGJlZ2lucy4KKyAqIFRo ZSBwb2xsKCkgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc28tY2FsbGVkIHNlbGYtcGlwZSB0 cmljayB0byBvdmVyY29tZQorICogdGhlIHJhY2UgY29uZGl0aW9uIGludm9sdmVkIHdpdGgg cG9sbCgpIGFuZCBzZXR0aW5nIGEgZ2xvYmFsIGZsYWcgaW4gdGhlCisgKiBzaWduYWwgaGFu ZGxlci4gV2hlbiBhbiBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQgYW5kIHRoZSBjdXJyZW50IHBy b2Nlc3MgaXMKKyAqIHdhaXRpbmcgZm9yIGl0LCB0aGUgc2lnbmFsIGhhbmRsZXIgd2FrZXMg dXAgdGhlIHBvbGwoKSBpbiBXYWl0SW50ZXJydXB0IGJ5CisgKiB3cml0aW5nIGEgYnl0ZSB0 byBhIHBpcGUuICBBIHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgp IG9uCisgKiBhbGwgcGxhdGZvcm1zLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQg ZG9lcywgYSBzaWduYWwgdGhhdCBhcnJpdmVzCisgKiBqdXN0IGJlZm9yZSB0aGUgcG9sbCgp IGNhbGwgZG9lcyBub3QgcHJldmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4K KyAqIGluY29taW5nIGJ5dGUgb24gYSBwaXBlIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0 cyB0aGUgc2xlZXAsIGFuZCBjYXVzZXMKKyAqIHBvbGwoKSB0byByZXR1cm4gaW1tZWRpYXRl bHkgZXZlbiBpZiB0aGUgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKQorICogYmVnaW5z LgogICoKICAqIFRoZSBlcG9sbCgpIGltcGxlbWVudGF0aW9uIG92ZXJjb21lcyB0aGUgcmFj ZSB3aXRoIGEgZGlmZmVyZW50IHRlY2huaXF1ZTogaXQKICAqIGtlZXBzIFNJR1VSRyBibG9j a2VkIGFuZCBjb25zdW1lcyBmcm9tIGEgc2lnbmFsZmQoKSBkZXNjcmlwdG9yIGluc3RlYWQu ICBXZQpAQCAtNzAsOSArNzEsMTAgQEAKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90 aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtMTI3LDEzICsxMjksMTMg QEAgc3RydWN0IFdhaXRFdmVudFNldAogCVdhaXRFdmVudCAgKmV2ZW50czsKIAogCS8qCi0J ICogSWYgV0xfTEFUQ0hfU0VUIGlzIHNwZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgbGF0 Y2ggaXMgYSBwb2ludGVyIHRvCi0JICogc2FpZCBsYXRjaCwgYW5kIGxhdGNoX3BvcyB0aGUg b2Zmc2V0IGluIHRoZSAtPmV2ZW50cyBhcnJheS4gVGhpcyBpcwotCSAqIHVzZWZ1bCBiZWNh dXNlIHdlIGNoZWNrIHRoZSBzdGF0ZSBvZiB0aGUgbGF0Y2ggYmVmb3JlIHBlcmZvcm1pbmcg ZG9pbmcKLQkgKiBzeXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCisJICogSWYgV0xfSU5U RVJSVVBUIGlzIHNwZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgaW50ZXJydXB0TWFzayBp cyB0aGUKKwkgKiBpbnRlcnJ1cHRzIHRvIHdhaXQgZm9yLCBhbmQgaW50ZXJydXB0X3BvcyB0 aGUgb2Zmc2V0IGluIHRoZSAtPmV2ZW50cworCSAqIGFycmF5LiBUaGlzIGlzIHVzZWZ1bCBi ZWNhdXNlIHdlIGNoZWNrIHRoZSBzdGF0ZSBvZiBwZW5kaW5nIGludGVycnVwdHMKKwkgKiBi ZWZvcmUgcGVyZm9ybWluZyBkb2luZyBzeXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCiAJ ICovCi0JTGF0Y2gJICAgKmxhdGNoOwotCWludAkJCWxhdGNoX3BvczsKKwl1aW50MzIJCWlu dGVycnVwdF9tYXNrOworCWludAkJCWludGVycnVwdF9wb3M7CiAKIAkvKgogCSAqIFdMX0VY SVRfT05fUE1fREVBVEggaXMgY29udmVydGVkIHRvIFdMX1BPU1RNQVNURVJfREVBVEgsIGJ1 dCB0aGlzIGZsYWcKQEAgLTE2Niw3ICsxNjgsNyBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiB9 OwogCiAjaWZuZGVmIFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5IGluIFdhaXRMYXRjaD8g VGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KKy8qIEFyZSB3ZSBj dXJyZW50bHkgb24gYSBXYWl0RXZlbnRTZXQ/IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBs aWtlIHRvIGtub3cuICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdhaXRpbmcg PSBmYWxzZTsKICNlbmRpZgogCkBAIC0xODIsOSArMTg0LDE2IEBAIHN0YXRpYyBpbnQJc2Vs ZnBpcGVfd3JpdGVmZCA9IC0xOwogCiAvKiBQcm9jZXNzIG93bmluZyB0aGUgc2VsZi1waXBl IC0tLSBuZWVkZWQgZm9yIGNoZWNraW5nIHB1cnBvc2VzICovCiBzdGF0aWMgaW50CXNlbGZw aXBlX293bmVyX3BpZCA9IDA7CisjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCitz dGF0aWMgSEFORExFIExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CisjZW5kaWYKIAogLyog UHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzICovCi1zdGF0aWMgdm9pZCBsYXRjaF9zaWd1 cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CisKKyNpZmRlZiBXQUlUX1VTRV9TRUxGX1BJUEUK K3N0YXRpYyB2b2lkIGludGVycnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBz dGF0aWMgdm9pZCBzZW5kU2VsZlBpcGVCeXRlKHZvaWQpOwogI2VuZGlmCiAKQEAgLTIzNCw3 ICsyNDMsNyBAQCBSZXNvdXJjZU93bmVyRm9yZ2V0V2FpdEV2ZW50U2V0KFJlc291cmNlT3du ZXIgb3duZXIsIFdhaXRFdmVudFNldCAqc2V0KQogICogSW5pdGlhbGl6ZSB0aGUgcHJvY2Vz cy1sb2NhbCB3YWl0IGV2ZW50IGluZnJhc3RydWN0dXJlLgogICoKICAqIFRoaXMgbXVzdCBi ZSBjYWxsZWQgb25jZSBkdXJpbmcgc3RhcnR1cCBvZiBhbnkgcHJvY2VzcyB0aGF0IGNhbiB3 YWl0IG9uCi0gKiBsYXRjaGVzLCBiZWZvcmUgaXQgaXNzdWVzIGFueSBJbml0TGF0Y2goKSBv ciBPd25MYXRjaCgpIGNhbGxzLgorICogaW50ZXJydXB0cy4KICAqLwogdm9pZAogSW5pdGlh bGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkKQEAgLTI4NCwxMiArMjkzLDEyIEBAIEluaXRp YWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpCiAKIAkvKgogCSAqIFNldCB1cCB0aGUgc2Vs Zi1waXBlIHRoYXQgYWxsb3dzIGEgc2lnbmFsIGhhbmRsZXIgdG8gd2FrZSB1cCB0aGUKLQkg KiBwb2xsKCkvZXBvbGxfd2FpdCgpIGluIFdhaXRMYXRjaC4gTWFrZSB0aGUgd3JpdGUtZW5k IG5vbi1ibG9ja2luZywgc28KLQkgKiB0aGF0IFNldExhdGNoIHdvbid0IGJsb2NrIGlmIHRo ZSBldmVudCBoYXMgYWxyZWFkeSBiZWVuIHNldCBtYW55IHRpbWVzCi0JICogZmlsbGluZyB0 aGUga2VybmVsIGJ1ZmZlci4gTWFrZSB0aGUgcmVhZC1lbmQgbm9uLWJsb2NraW5nIHRvbywg c28gdGhhdAotCSAqIHdlIGNhbiBlYXNpbHkgY2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1 bnRpbCBFQUdBSU4gb3IgRVdPVUxEQkxPQ0suCi0JICogQWxzbywgbWFrZSBib3RoIEZEcyBj bG9zZS1vbi1leGVjLCBzaW5jZSB3ZSBzdXJlbHkgZG8gbm90IHdhbnQgYW55Ci0JICogY2hp bGQgcHJvY2Vzc2VzIG1lc3Npbmcgd2l0aCB0aGVtLgorCSAqIHBvbGwoKS9lcG9sbF93YWl0 KCkgaW4gV2FpdEludGVycnVwdC4gTWFrZSB0aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2luZywK KwkgKiBzbyB0aGF0IFNlbmRJbnRlcnJ1cHQgd29uJ3QgYmxvY2sgaWYgdGhlIGV2ZW50IGhh cyBhbHJlYWR5IGJlZW4gc2V0CisJICogbWFueSB0aW1lcyBmaWxsaW5nIHRoZSBrZXJuZWwg YnVmZmVyLiBNYWtlIHRoZSByZWFkLWVuZCBub24tYmxvY2tpbmcKKwkgKiB0b28sIHNvIHRo YXQgd2UgY2FuIGVhc2lseSBjbGVhciB0aGUgcGlwZSBieSByZWFkaW5nIHVudGlsIEVBR0FJ TiBvcgorCSAqIEVXT1VMREJMT0NLLiBBbHNvLCBtYWtlIGJvdGggRkRzIGNsb3NlLW9uLWV4 ZWMsIHNpbmNlIHdlIHN1cmVseSBkbyBub3QKKwkgKiB3YW50IGFueSBjaGlsZCBwcm9jZXNz ZXMgbWVzc2luZyB3aXRoIHRoZW0uCiAJICovCiAJaWYgKHBpcGUocGlwZWZkKSA8IDApCiAJ CWVsb2coRkFUQUwsICJwaXBlKCkgZmFpbGVkOiAlbSIpOwpAQCAtMzEwLDcgKzMxOSw3IEBA IEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpCiAJUmVzZXJ2ZUV4dGVybmFsRkQo KTsKIAlSZXNlcnZlRXh0ZXJuYWxGRCgpOwogCi0JcHFzaWduYWwoU0lHVVJHLCBsYXRjaF9z aWd1cmdfaGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVJHLCBpbnRlcnJ1cHRfc2lndXJnX2hh bmRsZXIpOwogI2VuZGlmCiAKICNpZmRlZiBXQUlUX1VTRV9TSUdOQUxGRApAQCAtMzQ4LDYg KzM1NywxMiBAQCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKQogCS8qIElnbm9y ZSBTSUdVUkcsIGJlY2F1c2Ugd2UnbGwgcmVjZWl2ZSBpdCB2aWEga3F1ZXVlLiAqLwogCXBx c2lnbmFsKFNJR1VSRywgU0lHX0lHTik7CiAjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJ TjMyCisJTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRS VUUsIEZBTFNFLCBOVUxMKTsKKwlpZiAoTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBO VUxMKQorCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVs dSIsIEdldExhc3RFcnJvcigpKTsKKyNlbmRpZgogfQogCiAvKgpAQCAtNDExLDcgKzQyNiw4 IEBAIENyZWF0ZVdhaXRFdmVudFNldChSZXNvdXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2 ZW50cykKIAlkYXRhICs9IE1BWEFMSUdOKHNpemVvZihIQU5ETEUpICogbmV2ZW50cyk7CiAj ZW5kaWYKIAotCXNldC0+bGF0Y2ggPSBOVUxMOworCXNldC0+aW50ZXJydXB0X21hc2sgPSAw OworCXNldC0+aW50ZXJydXB0X3BvcyA9IC0xOwogCXNldC0+bmV2ZW50c19zcGFjZSA9IG5l dmVudHM7CiAJc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPSBmYWxzZTsKIApAQCAt NDk2LDkgKzUxMiw5IEBAIEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiAJ CSBjdXJfZXZlbnQgPCAoc2V0LT5ldmVudHMgKyBzZXQtPm5ldmVudHMpOwogCQkgY3VyX2V2 ZW50KyspCiAJewotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJ CWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJLyogdXNl cyB0aGUgbGF0Y2gncyBIQU5ETEUgKi8KKwkJCS8qIHVzZXMgdGhlIHByb2Nlc3MncyB3YWtl dXAgSEFORExFICovCiAJCX0KIAkJZWxzZSBpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9Q T1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC01MzUsNyArNTUxLDcgQEAgRnJlZVdhaXRFdmVu dFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKIAogLyogLS0tCiAgKiBBZGQgYW4g ZXZlbnQgdG8gdGhlIHNldC4gUG9zc2libGUgZXZlbnRzIGFyZToKLSAqIC0gV0xfTEFUQ0hf U0VUOiBXYWl0IGZvciB0aGUgbGF0Y2ggdG8gYmUgc2V0CisgKiAtIFdMX0lOVEVSUlVQVDog V2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBzZXQKICAqIC0gV0xfUE9TVE1BU1RFUl9E RUFUSDogV2FpdCBmb3IgcG9zdG1hc3RlciB0byBkaWUKICAqIC0gV0xfU09DS0VUX1JFQURB QkxFOiBXYWl0IGZvciBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLAogICoJIGNhbiBiZSBj b21iaW5lZCBpbiBvbmUgZXZlbnQgd2l0aCBvdGhlciBXTF9TT0NLRVRfKiBldmVudHMKQEAg LTU1MywxMCArNTY5LDYgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRT ZXQgKnNldCkKICAqIFJldHVybnMgdGhlIG9mZnNldCBpbiBXYWl0RXZlbnRTZXQtPmV2ZW50 cyAoc3RhcnRpbmcgZnJvbSAwKSwgd2hpY2ggY2FuIGJlCiAgKiB1c2VkIHRvIG1vZGlmeSBw cmV2aW91c2x5IGFkZGVkIHdhaXQgZXZlbnRzIHVzaW5nIE1vZGlmeVdhaXRFdmVudCgpLgog ICoKLSAqIEluIHRoZSBXTF9MQVRDSF9TRVQgY2FzZSB0aGUgbGF0Y2ggbXVzdCBiZSBvd25l ZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLAotICogaS5lLiBpdCBtdXN0IGJlIGEgcHJvY2Vz cy1sb2NhbCBsYXRjaCBpbml0aWFsaXplZCB3aXRoIEluaXRMYXRjaCwgb3IgYQotICogc2hh cmVkIGxhdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxp bmcgT3duTGF0Y2guCi0gKgogICogSW4gdGhlIFdMX1NPQ0tFVF9SRUFEQUJMRS9XUklURUFC TEUvQ09OTkVDVEVEL0FDQ0VQVCBjYXNlcywgRU9GIGFuZCBlcnJvcgogICogY29uZGl0aW9u cyBjYXVzZSB0aGUgc29ja2V0IHRvIGJlIHJlcG9ydGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxl L2Nvbm5lY3RlZCwKICAqIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbCB3aXRoIHRoZSBj b25kaXRpb24uCkBAIC01NjYsNyArNTc4LDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9y ayhXYWl0RXZlbnRTZXQgKnNldCkKICAqIGV2ZW50cy4KICAqLwogaW50Ci1BZGRXYWl0RXZl bnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQs IExhdGNoICpsYXRjaCwKK0FkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1 aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBmZCwgdWludDMyIGludGVycnVwdE1hc2ssCiAJCQkJ ICB2b2lkICp1c2VyX2RhdGEpCiB7CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CkBAIC01ODAsMTkg KzU5MiwxNiBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMy IGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIAkJc2V0LT5leGl0X29uX3Bv c3RtYXN0ZXJfZGVhdGggPSB0cnVlOwogCX0KIAotCWlmIChsYXRjaCkKLQl7Ci0JCWlmIChs YXRjaC0+b3duZXJfcGlkICE9IE15UHJvY1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qg d2FpdCBvbiBhIGxhdGNoIG93bmVkIGJ5IGFub3RoZXIgcHJvY2VzcyIpOwotCQlpZiAoc2V0 LT5sYXRjaCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBtb3JlIHRoYW4gb25l IGxhdGNoIik7Ci0JCWlmICgoZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAhPSBXTF9MQVRDSF9T RVQpCi0JCQllbG9nKEVSUk9SLCAibGF0Y2ggZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWluZyBz ZXQiKTsKLQl9Ci0JZWxzZQorCS8qCisJICogSXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2Ug dG8gd2FpdCBmb3IgV0xfSU5URVJSVVBUIHdpdGggZW1wdHkKKwkgKiBpbnRlcnJ1cHRNYXNr LCBidXQgd2UgYWxsb3cgaXQgc28gdGhhdCB5b3UgY2FuIHVzZSBNb2RpZnlFdmVudCB0byBz ZXQKKwkgKiB0aGUgaW50ZXJydXB0TWFzayBsYXRlci4gTm9uLXplcm8gaW50ZXJydXB0TWFz ayBkb2Vzbid0IG1ha2Ugc2Vuc2UKKwkgKiB3aXRob3V0IFdMX0lOVEVSUlVQVCwgaG93ZXZl ci4KKwkgKi8KKwlpZiAoaW50ZXJydXB0TWFzayAhPSAwKQogCXsKLQkJaWYgKGV2ZW50cyAm IFdMX0xBVENIX1NFVCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBsYXRjaCB3 aXRob3V0IGEgc3BlY2lmaWVkIGxhdGNoIik7CisJCWlmICgoZXZlbnRzICYgV0xfSU5URVJS VVBUKSAhPSBXTF9JTlRFUlJVUFQpCisJCQllbG9nKEVSUk9SLCAiaW50ZXJydXB0ZWQgZXZl bnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsKIAl9CiAKIAkvKiB3YWl0aW5nIGZvciBz b2NrZXQgcmVhZGluZXNzIHdpdGhvdXQgYSBzb2NrZXQgaW5kaWNhdGVzIGEgYnVnICovCkBA IC02MDgsMTAgKzYxNywxMCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNl dCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIAlldmVudC0+ cmVzZXQgPSBmYWxzZTsKICNlbmRpZgogCi0JaWYgKGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQp CisJaWYgKGV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlzZXQtPmxhdGNoID0gbGF0 Y2g7Ci0JCXNldC0+bGF0Y2hfcG9zID0gZXZlbnQtPnBvczsKKwkJc2V0LT5pbnRlcnJ1cHRf bWFzayA9IGludGVycnVwdE1hc2s7CisJCXNldC0+aW50ZXJydXB0X3BvcyA9IGV2ZW50LT5w b3M7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAJCWV2ZW50LT5mZCA9IHNl bGZwaXBlX3JlYWRmZDsKICNlbGlmIGRlZmluZWQoV0FJVF9VU0VfU0lHTkFMRkQpCkBAIC02 NDUsMTQgKzY1NCwxNCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwg dWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIH0KIAogLyoKLSAq IENoYW5nZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9MQVRDSF9TRVQgY2FzZSwg dGhlIGxhdGNoIGFzc29jaWF0ZWQKLSAqIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBsYXRj aCBtYXkgYmUgY2hhbmdlZCB0byBOVUxMIHRvIGRpc2FibGUgdGhlIGxhdGNoCi0gKiB0ZW1w b3JhcmlseSwgYW5kIHRoZW4gc2V0IGJhY2sgdG8gYSBsYXRjaCBsYXRlci4KKyAqIENoYW5n ZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9JTlRFUlJVUFQgY2FzZSwgdGhlIGlu dGVycnVwdCBtYXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBp bnRlcnJ1cHQgbWFzayBtYXkgYmUgY2hhbmdlZCB0byAwIHRvCisgKiBkaXNhYmxlIHRoZSB3 YWtldXBzIG9uIGludGVycnVwdHMgdGVtcG9yYXJpbHksIGFuZCB0aGVuIHNldCBiYWNrIGxh dGVyLgogICoKICAqICdwb3MnIGlzIHRoZSBpZCByZXR1cm5lZCBieSBBZGRXYWl0RXZlbnRU b1NldC4KICAqLwogdm9pZAotTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBp bnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCitNb2RpZnlXYWl0RXZlbnQo V2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRl cnJ1cHRNYXNrKQogewogCVdhaXRFdmVudCAgKmV2ZW50OwogI2lmIGRlZmluZWQoV0FJVF9V U0VfS1FVRVVFKQpAQCAtNjg4LDM0ICs2OTcsMjggQEAgTW9kaWZ5V2FpdEV2ZW50KFdhaXRF dmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCiAJ ICogd2FpdGluZyBvbiB3cml0ZXMuCiAJICovCiAJaWYgKGV2ZW50cyA9PSBldmVudC0+ZXZl bnRzICYmCi0JCSghKGV2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpIHx8IHNldC0+bGF0 Y2ggPT0gbGF0Y2gpKQorCQkoIShldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUKSB8fCBz ZXQtPmludGVycnVwdF9tYXNrID09IGludGVycnVwdE1hc2spKQogCQlyZXR1cm47CiAKLQlp ZiAoZXZlbnQtPmV2ZW50cyAmIFdMX0xBVENIX1NFVCAmJiBldmVudHMgIT0gZXZlbnQtPmV2 ZW50cykKLQkJZWxvZyhFUlJPUiwgImNhbm5vdCBtb2RpZnkgbGF0Y2ggZXZlbnQiKTsKKwlp ZiAoZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCAmJiBldmVudHMgIT0gZXZlbnQtPmV2 ZW50cykKKwkJZWxvZyhFUlJPUiwgImNhbm5vdCBtb2RpZnkgaW50ZXJydXB0cyBldmVudCIp OwogCiAJLyogRklYTUU6IHZhbGlkYXRlIGV2ZW50IG1hc2sgKi8KIAlldmVudC0+ZXZlbnRz ID0gZXZlbnRzOwogCi0JaWYgKGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50 cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlpZiAobGF0Y2ggJiYgbGF0Y2gtPm93bmVyX3Bp ZCAhPSBNeVByb2NQaWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBsYXRj aCBvd25lZCBieSBhbm90aGVyIHByb2Nlc3MiKTsKLQkJc2V0LT5sYXRjaCA9IGxhdGNoOwor CQlzZXQtPmludGVycnVwdF9tYXNrID0gaW50ZXJydXB0TWFzazsKIAogCQkvKgotCQkgKiBP biBVbml4LCB3ZSBkb24ndCBuZWVkIHRvIG1vZGlmeSB0aGUga2VybmVsIG9iamVjdCBiZWNh dXNlIHRoZQotCQkgKiB1bmRlcmx5aW5nIHBpcGUgKGlmIHRoZXJlIGlzIG9uZSkgaXMgdGhl IHNhbWUgZm9yIGFsbCBsYXRjaGVzIHNvIHdlCi0JCSAqIGNhbiByZXR1cm4gaW1tZWRpYXRl bHkuICBPbiBXaW5kb3dzLCB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgYXJyYXkgb2YKLQkJICog aGFuZGxlcywgYnV0IHdlIGxlYXZlIHRoZSBvbGQgb25lIGluIHBsYWNlIGFuZCB0b2xlcmF0 ZSBzcHVyaW91cwotCQkgKiB3YWtldXBzIGlmIHRoZSBsYXRjaCBpcyBkaXNhYmxlZC4KKwkJ ICogV2UgZG9uJ3QgYm90aGVyIHRvIGFkanVzdCB0aGUgZXZlbnQgd2hlbiB0aGUgaW50ZXJy dXB0IG1hc2sKKwkJICogY2hhbmdlcy4gIEl0IG1lYW5zIHRoYXQgd2hlbiBpbnRlcnJ1cHQg bWFzayBpcyBzZXQgdG8gMCwgd2Ugd2lsbAorCQkgKiBsaXN0ZW4gb24gdGhlIGtlcm5lbCBv YmplY3QgdW5uZWNlc3NhcmlseSwgYW5kIG1pZ2h0IGdldCBzb21lCisJCSAqIHNwdXJpb3Vz IHdha2V1cHMuIFRoZSBpbnRlcnJ1cHQgc2VuZGluZyBjb2RlIHNob3VsZCBub3Qgd2FrZSB1 cyB1cAorCQkgKiBpZiB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBiaXQgaXMgbm90IGFy bWVkLCB0aG91Z2gsIHNvIGl0CisJCSAqIHNob3VsZCBiZSByYXJlLgogCQkgKi8KLSNpZiBk ZWZpbmVkKFdBSVRfVVNFX1dJTjMyKQotCQlpZiAoIWxhdGNoKQotCQkJcmV0dXJuOwotI2Vs c2UKIAkJcmV0dXJuOwotI2VuZGlmCiAJfQogCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9FUE9M TCkKQEAgLTc0NSw5ICs3NDgsOCBAQCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRT ZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVu dHMgPSBFUE9MTEVSUiB8IEVQT0xMSFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkg b25jZSAqLwotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZl bnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAh PSBOVUxMKTsKIAkJZXBvbGxfZXYuZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYg KGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTc5NCw5ICs3OTYs OCBAQCBXYWl0RXZlbnRBZGp1c3RQb2xsKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQg KmV2ZW50KQogCXBvbGxmZC0+ZmQgPSBldmVudC0+ZmQ7CiAKIAkvKiBwcmVwYXJlIHBvbGxm ZCBlbnRyeSBvbmNlICovCi0JaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQor CWlmIChldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQt PmxhdGNoICE9IE5VTEwpOwogCQlwb2xsZmQtPmV2ZW50cyA9IFBPTExJTjsKIAl9CiAJZWxz ZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtODU4LDkg Kzg1OSw5IEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoc3RydWN0IGtl dmVudCAqa19ldiwgV2FpdEV2ZW50ICpldmVudCkKIH0KIAogc3RhdGljIGlubGluZSB2b2lk Ci1XYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRMYXRjaChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBX YWl0RXZlbnQgKmV2ZW50KQorV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2Fr ZXVwKHN0cnVjdCBrZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB7Ci0JLyogRm9y IG5vdyBsYXRjaCBjYW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92ZWQuICovCisJLyogRm9y IG5vdyBpbnRlcnJ1cHQgd2FrZXVwIGNhbiBvbmx5IGJlIGFkZGVkLCBub3QgcmVtb3ZlZC4g Ki8KIAlrX2V2LT5pZGVudCA9IFNJR1VSRzsKIAlrX2V2LT5maWx0ZXIgPSBFVkZJTFRfU0lH TkFMOwogCWtfZXYtPmZsYWdzID0gRVZfQUREOwpAQCAtODg2LDggKzg4Nyw3IEBAIFdhaXRF dmVudEFkanVzdEtxdWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwg aW50IG9sZF9ldmVudHMpCiAJaWYgKG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50cykKIAkJ cmV0dXJuOwogCi0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VUIHx8IHNl dC0+bGF0Y2ggIT0gTlVMTCk7Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hf U0VUIHx8CisJQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8CiAJCSAg IGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAoZXZlbnQt PmV2ZW50cyAmIChXTF9TT0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NLRVRfV1JJ VEVBQkxFIHwKQEAgLTkwMiwxMCArOTAyLDEwIEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZShX YWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IG9sZF9ldmVudHMpCiAJ CSAqLwogCQlXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0bWFzdGVyKCZrX2V2W2NvdW50 KytdLCBldmVudCk7CiAJfQotCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hf U0VUKQorCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJ LyogV2UgZGV0ZWN0IGxhdGNoIHdha2V1cCB1c2luZyBhIHNpZ25hbCBldmVudC4gKi8KLQkJ V2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkTGF0Y2goJmtfZXZbY291bnQrK10sIGV2ZW50KTsK KwkJLyogV2UgZGV0ZWN0IGludGVycnVwdCB3YWtldXAgdXNpbmcgYSBzaWduYWwgZXZlbnQu ICovCisJCVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZEludGVycnVwdFdha2V1cCgma19ldltj b3VudCsrXSwgZXZlbnQpOwogCX0KIAllbHNlCiAJewpAQCAtOTgzLDEwICs5ODMsMTMgQEAg V2FpdEV2ZW50QWRqdXN0V2luMzIoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZl bnQpCiB7CiAJSEFORExFCSAgICpoYW5kbGUgPSAmc2V0LT5oYW5kbGVzW2V2ZW50LT5wb3Mg KyAxXTsKIAotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZl bnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAh PSBOVUxMKTsKLQkJKmhhbmRsZSA9IHNldC0+bGF0Y2gtPmV2ZW50OworCQkvKgorCQkgKiBX ZSByZWdpc3RlciB0aGUgZXZlbnQgZXZlbiBpZiBpbnRlcnJ1cHRfbWFzayBpcyB6ZXJvLiBX ZSBtaWdodCBnZXQKKwkJICogc29tZSBzcHVyaW91cyB3YWtldXBzLCBidXQgdGhhdCdzIE9L CisJCSAqLworCQkqaGFuZGxlID0gTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBF dmVudCA6IExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CiAJfQogCWVsc2UgaWYgKGV2ZW50 LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAl7CkBAIC0xMDQyLDYgKzEwNDUs NyBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQs CiAJaW5zdHJfdGltZQlzdGFydF90aW1lOwogCWluc3RyX3RpbWUJY3VyX3RpbWU7CiAJbG9u ZwkJY3VyX3RpbWVvdXQgPSAtMTsKKwlib29sCQlzbGVlcGluZ19mbGFnX2FybWVkID0gZmFs c2U7CiAKIAlBc3NlcnQobmV2ZW50cyA+IDApOwogCkBAIC0xMDYzLDY0ICsxMDY3LDU3IEBA IFdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKICNp Zm5kZWYgV0lOMzIKIAl3YWl0aW5nID0gdHJ1ZTsKICNlbHNlCi0JLyogRW5zdXJlIHRoYXQg c2lnbmFscyBhcmUgc2VydmljZWQgZXZlbiBpZiBsYXRjaCBpcyBhbHJlYWR5IHNldCAqLwor CS8qIEVuc3VyZSB0aGF0IHNpZ25hbHMgYXJlIHNlcnZpY2VkIGV2ZW4gaWYgaW50ZXJydXB0 IGlzIGFscmVhZHkgcGVuZGluZyAqLwogCXBnd2luMzJfZGlzcGF0Y2hfcXVldWVkX3NpZ25h bHMoKTsKICNlbmRpZgotCXdoaWxlIChyZXR1cm5lZF9ldmVudHMgPT0gMCkKKworCS8qCisJ ICogQXRvbWljYWxseSBjaGVjayBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGlu ZyBhbmQgYWR2ZXJ0aXNlIHRoYXQKKwkgKiB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgc2xlZXBp bmcuIElmIGl0IHdhcyBhbHJlYWR5IHBlbmRpbmcsIGF2b2lkCisJICogYmxvY2tpbmcgYWx0 b2dldGhlci4KKwkgKgorCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgaW50ZXJydXB0IGZsYWcg YmV0d2VlbiB0aGlzIGFuZCB0aGUKKwkgKiBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSBiZWxv dywgdGhlIHNldHRlciB3aWxsIHdyaXRlIGEgYnl0ZSB0byB0aGUgcGlwZQorCSAqIChvciBz aWduYWwgdXMgYW5kIHRoZSBzaWduYWwgaGFuZGxlciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhl IHJlYWRpbmVzcworCSAqIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCisJICov CisJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCkKIAl7Ci0JCWludAkJCXJjOworCQl1 aW50MzIJCW9sZF9tYXNrOworCQlib29sCQlhbHJlYWR5X3BlbmRpbmcgPSBmYWxzZTsKIAog CQkvKgotCQkgKiBDaGVjayBpZiB0aGUgbGF0Y2ggaXMgc2V0IGFscmVhZHkgZmlyc3QuICBJ ZiBzbywgd2UgZWl0aGVyIGV4aXQKLQkJICogaW1tZWRpYXRlbHkgb3IgYXNrIHRoZSBrZXJu ZWwgZm9yIGZ1cnRoZXIgZXZlbnRzIGF2YWlsYWJsZSByaWdodAotCQkgKiBub3cgd2l0aG91 dCB3YWl0aW5nLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgZXZlbnRzIHRoZSBjYWxsZXIgd2Fu dHMuCi0JCSAqCi0JCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgbGF0Y2ggYmV0d2VlbiB0aGlz IGFuZCB0aGUKLQkJICogV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgYmVsb3csIHRoZSBzZXR0 ZXIgd2lsbCB3cml0ZSBhIGJ5dGUgdG8gdGhlCi0JCSAqIHBpcGUgKG9yIHNpZ25hbCB1cyBh bmQgdGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgZG8gdGhhdCksIGFuZCB0aGUKLQkJICogcmVh ZGluZXNzIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCi0JCSAqCi0JCSAqIE9u IHVuaXgsIElmIHRoZXJlJ3MgYSBwZW5kaW5nIGJ5dGUgaW4gdGhlIHNlbGYgcGlwZSwgd2Un bGwgbm90aWNlCi0JCSAqIHdoZW5ldmVyIGJsb2NraW5nLiBPbmx5IGNsZWFyaW5nIHRoZSBw aXBlIGluIHRoYXQgY2FzZSBhdm9pZHMKLQkJICogaGF2aW5nIHRvIGRyYWluIGl0IGV2ZXJ5 IHRpbWUgV2FpdExhdGNoT3JTb2NrZXQoKSBpcyB1c2VkLiBTaG91bGQKLQkJICogdGhlIHBp cGUtYnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMg aW4KLQkJICogbm9uYmxvY2tpbmcgbW9kZS4gSXQncyB1bmxpa2VseSBmb3IgdGhhdCB0byBo YXBwZW4sIGJlY2F1c2UgdGhlCi0JCSAqIHNlbGYgcGlwZSBpc24ndCBmaWxsZWQgdW5sZXNz IHdlJ3JlIGJsb2NraW5nICh3YWl0aW5nID0gdHJ1ZSksIG9yCi0JCSAqIGZyb20gaW5zaWRl IGEgc2lnbmFsIGhhbmRsZXIgaW4gbGF0Y2hfc2lndXJnX2hhbmRsZXIoKS4KLQkJICoKLQkJ ICogT24gd2luZG93cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhlcmUncyBhIHBlbmRpbmcg ZXZlbnQgZm9yIHRoZQotCQkgKiBsYXRjaCB3aGVuIGJsb2NraW5nLCBidXQgdGhlcmUncyBu byBkYW5nZXIgb2YgYW55dGhpbmcgZmlsbGluZyB1cCwKLQkJICogYXMgIlNldHRpbmcgYW4g ZXZlbnQgdGhhdCBpcyBhbHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0LiIuCi0JCSAqCi0JCSAq IE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMgaW52b2x2ZWQgaW4gbGF0 Y2ggbWFuYWdlbWVudAotCQkgKiB3aWxsIHByb3ZpZGUgYWRlcXVhdGUgc3luY2hyb25pemF0 aW9uIG9uIG1hY2hpbmVzIHdpdGggd2VhayBtZW1vcnkKLQkJICogb3JkZXJpbmcsIHNvIHRo YXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3NldCBpZiBhIG5vdGlmaWNhdGlvbgotCQkg KiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KKwkJICogUGVyZm9ybSBhIHBsYWluIGF0b21p YyByZWFkIGZpcnN0IGFzIGEgZmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0CisJCSAqIGFu IGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcuCiAJCSAqLwotCQlpZiAoc2V0LT5sYXRj aCAmJiAhc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlvbGRfbWFzayA9IHBnX2F0b21pY19yZWFk X3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKTsKKwkJYWxyZWFkeV9wZW5kaW5nID0gKChvbGRf bWFzayAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApOworCisJCWlmICghYWxyZWFkeV9w ZW5kaW5nKQogCQl7Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBvbiBhIGxhdGNoICovCi0JCQlz ZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRydWU7Ci0JCQlwZ19tZW1vcnlfYmFycmll cigpOwotCQkJLyogYW5kIHJlY2hlY2sgKi8KKwkJCS8qCisJCQkgKiBBdG9taWNhbGx5IHNl dCB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBiaXQgYW5kIHJlLWNoZWNrIGlmCisJCQkg KiBhbiBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nLiBUaGUgYXRvbWljIG9wIHByb3Zp ZGVzCisJCQkgKiBzeW5jaHJvbml6YXRpb24gc28gdGhhdCBpZiBhbiBpbnRlcnJ1cHQgYml0 IGlzIHNldCBhZnRlciB0aGlzLAorCQkJICogdGhlIHNldHRlciB3aWxsIHdha2UgdXMgdXAu CisJCQkgKi8KKwkJCW9sZF9tYXNrID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRp bmdJbnRlcnJ1cHRzLCAxIDw8IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpOworCQkJYWxyZWFk eV9wZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApOwor CisJCQkvKiByZW1lbWJlciB0byBjbGVhciB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBm bGFnIGxhdGVyICovCisJCQlzbGVlcGluZ19mbGFnX2FybWVkID0gdHJ1ZTsKIAkJfQogCi0J CWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJaWYgKGFscmVhZHlf cGVuZGluZykKIAkJewogCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NL RVQ7Ci0JCQlvY2N1cnJlZF9ldmVudHMtPnBvcyA9IHNldC0+bGF0Y2hfcG9zOworCQkJb2Nj dXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQtPmludGVycnVwdF9wb3M7CiAJCQlvY2N1cnJlZF9l dmVudHMtPnVzZXJfZGF0YSA9Ci0JCQkJc2V0LT5ldmVudHNbc2V0LT5sYXRjaF9wb3NdLnVz ZXJfZGF0YTsKLQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOwor CQkJCXNldC0+ZXZlbnRzW3NldC0+aW50ZXJydXB0X3Bvc10udXNlcl9kYXRhOworCQkJb2Nj dXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQlvY2N1cnJlZF9ldmVu dHMrKzsKIAkJCXJldHVybmVkX2V2ZW50cysrOwogCi0JCQkvKiBjb3VsZCBoYXZlIGJlZW4g c2V0IGFib3ZlICovCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwot Ci0JCQlpZiAocmV0dXJuZWRfZXZlbnRzID09IG5ldmVudHMpCi0JCQkJYnJlYWs7CQkJLyog b3V0cHV0IGJ1ZmZlciBmdWxsIGFscmVhZHkgKi8KLQogCQkJLyoKIAkJCSAqIEV2ZW4gdGhv dWdoIHdlIGFscmVhZHkgaGF2ZSBhbiBldmVudCwgd2UnbGwgcG9sbCBqdXN0IG9uY2Ugd2l0 aAogCQkJICogemVybyB0aW1lb3V0IHRvIHNlZSB3aGF0IG5vbi1sYXRjaCBldmVudHMgd2Ug Y2FuIGZpdCBpbnRvIHRoZQpAQCAtMTEyOSwzNCArMTEyNiw1OCBAQCBXYWl0RXZlbnRTZXRX YWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJCQljdXJfdGltZW91dCA9 IDA7CiAJCQl0aW1lb3V0ID0gMDsKIAkJfQorCX0KIAorCWlmIChuZXZlbnRzID4gcmV0dXJu ZWRfZXZlbnRzKQorCXsKIAkJLyoKIAkJICogV2FpdCBmb3IgZXZlbnRzIHVzaW5nIHRoZSBy ZWFkaW5lc3MgcHJpbWl0aXZlIGNob3NlbiBhdCB0aGUgdG9wIG9mCiAJCSAqIHRoaXMgZmls ZS4gSWYgLTEgaXMgcmV0dXJuZWQsIGEgdGltZW91dCBoYXMgb2NjdXJyZWQsIGlmIDAgd2Ug aGF2ZQogCQkgKiB0byByZXRyeSwgZXZlcnl0aGluZyA+PSAxIGlzIHRoZSBudW1iZXIgb2Yg cmV0dXJuZWQgZXZlbnRzLgorCQkgKgorCQkgKiBPbiB1bml4LCBJZiB0aGVyZSdzIGEgcGVu ZGluZyBieXRlIGluIHRoZSBzZWxmIHBpcGUsIHdlJ2xsIG5vdGljZQorCQkgKiB3aGVuZXZl ciBibG9ja2luZy4gT25seSBjbGVhcmluZyB0aGUgcGlwZSBpbiB0aGF0IGNhc2UgYXZvaWRz IGhhdmluZyB0bworCQkgKiBkcmFpbiBpdCBldmVyeSB0aW1lIFdhaXRJbnRlcnJ1cHRPclNv Y2tldCgpIGlzIHVzZWQuICBTaG91bGQgdGhlCisJCSAqIHBpcGUtYnVmZmVyIGZpbGwgdXAg d2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMgaW4gbm9uYmxvY2tpbmcKKwkJ ICogbW9kZS4gSXQncyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhl IHNlbGYgcGlwZSBpc24ndAorCQkgKiBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3 YWl0aW5nID0gdHJ1ZSksIG9yIGZyb20gaW5zaWRlIGEgc2lnbmFsCisJCSAqIGhhbmRsZXIg aW4gaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKCkuCisJCSAqCisJCSAqIE9uIHdpbmRvd3Ms IHdlJ2xsIGFsc28gbm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2ZW50IGZvciB0aGUK KwkJICogaW50ZXJydXB0IHdoZW4gYmxvY2tpbmcsIGJ1dCB0aGVyZSdzIG5vIGRhbmdlciBv ZiBhbnl0aGluZyBmaWxsaW5nIHVwLAorCQkgKiBhcyAiU2V0dGluZyBhbiBldmVudCB0aGF0 IGlzIGFscmVhZHkgc2V0IGhhcyBubyBlZmZlY3QuIi4KIAkJICovCi0JCXJjID0gV2FpdEV2 ZW50U2V0V2FpdEJsb2NrKHNldCwgY3VyX3RpbWVvdXQsCi0JCQkJCQkJCSAgIG9jY3VycmVk X2V2ZW50cywgbmV2ZW50cyAtIHJldHVybmVkX2V2ZW50cyk7CisJCWZvciAoOzspCisJCXsK KwkJCWludAkJCXJjOwogCi0JCWlmIChzZXQtPmxhdGNoICYmCi0JCQlzZXQtPmxhdGNoLT5t YXliZV9zbGVlcGluZykKLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7 CisJCQlyYyA9IFdhaXRFdmVudFNldFdhaXRCbG9jayhzZXQsIGN1cl90aW1lb3V0LAorCQkJ CQkJCQkJICAgb2NjdXJyZWRfZXZlbnRzLCBuZXZlbnRzIC0gcmV0dXJuZWRfZXZlbnRzKTsK IAotCQlpZiAocmMgPT0gLTEpCi0JCQlicmVhazsJCQkJLyogdGltZW91dCBvY2N1cnJlZCAq LwotCQllbHNlCi0JCQlyZXR1cm5lZF9ldmVudHMgKz0gcmM7CisJCQlpZiAocmMgPT0gLTEp CisJCQkJYnJlYWs7CQkJCS8qIHRpbWVvdXQgb2NjdXJyZWQgKi8KKwkJCWVsc2UKKwkJCQly ZXR1cm5lZF9ldmVudHMgKz0gcmM7CiAKLQkJLyogSWYgd2UncmUgbm90IGRvbmUsIHVwZGF0 ZSBjdXJfdGltZW91dCBmb3IgbmV4dCBpdGVyYXRpb24gKi8KLQkJaWYgKHJldHVybmVkX2V2 ZW50cyA9PSAwICYmIHRpbWVvdXQgPj0gMCkKLQkJewotCQkJSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChjdXJfdGltZSk7Ci0JCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFy dF90aW1lKTsKLQkJCWN1cl90aW1lb3V0ID0gdGltZW91dCAtIChsb25nKSBJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyhjdXJfdGltZSk7Ci0JCQlpZiAoY3VyX3RpbWVvdXQgPD0gMCkKKwkJ CWlmIChyZXR1cm5lZF9ldmVudHMgPiAwKQogCQkJCWJyZWFrOworCisJCQkvKiBJZiB3ZSdy ZSBub3QgZG9uZSwgdXBkYXRlIGN1cl90aW1lb3V0IGZvciBuZXh0IGl0ZXJhdGlvbiAqLwor CQkJaWYgKHRpbWVvdXQgPj0gMCkKKwkJCXsKKwkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGN1cl90aW1lKTsKKwkJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFydF90 aW1lKTsKKwkJCQljdXJfdGltZW91dCA9IHRpbWVvdXQgLSAobG9uZykgSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoY3VyX3RpbWUpOworCQkJCWlmIChjdXJfdGltZW91dCA8PSAwKQorCQkJ CQlicmVhazsKKwkJCX0KIAkJfQogCX0KKworCS8qIElmIHdlIHNldCB0aGUgU0xFRVBJTkdf T05fSU5URVJSVVBUUyBmbGFnLCByZXNldCBpdCBhZ2FpbiAqLworCWlmIChzbGVlcGluZ19m bGFnX2FybWVkKQorCQlwZ19hdG9taWNfZmV0Y2hfYW5kX3UzMihNeVBlbmRpbmdJbnRlcnJ1 cHRzLCB+KCh1aW50MzIpIDEgPDwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpOworCiAjaWZu ZGVmIFdJTjMyCiAJd2FpdGluZyA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjI3LDE2ICsxMjQ4 LDE2IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1 cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+ dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1 cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50LT5l dmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQljdXJfZXBvbGxfZXZlbnQtPmV2ZW50cyAm IChFUE9MTElOIHwgRVBPTExFUlIgfCBFUE9MTEhVUCkpCiAJCXsKIAkJCS8qIERyYWluIHRo ZSBzaWduYWxmZC4gKi8KIAkJCWRyYWluKCk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNl dC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlm IChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBl bmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJCQl7CiAJ CQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJy ZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRz LT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJ cmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xMzg5LDEzICsxNDEwLDEzIEBAIFdhaXRF dmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAog CQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwog CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZl bnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xf SU5URVJSVVBUICYmCiAJCQljdXJfa3F1ZXVlX2V2ZW50LT5maWx0ZXIgPT0gRVZGSUxUX1NJ R05BTCkKIAkJewotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVfc2xl ZXBpbmcgJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21h c2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYg c2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMt PmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9 IFdMX0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVS UlVQVDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsK IAkJCX0KQEAgLTE1MTEsMTYgKzE1MzIsMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdh aXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+ dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VU ICYmCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCShj dXJfcG9sbGZkLT5yZXZlbnRzICYgKFBPTExJTiB8IFBPTExIVVAgfCBQT0xMRVJSIHwgUE9M TE5WQUwpKSkKIAkJewogCQkJLyogVGhlcmUncyBkYXRhIGluIHRoZSBzZWxmLXBpcGUsIGNs ZWFyIGl0LiAqLwogCQkJZHJhaW4oKTsKIAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5s YXRjaC0+bWF5YmVfc2xlZXBpbmcgJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNl dC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGlu Z0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlv Y2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2 ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1 cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTE2MTksNiArMTY0MCwxNSBAQCBXYWl0RXZlbnRT ZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJCWN1 cl9ldmVudC0+cmVzZXQgPSBmYWxzZTsKIAkJfQogCisJCS8qCisJCSAqIFdlIG5lZWQgdG8g dXNlIGRpZmZlcmVudCBldmVudCBvYmplY3QgZGVwZW5kaW5nIG9uIHdoZXRoZXIgImxvY2Fs IgorCQkgKiBvciAic2hhcmVkIG1lbW9yeSIgaW50ZXJydXB0cyBhcmUgaW4gdXNlLiBUaGVy ZSdzIG5vIGVhc3kgd2F5IHRvCisJCSAqIGFkanVzdCBhbGwgZXhpc3RpbmcgV2FpdEV2ZW50 U2V0IHdoZW4geW91IHN3aXRjaCBmcm9tIGxvY2FsIHRvCisJCSAqIHNoYXJlZCBvciBiYWNr LCBzbyB3ZSByZWZyZXNoIGl0IG9uIGV2ZXJ5IGNhbGwuCisJCSAqLworCQlpZiAoY3VyX2V2 ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCQlXYWl0RXZlbnRBZGp1c3RXaW4zMihz ZXQsIGN1cl9ldmVudCk7CisKIAkJLyoKIAkJICogV2UgYXNzb2NpYXRlIHRoZSBzb2NrZXQg d2l0aCBhIG5ldyBldmVudCBoYW5kbGUgZm9yIGVhY2gKIAkJICogV2FpdEV2ZW50U2V0LiAg RkRfQ0xPU0UgaXMgb25seSBnZW5lcmF0ZWQgb25jZSBpZiB0aGUgb3RoZXIgZW5kCkBAIC0x NzI0LDE5ICsxNzU0LDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQg KnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9 IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7 CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwkJaWYgKGN1 cl9ldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJLyoKLQkJCSAqIFdl IGNhbm5vdCB1c2Ugc2V0LT5sYXRjaC0+ZXZlbnQgdG8gcmVzZXQgdGhlIGZpcmVkIGV2ZW50 IGlmIHdlCi0JCQkgKiBhcmVuJ3Qgd2FpdGluZyBvbiB0aGlzIGxhdGNoIG5vdy4KLQkJCSAq LwogCQkJaWYgKCFSZXNldEV2ZW50KHNldC0+aGFuZGxlc1tjdXJfZXZlbnQtPnBvcyArIDFd KSkKIAkJCQllbG9nKEVSUk9SLCAiUmVzZXRFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1 IiwgR2V0TGFzdEVycm9yKCkpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNo LT5tYXliZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5p bnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50 ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3Vy cmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRz ID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVk X2V2ZW50cysrOwogCQkJfQpAQCAtMTc4MSw3ICsxODA3LDcgQEAgV2FpdEV2ZW50U2V0V2Fp dEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAKIAkJCQkvKi0t LS0tLQogCQkJCSAqIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgZG9lc24ndCBndWFyYW50ZWUg dGhhdCBhIHJlYWQgZXZlbnQKLQkJCQkgKiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBsYXRj aCBpcyBzZXQgYXQgdGhlIHNhbWUgdGltZS4gIEV2ZW4KKwkJCQkgKiB3aWxsIGJlIHJldHVy bmVkIGlmIHRoZSBpbnRlcnJ1cHQgaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUuICBFdmVuCiAJ CQkJICogaWYgaXQgZGlkLCB0aGUgY2FsbGVyIG1pZ2h0IGRyb3AgdGhhdCBldmVudCBleHBl Y3RpbmcgaXQgdG8KIAkJCQkgKiByZW9jY3VyIG9uIG5leHQgY2FsbC4gIFNvLCB3ZSBtdXN0 IGZvcmNlIHRoZSBldmVudCB0byBiZQogCQkJCSAqIHJlc2V0IGlmIHRoaXMgV2FpdEV2ZW50 U2V0IGlzIHVzZWQgYWdhaW4gaW4gb3JkZXIgdG8gYXZvaWQKQEAgLTE4ODcsMTggKzE5MTMs MTcgQEAgR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpCiAj aWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAKIC8qCi0gKiBTZXRMYXRjaCB1c2Vz IFNJR1VSRyB0byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcgb24gdGhlIGxhdGNoLgot ICoKLSAqIFdha2UgdXAgV2FpdExhdGNoLCBpZiB3ZSdyZSB3YWl0aW5nLgorICogV2FrZXVw T3RoZXJQcm9jIGFuZCBXYWt1cE15UHJvYyB1c2UgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHBy b2Nlc3Mgd2FpdGluZworICogZm9yIGFuIGludGVycnVwdAogICovCiBzdGF0aWMgdm9pZAot bGF0Y2hfc2lndXJnX2hhbmRsZXIoU0lHTkFMX0FSR1MpCitpbnRlcnJ1cHRfc2lndXJnX2hh bmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJaWYgKHdhaXRpbmcpCiAJCXNlbmRTZWxmUGlwZUJ5 dGUoKTsKIH0KIAotLyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0byB3YWtl IHVwIFdhaXRMYXRjaCAqLworLyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0 byB3YWtlIHVwIFdhaXRJbnRlcnJ1cHQgKi8KIHN0YXRpYyB2b2lkCiBzZW5kU2VsZlBpcGVC eXRlKHZvaWQpCiB7CkBAIC0xOTE1LDcgKzE5NDAsNyBAQCByZXRyeToKIAogCQkvKgogCQkg KiBJZiB0aGUgcGlwZSBpcyBmdWxsLCB3ZSBkb24ndCBuZWVkIHRvIHJldHJ5LCB0aGUgZGF0 YSB0aGF0J3MgdGhlcmUKLQkJICogYWxyZWFkeSBpcyBlbm91Z2ggdG8gd2FrZSB1cCBXYWl0 TGF0Y2guCisJCSAqIGFscmVhZHkgaXMgZW5vdWdoIHRvIHdha2UgdXAgV2FpdEludGVycnVw dC4KIAkJICovCiAJCWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxP Q0spCiAJCQlyZXR1cm47CkBAIC0yMDAyLDE0ICsyMDI3LDEzIEBAIFJlc093bmVyUmVsZWFz ZVdhaXRFdmVudFNldChEYXR1bSByZXMpCiAJRnJlZVdhaXRFdmVudFNldChzZXQpOwogfQog Ci0jaWZuZGVmIFdJTjMyCiAvKgogICogV2FrZSB1cCBteSBwcm9jZXNzIGlmIGl0J3MgY3Vy cmVudGx5IHNsZWVwaW5nIGluIFdhaXRFdmVudFNldFdhaXRCbG9jaygpCiAgKgogICogTkI6 IGJlIHN1cmUgdG8gc2F2ZSBhbmQgcmVzdG9yZSBlcnJubyBhcm91bmQgaXQuICAoVGhhdCdz IHN0YW5kYXJkIHByYWN0aWNlCiAgKiBpbiBtb3N0IHNpZ25hbCBoYW5kbGVycywgb2YgY291 cnNlLCBidXQgd2UgdXNlZCB0byBvbWl0IGl0IGluIGhhbmRsZXJzIHRoYXQKICAqIG9ubHkg c2V0IGEgZmxhZy4pIFhYWAotICAqCisgKgogICogTkI6IHRoaXMgZnVuY3Rpb24gaXMgY2Fs bGVkIGZyb20gY3JpdGljYWwgc2VjdGlvbnMgYW5kIHNpZ25hbCBoYW5kbGVycyBzbwogICog dGhyb3dpbmcgYW4gZXJyb3IgaXMgbm90IGEgZ29vZCBpZGVhLgogICoKQEAgLTIwMTgsNiAr MjA0Miw3IEBAIFJlc093bmVyUmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpCiB2b2lk CiBXYWtldXBNeVByb2Modm9pZCkKIHsKKyNpZm5kZWYgV0lOMzIKICNpZiBkZWZpbmVkKFdB SVRfVVNFX1NFTEZfUElQRSkKIAlpZiAod2FpdGluZykKIAkJc2VuZFNlbGZQaXBlQnl0ZSgp OwpAQCAtMjAyNSwxMiArMjA1MCwyMyBAQCBXYWtldXBNeVByb2Modm9pZCkKIAlpZiAod2Fp dGluZykKIAkJa2lsbChNeVByb2NQaWQsIFNJR1VSRyk7CiAjZW5kaWYKKyNlbHNlCisJU2V0 RXZlbnQoTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExvY2FsSW50 ZXJydXB0V2FrZXVwRXZlbnQpOworI2VuZGlmCiB9CiAKIC8qIFNpbWlsYXIgdG8gV2FrZXVw TXlQcm9jLCBidXQgd2FrZSB1cCBhbm90aGVyIHByb2Nlc3MgKi8KIHZvaWQKLVdha2V1cE90 aGVyUHJvYyhpbnQgcGlkKQorV2FrZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKLQlr aWxsKHBpZCwgU0lHVVJHKTsKLX0KKyNpZm5kZWYgV0lOMzIKKwlraWxsKHByb2MtPnBpZCwg U0lHVVJHKTsKKyNlbHNlCisJU2V0RXZlbnQocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQp OworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMu IFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCisJICogaGFuZGxlciBvciBvdGhlciBjcml0aWNh bCBwYXRoIHdoZXJlIGl0J3Mgbm90IHNhZmUgdG8gY2FsbCBlbG9nKCkuCisJICovCiAjZW5k aWYKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25f dmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFi bGUuYwppbmRleCAyMjgzMDNlNzdmNy4uZWY3OTIxMDM4MzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKQEAgLTIxLDYgKzIxLDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0 cl90aW1lLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2xpc3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Nw aW4uaCIKQEAgLTE0NywyMyArMTQ4LDIzIEBAIENvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91dCwKIAkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChzdGFydF90aW1lKTsKIAkJQXNzZXJ0KHRpbWVvdXQgPj0gMCAmJiB0aW1l b3V0IDw9IElOVF9NQVgpOwogCQljdXJfdGltZW91dCA9IHRpbWVvdXQ7Ci0JCXdhaXRfZXZl bnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7 CisJCXdhaXRfZXZlbnRzID0gV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEg7CiAJfQogCWVsc2UKLQkJd2FpdF9ldmVudHMgPSBXTF9MQVRDSF9TRVQg fCBXTF9FWElUX09OX1BNX0RFQVRIOworCQl3YWl0X2V2ZW50cyA9IFdMX0lOVEVSUlVQVCB8 IFdMX0VYSVRfT05fUE1fREVBVEg7CiAKIAl3aGlsZSAodHJ1ZSkKIAl7CiAJCWJvb2wJCWRv bmUgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBXYWl0IGZvciBsYXRjaCB0byBiZSBzZXQuICAo SWYgd2UncmUgYXdha2VuZWQgZm9yIHNvbWUgb3RoZXIKLQkJICogcmVhc29uLCB0aGUgY29k ZSBiZWxvdyB3aWxsIGNvcGUgYW55d2F5LikKKwkJICogV2FpdCBmb3IgaW50ZXJydXB0LiAg KElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVyIHJlYXNvbiwgdGhlCisJCSAqIGNv ZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4pCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsIHdhaXRfZXZlbnRzLCBjdXJfdGltZW91dCwgd2FpdF9ldmVudF9pbmZvKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgd2FpdF9l dmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOwogCi0JCS8qIFJlc2V0IGxh dGNoIGJlZm9yZSBleGFtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBmbGFnIGJlZm9yZSBleGFt aW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKgogCQkgKiBJZiB0aGlzIHByb2Nlc3MgaGFz IGJlZW4gdGFrZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4gd2Uga25vdwpAQCAtMTc2 LDkgKzE3NywxMCBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoQ29uZGl0aW9uVmFy aWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCSAqIHRoZSB3YWl0IGxpc3Qgb25seSB3aGVu IHRoZSBjYWxsZXIgY2FsbHMKIAkJICogQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcC4K IAkJICoKLQkJICogSWYgd2UncmUgc3RpbGwgaW4gdGhlIHdhaXQgbGlzdCwgdGhlbiB0aGUg bGF0Y2ggbXVzdCBoYXZlIGJlZW4gc2V0Ci0JCSAqIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu IENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UgZG9uJ3QKLQkJICogZ3VhcmFu dGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBvYnZpb3Vz IGNhc2UuCisJCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0IGxpc3QsIHRoZW4gdGhl IGludGVycnVwdCBtdXN0IGhhdmUgYmVlbgorCQkgKiBzZW50IGJ5IHNvbWV0aGluZyBvdGhl ciB0aGFuIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UKKwkJICogZG9uJ3Qg Z3VhcmFudGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBv YnZpb3VzCisJCSAqIGNhc2UuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJmN2LT5tdXRl eCk7CiAJCWlmICghcHJvY2xpc3RfY29udGFpbnMoJmN2LT53YWtldXAsIE15UHJvY051bWJl ciwgY3ZXYWl0TGluaykpCkBAIC0yNjYsOSArMjY4LDkgQEAgQ29uZGl0aW9uVmFyaWFibGVT aWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCQlwcm9jID0gcHJvY2xpc3RfcG9wX2hl YWRfbm9kZSgmY3YtPndha2V1cCwgY3ZXYWl0TGluayk7CiAJU3BpbkxvY2tSZWxlYXNlKCZj di0+bXV0ZXgpOwogCi0JLyogSWYgd2UgZm91bmQgc29tZW9uZSBzbGVlcGluZywgc2V0IHRo ZWlyIGxhdGNoIHRvIHdha2UgdGhlbSB1cC4gKi8KKwkvKiBJZiB3ZSBmb3VuZCBzb21lb25l IHNsZWVwaW5nLCB3YWtlIHRoZW0gdXAuICovCiAJaWYgKHByb2MgIT0gTlVMTCkKLQkJU2V0 TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogfQogCiAvKgpAQCAtMjk3LDgg KzI5OSw4IEBAIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KENvbmRpdGlvblZhcmlhYmxl ICpjdikKIAkgKiBDViBhbmQgaW4gZG9pbmcgc28gcmVtb3ZlIG91ciBzZW50aW5lbCBlbnRy eS4gIEJ1dCB0aGF0J3MgZmluZTogc2luY2UKIAkgKiBDViB3YWl0ZXJzIGFyZSBhbHdheXMg YWRkZWQgYW5kIHJlbW92ZWQgaW4gb3JkZXIsIHRoYXQgbXVzdCBtZWFuIHRoYXQKIAkgKiBl dmVyeSBwcmV2aW91cyB3YWl0ZXIgaGFzIGJlZW4gd2FrZW5lZCwgc28gd2UncmUgZG9uZS4g IFdlJ2xsIGdldCBhbgotCSAqIGV4dHJhICJzZXQiIG9uIG91ciBsYXRjaCBmcm9tIHRoZSBz b21lb25lIGVsc2UncyBzaWduYWwsIHdoaWNoIGlzCi0JICogc2xpZ2h0bHkgaW5lZmZpY2ll bnQgYnV0IGhhcm1sZXNzLgorCSAqIGV4dHJhIGludGVycnVwdCBmcm9tIHRoZSBzb21lb25l IGVsc2UncyBzaWduYWwsIHdoaWNoIGlzIHNsaWdodGx5CisJICogaW5lZmZpY2llbnQgYnV0 IGhhcm1sZXNzLgogCSAqCiAJICogV2UgY2FuJ3QgaW5zZXJ0IG91ciBjdldhaXRMaW5rIGFz IGEgc2VudGluZWwgaWYgaXQncyBhbHJlYWR5IGluIHVzZSBpbgogCSAqIHNvbWUgb3RoZXIg cHJvY2xpc3QuICBXaGlsZSB0aGF0J3Mgbm90IGV4cGVjdGVkIHRvIGJlIHRydWUgZm9yIHR5 cGljYWwKQEAgLTMzMSw3ICszMzMsNyBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdChD b25kaXRpb25WYXJpYWJsZSAqY3YpCiAKIAkvKiBBd2FrZW4gZmlyc3Qgd2FpdGVyLCBpZiB0 aGVyZSB3YXMgb25lLiAqLwogCWlmIChwcm9jICE9IE5VTEwpCi0JCVNldExhdGNoKCZwcm9j LT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXRO dW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCXdoaWxlIChoYXZlX3NlbnRpbmVsKQogCXsK QEAgLTM1NSw2ICszNTcsNiBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdChDb25kaXRp b25WYXJpYWJsZSAqY3YpCiAJCVNwaW5Mb2NrUmVsZWFzZSgmY3YtPm11dGV4KTsKIAogCQlp ZiAocHJvYyAhPSBOVUxMICYmIHByb2MgIT0gTXlQcm9jKQotCQkJU2V0TGF0Y2goJnByb2Mt PnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXRO dW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJlZGljYXRlLmMKaW5kZXggNWIyMWEwNTM5ODEuLjExYWU0MjFhZDY4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0yMDcsNiArMjA3LDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0 L3BnX2xmaW5kLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2lu dGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTU3Niw3ICsxNTc3 LDEwIEBAIEdldFNhZmVTbmFwc2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpCiAJCQkJIFN4 YWN0SXNST1Vuc2FmZShNeVNlcmlhbGl6YWJsZVhhY3QpKSkKIAkJewogCQkJTFdMb2NrUmVs ZWFzZShTZXJpYWxpemFibGVYYWN0SGFzaExvY2spOwotCQkJUHJvY1dhaXRGb3JTaWduYWwo V0FJVF9FVkVOVF9TQUZFX1NOQVBTSE9UKTsKKwkJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwK KwkJCQkJCSAgV0FJVF9FVkVOVF9TQUZFX1NOQVBTSE9UKTsKKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQlM V0xvY2tBY3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsK IAkJfQogCQlNeVNlcmlhbGl6YWJsZVhhY3QtPmZsYWdzICY9IH5TWEFDVF9GTEFHX0RFRkVS UkFCTEVfV0FJVElORzsKQEAgLTM2MDksNyArMzYxMyw3IEBAIFJlbGVhc2VQcmVkaWNhdGVM b2Nrcyhib29sIGlzQ29tbWl0LCBib29sIGlzUmVhZE9ubHlTYWZlKQogCQkJICovCiAJCQlp ZiAoU3hhY3RJc0RlZmVycmFibGVXYWl0aW5nKHJvWGFjdCkgJiYKIAkJCQkoU3hhY3RJc1JP VW5zYWZlKHJvWGFjdCkgfHwgU3hhY3RJc1JPU2FmZShyb1hhY3QpKSkKLQkJCQlQcm9jU2Vu ZFNpZ25hbChyb1hhY3QtPnBncHJvY25vKTsKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLCByb1hhY3QtPnBncHJvY25vKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMKaW5kZXggNzQ5YTc5ZDQ4ZWYuLjM0YTUyNWFlNjA3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKICNp bmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBAIC0yNTgs MTQgKzI1OSwyOCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCQlBc3NlcnQoZnBQdHIgPD0g ZnBFbmRQdHIpOwogCiAJCS8qCi0JCSAqIFNldCB1cCBwZXItUEdQUk9DIHNlbWFwaG9yZSwg bGF0Y2gsIGFuZCBmcEluZm9Mb2NrLiAgUHJlcGFyZWQgeGFjdAotCQkgKiBkdW1teSBQR1BS T0NzIGRvbid0IG5lZWQgdGhlc2UgdGhvdWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lhdGVk Ci0JCSAqIHdpdGggYSByZWFsIHByb2Nlc3MKKwkJICogU2V0IHVwIHBlci1QR1BST0Mgc2Vt YXBob3JlLCBpbnRlcnJ1cHQgd2FrZXVwIGV2ZW50IChvbiBXaW5kb3dzKSwKKwkJICogYW5k IGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0IGR1bW15IFBHUFJPQ3MgZG9uJ3QgbmVlZCB0 aGVzZQorCQkgKiB0aG91Z2ggLSB0aGV5J3JlIG5ldmVyIGFzc29jaWF0ZWQgd2l0aCBhIHJl YWwgcHJvY2VzcwogCQkgKi8KIAkJaWYgKGkgPCBNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElB UllfUFJPQ1MpCiAJCXsKKyNpZmRlZiBXSU4zMgorCQkJU0VDVVJJVFlfQVRUUklCVVRFUyBz YTsKKworCQkJLyoKKwkJCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNp ZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQorCQkJICogaW5oZXJpdGVkLgorCQkJICovCisJCQla ZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7CisJCQlzYS5uTGVuZ3RoID0gc2l6ZW9mKHNh KTsKKwkJCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsKKworCQkJcHJvYy0+aW50ZXJydXB0 V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVudCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKwkJ CWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQkJCWVsb2coRVJS T1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9y KCkpOworI2VuZGlmCiAJCQlwcm9jLT5zZW0gPSBQR1NlbWFwaG9yZUNyZWF0ZSgpOwotCQkJ SW5pdFNoYXJlZExhdGNoKCYocHJvYy0+cHJvY0xhdGNoKSk7CiAJCQlMV0xvY2tJbml0aWFs aXplKCYocHJvYy0+ZnBJbmZvTG9jayksIExXVFJBTkNIRV9MT0NLX0ZBU1RQQVRIKTsKIAkJ fQogCkBAIC00NzksMTMgKzQ5NCw4IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5j bG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlBc3NlcnQocGdfYXRv bWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91cE5leHQpID09IElOVkFMSURfUFJPQ19O VU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9DJ3Mg bGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRoYXQg YWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZhcgot CSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUuCi0J ICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJlZExh dGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBwcm9j ZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0aGF0 IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9yeSAq LwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZlbnRf aW5mbyk7CkBAIC02NDksMTMgKzY1OSw4IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQp CiAJfQogI2VuZGlmCiAKLQkvKgotCSAqIEFjcXVpcmUgb3duZXJzaGlwIG9mIHRoZSBQR1BS T0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRMYXRjaAotCSAqIG9uIGl0LiAg VGhhdCBhbGxvd3MgdXMgdG8gcmVwb2ludCB0aGUgcHJvY2VzcyBsYXRjaCwgd2hpY2ggc28g ZmFyCi0JICogcG9pbnRzIHRvIHByb2Nlc3MgbG9jYWwgb25lLCB0byB0aGUgc2hhcmVkIG9u ZS4KLQkgKi8KLQlPd25MYXRjaCgmTXlQcm9jLT5wcm9jTGF0Y2gpOwotCVN3aXRjaFRvU2hh cmVkTGF0Y2goKTsKKwkvKiBTdGFydCBhY2NlcHRpbmcgaW50ZXJydXB0cyBmcm9tIG90aGVy IHByb2Nlc3NlcyAqLworCVN3aXRjaFRvU2hhcmVkSW50ZXJydXB0cygpOwogCiAJLyogbm93 IHRoYXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3YWl0IGV2ZW50cyB0byBzaGFyZWQgbWVt b3J5ICovCiAJcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UoJk15UHJvYy0+d2FpdF9l dmVudF9pbmZvKTsKQEAgLTkzMiwyMSArOTM3LDIwIEBAIFByb2NLaWxsKGludCBjb2RlLCBE YXR1bSBhcmcpCiAJfQogCiAJLyoKLQkgKiBSZXNldCBNeUxhdGNoIHRvIHRoZSBwcm9jZXNz IGxvY2FsIG9uZS4gIFRoaXMgaXMgc28gdGhhdCBzaWduYWwKLQkgKiBoYW5kbGVycyBldCBh bCBjYW4gY29udGludWUgdXNpbmcgdGhlIGxhdGNoIGFmdGVyIHRoZSBzaGFyZWQgbGF0Y2gK LQkgKiBpc24ndCBvdXJzIGFueW1vcmUuCisJICogUmVzZXQgaW50ZXJydXB0IHZlY3RvciB0 byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUuICBUaGlzIGlzIHNvIHRoYXQKKwkgKiBzaWduYWwg aGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRpbnVlIHVzaW5nIGludGVycnVwdHMgYWZ0ZXIgdGhl IFBHUFJPQworCSAqIGVudHJ5IGlzbid0IG91cnMgYW55bW9yZS4KIAkgKgogCSAqIFNpbWls YXJseSwgc3RvcCByZXBvcnRpbmcgd2FpdCBldmVudHMgdG8gTXlQcm9jLT53YWl0X2V2ZW50 X2luZm8uCiAJICoKLQkgKiBBZnRlciB0aGF0IGNsZWFyIE15UHJvYyBhbmQgZGlzb3duIHRo ZSBzaGFyZWQgbGF0Y2guCisJICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2MuCiAJICovCi0J U3dpdGNoQmFja1RvTG9jYWxMYXRjaCgpOworCVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKCk7 CiAJcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJcHJvYyA9IE15UHJv YzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1C RVI7Ci0JRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAkvKiBNYXJrIHRoZSBw cm9jIG5vIGxvbmdlciBpbiB1c2UgKi8KIAlwcm9jLT5waWQgPSAwOwpAQCAtMTAwOSwxMyAr MTAxMywxMiBAQCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCUNv bmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIAogCS8qIGxvb2sgYXQgdGhlIGVxdWl2 YWxlbnQgUHJvY0tpbGwoKSBjb2RlIGZvciBjb21tZW50cyAqLwotCVN3aXRjaEJhY2tUb0xv Y2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpOwogCXBnc3RhdF9yZXNl dF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAogCXByb2MgPSBNeVByb2M7CiAJTXlQcm9jID0g TlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCURpc293bkxh dGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tBY3F1aXJlKFByb2NTdHJ1Y3RM b2NrKTsKIApAQCAtMTM0MiwxOCArMTM0NSwxOCBAQCBQcm9jU2xlZXAoTE9DQUxMT0NLICps b2NhbGxvY2spCiAJfQogCiAJLyoKLQkgKiBJZiBzb21lYm9keSB3YWtlcyB1cyBiZXR3ZWVu IExXTG9ja1JlbGVhc2UgYW5kIFdhaXRMYXRjaCwgdGhlIGxhdGNoCi0JICogd2lsbCBub3Qg d2FpdC4gQnV0IGEgc2V0IGxhdGNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCB0 aGUgbG9jawotCSAqIGlzIGZyZWUgbm93LCBhcyB0aGVyZSBhcmUgbWFueSBvdGhlciBzb3Vy Y2VzIGZvciBsYXRjaCBzZXRzIHRoYW4KLQkgKiBzb21lYm9keSByZWxlYXNpbmcgdGhlIGxv Y2suCisJICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNlIGFu ZCBXYWl0SW50ZXJydXB0LAorCSAqIFdhaXRJbnRlcnJ1cHQgd2lsbCBub3Qgd2FpdC4gQnV0 IGFuIGludGVycnVwdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuCisJICogdGhhdCB0aGUg bG9jayBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1hbnkgb3RoZXIgc291cmNlcyBmb3Ig dGhlCisJICogaW50ZXJydXB0IHRoYW4gc29tZWJvZHkgcmVsZWFzaW5nIHRoZSBsb2NrLgog CSAqCi0JICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRoZSBsYXRjaCBoYXMg YmVlbiBzZXQsIHNvIGNhbmNlbC9kaWUKLQkgKiBpbnRlcnJ1cHRzIGFyZSBwcm9jZXNzZWQg cXVpY2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdCBtaW5kIGxvc2luZwotCSAqIGNvbnRy b2wgdG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAgV2UgZG9uJ3QsIGJlY2F1c2Ug d2UgaGF2ZSBubwotCSAqIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ugd29yayB0byBkbyBhZnRlciBi ZWluZyBncmFudGVkIHRoZSBsb2NrICh0aGUKLQkgKiBncmFudG9yIGRpZCBpdCBhbGwpLiAg V2UgZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcgdGhlIGRlYWRsb2NrCi0JICog dGltZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0YWJsZSwgYnV0IGlmIHdlIGxv c2UgY29udHJvbCB0byBhbgotCSAqIGVycm9yLCBMb2NrRXJyb3JDbGVhbnVwIHdpbGwgZml4 IHRoYXQgdXAuCisJICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRoZSBpbnRl cnJ1cHQgaGFzIGJlZW4gc2V0LCBzbworCSAqIGNhbmNlbC9kaWUgaW50ZXJydXB0cyBhcmUg cHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMgd2UgbXVzdCBub3QKKwkgKiBtaW5kIGxv c2luZyBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBpbnRlcnJ1cHQgaGVyZS4gIFdlIGRvbid0 LCBiZWNhdXNlCisJICogd2UgaGF2ZSBubyBzaGFyZWQtc3RhdGUtY2hhbmdlIHdvcmsgdG8g ZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9jaworCSAqICh0aGUgZ3JhbnRvciBkaWQg aXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkgYWJvdXQgY2FuY2VsaW5nIHRoZQorCSAq IGRlYWRsb2NrIHRpbWVvdXQgYW5kIHVwZGF0aW5nIHRoZSBsb2NhbGxvY2sgdGFibGUsIGJ1 dCBpZiB3ZSBsb3NlCisJICogY29udHJvbCB0byBhbiBlcnJvciwgTG9ja0Vycm9yQ2xlYW51 cCB3aWxsIGZpeCB0aGF0IHVwLgogCSAqLwogCWRvCiAJewpAQCAtMTM5OSw5ICsxNDAyLDkg QEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQl9CiAJCWVsc2UKIAkJewot CQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAotCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5s b2NrLmxvY2t0YWdfdHlwZSk7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIFBHX1dBSVRfTE9DSyB8IGxvY2Fs bG9jay0+dGFnLmxvY2subG9ja3RhZ190eXBlKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIAkJCS8qIGNoZWNrIGZvciBkZWFkbG9ja3MgZmlyc3QsIGFzIHRo YXQncyBwcm9iYWJseSBsb2ctd29ydGh5ICovCiAJCQlpZiAoZ290X2RlYWRsb2NrX3RpbWVv dXQpCiAJCQl7CkBAIC0xNjkzLDcgKzE2OTYsNyBAQCBQcm9jU2xlZXAoTE9DQUxMT0NLICps b2NhbGxvY2spCiAKIAogLyoKLSAqIFByb2NXYWtldXAgLS0gd2FrZSB1cCBhIHByb2Nlc3Mg Ynkgc2V0dGluZyBpdHMgbGF0Y2guCisgKiBQcm9jV2FrZXVwIC0tIHdha2UgdXAgYSBwcm9j ZXNzIGJ5IHNlbmRpbmcgaXQgYW4gaW50ZXJydXB0LgogICoKICAqCSBBbHNvIHJlbW92ZSB0 aGUgcHJvY2VzcyBmcm9tIHRoZSB3YWl0IHF1ZXVlIGFuZCBzZXQgaXRzIGxpbmtzIGludmFs aWQuCiAgKgpAQCAtMTcyMiw3ICsxNzI1LDcgQEAgUHJvY1dha2V1cChQR1BST0MgKnByb2Ms IFByb2NXYWl0U3RhdHVzIHdhaXRTdGF0dXMpCiAJcGdfYXRvbWljX3dyaXRlX3U2NCgmTXlQ cm9jLT53YWl0U3RhcnQsIDApOwogCiAJLyogQW5kIGF3YWtlbiBpdCAqLwotCVNldExhdGNo KCZwcm9jLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUws IEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogfQogCiAvKgpAQCAtMTg3NCw0NSArMTg3 NywxOSBAQCBDaGVja0RlYWRMb2NrQWxlcnQodm9pZCkKIAlnb3RfZGVhZGxvY2tfdGltZW91 dCA9IHRydWU7CiAKIAkvKgotCSAqIEhhdmUgdG8gc2V0IHRoZSBsYXRjaCBhZ2FpbiwgZXZl biBpZiBoYW5kbGVfc2lnX2FsYXJtIGFscmVhZHkgZGlkLiBCYWNrCi0JICogdGhlbiBnb3Rf ZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNldC4uLiBJdCdzIHVubGlrZWx5IHRoYXQg dGhpcwotCSAqIGV2ZXIgd291bGQgYmUgYSBwcm9ibGVtLCBidXQgc2V0dGluZyBhIHNldCBs YXRjaCBhZ2FpbiBpcyBjaGVhcC4KKwkgKiBIYXZlIHRvIHJhaXNlIHRoZSBpbnRlcnJ1cHQg YWdhaW4sIGV2ZW4gaWYgaGFuZGxlX3NpZ19hbGFybSBhbHJlYWR5CisJICogZGlkLiBCYWNr IHRoZW4gZ290X2RlYWRsb2NrX3RpbWVvdXQgd2Fzbid0IHlldCBzZXQuLi4gSXQncyB1bmxp a2VseQorCSAqIHRoYXQgdGhpcyBldmVyIHdvdWxkIGJlIGEgcHJvYmxlbSwgYnV0IHJhaXNp bmcgYW4gaW50ZXJydXB0IGFnYWluIGlzCisJICogY2hlYXAuCiAJICoKIAkgKiBOb3RlIHRo YXQsIHdoZW4gdGhpcyBmdW5jdGlvbiBydW5zIGluc2lkZSBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlcigpLAotCSAqIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIHNldHMgdGhlIGxhdGNoIGFn YWluIGFmdGVyIHRoZSBsYXRjaCBpcyBzZXQgaGVyZS4KKwkgKiB0aGUgaGFuZGxlciBmdW5j dGlvbiByYWlzZXMgdGhlIGludGVycnVwdCBhZ2FpbiBhZnRlciB0aGUgaW50ZXJydXB0IGlz CisJICogcmFpc2VkIGhlcmUuCiAJICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCWVycm5vID0gc2F2ZV9lcnJubzsKIH0K IAotLyoKLSAqIFByb2NXYWl0Rm9yU2lnbmFsIC0gd2FpdCBmb3IgYSBzaWduYWwgZnJvbSBh bm90aGVyIGJhY2tlbmQuCi0gKgotICogQXMgdGhpcyB1c2VzIHRoZSBnZW5lcmljIHByb2Nl c3MgbGF0Y2ggdGhlIGNhbGxlciBoYXMgdG8gYmUgcm9idXN0IGFnYWluc3QKLSAqIHVucmVs YXRlZCB3YWtldXBzOiBBbHdheXMgY2hlY2sgdGhhdCB0aGUgZGVzaXJlZCBzdGF0ZSBoYXMg b2NjdXJyZWQsIGFuZAotICogd2FpdCBhZ2FpbiBpZiBub3QuCi0gKi8KLXZvaWQKLVByb2NX YWl0Rm9yU2lnbmFsKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCi17Ci0JKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAot CQkJCQkgd2FpdF9ldmVudF9pbmZvKTsKLQlSZXNldExhdGNoKE15TGF0Y2gpOwotCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7Ci19Ci0KLS8qCi0gKiBQcm9jU2VuZFNpZ25hbCAtIHNldCB0 aGUgbGF0Y2ggb2YgYSBiYWNrZW5kIGlkZW50aWZpZWQgYnkgUHJvY051bWJlcgotICovCi12 b2lkCi1Qcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpCi17Ci0JaWYgKHBy b2NOdW1iZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50 KQotCQllbG9nKEVSUk9SLCAicHJvY051bWJlciBvdXQgb2YgcmFuZ2UiKTsKLQotCVNldExh dGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9jc1twcm9jTnVtYmVyXS5wcm9jTGF0Y2gpOwotfQot CiAvKgogICogQmVjb21lTG9ja0dyb3VwTGVhZGVyIC0gZGVzaWduYXRlIHByb2Nlc3MgYXMg bG9jayBncm91cCBsZWFkZXIKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCBm YzE2ZGI5MDEzMy4uNGJiODY0NmMyM2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpA QCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbWQuaCIKICNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxMSw4ICs2MTEs OCBAQCBSZWdpc3RlclN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1 ZXN0VHlwZSB0eXBlLAogCQlpZiAocmV0IHx8ICghcmV0ICYmICFyZXRyeU9uRXJyb3IpKQog CQkJYnJlYWs7CiAKLQkJV2FpdExhdGNoKE5VTEwsIFdMX0VYSVRfT05fUE1fREVBVEggfCBX TF9USU1FT1VULCAxMCwKLQkJCQkgIFdBSVRfRVZFTlRfUkVHSVNURVJfU1lOQ19SRVFVRVNU KTsKKwkJV2FpdEludGVycnVwdCgwLCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9V VCwgMTAsCisJCQkJCSAgV0FJVF9FVkVOVF9SRUdJU1RFUl9TWU5DX1JFUVVFU1QpOwogCX0K IAogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggNjBhYjhjZDQwYzcuLjlh OGRiNTcxOTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC02MSw2ICs2MSw3IEBACiAjaW5j bHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdy aXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAg LTUxOSwxNSArNTIwLDE1IEBAIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGJvb2wgYmxv Y2tlZCkKIAkJLyoKIAkJICogV2UncmUgZHlpbmcuICBJZiB0aGVyZSBpcyBubyBkYXRhIGF2 YWlsYWJsZSB0byByZWFkLCB0aGVuIGl0J3Mgc2FmZQogCQkgKiAoYW5kIHNhbmUpIHRvIGhh bmRsZSB0aGF0IG5vdy4gIElmIHdlIGhhdmVuJ3QgdHJpZWQgdG8gcmVhZCB5ZXQsCi0JCSAq IG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlcmUg aXMgbm8gZGF0YQorCQkgKiBtYWtlIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlzIHNldCwg c28gdGhhdCBpZiB0aGVyZSBpcyBubyBkYXRhCiAJCSAqIHRoZW4gd2UnbGwgY29tZSBiYWNr IGhlcmUgYW5kIGRpZS4gIElmIHdlJ3JlIGRvbmUgcmVhZGluZywgYWxzbwotCQkgKiBtYWtl IHN1cmUgdGhlIHByb2Nlc3MgbGF0Y2ggaXMgc2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2ly YWJseQorCQkgKiBtYWtlIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlzIHNldCwgYXMgd2Ug bWlnaHQndmUgdW5kZXNpcmFibHkKIAkJICogY2xlYXJlZCBpdCB3aGlsZSByZWFkaW5nLgog CQkgKi8KIAkJaWYgKGJsb2NrZWQpCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQll bHNlCi0JCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAl9CiAKIAllcnJubyA9IHNhdmVfZXJybm87CkBAIC01NTMsOSArNTU0 LDkgQEAgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKIAkJICog V2UncmUgZHlpbmcuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byB3cml0ZSwgdGhlbiB3ZSBz aG91bGQgaGFuZGxlCiAJCSAqIHRoYXQgaW1tZWRpYXRlbHksIGVsc2UgYSBzdHVjayBjbGll bnQgY291bGQgaW5kZWZpbml0ZWx5IGRlbGF5IG91cgogCQkgKiByZXNwb25zZSB0byB0aGUg c2lnbmFsLiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byB3cml0ZSB5ZXQsIG1ha2UKLQkJICog c3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlIHdyaXRlIHdv dWxkIGJsb2NrCisJCSAqIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlzIHNldCwgc28gdGhh dCBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKIAkJICogdGhlbiB3ZSdsbCBjb21lIGJhY2sg aGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSB3cml0aW5nLCBhbHNvCi0JCSAqIG1ha2Ug c3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJh Ymx5CisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0IGZsYWcgaXMgc2V0LCBhcyB3ZSBt aWdodCd2ZSB1bmRlc2lyYWJseQogCQkgKiBjbGVhcmVkIGl0IHdoaWxlIHdyaXRpbmcuCiAJ CSAqLwogCQlpZiAoYmxvY2tlZCkKQEAgLTU3OSw3ICs1ODAsNyBAQCBQcm9jZXNzQ2xpZW50 V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkJfQogCQl9CiAJCWVsc2UKLQkJCVNl dExhdGNoKE15TGF0Y2gpOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCX0KIAogCWVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTMwMTIsMTIgKzMwMTMsMTIgQEAg ZGllKFNJR05BTF9BUkdTKQogCS8qIGZvciB0aGUgY3VtdWxhdGl2ZSBzdGF0cyBzeXN0ZW0g Ki8KIAlwZ1N0YXRTZXNzaW9uRW5kQ2F1c2UgPSBESVNDT05ORUNUX0tJTExFRDsKIAotCS8q IElmIHdlJ3JlIHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHBy b2Nlc3MgbGF0Y2ggKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiBJZiB3ZSdyZSBzdGls bCBoZXJlLCB3YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBpbnRlcnJ1cHQgKi8KKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkvKgogCSAqIElmIHdlJ3Jl IGluIHNpbmdsZSB1c2VyIG1vZGUsIHdlIHdhbnQgdG8gcXVpdCBpbW1lZGlhdGVseSAtIHdl IGNhbid0Ci0JICogcmVseSBvbiBsYXRjaGVzIGFzIHRoZXkgd291bGRuJ3Qgd29yayB3aGVu IHN0ZGluL3N0ZG91dCBpcyBhIGZpbGUuCisJICogcmVseSBvbiBpbnRlcnJ1cHRzIGFzIHRo ZXkgd291bGRuJ3Qgd29yayB3aGVuIHN0ZGluL3N0ZG91dCBpcyBhIGZpbGUuCiAJICogUmF0 aGVyIHVnbHksIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGJlIHdvcnRod2hpbGUgdG8gaW52ZXN0 IG11Y2ggbW9yZQogCSAqIGVmZm9ydCBqdXN0IGZvciB0aGUgYmVuZWZpdCBvZiBzaW5nbGUg dXNlciBtb2RlLgogCSAqLwpAQCAtMzA0MSw4ICszMDQyLDggQEAgU3RhdGVtZW50Q2FuY2Vs SGFuZGxlcihTSUdOQUxfQVJHUykKIAkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKIAl9 CiAKLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9u IHRoZSBwcm9jZXNzIGxhdGNoICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJLyogSWYgd2Un cmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0aGUgaW50ZXJydXB0 ICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKiBzaWdu YWwgaGFuZGxlciBmb3IgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uICovCkBAIC0zMDY4LDcg KzMwNjksNyBAQCBIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxS ZWFzb24gcmVhc29uKQogCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFzb25d ID0gdHJ1ZTsKIAlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0 UGVuZGluZyA9IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIgKi8KKwkvKiBJTlRFUlJVUFRfR0VORVJBTCB3aWxsIGJlIHJhaXNl ZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9taXNjLmMKaW5kZXggNmZjZmQwMzE0MjguLjE2MGVhNTlkOTRiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9taXNjLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xv Z2dlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK QEAgLTM3MywxNiArMzczLDE2IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZmxv YXQ4CQllbmR0aW1lOwogCiAJLyoKLQkgKiBXZSBzbGVlcCB1c2luZyBXYWl0TGF0Y2gsIHRv IGVuc3VyZSB0aGF0IHdlJ2xsIHdha2UgdXAgcHJvbXB0bHkgaWYgYW4KLQkgKiBpbXBvcnRh bnQgc2lnbmFsIChzdWNoIGFzIFNJR0FMUk0gb3IgU0lHSU5UKSBhcnJpdmVzLiAgQmVjYXVz ZQotCSAqIFdhaXRMYXRjaCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlzIElOVF9NQVggbWls bGlzZWNvbmRzLCBhbmQgdGhlIHVzZXIKLQkgKiBtaWdodCBhc2sgZm9yIG1vcmUgdGhhbiB0 aGF0LCB3ZSBzbGVlcCBmb3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZCB0aGVuCi0JICogbG9v cC4KKwkgKiBXZSBzbGVlcCB1c2luZyBXYWl0SW50ZXJydXB0LCB0byBlbnN1cmUgdGhhdCB3 ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmCisJICogYW4gaW1wb3J0YW50IHNpZ25hbCAoc3Vj aCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UKKwkgKiBXYWl0SW50 ZXJydXB0J3MgdXBwZXIgbGltaXQgb2YgZGVsYXkgaXMgSU5UX01BWCBtaWxsaXNlY29uZHMs IGFuZCB0aGUKKwkgKiB1c2VyIG1pZ2h0IGFzayBmb3IgbW9yZSB0aGFuIHRoYXQsIHdlIHNs ZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5kCisJICogdGhlbiBsb29wLgogCSAqCiAJ ICogQnkgY29tcHV0aW5nIHRoZSBpbnRlbmRlZCBzdG9wIHRpbWUgaW5pdGlhbGx5LCB3ZSBh dm9pZCBhY2N1bXVsYXRpb24gb2YKIAkgKiBleHRyYSBkZWxheSBhY3Jvc3MgbXVsdGlwbGUg c2xlZXBzLiAgVGhpcyBhbHNvIGVuc3VyZXMgd2Ugd29uJ3QgZGVsYXkKLQkgKiBsZXNzIHRo YW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdExhdGNoIGlzIHRlcm1pbmF0ZWQgZWFy bHkgYnkgYQotCSAqIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQ LgorCSAqIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkIHRpbWUgd2hlbiBXYWl0SW50ZXJydXB0 IGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkKKwkgKiBhIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2ln bmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwogI2RlZmluZSBHZXROb3dGbG9hdCgpCSgoZmxv YXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCiAKQEAgLTQwMywxMSAr NDAzLDExIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCWJyZWFr OwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBkZWxheV9tcywK LQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkJIGRlbGF5X21zLAorCQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKKwkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCVBHX1JFVFVSTl9WT0lE KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggOTY4MmY5ZGJkY2EuLmU0 ZDE0NWIwNTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1w LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCkBAIC0xNzM4LDEw ICsxNzM4LDEwIEBAIFRpbWVzdGFtcERpZmZlcmVuY2UoVGltZXN0YW1wVHogc3RhcnRfdGlt ZSwgVGltZXN0YW1wVHogc3RvcF90aW1lLAogICogVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxp c2Vjb25kcyAtLSBjb252ZXJ0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvCiAgKiAJCXRp bWVzdGFtcHMgaW50byBpbnRlZ2VyIG1pbGxpc2Vjb25kcwogICoKLSAqIFRoaXMgaXMgdHlw aWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZvciBXYWl0TGF0Y2go KQorICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBjYWxjdWxhdGUgYSB3YWl0IHRpbWVv dXQgZm9yIFdhaXRJbnRlcnJ1cHQoKQogICogb3IgYSByZWxhdGVkIGZ1bmN0aW9uLiAgVGhl IGNob2ljZSBvZiAibG9uZyIgYXMgdGhlIHJlc3VsdCB0eXBlCiAgKiBpcyB0byBoYXJtb25p emUgd2l0aCB0aGF0OyBmdXJ0aGVybW9yZSwgd2UgY2xhbXAgdGhlIHJlc3VsdCB0byBhdCBt b3N0Ci0gKiBJTlRfTUFYIG1pbGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0J3MgYWxsIHRoYXQg V2FpdExhdGNoKCkgYWxsb3dzLgorICogSU5UX01BWCBtaWxsaXNlY29uZHMsIGJlY2F1c2Ug dGhhdCdzIGFsbCB0aGF0IFdhaXRJbnRlcnJ1cHQoKSBhbGxvd3MuCiAgKgogICogV2UgZXhw ZWN0IHN0YXJ0X3RpbWUgPD0gc3RvcF90aW1lLiAgSWYgbm90LCB3ZSByZXR1cm4gemVybywK ICAqIHNpbmNlIHRoZW4gd2UncmUgYWxyZWFkeSBwYXN0IHRoZSBwcmV2aW91c2x5IGRldGVy bWluZWQgc3RvcF90aW1lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9n bG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCBiODQ0 ZjlmZGFlZi4uNzliYzk5OWNmMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBA IC01MiwxNSArNTIsNiBAQCBib29sCQlNeUNhbmNlbEtleVZhbGlkID0gZmFsc2U7CiBpbnQz MgkJTXlDYW5jZWxLZXkgPSAwOwogaW50CQkJTXlQTUNoaWxkU2xvdDsKIAotLyoKLSAqIE15 TGF0Y2ggcG9pbnRzIHRvIHRoZSBsYXRjaCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBzaWdu YWwgaGFuZGxpbmcgYnkgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MuIEl0IHdpbGwgZWl0aGVy IHBvaW50IHRvIGEgcHJvY2VzcyBsb2NhbCBsYXRjaCBpZiB0aGUKLSAqIGN1cnJlbnQgcHJv Y2VzcyBkb2VzIG5vdCBoYXZlIGEgUEdQUk9DIGVudHJ5IGluIHRoYXQgbW9tZW50LCBvciB0 bwotICogUEdQUk9DLT5wcm9jTGF0Y2ggaWYgaXQgaGFzLiBUaHVzIGl0IGNhbiBhbHdheXMg YmUgdXNlZCBpbiBzaWduYWwgaGFuZGxlcnMsCi0gKiB3aXRob3V0IGNoZWNraW5nIGZvciBp dHMgZXhpc3RlbmNlLgotICovCi1zdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7Ci0KIC8qCiAgKiBE YXRhRGlyIGlzIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIFBH REFUQSBkaXJlY3RvcnkgdHJlZS4KICAqIEV4Y2VwdCBkdXJpbmcgZWFybHkgc3RhcnR1cCwg dGhpcyBpcyBhbHNvIHRoZSBzZXJ2ZXIncyB3b3JraW5nIGRpcmVjdG9yeTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCAzNGI4NDUwYjUzYy4uYmQwZjU2NjYxMmIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTQyLDggKzQyLDggQEAKICNpbmNs dWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9z bG90c3luYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC02 Niw4ICs2Niw2IEBAIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAvKiBMaXN0IG9mIGxv Y2sgZmlsZXMgdG8gYmUgcmVtb3ZlZCBhdCBwcm9jIGV4aXQgKi8KIHN0YXRpYyBMaXN0ICps b2NrX2ZpbGVzID0gTklMOwogCi1zdGF0aWMgTGF0Y2ggTG9jYWxMYXRjaERhdGE7Ci0KIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlpZ25vcmluZyBzeXN0ZW0gaW5kZXhlcyBzdXBwb3J0IHN0dWZm CiAgKgpAQCAtMTI2LDEwICsxMjQsOSBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZvaWQpCiAJ cHFpbml0bWFzaygpOwogI2VuZGlmCiAKLQkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwg bGF0Y2ggc3VwcG9ydCAqLworCS8qIEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBpbnRlcnJ1 cHQgc3VwcG9ydCAqLwogCUluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7Ci0JSW5pdFBy b2Nlc3NMb2NhbExhdGNoKCk7Ci0JSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCgpOworCUluaXRp YWxpemVJbnRlcnJ1cHRXYWl0U2V0KCk7CiAKIAkvKgogCSAqIElmIHBvc3NpYmxlLCBtYWtl IHRoaXMgcHJvY2VzcyBhIGdyb3VwIGxlYWRlciwgc28gdGhhdCB0aGUgcG9zdG1hc3RlcgpA QCAtMTg3LDEwICsxODQsOSBAQCBJbml0U3RhbmRhbG9uZVByb2Nlc3MoY29uc3QgY2hhciAq YXJndjApCiAKIAlJbml0UHJvY2Vzc0dsb2JhbHMoKTsKIAotCS8qIEluaXRpYWxpemUgcHJv Y2Vzcy1sb2NhbCBsYXRjaCBzdXBwb3J0ICovCisJLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxv Y2FsIGludGVycnVwdCBzdXBwb3J0ICovCiAJSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQo KTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0 KCk7CisJSW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQoKTsKIAogCS8qCiAJICogRm9yIGNv bnNpc3RlbmN5IHdpdGggSW5pdFBvc3RtYXN0ZXJDaGlsZCwgaW5pdGlhbGl6ZSBzaWduYWwg bWFzayBoZXJlLgpAQCAtMjExLDQ4ICsyMDcsNiBAQCBJbml0U3RhbmRhbG9uZVByb2Nlc3Mo Y29uc3QgY2hhciAqYXJndjApCiAJCWdldF9wa2dsaWJfcGF0aChteV9leGVjX3BhdGgsIHBr Z2xpYl9wYXRoKTsKIH0KIAotdm9pZAotU3dpdGNoVG9TaGFyZWRMYXRjaCh2b2lkKQotewot CUFzc2VydChNeUxhdGNoID09ICZMb2NhbExhdGNoRGF0YSk7Ci0JQXNzZXJ0KE15UHJvYyAh PSBOVUxMKTsKLQotCU15TGF0Y2ggPSAmTXlQcm9jLT5wcm9jTGF0Y2g7Ci0KLQlpZiAoRmVC ZVdhaXRTZXQpCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRM YXRjaFBvcywgV0xfTEFUQ0hfU0VULAotCQkJCQkJTXlMYXRjaCk7Ci0KLQkvKgotCSAqIFNl dCB0aGUgc2hhcmVkIGxhdGNoIGFzIHRoZSBsb2NhbCBvbmUgbWlnaHQgaGF2ZSBiZWVuIHNl dC4gVGhpcwotCSAqIHNob3VsZG4ndCBub3JtYWxseSBiZSBuZWNlc3NhcnkgYXMgY29kZSBp cyBzdXBwb3NlZCB0byBjaGVjayB0aGUKLQkgKiBjb25kaXRpb24gYmVmb3JlIHdhaXRpbmcg Zm9yIHRoZSBsYXRjaCwgYnV0IGEgYml0IGNhcmUgY2FuJ3QgaHVydC4KLQkgKi8KLQlTZXRM YXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotSW5pdFByb2Nlc3NMb2NhbExhdGNoKHZvaWQp Ci17Ci0JTXlMYXRjaCA9ICZMb2NhbExhdGNoRGF0YTsKLQlJbml0TGF0Y2goTXlMYXRjaCk7 Ci19Ci0KLXZvaWQKLVN3aXRjaEJhY2tUb0xvY2FsTGF0Y2godm9pZCkKLXsKLQlBc3NlcnQo TXlMYXRjaCAhPSAmTG9jYWxMYXRjaERhdGEpOwotCUFzc2VydChNeVByb2MgIT0gTlVMTCAm JiBNeUxhdGNoID09ICZNeVByb2MtPnByb2NMYXRjaCk7Ci0KLQlNeUxhdGNoID0gJkxvY2Fs TGF0Y2hEYXRhOwotCi0JaWYgKEZlQmVXYWl0U2V0KQotCQlNb2RpZnlXYWl0RXZlbnQoRmVC ZVdhaXRTZXQsIEZlQmVXYWl0U2V0TGF0Y2hQb3MsIFdMX0xBVENIX1NFVCwKLQkJCQkJCU15 TGF0Y2gpOwotCi0JU2V0TGF0Y2goTXlMYXRjaCk7Ci19Ci0KIC8qCiAgKiBSZXR1cm4gYSBo dW1hbi1yZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBCYWNrZW5kVHlwZS4K ICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggZWUxYTlkNWQ5OGIuLmU1 NGI1YjM5Mzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC00NSw2ICs0 NSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMTM4 Myw3ICsxMzg0LDcgQEAgVHJhbnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewogCVRy YW5zYWN0aW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0 cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOTEsNyArMTM5Miw3IEBAIElkbGVJ blRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRsZUluVHJh bnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOTksNyArMTQwMCw3IEBA IElkbGVTZXNzaW9uVGltZW91dEhhbmRsZXIodm9pZCkKIHsKIAlJZGxlU2Vzc2lvblRpbWVv dXRQZW5kaW5nID0gdHJ1ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRj aChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAK IHN0YXRpYyB2b2lkCkBAIC0xNDA3LDcgKzE0MDgsNyBAQCBJZGxlU3RhdHNVcGRhdGVUaW1l b3V0SGFuZGxlcih2b2lkKQogewogCUlkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0g dHJ1ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsK KwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0xNDE1LDcgKzE0MTYsNyBAQCBDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQp CiB7CiAJQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0 UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy90aW1lb3V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQu YwppbmRleCBkOTJlZmExMjU1MC4uOTM5OTQxOTBjNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvdGltZW91dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv dGltZW91dC5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KIAog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVvdXQu aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIApAQCAtMzcxLDEwICszNzEsMTAg QEAgaGFuZGxlX3NpZ19hbGFybShTSUdOQUxfQVJHUykKIAlIT0xEX0lOVEVSUlVQVFMoKTsK IAogCS8qCi0JICogU0lHQUxSTSBpcyBhbHdheXMgY2F1c2UgZm9yIHdha2luZyBhbnl0aGlu ZyB3YWl0aW5nIG9uIHRoZSBwcm9jZXNzCi0JICogbGF0Y2guCisJICogU0lHQUxSTSBpcyBh bHdheXMgY2F1c2UgZm9yIHdha2luZyBhbnl0aGluZyB3YWl0aW5nIG9uCisJICogSU5URVJS VVBUX0dFTkVSQUwuCiAJICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJLyoKIAkgKiBBbHdheXMgcmVzZXQgc2lnbmFs X3BlbmRpbmcsIGV2ZW4gaWYgIWFsYXJtX2VuYWJsZWQsIHNpbmNlIGluZGVlZCBubwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMvYmFja2VuZC91 dGlscy9tbWdyL21jeHQuYwppbmRleCA5MTA2MGRlMGFiNy4uNTIzM2E2NWFhYTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBIYW5kbGVMb2dNZW1v cnlDb250ZXh0SW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7 CiAJTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNoIHdpbGwgYmUg c2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyogSU5URVJSVVBUX0dF TkVSQUwgd2lsbCBiZSByYWlzZWQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8K IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2OTAuLmEyNTdk MGE4ZWU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsNiArMTQsOCBAQAogI2lm bmRlZiBQQVJBTExFTF9ICiAjZGVmaW5lIFBBUkFMTEVMX0gKIAorI2luY2x1ZGUgPHNpZ25h bC5oPgorCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2ls aXN0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1ZGUv bGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oCmluZGV4IDE2MjA1YjgyNGZhLi5mODhhZTgx MzdkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVy cy5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaApAQCAt NDMsNyArNDMsNyBAQAogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAtMTc3 LDggKzE3Nyw4IEBAIGxpYnBxc3J2X2Nvbm5lY3RfaW50ZXJuYWwoUEdjb25uICpjb25uLCB1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIFdhaXRMYXRj aE9yU29ja2V0KCkgY2FuIGNvbmNlaXZhYmx5IGZhaWwsIGhhbmRsZSB0aGF0IGNhc2UgaGVy ZSBpbnN0ZWFkCi0JICogb2YgcmVxdWlyaW5nIGFsbCBjYWxsZXJzIHRvIGRvIHNvLgorCSAq IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBoYW5kbGUg dGhhdCBjYXNlIGhlcmUKKwkgKiBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbGwgY2FsbGVycyB0 byBkbyBzby4KIAkgKi8KIAlQR19UUlkoKTsKIAl7CkBAIC0yMDksMTYgKzIwOSwxNiBAQCBs aWJwcXNydl9jb25uZWN0X2ludGVybmFsKFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZl bnRfaW5mbykKIAkJCWVsc2UKIAkJCQlpb19mbGFnID0gV0xfU09DS0VUX1dSSVRFQUJMRTsK IAotCQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkgICBXTF9F WElUX09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VUIHwgaW9fZmxhZywKLQkJCQkJCQkJICAg UFFzb2NrZXQoY29ubiksCi0JCQkJCQkJCSAgIDAsCi0JCQkJCQkJCSAgIHdhaXRfZXZlbnRf aW5mbyk7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMLAorCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQ VCB8IGlvX2ZsYWcsCisJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJCSAg IDAsCisJCQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOwogCiAJCQkvKiBJbnRlcnJ1cHRl ZD8gKi8KLQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCWlmIChyYyAmIFdMX0lOVEVS UlVQVCkKIAkJCXsKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CQkJfQogCkBAIC0zNDEsMTcgKzM0MSwxNyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29u biAqY29ubiwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAl7CiAJCWludAkJCXJjOwogCi0J CXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFC TEUsCi0JCQkJCQkJICAgUFFzb2NrZXQoY29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkg ICB3YWl0X2V2ZW50X2luZm8pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwg V0xfSU5URVJSVVBUIHwKKwkJCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxFLAorCQkJCQkJ CQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJICAgMCwKKwkJCQkJCQkJICAgd2FpdF9l dmVudF9pbmZvKTsKIAogCQkvKiBJbnRlcnJ1cHRlZD8gKi8KLQkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCBsaWJw cXNydl9jYW5jZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBwb2xscmVzOwogCQkJVGltZXN0YW1wVHogbm93Owog CQkJbG9uZwkJY3VyX3RpbWVvdXQ7Ci0JCQlpbnQJCQl3YWl0RXZlbnRzID0gV0xfTEFUQ0hf U0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCQlpbnQJCQl3YWl0 RXZlbnRzID0gV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEg7CiAKIAkJCXBvbGxyZXMgPSBQUWNhbmNlbFBvbGwoY2FuY2VsX2Nvbm4pOwogCQkJaWYg KHBvbGxyZXMgPT0gUEdSRVNfUE9MTElOR19PSykKQEAgLTQzNiwxMCArNDM2LDExIEBAIGxp YnBxc3J2X2NhbmNlbChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUpCiAJCQl9 CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGRvICovCi0JCQlX YWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLCB3YWl0RXZlbnRzLCBQUWNhbmNlbFNvY2tldChj YW5jZWxfY29ubiksCi0JCQkJCQkJICBjdXJfdGltZW91dCwgUEdfV0FJVF9DTElFTlQpOwor CQkJV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIHdhaXRF dmVudHMsCisJCQkJCQkJCSAgUFFjYW5jZWxTb2NrZXQoY2FuY2VsX2Nvbm4pLAorCQkJCQkJ CQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CiAKLQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLmggYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCmluZGV4IGFlYjY2Y2E0 MGNmLi42ZGUwM2NlMTE2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEu aAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCkBAIC0xOCw3ICsxOCw3IEBACiAK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWJl LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2Fp dGV2ZW50c2V0LmgiCiAKIAogLyoKQEAgLTYxLDcgKzYxLDcgQEAgZXh0ZXJuIGNvbnN0IFBH RExMSU1QT1JUIFBRY29tbU1ldGhvZHMgKlBxQ29tbU1ldGhvZHM7CiBleHRlcm4gUEdETExJ TVBPUlQgV2FpdEV2ZW50U2V0ICpGZUJlV2FpdFNldDsKIAogI2RlZmluZSBGZUJlV2FpdFNl dFNvY2tldFBvcyAwCi0jZGVmaW5lIEZlQmVXYWl0U2V0TGF0Y2hQb3MgMQorI2RlZmluZSBG ZUJlV2FpdFNldEludGVycnVwdFBvcyAxCiAjZGVmaW5lIEZlQmVXYWl0U2V0TkV2ZW50cyAz CiAKIGV4dGVybiBpbnQJTGlzdGVuU2VydmVyUG9ydChpbnQgZmFtaWx5LCBjb25zdCBjaGFy ICpob3N0TmFtZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3Jj L2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggYTJiNjM0OTVlZWMuLmY1Yjc3M2I3OWU1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9t aXNjYWRtaW4uaApAQCAtMTkwLDcgKzE5MCw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg TXlQcm9jUGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX3RpbWVfdCBNeVN0YXJ0VGltZTsK IGV4dGVybiBQR0RMTElNUE9SVCBUaW1lc3RhbXBUeiBNeVN0YXJ0VGltZXN0YW1wOwogZXh0 ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBQb3J0ICpNeVByb2NQb3J0OwotZXh0ZXJuIFBHRExM SU1QT1JUIHN0cnVjdCBMYXRjaCAqTXlMYXRjaDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29s IE15Q2FuY2VsS2V5VmFsaWQ7CiBleHRlcm4gUEdETExJTVBPUlQgaW50MzIgTXlDYW5jZWxL ZXk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE15UE1DaGlsZFNsb3Q7CkBAIC0zMjMsOSAr MzIyLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKkRhdGFiYXNlUGF0aDsKIC8qIG5v dyBpbiB1dGlscy9pbml0L21pc2Npbml0LmMgKi8KIGV4dGVybiB2b2lkIEluaXRQb3N0bWFz dGVyQ2hpbGQodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0U3RhbmRhbG9uZVByb2Nlc3MoY29u c3QgY2hhciAqYXJndjApOwotZXh0ZXJuIHZvaWQgSW5pdFByb2Nlc3NMb2NhbExhdGNoKHZv aWQpOwotZXh0ZXJuIHZvaWQgU3dpdGNoVG9TaGFyZWRMYXRjaCh2b2lkKTsKLWV4dGVybiB2 b2lkIFN3aXRjaEJhY2tUb0xvY2FsTGF0Y2godm9pZCk7CiAKIC8qCiAgKiBNeUJhY2tlbmRU eXBlIGluZGljYXRlcyB3aGF0IGtpbmQgb2YgYSBiYWNrZW5kIHRoaXMgaXMuCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9pbnRlcnJ1cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzc5ZDYxYThmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L2ludGVycnVwdC5oCkBAIC0wLDAgKzEsMTcxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBpbnRlcnJ1cHQuaAorICoJICBJbnRlci1wcm9jZXNzIGludGVycnVwdHMKKyAq CisgKiAiSW50ZXJydXB0cyIgYXJlIGEgc2V0IG9mIGZsYWdzIHRoYXQgcmVwcmVzZW50IGNv bmRpdGlvbnMgdGhhdCBzaG91bGQgYmUKKyAqIGhhbmRsZWQgYXQgYSBsYXRlciB0aW1lLiAg VGhleSBhcmUgcm91Z2hseSBhbmFsb2dvdXMgdG8gVW5peCBzaWduYWxzLAorICogZXhjZXB0 IHRoYXQgdGhleSBhcmUgaGFuZGxlZCBjb29wZXJhdGl2ZWx5IGJ5IGNoZWNraW5nIGZvciB0 aGVtIGF0IG1hbnkKKyAqIHBvaW50cyBpbiB0aGUgY29kZS4KKyAqCisgKiBJbnRlcnJ1cHQg ZmxhZ3MgY2FuIGJlICJyYWlzZWQiIHN5bmNocm9ub3VzbHkgYnkgY29kZSB0aGF0IHdhbnRz IHRvIGRlZmVyCisgKiBhbiBhY3Rpb24sIG9yIGFzeW5jaHJvbm91c2x5IGJ5IHRpbWVyIHNp Z25hbCBoYW5kbGVycywgb3RoZXIgc2lnbmFsCisgKiBoYW5kbGVycyBvciAic2VudCIgYnkg b3RoZXIgYmFja2VuZHMgc2V0dGluZyB0aGVtIGRpcmVjdGx5LgorICoKKyAqIE1vc3QgY29k ZSBjdXJyZW50bHkgZGVhbHMgd2l0aCB0aGUgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0 LiBJdCBpcworICogcmFpc2VkIGJ5IGFueSBvZiB0aGUgZXZlbnRzIGNoZWNrZWQgYnkgQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKSwgbGlrZSBxdWVyeQorICogY2FuY2VsbGF0aW9uIG9yIGlk bGUgc2Vzc2lvbiB0aW1lb3V0LiBXZWxsIGJlaGF2ZWQgYmFja2VuZCBjb2RlIHBlcmZvcm1z CisgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpIHBlcmlvZGljYWxseSBpbiBsb25nIGNvbXB1 dGF0aW9ucywgYW5kIHNob3VsZCBuZXZlcgorICogc2xlZXAgdXNpbmcgbWVjaGFuaXNtcyBv dGhlciB0aGFuIHRoZSBXYWl0RXZlbnRTZXQgbWVjaGFuaXNtIG9yIHRoZSBtb3JlCisgKiBj b252ZW5pZW50IFdhaXRJbnRlcnJ1cHQvV2FpdFNvY2tlck9ySW50ZXJydXB0IGZ1bmN0aW9u cyAoZXhjZXB0IGZvcgorICogYm91bmRlZCBzaG9ydCBwZXJpb2RzLCBlZyBMV0xvY2sgd2Fp dHMpLCBzbyB0aGV5IHNob3VsZCByZWFjdCBpbiBnb29kIHRpbWUuCisgKgorICogVGhlICJz dGFuZGFyZCIgc2V0IG9mIGludGVycnVwdHMgaXMgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5U RVJSVVBUUygpLCBhbmQKKyAqIGNvbnNpc3RzIG9mIHRhc2tzIHRoYXQgYXJlIHNhZmUgdG8g cGVyZm9ybSBhdCBtb3N0IHRpbWVzLiAgVGhleSBjYW4gYmUKKyAqIHN1cHByZXNzZWQgYnkg SE9MRF9JTlRFUlJVUFRTKCkvUkVTVU1FX0lOVEVSUlVQVFMoKS4KKyAqCisgKgorICogVGhl IGNvcnJlY3QgcGF0dGVybiB0byB3YWl0IGZvciBldmVudChzKSB1c2luZyBJTlRFUlJVUFRf R0VORVJBTCBpczoKKyAqCisgKiBmb3IgKDs7KQorICogeworICoJICAgQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOworICoJICAgaWYgKHdvcmsgdG8gZG8pCisgKgkJICAg RG8gU3R1ZmYoKTsKKyAqCSAgIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwgLi4uKTsKKyAqIH0KKyAqCisgKiBJdCdzIGltcG9ydGFudCB0byBjbGVhciB0aGUgaW50 ZXJydXB0ICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bworICogZG8uIE90 aGVyd2lzZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBpbnRlcnJ1cHQgYmV0d2VlbiB0aGUgY2hl Y2sgYW5kIHRoZQorICogQ2xlYXJJbnRlcnJ1cHQoKSBjYWxsLCB5b3Ugd2lsbCBtaXNzIGl0 IGFuZCBXYWl0IHdpbGwgaW5jb3JyZWN0bHkgYmxvY2suCisgKgorICogQW5vdGhlciB2YWxp ZCBjb2RpbmcgcGF0dGVybiBsb29rcyBsaWtlOgorICoKKyAqIGZvciAoOzspCisgKiB7Cisg KgkgICBpZiAod29yayB0byBkbykKKyAqCQkgICBEbyBTdHVmZigpOyAvLyBpbiBwYXJ0aWN1 bGFyLCBleGl0IGxvb3AgaWYgc29tZSBjb25kaXRpb24gc2F0aXNmaWVkCisgKgkgICBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIC4uLik7CisgKgkgICBDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisgKiB9CisgKgorICogVGhpcyBpcyB1c2Vm dWwgdG8gcmVkdWNlIGludGVycnVwdCB0cmFmZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0 aGUgbG9vcCdzCisgKiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRp c2ZpZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbjsgdGhlCisgKiBjb3N0IGlzIGFuIGV4dHJh IGxvb3AgaXRlcmF0aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlzIG5vdC4gIFdoYXQg bXVzdAorICogYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3MgZm9yIGFzeW5jaHJv bm91cyBldmVudHMgYWZ0ZXIKKyAqIFdhaXRJbnRlcnJ1cHQgYW5kIGJlZm9yZSBDbGVhcklu dGVycnVwdCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uCisgKgorICogVG8g d2FrZSB1cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBv ciBzb21ldGhpbmcgZWxzZQorICogdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAi aWYgKHdvcmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAorICogU2VuZEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCkgKmFmdGVyKiB0aGF0LiBTZW5kSW50ZXJydXB0IGlzIGRlc2lnbmVk IHRvCisgKiByZXR1cm4gcXVpY2tseSBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgc2V0 LiBJbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zCisgKiB3aXRoIG5lc3RlZCBsb29wcyB0aGF0 IGNhbiBjb25zdW1lIGRpZmZlcmVudCBldmVudHMsIHlvdSBjYW4gZGVmaW5lIHlvdXIKKyAq IG93biBJTlRFUlJVUFRfKiBmbGFnIGluc3RlYWQgb2YgcmVseWluZyBvbiBJTlRFUlJVUFRf R0VORVJBTC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1 cHQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU1RPUkFH RV9JTlRFUlJVUFRfSAorI2RlZmluZSBTVE9SQUdFX0lOVEVSUlVQVF9ICisKKyNpbmNsdWRl ICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgorCisjaW5jbHVkZSA8c2lnbmFsLmg+ CisKK2V4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpNeVBlbmRpbmdJbnRl cnJ1cHRzOworCisvKgorICogRmxhZ3MgaW4gdGhlIHBlbmRpbmcgaW50ZXJydXB0cyBiaXRt YXNrLiBFYWNoIHZhbHVlIHJlcHJlc2VudHMgb25lIGJpdCBpbgorICogdGhlIGJpdG1hc2su CisgKi8KK3R5cGVkZWYgZW51bQoreworCS8qCisJICogU0xFRVBJTkdfT05fSU5URVJSVVBU UyBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFja2VuZCBpcyBjdXJyZW50bHkgYmxvY2tlZAorCSAq IHdhaXRpbmcgZm9yIGFuIGludGVycnVwdC4gSWYgaXQncyBzZXQsIHRoZSBiYWNrZW5kIG5l ZWRzIHRvIGJlIHdva2VuIHVwCisJICogd2hlbiBhIGJpdCBpbiB0aGUgcGVuZGluZyBpbnRl cnJ1cHRzIG1hc2sgaXMgc2V0LiBJdCdzIHVzZWQgaW50ZXJuYWxseQorCSAqIGJ5IHRoZSBp bnRlcnJ1cHQgbWFjaGluZXJ5LCBhbmQgY2Fubm90IGJlIHVzZWQgZGlyZWN0bHkgaW4gdGhl IHB1YmxpYworCSAqIGZ1bmN0aW9ucy4gSXQncyBuYW1lZCBkaWZmZXJlbnRseSB0byBkaXN0 aW5ndWlzaCBpdCBmcm9tIHRoZSBhY3R1YWwKKwkgKiBpbnRlcnJ1cHQgZmxhZ3MuCisJICov CisJU0xFRVBJTkdfT05fSU5URVJSVVBUUyA9IDAsCisKKwkvKgorCSAqIElOVEVSUlVQVF9H RU5FUkFMIGlzIG11bHRpcGxleGVkIGZvciBtYW55IHJlYXNvbnMsIGxpa2UgcXVlcnkKKwkg KiBjYW5jZWxsYXRpb24gdGVybWluYXRpb24gcmVxdWVzdHMsIHJlY292ZXJ5IGNvbmZsaWN0 cywgYW5kIGNvbmZpZworCSAqIHJlbG9hZCByZXF1ZXN0cy4gIFVwb24gcmVjZWl2aW5nIElO VEVSUlVQVF9HRU5FUkFMLCB5b3Ugc2hvdWxkIGNhbGwKKwkgKiBDSEVDS19GT1JfSU5URVJS VVBUUygpIHRvIHByb2Nlc3MgdGhvc2UgcmVxdWVzdHMuICBJdCBpcyBhbHNvIHVzZWQgZm9y CisJICogdmFyaW91cyBvdGhlciBjb250ZXh0LWRlcGVuZGVudCBwdXJwb3NlcywgYnV0IG5v dGUgdGhhdCBpZiBpdCdzIHVzZWQgdG8KKwkgKiB3YWtlIHVwIGZvciBvdGhlciByZWFzb25z LCB5b3UgbXVzdCBzdGlsbCBjYWxsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKKwkgKiBvbmNl IHBlciBpdGVyYXRpb24uCisJICovCisJSU5URVJSVVBUX0dFTkVSQUwsCisKKwkvKgorCSAq IElOVEVSUlVQVF9SRUNPVkVSWV9XQUtFVVAgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAg cHJvY2VzcywgdG8gdGVsbAorCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCBy ZXBsYXkuIEl0J3Mgc2VudCBieSBXQUwgcmVjZWl2ZXIgd2hlbgorCSAqIG1vcmUgV0FMIGFy cml2ZXMsIG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KKwkgKi8KKwlJTlRFUlJV UFRfUkVDT1ZFUllfQ09OVElOVUUsCit9IEludGVycnVwdFR5cGU7CisKKy8qCisgKiBUZXN0 IGFuIGludGVycnVwdCBmbGFnLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVycnVw dElzUGVuZGluZyhJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK3sKKwlyZXR1cm4gKHBnX2F0b21p Y19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmICgxIDw8IHJlYXNvbikpICE9IDA7 Cit9CisKKy8qCisgKiBUZXN0IGFuIGludGVycnVwdCBmbGFnLgorICovCitzdGF0aWMgaW5s aW5lIGJvb2wKK0ludGVycnVwdHNQZW5kaW5nKHVpbnQzMiBtYXNrKQoreworCXJldHVybiAo cGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgKG1hc2spKSAhPSAw OworfQorCisvKgorICogQ2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorQ2xlYXJJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJ cGdfYXRvbWljX2ZldGNoX2FuZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywgfigxIDw8IHJl YXNvbikpOworfQorCisvKgorICogVGVzdCBhbmQgY2xlYXIgYW4gaW50ZXJydXB0IGZsYWcu CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ29uc3VtZUludGVycnVwdChJbnRlcnJ1cHRU eXBlIHJlYXNvbikKK3sKKwlpZiAobGlrZWx5KCFJbnRlcnJ1cHRJc1BlbmRpbmcocmVhc29u KSkpCisJCXJldHVybiBmYWxzZTsKKworCUNsZWFySW50ZXJydXB0KHJlYXNvbik7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKworZXh0ZXJuIHZvaWQgUmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0 VHlwZSByZWFzb24pOworZXh0ZXJuIHZvaWQgU2VuZEludGVycnVwdChJbnRlcnJ1cHRUeXBl IHJlYXNvbiwgUHJvY051bWJlciBwZ3Byb2Nubyk7CitleHRlcm4gaW50CVdhaXRJbnRlcnJ1 cHQodWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQs CisJCQkJCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGludAlXYWl0SW50 ZXJydXB0T3JTb2NrZXQodWludDMyIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBw Z3NvY2tldCBzb2NrLAorCQkJCQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZl bnRfaW5mbyk7CitleHRlcm4gdm9pZCBTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKTsK K2V4dGVybiB2b2lkIFN3aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2 b2lkIEluaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KHZvaWQpOworCisjZW5kaWYKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvbGF0Y2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQxZGM3MDc4NWEu LjAwMDAwMDAwMDAwCi0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAorKysgL2Rl di9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0g KiBsYXRjaC5oCi0gKgkgIFJvdXRpbmVzIGZvciBpbnRlcnByb2Nlc3MgbGF0Y2hlcwotICoK LSAqIEEgbGF0Y2ggaXMgYSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJhdGlvbnMgdGhh dCBsZXQgcHJvY2Vzc2VzIHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEgbGF0Y2ggY2Fu IGJlIHNldCBmcm9tIGFub3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAqIGhhbmRsZXIg d2l0aGluIHRoZSBzYW1lIHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGludGVyZmFjZSBp cyBhIHJlbGlhYmxlIHJlcGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRlcm4gb2YKLSAq IHVzaW5nIHBnX3VzbGVlcCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwgYSBzaWduYWwg YXJyaXZlcywgd2hlcmUgdGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJp YWJsZS4gQmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21pbmcgc2lnbmFs IGRvZXNuJ3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUg aXQKLSAqIGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgc2lnbmFsIGFy cml2ZXMganVzdCBiZWZvcmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhlIGNvbW1vbiBw YXR0ZXJuIG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xsIHRoZSBmbGFn IHZhcmlhYmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZlbnRlZCB0byBz b2x2ZQotICogdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxlIGVub3VnaC4g TGF0Y2hlcyBhcmUgZGVzaWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25z LCBhbGxvd2luZyB5b3UgdG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAotICogZW5zdXJp bmcgcXVpY2sgcmVzcG9uc2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nlc3Nlcy4KLSAq Ci0gKiBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFuZCBzaGFyZWQu IEEgbG9jYWwgbGF0Y2ggaXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRjaCwgYW5kIGNh biBvbmx5IGJlIHNldCBmcm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxvY2FsIGxhdGNo IGNhbiBiZSB1c2VkIHRvIHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwgYnkgY2FsbGlu ZwotICogU2V0TGF0Y2ggaW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJlZCBsYXRjaCBy ZXNpZGVzIGluIHNoYXJlZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0aWFsaXplZCBh dCBwb3N0bWFzdGVyIHN0YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZvcmUKLSAqIGEg c2hhcmVkIGxhdGNoIGNhbiBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNzb2NpYXRlZCB3 aXRoIGEgcHJvY2VzcwotICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJvY2VzcyBvd25p bmcgdGhlIGxhdGNoIGNhbiB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9jZXNzIGNhbiBz ZXQgaXQuCi0gKgotICogVGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlvbnMgb24gYSBs YXRjaDoKLSAqCi0gKiBTZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICogUmVzZXRMYXRj aAktIENsZWFycyB0aGUgbGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBhZ2FpbgotICog V2FpdExhdGNoCS0gV2FpdHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0Ci0gKgotICog V2FpdExhdGNoIGluY2x1ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hv dWxkIGJlIGF2b2lkZWQKLSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0cmEg b3ZlcmhlYWQpIGFuZCBhIHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIgY2hpbGQgcHJv Y2Vzc2VzIHRvIHdha2UgdXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4KLSAq IFNlZSBsYXRjaC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9y dGVkIGZ1bmN0aW9ucy4KLSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9y IGV2ZW50KHMpIGlzOgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBSZXNldExhdGNo KCk7Ci0gKgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOwotICoJICAg V2FpdExhdGNoKCk7Ci0gKiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8gcmVzZXQgdGhl IGxhdGNoICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwotICogZG8uIE90 aGVyd2lzZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRoZSBjaGVjayBh bmQgdGhlCi0gKiBSZXNldExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQg d2lsbCBpbmNvcnJlY3RseSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlkIGNvZGluZyBw YXR0ZXJuIGxvb2tzIGxpa2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAqCSAgIGlmICh3 b3JrIHRvIGRvKQotICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQg bG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRMYXRjaCgpOwot ICoJICAgUmVzZXRMYXRjaCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNlZnVsIHRvIHJl ZHVjZSBsYXRjaCB0cmFmZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCi0g KiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhl IGZpcnN0IGl0ZXJhdGlvbjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0 aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQgbXVzdCBiZSBh dm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3VzIGV2ZW50cyBh ZnRlcgotICogV2FpdExhdGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMgdGhhdCBjcmVh dGVzIGEgcmFjZSBjb25kaXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUgd2FpdGVyLCB5 b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcKLSAqIGVsc2Ug dGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8gZG8pIiBwYXJ0 LCBhbmQgY2FsbAotICogU2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRjaCBpcyBkZXNp Z25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFscmVhZHkgc2V0 LgotICoKLSAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90IGludGVycnVw dCB0aGUgbGF0Y2ggd2FpdCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMuICBUaGVyZWZv cmUsIGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRoYXQKLSAqIGlz IG1lYW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNldExhdGNoLgot ICoKLSAqIE5vdGUgdGhhdCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBHUFJPQy5wcm9j TGF0Y2gpIGlzIGdlbmVyYWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9jIHNoYXJlZCBs YXRjaCBmb3Igc2lnbmFsaW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlzIGlzCi0gKiBi ZWNhdXNlIGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRMYXRjaCBvbiB0 aGUgcHJvY2VzcyBsYXRjaAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNoIG90aGVyIHRo YW4gdGhlIHByb2Nlc3MgbGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0gKiB1c2Ugb2Yg YW55IGdlbmVyaWMgaGFuZGxlci4KLSAqCi0gKgotICogU2VlIGFsc28gV2FpdEV2ZW50U2V0 cyBpbiB3YWl0ZXZlbnRzZXQuaC4gVGhleSBhbGxvdyB0byB3YWl0IGZvciBsYXRjaGVzCi0g KiBiZWluZyBzZXQgYW5kIGFkZGl0aW9uYWwgZXZlbnRzIC0gcG9zdG1hc3RlciBkeWluZyBh bmQgc29ja2V0IHJlYWRpbmVzcyBvZgotICogc2V2ZXJhbCBzb2NrZXRzIGN1cnJlbnRseSAt IGF0IHRoZSBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBhCi0gKiBsb25n IGxpdmVkIGV2ZW50IHNldCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5nIFdhaXRMYXRj aCBvcgotICogV2FpdExhdGNoT3JTb2NrZXQuCi0gKgotICoKLSAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNo LmgKLSAqCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotI2lmbmRlZiBMQVRDSF9ICi0j ZGVmaW5lIExBVENIX0gKLQotI2luY2x1ZGUgPHNpZ25hbC5oPgotCi0jaW5jbHVkZSAic3Rv cmFnZS93YWl0ZXZlbnRzZXQuaCIJLyogZm9yIFdMXyogYXJndW1lbnRzIHRvIFdhaXRMYXRj aCAqLwotCi0vKgotICogTGF0Y2ggc3RydWN0dXJlIHNob3VsZCBiZSB0cmVhdGVkIGFzIG9w YXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCi0gKiB0aGUgcHVibGljIGZ1bmN0aW9u cy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVtYmVkZGluZyBMYXRjaGVzIGFzCi0g KiBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3RzLgotICovCi10eXBlZGVmIHN0cnVjdCBMYXRjaAot ewotCXNpZ19hdG9taWNfdCBpc19zZXQ7Ci0Jc2lnX2F0b21pY190IG1heWJlX3NsZWVwaW5n OwotCWJvb2wJCWlzX3NoYXJlZDsKLQlpbnQJCQlvd25lcl9waWQ7Ci0jaWZkZWYgV0lOMzIK LQlIQU5ETEUJCWV2ZW50OwotI2VuZGlmCi19IExhdGNoOwotCi0vKgotICogcHJvdG90eXBl cyBmb3IgZnVuY3Rpb25zIGluIGxhdGNoLmMKLSAqLwotZXh0ZXJuIHZvaWQgSW5pdExhdGNo KExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBJbml0U2hhcmVkTGF0Y2goTGF0Y2ggKmxh dGNoKTsKLWV4dGVybiB2b2lkIE93bkxhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9p ZCBEaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgU2V0TGF0Y2goTGF0 Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKTsKLQot ZXh0ZXJuIGludAlXYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgbG9u ZyB0aW1lb3V0LAotCQkJCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwotZXh0ZXJuIGlu dAlXYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLAotCQkJ CQkJCSAgcGdzb2NrZXQgc29jaywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudF9p bmZvKTsKLWV4dGVybiB2b2lkIEluaXRpYWxpemVMYXRjaFdhaXRTZXQodm9pZCk7Ci0KLSNl bmRpZgkJCQkJCQkvKiBMQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDExNGViMWY4 Zjc2Li4zYTkyMjFjZmJjNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTE3LDcgKzE3LDYgQEAK ICNpbmNsdWRlICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5o IgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NlbWEu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0X3R5cGVzLmgiCkBAIC0xNzMsOSArMTcy LDYgQEAgc3RydWN0IFBHUFJPQwogCVBHU2VtYXBob3JlIHNlbTsJCQkvKiBPTkUgc2VtYXBo b3JlIHRvIHNsZWVwIG9uICovCiAJUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1czsKIAotCUxh dGNoCQlwcm9jTGF0Y2g7CQkvKiBnZW5lcmljIGxhdGNoIGZvciBwcm9jZXNzICovCi0KLQog CVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIGlkIG9mIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBj dXJyZW50bHkgYmVpbmcKIAkJCQkJCQkJICogZXhlY3V0ZWQgYnkgdGhpcyBwcm9jLCBpZiBy dW5uaW5nIGFuZCBYSUQKIAkJCQkJCQkJICogaXMgYXNzaWduZWQ7IGVsc2UgSW52YWxpZFRy YW5zYWN0aW9uSWQuCkBAIC0zMTEsNiArMzA3LDEzIEBAIHN0cnVjdCBQR1BST0MKIAlQR1BS T0MJICAgKmxvY2tHcm91cExlYWRlcjsJLyogbG9jayBncm91cCBsZWFkZXIsIGlmIEknbSBh IG1lbWJlciAqLwogCWRsaXN0X2hlYWQJbG9ja0dyb3VwTWVtYmVyczsJLyogbGlzdCBvZiBt ZW1iZXJzLCBpZiBJJ20gYSBsZWFkZXIgKi8KIAlkbGlzdF9ub2RlCWxvY2tHcm91cExpbms7 CS8qIG15IG1lbWJlciBsaW5rLCBpZiBJJ20gYSBtZW1iZXIgKi8KKworCXBnX2F0b21pY191 aW50MzIgcGVuZGluZ0ludGVycnVwdHM7CisKKyNpZmRlZiBXSU4zMgorCS8qIEV2ZW50IGhh bmRsZSB0byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdoZW4gc2VuZGluZyBhbiBpbnRlcnJ1cHQg Ki8KKwlIQU5ETEUJCWludGVycnVwdFdha2V1cEV2ZW50OworI2VuZGlmCiB9OwogCiAvKiBO T1RFOiAidHlwZWRlZiBzdHJ1Y3QgUEdQUk9DIFBHUFJPQyIgYXBwZWFycyBpbiBzdG9yYWdl L2xvY2suaC4gKi8KQEAgLTQxMyw2ICs0MTYsOCBAQCB0eXBlZGVmIHN0cnVjdCBQUk9DX0hE UgogCSAqLwogCVByb2NOdW1iZXIJd2Fsd3JpdGVyUHJvYzsKIAlQcm9jTnVtYmVyCWNoZWNr cG9pbnRlclByb2M7CisJUHJvY051bWJlcgl3YWxyZWNlaXZlclByb2M7CisJUHJvY051bWJl cglzdGFydHVwUHJvYzsKIAogCS8qIEN1cnJlbnQgc2hhcmVkIGVzdGltYXRlIG9mIGFwcHJv cHJpYXRlIHNwaW5zX3Blcl9kZWxheSB2YWx1ZSAqLwogCWludAkJCXNwaW5zX3Blcl9kZWxh eTsKQEAgLTQ5MCw5ICs0OTUsNiBAQCBleHRlcm4gdm9pZCBQcm9jTG9ja1dha2V1cChMb2Nr TWV0aG9kIGxvY2tNZXRob2RUYWJsZSwgTE9DSyAqbG9jayk7CiBleHRlcm4gdm9pZCBDaGVj a0RlYWRMb2NrQWxlcnQodm9pZCk7CiBleHRlcm4gdm9pZCBMb2NrRXJyb3JDbGVhbnVwKHZv aWQpOwogCi1leHRlcm4gdm9pZCBQcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVu dF9pbmZvKTsKLWV4dGVybiB2b2lkIFByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051 bWJlcik7Ci0KIGV4dGVybiBQR1BST0MgKkF1eGlsaWFyeVBpZEdldFByb2MoaW50IHBpZCk7 CiAKIGV4dGVybiB2b2lkIEJlY29tZUxvY2tHcm91cExlYWRlcih2b2lkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3dhaXRldmVudHNldC5oCmluZGV4IDk5NDc0OTFiNjE5Li42MGVjZWNiNzg1YyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCkBAIC0zLDE4ICszLDE3IEBACiAg KiB3YWl0ZXZlbnRzZXQuaAogICoJCXBwb2xsKCkgLyBwc2VsZWN0KCkgbGlrZSBpbnRlcmZh Y2UgZm9yIHdhaXRpbmcgZm9yIGV2ZW50cwogICoKLSAqIFdhaXRFdmVudFNldHMgYWxsb3cg dG8gd2FpdCBmb3IgbGF0Y2hlcyBiZWluZyBzZXQgYW5kIGFkZGl0aW9uYWwgZXZlbnRzIC0K KyAqIFdhaXRFdmVudFNldHMgYWxsb3cgdG8gd2FpdCBmb3IgaW50ZXJydXB0cyBiZWluZyBz ZXQgYW5kIGFkZGl0aW9uYWwgZXZlbnRzIC0KICAqIHBvc3RtYXN0ZXIgZHlpbmcgYW5kIHNv Y2tldCByZWFkaW5lc3Mgb2Ygc2V2ZXJhbCBzb2NrZXRzIGN1cnJlbnRseSAtIGF0IHRoZQog ICogc2FtZSB0aW1lLiAgT24gbWFueSBwbGF0Zm9ybXMgdXNpbmcgYSBsb25nIGxpdmVkIGV2 ZW50IHNldCBpcyBtb3JlCiAgKiBlZmZpY2llbnQgdGhhbiB1c2luZyBXYWl0TGF0Y2ggb3Ig V2FpdExhdGNoT3JTb2NrZXQuCiAgKgotICogV2FpdEV2ZW50U2V0V2FpdCBpbmNsdWRlcyBh IHByb3Zpc2lvbiBmb3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCisgKiBX YWl0SW50ZXJydXB0IGluY2x1ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2gg c2hvdWxkIGJlIGF2b2lkZWQKICAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5jdXIgZXh0 cmEgb3ZlcmhlYWQpIGFuZCBhIHByb3Zpc2lvbiBmb3IgcG9zdG1hc3RlcgogICogY2hpbGQg cHJvY2Vzc2VzIHRvIHdha2UgdXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBkZWF0aC4g IFNlZQotICogc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMgZm9yIGRldGFpbGVkIHNwZWNp ZmljYXRpb25zIGZvciB0aGUgZXhwb3J0ZWQKKyAqIHN0b3JhZ2UvaXBjL2ludGVycnVwdC5j IGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkCiAgKiBmdW5j dGlvbnMuCiAgKgotICoKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK ICAqCkBAIC0yNSwxMyArMjQsMTYgQEAKICNpZm5kZWYgV0FJVEVWRU5UU0VUX0gKICNkZWZp bmUgV0FJVEVWRU5UU0VUX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jbnVtYmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIAog LyoKLSAqIEJpdG1hc2tzIGZvciBldmVudHMgdGhhdCBtYXkgd2FrZS11cCBXYWl0TGF0Y2go KSwgV2FpdExhdGNoT3JTb2NrZXQoKSwgb3IKLSAqIFdhaXRFdmVudFNldFdhaXQoKS4KKyAq IEJpdG1hc2tzIGZvciBldmVudHMgdGhhdCBtYXkgd2FrZS11cCBXYWl0SW50ZXJydXB0KCks CisgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSwgb3IgV2FpdEV2ZW50U2V0V2FpdCgpLgog ICovCi0jZGVmaW5lIFdMX0xBVENIX1NFVAkJICgxIDw8IDApCisjZGVmaW5lIFdMX0lOVEVS UlVQVAkJICgxIDw8IDApCiAjZGVmaW5lIFdMX1NPQ0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkK ICNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikKICNkZWZpbmUgV0xfVElN RU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNldFdhaXQoKSAqLwpAQCAt NjcsMzEgKzY5LDM1IEBAIHR5cGVkZWYgc3RydWN0IFdhaXRFdmVudAogI2VuZGlmCiB9IFdh aXRFdmVudDsKIAotLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgZXhwb3Npbmcg d2FpdGV2ZW50c2V0LmMgaW1wbGVtZW50YXRpb24gZGV0YWlscyAqLworLyogZm9yd2FyZCBk ZWNsYXJhdGlvbiB0byBhdm9pZCBleHBvc2luZyBpbnRlcnJ1cHQuYyBpbXBsZW1lbnRhdGlv biBkZXRhaWxzICovCiB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRTZXQgV2FpdEV2ZW50U2V0 OwogCi10eXBlZGVmIHN0cnVjdCBMYXRjaCBMYXRjaDsKK3N0cnVjdCBQR1BST0M7CiAKIC8q CiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gd2FpdGV2ZW50c2V0LmMKICAqLwog ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCk7CisjaWZkZWYg V0lOMzIKK2V4dGVybiBIQU5ETEUgQ3JlYXRlU2hhcmVkV2FrZXVwSGFuZGxlKHZvaWQpOwor I2VuZGlmCiAKIGV4dGVybiBXYWl0RXZlbnRTZXQgKkNyZWF0ZVdhaXRFdmVudFNldChSZXNv dXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cyk7CiBleHRlcm4gdm9pZCBGcmVlV2Fp dEV2ZW50U2V0KFdhaXRFdmVudFNldCAqc2V0KTsKIGV4dGVybiB2b2lkIEZyZWVXYWl0RXZl bnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpOwogZXh0ZXJuIGludAlBZGRXYWl0 RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQg ZmQsCi0JCQkJCQkJICBMYXRjaCAqbGF0Y2gsIHZvaWQgKnVzZXJfZGF0YSk7Ci1leHRlcm4g dm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQz MiBldmVudHMsIExhdGNoICpsYXRjaCk7CisJCQkJCQkJICB1aW50MzIgaW50ZXJydXB0TWFz aywgdm9pZCAqdXNlcl9kYXRhKTsKK2V4dGVybiB2b2lkIE1vZGlmeVdhaXRFdmVudChXYWl0 RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywgdWludDMyIGludGVycnVw dE1hc2spOworCiBleHRlcm4gaW50CVdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpz ZXQsIGxvbmcgdGltZW91dCwKIAkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9ldmVudHMs IGludCBuZXZlbnRzLAogCQkJCQkJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKK2V4dGVy biB2b2lkIEluaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KHZvaWQpOwogZXh0ZXJuIGludAlH ZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0RXZlbnRTZXQgKnNldCk7CiBleHRlcm4g Ym9vbCBXYWl0RXZlbnRTZXRDYW5SZXBvcnRDbG9zZWQodm9pZCk7CiAKLSNpZm5kZWYgV0lO MzIKKy8qIGxvdyBsZXZlbCBmdW5jdGlvbnMgdXNlZCB0byBpbXBsZW1lbnQgU2VuZEludGVy cnVwdCAqLwogZXh0ZXJuIHZvaWQgV2FrZXVwTXlQcm9jKHZvaWQpOwotZXh0ZXJuIHZvaWQg V2FrZXVwT3RoZXJQcm9jKGludCBwaWQpOwotI2VuZGlmCitleHRlcm4gdm9pZCBXYWtldXBP dGhlclByb2Moc3RydWN0IFBHUFJPQyAqcHJvYyk7CiAKICNlbmRpZgkJCQkJCQkvKiBXQUlU RVZFTlRTRVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdzbGVlcC5jIGIvc3JjL3Bv cnQvcGdzbGVlcC5jCmluZGV4IGRmZTgyNGZlNDYyLi40MDRkNDA4NjA1NyAxMDA2NDQKLS0t IGEvc3JjL3BvcnQvcGdzbGVlcC5jCisrKyBiL3NyYy9wb3J0L3Bnc2xlZXAuYwpAQCAtMzIs MTAgKzMyLDEwIEBACiAgKgogICogQ0FVVElPTjogSXQncyBub3QgYSBnb29kIGlkZWEgdG8g dXNlIGxvbmcgc2xlZXBzIGluIHRoZSBiYWNrZW5kLiAgVGhleSB3aWxsCiAgKiBzaWxlbnRs eSByZXR1cm4gZWFybHkgaWYgYSBzaWduYWwgaXMgY2F1Z2h0LCBidXQgdGhhdCBkb2Vzbid0 IGluY2x1ZGUKLSAqIGxhdGNoZXMgYmVpbmcgc2V0IG9uIG1vc3QgT1NlcywgYW5kIGV2ZW4g c2lnbmFsIGhhbmRsZXJzIHRoYXQgc2V0IE15TGF0Y2gKLSAqIG1pZ2h0IGhhcHBlbiB0byBy dW4gYmVmb3JlIHRoZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBmdWxsIGRlbGF5Lgot ICogQmV0dGVyIHByYWN0aWNlIGlzIHRvIHVzZSBXYWl0TGF0Y2goKSB3aXRoIGEgdGltZW91 dCwgc28gdGhhdCBiYWNrZW5kcwotICogcmVzcG9uZCB0byBsYXRjaGVzIGFuZCBzaWduYWxz IHByb21wdGx5LgorICogaW50ZXJydXB0cyBiZWluZyBzZXQgb24gbW9zdCBPU2VzLCBhbmQg ZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhhdCByYWlzZSBhbgorICogaW50ZXJydXB0IG1pZ2h0 IGhhcHBlbiB0byBydW4gYmVmb3JlIHRoZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBm dWxsCisgKiBkZWxheS4gIEJldHRlciBwcmFjdGljZSBpcyB0byB1c2UgV2FpdEludGVycnVw dCgpIHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0CisgKiBiYWNrZW5kcyByZXNwb25kIHRvIGlu dGVycnVwdHMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCiAgKi8KIHZvaWQKIHBnX3VzbGVlcChs b25nIG1pY3Jvc2VjKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bnRlc3Rlci5jIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCmluZGV4 IGUwMWMwYzlkZTkzLi4wMzA3ODA3ODg5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2lzb2xhdGlvbnRlc3Rlci5jCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b250ZXN0ZXIuYwpAQCAtNzYyLDcgKzc2Miw3IEBAIHRyeV9jb21wbGV0ZV9zdGVwcyhUZXN0 U3BlYyAqdGVzdHNwZWMsIFBlcm11dGF0aW9uU3RlcCAqKndhaXRpbmcsCiAJewogCQlpbnQJ CQl3ID0gMDsKIAotCQkvKiBSZXNldCBsYXRjaDsgd2Ugb25seSBjYXJlIGFib3V0IG5vdGlj ZXMgcmVjZWl2ZWQgd2l0aGluIGxvb3AuICovCisJCS8qIFJlc2V0IGZsYWc7IHdlIG9ubHkg Y2FyZSBhYm91dCBub3RpY2VzIHJlY2VpdmVkIHdpdGhpbiBsb29wLiAqLwogCQlhbnlfbmV3 X25vdGljZSA9IGZhbHNlOwogCiAJCS8qIExpa2V3aXNlLCB0aGVzZSB2YXJpYWJsZXMgcmVz ZXQgZm9yIGVhY2ggcmV0cnkuICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc2htX21xL3NldHVwLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVw LmMKaW5kZXggMmEyMGZmYjEyNzMuLmQxOGIyZjJmYTg3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NobV9tcS9zZXR1cC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dv cmtlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAidGVzdF9zaG1fbXEuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgpAQCAtMjg1LDExICsyODYsMTEgQEAgd2FpdF9mb3Jfd29ya2Vy c190b19iZWNvbWVfcmVhZHkod29ya2VyX3N0YXRlICp3c3RhdGUsCiAJCQl3ZV9iZ3dvcmtl cl9zdGFydHVwID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJUZXN0U2htTXFCZ1dvcmtlclN0 YXJ0dXAiKTsKIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAs Ci0JCQkJCQkgd2VfYmd3b3JrZXJfc3RhcnR1cCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsIDAsCisJCQkJCQkJIHdlX2Jnd29ya2VyX3N0YXJ0dXApOwogCi0JCS8qIFJlc2V0 IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8K KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8qIEFuIGludGVy cnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc2htX21xL3Rlc3QuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5j CmluZGV4IDQ0MzI4MWFkZGQwLi5jZTkxZDc0Y2EyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NobV9tcS90ZXN0LmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJmbWdyLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ2YXJhdHQuaCIKIAogI2luY2x1ZGUg InRlc3Rfc2htX21xLmgiCkBAIC0yMzQsMTMgKzIzNSwxMyBAQCB0ZXN0X3NobV9tcV9waXBl bGluZWQoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkJLyoKIAkJCSAqIElmIHdlIG1hZGUgbm8g cHJvZ3Jlc3MsIHdhaXQgZm9yIG9uZSBvZiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHRvCi0JCQkg KiB3aGljaCB3ZSBhcmUgY29ubmVjdGVkIHRvIHNldCBvdXIgbGF0Y2gsIGluZGljYXRpbmcg dGhhdCB0aGV5Ci0JCQkgKiBoYXZlIHJlYWQgb3Igd3JpdHRlbiBkYXRhIGFuZCB0aGVyZWZv cmUgdGhlcmUgbWF5IG5vdyBiZSB3b3JrCi0JCQkgKiBmb3IgdXMgdG8gZG8uCisJCQkgKiB3 aGljaCB3ZSBhcmUgY29ubmVjdGVkIHRvIHNlbmQgdXMgYW4gaW50ZXJydXB0LCBpbmRpY2F0 aW5nIHRoYXQKKwkJCSAqIHRoZXkgaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhl cmVmb3JlIHRoZXJlIG1heSBub3cgYmUKKwkJCSAqIHdvcmsgZm9yIHVzIHRvIGRvLgogCQkJ ICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOwotCQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJS VVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJCQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwppbmRleCA5NmNkMzA0ZGJiYy4uODc2 YjVmYjlhZDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29y a2VyLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwpAQCAt MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIHRlc3Rfc2htX21xX21h aW4oRGF0dW0gbWFpbl9hcmcpCiAJCWVsb2coREVCVUcxLCAicmVnaXN0cmFudCBiYWNrZW5k IGhhcyBleGl0ZWQgcHJlbWF0dXJlbHkiKTsKIAkJcHJvY19leGl0KDEpOwogCX0KLQlTZXRM YXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJlZ2lzdHJhbnQpKTsKIAogCS8qIERv IHRoZSB3b3JrLiAqLwogCWNvcHlfbWVzc2FnZXMoaW5xaCwgb3V0cWgpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0 L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKaW5kZXggMWU0ZTgxMzMxNGYuLmJh NDEwZjkzYTkyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29y a2VyX3NwaS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3Bp LmMKQEAgLTUsNyArNSw3IEBACiAgKgkJcGF0dGVybnM6IGVzdGFibGlzaGluZyBhIGRhdGFi YXNlIGNvbm5lY3Rpb247IHN0YXJ0aW5nIGFuZCBjb21taXR0aW5nCiAgKgkJdHJhbnNhY3Rp b25zOyB1c2luZyBHVUMgdmFyaWFibGVzLCBhbmQgaGVlZGluZyBTSUdIVVAgdG8gcmVyZWFk CiAgKgkJdGhlIGNvbmZpZ3VyYXRpb24gZmlsZTsgcmVwb3J0aW5nIHRvIHBnX3N0YXRfYWN0 aXZpdHk7IHVzaW5nIHRoZQotICoJCXByb2Nlc3MgbGF0Y2ggdG8gc2xlZXAgYW5kIGV4aXQg aW4gY2FzZSBvZiBwb3N0bWFzdGVyIGRlYXRoLgorICoJCVdhaXRJbnRlcnJ1cHQgdG8gc2xl ZXAgYW5kIGV4aXQgaW4gY2FzZSBvZiBwb3N0bWFzdGVyIGRlYXRoLgogICoKICAqIFRoaXMg Y29kZSBjb25uZWN0cyB0byBhIGRhdGFiYXNlLCBjcmVhdGVzIGEgc2NoZW1hIGFuZCB0YWJs ZSwgYW5kIHN1bW1hcml6ZXMKICAqIHRoZSBudW1iZXJzIGNvbnRhaW5lZCB0aGVyZWluLiAg VG8gc2VlIGl0IHdvcmtpbmcsIGluc2VydCBhbiBpbml0aWFsIHZhbHVlCkBAIC0yNiw3ICsy Niw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9i Z3dvcmtlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmgi Ci0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAKIC8qIHRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhpcyBwYXJ0aWN1bGFy IHdvcmtlcidzIGNvZGUgKi8KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgpAQCAtMjEzLDE1 ICsyMTMsMTUgQEAgd29ya2VyX3NwaV9tYWluKERhdHVtIG1haW5fYXJnKQogCiAJCS8qCiAJ CSAqIEJhY2tncm91bmQgd29ya2VycyBtdXN0bid0IGNhbGwgdXNsZWVwKCkgb3IgYW55IGRp cmVjdCBlcXVpdmFsZW50OgotCQkgKiBpbnN0ZWFkLCB0aGV5IG1heSB3YWl0IG9uIHRoZWly IHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNsZWVwcyBhcwotCQkgKiBuZWNlc3NhcnksIGJ1dCBp cyBhd2FrZW5lZCBpZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdheSB0aGUKLQkJICogYmFj a2dyb3VuZCBwcm9jZXNzIGdvZXMgYXdheSBpbW1lZGlhdGVseSBpbiBhbiBlbWVyZ2VuY3ku CisJCSAqIGluc3RlYWQsIHRoZXkgbWF5IHVzZSBXYWl0SW50ZXJydXB0LCB3aGljaCBzbGVl cHMgYXMgbmVjZXNzYXJ5LCBidXQKKwkJICogaXMgYXdha2VuZWQgaWYgcG9zdG1hc3RlciBk aWVzLiAgVGhhdCB3YXkgdGhlIGJhY2tncm91bmQgcHJvY2VzcworCQkgKiBnb2VzIGF3YXkg aW1tZWRpYXRlbHkgaW4gYW4gZW1lcmdlbmN5LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAotCQkJCQkJIHdvcmtlcl9zcGlfbmFwdGltZSAqIDEwMDBMLAotCQkJ CQkJIHdvcmtlcl9zcGlfd2FpdF9ldmVudF9tYWluKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkJIHdvcmtlcl9zcGlfbmFwdGltZSAqIDEwMDBMLAorCQkJCQkJCSB3b3JrZXJf c3BpX3dhaXRfZXZlbnRfbWFpbik7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IDk4NDAwNjA5OTdmLi45M2NmM2VhMzFkZCAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNzEsNiArMTI3MSw3IEBAIEludGVnZXIKIEludGVn ZXJTZXQKIEludGVybmFsRGVmYXVsdEFDTAogSW50ZXJuYWxHcmFudAorSW50ZXJydXB0VHlw ZQogSW50ZXJ2YWwKIEludGVydmFsQWdnU3RhdGUKIEludG9DbGF1c2UKQEAgLTE1MDksNyAr MTUxMCw2IEBAIExaNFN0YXRlCiBMYWJlbFByb3ZpZGVyCiBMYWdUcmFja2VyCiBMYXJnZU9i amVjdERlc2MKLUxhdGNoCiBMYXVuY2hlckxhc3RTdGFydFRpbWVzRW50cnkKIExlcnBGdW5j CiBMZXhEZXNjcgotLSAKMi4zOS41Cgo= --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/x-patch; charset=UTF-8; name="v6-0003-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v6-0003-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhMzY2NjBhZTdhOGRlNDkwY2EwZGI5NDg4MWZkMTA2MWVlMWM2M2IyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToxOCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjYgMy81XSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBsYXVuY2hlcgoKRml4IGl0IGJ5IHVzaW5nIGEgc2VwYXJhdGUgaW50 ZXJydXB0IGJpdCBmb3Igc3Vic2NyaXB0aW9uIGNoYW5nZXMuCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzQ3NjY3MmU3LTYyZjEtNGNhYi1h ODIyLWYzYThlOTQ5ZGQzZkBpa2kuZmkKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTczMjdj YjVAaWtpLmZpCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jIHwgMjMgKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9p bnRlcnJ1cHQuaCAgICAgICAgICAgIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggNjU3OGM4MzE5NGIuLjYwYjI4YWViMmY3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC01Nyw3ICs1Nyw3IEBAIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9 IE5VTEw7CiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQ3R4U3RydWN0CiB7CiAJLyogU3Vw ZXJ2aXNvciBwcm9jZXNzLiAqLwotCXBpZF90CQlsYXVuY2hlcl9waWQ7CisJUHJvY051bWJl cglsYXVuY2hlcl9wcm9jbm87CiAKIAkvKiBIYXNoIHRhYmxlIGhvbGRpbmcgbGFzdCBzdGFy dCB0aW1lcyBvZiBzdWJzY3JpcHRpb25zJyBhcHBseSB3b3JrZXJzLiAqLwogCWRzYV9oYW5k bGUJbGFzdF9zdGFydF9kc2E7CkBAIC04MDUsNyArODA1LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiBzdGF0aWMgdm9pZAogbG9n aWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlMb2dp Y2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPSAwOworCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVy X3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIC8qCkBAIC05NjUsNiArOTY1 LDcgQEAgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKQogCiAJCW1lbXNldChMb2dpY2Fs UmVwQ3R4LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwogCisJCUxvZ2ljYWxSZXBD dHgtPmxhdW5jaGVyX3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCUxvZ2ljYWxS ZXBDdHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwogCQlMb2dpY2Fs UmVwQ3R4LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIApAQCAt MTExMCw4ICsxMTExLDEyIEBAIEFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCh2b2lkKQog c3RhdGljIHZvaWQKIEFwcGx5TGF1bmNoZXJXYWtldXAodm9pZCkKIHsKLQlpZiAoTG9naWNh bFJlcEN0eC0+bGF1bmNoZXJfcGlkICE9IDApCi0JCWtpbGwoTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcGlkLCBTSUdVU1IxKTsKKwl2b2xhdGlsZSBMb2dpY2FsUmVwQ3R4U3RydWN0ICpy ZXBjdHggPSBMb2dpY2FsUmVwQ3R4OworCVByb2NOdW1iZXIJbGF1bmNoZXJfcHJvY25vOwor CisJbGF1bmNoZXJfcHJvY25vID0gcmVwY3R4LT5sYXVuY2hlcl9wcm9jbm87CisJaWYgKGxh dW5jaGVyX3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLCBsYXVuY2hlcl9wcm9jbm8pOwogfQog CiAvKgpAQCAtMTEyNSw4ICsxMTMwLDggQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAKIAliZWZvcmVfc2htZW1fZXhpdChsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhp dCwgKERhdHVtKSAwKTsKIAotCUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQg PT0gMCk7Ci0JTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gTXlQcm9jUGlkOworCUFz c2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05V TUJFUik7CisJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID0gTXlQcm9jTnVtYmVy OwogCiAJLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KIAlwcXNpZ25hbChTSUdI VVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwpAQCAtMTE1OCw2ICsxMTYzLDcg QEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhzdWJjdHgpOwogCiAJCS8qIFN0YXJ0IGFueSBtaXNzaW5nIHdv cmtlcnMgZm9yIGVuYWJsZWQgc3Vic2NyaXB0aW9ucy4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UpOwogCQlzdWJsaXN0ID0gZ2V0X3N1YnNj cmlwdGlvbl9saXN0KCk7CiAJCWZvcmVhY2gobGMsIHN1Ymxpc3QpCiAJCXsKQEAgLTEyMTQs NyArMTIyMCw4IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1v cnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAq LwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMg PSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwgfAorCQkJCQkJICAgMSA8 PCBJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRSwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgd2FpdF90 aW1lLAogCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4pOwpAQCAt MTI0MSw3ICsxMjQ4LDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiBi b29sCiBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogewotCXJldHVybiBMb2dpY2FsUmVwQ3R4 LT5sYXVuY2hlcl9waWQgPT0gTXlQcm9jUGlkOworCXJldHVybiBMb2dpY2FsUmVwQ3R4LT5s YXVuY2hlcl9wcm9jbm8gPT0gTXlQcm9jTnVtYmVyOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv aW50ZXJydXB0LmgKaW5kZXggNzc5ZDYxYThmMDcuLjhhODgwY2Q0YzI5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvaW50ZXJydXB0LmgKQEAgLTExMCwxMSArMTEwLDE0IEBAIHR5cGVkZWYgZW51bQog CUlOVEVSUlVQVF9HRU5FUkFMLAogCiAJLyoKLQkgKiBJTlRFUlJVUFRfUkVDT1ZFUllfV0FL RVVQIGlzIHVzZWQgdG8gd2FrZSB1cCBzdGFydHVwIHByb2Nlc3MsIHRvIHRlbGwKKwkgKiBJ TlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAg cHJvY2VzcywgdG8gdGVsbAogCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCBy ZXBsYXkuIEl0J3Mgc2VudCBieSBXQUwgcmVjZWl2ZXIgd2hlbgogCSAqIG1vcmUgV0FMIGFy cml2ZXMsIG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KIAkgKi8KIAlJTlRFUlJV UFRfUkVDT1ZFUllfQ09OVElOVUUsCisKKwkvKiBzZW50IHRvIGxvZ2ljYWwgcmVwbGljYXRp b24gbGF1bmNoZXIsIHdoZW4gYSBzdWJzY3JpcHRpb24gY2hhbmdlcyAqLworCUlOVEVSUlVQ VF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAogfSBJbnRlcnJ1cHRUeXBlOwogCiAvKgotLSAKMi4z OS41Cgo= --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/x-patch; charset=UTF-8; name="v6-0004-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.patch" Content-Disposition: attachment; filename*0="v6-0004-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjNmM3Yjg1ZmJlNzAyNDc5ZjhiMDU3OWI4OGQzNDUxNjJiYWFiM2U4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToyMSArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjYgNC81XSBVc2UgSU5URVJSVVBUX0dFTkVSQUwgZm9yIGJnd29y a2VyIHN0YXRlIGNoYW5nZQogbm90aWZpY2F0aW9uCgpBcyBwYXJ0IG9mIGEgcHJvamVjdCB0 byByZW1vdmUgdGhlIHJlbGlhbmNlIG9uIFBJRHMgdG8gaWRlbnRpZnkKYmFja2VuZHMsIGJh Y2tlbmRzIHRoYXQgcmVnaXN0ZXIgZHluYW1pYyBiYWNrZ3JvdW5kIHdvcmtlcnMgd2lsbCBu b3cKcmVjZWl2ZSBJTlRFUlJVUFRfR0VORVJBTCBzZW50IGRpcmVjdGx5IGJ5IHRoZSBwb3N0 bWFzdGVyIHdoZW4gdGhlCndvcmtlciBzdGF0ZSBjaGFuZ2VzLiAgUHJldmlvdXNseSwgdGhl IHBvc3RtYXN0ZXIgd291bGQgc2VuZCBhIFNJR1VTUjEKc2lnbmFsLCB3aGljaCByZWxpZWQg b24gdGhlIFByb2NTaWduYWwgc3lzdGVtJ3MgaGFuZGxlciBzZXR0aW5nIHRoZQppbnRlcnJ1 cHQgZmxhZywgd2l0aCB0aGUgc2FtZSBlbmQgZWZmZWN0LiAgTm93IHRoYXQgaW50ZXJtZWRp YXRlIHN0ZXAKaXMgc2tpcHBlZC4KClRoZSBmaWVsZCBiZ3dfbm90aWZ5X3BpZCBzdGlsbCBl eGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBidXQKaGFzIG5vIGVmZmVjdCBh bmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBsYXRlciByZWxlYXNlLgpSZWdpc3RlckJhY2tncm91 bmRXb3JrZXIoKSBub3cgYXV0b21hdGljYWxseSBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlcgp3 b3VsZCBsaWtlIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlbGl2ZXJlZCB0byBpdHMg cHJvYyBudW1iZXIsCnVubGVzcyBCR1dfTk9fTk9USUZZIGlzIHNldCBpbiBiZ3dfZmxhZ3Mu CgpSZW1vdmluZyBvdGhlciBjYXNlcyBvZiBQSURzIGZyb20gdGhlIGJnd29ya2VyIEFQSSBp cyBsZWZ0IGZvciBsYXRlcgp3b3JrOyB0aGlzIHBhdGNoIGlzIGNvbmNlcm5lZCBvbmx5IHdp dGggcmVtb3ZpbmcgYSBkZXBlbmRlbmN5IG9uClByb2NTaWduYWwgaW5mcmFzdHJ1Y3R1cmUg dGhhdCBpcyBkdWUgdG8gYmUgcmVtb3ZlZCBieSBhIGxhdGVyIGNvbW1pdC4KClRoaXMgcmVw cmVzZW50cyB0aGUgZmlyc3QgdXNlIG9mIFNlbmRJbnRlcnJ1cHQoKSBpbiB0aGUgcG9zdG1h c3Rlci4KSXQgbWlnaHQgc2VlbSBtb3JlIG5hdHVyYWwgdG8gdXNlIGNvbmRpdGlvbiB2YXJp YWJsZXMgaW4gdGhlCndhaXQtZm9yLXN0YXRlLWNoYW5nZSBmdW5jdGlvbnMsIHNvIHRoYXQg YW55b25lIHdpdGggYSBoYW5kbGUgY2FuCndhaXQsIGJ1dCBjb25kaXRpb24gdmFyaWFibGVz IGFzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB3b3VsZCBiZSBhIGxvdApsZXNzIHJvYnVzdCB0 aGFuIHNpbXBsZSBpbnRlcnJ1cHRzLgoKQXV0aG9yOiBUaG9tYXMgTXVucm8gPHRob21hcy5t dW5yb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIZWlra2kgTGlubmFrYW5nYXMgPGhsaW5u YWthQGlraS5maT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQSUyQmhVS0cl MkIzTWtTMjF5SzRqTDRjZ1p5d2RubkdLaUJnMGphdG9WNmt6YW5pQm1jcWJRJTQwbWFpbC5n bWFpbC5jb20KLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAg ICAgIHwgICA2IC0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAgICAgICAgICAg ICAgfCAgMjcgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAg ICAgICB8IDEyOCArKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jICB8ICAgMiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pbnRlcnJ1cHQuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy93YWl0ZXZlbnRzZXQuYyAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv Ymd3b3JrZXIuaCAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv Ymd3b3JrZXJfaW50ZXJuYWxzLmggfCAgIDQgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvc2V0dXAuYyAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvdGVzdF9zaG1fbXEuaCAgfCAgIDIgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS93b3JrZXIuYyAgICAgICB8ICAgOSArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJf c3BpL3dvcmtlcl9zcGkuYyAgICB8ICAgMyAtCiAxNCBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5z ZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf cHJld2FybS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJt LmMKaW5kZXggNjk2Y2I0NTg0OTMuLmY3Y2UwYTlhNzdhIDEwMDY0NAotLS0gYS9jb250cmli L3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0 b3ByZXdhcm0uYwpAQCAtODE3LDkgKzgxNyw2IEBAIGFwd19zdGFydF9sZWFkZXJfd29ya2Vy KHZvaWQpCiAJCXJldHVybjsKIAl9CiAKLQkvKiBtdXN0IHNldCBub3RpZnkgUElEIHRvIHdh aXQgZm9yIHN0YXJ0dXAgKi8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7 Ci0KIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhh bmRsZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJ Q0lFTlRfUkVTT1VSQ0VTKSwKQEAgLTg1Myw5ICs4NTAsNiBAQCBhcHdfc3RhcnRfZGF0YWJh c2Vfd29ya2VyKHZvaWQpCiAJc3RyY3B5KHdvcmtlci5iZ3dfbmFtZSwgImF1dG9wcmV3YXJt IHdvcmtlciIpOwogCXN0cmNweSh3b3JrZXIuYmd3X3R5cGUsICJhdXRvcHJld2FybSB3b3Jr ZXIiKTsKIAotCS8qIG11c3Qgc2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBmb3Igc2h1dGRvd24g Ki8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lz dGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VT KSwKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sIGIvZG9jL3NyYy9z Z21sL2Jnd29ya2VyLnNnbWwKaW5kZXggMzE3MTA1NGU1NWQuLjg3MWY2ODY5ZDZhIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbApAQCAtNjMsNyArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3Jv dW5kV29ya2VyCiAgICAgY2hhciAgICAgICAgYmd3X2Z1bmN0aW9uX25hbWVbQkdXX01BWExF Tl07CiAgICAgRGF0dW0gICAgICAgYmd3X21haW5fYXJnOwogICAgIGNoYXIgICAgICAgIGJn d19leHRyYVtCR1dfRVhUUkFMRU5dOwotICAgIHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlk OworICAgIHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlkOwkJCS8qIG5vdCB1c2VkICovCiB9 IEJhY2tncm91bmRXb3JrZXI7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CkBAIC0x MDgsNiArMTA4LDE4IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgICAg PC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgIDx0ZXJtPjxsaXRlcmFsPkJHV09SS0VSX05PX05PVElGWTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxpbmRleHRlcm0+ PHByaW1hcnk+QkdXT1JLRVJfTk9fTk9USUZZPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAg ICAgIE5vcm1hbGx5LCB0aGUgYmFja2VuZCB0aGF0IHJlZ2lzdGVycyBhIGR5bmFtaWMgd29y a2VyIHdpbGwgYmUgbm90aWZpZWQKKyAgICAgICB3aXRoIDxsaXRlcmFsPklOVEVSUlVQVF9H RU5FUkFMPC9saXRlcmFsPiB3aGVuIHRoZSB3b3JrZXJzIHN0YXRlIGNoYW5nZXMsIHdoaWNo IGFsbG93cyB0aGUKKyAgICAgICBjYWxsZXIgdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBz dGFydCBhbmQgc2h1dCBkb3duLiAgVGhhdCBjYW4gYmUKKyAgICAgICBzdXBwcmVzc2VkIGJ5 IHNldHRpbmcgdGhpcyBmbGFnLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor ICAgIDwvdmFybGlzdGVudHJ5PgogICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPC9wYXJhPgpA QCAtMTgxLDEyICsxOTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VyCiAg IDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90aWZ5X3BpZDwv c3RydWN0ZmllbGQ+IGlzIHRoZSBQSUQgb2YgYSBQb3N0Z3JlU1FMCi0gICBiYWNrZW5kIHBy b2Nlc3MgdG8gd2hpY2ggdGhlIHBvc3RtYXN0ZXIgc2hvdWxkIHNlbmQgPGxpdGVyYWw+U0lH VVNSMTwvbGl0ZXJhbD4KLSAgIHdoZW4gdGhlIHByb2Nlc3MgaXMgc3RhcnRlZCBvciBleGl0 cy4gIEl0IHNob3VsZCBiZSAwIGZvciB3b3JrZXJzIHJlZ2lzdGVyZWQKLSAgIGF0IHBvc3Rt YXN0ZXIgc3RhcnR1cCB0aW1lLCBvciB3aGVuIHRoZSBiYWNrZW5kIHJlZ2lzdGVyaW5nIHRo ZSB3b3JrZXIgZG9lcwotICAgbm90IHdpc2ggdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBz dGFydCB1cC4gIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlCi0gICBpbml0aWFsaXplZCB0byA8 bGl0ZXJhbD5NeVByb2NQaWQ8L2xpdGVyYWw+LgorICAgPHN0cnVjdGZpZWxkPmJnd19ub3Rp ZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gaXMgbm90IHVzZWQgYW5kIG1heSBiZSByZW1vdmVkCisg ICBpbiBhIGZ1dHVyZSByZWxlYXNlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+T25jZSBydW5u aW5nLCB0aGUgcHJvY2VzcyBjYW4gY29ubmVjdCB0byBhIGRhdGFiYXNlIGJ5IGNhbGxpbmcK QEAgLTI1OCwxMCArMjY2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgog CiAgIDxwYXJhPgogICAgSW4gc29tZSBjYXNlcywgYSBwcm9jZXNzIHdoaWNoIHJlZ2lzdGVy cyBhIGJhY2tncm91bmQgd29ya2VyIG1heSB3aXNoIHRvCi0gICB3YWl0IGZvciB0aGUgd29y a2VyIHRvIHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IGluaXRpYWxp emluZwotICAgPHN0cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gdG8g PGxpdGVyYWw+TXlQcm9jUGlkPC9saXRlcmFsPiBhbmQKLSAgIHRoZW4gcGFzc2luZyB0aGUg PHR5cGU+QmFja2dyb3VuZFdvcmtlckhhbmRsZSAqPC90eXBlPiBvYnRhaW5lZCBhdAotICAg cmVnaXN0cmF0aW9uIHRpbWUgdG8KKyAgIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQg dXAuICBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgd2l0aCB0aGUKICAgIDxmdW5jdGlvbj5X YWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoPHBhcmFtZXRlcj5CYWNrZ3JvdW5kV29y a2VySGFuZGxlCiAgICAqaGFuZGxlPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnBpZF90ICo8 L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj4gZnVuY3Rpb24uCiAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgYmxvY2sgdW50aWwgdGhlIHBvc3RtYXN0ZXIgaGFzIGF0dGVtcHRlZCB0byBzdGFydCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDUyYjFjYmMy ZDk1Li5iZjIxMWVmYjYzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jCkBAIC02MDQsNyArNjA0LDYgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIAlzcHJpbnRmKHdvcmtlci5iZ3dfbGlicmFyeV9uYW1lLCAicG9z dGdyZXMiKTsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVuY3Rpb25fbmFtZSwgIlBhcmFsbGVs V29ya2VyTWFpbiIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBVSW50MzJHZXREYXR1bShk c21fc2VnbWVudF9oYW5kbGUocGN4dC0+c2VnKSk7Ci0Jd29ya2VyLmJnd19ub3RpZnlfcGlk ID0gTXlQcm9jUGlkOwogCiAJLyoKIAkgKiBTdGFydCB3b3JrZXJzLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCmluZGV4IGMxN2I4ZGI1NDVmLi42Y2M2OGJmNDExZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtNzgsNiArNzgsOCBAQCB0eXBlZGVmIHN0 cnVjdCBCYWNrZ3JvdW5kV29ya2VyU2xvdAogCXBpZF90CQlwaWQ7CQkJLyogSW52YWxpZFBp ZCA9IG5vdCBzdGFydGVkIHlldDsgMCA9IGRlYWQgKi8KIAl1aW50NjQJCWdlbmVyYXRpb247 CQkvKiBpbmNyZW1lbnRlZCB3aGVuIHNsb3QgaXMgcmVjeWNsZWQgKi8KIAlCYWNrZ3JvdW5k V29ya2VyIHdvcmtlcjsKKwlpbnQJCQlub3RpZnlfcG1jaGlsZDsKKwlQcm9jTnVtYmVyCW5v dGlmeV9wcm9jX251bWJlcjsKIH0gQmFja2dyb3VuZFdvcmtlclNsb3Q7CiAKIC8qCkBAIC0x OTIsOCArMTk0LDkgQEAgQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkKQogCQkJc2xv dC0+dGVybWluYXRlID0gZmFsc2U7CiAJCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOwogCQkJ c2xvdC0+Z2VuZXJhdGlvbiA9IDA7CisJCQlzbG90LT5ub3RpZnlfcG1jaGlsZCA9IDA7CisJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJ cnctPnJ3X3NobWVtX3Nsb3QgPSBzbG90bm87Ci0JCQlydy0+cndfd29ya2VyLmJnd19ub3Rp ZnlfcGlkID0gMDsJLyogbWlnaHQgYmUgcmVpbml0IGFmdGVyIGNyYXNoICovCiAJCQltZW1j cHkoJnNsb3QtPndvcmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29y a2VyKSk7CiAJCQkrK3Nsb3RubzsKIAkJfQpAQCAtMjM0LDYgKzIzNywxNCBAQCBGaW5kUmVn aXN0ZXJlZFdvcmtlckJ5U2xvdE51bWJlcihpbnQgc2xvdG5vKQogCXJldHVybiBOVUxMOwog fQogCitQcm9jTnVtYmVyCitHZXROb3RpZnlQcm9jTnVtYmVyRm9yUmVnaXN0ZXJlZFdvcmtl cihSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQoreworCUJhY2tncm91bmRXb3JrZXJTbG90ICpz bG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3J3LT5yd19zaG1lbV9zbG90XTsK KworCXJldHVybiBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7Cit9CisKIC8qCiAgKiBOb3Rp Y2UgY2hhbmdlcyB0byBzaGFyZWQgbWVtb3J5IG1hZGUgYnkgb3RoZXIgYmFja2VuZHMuCiAg KiBBY2NlcHQgbmV3IHdvcmtlciByZXF1ZXN0cyBvbmx5IGlmIGFsbG93X25ld193b3JrZXJz IGlzIHRydWUuCkBAIC0zMTUsMjAgKzMyNiwyMCBAQCBCYWNrZ3JvdW5kV29ya2VyU3RhdGVD aGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJLyoKIAkJICogSWYgdGhlIHdvcmtl ciBpcyBtYXJrZWQgZm9yIHRlcm1pbmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCBpdCB0 bwogCQkgKiB0aGUgcmVnaXN0ZXJlZCB3b3JrZXJzIGxpc3Q7IHdlIGNhbiBqdXN0IGZyZWUg dGhlIHNsb3QuIEhvd2V2ZXIsIGlmCi0JCSAqIGJnd19ub3RpZnlfcGlkIGlzIHNldCwgdGhl IHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZSB3b3JrZXIgbWF5Ci0JCSAqIG5lZWQgdG8g a25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJlcXVlc3QsIHNvIGJl IHN1cmUKLQkJICogdG8gc2lnbmFsIGl0LgorCQkgKiBiZ3dfbm90aWZ5X3Byb2NfbnVtYmVy IGlzIHNldCwgdGhlIHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZQorCQkgKiB3b3JrZXIg bWF5IG5lZWQgdG8ga25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJl cXVlc3QsCisJCSAqIHNvIGJlIHN1cmUgdG8gc2lnbmFsIGl0LgogCQkgKi8KIAkJaWYgKHNs b3QtPnRlcm1pbmF0ZSkKIAkJewotCQkJaW50CQkJbm90aWZ5X3BpZDsKKwkJCWludAkJCW5v dGlmeV9wcm9jX251bWJlcjsKIAogCQkJLyoKIAkJCSAqIFdlIG5lZWQgYSBtZW1vcnkgYmFy cmllciBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsb2FkIG9mCi0JCQkgKiBiZ3dfbm90 aWZ5X3BpZCBhbmQgdGhlIHVwZGF0ZSBvZiBwYXJhbGxlbF90ZXJtaW5hdGVfY291bnQKLQkJ CSAqIGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5fdXNlLgorCQkJICogYmd3X25v dGlmeV9wcm9jX251bWJlciBhbmQgdGhlIHVwZGF0ZSBvZgorCQkJICogcGFyYWxsZWxfdGVy bWluYXRlX2NvdW50IGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5fdXNlLgogCQkJ ICovCi0JCQlub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJ bm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwogCQkJaWYg KChzbG90LT53b3JrZXIuYmd3X2ZsYWdzICYgQkdXT1JLRVJfQ0xBU1NfUEFSQUxMRUwpICE9 IDApCiAJCQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3Rlcm1pbmF0ZV9jb3Vu dCsrOwogCQkJc2xvdC0+cGlkID0gMDsKQEAgLTMzNiw4ICszNDcsOCBAQCBCYWNrZ3JvdW5k V29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJCXBnX21lbW9y eV9iYXJyaWVyKCk7CiAJCQlzbG90LT5pbl91c2UgPSBmYWxzZTsKIAotCQkJaWYgKG5vdGlm eV9waWQgIT0gMCkKLQkJCQlraWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCQkJaWYgKG5v dGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5vdGlmeV9wcm9jX251bWJlcik7CiAKIAkJCWNv bnRpbnVlOwogCQl9CkBAIC0zODMsMjMgKzM5NCw2IEBAIEJhY2tncm91bmRXb3JrZXJTdGF0 ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKQogCQlydy0+cndfd29ya2VyLmJnd19t YWluX2FyZyA9IHNsb3QtPndvcmtlci5iZ3dfbWFpbl9hcmc7CiAJCW1lbWNweShydy0+cndf d29ya2VyLmJnd19leHRyYSwgc2xvdC0+d29ya2VyLmJnd19leHRyYSwgQkdXX0VYVFJBTEVO KTsKIAotCQkvKgotCQkgKiBDb3B5IHRoZSBQSUQgdG8gYmUgbm90aWZpZWQgYWJvdXQgc3Rh dGUgY2hhbmdlcywgYnV0IG9ubHkgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIga25vd3MgYWJv dXQgYSBiYWNrZW5kIHdpdGggdGhhdCBQSUQuICBJdCBpc24ndCBhbiBlcnJvcgotCQkgKiBp ZiB0aGUgcG9zdG1hc3RlciBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIFBJRCwgYmVjYXVzZSB0 aGUgYmFja2VuZAotCQkgKiB0aGF0IHJlcXVlc3RlZCB0aGUgd29ya2VyIGNvdWxkIGhhdmUg ZGllZCAob3IgYmVlbiBraWxsZWQpIGp1c3QKLQkJICogYWZ0ZXIgZG9pbmcgc28uICBOb25l dGhlbGVzcywgYXQgbGVhc3QgdW50aWwgd2UgZ2V0IHNvbWUgZXhwZXJpZW5jZQotCQkgKiB3 aXRoIGhvdyB0aGlzIHBsYXlzIG91dCBpbiB0aGUgd2lsZCwgbG9nIGEgbWVzc2FnZSBhdCBh IHJlbGF0aXZlCi0JCSAqIGhpZ2ggZGVidWcgbGV2ZWwuCi0JCSAqLwotCQlydy0+cndfd29y a2VyLmJnd19ub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlfcGlkOwotCQlp ZiAoIVBvc3RtYXN0ZXJNYXJrUElERm9yV29ya2VyTm90aWZ5KHJ3LT5yd193b3JrZXIuYmd3 X25vdGlmeV9waWQpKQotCQl7Ci0JCQllbG9nKERFQlVHMSwgIndvcmtlciBub3RpZmljYXRp b24gUElEICVkIGlzIG5vdCB2YWxpZCIsCi0JCQkJIChpbnQpIHJ3LT5yd193b3JrZXIuYmd3 X25vdGlmeV9waWQpOwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7Ci0J CX0KLQogCQkvKiBJbml0aWFsaXplIHBvc3RtYXN0ZXIgYm9va2tlZXBpbmcuICovCiAJCXJ3 LT5yd19waWQgPSAwOwogCQlydy0+cndfY3Jhc2hlZF9hdCA9IDA7CkBAIC00MjEsNyArNDE1 LDcgQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3dfbmV3X3dvcmtl cnMpCiAgKiBOT1RFOiBUaGUgZW50cnkgaXMgdW5saW5rZWQgZnJvbSBCYWNrZ3JvdW5kV29y a2VyTGlzdC4gIElmIHRoZSBjYWxsZXIgaXMKICAqIGl0ZXJhdGluZyB0aHJvdWdoIGl0LCBi ZXR0ZXIgdXNlIGEgbXV0YWJsZSBpdGVyYXRvciEKICAqCi0gKiBDYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90aWZ5X3BpZCwgaWYgYXBwcm9wcmlhdGUuCisg KiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90aWZ5X3Byb2Nf bnVtYmVyLCBpZiBhcHByb3ByaWF0ZS4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUg aW52b2tlZCBvbmx5IGluIHRoZSBwb3N0bWFzdGVyLgogICovCkBAIC00NjYsOCArNDYwLDgg QEAgUmVwb3J0QmFja2dyb3VuZFdvcmtlclBJRChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQog CXNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3Rd OwogCXNsb3QtPnBpZCA9IHJ3LT5yd19waWQ7CiAKLQlpZiAocnctPnJ3X3dvcmtlci5iZ3df bm90aWZ5X3BpZCAhPSAwKQotCQlraWxsKHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQs IFNJR1VTUjEpOworCWlmIChzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgc2xvdC0+ bm90aWZ5X3Byb2NfbnVtYmVyKTsKIH0KIAogLyoKQEAgLTQ4MywxMiArNDc3LDEyIEBAIHZv aWQKIFJlcG9ydEJhY2tncm91bmRXb3JrZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncp CiB7CiAJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3Q7Ci0JaW50CQkJbm90aWZ5X3BpZDsK KwlQcm9jTnVtYmVyCW5vdGlmeV9wcm9jX251bWJlcjsKIAogCUFzc2VydChydy0+cndfc2ht ZW1fc2xvdCA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKIAlzbG90ID0gJkJhY2tncm91bmRX b3JrZXJEYXRhLT5zbG90W3J3LT5yd19zaG1lbV9zbG90XTsKIAlzbG90LT5waWQgPSBydy0+ cndfcGlkOwotCW5vdGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOwor CW5vdGlmeV9wcm9jX251bWJlciA9IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKIAogCS8q CiAJICogSWYgdGhpcyB3b3JrZXIgaXMgc2xhdGVkIGZvciBkZXJlZ2lzdHJhdGlvbiwgZG8g dGhhdCBiZWZvcmUgbm90aWZ5aW5nCkBAIC01MDEsMjcgKzQ5NSwzNCBAQCBSZXBvcnRCYWNr Z3JvdW5kV29ya2VyRXhpdChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQogCQlydy0+cndfd29y a2VyLmJnd19yZXN0YXJ0X3RpbWUgPT0gQkdXX05FVkVSX1JFU1RBUlQpCiAJCUZvcmdldEJh Y2tncm91bmRXb3JrZXIocncpOwogCi0JaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJa2lsbChu b3RpZnlfcGlkLCBTSUdVU1IxKTsKKwlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFM SURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5v dGlmeV9wcm9jX251bWJlcik7CiB9CiAKIC8qCi0gKiBDYW5jZWwgU0lHVVNSMSBub3RpZmlj YXRpb25zIGZvciBhIFBJRCBiZWxvbmdpbmcgdG8gYW4gZXhpdGluZyBiYWNrZW5kLgorICog Q2FuY2VsIG5vdGlmaWNhdGlvbnMgZm9yIGEgUElEIGJlbG9uZ2luZyB0byBhbiBleGl0aW5n IGJhY2tlbmQuCiAgKgogICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQg ZnJvbSB0aGUgcG9zdG1hc3Rlci4KICAqLwogdm9pZAotQmFja2dyb3VuZFdvcmtlclN0b3BO b3RpZmljYXRpb25zKHBpZF90IHBpZCkKK0JhY2tncm91bmRXb3JrZXJTdG9wTm90aWZpY2F0 aW9ucyhpbnQgcG1jaGlsZCkKIHsKIAlkbGlzdF9pdGVyCWl0ZXI7CiAKIAlkbGlzdF9mb3Jl YWNoKGl0ZXIsICZCYWNrZ3JvdW5kV29ya2VyTGlzdCkKIAl7CiAJCVJlZ2lzdGVyZWRCZ1dv cmtlciAqcnc7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90OwogCiAJCXJ3ID0gZGxp c3RfY29udGFpbmVyKFJlZ2lzdGVyZWRCZ1dvcmtlciwgcndfbG5vZGUsIGl0ZXIuY3VyKTsK LQkJaWYgKHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPT0gcGlkKQotCQkJcnctPnJ3 X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7CisJCUFzc2VydChydy0+cndfc2htZW1fc2xv dCA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2Vy RGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CisKKwkJaWYgKHNsb3QtPm5vdGlmeV9w bWNoaWxkID09IHBtY2hpbGQpCisJCXsKKwkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsK KwkJCXNsb3QtPm5vdGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJ CX0KIAl9CiB9CiAKQEAgLTU1MywxNCArNTU0LDE0IEBAIEZvcmdldFVuc3RhcnRlZEJhY2tn cm91bmRXb3JrZXJzKHZvaWQpCiAKIAkJLyogSWYgaXQncyBub3QgeWV0IHN0YXJ0ZWQsIGFu ZCB0aGVyZSdzIHNvbWVvbmUgd2FpdGluZyAuLi4gKi8KIAkJaWYgKHNsb3QtPnBpZCA9PSBJ bnZhbGlkUGlkICYmCi0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkICE9IDApCisJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJ ewogCQkJLyogLi4uIHRoZW4gemFwIGl0LCBhbmQgbm90aWZ5IHRoZSB3YWl0ZXIgKi8KLQkJ CWludAkJCW5vdGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJ aW50CQkJbm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwog CiAJCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2VyKHJ3KTsKLQkJCWlmIChub3RpZnlfcGlkICE9 IDApCi0JCQkJa2lsbChub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwkJCWlmIChub3RpZnlfcHJv Y19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMLCBub3RpZnlfcHJvY19udW1iZXIpOwogCQl9CiAJfQogfQpAQCAt NjEzLDExICs2MTQsNiBAQCBSZXNldEJhY2tncm91bmRXb3JrZXJDcmFzaFRpbWVzKHZvaWQp CiAJCQkgKiByZXNldHRpbmcuCiAJCQkgKi8KIAkJCXJ3LT5yd19jcmFzaGVkX2F0ID0gMDsK LQotCQkJLyoKLQkJCSAqIElmIHRoZXJlIHdhcyBhbnlvbmUgd2FpdGluZyBmb3IgaXQsIHRo ZXkncmUgaGlzdG9yeS4KLQkJCSAqLwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZCA9IDA7CiAJCX0KIAl9CiB9CkBAIC05ODEsMTUgKzk3Nyw2IEBAIFJlZ2lzdGVyQmFja2dy b3VuZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIpCiAJaWYgKCFTYW5pdHlDaGVj a0JhY2tncm91bmRXb3JrZXIod29ya2VyLCBMT0cpKQogCQlyZXR1cm47CiAKLQlpZiAod29y a2VyLT5iZ3dfbm90aWZ5X3BpZCAhPSAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImJh Y2tncm91bmQgd29ya2VyIFwiJXNcIjogb25seSBkeW5hbWljIGJhY2tncm91bmQgd29ya2Vy cyBjYW4gcmVxdWVzdCBub3RpZmljYXRpb24iLAotCQkJCQkJd29ya2VyLT5iZ3dfbmFtZSkp KTsKLQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICogRW5mb3JjZSBtYXhpbXVtIG51bWJlciBv ZiB3b3JrZXJzLiAgTm90ZSB0aGlzIGlzIG92ZXJseSByZXN0cmljdGl2ZTogd2UKIAkgKiBj b3VsZCBhbGxvdyBtb3JlIG5vbi1zaG1lbS1jb25uZWN0ZWQgd29ya2VycywgYmVjYXVzZSB0 aGVzZSBkb24ndCBjb3VudApAQCAtMTEwNSw2ICsxMDkyLDI1IEBAIFJlZ2lzdGVyRHluYW1p Y0JhY2tncm91bmRXb3JrZXIoQmFja2dyb3VuZFdvcmtlciAqd29ya2VyLAogCQkJaWYgKHBh cmFsbGVsKQogCQkJCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdpc3Rlcl9j b3VudCsrOwogCisJCQlpZiAoKHNsb3QtPndvcmtlci5iZ3dfZmxhZ3MgJiBCR1dPUktFUl9T SE1FTV9BQ0NFU1MpICE9IDAgJiYKKwkJCQkoc2xvdC0+d29ya2VyLmJnd19mbGFncyAmIEJH V09SS0VSX05PX05PVElGWSkgPT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFNldCBub3Rp ZnlfcHJvY19udW1iZXIgc28gdGhhdCBwb3N0bWFzdGVyIHdpbGwgc2VuZCB1cyBhbgorCQkJ CSAqIGludGVycnVwdC4gQWxzbyByZW1lbWJlciB0aGUgcG1jaGlsZCBzbG90IG51bWJlcjsK KwkJCQkgKiBwb3N0bWFzdGVyIG5lZWRzIGl0IHRvIGRldGVjdCB3aGVuIHdlIGV4aXQsIHRv IGRpc2FybSB0aGUKKwkJCQkgKiBub3RpZmljYXRpb24uCisJCQkJICovCisJCQkJc2xvdC0+ bm90aWZ5X3BtY2hpbGQgPSBNeVBNQ2hpbGRTbG90OworCQkJCXNsb3QtPm5vdGlmeV9wcm9j X251bWJlciA9IE15UHJvY051bWJlcjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBO byBub3RpZmljYXRpb25zLiAqLworCQkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCQkJ fQorCiAJCQkvKgogCQkJICogTWFrZSBzdXJlIHBvc3RtYXN0ZXIgZG9lc24ndCBzZWUgdGhl IHNsb3QgYXMgaW4gdXNlIGJlZm9yZSBpdAogCQkJICogc2VlcyB0aGUgbmV3IGNvbnRlbnRz LgpAQCAtMTIwNSw4ICsxMjExLDkgQEAgR2V0QmFja2dyb3VuZFdvcmtlclBpZChCYWNrZ3Jv dW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogICogQkdXSF9QT1NUTUFT VEVSX0RJRUQsIHNpbmNlIGl0IHRoYXQgY2FzZSB3ZSBrbm93IHRoYXQgc3RhcnR1cCB3aWxs IG5vdAogICogdGFrZSBwbGFjZS4KICAqCi0gKiBUaGUgY2FsbGVyICptdXN0KiBoYXZlIHNl dCBvdXIgUElEIGFzIHRoZSB3b3JrZXIncyBiZ3dfbm90aWZ5X3BpZCwKLSAqIGVsc2Ugd2Ug d2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4gdGhlIHdvcmtlcidzIHN0YXRlIGNo YW5nZXMuCisgKiBUaGlzIHdvcmtzIG9ubHkgaWYgdGhlIHdvcmtlciB3YXMgcmVnaXN0ZXJl ZCB3aXRoIEJHV09SS0VSX1NITUVNX0FDQ0VTUyBhbmQKKyAqIHdpdGhvdXQgQkdXT1JLRVJf Tk9fTk9USUZZLCBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRseSB3aGVuIHRo ZQorICogd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KICAqLwogQmd3SGFuZGxlU3RhdHVzCiBX YWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAq aGFuZGxlLCBwaWRfdCAqcGlkcCkKQEAgLTEyNTAsOCArMTI1Nyw5IEBAIFdhaXRGb3JCYWNr Z3JvdW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBp ZF90ICpwaWRwKQogICogdXAgYW5kIHJldHVybiBCR1dIX1BPU1RNQVNURVJfRElFRCwgYmVj YXVzZSBpdCdzIHRoZSBwb3N0bWFzdGVyIHRoYXQKICAqIG5vdGlmaWVzIHVzIHdoZW4gYSB3 b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgogICoKLSAqIFRoZSBjYWxsZXIgKm11c3QqIGhhdmUg c2V0IG91ciBQSUQgYXMgdGhlIHdvcmtlcidzIGJnd19ub3RpZnlfcGlkLAotICogZWxzZSB3 ZSB3aWxsIG5vdCBiZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUgd29ya2VyJ3Mgc3RhdGUg Y2hhbmdlcy4KKyAqIFRoaXMgd29ya3Mgb25seSBpZiB0aGUgd29ya2VyIHdhcyByZWdpc3Rl cmVkIHdpdGggQkdXT1JLRVJfU0hNRU1fQUNDRVNTIGFuZAorICogd2l0aG91dCBCR1dPUktF Ul9OT19OT1RJRlksIGVsc2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4g dGhlCisgKiB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgogICovCiBCZ3dIYW5kbGVTdGF0dXMK IFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1dGRvd24oQmFja2dyb3VuZFdvcmtlckhhbmRs ZSAqaGFuZGxlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCBhNzJl MjgwODQ1Yy4uZmNjMjUxMWRhNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCkBAIC00MjAzLDE1ICs0MjAzLDE1IEBAIG1heWJlX3N0YXJ0X2Jnd29ya2Vycyh2b2lk KQogCQl7CiAJCQlpZiAocnctPnJ3X3dvcmtlci5iZ3dfcmVzdGFydF90aW1lID09IEJHV19O RVZFUl9SRVNUQVJUKQogCQkJewotCQkJCWludAkJCW5vdGlmeV9waWQ7CisJCQkJUHJvY051 bWJlcglub3RpZnlfcHJvY19udW1iZXI7CiAKLQkJCQlub3RpZnlfcGlkID0gcnctPnJ3X3dv cmtlci5iZ3dfbm90aWZ5X3BpZDsKKwkJCQlub3RpZnlfcHJvY19udW1iZXIgPSBHZXROb3Rp ZnlQcm9jTnVtYmVyRm9yUmVnaXN0ZXJlZFdvcmtlcihydyk7CiAKIAkJCQlGb3JnZXRCYWNr Z3JvdW5kV29ya2VyKHJ3KTsKIAogCQkJCS8qIFJlcG9ydCB3b3JrZXIgaXMgZ29uZSBub3cu ICovCi0JCQkJaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJCQkJa2lsbChub3RpZnlfcGlkLCBT SUdVU1IxKTsKKwkJCQlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19O VU1CRVIpCisJCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5vdGlmeV9w cm9jX251bWJlcik7CiAKIAkJCQljb250aW51ZTsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA2MGIyOGFlYjJmNy4uYWIzMzQ0 NGEyOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMKQEAgLTQ5Niw3ICs0OTYsNiBAQCByZXRyeToKIAl9CiAKIAliZ3cuYmd3X3Jlc3RhcnRf dGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwotCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJv Y1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAogCWlm ICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkp CkBAIC05MzksNyArOTM4LDYgQEAgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpCiAJc25w cmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLAogCQkJICJsb2dpY2FsIHJlcGxpY2F0 aW9uIGxhdW5jaGVyIik7CiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSA1OwotCWJndy5iZ3df bm90aWZ5X3BpZCA9IDA7CiAJYmd3LmJnd19tYWluX2FyZyA9IChEYXR1bSkgMDsKIAogCVJl Z2lzdGVyQmFja2dyb3VuZFdvcmtlcigmYmd3KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50 ZXJydXB0LmMKaW5kZXggNGQwZWRkZGNmOTkuLjZlNThmNjRiMDk2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pbnRlcnJ1cHQuYwpAQCAtMTA1LDYgKzEwNSw5IEBAIFJhaXNlSW50ZXJy dXB0KEludGVycnVwdFR5cGUgcmVhc29uKQogCiAvKgogICogU2V0IGFuIGludGVycnVwdCBm bGFnIGluIGFub3RoZXIgYmFja2VuZC4KKyAqCisgKiBOb3RlOiBUaGlzIGNhbiBhbHNvIGJl IGNhbGxlZCBmcm9tIHRoZSBwb3N0bWFzdGVyLCBzbyBiZSBjYXJlZnVsIHRvIG5vdAorICog dHJ1c3QgdGhlIGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkuCiAgKi8KIHZvaWQKIFNlbmRJ bnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24sIFByb2NOdW1iZXIgcGdwcm9jbm8pCkBA IC0xNDUsNyArMTQ4LDYgQEAgSW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQodm9pZCkKIAlB c3NlcnQoaW50ZXJydXB0X3BvcyA9PSBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9zKTsK IH0KIAotCiAvKgogICogV2FpdCBmb3IgYW55IG9mIHRoZSBpbnRlcnJ1cHRzIGluIGludGVy cnVwdE1hc2sgdG8gYmUgc2V0LCBvciBmb3IKICAqIHBvc3RtYXN0ZXIgZGVhdGgsIG9yIHVu dGlsIHRpbWVvdXQgaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJpdG1hc2sKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggMWI3YjM5MjY4NjQu LjgxOWRjZTYyMjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0 ZXZlbnRzZXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQu YwpAQCAtMjA1OSw2ICsyMDU5LDExIEBAIFdha2V1cE15UHJvYyh2b2lkKQogdm9pZAogV2Fr ZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKKwkvKgorCSAqIE5vdGU6IFRoaXMgY2Fu IGFsc28gYmUgY2FsbGVkIGZyb20gdGhlIHBvc3RtYXN0ZXIsIHNvIGJlIGNhcmVmdWwgdG8g bm90CisJICogYXNzdW1lIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkgYXJl IHZhbGlkLiAgUmVhZGluZyB0aGUgJ3BpZCcKKwkgKiAob3IgZXZlbnQgaGFuZGxlIG9uIFdp bmRvd3MpIGlzIHNhZmUgZW5vdWdoLgorCSAqLwogI2lmbmRlZiBXSU4zMgogCWtpbGwocHJv Yy0+cGlkLCBTSUdVUkcpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaApp bmRleCAwNTg2NjdhNDdhMC4uZWEzNzE1N2IyYzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jn d29ya2VyLmgKQEAgLTU5LDYgKzU5LDE0IEBACiAgKi8KICNkZWZpbmUgQkdXT1JLRVJfQkFD S0VORF9EQVRBQkFTRV9DT05ORUNUSU9OCQkweDAwMDIKIAorLyoKKyAqIER5bmFtaWMgd29y a2VycyBjcmVhdGVkIHdpdGggc2hhcmVkIG1lbW9yeSBhY2Nlc3MgdXN1YWxseSBzZW5kIGFu IGludGVycnVwdAorICogdG8gdGhlIGNyZWF0aW5nIGJhY2tlbmQgd2hlbiB0aGV5IHN0YXJ0 IGFuZCBzdG9wLCBhbGxvd2luZworICogV2FpdEZvckJhY2tncm91bmRXb3JrZXJ7U3RhcnR1 cCxTaHV0ZG93bn0oKSB0byB3b3JrLiAgU3VjaCBub3RpZmljYXRpb25zCisgKiBjYW4gYmUg c3VwcHJlc3NlZCB3aXRoIHRoaXMgZmxhZy4KKyAqLworI2RlZmluZSBCR1dPUktFUl9OT19O T1RJRlkJCQkJCQkJMHgwMDA0CisKIC8qCiAgKiBUaGlzIGNsYXNzIGlzIHVzZWQgaW50ZXJu YWxseSBmb3IgcGFyYWxsZWwgcXVlcmllcywgdG8ga2VlcCB0cmFjayBvZiB0aGUKICAqIG51 bWJlciBvZiBhY3RpdmUgcGFyYWxsZWwgd29ya2VycyBhbmQgbWFrZSBzdXJlIHdlIG5ldmVy IGxhdW5jaCBtb3JlIHRoYW4KQEAgLTk3LDcgKzEwNSw3IEBAIHR5cGVkZWYgc3RydWN0IEJh Y2tncm91bmRXb3JrZXIKIAljaGFyCQliZ3dfZnVuY3Rpb25fbmFtZVtCR1dfTUFYTEVOXTsK IAlEYXR1bQkJYmd3X21haW5fYXJnOwogCWNoYXIJCWJnd19leHRyYVtCR1dfRVhUUkFMRU5d OwotCXBpZF90CQliZ3dfbm90aWZ5X3BpZDsgLyogU0lHVVNSMSB0aGlzIGJhY2tlbmQgb24g c3RhcnQvc3RvcCAqLworCXBpZF90CQliZ3dfbm90aWZ5X3BpZDsgLyogbm90IHVzZWQgKi8K IH0gQmFja2dyb3VuZFdvcmtlcjsKIAogdHlwZWRlZiBlbnVtIEJnd0hhbmRsZVN0YXR1cwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMu aCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXgg MjllNmY0NGNmMDguLjliNGQ0ZDUxNjZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0 bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJk YXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVy LmgiCiAKIC8qIEdVQyBvcHRpb25zICovCiAKQEAgLTQ3LDkgKzQ4LDEwIEBAIGV4dGVybiB2 b2lkIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJz KTsKIGV4dGVybiB2b2lkIEZvcmdldEJhY2tncm91bmRXb3JrZXIoUmVnaXN0ZXJlZEJnV29y a2VyICpydyk7CiBleHRlcm4gdm9pZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lz dGVyZWRCZ1dvcmtlciAqcncpOwogZXh0ZXJuIHZvaWQgUmVwb3J0QmFja2dyb3VuZFdvcmtl ckV4aXQoUmVnaXN0ZXJlZEJnV29ya2VyICpydyk7Ci1leHRlcm4gdm9pZCBCYWNrZ3JvdW5k V29ya2VyU3RvcE5vdGlmaWNhdGlvbnMocGlkX3QgcGlkKTsKK2V4dGVybiB2b2lkIEJhY2tn cm91bmRXb3JrZXJTdG9wTm90aWZpY2F0aW9ucyhpbnQgcG1jaGlsZCk7CiBleHRlcm4gdm9p ZCBGb3JnZXRVbnN0YXJ0ZWRCYWNrZ3JvdW5kV29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lk IFJlc2V0QmFja2dyb3VuZFdvcmtlckNyYXNoVGltZXModm9pZCk7CitleHRlcm4gUHJvY051 bWJlciBHZXROb3RpZnlQcm9jTnVtYmVyRm9yUmVnaXN0ZXJlZFdvcmtlcihSZWdpc3RlcmVk QmdXb3JrZXIgKnJ3KTsKIAogLyogRW50cnkgcG9pbnQgZm9yIGJhY2tncm91bmQgd29ya2Vy IHByb2Nlc3NlcyAqLwogZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikgcGdfYXR0cmli dXRlX25vcmV0dXJuKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3NldHVwLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKaW5k ZXggZDE4YjJmMmZhODcuLjVmMzFiZjcwODJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS9zZXR1cC5jCkBAIC0xMzQsNiArMTM0LDcgQEAgc2V0dXBfZHluYW1pY19zaGFyZWRf bWVtb3J5KGludDY0IHF1ZXVlX3NpemUsIGludCBud29ya2VycywKIAogCS8qIFNldCB1cCB0 aGUgaGVhZGVyIHJlZ2lvbi4gKi8KIAloZHIgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6 ZW9mKHRlc3Rfc2htX21xX2hlYWRlcikpOworCWhkci0+bGVhZGVyX3Byb2NfbnVtYmVyID0g TXlQcm9jTnVtYmVyOwogCVNwaW5Mb2NrSW5pdCgmaGRyLT5tdXRleCk7CiAJaGRyLT53b3Jr ZXJzX3RvdGFsID0gbndvcmtlcnM7CiAJaGRyLT53b3JrZXJzX2F0dGFjaGVkID0gMDsKQEAg LTIyMyw4ICsyMjQsNiBAQCBzZXR1cF9iYWNrZ3JvdW5kX3dvcmtlcnMoaW50IG53b3JrZXJz LCBkc21fc2VnbWVudCAqc2VnKQogCXNwcmludGYod29ya2VyLmJnd19mdW5jdGlvbl9uYW1l LCAidGVzdF9zaG1fbXFfbWFpbiIpOwogCXNucHJpbnRmKHdvcmtlci5iZ3dfdHlwZSwgQkdX X01BWExFTiwgInRlc3Rfc2htX21xIik7CiAJd29ya2VyLmJnd19tYWluX2FyZyA9IFVJbnQz MkdldERhdHVtKGRzbV9zZWdtZW50X2hhbmRsZShzZWcpKTsKLQkvKiBzZXQgYmd3X25vdGlm eV9waWQsIHNvIHdlIGNhbiBkZXRlY3QgaWYgdGhlIHdvcmtlciBzdG9wcyAqLwotCXdvcmtl ci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAogCS8qIFJlZ2lzdGVyIHRoZSB3b3Jr ZXJzLiAqLwogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgKytpKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oCmluZGV4IDlhZDlmNjNiNDRlLi41 YjFiNmNmODM1NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90 ZXN0X3NobV9tcS5oCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdF9z aG1fbXEuaApAQCAtMjgsNiArMjgsOCBAQAogICovCiB0eXBlZGVmIHN0cnVjdAogeworCVBy b2NOdW1iZXIJbGVhZGVyX3Byb2NfbnVtYmVyOworCiAJc2xvY2tfdAkJbXV0ZXg7CiAJaW50 CQkJd29ya2Vyc190b3RhbDsKIAlpbnQJCQl3b3JrZXJzX2F0dGFjaGVkOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKaW5kZXggODc2YjVmYjlhZDkuLjZkYmU2YjQ3 NmNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5j CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKQEAgLTUzLDcg KzUzLDYgQEAgdGVzdF9zaG1fbXFfbWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fbXFfaGFu ZGxlICpvdXRxaDsKIAl2b2xhdGlsZSB0ZXN0X3NobV9tcV9oZWFkZXIgKmhkcjsKIAlpbnQJ CQlteXdvcmtlcm51bWJlcjsKLQlQR1BST0MJICAgKnJlZ2lzdHJhbnQ7CiAKIAkvKgogCSAq IEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnMuCkBAIC0xMjMsMTMgKzEyMiw3IEBAIHRlc3Rf c2htX21xX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJU3BpbkxvY2tBY3F1aXJlKCZoZHItPm11 dGV4KTsKIAkrK2hkci0+d29ya2Vyc19yZWFkeTsKIAlTcGluTG9ja1JlbGVhc2UoJmhkci0+ bXV0ZXgpOwotCXJlZ2lzdHJhbnQgPSBCYWNrZW5kUGlkR2V0UHJvYyhNeUJnd29ya2VyRW50 cnktPmJnd19ub3RpZnlfcGlkKTsKLQlpZiAocmVnaXN0cmFudCA9PSBOVUxMKQotCXsKLQkJ ZWxvZyhERUJVRzEsICJyZWdpc3RyYW50IGJhY2tlbmQgaGFzIGV4aXRlZCBwcmVtYXR1cmVs eSIpOwotCQlwcm9jX2V4aXQoMSk7Ci0JfQotCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MocmVnaXN0cmFudCkpOworCVNlbmRJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwsIGhkci0+bGVhZGVyX3Byb2NfbnVtYmVyKTsKIAogCS8q IERvIHRoZSB3b3JrLiAqLwogCWNvcHlfbWVzc2FnZXMoaW5xaCwgb3V0cWgpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90 ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKaW5kZXggYmE0MTBmOTNhOTIu LjU3MzY2MjA4MzJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkv d29ya2VyX3NwaS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJf c3BpLmMKQEAgLTM2Niw3ICszNjYsNiBAQCBfUEdfaW5pdCh2b2lkKQogCXdvcmtlci5iZ3df cmVzdGFydF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJc3ByaW50Zih3b3JrZXIuYmd3 X2xpYnJhcnlfbmFtZSwgIndvcmtlcl9zcGkiKTsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVu Y3Rpb25fbmFtZSwgIndvcmtlcl9zcGlfbWFpbiIpOwotCXdvcmtlci5iZ3dfbm90aWZ5X3Bp ZCA9IDA7CiAKIAkvKgogCSAqIE5vdyBmaWxsIGluIHdvcmtlci1zcGVjaWZpYyBkYXRhLCBh bmQgZG8gdGhlIGFjdHVhbCByZWdpc3RyYXRpb25zLgpAQCAtNDE1LDggKzQxNCw2IEBAIHdv cmtlcl9zcGlfbGF1bmNoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJc25wcmludGYod29ya2VyLmJn d19uYW1lLCBCR1dfTUFYTEVOLCAid29ya2VyX3NwaSBkeW5hbWljIHdvcmtlciAlZCIsIGkp OwogCXNucHJpbnRmKHdvcmtlci5iZ3dfdHlwZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkg ZHluYW1pYyIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKGkpOwot CS8qIHNldCBiZ3dfbm90aWZ5X3BpZCBzbyB0aGF0IHdlIGNhbiB1c2UgV2FpdEZvckJhY2tn cm91bmRXb3JrZXJTdGFydHVwICovCi0Jd29ya2VyLmJnd19ub3RpZnlfcGlkID0gTXlQcm9j UGlkOwogCiAJLyogZXh0cmFjdCBmbGFncywgaWYgYW55ICovCiAJbmRpbSA9IEFSUl9ORElN KGFycik7Ci0tIAoyLjM5LjUKCg== --------------OZXx96FoefdRECznQzl2Ss4O Content-Type: text/x-patch; charset=UTF-8; name="v6-0005-Replace-ProcSignals-and-other-ad-hoc-signals-with.patch" Content-Disposition: attachment; filename*0="v6-0005-Replace-ProcSignals-and-other-ad-hoc-signals-with.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZjdjMWIzODZhZWExYzQxZDJmZDUwOWE2OTYyZTdkOGE5NTRhN2I1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgNSBNYXIgMjAyNSAyMDozNTozNiArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjYgNS81XSBSZXBsYWNlIFByb2NTaWduYWxzIGFuZCBvdGhlciBh ZCBob2Mgc2lnbmFscyB3aXRoCiBpbnRlcnJ1cHRzCgpUaGlzIHJlcGxhY2VzIHRoZSBJTlRF UlJVUFRfR0VORVJBTCwgb3Igc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoCmJlZm9yZSB0 aGF0LCB3aXRoIG1vcmUgZmluZS1ncmFpbmVkIGludGVycnVwdHMuIEFsbCB0aGUgUHJvY1Np Z25hbHMKYXJlIGNvbnZlcnRlZCBpbnRvIGludGVycnVwdHMsIGFzIHdlbGwgYXMgdGhpbmdz IGxpa2UgdGltZXJzIGFuZApjb25maWctcmVsb2FkIHJlcXVlc3RzLgoKTW9zdCBjYWxsZXJz IG9mIFdhaXRJbnRlcnJ1cHQgbm93IHVzZSBJTlRFUlJVUFRfQ0ZJX01BU0ssIHdoaWNoIGlz IGEKYml0bWFzayB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaW50ZXJydXB0cyB0aGF0IGFyZSBo YW5kbGVkIGJ5CkNIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgbm93IGNsZWFycyB0aGUKaW50ZXJydXB0cyBiaXRzIHRoYXQgaXQgcHJvY2Vzc2VzLCB0 aGUgY2FsbGVyIGlzIG5vIGxvbmdlciByZXF1aXJlZCB0bwpkbyBDbGVhckludGVycnVwdCAo b3IgUmVzZXRMYXRjaCkgZm9yIHRob3NlIGJpdHMuIElmIHlvdSB3YWtlIHVwIGZvcgpvdGhl ciBpbnRlcnJ1cHRzIHRoYXQgYXJlIG5vdCBoYW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJV UFRTKCksIHlvdQpzdGlsbCBuZWVkIHRvIGNsZWFyIHRob3NlLgoKTm93IHRoYXQgdGhlcmUg YXJlIHNlcGFyYXRlIGJpdHMgZm9yIGRpZmZlcmVudCB0aGluZ3MsIGl0J3MgcG9zc2libGUK dG8gZG8gZS5nLiBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKSU5U RVJSVVBUX1FVRVJZX0NBTkNFTCkgdG8gd2FpdCBqdXN0IGZvciBhIGNvbmZpZyByZWxvYWQg cmVxdWVzdCBvcgpxdWVyeSBjYW5jZWxsYXRpb24sIGFuZCBub3Qgd2FrZSB1cCBvbiBvdGhl ciBldmVudHMgbGlrZSBhIHNodXRkb3duCnJlcXVlc3QuIFRoYXQncyBub3QgdmVyeSB1c2Vm dWwgaW4gcHJhY3RpY2UsIGFzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKc3RpbGwgcHJvY2Vz c2VzIHRob3NlIGludGVycnVwdHMgaWYgeW91IGNhbGwgaXQsIGFuZCB5b3Ugd291bGQgd2Fu dCB0bwpwcm9jZXNzIGFsbCB0aGUgc3RhbmRhcmQgaW50ZXJydXB0cyBwcm9tcHRseSBhbnl3 YXkuIEl0IG1pZ2h0IGJlCnVzZWZ1bCB0byBjaGVjayBmb3Igc3BlY2lmaWMgaW50ZXJydXB0 cyB3aXRoIEludGVycnVwdFBlbmRpbmcoKSwKd2l0aG91dCBpbW1lZGlhdGVseSBwcm9jZXNz aW5nIHRoZW0sIGhvd2V2ZXIuIHNwZ2RvaW5zZXJ0KCkgZG9lcwpzb21ldGhpbmcgbGlrZSB0 aGF0LiBJbiB0aGlzIGNvbW1pdCBJIGRpZG4ndCBjaGFuZ2UgaXRzIG92ZXJhbGwgbG9naWMs CmJ1dCBpdCBwcm9iYWJseSBjb3VsZCBiZSBtYWRlIG1vcmUgZmluZS1ncmFpbmVkIG5vdy4K Ck1vcmUgaW1wb3J0YW50bHksIHlvdSBjYW4gbm93IGhhdmUgYWRkaXRpb25hbCBpbnRlcnJ1 cHRzIHRoYXQgYXJlCnByb2Nlc3NlZCBsZXNzIGZyZXF1ZW50bHkgYW5kIGRvIG5vdCB3YWtl IHVwIHRoZSBiYWNrZW5kIHdoZW4gaXQncyBub3QKcHJlcGFyZWQgdG8gcHJvY2VzcyB0aGVt LiBGb3IgZXhhbXBsZSwgdGhlIFNJTlZBTF9DQVRDSFVQIGludGVycnVwdCBpcwpvbmx5IHBy b2Nlc3NlZCB3aGVuIHRoZSBiYWNrZW5kIGlzIGlkbGUuIFByZXZpb3VzbHksIGEgY2F0Y2h1 cCByZXF1ZXN0CndvdWxkIGludGVycnVwdCB0aGUgcHJvY2VzcyB3aGVuIGl0IHdhcyBub3Qg aWRsZSBidXQgd2FzIHdhaXRpbmcgb24Kb3RoZXIgdGhpbmdzOyBub3cgaXQgb25seSB3YWtl cyB1cCB3aGVuIHRoZSBiYWNrZW5kIGlzIGlkbGUgYW5kIGlzCnJlYWR5IHRvIHByb2Nlc3Mg aXQuIFRoYXQncyBub3QgdG9vIHNpZ25pZmljYW50IGZvciBjYXRjaHVwIGludGVycnVwdHMK YmVjYXVzZSB0aGV5IGRvbid0IG9jY3VyIHRoYXQgb2Z0ZW4gYW55d2F5IGZvciBhIGZldyBl eHRyYSB3YWtldXBzIHRvCm1hdHRlciwgYnV0IGl0J3Mgc3RpbGwgbmljZSBhbmQgY291bGQg YmUgbW9yZSBzaWduaWZpY2FudCB3aXRoIG90aGVyCmludGVycnVwdHMuCgpUaGVyZSdzIHN0 aWxsIGEgZ2VuZXJhbC1wdXJwb3NlIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdCB0aGF0 CmlzIG11bHRpcGxleGVkIGZvciBtYW55IGRpZmZlcmVudCBwdXJwb3NlcyBpbiBkaWZmZXJl bnQgcHJvY2Vzc2VzLCBmb3IKZXhhbXBsZSB0byB3YWtlIHVwIHRoZSB3YWx3cml0ZXIgd2hl biBpdCBoYXMgd29yayB0byBkbywgb3IgdG8gd2FrZSB1cApwcm9jZXNzZXMgd2FpdGluZyBv biBhIGNvbmRpdGlvbiB2YXJpYWJsZS4gVGhlIGNvbW1vbiBwcm9wZXJ0eSBvZgp0aG9zZSB1 c2VzIGlzIHRoYXQgdGhlcmUncyBzb21lIG90aGVyIGZsYWcgb3IgY29uZGl0aW9uIHRoYXQg aXMKY2hlY2tlZCBvbiBlYWNoIHdha2V1cCwgdGhlIHdha2V1cCBpbnRlcnJ1cHQgaXRzZWxm IG1lYW5zIG1lcmVseSB0aGF0CnNvbWV0aGluZyBpbnRlcmVzdGluZyBtaWdodCd2ZSBoYXBw ZW5lZC4KClRPRE86CgogKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIGJlY2FtZSBJTlRFUlJV UFRfU0hVVERPV05fQVVYIGFuZAogICBQcm9jRGllUGVuZGluZyBiZWNhbWUgSU5URVJSVVBU X0RJRSwgYnV0IGRvIHdlIHJlYWxseSBuZWVkIHR3bwogICBkaWZmZXJlbnQgaW50ZXJydXB0 cyBmb3IgcmVxdWVzdGluZyBhIHByb2Nlc3MgdG8gdGVybWluYXRlPwoKICogVGhlcmUgYXJl IG9ubHkgYSBmZXcgaW50ZXJydXB0cyBiaXRzIGxlZnQuIENvbnNvbGlkYXRlIHRoZSBleGlz dGluZwogICBvbmVzLCBzd2l0Y2ggdG8gYSA2NC1iaXQgYXRvbWljLCBvciBtdWxpdHBsZXgg c29tZSBvZiB0aGVtPwoKWFhYOiBvcmlnaW5hbCB0ZXh0IGZyb20gVGhvbWFzJ3MgcGF0Y2g6 CgoiUHJvY1NpZ25hbHMiIHdlcmUgYSB0d28tc3RlcCB3YXkgZm9yIG9uZSBiYWNrZW5kIHRv IGFzayBhbm90aGVyIGJhY2tlbmQKdG8gZG8gc29tZXRoaW5nLCBieSBtdWx0aXBsZXhpbmcg U0lHVVNSMS4gIEhpc3RvcmljYWxseSwgcmVhbCB3b3JrIHdhcwpkb25lIGluIHRoZSBTSUdV U1IxIGhhbmRsZXIsIGJ1dCBjb21taXQgMGRhMDk2ZDcgcmVtb3ZlZCB0aGUgbGFzdCBjYXNl Cm9mIHRoYXQuICBOb3cgdGhlIGhhbmRsZXIganVzdCBzZXQgImludGVycnVwdCBwZW5kaW5n IiBmbGFncywgY2FsbGVkClNldExhdGNoKE15TGF0Y2gpIHRvIGNsb3NlIHJhY2VzLCBhbmQg dGhlbiBkaWQgYWxsIHRoZSBpbnRlcmVzdGluZyB3b3JrCmF0IHRoZSBuZXh0IENIRUNLX0ZP Ul9JTlRFUlJVUFRTKCkgY2FsbC4KClRoaXMgY29tbWl0IHJlbW92ZXMgdGhlIFByb2NTaWdu YWwgc3RlcCwgcmVwbGFjaW5nIFByb2NTaWduYWxzIHdpdGgKSW50ZXJydXB0cy4KCkJlbmVm aXRzIG9mIHRoaXMgcmVmYWN0b3JpbmcgaW5jbHVkZSByZW1vdmluZyB1bm5lY2Vzc2FyeSBj b25jZXB0cyBhbmQKdGVybWlub2xvZ3ksIGF2b2lkaW5nIHRoZSByaXNrIG9mIHBlb3BsZSBw dXR0aW5nIGJ1Z2d5IGNvZGUgYmFjayBpbnRvCnNpZ25hbCBoYW5kbGVycywgcmVtb3Zpbmcg YSB3aG9sZSBsb3Qgb2YgZ2xvYmFsIHZhcmlhYmxlcywgcmVtb3ZpbmcKZGVwZW5kZW5jaWVz IG9uIFBJRHMgYW5kIHRoZSBwcm9jZXNzIG1vZGVsLCByZW1vdmluZyByaXNrcyBvZiBzZW5k aW5nCmEgc2lnbmFsIHRoYXQgaGFzIGRlZmF1bHQgYWN0aW9uIG9mIHRlcm1pbmF0aW9uIHRv IHRoZSB3cm9uZyBwcm9jZXNzLAphbmQgdGFraW5nIGEgc3RlcCB0b3dhcmRzIGJlaW5nIGFi bGUgcmVtb3ZlIHRoZSBmYWtlIHNpZ25hbCBzeXN0ZW0KZnJvbSB0aGUgV2luZG93cyBwb3J0 LgoKTm90YWJsZSBjaGFuZ2VzOgoKICogYWxsIGNhbGxzIHRvIFNlbmRQcm9jU2lnbmFsKHBp ZCwgUFJPQ1NJR19YWFgpIGJlY29tZQogICBTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9YWFgs IHByb2NubykKICogYWxsIFh4eFBlbmRpbmcgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgZ29uZTsg dGhleSBhcmUgcmVwcmVzZW50ZWQKICAgYXMgYml0cyBpbiBNeVByb2MtPnBlbmRpbmdfaW50 ZXJydXB0cwogKiB0aGUgU0lHVVNSMSBoYW5kbGVyIGlzIGdvbmUKICogcGxhY2VzIHRoYXQg a25vdyB0aGUgUElEcyBvZiBvdGhlciBiYWNrZW5kcyBtdXN0IG5vdyB1c2UgcHJvY25vcwog ICBpbnN0ZWFkCgpUaGUgb25seSBjb2RlIGxlZnQgaW4gc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jIHJlbGF0ZXMgdG8KUHJvY1NpZ25hbEJhcnJpZXJzLiAgWFhYIFRo b3NlIHNob3VsZCBwZXJoYXBzIGJlIHJlbmFtZWQuCgpTSUdVU1IxIGNhbiBub3cgYmUgc2V0 IHRvIFNJR19JR04gaW4gbW9zdCBiYWNrZW5kcy4gIFNvbWUgc3BlY2lhbCBjYXNlcwpyZW1h aW4sIHRoYXQgd2VyZSBub3QgdXNpbmcgdGhlIGdlbmVyYWwgc2lndXNyMV9oYW5kbGVyIChu b3cgcmVtb3ZlZCkuCgpBdXRob3I6IFRob21hcyBNdW5ybyA8dGhvbWFzLm11bnJvQGdtYWls LmNvbT4KQXV0aG9yOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bp a2kuZmk+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ElMkJoVUtHJTJCM01r UzIxeUs0akw0Y2daeXdkbm5HS2lCZzBqYXRvVjZremFuaUJtY3FiUSU0MG1haWwuZ21haWwu Y29tCi0tLQogY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgICAgICAgICAgICAg IHwgIDI1ICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAgICAg ICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwgICAgICAgICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAg ICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0 LmMgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5w YXJhbGxlbCAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxs ZWwuYyAgICAgICAgIHwgIDQ4ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2Vi YWNrdXBfdGhyb3R0bGUuYyAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9h c3luYy5jICAgICAgICAgICAgICAgICAgfCAxMDMgKystLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9kYmNvbW1hbmRzLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVzcGFjZS5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2Vu ZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNr ZW5kL2xpYnBxL3BxY29tbS5jICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogc3JjL2Jh Y2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICstCiBzcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNDEgKy0tCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAgIDcgKy0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICAgICB8ICAxNSAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgIDY5 ICsrLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmMgICB8 ICAyNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAgICAg IHwgIDIwICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jICAgICAgICAg ICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAgICAg ICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIu YyAgICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMg ICAgICAgICAgICB8ICAgOCArLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNl aXZlci5jICAgICAgIHwgIDEyICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMgfCAgNTcgKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jICAgIHwgIDQzICstLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jICAgIHwgIDU3ICsrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDE5ICstCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAgODkgKystLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAxOCArLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAgICAgfCAgMTkgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICA3OCArKystLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgIDE4ICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYyAgICAgICAgICAgfCAgMTUg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jICAgICAgICAgICAgICAgICB8ICAg NiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICAgIHwg IDIwICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAg fCAyNDIgKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5j ICAgICAgICAgICAgICB8ICA2NCArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWdu YWxmdW5jcy5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Np bnZhbC5jICAgICAgICAgICAgICB8ICA1MiArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NpbnZhbGFkdC5jICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDgxICsrKy0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy93YWl0ZXZlbnRzZXQuYyAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyB8ICAgMyArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8IDMxMyArKysrKysrKy0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j ICB8ICAyMCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAg ICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAg ICAgICAgICAgIHwgIDIwICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYyAg ICAgICAgICAgICAgfCAgIDYgLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgICAg ICAgICAgICAgICAgIHwgIDIwICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaCAg ICAgICAgICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCAg ICAgICAgICAgICAgICAgIHwgICA2IC0KIHNyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZl LWhlbHBlcnMuaCAgICAgICB8ICAxNCArLQogc3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAg ICAgICAgICAgICAgICAgICAgICAgfCAgNjEgKystLQogc3JjL2luY2x1ZGUvcGdzdGF0Lmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2ludGVycnVwdF9oYW5kbGVycy5oICAgfCAgIDUgLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwgICA1IC0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmggICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICA1ICstCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL2ludGVycnVwdC5oICAgICAgICAgICAgICAgfCAyNzAgKysrKysrKysrKysr LS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oICAgICAgICAgICAgICAgfCAg IDcgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8 ICA0MSAtLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmggICAgICAgICAgICAgICAg ICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmggICAgICAg ICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAg ICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oICAgICAgICAg ICAgICAgICAgfCAgIDEgLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5j ICAgICAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Qu YyAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3Jr ZXJfc3BpLmMgICAgICB8ICAgOSArLQogODYgZmlsZXMgY2hhbmdlZCwgMTA0MCBpbnNlcnRp b25zKCspLCAxMzU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcHJl d2FybS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMK aW5kZXggZjdjZTBhOWE3N2EuLmZmNmJkMzI1MmU4IDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3ByZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3By ZXdhcm0uYwpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9j ay5oIgotI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc21nci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKQEAgLTE1MCw3ICsxNDksNyBAQCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1h aW5fYXJnKQogCS8qIEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnM7IG9uY2UgdGhhdCdzIGRv bmUsIHVuYmxvY2sgc2lnbmFscy4gKi8KIAlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5k bGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKIAlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRs ZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAlCYWNrZ3Jv dW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENyZWF0ZSAoaWYgbmVjZXNzYXJ5 KSBhbmQgYXR0YWNoIHRvIG91ciBzaGFyZWQgbWVtb3J5IGFyZWEuICovCkBAIC0xOTksMjQg KzE5OCwyMiBAQCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChmaXJz dF90aW1lKQogCXsKIAkJYXB3X2xvYWRfYnVmZmVycygpOwotCQlmaW5hbF9kdW1wX2FsbG93 ZWQgPSAhU2h1dGRvd25SZXF1ZXN0UGVuZGluZzsKKwkJZmluYWxfZHVtcF9hbGxvd2VkID0g IUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCk7CiAJCWxhc3RfZHVt cF90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCX0KIAogCS8qIFBlcmlvZGljYWxs eSBkdW1wIGJ1ZmZlcnMgdW50aWwgdGVybWluYXRlZC4gKi8KLQl3aGlsZSAoIVNodXRkb3du UmVxdWVzdFBlbmRpbmcpCisJd2hpbGUgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9T SFVURE9XTl9BVVgpKQogCXsKIAkJLyogSW4gY2FzZSBvZiBhIFNJR0hVUCwganVzdCByZWxv YWQgdGhlIGNvbmZpZ3VyYXRpb24uICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQot CQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCWlmIChDb25zdW1lSW50 ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOwotCQl9CiAKIAkJaWYgKGF1dG9wcmV3YXJtX2ludGVydmFsIDw9IDAp CiAJCXsKIAkJCS8qIFdlJ3JlIG9ubHkgZHVtcGluZyBhdCBzaHV0ZG93biwgc28ganVzdCB3 YWl0IGZvcmV2ZXIuICovCi0JCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMLAorCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dO X0FVWCB8CisJCQkJCQkJCSBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKIAkJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJCSAtMUwsCiAJCQkJ CQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CkBAIC0yNDMsMTQgKzI0MCwxMiBAQCBhdXRvcHJl d2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCQkJfQogCiAJCQkvKiBTbGVlcCB1bnRpbCB0 aGUgbmV4dCBkdW1wIHRpbWUuICovCi0JCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMLAorCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NI VVRET1dOX0FVWCB8CisJCQkJCQkJCSBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKIAkJCQkJ CQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAog CQkJCQkJCQkgZGVsYXlfaW5fbXMsCiAJCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJ CX0KLQotCQkvKiBSZXNldCB0aGUgbGF0Y2gsIGxvb3AuICovCi0JCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAkvKgpAQCAtMzk1LDcgKzM5MCw3IEBAIGFw d19sb2FkX2J1ZmZlcnModm9pZCkKIAkJICogTGlrZXdpc2UsIGRvbid0IGxhdW5jaCBpZiB3 ZSd2ZSBhbHJlYWR5IGJlZW4gdG9sZCB0byBzaHV0IGRvd24uCiAJCSAqIChUaGUgbGF1bmNo IHdvdWxkIGZhaWwgYW55d2F5LCBidXQgd2UgbWlnaHQgYXMgd2VsbCBza2lwIGl0LikKIAkJ ICovCi0JCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCQlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJCWJyZWFrOwogCiAJCS8qCkBAIC00 MTYsNyArNDExLDcgQEAgYXB3X2xvYWRfYnVmZmVycyh2b2lkKQogCUxXTG9ja1JlbGVhc2Uo JmFwd19zdGF0ZS0+bG9jayk7CiAKIAkvKiBSZXBvcnQgb3VyIHN1Y2Nlc3MsIGlmIHdlIHdl cmUgYWJsZSB0byBmaW5pc2guICovCi0JaWYgKCFTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQor CWlmICghSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJZXJl cG9ydChMT0csCiAJCQkJKGVycm1zZygiYXV0b3ByZXdhcm0gc3VjY2Vzc2Z1bGx5IHByZXdh cm1lZCAlZCBvZiAlZCBwcmV2aW91c2x5LWxvYWRlZCBibG9ja3MiLAogCQkJCQkJYXB3X3N0 YXRlLT5wcmV3YXJtZWRfYmxvY2tzLCBudW1fZWxlbWVudHMpKSk7CmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9jb25uZWN0aW9uLmMKaW5kZXggNGM0ZjllYTg0YWYuLjQ1Zjg4NzcyMmRlIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9w b3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0xNjU0LDEyICsxNjU0LDExIEBAIHBnZmR3 X2dldF9jbGVhbnVwX3Jlc3VsdChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUs CiAJCQkJCXBnZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3 KCJQb3N0Z3Jlc0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJCS8qIFNsZWVwIHVudGlsIHRo ZXJlJ3Mgc29tZXRoaW5nIHRvIGRvICovCi0JCQkJd2MgPSBXYWl0SW50ZXJydXB0T3JTb2Nr ZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQl3YyA9IFdhaXRJbnRlcnJ1cHRPclNv Y2tldChJTlRFUlJVUFRfQ0ZJX01BU0ssCiAJCQkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwg V0xfU09DS0VUX1JFQURBQkxFIHwKIAkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKIAkJCQkJCQkJ CQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2VfY2xlYW51cF9yZXN1bHQpOwotCQkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvc291cmNlcy5zZ21sCmluZGV4IGZjNjQyZjVmNzEzLi4wMThkNjk3MGMyNCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvc291cmNlcy5zZ21sCkBAIC0xMDAwLDggKzEwMDAsNyBAQCBNZW1vcnlDb250ZXh0U3dp dGNoVG8oTWVtb3J5Q29udGV4dCBjb250ZXh0KQogc3RhdGljIHZvaWQKIGhhbmRsZV9zaWdo dXAoU0lHTkFMX0FSR1MpCiB7Ci0gICAgZ290X1NJR0hVUCA9IHRydWU7Ci0gICAgUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworICAgIFJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9DT05GSUdfUkVMT0FEKTsKIH0KIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgPC9wYXJh PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGY4ZGYxODY2MGVk Li45ZGMwOTk3OTc5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpA QCAtMzI0MywxMSArMzI0MywxMCBAQCBsYXp5X3RydW5jYXRlX2hlYXAoTFZSZWxTdGF0ZSAq dmFjcmVsKQogCQkJCXJldHVybjsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9DRklfTUFTSywKIAkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJ VF9JTlRFUlZBTCwKIAkJCQkJCQkJIFdBSVRfRVZFTlRfVkFDVVVNX1RSVU5DQVRFKTsKLQkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJfQogCiAJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMKaW5kZXggYWY2YjI3YjIxMzUu Ljk4ZWQ0MzFiNDcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z2RvaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2Vy dC5jCkBAIC0yMDQwLDggKzIwNDAsMTEgQEAgc3BnZG9pbnNlcnQoUmVsYXRpb24gaW5kZXgs IFNwR2lzdFN0YXRlICpzdGF0ZSwKIAkJICogcGVuZGluZywgYnJlYWsgb3V0IG9mIHRoZSBs b29wIGFuZCBkZWFsIHdpdGggdGhlIHNpdHVhdGlvbiBiZWxvdy4KIAkJICogU2V0IHJlc3Vs dCA9IGZhbHNlIGJlY2F1c2Ugd2UgbXVzdCByZXN0YXJ0IHRoZSBpbnNlcnRpb24gaWYgdGhl CiAJCSAqIGludGVycnVwdCBpc24ndCBhIHF1ZXJ5LWNhbmNlbC1vci1kaWUgY2FzZS4KKwkJ ICoKKwkJICogWFhYOiBJTlRFUlJVUFRfQ0ZJX01BU0sgY292ZXJzIG1vcmUgdGhhbiBqdXN0 IHF1ZXJ5IGNhbmNlbCBhbmQgZGllLgorCQkgKiBDb3VsZCB3ZSBiZSBtb3JlIHByZWNpc2Ug aGVyZT8KIAkJICovCi0JCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkpCisJ CWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKElOVEVSUlVQVF9DRklfTUFTSykp CiAJCXsKIAkJCXJlc3VsdCA9IGZhbHNlOwogCQkJYnJlYWs7CkBAIC0yMTY3LDcgKzIxNzAs NyBAQCBzcGdkb2luc2VydChSZWxhdGlvbiBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAog CQkJICogcmVwZWF0ZWRseSwgY2hlY2sgZm9yIHF1ZXJ5IGNhbmNlbCAoc2VlIGNvbW1lbnRz IGFib3ZlKS4KIAkJCSAqLwogCXByb2Nlc3NfaW5uZXJfdHVwbGU6Ci0JCQlpZiAoSU5URVJS VVBUU19QRU5ESU5HX0NPTkRJVElPTigpKQorCQkJaWYgKElOVEVSUlVQVFNfUEVORElOR19D T05ESVRJT04oSU5URVJSVVBUX0NGSV9NQVNLKSkKIAkJCXsKIAkJCQlyZXN1bHQgPSBmYWxz ZTsKIAkJCQlicmVhazsKQEAgLTIzNDMsNyArMjM0Niw3IEBAIHNwZ2RvaW5zZXJ0KFJlbGF0 aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJICogd2VyZSB0aGUgY2FzZSwgdGVs bGluZyB0aGUgY2FsbGVyIHRvIHJldHJ5IHdvdWxkIGNyZWF0ZSBhbiBpbmZpbml0ZQogCSAq IGxvb3AuCiAJICovCi0JQXNzZXJ0KElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKTsK KwlBc3NlcnQoSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKElOVEVSUlVQVF9DRklfTUFT SykpOwogCiAJLyoKIAkgKiBGaW5hbGx5LCBjaGVjayBmb3IgaW50ZXJydXB0cyBhZ2Fpbi4g IElmIHRoZXJlIHdhcyBhIHF1ZXJ5IGNhbmNlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL1JFQURNRS5wYXJhbGxlbAppbmRleCA5ZGYzZGE5MWIwYy4uYTM1OTNkZDRmNTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxl bAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUucGFyYWxsZWwKQEAg LTM3LDcgKzM3LDcgQEAgd2l0aCBmZXdlciBwYXJhbGxlbCB3b3JrZXJzIHRoYW4gaXQgb3Jp Z2luYWxseSByZXF1ZXN0ZWQsIHNvIGNhdGVyaW5nIHRvCiB0aGlzIGNhc2UgaW1wb3NlcyBu byBhZGRpdGlvbmFsIGJ1cmRlbi4KIAogV2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSAob3IgcGFy dGlhbCBtZXNzYWdlOyB2ZXJ5IGxhcmdlIG1lc3NhZ2VzIG1heSB3cmFwKSBpcwotc2VudCB0 byB0aGUgZXJyb3ItcmVwb3J0aW5nIHF1ZXVlLCBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0Ug aXMgc2VudCB0byB0aGUKK3NlbnQgdG8gdGhlIGVycm9yLXJlcG9ydGluZyBxdWV1ZSwgSU5U RVJSVVBUX1BBUkFMTEVMX01FU1NBR0UgaXMgc2VudCB0byB0aGUKIGluaXRpYXRpbmcgYmFj a2VuZC4gIFRoaXMgY2F1c2VzIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4g dGhlCiBpbml0aWF0aW5nIGJhY2tlbmQgdG8gcmVhZCBhbmQgcmV0aHJvdyB0aGUgbWVzc2Fn ZS4gIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlzCiBtYWtlcyBlcnJvciByZXBvcnRpbmcgaW4g cGFyYWxsZWwgbW9kZSAianVzdCB3b3JrIi4gIE9mIGNvdXJzZSwgdG8gd29yawpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggYmYyMTFlZmI2M2UuLjY4ZTZj MjI1MTJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTEx NSw5ICsxMTUsNiBAQCB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKICAqLwog aW50CQkJUGFyYWxsZWxXb3JrZXJOdW1iZXIgPSAtMTsKIAotLyogSXMgdGhlcmUgYSBwYXJh bGxlbCBtZXNzYWdlIHBlbmRpbmcgd2hpY2ggd2UgbmVlZCB0byByZWNlaXZlPyAqLwotdm9s YXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsTWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKLQog LyogQXJlIHdlIGluaXRpYWxpemluZyBhIHBhcmFsbGVsIHdvcmtlcj8gKi8KIGJvb2wJCUlu aXRpYWxpemluZ1BhcmFsbGVsV29ya2VyID0gZmFsc2U7CiAKQEAgLTEyNyw5ICsxMjQsNiBA QCBzdGF0aWMgRml4ZWRQYXJhbGxlbFN0YXRlICpNeUZpeGVkUGFyYWxsZWxTdGF0ZTsKIC8q IExpc3Qgb2YgYWN0aXZlIHBhcmFsbGVsIGNvbnRleHRzLiAqLwogc3RhdGljIGRsaXN0X2hl YWQgcGN4dF9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQocGN4dF9saXN0KTsKIAotLyogQmFj a2VuZC1sb2NhbCBjb3B5IG9mIGRhdGEgZnJvbSBGaXhlZFBhcmFsbGVsU3RhdGUuICovCi1z dGF0aWMgcGlkX3QgUGFyYWxsZWxMZWFkZXJQaWQ7Ci0KIC8qCiAgKiBMaXN0IG9mIGludGVy bmFsIHBhcmFsbGVsIHdvcmtlciBlbnRyeSBwb2ludHMuICBXZSBuZWVkIHRoaXMgZm9yCiAg KiByZWFzb25zIGV4cGxhaW5lZCBpbiBMb29rdXBQYXJhbGxlbFdvcmtlckZ1bmN0aW9uKCks IGJlbG93LgpAQCAtMjQzLDcgKzIzNyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJICogV2UgY2FuIGRlYWwgd2l0aCB0aGF0IGVkZ2UgY2Fz ZSBieSBwcmV0ZW5kaW5nIG5vIHdvcmtlcnMgd2VyZQogCSAqIHJlcXVlc3RlZC4KIAkgKi8K LQlpZiAoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKQorCWlmICghSU5URVJSVVBU U19DQU5fQkVfUFJPQ0VTU0VEKElOVEVSUlVQVF9DRklfTUFTSykpCiAJCXBjeHQtPm53b3Jr ZXJzID0gMDsKIAogCS8qCkBAIC03NTksMTYgKzc1MywyMCBAQCBXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJewogCQkJCS8qCiAJ CQkJICogV29ya2VyIG5vdCB5ZXQgc3RhcnRlZCwgc28gd2UgbXVzdCB3YWl0LiAgVGhlIHBv c3RtYXN0ZXIKLQkJCQkgKiB3aWxsIG5vdGlmeSB1cyBpZiB0aGUgd29ya2VyJ3Mgc3RhdGUg Y2hhbmdlcy4gIFRoZQotCQkJCSAqIGludGVycnVwdCBtaWdodCBhbHNvIGdldCBzZXQgZm9y IHNvbWUgb3RoZXIgcmVhc29uLCBidXQgaWYKLQkJCQkgKiBzbyB3ZSdsbCBqdXN0IGVuZCB1 cCB3YWl0aW5nIGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCisJCQkJICogd2lsbCBub3Rp ZnkgdXMgd2l0aCBJTlRFUlJVUFRfR0VORVJBTCBpZiB0aGUgd29ya2VyJ3Mgc3RhdGUKKwkJ CQkgKiBjaGFuZ2VzLiAgVGhlIGludGVycnVwdCBtaWdodCBhbHNvIGdldCBzZXQgZm9yIHNv bWUgb3RoZXIKKwkJCQkgKiByZWFzb24sIGJ1dCBpZiBzbyB3ZSdsbCBqdXN0IGVuZCB1cCB3 YWl0aW5nIGZvciB0aGUgc2FtZQorCQkJCSAqIHdvcmtlciBhZ2Fpbi4KIAkJCQkgKi8KLQkJ CQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQlyYyA9 IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUws CiAJCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJ CQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCiAJCQkJaWYgKHJj ICYgV0xfSU5URVJSVVBUKQorCQkJCXsKKwkJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCQkJCX0KIAkJCX0K IAkJfQogCkBAIC04ODMsNyArODgxLDcgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmlu aXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCX0KIAkJfQogCi0JCSh2b2lkKSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCSh2b2lkKSBXYWl0SW50ZXJy dXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAtMSwKIAkJCQkJCQkgV0FJVF9F VkVOVF9QQVJBTExFTF9GSU5JU0gpOwogCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CkBAIC0xMDI3LDIxICsxMDI1LDYgQEAgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZv aWQpCiAJcmV0dXJuICFkbGlzdF9pc19lbXB0eSgmcGN4dF9saXN0KTsKIH0KIAotLyoKLSAq IEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwg d29ya2VyIG1lc3NhZ2UuCi0gKgotICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEg c2lnbmFsIGhhbmRsZXIhICBBbGwgd2UgY2FuIGRvIGlzIHNldAotICogYSBmbGFnIHRoYXQg d2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQot ICogUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXMoKS4KLSAqLwotdm9pZAotSGFuZGxlUGFyYWxs ZWxNZXNzYWdlSW50ZXJydXB0KHZvaWQpCi17Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7 Ci0JUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IHRydWU7Ci0JUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwotfQotCiAvKgogICogUHJvY2VzcyBhbnkgcXVldWVkIHByb3Rv Y29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgd29ya2Vycy4KICAqLwpAQCAt MTA3Nyw3ICsxMDYwLDcgQEAgUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXModm9pZCkKIAlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsKIAogCS8qIE9L IHRvIHByb2Nlc3MgbWVzc2FnZXMuICBSZXNldCB0aGUgZmxhZyBzYXlpbmcgdGhlcmUgYXJl IG1vcmUgdG8gZG8uICovCi0JUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFKTsKIAogCWRsaXN0X2Zv cmVhY2goaXRlciwgJnBjeHRfbGlzdCkKIAl7CkBAIC0xMzU4LDcgKzEzNDEsNiBAQCBQYXJh bGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJTXlGaXhlZFBhcmFsbGVsU3RhdGUg PSBmcHM7CiAKIAkvKiBBcnJhbmdlIHRvIHNpZ25hbCB0aGUgbGVhZGVyIGlmIHdlIGV4aXQu ICovCi0JUGFyYWxsZWxMZWFkZXJQaWQgPSBmcHMtPnBhcmFsbGVsX2xlYWRlcl9waWQ7CiAJ UGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVyID0gZnBzLT5wYXJhbGxlbF9sZWFkZXJfcHJvY19u dW1iZXI7CiAJYmVmb3JlX3NobWVtX2V4aXQoUGFyYWxsZWxXb3JrZXJTaHV0ZG93biwgUG9p bnRlckdldERhdHVtKHNlZykpOwogCkBAIC0xMzc0LDggKzEzNTYsNyBAQCBQYXJhbGxlbFdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJv Yyk7CiAJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKIAlwcV9yZWRpcmVj dF90b19zaG1fbXEoc2VnLCBtcWgpOwotCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoZnBzLT5w YXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcHJv Y19udW1iZXIpOworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoZnBzLT5wYXJhbGxlbF9sZWFk ZXJfcHJvY19udW1iZXIpOwogCiAJLyoKIAkgKiBIb29yYXkhIFByaW1hcnkgaW5pdGlhbGl6 YXRpb24gaXMgY29tcGxldGUuICBOb3csIHdlIG5lZWQgdG8gc2V0IHVwIG91cgpAQCAtMTYx NCw5ICsxNTk1LDggQEAgUGFyYWxsZWxXb3JrZXJSZXBvcnRMYXN0UmVjRW5kKFhMb2dSZWNQ dHIgbGFzdF94bG9nX2VuZCkKIHN0YXRpYyB2b2lkCiBQYXJhbGxlbFdvcmtlclNodXRkb3du KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JU2VuZFByb2NTaWduYWwoUGFyYWxsZWxMZWFk ZXJQaWQsCi0JCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCSAgIFBhcmFs bGVsTGVhZGVyUHJvY051bWJlcik7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUEFSQUxM RUxfTUVTU0FHRSwKKwkJCQkgIFBhcmFsbGVsTGVhZGVyUHJvY051bWJlcik7CiAKIAlkc21f ZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNDc0MGRjODllZjguLjRmMjE4ZWVjNDFk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC05MzgyLDExICs5MzgyLDEw IEBAIGRvX3BnX2JhY2t1cF9zdG9wKEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCB3YWl0Zm9y YXJjaGl2ZSkKIAkJCQlyZXBvcnRlZF93YWl0aW5nID0gdHJ1ZTsKIAkJCX0KIAotCQkJKHZv aWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCSh2b2lkKSBX YWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSywKIAkJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkgMTAwMEws CiAJCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKLQkJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJaWYgKCsrd2FpdHMgPj0g c2Vjb25kc19iZWZvcmVfd2FybmluZykKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ2Z1bmNzLmMKaW5kZXggZmZlMDIzNzMyNmIuLmQ2ZGVmZTI2Yjk1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtNzA4LDYgKzcwOCw4IEBA IHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgZXJybXNnKCJmYWlsZWQgdG8g c2VuZCBzaWduYWwgdG8gcG9zdG1hc3RlcjogJW0iKSkpOwogCX0KIAorCS8qIFhYWDogd2Ug Y291bGQgaW50ZXJydXB0IHRoZSBzdGFydHVwIHByb2Nlc3MgZGlyZWN0bHkgKi8KKwogCS8q IHJldHVybiBpbW1lZGlhdGVseSBpZiB3YWl0aW5nIHdhcyBub3QgcmVxdWVzdGVkICovCiAJ aWYgKCF3YWl0KQogCQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKQEAgLTcxOCwxNCArNzIwLDEy IEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwogCi0J CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQogCQlpZiAoIVJlY292ZXJ5 SW5Qcm9ncmVzcygpKQogCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiAKIAkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRf R0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSywKIAkJ CQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRI LAogCQkJCQkJICAgMTAwMEwgLyBXQUlUU19QRVJfU0VDT05ELAogCQkJCQkJICAgV0FJVF9F VkVOVF9QUk9NT1RFKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292 ZXJ5LmMKaW5kZXggMWUzMWIwYjc2MWEuLmY0MjU1OTg2MWU3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtMzAwNCwxOCArMzAwNCwxMiBA QCByZWNvdmVyeUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAl3aGls ZSAodHJ1ZSkKIAl7Ci0JCS8qCi0JCSAqIElOVEVSUlVQVF9HRU5FUkFMIGlzIHVzZWQgZm9y IGFsbCB0aGUgdXN1YWwgaW50ZXJydXB0cywgbGlrZSBjb25maWcKLQkJICogcmVsb2Fkcy4g IFRoZSB3YWtldXBzIHdoZW4gbW9yZSBXQUwgYXJyaXZlIHVzZSBhIGRpZmZlcmVudAotCQkg KiBpbnRlcnJ1cHQgbnVtYmVyIChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpIHNvIHRo YXQgbW9yZSBXQUwKLQkJICogYXJyaXZpbmcgZG9uJ3Qgd2FrZSB1cCB0aGUgc3RhcnR1cCBw cm9jZXNzIGV4Y2Vzc2l2ZWx5IHdoZW4gd2UncmUKLQkJICogd2FpdGluZyBpbiBvdGhlciBw bGFjZXMsIGxpa2UgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cy4KLQkJICovCi0JCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQogCQkvKiBUaGlzIG1pZ2h0IGNoYW5nZSBy ZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkuICovCiAJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVy cnVwdHMoKTsKIAorCQkvKgorCQkgKiBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgaW5k aWNhdGVzIHRoYXQgbW9yZSBXQUwgaGFzIGFycml2ZWQuCisJCSAqLwogCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwogCQlpZiAoQ2hlY2tGb3JTdGFu ZGJ5VHJpZ2dlcigpKQogCQkJYnJlYWs7CkBAIC0zMDM3LDggKzMwMzEsOCBAQCByZWNvdmVy eUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZWxvZyhERUJVRzIs ICJyZWNvdmVyeSBhcHBseSBkZWxheSAlbGQgbWlsbGlzZWNvbmRzIiwgbXNlY3MpOwogCi0J CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVF IHwKLQkJCQkJCQkgMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX1NUQVJUVVBfUFJPQ19NQVNLIHwKKwkJCQkJCQkgSU5URVJSVVBU X1JFQ09WRVJZX0NPTlRJTlVFLAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkgbXNlY3MsCiAJCQkJCQkJIFdBSVRf RVZFTlRfUkVDT1ZFUllfQVBQTFlfREVMQVkpOwpAQCAtMzY5NiwxOCArMzY5MCwxOCBAQCBX YWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFu ZEFjY2VzcywKIAkJCQkJCS8qIERvIGJhY2tncm91bmQgdGFza3MgdGhhdCBtaWdodCBiZW5l Zml0IHVzIGxhdGVyLiAqLwogCQkJCQkJS25vd25Bc3NpZ25lZFRyYW5zYWN0aW9uSWRzSWRs ZU1haW50ZW5hbmNlKCk7CiAKLQkJCQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5U RVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFIHwKLQkJCQkJCQkJCQkJIDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfU1RBUlRV UF9QUk9DX01BU0sgfAorCQkJCQkJCQkJCQkgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVF LAogCQkJCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8CiAJCQkJCQkJCQkJ CSBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkJCQkgd2FpdF90aW1lLAogCQkJCQkJ CQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7Ci0J CQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwogCQkJ CQkJbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCi0JCQkJCQkvKiBIYW5kbGUgaW50 ZXJydXB0IHNpZ25hbHMgb2Ygc3RhcnR1cCBwcm9jZXNzICovCi0JCQkJCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJCQkJCQkvKiBIYW5kbGUgc3RhbmRhcmQgaW50 ZXJydXB0cyBvZiBzdGFydHVwIHByb2Nlc3MgKi8KIAkJCQkJCVByb2Nlc3NTdGFydHVwUHJv Y0ludGVycnVwdHMoKTsKKworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09W RVJZX0NPTlRJTlVFKTsKIAkJCQkJfQogCQkJCQlsYXN0X2ZhaWxfdGltZSA9IG5vdzsKIAkJ CQkJY3VycmVudFNvdXJjZSA9IFhMT0dfRlJPTV9BUkNISVZFOwpAQCAtMzk3Myw4ICszOTY3 LDggQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBi b29sIHJhbmRBY2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1vcmUgV0FMIHRvIGFycml2ZSwg d2hlbiB3ZSB3aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVkaWF0ZWx5IGJ5IHRoZSBXQUwg cmVjZWl2ZXIuCiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElO VEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSB8Ci0JCQkJCQkJCQkJIDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9TVEFSVFVQ X1BST0NfTUFTSyB8CisJCQkJCQkJCQkJIElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSwK IAkJCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJ CQkJCQkgLTFMLAogCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0p OwpAQCAtMzk5OCw3ICszOTkyLDYgQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhM b2dSZWNQdHIgUmVjUHRyLCBib29sIHJhbmRBY2Nlc3MsCiAJCSAqIFRoaXMgcG9zc2libHkt bG9uZyBsb29wIG5lZWRzIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAKIAkJICog cHJvY2Vzcy4KIAkJICovCi0JCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAkJUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyBiL3NyYy9iYWNrZW5k L2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKaW5kZXggMDU0NDNlMDg1M2EuLjUwZWRj Njc1MzRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJv dHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMK QEAgLTE1NSw2ICsxNTUsOCBAQCB0aHJvdHRsZShiYnNpbmtfdGhyb3R0bGUgKnNpbmssIHNp emVfdCBpbmNyZW1lbnQpCiAJCQkJCXNsZWVwOwogCQlpbnQJCQl3YWl0X3Jlc3VsdDsKIAor CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCiAJCS8qIFRpbWUgZWxhcHNlZCBzaW5jZSB0 aGUgbGFzdCBtZWFzdXJlbWVudCAoYW5kIHBvc3NpYmxlIHdha2UgdXApLiAqLwogCQllbGFw c2VkID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpIC0gc2luay0+dGhyb3R0bGVkX2xhc3Q7CiAK QEAgLTE2MywyMyArMTY1LDE1IEBAIHRocm90dGxlKGJic2lua190aHJvdHRsZSAqc2luaywg c2l6ZV90IGluY3JlbWVudCkKIAkJaWYgKHNsZWVwIDw9IDApCiAJCQlicmVhazsKIAotCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci0KLQkJLyogV2UncmUgZWF0aW5n IGEgd2FrZXVwLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwotCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwotCiAJCS8qCiAJCSAqIChUQVJfU0VORF9TSVpFIC8gdGhyb3R0bGluZ19z YW1wbGUgKiBlbGFwc2VkX21pbl91bml0KSBzaG91bGQgYmUKIAkJICogdGhlIG1heGltdW0g dGltZSB0byBzbGVlcC4gVGh1cyB0aGUgY2FzdCB0byBsb25nIGlzIHNhZmUuCiAJCSAqLwot CQl3YWl0X3Jlc3VsdCA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwK KwkJd2FpdF9yZXN1bHQgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSywKIAkJ CQkJCQkJCVdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAogCQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAogCQkJCQkJCQkJV0FJVF9FVkVO VF9CQVNFX0JBQ0tVUF9USFJPVFRMRSk7CiAKLQkJaWYgKHdhaXRfcmVzdWx0ICYgV0xfSU5U RVJSVVBUKQotCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQogCQkvKiBEb25lIHdhaXRp bmc/ICovCiAJCWlmICh3YWl0X3Jlc3VsdCAmIFdMX1RJTUVPVVQpCiAJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCmluZGV4IDIwMWQ3MTUwMDgzLi45ODljNTBlMWVlMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCkBAIC0zOSw3ICszOSw3IEBACiAgKgkgIGlzIG5vIG5lZWQgZm9y IFdBTCBzdXBwb3J0IG9yIGZzeW5jJ2luZy4KICAqCiAgKiAzLiBFdmVyeSBiYWNrZW5kIHRo YXQgaXMgbGlzdGVuaW5nIG9uIGF0IGxlYXN0IG9uZSBjaGFubmVsIHJlZ2lzdGVycyBieQot ICoJICBlbnRlcmluZyBpdHMgUElEIGludG8gdGhlIGFycmF5IGluIEFzeW5jUXVldWVDb250 cm9sLiBJdCB0aGVuIHNjYW5zIGFsbAorICoJICBlbnRlcmluZyBpdHNlbGYgaW50byB0aGUg YXJyYXkgaW4gQXN5bmNRdWV1ZUNvbnRyb2wuIEl0IHRoZW4gc2NhbnMgYWxsCiAgKgkgIGlu Y29taW5nIG5vdGlmaWNhdGlvbnMgaW4gdGhlIGNlbnRyYWwgcXVldWUgYW5kIGZpcnN0IGNv bXBhcmVzIHRoZQogICoJICBkYXRhYmFzZSBPSUQgb2YgdGhlIG5vdGlmaWNhdGlvbiB3aXRo IGl0cyBvd24gZGF0YWJhc2UgT0lEIGFuZCB0aGVuCiAgKgkgIGNvbXBhcmVzIHRoZSBub3Rp ZmllZCBjaGFubmVsIHdpdGggdGhlIGxpc3Qgb2YgY2hhbm5lbHMgdGhhdCBpdCBsaXN0ZW5z CkBAIC03Miw3ICs3Miw3IEBACiAgKgkgIFRoZW4gd2Ugc2lnbmFsIGFueSBiYWNrZW5kcyB0 aGF0IG1heSBiZSBpbnRlcmVzdGVkIGluIG91ciBtZXNzYWdlcwogICoJICAoaW5jbHVkaW5n IG91ciBvd24gYmFja2VuZCwgaWYgbGlzdGVuaW5nKS4gIFRoaXMgaXMgZG9uZSBieQogICoJ ICBTaWduYWxCYWNrZW5kcygpLCB3aGljaCBzY2FucyB0aGUgbGlzdCBvZiBsaXN0ZW5pbmcg YmFja2VuZHMgYW5kIHNlbmRzIGEKLSAqCSAgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUIHNp Z25hbCB0byBldmVyeSBsaXN0ZW5pbmcgYmFja2VuZCAod2UgZG9uJ3QKKyAqCSAgSU5URVJS VVBUX0FTWU5DX05PVElGWSBpbnRlcnJ1cHQgdG8gZXZlcnkgbGlzdGVuaW5nIGJhY2tlbmQg KHdlIGRvbid0CiAgKgkgIGtub3cgd2hpY2ggYmFja2VuZCBpcyBsaXN0ZW5pbmcgb24gd2hp Y2ggY2hhbm5lbCBzbyB3ZSBtdXN0IHNpZ25hbCB0aGVtCiAgKgkgIGFsbCkuICBXZSBjYW4g ZXhjbHVkZSBiYWNrZW5kcyB0aGF0IGFyZSBhbHJlYWR5IHVwIHRvIGRhdGUsIHRob3VnaCwg YW5kCiAgKgkgIHdlIGNhbiBhbHNvIGV4Y2x1ZGUgYmFja2VuZHMgdGhhdCBhcmUgaW4gb3Ro ZXIgZGF0YWJhc2VzICh1bmxlc3MgdGhleQpAQCAtOTAsMTMgKzkwLDExIEBACiAgKgkgIGZy b250ZW5kIHVudGlsIHRoZSBjb21tYW5kIGlzIGRvbmU7IGJ1dCBub3RpZmllcyB0byBvdGhl ciBiYWNrZW5kcwogICoJICBzaG91bGQgZ28gb3V0IGltbWVkaWF0ZWx5IGFmdGVyIGVhY2gg Y29tbWl0LgogICoKLSAqIDUuIFVwb24gcmVjZWlwdCBvZiBhIFBST0NTSUdfTk9USUZZX0lO VEVSUlVQVCBzaWduYWwsIHRoZSBzaWduYWwgaGFuZGxlcgotICoJICByYWlzZXMgSU5URVJS VVBUX0dFTkVSQUwsIHdoaWNoIHRyaWdnZXJzIHRoZSBldmVudCB0byBiZSBwcm9jZXNzZWQK LSAqCSAgaW1tZWRpYXRlbHkgaWYgdGhpcyBiYWNrZW5kIGlzIGlkbGUgKGkuZS4sIGl0IGlz IHdhaXRpbmcgZm9yIGEgZnJvbnRlbmQKKyAqIDUuIFRoZSBJTlRFUlJVUFRfQVNZTkNfTk9U SUZZIGludGVycnVwdCBpcyBwcm9jZXNzZWQgaW1tZWRpYXRlbHkgaW4gdGhlCisgKgkgIGxp c3RlbmluZyBiYWNrZW5kIGlmIGl0IGlzIGlkbGUgKGkuZS4sIGl0IGlzIHdhaXRpbmcgZm9y IGEgZnJvbnRlbmQKICAqCSAgY29tbWFuZCBhbmQgaXMgbm90IHdpdGhpbiBhIHRyYW5zYWN0 aW9uIGJsb2NrLiBDLmYuCi0gKgkgIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkpLiAg T3RoZXJ3aXNlIHRoZSBoYW5kbGVyIG1heSBvbmx5IHNldCBhCi0gKgkgIGZsYWcsIHdoaWNo IHdpbGwgY2F1c2UgdGhlIHByb2Nlc3NpbmcgdG8gb2NjdXIganVzdCBiZWZvcmUgd2UgbmV4 dCBnbwotICoJICBpZGxlLgorICoJICBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpKS4g IE90aGVyd2lzZSB0aGUgaW50ZXJydXB0IGlzIHByb2Nlc3NlZAorICoJICBsYXRlciwganVz dCBiZWZvcmUgd2UgbmV4dCBnbyBpZGxlLgogICoKICAqCSAgSW5ib3VuZC1ub3RpZnkgcHJv Y2Vzc2luZyBjb25zaXN0cyBvZiByZWFkaW5nIGFsbCBvZiB0aGUgbm90aWZpY2F0aW9ucwog ICoJICB0aGF0IGhhdmUgYXJyaXZlZCBzaW5jZSBzY2FubmluZyBsYXN0IHRpbWUuIFdlIHJl YWQgZXZlcnkgbm90aWZpY2F0aW9uCkBAIC0xMjcsNyArMTI1LDYgQEAKIAogI2luY2x1ZGUg PGxpbWl0cy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgog CiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3NscnUu aCIKQEAgLTE0Myw3ICsxNDAsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIK LSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9n dWNfaG9va3MuaCIKQEAgLTI3MSw3ICsyNjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZUJh Y2tlbmRTdGF0dXMKICAqIE5vdGlmeVF1ZXVlVGFpbExvY2ssIHRoZW4gTm90aWZ5UXVldWVM b2NrLCBhbmQgbGFzdGx5IFNMUlUgYmFuayBsb2NrLgogICoKICAqIEVhY2ggYmFja2VuZCB1 c2VzIHRoZSBiYWNrZW5kW10gYXJyYXkgZW50cnkgd2l0aCBpbmRleCBlcXVhbCB0byBpdHMK LSAqIFByb2NOdW1iZXIuICBXZSByZWx5IG9uIHRoaXMgdG8gbWFrZSBTZW5kUHJvY1NpZ25h bCBmYXN0LgorICogUHJvY051bWJlci4gIFdlIHJlbHkgb24gdGhpcyBmb3Igc2VuZGluZyBp bnRlcnJ1cHRzLgogICoKICAqIFRoZSBiYWNrZW5kW10gYXJyYXkgZW50cmllcyBmb3IgYWN0 aXZlbHktbGlzdGVuaW5nIGJhY2tlbmRzIGFyZSB0aHJlYWRlZAogICogdG9nZXRoZXIgdXNp bmcgZmlyc3RMaXN0ZW5lciBhbmQgdGhlIG5leHRMaXN0ZW5lciBsaW5rcywgc28gdGhhdCB3 ZSBjYW4KQEAgLTQwNCwxNSArNDAwLDYgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkhhc2gKIAog c3RhdGljIE5vdGlmaWNhdGlvbkxpc3QgKnBlbmRpbmdOb3RpZmllcyA9IE5VTEw7CiAKLS8q Ci0gKiBJbmJvdW5kIG5vdGlmaWNhdGlvbnMgYXJlIGluaXRpYWxseSBwcm9jZXNzZWQgYnkg SGFuZGxlTm90aWZ5SW50ZXJydXB0KCksCi0gKiBjYWxsZWQgZnJvbSBpbnNpZGUgYSBzaWdu YWwgaGFuZGxlci4gVGhhdCBqdXN0IHNldHMgdGhlCi0gKiBub3RpZnlJbnRlcnJ1cHRQZW5k aW5nIGZsYWcgYW5kIHJhaXNlcyB0aGUgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0Lgot ICogUHJvY2Vzc05vdGlmeUludGVycnVwdCgpIHdpbGwgdGhlbiBiZSBjYWxsZWQgd2hlbmV2 ZXIgaXQncyBzYWZlIHRvIGFjdHVhbGx5Ci0gKiBkZWFsIHdpdGggdGhlIGludGVycnVwdC4K LSAqLwotdm9sYXRpbGUgc2lnX2F0b21pY190IG5vdGlmeUludGVycnVwdFBlbmRpbmcgPSBm YWxzZTsKLQogLyogVHJ1ZSBpZiB3ZSd2ZSByZWdpc3RlcmVkIGFuIG9uX3NobWVtX2V4aXQg Y2xlYW51cCAqLwogc3RhdGljIGJvb2wgdW5saXN0ZW5FeGl0UmVnaXN0ZXJlZCA9IGZhbHNl OwogCkBAIC0xNTgxLDI5ICsxNTY4LDI1IEBAIGFzeW5jUXVldWVGaWxsV2FybmluZyh2b2lk KQogc3RhdGljIHZvaWQKIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiB7Ci0JaW50MzIJICAgKnBp ZHM7CiAJUHJvY051bWJlciAqcHJvY25vczsKIAlpbnQJCQljb3VudDsKIAogCS8qCiAJICog SWRlbnRpZnkgYmFja2VuZHMgdGhhdCB3ZSBuZWVkIHRvIHNpZ25hbC4gIFdlIGRvbid0IHdh bnQgdG8gc2VuZAogCSAqIHNpZ25hbHMgd2hpbGUgaG9sZGluZyB0aGUgTm90aWZ5UXVldWVM b2NrLCBzbyB0aGlzIGxvb3AganVzdCBidWlsZHMgYQotCSAqIGxpc3Qgb2YgdGFyZ2V0IFBJ RHMuCisJICogbGlzdCBvZiB0YXJnZXQgYmFja2VuZHMuCiAJICoKIAkgKiBYWFggaW4gcHJp bmNpcGxlIHRoZXNlIHBhbGxvY3MgY291bGQgZmFpbCwgd2hpY2ggd291bGQgYmUgYmFkLiBN YXliZQogCSAqIHByZWFsbG9jYXRlIHRoZSBhcnJheXM/ICBUaGV5J3JlIG5vdCB0aGF0IGxh cmdlLCB0aG91Z2guCiAJICovCi0JcGlkcyA9IChpbnQzMiAqKSBwYWxsb2MoTWF4QmFja2Vu ZHMgKiBzaXplb2YoaW50MzIpKTsKIAlwcm9jbm9zID0gKFByb2NOdW1iZXIgKikgcGFsbG9j KE1heEJhY2tlbmRzICogc2l6ZW9mKFByb2NOdW1iZXIpKTsKIAljb3VudCA9IDA7CiAKIAlM V0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAlmb3IgKFBy b2NOdW1iZXIgaSA9IFFVRVVFX0ZJUlNUX0xJU1RFTkVSOyBpICE9IElOVkFMSURfUFJPQ19O VU1CRVI7IGkgPSBRVUVVRV9ORVhUX0xJU1RFTkVSKGkpKQogCXsKLQkJaW50MzIJCXBpZCA9 IFFVRVVFX0JBQ0tFTkRfUElEKGkpOwogCQlRdWV1ZVBvc2l0aW9uIHBvczsKIAotCQlBc3Nl cnQocGlkICE9IEludmFsaWRQaWQpOwogCQlwb3MgPSBRVUVVRV9CQUNLRU5EX1BPUyhpKTsK IAkJaWYgKFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPT0gTXlEYXRhYmFzZUlkKQogCQl7CkBA IC0xNjI1LDM4ICsxNjA4LDI3IEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiAJCQkJY29udGlu dWU7CiAJCX0KIAkJLyogT0ssIG5lZWQgdG8gc2lnbmFsIHRoaXMgb25lICovCi0JCXBpZHNb Y291bnRdID0gcGlkOwogCQlwcm9jbm9zW2NvdW50XSA9IGk7CiAJCWNvdW50Kys7CiAJfQog CUxXTG9ja1JlbGVhc2UoTm90aWZ5UXVldWVMb2NrKTsKIAotCS8qIE5vdyBzZW5kIHNpZ25h bHMgKi8KKwkvKiBOb3cgc2VuZCB0aGUgaW50ZXJydXB0cyAqLwogCWZvciAoaW50IGkgPSAw OyBpIDwgY291bnQ7IGkrKykKIAl7Ci0JCWludDMyCQlwaWQgPSBwaWRzW2ldOworCQlQcm9j TnVtYmVyIHByb2NubyA9IHByb2Nub3NbaV07CiAKIAkJLyoKLQkJICogSWYgd2UgYXJlIHNp Z25hbGluZyBvdXIgb3duIHByb2Nlc3MsIG5vIG5lZWQgdG8gaW52b2x2ZSB0aGUga2VybmVs OwotCQkgKiBqdXN0IHNldCB0aGUgZmxhZyBkaXJlY3RseS4KKwkJICogTm90ZTogaXQncyB1 bmxpa2VseSBidXQgY2VydGFpbmx5IHBvc3NpYmxlIHRoYXQgdGhlIGJhY2tlbmQgZXhpdGVk CisJCSAqIHNpbmNlIHdlIHJlbGVhc2VkIE5vdGlmeVF1ZXVlTG9jay4gV2UnbGwgc2VuZCB0 aGUgaW50ZXJydXB0IHRvCisJCSAqIHdyb25nIGJhY2tlbmQgaW4gdGhhdCBjYXNlLCBidXQg dGhhdCdzIGhhcm1sZXNzLgogCQkgKi8KLQkJaWYgKHBpZCA9PSBNeVByb2NQaWQpCi0JCXsK LQkJCW5vdGlmeUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCQkJY29udGludWU7Ci0JCX0K LQotCQkvKgotCQkgKiBOb3RlOiBhc3N1bWluZyB0aGluZ3MgYXJlbid0IGJyb2tlbiwgYSBz aWduYWwgZmFpbHVyZSBoZXJlIGNvdWxkCi0JCSAqIG9ubHkgb2NjdXIgaWYgdGhlIHRhcmdl dCBiYWNrZW5kIGV4aXRlZCBzaW5jZSB3ZSByZWxlYXNlZAotCQkgKiBOb3RpZnlRdWV1ZUxv Y2s7IHdoaWNoIGlzIHVubGlrZWx5IGJ1dCBjZXJ0YWlubHkgcG9zc2libGUuIFNvIHdlCi0J CSAqIGp1c3QgbG9nIGEgbG93LWxldmVsIGRlYnVnIG1lc3NhZ2UgaWYgaXQgaGFwcGVucy4K LQkJICovCi0JCWlmIChTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfTk9USUZZX0lOVEVS UlVQVCwgcHJvY25vc1tpXSkgPCAwKQotCQkJZWxvZyhERUJVRzMsICJjb3VsZCBub3Qgc2ln bmFsIGJhY2tlbmQgd2l0aCBQSUQgJWQ6ICVtIiwgcGlkKTsKKwkJaWYgKHByb2NubyA9PSBN eVByb2NOdW1iZXIpCisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQVNZTkNfTk9USUZZ KTsKKwkJZWxzZQorCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfQVNZTkNfTk9USUZZLCBw cm9jbm8pOwogCX0KIAotCXBmcmVlKHBpZHMpOwogCXBmcmVlKHByb2Nub3MpOwogfQogCkBA IC0xNzkzLDM5ICsxNzY1LDEyIEBAIEF0U3ViQWJvcnRfTm90aWZ5KHZvaWQpCiAJfQogfQog Ci0vKgotICogSGFuZGxlTm90aWZ5SW50ZXJydXB0Ci0gKgotICoJCVNpZ25hbCBoYW5kbGVy IHBvcnRpb24gb2YgaW50ZXJydXB0IGhhbmRsaW5nLiBMZXQgdGhlIGJhY2tlbmQga25vdwot ICoJCXRoYXQgdGhlcmUncyBhIHBlbmRpbmcgbm90aWZ5IGludGVycnVwdC4gSWYgd2UncmUg Y3VycmVudGx5IHJlYWRpbmcKLSAqCQlmcm9tIHRoZSBjbGllbnQsIHRoaXMgd2lsbCBpbnRl cnJ1cHQgdGhlIHJlYWQgYW5kCi0gKgkJUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3 aWxsIGNhbGwgUHJvY2Vzc05vdGlmeUludGVycnVwdCgpLgotICovCi12b2lkCi1IYW5kbGVO b3RpZnlJbnRlcnJ1cHQodm9pZCkKLXsKLQkvKgotCSAqIE5vdGU6IHRoaXMgaXMgY2FsbGVk IGJ5IGEgU0lHTkFMIEhBTkRMRVIuIFlvdSBtdXN0IGJlIHZlcnkgd2FyeSB3aGF0Ci0JICog eW91IGRvIGhlcmUuCi0JICovCi0KLQkvKiBzaWduYWwgdGhhdCB3b3JrIG5lZWRzIHRvIGJl IGRvbmUgKi8KLQlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQotCS8qIG1ha2Ug c3VyZSB0aGUgZXZlbnQgaXMgcHJvY2Vzc2VkIGluIGR1ZSBjb3Vyc2UgKi8KLQlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci19Ci0KIC8qCiAgKiBQcm9jZXNzTm90aWZ5 SW50ZXJydXB0CiAgKgotICoJCVRoaXMgaXMgY2FsbGVkIGlmIHdlIHNlZSBub3RpZnlJbnRl cnJ1cHRQZW5kaW5nIHNldCwganVzdCBiZWZvcmUKLSAqCQl0cmFuc21pdHRpbmcgUmVhZHlG b3JRdWVyeSBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQgY29tbWFuZCwgYW5kCi0gKgkJYWxz byBpZiBhIG5vdGlmeSBzaWduYWwgb2NjdXJzIHdoaWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJv bnRlbmQuCi0gKgkJSGFuZGxlTm90aWZ5SW50ZXJydXB0KCkgd2lsbCBjYXVzZSB0aGUgcmVh ZCB0byBiZSBpbnRlcnJ1cHRlZCB3aXRoCi0gKgkJSU5URVJSVVBUX0dFTkVSQUwsIGFuZCB0 aGlzIHJvdXRpbmUgd2lsbCBnZXQgY2FsbGVkLiAgSWYgd2UgYXJlIHRydWx5Ci0gKgkJaWRs ZSAoaWUsICpub3QqIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrKSwgcHJvY2VzcyB0aGUg aW5jb21pbmcKLSAqCQlub3RpZmllcy4KKyAqCQlUaGlzIGlzIGNhbGxlZCBpZiB3ZSBzZWUg SU5URVJSVVBUX0FTWU5DX05PVElGWSBzZXQsIGp1c3QgYmVmb3JlCisgKgkJdHJhbnNtaXR0 aW5nIFJlYWR5Rm9yUXVlcnkgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNvbW1hbmQsIGFu ZCBhbHNvCisgKgkJaWYgYSBub3RpZnkgc2lnbmFsIG9jY3VycyB3aGlsZSByZWFkaW5nIGZy b20gdGhlIGZyb250ZW5kLgogICoKICAqCQlJZiAiZmx1c2giIGlzIHRydWUsIGZvcmNlIGFu eSBmcm9udGVuZCBtZXNzYWdlcyBvdXQgaW1tZWRpYXRlbHkuCiAgKgkJVGhpcyBjYW4gYmUg ZmFsc2Ugd2hlbiBiZWluZyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNvbW1h bmQsCkBAIC0xODM0LDExICsxNzc5LDEwIEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lk KQogdm9pZAogUHJvY2Vzc05vdGlmeUludGVycnVwdChib29sIGZsdXNoKQogewotCWlmIChJ c1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCi0JCXJldHVybjsJCQkJCS8qIG5v dCByZWFsbHkgaWRsZSAqLworCUFzc2VydCghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25C bG9jaygpKTsKIAogCS8qIExvb3AgaW4gY2FzZSBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIHdo aWxlIHNlbmRpbmcgbWVzc2FnZXMgKi8KLQl3aGlsZSAobm90aWZ5SW50ZXJydXB0UGVuZGlu ZykKKwl3aGlsZSAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQVNZTkNfTk9USUZZKSkK IAkJUHJvY2Vzc0luY29taW5nTm90aWZ5KGZsdXNoKTsKIH0KIApAQCAtMjE4Myw5ICsyMTI3 LDYgQEAgYXN5bmNRdWV1ZUFkdmFuY2VUYWlsKHZvaWQpCiBzdGF0aWMgdm9pZAogUHJvY2Vz c0luY29taW5nTm90aWZ5KGJvb2wgZmx1c2gpCiB7Ci0JLyogV2UgKm11c3QqIHJlc2V0IHRo ZSBmbGFnICovCi0Jbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCiAJLyogRG8g bm90aGluZyBlbHNlIGlmIHdlIGFyZW4ndCBhY3RpdmVseSBsaXN0ZW5pbmcgKi8KIAlpZiAo bGlzdGVuQ2hhbm5lbHMgPT0gTklMKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNv bW1hbmRzLmMKaW5kZXggMTc1M2IyODkwNzQuLmQxNTU3NTQyYjc2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGJjb21tYW5kcy5jCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9tZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh Ymxlc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3BhY2UuYwppbmRleCBh OTAwNWNjNzIxMi4uODBiNmM3MjFiYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZXNwYWNl LmMKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRi eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IDgwMTc0NDhkZTU2Li40ZDZiNGQwYjdk MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKQEAgLTIzOTcsOCArMjM5OCw3IEBAIHZhY3V1bV9kZWxheV9wb2ludChib29s IGlzX2FuYWx5emUpCiAJLyogQWx3YXlzIGNoZWNrIGZvciBpbnRlcnJ1cHRzICovCiAJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCWlmIChJbnRlcnJ1cHRQZW5kaW5nIHx8Ci0JCSgh VmFjdXVtQ29zdEFjdGl2ZSAmJiAhQ29uZmlnUmVsb2FkUGVuZGluZykpCisJaWYgKCFWYWN1 dW1Db3N0QWN0aXZlICYmICFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9DT05GSUdfUkVM T0FEKSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTI0MDcsOSArMjQwNyw5IEBAIHZhY3V1bV9k ZWxheV9wb2ludChib29sIGlzX2FuYWx5emUpCiAJICogW2F1dG92YWN1dW1fXXZhY3V1bV9j b3N0X2RlbGF5IHRvIHRha2UgZWZmZWN0IHdoaWxlIGEgdGFibGUgaXMgYmVpbmcKIAkgKiB2 YWN1dW1lZCBvciBhbmFseXplZC4KIAkgKi8KLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZyAm JiBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKEludGVycnVwdFBlbmRpbmco SU5URVJSVVBUX0NPTkZJR19SRUxPQUQpICYmIEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3Mo KSkKIAl7Ci0JCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0Nf U0lHSFVQKTsKIAkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyLmMKaW5kZXggNWQwYTU4Mzg0YjAuLmJmOTU3YWIxYTg3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC0zODMsNyArMzgzLDggQEAgZ2F0aGVyX3JlYWRu ZXh0KEdhdGhlclN0YXRlICpnYXRoZXJzdGF0ZSkKIAkJCQlyZXR1cm4gTlVMTDsKIAogCQkJ LyogTm90aGluZyB0byBkbyBleGNlcHQgd2FpdCBmb3IgZGV2ZWxvcG1lbnRzLiAqLwotCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCSh2b2lk KSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8CisJCQkJCQkJCSBJTlRFUlJV UFRfR0VORVJBTCwKIAkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsIDAsCiAJCQkJCQkJCSBXQUlUX0VWRU5UX0VYRUNVVEVfR0FUSEVSKTsKIAkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKaW5k ZXggYzYxZjBiZGI0YzAuLjNkMDVlODAzNjRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9s aWJwcS9iZS1zZWN1cmUuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYwpA QCAtMTc5LDEwICsxNzksMTEgQEAgc3NpemVfdAogc2VjdXJlX3JlYWQoUG9ydCAqcG9ydCwg dm9pZCAqcHRyLCBzaXplX3QgbGVuKQogewogCXNzaXplX3QJCW47CisJdWludDMyCQlpbnRl cnJ1cHRNYXNrOwogCWludAkJCXdhaXRmb3I7CiAKIAkvKiBEZWFsIHdpdGggYW55IGFscmVh ZHktcGVuZGluZyBpbnRlcnJ1cHQgY29uZGl0aW9uLiAqLwotCVByb2Nlc3NDbGllbnRSZWFk SW50ZXJydXB0KGZhbHNlKTsKKwlpbnRlcnJ1cHRNYXNrID0gUHJvY2Vzc0NsaWVudFJlYWRJ bnRlcnJ1cHQoZmFsc2UpOwogCiByZXRyeToKICNpZmRlZiBVU0VfU1NMCkBAIC0yMTQsNiAr MjE1LDcgQEAgcmV0cnk6CiAJCUFzc2VydCh3YWl0Zm9yKTsKIAogCQlNb2RpZnlXYWl0RXZl bnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKKwkJ TW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldEludGVycnVwdFBvcywg V0xfSU5URVJSVVBULCBpbnRlcnJ1cHRNYXNrKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZl QmVXYWl0U2V0LCAtMSAvKiBubyB0aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdB SVRfRVZFTlRfQ0xJRU5UX1JFQUQpOwpAQCAtMjQzLDggKzI0NSw3IEBAIHJldHJ5OgogCQkv KiBIYW5kbGUgaW50ZXJydXB0LiAqLwogCQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfSU5URVJS VVBUKQogCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci0JCQlQ cm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCh0cnVlKTsKKwkJCWludGVycnVwdE1hc2sgPSBQ cm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCh0cnVlKTsKIAogCQkJLyoKIAkJCSAqIFdlJ2xs IHJldHJ5IHRoZSByZWFkLiBNb3N0IGxpa2VseSBpdCB3aWxsIHJldHVybiBpbW1lZGlhdGVs eQpAQCAtMjU5LDcgKzI2MCw3IEBAIHJldHJ5OgogCSAqIFByb2Nlc3MgaW50ZXJydXB0cyB0 aGF0IGhhcHBlbmVkIGR1cmluZyBhIHN1Y2Nlc3NmdWwgKG9yIG5vbi1ibG9ja2luZywKIAkg KiBvciBoYXJkLWZhaWxlZCkgcmVhZC4KIAkgKi8KLQlQcm9jZXNzQ2xpZW50UmVhZEludGVy cnVwdChmYWxzZSk7CisJKHZvaWQpIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGZhbHNl KTsKIAogCXJldHVybiBuOwogfQpAQCAtMzA2LDEwICszMDcsMTEgQEAgc3NpemVfdAogc2Vj dXJlX3dyaXRlKFBvcnQgKnBvcnQsIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIHsK IAlzc2l6ZV90CQluOworCXVpbnQzMgkJaW50ZXJydXB0TWFzazsKIAlpbnQJCQl3YWl0Zm9y OwogCiAJLyogRGVhbCB3aXRoIGFueSBhbHJlYWR5LXBlbmRpbmcgaW50ZXJydXB0IGNvbmRp dGlvbi4gKi8KLQlQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoZmFsc2UpOworCWludGVy cnVwdE1hc2sgPSBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoZmFsc2UpOwogCiByZXRy eToKIAl3YWl0Zm9yID0gMDsKQEAgLTM0MCw2ICszNDIsNyBAQCByZXRyeToKIAkJQXNzZXJ0 KHdhaXRmb3IpOwogCiAJCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRT ZXRTb2NrZXRQb3MsIHdhaXRmb3IsIDApOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRT ZXQsIEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIGludGVycnVwdE1h c2spOwogCiAJCVdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIC0xIC8qIG5vIHRpbWVv dXQgKi8gLCAmZXZlbnQsIDEsCiAJCQkJCQkgV0FJVF9FVkVOVF9DTElFTlRfV1JJVEUpOwpA QCAtMzUzLDggKzM1Niw3IEBAIHJldHJ5OgogCQkvKiBIYW5kbGUgaW50ZXJydXB0LiAqLwog CQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci0JCQlQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1 cHQodHJ1ZSk7CisJCQlpbnRlcnJ1cHRNYXNrID0gUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJy dXB0KHRydWUpOwogCiAJCQkvKgogCQkJICogV2UnbGwgcmV0cnkgdGhlIHdyaXRlLiBNb3N0 IGxpa2VseSBpdCB3aWxsIHJldHVybiBpbW1lZGlhdGVseQpAQCAtMzY5LDcgKzM3MSw3IEBA IHJldHJ5OgogCSAqIFByb2Nlc3MgaW50ZXJydXB0cyB0aGF0IGhhcHBlbmVkIGR1cmluZyBh IHN1Y2Nlc3NmdWwgKG9yIG5vbi1ibG9ja2luZywKIAkgKiBvciBoYXJkLWZhaWxlZCkgd3Jp dGUuCiAJICovCi0JUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGZhbHNlKTsKKwkodm9p ZCkgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGZhbHNlKTsKIAogCXJldHVybiBuOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2Vu ZC9saWJwcS9wcWNvbW0uYwppbmRleCBkYWY3Yzc0MzViYi4uNWE5MjgwMzA3MGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xp YnBxL3BxY29tbS5jCkBAIC0zMDksNyArMzA5LDcgQEAgcHFfaW5pdChDbGllbnRTb2NrZXQg KmNsaWVudF9zb2NrKQogCXNvY2tldF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2Fp dFNldCwgV0xfU09DS0VUX1dSSVRFQUJMRSwKIAkJCQkJCQkJICAgcG9ydC0+c29jaywgMCwg TlVMTCk7CiAJaW50ZXJydXB0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0 LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkJCQkgIDEgPDwgSU5U RVJSVVBUX0dFTkVSQUwsIE5VTEwpOworCQkJCQkJCQkJICBJTlRFUlJVUFRfQ0ZJX01BU0ss IE5VTEwpOwogCUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9QT1NUTUFTVEVS X0RFQVRILCBQR0lOVkFMSURfU09DS0VULAogCQkJCQkgIDAsIE5VTEwpOwogCkBAIC0xNDEz LDggKzE0MTMsNyBAQCBpbnRlcm5hbF9mbHVzaF9idWZmZXIoY29uc3QgY2hhciAqYnVmLCBz aXplX3QgKnN0YXJ0LCBzaXplX3QgKmVuZCkKIAkJCSAqIHRoZSBjb25uZWN0aW9uLgogCQkJ ICovCiAJCQkqc3RhcnQgPSAqZW5kID0gMDsKLQkJCUNsaWVudENvbm5lY3Rpb25Mb3N0ID0g MTsKLQkJCUludGVycnVwdFBlbmRpbmcgPSAxOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpOwogCQkJcmV0dXJuIEVPRjsKIAkJfQogCkBA IC0yMDY1LDI0ICsyMDY0LDEzIEBAIHBxX2NoZWNrX2Nvbm5lY3Rpb24odm9pZCkKIAkgKiBh bGwgRmVCZVdhaXRTZXQgc29ja2V0IHdhaXQgc2l0ZXMgZG8gdGhlIHNhbWUuCiAJICovCiAJ TW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgV0xf U09DS0VUX0NMT1NFRCwgMCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJl V2FpdFNldEludGVycnVwdFBvcywgV0xfSU5URVJSVVBULCAwKTsKIAotcmV0cnk6CiAJcmMg PSBXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAwLCBldmVudHMsIGxlbmd0aG9mKGV2 ZW50cyksIDApOwogCWZvciAoaW50IGkgPSAwOyBpIDwgcmM7ICsraSkKIAl7CiAJCWlmIChl dmVudHNbaV0uZXZlbnRzICYgV0xfU09DS0VUX0NMT1NFRCkKIAkJCXJldHVybiBmYWxzZTsK LQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCi0JCXsKLQkJCS8qCi0J CQkgKiBBbiBpbnRlcnJ1cHQgZXZlbnQgbWlnaHQgYmUgcHJldmVudGluZyBvdGhlciBldmVu dHMgZnJvbSBiZWluZwotCQkJICogcmVwb3J0ZWQuICBSZXNldCBpdCBhbmQgcG9sbCBhZ2Fp bi4gIE5vIG5lZWQgdG8gcmVzdG9yZSBpdAotCQkJICogYmVjYXVzZSBubyBjb2RlIHNob3Vs ZCBleHBlY3QgSU5URVJSVVBUX0dFTkVSQUwgdG8gc3Vydml2ZQotCQkJICogYWNyb3NzIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkuCi0JCQkgKi8KLQkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKLQkJCWdvdG8gcmV0cnk7Ci0JCX0KIAl9CiAKIAlyZXR1cm4gdHJ1 ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5k L2xpYnBxL3BxbXEuYwppbmRleCBlZjA4MGY2MzExMi4uNjM5NGY5MjQzOTkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9w cW1xLmMKQEAgLTI2LDcgKzI2LDYgQEAKIAogc3RhdGljIHNobV9tcV9oYW5kbGUgKnBxX21x X2hhbmRsZTsKIHN0YXRpYyBib29sIHBxX21xX2J1c3kgPSBmYWxzZTsKLXN0YXRpYyBwaWRf dCBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkID0gMDsKIHN0YXRpYyBQcm9jTnVtYmVyIHBx X21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7 CiAKIHN0YXRpYyB2b2lkIHBxX2NsZWFudXBfcmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdt ZW50ICpzZWcsIERhdHVtIGFyZyk7CkBAIC03MiwxNCArNzEsMTMgQEAgcHFfY2xlYW51cF9y ZWRpcmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgRGF0dW0gYXJnKQogfQogCiAv KgotICogQXJyYW5nZSB0byBTZW5kUHJvY1NpZ25hbCgpIHRvIHRoZSBwYXJhbGxlbCBsZWFk ZXIgZWFjaCB0aW1lIHdlIHRyYW5zbWl0Ci0gKiBtZXNzYWdlIGRhdGEgdmlhIHRoZSBzaG1f bXEuCisgKiBBcnJhbmdlIHRvIGludGVycnVwdCB0byB0aGUgcGFyYWxsZWwgbGVhZGVyIGVh Y2ggdGltZSB3ZSB0cmFuc21pdCBtZXNzYWdlCisgKiBkYXRhIHZpYSB0aGUgc2htX21xLgog ICovCiB2b2lkCi1wcV9zZXRfcGFyYWxsZWxfbGVhZGVyKHBpZF90IHBpZCwgUHJvY051bWJl ciBwcm9jTnVtYmVyKQorcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihQcm9jTnVtYmVyIHByb2NO dW1iZXIpCiB7CiAJQXNzZXJ0KFBxQ29tbU1ldGhvZHMgPT0gJlBxQ29tbU1xTWV0aG9kcyk7 Ci0JcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCA9IHBpZDsKIAlwcV9tcV9wYXJhbGxlbF9s ZWFkZXJfcHJvY19udW1iZXIgPSBwcm9jTnVtYmVyOwogfQogCkBAIC0xNjQsMjUgKzE2Miwy MyBAQCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90 IGxlbikKIAkJICovCiAJCXJlc3VsdCA9IHNobV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlv diwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKLQkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQg IT0gMCkKKwkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlciAhPSBJTlZB TElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcigpKQotCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQs Ci0JCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAotCQkJCQkJCSAg IHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CisJCQkJU2VuZEludGVycnVw dChJTlRFUlJVUFRfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgIHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CiAJCQllbHNlCiAJCQl7CiAJCQkJQXNzZXJ0 KElzUGFyYWxsZWxXb3JrZXIoKSk7Ci0JCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxs ZWxfbGVhZGVyX3BpZCwKLQkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0J CQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKKwkJCQlTZW5k SW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgcHFfbXFf cGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKIAkJCX0KIAkJfQogCiAJCWlmIChyZXN1 bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1 cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkJIFdBSVRfRVZF TlRfTUVTU0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7CiAJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXgg ZTI3ZGE5ZmQ4OGEuLjRiYmY0MTNlM2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uYwpAQCAtNDAxLDcgKzQwMSw3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlJbml0aWFs aXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCiAJ cHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3Np Z25hbF9zaWd1c3IxX2hhbmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwog CXBxc2lnbmFsKFNJR1VTUjIsIGF2bF9zaWd1c3IyX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJ R0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdDSExELCBTSUdf REZMKTsKQEAgLTQ1MSw3ICs0NTEsNyBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyogRm9y Z2V0IGFueSBwZW5kaW5nIFF1ZXJ5Q2FuY2VsIG9yIHRpbWVvdXQgcmVxdWVzdCAqLwogCQlk aXNhYmxlX2FsbF90aW1lb3V0cyhmYWxzZSk7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZh bHNlOyAvKiBzZWNvbmQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIHNlY29uZCB0byBhdm9pZCByYWNl IGNvbmRpdGlvbiAqLwogCiAJCS8qIFJlcG9ydCB0aGUgZXJyb3IgdG8gdGhlIHNlcnZlciBs b2cgKi8KIAkJRW1pdEVycm9yUmVwb3J0KCk7CkBAIC00OTIsNyArNDkyLDcgQEAgQXV0b1Zh Y0xhdW5jaGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQlSRVNVTUVfSU5URVJSVVBUUygpOwogCiAJCS8qIGlmIGluIHNodXRk b3duIG1vZGUsIG5vIG5lZWQgZm9yIGFueXRoaW5nIGZ1cnRoZXI7IGp1c3QgZ28gYXdheSAq LwotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRp bmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJCQlBdXRvVmFjTGF1bmNoZXJTaHV0ZG93 bigpOwogCiAJCS8qCkBAIC01NTEsNyArNTUxLDcgQEAgQXV0b1ZhY0xhdW5jaGVyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAq LwogCWlmICghQXV0b1ZhY3V1bWluZ0FjdGl2ZSgpKQogCXsKLQkJaWYgKCFTaHV0ZG93blJl cXVlc3RQZW5kaW5nKQorCQlpZiAoIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRE T1dOX0FVWCkpCiAJCQlkb19zdGFydF93b3JrZXIoKTsKIAkJcHJvY19leGl0KDApOwkJCS8q IGRvbmUgKi8KIAl9CkBAIC01NjgsNyArNTY4LDcgQEAgQXV0b1ZhY0xhdW5jaGVyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXJl YnVpbGRfZGF0YWJhc2VfbGlzdChJbnZhbGlkT2lkKTsKIAogCS8qIGxvb3AgdW50aWwgc2h1 dGRvd24gcmVxdWVzdCAqLwotCXdoaWxlICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwl3 aGlsZSAoIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJewog CQlzdHJ1Y3QgdGltZXZhbCBuYXA7CiAJCVRpbWVzdGFtcFR6IGN1cnJlbnRfdGltZSA9IDA7 CkBAIC01ODcsMTUgKzU4NywxOSBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZvaWQg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFdhaXQgdW50 aWwgbmFwdGltZSBleHBpcmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2Ygc2lnbmFsIChhbGwg dGhlCiAJCSAqIHNpZ25hbCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBSYWlz ZUludGVycnVwdCkuCiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfU0hVVERP V05fQVVYIHwKKwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJCSBJ TlRFUlJVUFRfQkFSUklFUiB8CisJCQkJCQkJIElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRF WFQgfAorCQkJCQkJCSBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCQkgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJIChuYXAudHZf c2VjICogMTAwMEwpICsgKG5hcC50dl91c2VjIC8gMTAwMEwpLAogCQkJCQkJCSBXQUlUX0VW RU5UX0FVVE9WQUNVVU1fTUFJTik7CiAKLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwotCiAJCVByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKCk7CiAKKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCiAJCS8qCiAJCSAqIGEgd29y a2VyIGZpbmlzaGVkLCBvciBwb3N0bWFzdGVyIHNpZ25hbGVkIGZhaWx1cmUgdG8gc3RhcnQg YSB3b3JrZXIKIAkJICovCkBAIC03NDUsMTQgKzc0OSwxMyBAQCBzdGF0aWMgdm9pZAogUHJv Y2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIHsKIAkvKiB0aGUgbm9ybWFs IHNodXRkb3duIGNhc2UgKi8KLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwlpZiAo SW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJQXV0b1ZhY0xh dW5jaGVyU2h1dGRvd24oKTsKIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCWlmIChD b25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAl7CiAJCWludAkJ CWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiA9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7 CiAKLQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmls ZShQR0NfU0lHSFVQKTsKIAogCQkvKiBzaHV0ZG93biByZXF1ZXN0ZWQgaW4gY29uZmlnIGZp bGU/ICovCkBAIC03NzIsMTEgKzc3NSwxMSBAQCBQcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50 ZXJydXB0cyh2b2lkKQogCX0KIAogCS8qIFByb2Nlc3MgYmFycmllciBldmVudHMgKi8KLQlp ZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9CQVJSSUVSKSkKIAkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7CiAKIAkv KiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJvY2VzcyAq LwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGlu ZyhJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJUHJvY2Vzc0xvZ01lbW9yeUNv bnRleHRJbnRlcnJ1cHQoKTsKIAogCS8qIFByb2Nlc3Mgc2ludmFsIGNhdGNodXAgaW50ZXJy dXB0cyB0aGF0IGhhcHBlbmVkIHdoaWxlIHNsZWVwaW5nICovCkBAIC0xNDA4LDcgKzE0MTEs NyBAQCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJs aXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCiAKIAlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdO KTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJ cHFzaWduYWwoU0lHVVNSMSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lH Tik7CiAJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCXBxc2ln bmFsKFNJR0NITEQsIFNJR19ERkwpOwpAQCAtMjI3OCw5ICsyMjgxLDggQEAgZG9fYXV0b3Zh Y3V1bSh2b2lkKQogCQkvKgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5nZXMgYmVmb3Jl IHByb2Nlc3NpbmcgZWFjaCBjb2xsZWN0ZWQgdGFibGUuCiAJCSAqLwotCQlpZiAoQ29uZmln UmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCQkJLyoKQEAgLTI0MzgsNyArMjQ0 MCw3IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJCSAqIGN1cnJlbnQgdGFibGUgKHdlJ3Jl IGRvbmUgd2l0aCBpdCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0bwogCQkJICogY2Fu Y2VsIGF0IHRoaXMgcG9pbnQuKQogCQkJICovCi0JCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBm YWxzZTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCQl9 CiAJCVBHX0NBVENIKCk7CiAJCXsKQEAgLTI1MjIsOSArMjUyNCw4IEBAIGRlbGV0ZWQ6CiAJ CSAqIENoZWNrIGZvciBjb25maWcgY2hhbmdlcyBiZWZvcmUgYWNxdWlyaW5nIGxvY2sgZm9y IGZ1cnRoZXIgam9icy4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCWlm IChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJV UFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJVmFjdXVtVXBkYXRl Q29zdHMoKTsKIAkJfQpAQCAtMjYzNiw3ICsyNjM3LDcgQEAgcGVyZm9ybV93b3JrX2l0ZW0o QXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSkKIAkJICogKHdlJ3JlIGRvbmUgd2l0aCBp dCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjYW5jZWwgYXQgdGhpcwogCQkgKiBw b2ludC4pCiAJCSAqLwotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAJfQogCVBHX0NBVENIKCk7CiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDZjYzY4YmY0MTFkLi4wODk2 OWZmNzY5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMjYsNyArMjYs NiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w bXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgotI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKQEAgLTc1MSw3 ICs3NTAsNyBAQCBCYWNrZ3JvdW5kV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiBTSUdJTlQgaXMgdXNlZCB0byBz aWduYWwgY2FuY2VsaW5nIHRoZSBjdXJyZW50IGFjdGlvbgogCQkgKi8KIAkJcHFzaWduYWwo U0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsKLQkJcHFzaWduYWwoU0lHVVNSMSwg cHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCQlwcXNpZ25hbChTSUdVU1IxLCBTSUdf SUdOKTsKIAkJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCiAJ CS8qIFhYWCBBbnkgb3RoZXIgaGFuZGxlcnMgbmVlZGVkIGhlcmU/ICovCkBAIC0xMjMzLDcg KzEyMzIsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdv cmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKIAkJaWYgKHN0YXR1cyAhPSBCR1dI X05PVF9ZRVRfU1RBUlRFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBU X0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQg fCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAogCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktF Ul9TVEFSVFVQKTsKIApAQCAtMTI3Nyw3ICsxMjc2LDcgQEAgV2FpdEZvckJhY2tncm91bmRX b3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCWlmIChz dGF0dXMgPT0gQkdXSF9TVE9QUEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBXYWl0SW50ZXJy dXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2FpdEludGVycnVwdChJTlRF UlJVUFRfQ0ZJX01BU0sgfCBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVS UlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCiAJCQkJCQkgICBXQUlUX0VWRU5UX0JH V09SS0VSX1NIVVRET1dOKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4 IGEzNzI1NzIxOGIxLi44ZDhiODU2NTJiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0 ZXIuYwpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgpAQCAtMTA2LDcgKzEwNSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ LyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3Rl ckNoaWxkICovCiAJcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lH UElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3Ix X2hhbmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJ R1VTUjIsIFNJR19JR04pOwogCiAJLyoKQEAgLTIyNCw5ICsyMjMsNyBAQCBCYWNrZ3JvdW5k V3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2Rh dGFfbGVuKQogCQlib29sCQljYW5faGliZXJuYXRlOwogCQlpbnQJCQlyYzsKIAotCQkvKiBD bGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwotCisJCS8qIFByb2Nlc3MgYW55IHBlbmRpbmcgc3RhbmRh cmQgaW50ZXJydXB0cyAqLwogCQlQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CiAKIAkJ LyoKQEAgLTMwMyw3ICszMDAsNyBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lk ICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiBkb3duIHdp dGggaW50ZXJydXB0IGV2ZW50cyB0aGF0IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50 bHkKIAkJICogZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uCiAJCSAqLwotCQlyYyA9IFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0 KElOVEVSUlVQVF9NQUlOX0xPT1BfTUFTSywKIAkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgQmdXcml0ZXJEZWxh eSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CiAKQEAgLTMyNywxMCAr MzI0LDE0IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqLwogCQlpZiAocmMgPT0gV0xfVElN RU9VVCAmJiBjYW5faGliZXJuYXRlICYmIHByZXZfaGliZXJuYXRlKQogCQl7CisJCQkvKiBD bGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKKwogCQkJLyogQXNrIGZvciBub3RpZmljYXRpb24gYXQg bmV4dCBidWZmZXIgYWxsb2NhdGlvbiAqLwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihN eVByb2NOdW1iZXIpOwogCQkJLyogU2xlZXAgLi4uICovCi0JCQkodm9pZCkgV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo SU5URVJSVVBUX01BSU5fTE9PUF9NQVNLIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9HRU5FUkFM LAogCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCiAJCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKIAkJ CQkJCQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGRhNmNhYTY0NDU3Li44Y2U1ZjZiN2YwMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC04MSwxMCArODEs MTEgQEAKICAqIFRoZSBhbGdvcml0aG0gZm9yIGJhY2tlbmRzIGlzOgogICoJMS4gUmVjb3Jk IGN1cnJlbnQgdmFsdWVzIG9mIGNrcHRfZmFpbGVkIGFuZCBja3B0X3N0YXJ0ZWQsIGFuZAog ICoJICAgc2V0IHJlcXVlc3QgZmxhZ3MsIHdoaWxlIGhvbGRpbmcgY2twdF9sY2suCi0gKgky LiBTZW5kIHNpZ25hbCB0byByZXF1ZXN0IGNoZWNrcG9pbnQuCisgKgkyLiBTZW5kIElOVEVS UlVQVF9HRU5FUkFMIHRvIHdha2UgdXAgdGhlIGNoZWNrcG9pbnRlci4KICAqCTMuIFNsZWVw IHVudGlsIGNrcHRfc3RhcnRlZCBjaGFuZ2VzLiAgTm93IHlvdSBrbm93IGEgY2hlY2twb2lu dCBoYXMKICAqCSAgIGJlZ3VuIHNpbmNlIHlvdSBzdGFydGVkIHRoaXMgYWxnb3JpdGhtIChh bHRob3VnaCAqbm90KiB0aGF0IGl0IHdhcwotICoJICAgc3BlY2lmaWNhbGx5IGluaXRpYXRl ZCBieSB5b3VyIHNpZ25hbCksIGFuZCB0aGF0IGl0IGlzIHVzaW5nIHlvdXIgZmxhZ3MuCisg KgkgICBzcGVjaWZpY2FsbHkgaW5pdGlhdGVkIGJ5IHlvdXIgaW50ZXJydXB0KSwgYW5kIHRo YXQgaXQgaXMgdXNpbmcgeW91cgorICoJICAgZmxhZ3MuCiAgKgk0LiBSZWNvcmQgbmV3IHZh bHVlIG9mIGNrcHRfc3RhcnRlZC4KICAqCTUuIFNsZWVwIHVudGlsIGNrcHRfZG9uZSA+PSBz YXZlZCB2YWx1ZSBvZiBja3B0X3N0YXJ0ZWQuICAoVXNlIG1vZHVsbwogICoJICAgYXJpdGht ZXRpYyBoZXJlIGluIGNhc2UgY291bnRlcnMgd3JhcCBhcm91bmQuKSAgTm93IHlvdSBrbm93 IGEKQEAgLTE0Niw3ICsxNDcsNiBAQCBkb3VibGUJCUNoZWNrUG9pbnRDb21wbGV0aW9uVGFy Z2V0ID0gMC45OwogICogUHJpdmF0ZSBzdGF0ZQogICovCiBzdGF0aWMgYm9vbCBja3B0X2Fj dGl2ZSA9IGZhbHNlOwotc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBTaHV0ZG93blhM T0dQZW5kaW5nID0gZmFsc2U7CiAKIC8qIHRoZXNlIHZhbHVlcyBhcmUgdmFsaWQgd2hlbiBj a3B0X2FjdGl2ZSBpcyB0cnVlOiAqLwogc3RhdGljIHBnX3RpbWVfdCBja3B0X3N0YXJ0X3Rp bWU7CkBAIC0yMDIsNyArMjAyLDcgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qIFNJR1FVSVQgaGFu ZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBx c2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04p OwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlw cXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTaWduYWxI YW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKIAogCS8qCkBAIC0zNTYsMTIgKzM1NiwxMiBA QCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0 YXJ0dXBfZGF0YV9sZW4pCiAJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAogCQkvKgotCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVk IHJlY2VudGx5LgorCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBpbnRlcnJ1cHRzIHJl Y2VpdmVkIHJlY2VudGx5LgogCQkgKi8KIAkJQWJzb3JiU3luY1JlcXVlc3RzKCk7CiAKIAkJ UHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHMoKTsKLQkJaWYgKFNodXRkb3duWExPR1Bl bmRpbmcgfHwgU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRp bmcoSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpIHx8IEludGVycnVwdFBlbmRpbmcoSU5URVJS VVBUX1NIVVRET1dOX0FVWCkpCiAJCQlicmVhazsKIAogCQkvKgpAQCAtNTM4LDcgKzUzOCw3 IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIAkJCSAqIGludGVycnVwdCBtaWdodCBoYXZlIGJlZW4gcmVz ZXQgKGUuZy4gaW4gQ2hlY2twb2ludFdyaXRlRGVsYXkpLgogCQkJICovCiAJCQlQcm9jZXNz Q2hlY2twb2ludGVySW50ZXJydXB0cygpOwotCQkJaWYgKFNodXRkb3duWExPR1BlbmRpbmcg fHwgU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9TSFVURE9XTl9YTE9HKSB8fCBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9T SFVURE9XTl9BVVgpKQogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBD aGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJCQljb250aW51ZTsKIAogCQkvKgotCQkgKiBTbGVlcCB1bnRpbCB3 ZSBhcmUgc2lnbmFsZWQgb3IgaXQncyB0aW1lIGZvciBhbm90aGVyIGNoZWNrcG9pbnQgb3IK KwkJICogU2xlZXAgdW50aWwgd2UgYXJlIHdva2VuIHVwIG9yIGl0J3MgdGltZSBmb3IgYW5v dGhlciBjaGVja3BvaW50IG9yCiAJCSAqIHhsb2cgZmlsZSBzd2l0Y2guCiAJCSAqLwogCQlu b3cgPSAocGdfdGltZV90KSB0aW1lKE5VTEwpOwpAQCAtNTczLDEwICs1NzMsMTggQEAgQ2hl Y2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQkJY3VyX3RpbWVvdXQgPSBNaW4oY3VyX3RpbWVvdXQsIFhMb2dBcmNo aXZlVGltZW91dCAtIGVsYXBzZWRfc2Vjcyk7CiAJCX0KIAotCQkodm9pZCkgV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAotCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgY3VyX3RpbWVvdXQg KiAxMDAwTCAvKiBjb252ZXJ0IHRvIG1zICovICwKLQkJCQkJCQkgV0FJVF9FVkVOVF9DSEVD S1BPSU5URVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KAorCQkJLyogdGhlc2Ug YXJlIGhhbmRsZWQgaW4gdGhlIG1haW4gbG9vcCAqLworCQkJSU5URVJSVVBUX0dFTkVSQUwg fCAJLyogY2hlY2twb2ludCByZXF1ZXN0ZWQgKi8KKwkJCUlOVEVSUlVQVF9TSFVURE9XTl9Y TE9HIHwKKwkJCUlOVEVSUlVQVF9TSFVURE9XTl9BVVggfAorCQkJLyogUHJvY2Vzc0NoZWNr cG9pbnRlckludGVycnVwdHMoKSAqLworCQkJSU5URVJSVVBUX0JBUlJJRVIgfAorCQkJSU5U RVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCB8CisJCQlJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCwKKwkJCVdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAorCQkJY3VyX3RpbWVvdXQgKiAxMDAwTCAvKiBjb252ZXJ0IHRvIG1zICovICwKKwkJCVdB SVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4pOwogCX0KIAogCS8qCkBAIC01ODUsNyArNTkz LDcgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCSAqLwogCUV4aXRPbkFueUVycm9yID0gdHJ1ZTsKIAot CWlmIChTaHV0ZG93blhMT0dQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVS UlVQVF9TSFVURE9XTl9YTE9HKSkKIAl7CiAJCS8qCiAJCSAqIENsb3NlIGRvd24gdGhlIGRh dGFiYXNlLgpAQCAtNjAzLDcgKzYxMSw3IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJICogVGVsbCBw b3N0bWFzdGVyIHRoYXQgd2UncmUgZG9uZS4KIAkJICovCiAJCVNlbmRQb3N0bWFzdGVyU2ln bmFsKFBNU0lHTkFMX1hMT0dfSVNfU0hVVERPV04pOwotCQlTaHV0ZG93blhMT0dQZW5kaW5n ID0gZmFsc2U7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9TSFVURE9XTl9YTE9HKTsK IAl9CiAKIAkvKgpAQCAtNjEzLDE1ICs2MjEsMTYgQEAgQ2hlY2twb2ludGVyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqLwog CWZvciAoOzspCiAJewotCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMg Ki8KLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwotCiAJCVByb2Nlc3ND aGVja3BvaW50ZXJJbnRlcnJ1cHRzKCk7CiAKLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRp bmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9BVVgpKQog CQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX0FVWCB8 CisJCQkJCQkJIC8qIFByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1cHRzKCkgKi8KKwkJCQkJ CQkgSU5URVJSVVBUX0JBUlJJRVIgfAorCQkJCQkJCSBJTlRFUlJVUFRfTE9HX01FTU9SWV9D T05URVhUIHwKKwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCiAJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJIDAsCiAJCQkJCQkJ IFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKQEAgLTYzNywxMiArNjQ2LDEx IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIHN0YXRpYyB2b2lkCiBQcm9jZXNzQ2hlY2twb2ludGVySW50 ZXJydXB0cyh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYg KEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNzUHJvY1Np Z25hbEJhcnJpZXIoKTsKIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCWlmIChDb25z dW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAl7Ci0JCUNvbmZpZ1Jl bG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CiAKIAkJLyoKQEAgLTY2MCw3ICs2NjgsNyBAQCBQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJy dXB0cyh2b2lkKQogCX0KIAogCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4 dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQor CWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpKQog CQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCkBAIC03NzgsMTQg Kzc4NiwxMyBAQCBDaGVja3BvaW50V3JpdGVEZWxheShpbnQgZmxhZ3MsIGRvdWJsZSBwcm9n cmVzcykKIAkgKiBpbiB3aGljaCBjYXNlIHdlIGp1c3QgdHJ5IHRvIGNhdGNoIHVwIGFzIHF1 aWNrbHkgYXMgcG9zc2libGUuCiAJICovCiAJaWYgKCEoZmxhZ3MgJiBDSEVDS1BPSU5UX0lN TUVESUFURSkgJiYKLQkJIVNodXRkb3duWExPR1BlbmRpbmcgJiYKLQkJIVNodXRkb3duUmVx dWVzdFBlbmRpbmcgJiYKKwkJIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dO X1hMT0cpICYmCisJCSFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9BVVgp ICYmCiAJCSFJbW1lZGlhdGVDaGVja3BvaW50UmVxdWVzdGVkKCkgJiYKIAkJSXNDaGVja3Bv aW50T25TY2hlZHVsZShwcm9ncmVzcykpCiAJewotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGlu ZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQog CQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmln RmlsZShQR0NfU0lHSFVQKTsKIAkJCS8qIHVwZGF0ZSBzaG1lbSBjb3BpZXMgb2YgY29uZmln IHZhcmlhYmxlcyAqLwogCQkJVXBkYXRlU2hhcmVkTWVtb3J5Q29uZmlnKCk7CkBAIC04MDUs NyArODEyLDggQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJv Z3Jlc3MpCiAJCSAqIENoZWNrcG9pbnRlciBhbmQgYmd3cml0ZXIgYXJlIG5vIGxvbmdlciBy ZWxhdGVkIHNvIHRha2UgdGhlIEJpZwogCQkgKiBTbGVlcC4KIAkJICovCi0JCVdhaXRJbnRl cnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCB8CisJCQkJCSAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCiAJCQkJCSAg V0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsCiAJCQkJ CSAgMTAwLAogCQkJCQkgIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVF9XUklURV9ERUxBWSk7CkBA IC04MjMsNyArODMxLDcgQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3Vi bGUgcHJvZ3Jlc3MpCiAJfQogCiAJLyogQ2hlY2sgZm9yIGJhcnJpZXIgZXZlbnRzLiAqLwot CWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYgKEludGVycnVwdFBlbmRpbmco SU5URVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIH0K IApAQCAtOTE3LDggKzkyNSw3IEBAIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHBy b2dyZXNzKQogc3RhdGljIHZvaWQKIFJlcVNodXRkb3duWExPRyhTSUdOQUxfQVJHUykKIHsK LQlTaHV0ZG93blhMT0dQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX1hMT0cp OwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0 X2hhbmRsZXJzLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVy cy5jCmluZGV4IDEwYTQ3MTBmNDAzLi5mMDhiOTY4NGUwYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2ludGVycnVwdF9oYW5kbGVycy5jCkBAIC0yNCwyOSArMjQsMjMgQEAK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwot dm9sYXRpbGUgc2lnX2F0b21pY190IFNodXRkb3duUmVxdWVzdFBlbmRpbmcgPSBmYWxzZTsK LQogLyoKICAqIFNpbXBsZSBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wcyBvZiBi YWNrZ3JvdW5kIHByb2Nlc3Nlcy4KICAqLwogdm9pZAogUHJvY2Vzc01haW5Mb29wSW50ZXJy dXB0cyh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYgKElu dGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNzUHJvY1NpZ25h bEJhcnJpZXIoKTsKIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCXsKLQkJQ29uZmln UmVsb2FkUGVuZGluZyA9IGZhbHNlOworCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQ VF9DT05GSUdfUkVMT0FEKSkKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0J fQogCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKEludGVycnVwdFBlbmRp bmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJCXByb2NfZXhpdCgwKTsKIAogCS8qIFBl cmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0J aWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4 dEludGVycnVwdCgpOwogfQogCkBAIC01NCwxNCArNDgsMTMgQEAgUHJvY2Vzc01haW5Mb29w SW50ZXJydXB0cyh2b2lkKQogICogU2ltcGxlIHNpZ25hbCBoYW5kbGVyIGZvciB0cmlnZ2Vy aW5nIGEgY29uZmlndXJhdGlvbiByZWxvYWQuCiAgKgogICogTm9ybWFsbHksIHRoaXMgaGFu ZGxlciB3b3VsZCBiZSB1c2VkIGZvciBTSUdIVVAuIFRoZSBpZGVhIGlzIHRoYXQgY29kZQot ICogd2hpY2ggdXNlcyBpdCB3b3VsZCBhcnJhbmdlIHRvIGNoZWNrIHRoZSBDb25maWdSZWxv YWRQZW5kaW5nIGZsYWcgYXQKLSAqIGNvbnZlbmllbnQgcGxhY2VzIGluc2lkZSBtYWluIGxv b3BzLCBvciBlbHNlIGNhbGwgUHJvY2Vzc01haW5Mb29wSW50ZXJydXB0cy4KKyAqIHdoaWNo IHVzZXMgaXQgd291bGQgYXJyYW5nZSB0byBjaGVjayB0aGUgSU5URVJSVVBUX0NPTkZJR19S RUxPQUQgaW50ZXJydXB0IGF0CisgKiBjb252ZW5pZW50IHBsYWNlcyBpbnNpZGUgbWFpbiBs b29wcywgb3IgZWxzZSBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0cy4KICAqLwogdm9p ZAogU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZChTSUdOQUxfQVJHUykKIHsKLQlDb25m aWdSZWxvYWRQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOwogfQog CiAvKgpAQCAtOTgsMTIgKzkxLDExIEBAIFNpZ25hbEhhbmRsZXJGb3JDcmFzaEV4aXQoU0lH TkFMX0FSR1MpCiAgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKICAqIFNJR0lOVCBvciBTSUdURVJN LgogICoKLSAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNoZWNrZWQgYXQg YSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUKKyAqIElOVEVSUlVQVF9TSFVURE9XTl9B VVggc2hvdWxkIGJlIGNoZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUK ICAqIG1haW4gbG9vcCwgb3IgZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIFByb2Nl c3NNYWluTG9vcEludGVycnVwdHMuCiAgKi8KIHZvaWQKIFNpZ25hbEhhbmRsZXJGb3JTaHV0 ZG93blJlcXVlc3QoU0lHTkFMX0FSR1MpCiB7Ci0JU2h1dGRvd25SZXF1ZXN0UGVuZGluZyA9 IHRydWU7Ci0JUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9TSFVURE9XTl9BVVgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdh cmNoLmMKaW5kZXggMWU5MjFjMGU2NTEuLjdkZGU3NWNkNzA5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcGdhcmNoLmMKQEAgLTIzMSw3ICsyMzEsNyBAQCBQZ0FyY2hpdmVyTWFpbihjb25zdCB2 b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qIFNJR1FV SVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAq LwogCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJ R19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBw Z2FyY2hfd2FrZW5fc3RvcCk7CiAKIAkvKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUg YWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGhlcmUgKi8KQEAgLTMzMiw3ICszMzIs NyBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkJICogaWRlYS4gIElmIG1vcmUgdGhhbiA2 MCBzZWNvbmRzIHBhc3Mgc2luY2UgU0lHVEVSTSwgZXhpdCBhbnl3YXksIHNvCiAJCSAqIHRo YXQgdGhlIHBvc3RtYXN0ZXIgY2FuIHN0YXJ0IGEgbmV3IGFyY2hpdmVyIGlmIG5lZWRlZC4K IAkJICovCi0JCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCQlpZiAoSW50ZXJydXB0 UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJewogCQkJdGltZV90CQljdXJ0 aW1lID0gdGltZShOVUxMKTsKIApAQCAtMzU0LDcgKzM1NCwxMSBAQCBwZ2FyY2hfTWFpbkxv b3Aodm9pZCkKIAkJewogCQkJaW50CQkJcmM7CiAKLQkJCXJjID0gV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMIHwKKwkJCQkJCQkgICBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJ CQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCQkJICAgSU5URVJSVVBUX0JB UlJJRVIgfAorCQkJCQkJCSAgIElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQsCiAJCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgs CiAJCQkJCQkJICAgUEdBUkNIX0FVVE9XQUtFX0lOVEVSVkFMICogMTAwMEwsCiAJCQkJCQkJ ICAgV0FJVF9FVkVOVF9BUkNISVZFUl9NQUlOKTsKQEAgLTQwNiw3ICs0MTAsNyBAQCBwZ2Fy Y2hfQXJjaGl2ZXJDb3B5TG9vcCh2b2lkKQogCQkJICogY29tbWFuZCwgYW5kIHRoZSBzZWNv bmQgaXMgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggYW5vdGhlcgogCQkJICogYXJjaGl2ZXIg c3Bhd25lZCBieSBhIG5ld2VyIHBvc3RtYXN0ZXIuCiAJCQkgKi8KLQkJCWlmIChTaHV0ZG93 blJlcXVlc3RQZW5kaW5nIHx8ICFQb3N0bWFzdGVySXNBbGl2ZSgpKQorCQkJaWYgKEludGVy cnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkgfHwgIVBvc3RtYXN0ZXJJc0Fs aXZlKCkpCiAJCQkJcmV0dXJuOwogCiAJCQkvKgpAQCAtODU3LDE5ICs4NjEsMTkgQEAgcGdh cmNoX2RpZShpbnQgY29kZSwgRGF0dW0gYXJnKQogc3RhdGljIHZvaWQKIFByb2Nlc3NQZ0Fy Y2hJbnRlcnJ1cHRzKHZvaWQpCiB7Ci0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykK KwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQkFSUklFUikpCiAJCVByb2Nlc3NQ cm9jU2lnbmFsQmFycmllcigpOwogCiAJLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBj b250ZXh0cyBvZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRp bmcpCisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVY VCkpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKLQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCkpCiAJewogCQljaGFyCSAgICphcmNoaXZlTGliID0gcHN0cmR1cChYTG9n QXJjaGl2ZUxpYnJhcnkpOwogCQlib29sCQlhcmNoaXZlTGliQ2hhbmdlZDsKIAotCQlDb25m aWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9D T05GSUdfUkVMT0FEKTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJ aWYgKFhMb2dBcmNoaXZlTGlicmFyeVswXSAhPSAnXDAnICYmIFhMb2dBcmNoaXZlQ29tbWFu ZFswXSAhPSAnXDAnKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0 bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCBm Y2MyNTExZGE0My4uOTUyNGMyNmExNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1h c3Rlci5jCkBAIC0xNjIxLDcgKzE2MjEsOCBAQCBDb25maWd1cmVQb3N0bWFzdGVyV2FpdFNl dChib29sIGFjY2VwdF9jb25uZWN0aW9ucykKIAlwbV93YWl0X3NldCA9IENyZWF0ZVdhaXRF dmVudFNldChOVUxMLAogCQkJCQkJCQkJIGFjY2VwdF9jb25uZWN0aW9ucyA/ICgxICsgTnVt TGlzdGVuU29ja2V0cykgOiAxKTsKIAlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwg V0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsIE5VTEwpOworCQkJCQkgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwgSU5U RVJSVVBUX0dFTkVSQUwsCisJCQkJCSAgTlVMTCk7CiAKIAlpZiAoYWNjZXB0X2Nvbm5lY3Rp b25zKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKaW5kZXggZjJhYzg2MjUxM2Iu LjFlYmQxMGQ2ODRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0 dXAuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwpAQCAtMjYsNiAr MjYsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv YXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01MCw3ICs1MSw2IEBACiAvKgogICogRmxhZ3Mgc2V0IGJ5IGludGVycnVwdCBoYW5k bGVycyBmb3IgbGF0ZXIgc2VydmljZSBpbiB0aGUgcmVkbyBsb29wLgogICovCi1zdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdIVVAgPSBmYWxzZTsKIHN0YXRpYyB2b2xh dGlsZSBzaWdfYXRvbWljX3Qgc2h1dGRvd25fcmVxdWVzdGVkID0gZmFsc2U7CiBzdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IHByb21vdGVfc2lnbmFsZWQgPSBmYWxzZTsKIApAQCAt MTAxLDggKzEwMSw3IEBAIFN0YXJ0dXBQcm9jVHJpZ2dlckhhbmRsZXIoU0lHTkFMX0FSR1Mp CiBzdGF0aWMgdm9pZAogU3RhcnR1cFByb2NTaWdIdXBIYW5kbGVyKFNJR05BTF9BUkdTKQog ewotCWdvdF9TSUdIVVAgPSB0cnVlOwotCVdha2V1cFJlY292ZXJ5KCk7CisJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOwogfQogCiAvKiBTSUdURVJNOiBzZXQg ZmxhZyB0byBhYm9ydCByZWRvIGFuZCBleGl0ICovCkBAIC0xNjEsMTEgKzE2MCw4IEBAIFBy b2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHModm9pZCkKIAkvKgogCSAqIFByb2Nlc3MgYW55 IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCiAJICovCi0JaWYgKGdv dF9TSUdIVVApCi0JewotCQlnb3RfU0lHSFVQID0gZmFsc2U7CisJaWYgKENvbnN1bWVJbnRl cnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQlTdGFydHVwUmVyZWFkQ29uZmln KCk7Ci0JfQogCiAJLyoKIAkgKiBDaGVjayBpZiB3ZSB3ZXJlIHJlcXVlc3RlZCB0byBleGl0 IHdpdGhvdXQgZmluaXNoaW5nIHJlY292ZXJ5LgpAQCAtMTg3LDExICsxODMsMTEgQEAgUHJv Y2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cyh2b2lkKQogCQlleGl0KDEpOwogCiAJLyogUHJv Y2VzcyBiYXJyaWVyIGV2ZW50cyAqLwotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcp CisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNz UHJvY1NpZ25hbEJhcnJpZXIoKTsKIAogCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkg Y29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5k aW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRF WFQpKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCkBAIC0y NDEsNyArMjM3LDcgQEAgU3RhcnR1cFByb2Nlc3NNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJLyogU0lHUVVJVCBoYW5kbGVyIHdh cyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCiAJSW5pdGlhbGl6 ZVRpbWVvdXRzKCk7CQkvKiBlc3RhYmxpc2hlcyBTSUdBTFJNIGhhbmRsZXIgKi8KIAlwcXNp Z25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFs X3NpZ3VzcjFfaGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVNSMSwgU0lHX0lHTik7CiAJcHFz aWduYWwoU0lHVVNSMiwgU3RhcnR1cFByb2NUcmlnZ2VySGFuZGxlcik7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKaW5kZXggODAzZGNkZTA3MWIuLjRkOWVkYjM2 Y2IzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKQEAgLTMzOCw3ICszMzgs MTAgQEAgU3lzTG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCSAqIChpbmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIpLgogCSAq LwogCXdlcyA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKLQlBZGRXYWl0RXZlbnRU b1NldCh3ZXMsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwgMSA8PCBJTlRFUlJV UFRfR0VORVJBTCwgTlVMTCk7CisJQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9JTlRFUlJV UFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQg fAorCQkJCQkgIElOVEVSUlVQVF9HRU5FUkFMLCAvKiBmb3IgbG9nIHJvdGF0aW9uICovCisJ CQkJCSAgTlVMTCk7CiAjaWZuZGVmIFdJTjMyCiAJQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBX TF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVbMF0sIDAsIE5VTEwpOwogI2VuZGlmCkBA IC0zNjEsOSArMzY0LDggQEAgU3lzTG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkvKgogCQkgKiBQcm9jZXNzIGFueSBy ZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5LgogCQkgKi8KLQkJaWYgKENv bmZpZ1JlbG9hZFBlbmRpbmcpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9D T05GSUdfUkVMT0FEKSkKIAkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwog CQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCmluZGV4IDkyODhhMWIyOTlhLi5lM2JmYjYx MzYwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKQEAgLTI1 MSw3ICsyNTEsNyBAQCBXYWxTdW1tYXJpemVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMg YWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBxc2lnbmFsKFNJ R0FMUk0sIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2ln bmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChT SUdVU1IxLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsgLyogbm90 IHVzZWQgKi8KIAogCS8qIEFkdmVydGlzZSBvdXJzZWx2ZXMuICovCkBAIC0zMTYsNyArMzE2 LDEyIEBAIFdhbFN1bW1hcml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFNvIGEgcmVhbGx5IGZhc3QgcmV0cnkgdGlt ZSBkb2Vzbid0IHNlZW0gdG8gYmUgZXNwZWNpYWxseQogCQkgKiBiZW5lZmljaWFsLCBhbmQg aXQgd2lsbCBjbHV0dGVyIHRoZSBsb2dzLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRJbnRlcnJ1 cHQoMCwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDEwMDAwLAorCQkodm9p ZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCB8CisJCQkJCQkJIElOVEVSUlVQ VF9CQVJSSUVSIHwKKwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJ CSBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJCQkgSU5URVJSVVBUX0xPR19NRU1P UllfQ09OVEVYVCwKKwkJCQkJCQkgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDEwMDAwLAogCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKIAl9 CiAKQEAgLTg1NiwxNiArODYxLDEzIEBAIEdldExhdGVzdExTTihUaW1lTGluZUlEICp0bGkp CiBzdGF0aWMgdm9pZAogUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKHZvaWQpCiB7 Ci0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGlu ZyhJTlRFUlJVUFRfQkFSUklFUikpCiAJCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwog Ci0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdSZWxvYWRQZW5kaW5n ID0gZmFsc2U7CisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxP QUQpKQogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQl9CiAKLQlpZiAoU2h1 dGRvd25SZXF1ZXN0UGVuZGluZyB8fCAhc3VtbWFyaXplX3dhbCkKKwlpZiAoSW50ZXJydXB0 UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSB8fCAhc3VtbWFyaXplX3dhbCkKIAl7 CiAJCWVyZXBvcnQoREVCVUcxLAogCQkJCWVycm1zZ19pbnRlcm5hbCgiV0FMIHN1bW1hcml6 ZXIgc2h1dHRpbmcgZG93biIpKTsKQEAgLTg3Myw3ICs4NzUsNyBAQCBQcm9jZXNzV2FsU3Vt bWFyaXplckludGVycnVwdHModm9pZCkKIAl9CiAKIAkvKiBQZXJmb3JtIGxvZ2dpbmcgb2Yg bWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJvY2VzcyAqLwotCWlmIChMb2dNZW1vcnlDb250 ZXh0UGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfTE9HX01FTU9S WV9DT05URVhUKSkKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIH0K IApAQCAtMTYzOSw3ICsxNjQxLDExIEBAIHN1bW1hcml6ZXJfd2FpdF9mb3Jfd2FsKHZvaWQp CiAJcGdzdGF0X3JlcG9ydF93YWwoZmFsc2UpOwogCiAJLyogT0ssIG5vdyBzbGVlcC4gKi8K LQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCSh2b2lk KSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMIHwKKwkJCQkJCSBJTlRFUlJVUFRf U0hVVERPV05fQVVYIHwKKwkJCQkJCSBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJ CQkgSU5URVJSVVBUX0JBUlJJRVIgfAorCQkJCQkJIElOVEVSUlVQVF9MT0dfTUVNT1JZX0NP TlRFWFQsCiAJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCiAJCQkJCQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0s CiAJCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9XQUwpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggOTY3OGMwMWM1YTMuLmQ3NGVlOGY1ZDBjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNl YXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMDksNyArMTA4LDcg QEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAg YnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04p OwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdO KTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsgLyogbm90IHVzZWQgKi8KIAogCS8q CkBAIC0yMzYsOSArMjM1LDYgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJU2V0V2FsV3JpdGVyU2xlZXBp bmcoaGliZXJuYXRpbmcpOwogCQl9CiAKLQkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGlu ZyB3YWtldXBzICovCi0JCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQog CQkvKiBQcm9jZXNzIGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCiAJCVByb2Nl c3NNYWluTG9vcEludGVycnVwdHMoKTsKIApAQCAtMjY0LDcgKzI2MCw3IEBAIFdhbFdyaXRl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkJZWxzZQogCQkJY3VyX3RpbWVvdXQgPSBXYWxXcml0ZXJEZWxheSAqIEhJQkVSTkFU RV9GQUNUT1I7CiAKLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX01BSU5fTE9PUF9NQVNL LAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKIAkJCQkJCQkgY3VyX3RpbWVvdXQsCiAJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1dS SVRFUl9NQUlOKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBx d2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggNDExMzdiNGQz NzMuLjMyMDVlZmJhNmQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s aWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtMjM3 LDcgKzIzNyw4IEBAIGxpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29ubmluZm8sIGJv b2wgcmVwbGljYXRpb24sIGJvb2wgbG9naWNhbCwKIAkJZWxzZQogCQkJaW9fZmxhZyA9IFdM X1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8 PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoSU5U RVJSVVBUX0NGSV9NQVNLIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX1NIVVRET1dOX0FVWCwK IAkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8IGlvX2Zs YWcsCiAJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNvbm4pLAogCQkJCQkJCQkg ICAwLApAQCAtMjQ1LDEwICsyNDYsNyBAQCBsaWJwcXJjdl9jb25uZWN0KGNvbnN0IGNoYXIg KmNvbm5pbmZvLCBib29sIHJlcGxpY2F0aW9uLCBib29sIGxvZ2ljYWwsCiAKIAkJLyogSW50 ZXJydXB0ZWQ/ICovCiAJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKLQkJewotCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dhbFJjdkludGVycnVw dHMoKTsKLQkJfQogCiAJCS8qIElmIHNvY2tldCBpcyByZWFkeSwgYWR2YW5jZSB0aGUgbGli cHEgc3RhdGUgbWFjaGluZSAqLwogCQlpZiAocmMgJiBpb19mbGFnKQpAQCAtODQ4LDcgKzg0 Niw4IEBAIGxpYnBxcmN2X1BRZ2V0UmVzdWx0KFBHY29ubiAqc3RyZWFtQ29ubikKIAkJICog c2luY2Ugd2UnbGwgZ2V0IGludGVycnVwdGVkIGJ5IHNpZ25hbHMgYW5kIGNhbiBoYW5kbGUg YW55CiAJCSAqIGludGVycnVwdHMgaGVyZS4KIAkJICovCi0JCXJjID0gV2FpdEludGVycnVw dE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2FpdEludGVycnVw dE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFTSyB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9T SFVURE9XTl9BVVgsCiAJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NL RVRfUkVBREFCTEUgfAogCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQsCiAJCQkJCQkJCSAgIFBR c29ja2V0KHN0cmVhbUNvbm4pLApAQCAtODU3LDEwICs4NTYsNyBAQCBsaWJwcXJjdl9QUWdl dFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4pCiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCiAJ CWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKLQkJewotCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKLQkJfQogCiAJ CS8qIENvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29ja2V0 ICovCiAJCWlmIChQUWNvbnN1bWVJbnB1dChzdHJlYW1Db25uKSA9PSAwKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwppbmRleCA1ZDI3YjRkNTg4Ni4uNmRiZGFkNjIyYTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j CkBAIC0yMzksMTIgKzIzOSw2IEBAIHN0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2Vy UG9vbCA9IE5JTDsKICAqLwogUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxl bFNoYXJlZCA9IE5VTEw7CiAKLS8qCi0gKiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBieSBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKLSAqIHdvcmtl ciBuZWVkcyB0byByZWNlaXZlPwotICovCi12b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxs ZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7Ci0KIC8qCiAgKiBDYWNoZSB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBseWluZyB0 aGUKICAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRvIHNh dmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQpAQCAtNzE0LDcgKzcwOCw3IEBAIFByb2Nl c3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQogewogCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwlpZiAoSW50ZXJydXB0 UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAl7CiAJCWVyZXBvcnQoTE9HLAog CQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBmaW5pc2hlZCIsCkBAIC03MjMsMTEgKzcx Nyw4IEBAIFByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQogCQlwcm9jX2V4 aXQoMCk7CiAJfQogCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdS ZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpKQogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQl9 CiB9CiAKIC8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBtYWluIGxvb3AuICovCkBAIC04MDUs NyArNzk2LDEwIEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICpt cWgpCiAJCQkJaW50CQkJcmM7CiAKIAkJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0J CQkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJcmMg PSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8CisJCQkJCQkJCSAgIElOVEVS UlVQVF9TSFVURE9XTl9BVVggfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJCQkgICBXTF9JTlRF UlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkJICAg MTAwMEwsCiAJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9N QUlOKTsKQEAgLTg0NCw5ICs4MzgsOCBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2ht X21xX2hhbmRsZSAqbXFoKQogc3RhdGljIHZvaWQKIHBhX3NodXRkb3duKGludCBjb2RlLCBE YXR1bSBhcmcpCiB7Ci0JU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5sZWFk ZXJfcGlkLAotCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKLQkJCQkg ICBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9QQVJB TExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCSAgTXlMb2dpY2FsUmVwV29ya2VyLT5sZWFkZXJf cGdwcm9jbm8pOwogCiAJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2lu dGVyKGFyZykpOwogfQpAQCAtOTM0LDggKzkyNyw3IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCWVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNl ZywgTlVMTCk7CiAKIAlwcV9yZWRpcmVjdF90b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgpOwot CXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2VyLT5sZWFkZXJfcGlk LAotCQkJCQkJICAgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJcHFfc2V0X3BhcmFsbGVsX2xl YWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRlcl9wZ3Byb2Nubyk7CiAKIAlNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0 X3JlY3ZfdGltZSA9CiAJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IDA7CkBA IC05NzksMjEgKzk3MSw2IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCUFzc2VydChmYWxzZSk7CiB9CiAKLS8qCi0gKiBIYW5kbGUgcmVjZWlwdCBvZiBh biBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtZXNzYWdl LgotICoKLSAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVy ISBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKLSAqIHRoYXQgd2lsbCBjYXVzZSB0aGUg bmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQotICogUHJvY2Vzc1BhcmFs bGVsQXBwbHlNZXNzYWdlcygpLgotICovCi12b2lkCi1IYW5kbGVQYXJhbGxlbEFwcGx5TWVz c2FnZUludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVBh cmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7Ci0JUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwotfQotCiAvKgogICogUHJvY2VzcyBhIHNpbmdsZSBwcm90b2Nv bCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKICAqIHdv cmtlci4KQEAgLTEwNTgsNyArMTAzNSw3IEBAIFByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2Fn ZShTdHJpbmdJbmZvIG1zZykKIH0KIAogLyoKLSAqIEhhbmRsZSBhbnkgcXVldWVkIHByb3Rv Y29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAq IFByb2Nlc3MgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuCiAgKi8KIHZvaWQKIFByb2Nlc3NQYXJhbGxlbEFwcGx5 TWVzc2FnZXModm9pZCkKQEAgLTEwOTEsNyArMTA2OCw3IEBAIFByb2Nlc3NQYXJhbGxlbEFw cGx5TWVzc2FnZXModm9pZCkKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oaHBhbV9jb250ZXh0KTsKIAotCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZh bHNlOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9BUFBMWV9NRVNTQUdF KTsKIAogCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQogCXsKQEAgLTEx ODMsMTUgKzExNjAsMTUgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJCUFzc2VydChyZXN1 bHQgPT0gU0hNX01RX1dPVUxEX0JMT0NLKTsKIAogCQkvKiBXYWl0IGJlZm9yZSByZXRyeWlu Zy4gKi8KLQkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJ CXJjID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0sgfCBJTlRFUlJVUFRfR0VO RVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAogCQkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCiAJCQkJ CQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfU0VORF9EQVRBKTsKIAogCQlpZiAocmMg JiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQlpZiAoc3RhcnRUaW1lID09IDApCkBAIC0x MjU1LDE2ICsxMjMyLDE2IEBAIHBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvLAogCQkJYnJlYWs7CiAKIAkJLyogV2FpdCB0byBiZSBzaWdu YWxsZWQuICovCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVS QUwsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVS UlVQVF9HRU5FUkFMLAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkgMTBMLAogCQkJCQkJCSBXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKIAotCQkvKiBDbGVhciB0aGUg aW50ZXJydXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwotCiAJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1 cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4u ICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBhYjMz NDQ0YTI5My4uM2ZiYjMxZGYyZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKQEAgLTIxNCwxNCArMjE0LDE0IEBAIFdhaXRGb3JSZXBsaWNh dGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCSAqIGludGVy cnVwdCBhYm91dCB0aGUgd29ya2VyIGF0dGFjaC4gIEJ1dCB3ZSBkb24ndCBleHBlY3QgdG8g aGF2ZSB0bwogCQkgKiB3YWl0IGxvbmcuCiAJCSAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQ VF9DRklfTUFTSyB8IElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJICAgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkgICAxMEwsIFdB SVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKIAkJaWYgKHJjICYgV0xfSU5URVJSVVBU KQogCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCQl9CiAJfQogfQpAQCAtNDQyLDYgKzQ0Miw3IEBAIHJldHJ5OgogCXdvcmtlci0+ cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmls ZXNldCA9IE5VTEw7CiAJd29ya2VyLT5sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlf d29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPmxlYWRlcl9wZ3By b2NubyA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA/IE15UHJvY051bWJlciA6IElOVkFM SURfUFJPQ19OVU1CRVI7CiAJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGlzX3BhcmFsbGVs X2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CkBAIC01MjIs NyArNTIzLDcgQEAgcmV0cnk6CiAgKiBzbG90LgogICovCiBzdGF0aWMgdm9pZAotbG9naWNh bHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGlu dCBzaWdubykKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLCBpbnQgaW50ZXJydXB0KQogewogCXVpbnQxNgkJZ2VuZXJhdGlvbjsK IApAQCAtNTQ1LDE0ICs1NDYsMTQgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIAkJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAKIAkJLyogV2FpdCBhIGJpdCAtLS0gd2UgZG9u J3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nLiAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1 cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9DRklfTUFTSyB8IElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJICAgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkgICAxMEws IFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKIAkJaWYgKHJjICYgV0xfSU5URVJS VVBUKQogCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCQl9CiAKIAkJLyogUmVjaGVjayB3b3JrZXIgc3RhdHVzLiAqLwpAQCAtNTcy LDcgKzU3Myw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJl cFdvcmtlciAqd29ya2VyLCBpbnQgc2lnbm8pCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0 aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKKwlT ZW5kSW50ZXJydXB0KGludGVycnVwdCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh3b3JrZXItPnBy b2MpKTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzsp CkBAIC01ODYsMTQgKzU4NywxNCBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24n dCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIDEwTCwg V0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CiAKIAkJaWYgKHJjICYgV0xfSU5URVJS VVBUKQogCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCQl9CiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCWlmICh3b3JrZXIpCiAJewogCQlBc3NlcnQoIWlz UGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKLQkJbG9naWNhbHJlcF93b3JrZXJfc3Rv cF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9w X2ludGVybmFsKHdvcmtlciwgSU5URVJSVVBUX0RJRSk7CiAJfQogCiAJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC02NjIsMTMgKzY2MywxNCBAQCBsb2dpY2Fs cmVwX3BhX3dvcmtlcl9zdG9wKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAkg KiBPbmx5IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgZ2VuZXJhdGlvbiBtYXRjaGVzIGFuZCB0 aGUgd29ya2VyIGlzIGFsaXZlLgogCSAqLwogCWlmICh3b3JrZXItPmdlbmVyYXRpb24gPT0g Z2VuZXJhdGlvbiAmJiB3b3JrZXItPnByb2MpCi0JCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Bf aW50ZXJuYWwod29ya2VyLCBTSUdJTlQpOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2lu dGVybmFsKHdvcmtlciwgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAKIAlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoKLSAqIFdha2UgdXAgKHVzaW5n IGludGVycnVwdCkgYW55IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzcGVjaWZp ZWQgc3ViL3JlbC4KKyAqIFdha2UgdXAgKHVzaW5nIElOVEVSUlVQVF9HRU5FUkFMKSBhbnkg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yCisgKiBzcGVjaWZpZWQgc3ViL3JlbC4K ICAqLwogdm9pZAogbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJl bGlkKQpAQCAtNzYzLDcgKzc2NSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lk KQogCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJz dChsYyk7CiAKIAkJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCi0JCQkJbG9naWNh bHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3LCBTSUdURVJNKTsKKwkJCQlsb2dpY2FscmVw X3dvcmtlcl9zdG9wX2ludGVybmFsKHcsIElOVEVSUlVQVF9ESUUpOwogCQl9CiAKIAkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC03OTMsNiArNzk1LDcgQEAg bG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJ d29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRP aWQ7CiAJd29ya2VyLT5sZWFkZXJfcGlkID0gSW52YWxpZFBpZDsKKwl3b3JrZXItPmxlYWRl cl9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJd29ya2VyLT5wYXJhbGxlbF9h cHBseSA9IGZhbHNlOwogfQogCkBAIC0xMjE4LDIyICsxMjIxLDIwIEBAIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7 CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTCB8Ci0JCQkJCQkgICAxIDw8IElOVEVSUlVQVF9TVUJT Q1JJUFRJT05fQ0hBTkdFLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9N QVNLIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCSAgIElO VEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9HRU5F UkFMLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCiAJCQkJCQkgICB3YWl0X3RpbWUsCiAJCQkJCQkgICBXQUlUX0VWRU5UX0xP R0lDQUxfTEFVTkNIRVJfTUFJTik7CiAKIAkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7 Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwotCQl9Ci0KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsK LQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKLQkJCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOworCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQpKQorCQkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQl9CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggNTA1Y2YyMWMxNDMu LjVkMWY1MzVlN2M2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jCkBAIC03Myw5ICs3Myw5IEBACiAvKgogICogU3RydWN0IGZvciBzaGFyaW5n IGluZm9ybWF0aW9uIHRvIGNvbnRyb2wgc2xvdCBzeW5jaHJvbml6YXRpb24uCiAgKgotICog VGhlIHNsb3Qgc3luYyB3b3JrZXIncyBwaWQgaXMgbmVlZGVkIGJ5IHRoZSBzdGFydHVwIHBy b2Nlc3MgdG8gc2h1dCBpdAotICogZG93biBkdXJpbmcgcHJvbW90aW9uLiBUaGUgc3RhcnR1 cCBwcm9jZXNzIHNodXRzIGRvd24gdGhlIHNsb3Qgc3luYyB3b3JrZXIKLSAqIGFuZCBhbHNv IHNldHMgc3RvcFNpZ25hbGVkPXRydWUgdG8gaGFuZGxlIHRoZSByYWNlIGNvbmRpdGlvbiB3 aGVuIHRoZQorICogVGhlIHNsb3Qgc3luYyB3b3JrZXIncyBwcm9jIG51bWJlciBpcyBuZWVk ZWQgYnkgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byBzaHV0CisgKiBpdCBkb3duIGR1cmluZyBw cm9tb3Rpb24uIFRoZSBzdGFydHVwIHByb2Nlc3Mgc2h1dHMgZG93biB0aGUgc2xvdCBzeW5j CisgKiB3b3JrZXIgYW5kIGFsc28gc2V0cyBzdG9wU2lnbmFsZWQ9dHJ1ZSB0byBoYW5kbGUg dGhlIHJhY2UgY29uZGl0aW9uIHdoZW4gdGhlCiAgKiBwb3N0bWFzdGVyIGhhcyBub3Qgbm90 aWNlZCB0aGUgcHJvbW90aW9uIHlldCBhbmQgdGh1cyBtYXkgZW5kIHVwIHJlc3RhcnRpbmcK ICAqIHRoZSBzbG90IHN5bmMgd29ya2VyLiBJZiBzdG9wU2lnbmFsZWQgaXMgc2V0LCB0aGUg d29ya2VyIHdpbGwgZXhpdCBpbiBzdWNoIGEKICAqIGNhc2UuIFRoZSBTUUwgZnVuY3Rpb24g cGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpIHdpbGwgYWxzbyBlcnJvciBvdXQgaWYKQEAg LTk1LDcgKzk1LDcgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgU2xvdFN5bmNDdHhTdHJ1Y3QK IHsKLQlwaWRfdAkJcGlkOworCVByb2NOdW1iZXIJcHJvY25vOwogCWJvb2wJCXN0b3BTaWdu YWxlZDsKIAlib29sCQlzeW5jaW5nOwogCXRpbWVfdAkJbGFzdF9zdGFydF90aW1lOwpAQCAt MTExMyw3ICsxMTEzLDcgQEAgc2xvdHN5bmNfcmVyZWFkX2NvbmZpZyh2b2lkKQogCiAJQXNz ZXJ0KHN5bmNfcmVwbGljYXRpb25fc2xvdHMpOwogCi0JQ29uZmlnUmVsb2FkUGVuZGluZyA9 IGZhbHNlOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIAlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCWNvbm5pbmZvX2NoYW5nZWQgPSBz dHJjbXAob2xkX3ByaW1hcnlfY29ubmluZm8sIFByaW1hcnlDb25uSW5mbykgIT0gMDsKQEAg LTExNTUsNyArMTE1NSw3IEBAIFByb2Nlc3NTbG90U3luY0ludGVycnVwdHMoV2FsUmVjZWl2 ZXJDb25uICp3cmNvbm4pCiB7CiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCWlmIChT aHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9ESUUpKQogCXsKIAkJZXJlcG9ydChMT0csCiAJCQkJZXJybXNnKCJyZXBsaWNhdGlvbiBz bG90IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgaXMgc2h1dHRpbmcgZG93biBvbiByZWNlaXZp bmcgU0lHSU5UIikpOwpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgUHJvY2Vzc1Nsb3RTeW5jSW50 ZXJydXB0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIAkJcHJvY19leGl0KDApOwogCX0K IAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJc2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOwog fQogCkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBzbG90c3luY193b3JrZXJfb25leGl0KGludCBj b2RlLCBEYXR1bSBhcmcpCiAKIAlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRl eCk7CiAKLQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwlTbG90U3luY0N0eC0+ cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCS8qCiAJICogSWYgc3luY2luZ19z bG90cyBpcyB0cnVlLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBlcnJvcmVkIG91 dApAQCAtMTI1Myw3ICsxMjUzLDkgQEAgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNv bWVfc2xvdF91cGRhdGVkKQogCQlzbGVlcF9tcyA9IE1JTl9TTE9UU1lOQ19XT1JLRVJfTkFQ VElNRV9NUzsKIAl9CiAKLQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VO RVJBTCwKKwlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwKKwkJCQkJ ICAgSU5URVJSVVBUX0dFTkVSQUwgfAorCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCwKIAkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCiAJCQkJCSAgIHNsZWVwX21zLAogCQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FU SU9OX1NMT1RTWU5DX01BSU4pOwpAQCAtMTI2NywxMiArMTI2OSwxMiBAQCB3YWl0X2Zvcl9z bG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90X3VwZGF0ZWQpCiAgKiBPdGhlcndpc2UsIGFk dmVydGlzZSB0aGF0IGEgc3luYyBpcyBpbiBwcm9ncmVzcy4KICAqLwogc3RhdGljIHZvaWQK LWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKHBpZF90IHdvcmtlcl9waWQpCitjaGVja19hbmRf c2V0X3N5bmNfaW5mbyhQcm9jTnVtYmVyIHdvcmtlcl9wcm9jbm8pCiB7CiAJU3BpbkxvY2tB Y3F1aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCiAJLyogVGhlIHdvcmtlciBwaWQgbXVz dCBub3QgYmUgYWxyZWFkeSBhc3NpZ25lZCBpbiBTbG90U3luY0N0eCAqLwotCUFzc2VydCh3 b3JrZXJfcGlkID09IEludmFsaWRQaWQgfHwgU2xvdFN5bmNDdHgtPnBpZCA9PSBJbnZhbGlk UGlkKTsKKwlBc3NlcnQod29ya2VyX3Byb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSIHx8 IFNsb3RTeW5jQ3R4LT5wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkvKgog CSAqIEVtaXQgYW4gZXJyb3IgaWYgc3RhcnR1cCBwcm9jZXNzIHNpZ25hbGVkIHRoZSBzbG90 IHN5bmMgbWFjaGluZXJ5IHRvCkBAIC0xMjk3LDEwICsxMjk5LDEwIEBAIGNoZWNrX2FuZF9z ZXRfc3luY19pbmZvKHBpZF90IHdvcmtlcl9waWQpCiAJU2xvdFN5bmNDdHgtPnN5bmNpbmcg PSB0cnVlOwogCiAJLyoKLQkgKiBBZHZlcnRpc2UgdGhlIHJlcXVpcmVkIFBJRCBzbyB0aGF0 IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwgdGhlCi0JICogc2xvdCBzeW5jIHdvcmtl ciBvbiBwcm9tb3Rpb24uCisJICogQWR2ZXJ0aXNlIHRoZSByZXF1aXJlZCBwcm9jIG51bWJl ciBzbyB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwKKwkgKiB0aGUgc2xvdCBz eW5jIHdvcmtlciBvbiBwcm9tb3Rpb24uCiAJICovCi0JU2xvdFN5bmNDdHgtPnBpZCA9IHdv cmtlcl9waWQ7CisJU2xvdFN5bmNDdHgtPnByb2NubyA9IHdvcmtlcl9wcm9jbm87CiAKIAlT cGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKQEAgLTEzOTIsMTYgKzEz OTQsMTYgQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFs SGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CiAJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsK IAlwcXNpZ25hbChTSUdGUEUsIEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7Ci0JcHFzaWduYWwo U0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCXBxc2lnbmFsKFNJR1VT UjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOwogCXBxc2lnbmFs KFNJR1BJUEUsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwogCi0J Y2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9jUGlkKTsKKwljaGVja19hbmRfc2V0X3N5 bmNfaW5mbyhNeVByb2NOdW1iZXIpOwogCiAJZXJlcG9ydChMT0csIGVycm1zZygic2xvdCBz eW5jIHdvcmtlciBzdGFydGVkIikpOwogCi0JLyogUmVnaXN0ZXIgaXQgYXMgc29vbiBhcyBT bG90U3luY0N0eC0+cGlkIGlzIGluaXRpYWxpemVkLiAqLworCS8qIFJlZ2lzdGVyIGl0IGFz IHNvb24gYXMgU2xvdFN5bmNDdHgtPnByb2NubyBpcyBpbml0aWFsaXplZC4gKi8KIAliZWZv cmVfc2htZW1fZXhpdChzbG90c3luY193b3JrZXJfb25leGl0LCAoRGF0dW0pIDApOwogCiAJ LyoKQEAgLTE1MjIsNyArMTUyNCw3IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVf c2luY2Uodm9pZCkKIAkJcmV0dXJuOwogCiAJLyogVGhlIHNsb3Qgc3luYyB3b3JrZXIgb3Ig U1FMIGZ1bmN0aW9uIG11c3RuJ3QgYmUgcnVubmluZyBieSBub3cgKi8KLQlBc3NlcnQoKFNs b3RTeW5jQ3R4LT5waWQgPT0gSW52YWxpZFBpZCkgJiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5n KTsKKwlBc3NlcnQoKFNsb3RTeW5jQ3R4LT5wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJF UikgJiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsKIAogCUxXTG9ja0FjcXVpcmUoUmVwbGlj YXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CiAKQEAgLTE1MzYsNyArMTUzOCw3 IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkKIAkJCUFzc2Vy dChTbG90SXNMb2dpY2FsKHMpKTsKIAogCQkJLyogVGhlIHNsb3QgbXVzdCBub3QgYmUgYWNx dWlyZWQgYnkgYW55IHByb2Nlc3MgKi8KLQkJCUFzc2VydChzLT5hY3RpdmVfcGlkID09IDAp OworCQkJQXNzZXJ0KHMtPmFjdGl2ZV9wcm9jID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwog CiAJCQkvKiBVc2UgdGhlIHNhbWUgaW5hY3RpdmVfc2luY2UgdGltZSBmb3IgYWxsIHRoZSBz bG90cy4gKi8KIAkJCWlmIChub3cgPT0gMCkKQEAgLTE1NTksNyArMTU2MSw3IEBAIHVwZGF0 ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkKIHZvaWQKIFNodXREb3duU2xv dFN5bmModm9pZCkKIHsKLQlwaWRfdAkJd29ya2VyX3BpZDsKKwlQcm9jTnVtYmVyCXdvcmtl cl9wcm9jbm87CiAKIAlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAK QEAgLTE1NzYsMTIgKzE1NzgsMTIgQEAgU2h1dERvd25TbG90U3luYyh2b2lkKQogCQlyZXR1 cm47CiAJfQogCi0Jd29ya2VyX3BpZCA9IFNsb3RTeW5jQ3R4LT5waWQ7CisJd29ya2VyX3By b2NubyA9IFNsb3RTeW5jQ3R4LT5wcm9jbm87CiAKIAlTcGluTG9ja1JlbGVhc2UoJlNsb3RT eW5jQ3R4LT5tdXRleCk7CiAKLQlpZiAod29ya2VyX3BpZCAhPSBJbnZhbGlkUGlkKQotCQlr aWxsKHdvcmtlcl9waWQsIFNJR0lOVCk7CisJaWYgKHdvcmtlcl9wcm9jbm8gIT0gSU5WQUxJ RF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM LCB3b3JrZXJfcHJvY25vKTsKIAogCS8qIFdhaXQgZm9yIHNsb3Qgc3luYyB0byBlbmQgKi8K IAlmb3IgKDs7KQpAQCAtMTU4OSwxNCArMTU5MSwxNSBAQCBTaHV0RG93blNsb3RTeW5jKHZv aWQpCiAJCWludAkJCXJjOwogCiAJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0IGV4cGVjdCB0 byBoYXZlIHRvIHdhaXQgbG9uZyAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFT SyB8CisJCQkJCQkgICBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgMTBMLCBX QUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOKTsKIAogCQlpZiAocmMg JiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5j Q3R4LT5tdXRleCk7CkBAIC0xNjc0LDcgKzE2NzcsNyBAQCBTbG90U3luY1NobWVtSW5pdCh2 b2lkKQogCWlmICghZm91bmQpCiAJewogCQltZW1zZXQoU2xvdFN5bmNDdHgsIDAsIHNpemUp OwotCQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwkJU2xvdFN5bmNDdHgtPnBy b2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmND dHgtPm11dGV4KTsKIAl9CiB9CkBAIC0xNzI0LDcgKzE3MjcsNyBAQCBTeW5jUmVwbGljYXRp b25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIHsKIAlQR19FTlNVUkVfRVJST1Jf Q0xFQU5VUChzbG90c3luY19mYWlsdXJlX2NhbGxiYWNrLCBQb2ludGVyR2V0RGF0dW0od3Jj b25uKSk7CiAJewotCQljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhJbnZhbGlkUGlkKTsKKwkJ Y2hlY2tfYW5kX3NldF9zeW5jX2luZm8oSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkJdmFs aWRhdGVfcmVtb3RlX2luZm8od3Jjb25uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggODc3ZmI3YWNhMzYuLmViMmE0OTkzZjE3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK QEAgLTIxMSw3ICsyMTEsNyBAQCB3YWl0X2Zvcl9yZWxhdGlvbl9zdGF0ZV9jaGFuZ2UoT2lk IHJlbGlkLCBjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQlpZiAoIXdvcmtlcikKIAkJCWJyZWFr OwogCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVSUlVQVF9H RU5FUkFMLAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKIAkJCQkJCQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NU QVRFX0NIQU5HRSk7CiAKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHdhaXRfZm9yX3dvcmtlcl9z dGF0ZV9jaGFuZ2UoY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJCWJyZWFrOwogCiAJCS8qCi0J CSAqIFdhaXQuICBXZSBleHBlY3QgdG8gZ2V0IGFuIGludGVycnVwdCB3YWtldXAgZnJvbSB0 aGUgYXBwbHkgd29ya2VyLAotCQkgKiBidXQgdXNlIGEgdGltZW91dCBpbiBjYXNlIGl0IGRp ZXMgd2l0aG91dCBzZW5kaW5nIG9uZS4KKwkJICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQg YW4gSU5URVJSVVBUX0dFTkVSQUwgd2FrZXVwIGZyb20gdGhlIGFwcGx5CisJCSAqIHdvcmtl ciwgYnV0IHVzZSBhIHRpbWVvdXQgaW4gY2FzZSBpdCBkaWVzIHdpdGhvdXQgc2VuZGluZyBv bmUuCiAJCSAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVSUlVQ VF9HRU5FUkFMLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCiAJCQkJCQkgICAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZ TkNfU1RBVEVfQ0hBTkdFKTsKIApAQCAtNzc0LDEyICs3NzQsMTAgQEAgY29weV9yZWFkX2Rh dGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCS8qCiAJCSAq IFdhaXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuCiAJCSAqLwotCQkodm9pZCkgV2Fp dEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCSh2b2lkKSBX YWl0SW50ZXJydXB0T3JTb2NrZXQoSU5URVJSVVBUX0NGSV9NQVNLLAogCQkJCQkJCQkJIFdM X1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CiAJCQkJCQkJCQkgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VW RU5UX0xPR0lDQUxfU1lOQ19EQVRBKTsKLQotCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiAJfQogCiAJcmV0dXJuIGJ5dGVzcmVhZDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDI5ZDAzYWYwYWM1Li43MWI5M2Q0OTQ1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0z NjU1LDExICszNjU1LDggQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3Rf cmVjZWl2ZWQpCiAJCQkJCWludAkJCWM7CiAJCQkJCVN0cmluZ0luZm9EYXRhIHM7CiAKLQkJ CQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCQkJCXsKLQkJCQkJCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKKwkJCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpKQogCQkJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 Ci0JCQkJCX0KIAogCQkJCQkvKiBSZXNldCB0aW1lb3V0LiAqLwogCQkJCQlsYXN0X3JlY3Zf dGltZXN0YW1wID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwpAQCAtMzc1NCw3ICszNzUxLDkg QEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCWVs c2UKIAkJCXdhaXRfdGltZSA9IE5BUFRJTUVfUEVSX0NZQ0xFOwogCi0JCXJjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFTSyB8CisJCQkJCQkJCSAgIElOVEVS UlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwsCiAJ CQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CiAJCQkJCQkJ CSAgIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkgICBmZCwg d2FpdF90aW1lLApAQCAtMzc2MiwxNCArMzc2MSwxMCBAQCBMb2dpY2FsUmVwQXBwbHlMb29w KFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQp CiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KLQotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykK LQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwotCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7CisJCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRf Q09ORklHX1JFTE9BRCkpCisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJ CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQlpZiAocmMg JiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGNhMjcxMzMwNTk0 Li44NGJlNGEwNTBmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNTEsNiArNTEs NyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKQEAgLTIyNCw2ICsyMjUsNyBAQCBSZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZv aWQpCiAJCQlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5y ZXBsaWNhdGlvbl9zbG90c1tpXTsKIAogCQkJLyogZXZlcnl0aGluZyBlbHNlIGlzIHplcm9l ZCBieSB0aGUgbWVtc2V0IGFib3ZlICovCisJCQlzbG90LT5hY3RpdmVfcHJvYyA9IElOVkFM SURfUFJPQ19OVU1CRVI7CiAJCQlTcGluTG9ja0luaXQoJnNsb3QtPm11dGV4KTsKIAkJCUxX TG9ja0luaXRpYWxpemUoJnNsb3QtPmlvX2luX3Byb2dyZXNzX2xvY2ssCiAJCQkJCQkJIExX VFJBTkNIRV9SRVBMSUNBVElPTl9TTE9UX0lPKTsKQEAgLTQwMiw3ICs0MDQsNyBAQCBSZXBs aWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBkYl9zcGVjaWZpYywK IAkgKiBiZSBkb2luZyB0aGF0LiAgU28gaXQncyBzYWZlIHRvIGluaXRpYWxpemUgdGhlIHNs b3QuCiAJICovCiAJQXNzZXJ0KCFzbG90LT5pbl91c2UpOwotCUFzc2VydChzbG90LT5hY3Rp dmVfcGlkID09IDApOworCUFzc2VydChzbG90LT5hY3RpdmVfcHJvYyA9PSBJTlZBTElEX1BS T0NfTlVNQkVSKTsKIAogCS8qIGZpcnN0IGluaXRpYWxpemUgcGVyc2lzdGVudCBkYXRhICov CiAJbWVtc2V0KCZzbG90LT5kYXRhLCAwLCBzaXplb2YoUmVwbGljYXRpb25TbG90UGVyc2lz dGVudERhdGEpKTsKQEAgLTQ0NCw4ICs0NDYsOCBAQCBSZXBsaWNhdGlvblNsb3RDcmVhdGUo Y29uc3QgY2hhciAqbmFtZSwgYm9vbCBkYl9zcGVjaWZpYywKIAogCS8qIFdlIGNhbiBub3cg bWFyayB0aGUgc2xvdCBhY3RpdmUsIGFuZCB0aGF0IG1ha2VzIGl0IG91ciBzbG90LiAqLwog CVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCUFzc2VydChzbG90LT5hY3RpdmVf cGlkID09IDApOwotCXNsb3QtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJQXNzZXJ0KHNs b3QtPmFjdGl2ZV9wcm9jID09IElOVkFMSURfUFJPQ19OVU1CRVIpOworCXNsb3QtPmFjdGl2 ZV9wcm9jID0gTXlQcm9jTnVtYmVyOwogCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgp OwogCU15UmVwbGljYXRpb25TbG90ID0gc2xvdDsKIApAQCAtNTU5LDcgKzU2MSw3IEBAIHZv aWQKIFJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dh aXQsIGJvb2wgZXJyb3JfaWZfaW52YWxpZCkKIHsKIAlSZXBsaWNhdGlvblNsb3QgKnM7Ci0J aW50CQkJYWN0aXZlX3BpZDsKKwlQcm9jTnVtYmVyCWFjdGl2ZV9wcm9jOwogCiAJQXNzZXJ0 KG5hbWUgIT0gTlVMTCk7CiAKQEAgLTYwMCwxNSArNjAyLDE1IEBAIHJldHJ5OgogCQkgKiB0 byBpbmFjdGl2ZV9zaW5jZSBpbiBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QuCiAJ CSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKLQkJaWYgKHMtPmFjdGl2ZV9w aWQgPT0gMCkKLQkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7Ci0JCWFjdGl2ZV9waWQg PSBzLT5hY3RpdmVfcGlkOworCQlpZiAocy0+YWN0aXZlX3Byb2MgPT0gSU5WQUxJRF9QUk9D X05VTUJFUikKKwkJCXMtPmFjdGl2ZV9wcm9jID0gTXlQcm9jTnVtYmVyOworCQlhY3RpdmVf cHJvYyA9IHMtPmFjdGl2ZV9wcm9jOwogCQlSZXBsaWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNp bmNlKHMsIDAsIGZhbHNlKTsKIAkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CiAJfQog CWVsc2UKIAl7Ci0JCWFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJCWFjdGl2ZV9wcm9jID0g TXlQcm9jTnVtYmVyOwogCQlSZXBsaWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKHMsIDAs IHRydWUpOwogCX0KIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr KTsKQEAgLTYxOCw3ICs2MjAsNyBAQCByZXRyeToKIAkgKiB3YWl0IHVudGlsIHRoZSBvd25p bmcgcHJvY2VzcyBzaWduYWxzIHVzIHRoYXQgaXQncyBiZWVuIHJlbGVhc2VkLCBvcgogCSAq IGVycm9yIG91dC4KIAkgKi8KLQlpZiAoYWN0aXZlX3BpZCAhPSBNeVByb2NQaWQpCisJaWYg KGFjdGl2ZV9wcm9jICE9IE15UHJvY051bWJlcikKIAl7CiAJCWlmICghbm93YWl0KQogCQl7 CkBAIC02MzIsNyArNjM0LDcgQEAgcmV0cnk6CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKIAkJCQkgZXJybXNnKCJyZXBsaWNhdGlv biBzbG90IFwiJXNcIiBpcyBhY3RpdmUgZm9yIFBJRCAlZCIsCi0JCQkJCQlOYW1lU3RyKHMt PmRhdGEubmFtZSksIGFjdGl2ZV9waWQpKSk7CisJCQkJCQlOYW1lU3RyKHMtPmRhdGEubmFt ZSksIEdldFBHUHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKS0+cGlkKSkpOwogCX0KIAllbHNl IGlmICghbm93YWl0KQogCQlDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7IC8qIG5v IHNsZWVwIG5lZWRlZCBhZnRlciBhbGwgKi8KQEAgLTY5MCw3ICs2OTIsNyBAQCBSZXBsaWNh dGlvblNsb3RSZWxlYXNlKHZvaWQpCiAJYm9vbAkJaXNfbG9naWNhbCA9IGZhbHNlOyAvKiBr ZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJVGltZXN0YW1wVHogbm93ID0gMDsKIAotCUFzc2Vy dChzbG90ICE9IE5VTEwgJiYgc2xvdC0+YWN0aXZlX3BpZCAhPSAwKTsKKwlBc3NlcnQoc2xv dCAhPSBOVUxMICYmIHNsb3QtPmFjdGl2ZV9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIp OwogCiAJaWYgKGFtX3dhbHNlbmRlcikKIAl7CkBAIC03MzYsNyArNzM4LDcgQEAgUmVwbGlj YXRpb25TbG90UmVsZWFzZSh2b2lkKQogCQkgKiBkaXNjb25uZWN0aW5nLCBidXQgd2FrZSB1 cCBvdGhlcnMgdGhhdCBtYXkgYmUgd2FpdGluZyBmb3IgaXQuCiAJCSAqLwogCQlTcGluTG9j a0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJc2xvdC0+YWN0aXZlX3BpZCA9IDA7CisJCXNs b3QtPmFjdGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJUmVwbGljYXRpb25T bG90U2V0SW5hY3RpdmVTaW5jZShzbG90LCBub3csIGZhbHNlKTsKIAkJU3BpbkxvY2tSZWxl YXNlKCZzbG90LT5tdXRleCk7CiAJCUNvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCZzbG90 LT5hY3RpdmVfY3YpOwpAQCAtNzg4LDcgKzc5MCw3IEBAIHJlc3RhcnQ6CiAJCQljb250aW51 ZTsKIAogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKLQkJaWYgKChzLT5hY3RpdmVf cGlkID09IE15UHJvY1BpZCAmJgorCQlpZiAoKHMtPmFjdGl2ZV9wcm9jID09IE15UHJvY051 bWJlciAmJgogCQkJICghc3luY2VkX29ubHkgfHwgcy0+ZGF0YS5zeW5jZWQpKSkKIAkJewog CQkJQXNzZXJ0KHMtPmRhdGEucGVyc2lzdGVuY3kgPT0gUlNfVEVNUE9SQVJZKTsKQEAgLTk3 Niw3ICs5NzgsNyBAQCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAq c2xvdCkKIAkJYm9vbAkJZmFpbF9zb2Z0bHkgPSBzbG90LT5kYXRhLnBlcnNpc3RlbmN5ICE9 IFJTX1BFUlNJU1RFTlQ7CiAKIAkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0J CXNsb3QtPmFjdGl2ZV9waWQgPSAwOworCQlzbG90LT5hY3RpdmVfcHJvYyA9IElOVkFMSURf UFJPQ19OVU1CRVI7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwogCiAJCS8q IHdha2UgdXAgYW55b25lIHdhaXRpbmcgb24gdGhpcyBzbG90ICovCkBAIC05OTgsNyArMTAw MCw3IEBAIFJlcGxpY2F0aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KQog CSAqIEFsc28gd2FrZSB1cCBwcm9jZXNzZXMgd2FpdGluZyBmb3IgaXQuCiAJICovCiAJTFdM b2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsK LQlzbG90LT5hY3RpdmVfcGlkID0gMDsKKwlzbG90LT5hY3RpdmVfcHJvYyA9IElOVkFMSURf UFJPQ19OVU1CRVI7CiAJc2xvdC0+aW5fdXNlID0gZmFsc2U7CiAJTFdMb2NrUmVsZWFzZShS ZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNh c3QoJnNsb3QtPmFjdGl2ZV9jdik7CkBAIC0xMjkzLDcgKzEyOTUsNyBAQCBSZXBsaWNhdGlv blNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9pZCwgaW50ICpuc2xvdHMsIGludCAqbmFjdGl2 ZSkKIAkJLyogY291bnQgc2xvdHMgd2l0aCBzcGlubG9jayBoZWxkICovCiAJCVNwaW5Mb2Nr QWNxdWlyZSgmcy0+bXV0ZXgpOwogCQkoKm5zbG90cykrKzsKLQkJaWYgKHMtPmFjdGl2ZV9w aWQgIT0gMCkKKwkJaWYgKHMtPmFjdGl2ZV9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIp CiAJCQkoKm5hY3RpdmUpKys7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCX0K QEAgLTEzMzEsNyArMTMzMyw3IEBAIHJlc3RhcnQ6CiAJewogCQlSZXBsaWNhdGlvblNsb3Qg KnM7CiAJCWNoYXIJICAgKnNsb3RuYW1lOwotCQlpbnQJCQlhY3RpdmVfcGlkOworCQlQcm9j TnVtYmVyCWFjdGl2ZV9wcm9jOwogCiAJCXMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBs aWNhdGlvbl9zbG90c1tpXTsKIApAQCAtMTM1MywxMSArMTM1NSwxMSBAQCByZXN0YXJ0Ogog CQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAkJLyogY2FuJ3QgY2hhbmdlIHdoaWxl IFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIGlzIGhlbGQgKi8KIAkJc2xvdG5hbWUgPSBO YW1lU3RyKHMtPmRhdGEubmFtZSk7Ci0JCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlkOwot CQlpZiAoYWN0aXZlX3BpZCA9PSAwKQorCQlhY3RpdmVfcHJvYyA9IHMtPmFjdGl2ZV9wcm9j OworCQlpZiAoYWN0aXZlX3Byb2MgPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJewogCQkJ TXlSZXBsaWNhdGlvblNsb3QgPSBzOwotCQkJcy0+YWN0aXZlX3BpZCA9IE15UHJvY1BpZDsK KwkJCXMtPmFjdGl2ZV9wcm9jID0gTXlQcm9jTnVtYmVyOwogCQl9CiAJCVNwaW5Mb2NrUmVs ZWFzZSgmcy0+bXV0ZXgpOwogCkBAIC0xMzgyLDExICsxMzg0LDExIEBAIHJlc3RhcnQ6CiAJ CSAqIFhYWDogV2UgY2FuIGNvbnNpZGVyIHNodXR0aW5nIGRvd24gdGhlIHNsb3Qgc3luYyB3 b3JrZXIgYmVmb3JlCiAJCSAqIHRyeWluZyB0byBkcm9wIHN5bmNlZCB0ZW1wb3Jhcnkgc2xv dHMgaGVyZS4KIAkJICovCi0JCWlmIChhY3RpdmVfcGlkKQorCQlpZiAoYWN0aXZlX3Byb2Mg IT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCiAJCQkJCSBlcnJtc2coInJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIGlzIGFjdGl2ZSBmb3IgUElEICVkIiwKLQkJCQkJCQlzbG90bmFtZSwg YWN0aXZlX3BpZCkpKTsKKwkJCQkJCQlzbG90bmFtZSwgR2V0UEdQcm9jQnlOdW1iZXIoYWN0 aXZlX3Byb2MpLT5waWQpKSk7CiAKIAkJLyoKIAkJICogVG8gYXZvaWQgZHVwbGljYXRpbmcg UmVwbGljYXRpb25TbG90RHJvcEFjcXVpcmVkKCkgYW5kIHRvIGF2b2lkCkBAIC0xNzIxLDcg KzE3MjMsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3Np YmxlX2NhdXNlcywKIAkJCQkJCQkgICBPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b24sCiAJCQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQpCiB7Ci0J aW50CQkJbGFzdF9zaWduYWxlZF9waWQgPSAwOworCVByb2NOdW1iZXIJbGFzdF9zaWduYWxl ZF9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlib29sCQlyZWxlYXNlZF9sb2NrID0g ZmFsc2U7CiAJYm9vbAkJdGVybWluYXRlZCA9IGZhbHNlOwogCVRyYW5zYWN0aW9uSWQgaW5p dGlhbF9lZmZlY3RpdmVfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwpAQCAtMTczNCw3 ICsxNzM2LDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3Nz aWJsZV9jYXVzZXMsCiAJewogCQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuOwogCQlOYW1lRGF0 YQlzbG90bmFtZTsKLQkJaW50CQkJYWN0aXZlX3BpZCA9IDA7CisJCVByb2NOdW1iZXIJYWN0 aXZlX3Byb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlSZXBsaWNhdGlvblNsb3RJbnZh bGlkYXRpb25DYXVzZSBpbnZhbGlkYXRpb25fY2F1c2UgPSBSU19JTlZBTF9OT05FOwogCQlU aW1lc3RhbXBUeiBub3cgPSAwOwogCQlsb25nCQlzbG90X2lkbGVfc2VjcyA9IDA7CkBAIC0x ODE3LDE3ICsxODE5LDE3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50 MzIgcG9zc2libGVfY2F1c2VzLAogCQl9CiAKIAkJc2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7 Ci0JCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlkOworCQlhY3RpdmVfcHJvYyA9IHMtPmFj dGl2ZV9wcm9jOwogCiAJCS8qCiAJCSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJlZCwg ZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKIAkJICogaW1tZWRpYXRlbHkuICBPdGhl cndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAogCQkg KiByZXRyeS4KIAkJICovCi0JCWlmIChhY3RpdmVfcGlkID09IDApCisJCWlmIChhY3RpdmVf cHJvYyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xv dCA9IHM7Ci0JCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOworCQkJcy0+YWN0aXZlX3By b2MgPSBNeVByb2NOdW1iZXI7CiAJCQlzLT5kYXRhLmludmFsaWRhdGVkID0gaW52YWxpZGF0 aW9uX2NhdXNlOwogCiAJCQkvKgpAQCAtMTg2NCw3ICsxODY2LDcgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkJCQkJCSZz bG90X2lkbGVfdXNlY3MpOwogCQl9CiAKLQkJaWYgKGFjdGl2ZV9waWQgIT0gMCkKKwkJaWYg KGFjdGl2ZV9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCXsKIAkJCS8qCiAJCQkg KiBQcmVwYXJlIHRoZSBzbGVlcCBvbiB0aGUgc2xvdCdzIGNvbmRpdGlvbiB2YXJpYWJsZSBi ZWZvcmUKQEAgLTE4ODcsMjIgKzE4ODksMjUgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xl dGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkgKiBwcm9jZXNzIG93bnMgaXQu IFRvIGhhbmRsZSB0aGF0LCB3ZSBzaWduYWwgb25seSBpZiB0aGUgUElEIG9mCiAJCQkgKiB0 aGUgb3duaW5nIHByb2Nlc3MgaGFzIGNoYW5nZWQgZnJvbSB0aGUgcHJldmlvdXMgdGltZS4g KFRoaXMKIAkJCSAqIGxvZ2ljIGFzc3VtZXMgdGhhdCB0aGUgc2FtZSBQSUQgaXMgbm90IHJl dXNlZCB2ZXJ5IHF1aWNrbHkuKQorCQkJICoKKwkJCSAqIEZJWE1FOiBuZWVkIGFub3RoZXIg Y2hlY2sgbm93IHRoYXQgd2UncmUgdXNpbmcgUHJvY051bWJlcnMsIHdoaWNoCisJCQkgKiBk byBnZXQgcmVjeWNsZWQgcXVpY2tseQogCQkJICovCi0JCQlpZiAobGFzdF9zaWduYWxlZF9w aWQgIT0gYWN0aXZlX3BpZCkKKwkJCWlmIChsYXN0X3NpZ25hbGVkX3Byb2MgIT0gYWN0aXZl X3Byb2MpCiAJCQl7Ci0JCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25f Y2F1c2UsIHRydWUsIGFjdGl2ZV9waWQsCisJCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihp bnZhbGlkYXRpb25fY2F1c2UsIHRydWUsCisJCQkJCQkJCQkgICBHZXRQR1Byb2NCeU51bWJl cihhY3RpdmVfcHJvYyktPnBpZCwKIAkJCQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xz biwKIAkJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJ CQkJCQkJCQkgICBzbG90X2lkbGVfc2Vjcyk7CiAKIAkJCQlpZiAoTXlCYWNrZW5kVHlwZSA9 PSBCX1NUQVJUVVApCi0JCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLAot CQkJCQkJCQkJCSAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKLQkJ CQkJCQkJCQkgIElOVkFMSURfUFJPQ19OVU1CRVIpOworCQkJCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKKwkJCQkJCQkJICBhY3Rp dmVfcHJvYyk7CiAJCQkJZWxzZQotCQkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdU RVJNKTsKKwkJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfRElFLCBhY3RpdmVfcHJvYyk7 CiAKLQkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFjdGl2ZV9waWQ7CisJCQkJbGFzdF9zaWdu YWxlZF9wcm9jID0gYWN0aXZlX3Byb2M7CiAJCQkJdGVybWluYXRlZCA9IHRydWU7CiAJCQkJ aW52YWxpZGF0aW9uX2NhdXNlX3ByZXYgPSBpbnZhbGlkYXRpb25fY2F1c2U7CiAJCQl9CkBA IC0xOTM3LDcgKzE5NDIsOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWlu dDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKIAkJCVJl cGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKIAotCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihp bnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBhY3RpdmVfcGlkLAorCQkJUmVwb3J0U2xvdElu dmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLAorCQkJCQkJCQkgICBHZXRQ R1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyktPnBpZCwKIAkJCQkJCQkJICAgc2xvdG5hbWUs IHJlc3RhcnRfbHNuLAogCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAogCQkJCQkJCQkgICBzbG90X2lkbGVfc2Vjcyk7CkBAIC0yNTc2LDcgKzI1ODIs NyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJCXNsb3QtPmNh bmRpZGF0ZV9yZXN0YXJ0X3ZhbGlkID0gSW52YWxpZFhMb2dSZWNQdHI7CiAKIAkJc2xvdC0+ aW5fdXNlID0gdHJ1ZTsKLQkJc2xvdC0+YWN0aXZlX3BpZCA9IDA7CisJCXNsb3QtPmFjdGl2 ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCQkvKgogCQkgKiBTZXQgdGhlIHRp bWUgc2luY2UgdGhlIHNsb3QgaGFzIGJlY29tZSBpbmFjdGl2ZSBhZnRlciBsb2FkaW5nIHRo ZQpAQCAtMjg4NCw3ICsyODkwLDcgQEAgU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKFhMb2dS ZWNQdHIgd2FpdF9mb3JfbHNuLCBpbnQgZWxldmVsKQogCQlTcGluTG9ja0FjcXVpcmUoJnNs b3QtPm11dGV4KTsKIAkJcmVzdGFydF9sc24gPSBzbG90LT5kYXRhLnJlc3RhcnRfbHNuOwog CQlpbnZhbGlkYXRlZCA9IHNsb3QtPmRhdGEuaW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9O RTsKLQkJaW5hY3RpdmUgPSBzbG90LT5hY3RpdmVfcGlkID09IDA7CisJCWluYWN0aXZlID0g c2xvdC0+YWN0aXZlX3Byb2MgPT0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJU3BpbkxvY2tS ZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJaWYgKGludmFsaWRhdGVkKQpAQCAtMjk3MCwx MSArMjk3Niw4IEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKFhMb2dSZWNQdHIgd2Fp dF9mb3JfbHNuKQogCXsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJ CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCS8qIEV4aXQgaWYg ZG9uZSB3YWl0aW5nIGZvciBldmVyeSBzbG90LiAqLwogCQlpZiAoU3RhbmRieVNsb3RzSGF2 ZUNhdWdodHVwKHdhaXRfZm9yX2xzbiwgV0FSTklORykpCkBAIC0yOTg0LDYgKzI5ODcsOCBA QCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbikK IAkJICogV2FpdCBmb3IgdGhlIHNsb3RzIGluIHRoZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9z bG90cyB0byBjYXRjaCB1cCwKIAkJICogYnV0IHVzZSBhIHRpbWVvdXQgKDFzKSBzbyB3ZSBj YW4gYWxzbyBjaGVjayBpZiB0aGUKIAkJICogc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMg aGFzIGJlZW4gY2hhbmdlZC4KKwkJICoKKwkJICogRklYTUU6IEkgdGhpbmsgd2UgbmVlZCBh IHdhaXQgdG8gYWRkIGEgQ1YgdG8gV2FpdEV2ZW50U2V0CiAJCSAqLwogCQlDb25kaXRpb25W YXJpYWJsZVRpbWVkU2xlZXAoJldhbFNuZEN0bC0+d2FsX2NvbmZpcm1fcmN2X2N2LCAxMDAw LAogCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUlUX0ZPUl9TVEFOREJZX0NPTkZJUk1BVElPTik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IDE0NmVlZjU4NzFlLi42 ODIwYjEzMTQ2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAgLTIw LDYgKzIwLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5j LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sc24u aCIKQEAgLTI1NSw2ICsyNTYsNyBAQCBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVO Q1RJT05fQVJHUykKIAl7CiAJCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9ICZSZXBsaWNhdGlv blNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW3Nsb3Rub107CiAJCVJlcGxpY2F0aW9uU2xv dCBzbG90X2NvbnRlbnRzOworCQlpbnQJCQlhY3RpdmVfcGlkOwogCQlEYXR1bQkJdmFsdWVz W1BHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTXTsKIAkJYm9vbAkJbnVsbHNbUEdfR0VU X1JFUExJQ0FUSU9OX1NMT1RTX0NPTFNdOwogCQlXQUxBdmFpbGFiaWxpdHkgd2Fsc3RhdGU7 CkBAIC0yNjcsNiArMjY5LDEwIEBAIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5D VElPTl9BUkdTKQogCQkvKiBDb3B5IHNsb3QgY29udGVudHMgd2hpbGUgaG9sZGluZyBzcGlu bG9jaywgdGhlbiBleGFtaW5lIGF0IGxlaXN1cmUgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZz bG90LT5tdXRleCk7CiAJCXNsb3RfY29udGVudHMgPSAqc2xvdDsKKwkJaWYgKHNsb3RfY29u dGVudHMuYWN0aXZlX3Byb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCWFjdGl2ZV9w aWQgPSBHZXRQR1Byb2NCeU51bWJlcihzbG90X2NvbnRlbnRzLmFjdGl2ZV9wcm9jKS0+cGlk OworCQllbHNlCisJCQlhY3RpdmVfcGlkID0gMDsKIAkJU3BpbkxvY2tSZWxlYXNlKCZzbG90 LT5tdXRleCk7CiAKIAkJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwpAQCAt MjkxLDEwICsyOTcsMTAgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCQl2YWx1ZXNbaSsrXSA9IE9iamVjdElkR2V0RGF0dW0oc2xvdF9jb250ZW50 cy5kYXRhLmRhdGFiYXNlKTsKIAogCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90 X2NvbnRlbnRzLmRhdGEucGVyc2lzdGVuY3kgPT0gUlNfVEVNUE9SQVJZKTsKLQkJdmFsdWVz W2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5hY3RpdmVfcGlkICE9IDApOwor CQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmFjdGl2ZV9wcm9j ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCi0JCWlmIChzbG90X2NvbnRlbnRzLmFjdGl2 ZV9waWQgIT0gMCkKLQkJCXZhbHVlc1tpKytdID0gSW50MzJHZXREYXR1bShzbG90X2NvbnRl bnRzLmFjdGl2ZV9waWQpOworCQlpZiAoc2xvdF9jb250ZW50cy5hY3RpdmVfcHJvYyAhPSBJ TlZBTElEX1BST0NfTlVNQkVSKQorCQkJdmFsdWVzW2krK10gPSBJbnQzMkdldERhdHVtKGFj dGl2ZV9waWQpOwogCQllbHNlCiAJCQludWxsc1tpKytdID0gdHJ1ZTsKIApAQCAtMzU5LDEz ICszNjUsMTMgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJICovCiAJCQkJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKHNsb3RfY29udGVudHMu ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCQkJewotCQkJCQlpbnQJCQlwaWQ7CisJCQkJCVByb2NO dW1iZXIJcHJvY25vOwogCiAJCQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwot CQkJCQlwaWQgPSBzbG90LT5hY3RpdmVfcGlkOworCQkJCQlwcm9jbm8gPSBzbG90LT5hY3Rp dmVfcHJvYzsKIAkJCQkJc2xvdF9jb250ZW50cy5kYXRhLnJlc3RhcnRfbHNuID0gc2xvdC0+ ZGF0YS5yZXN0YXJ0X2xzbjsKIAkJCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7 Ci0JCQkJCWlmIChwaWQgIT0gMCkKKwkJCQkJaWYgKHByb2NubyAhPSBJTlZBTElEX1BST0Nf TlVNQkVSKQogCQkJCQl7CiAJCQkJCQl2YWx1ZXNbaSsrXSA9IENTdHJpbmdHZXRUZXh0RGF0 dW0oInVucmVzZXJ2ZWQiKTsKIAkJCQkJCXdhbHN0YXRlID0gV0FMQVZBSUxfVU5SRVNFUlZF RDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwppbmRleCAxYzBkNzliODU2OC4uNDQ0 ZWY0OThjZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKQEAgLTI1MiwxMCAr MjUyLDEwIEBAIFN5bmNSZXBXYWl0Rm9yTFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1p dCkKIAkJICogZW50aXRsZWQgdG8gYXNzdW1lIHRoYXQgYW4gYWNrbm93bGVkZ2VkIGNvbW1p dCBpcyBhbHNvIHJlcGxpY2F0ZWQsCiAJCSAqIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlLiBT byBpbiB0aGlzIGNhc2Ugd2UgaXNzdWUgYSBXQVJOSU5HICh3aGljaAogCQkgKiBzb21lIGNs aWVudHMgbWF5IGJlIGFibGUgdG8gaW50ZXJwcmV0KSBhbmQgc2h1dCBvZmYgZnVydGhlciBv dXRwdXQuCi0JCSAqIFdlIGRvIE5PVCByZXNldCBQcm9jRGllUGVuZGluZywgc28gdGhhdCB0 aGUgcHJvY2VzcyB3aWxsIGRpZSBhZnRlcgorCQkgKiBXZSBkbyBOT1QgY2xlYXIgdGhlIGlu dGVycnVwdCBiaXQsIHNvIHRoYXQgdGhlIHByb2Nlc3Mgd2lsbCBkaWUgYWZ0ZXIKIAkJICog dGhlIGNvbW1pdCBpcyBjbGVhbmVkIHVwLgogCQkgKi8KLQkJaWYgKFByb2NEaWVQZW5kaW5n KQorCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfRElFKSkKIAkJewogCQkJZXJl cG9ydChXQVJOSU5HLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwK QEAgLTI3Miw5ICsyNzIsOCBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwg Ym9vbCBjb21taXQpCiAJCSAqIGFsdG9nZXRoZXIgaXMgbm90IGhlbHBmdWwsIHNvIHdlIGp1 c3QgdGVybWluYXRlIHRoZSB3YWl0IHdpdGggYQogCQkgKiBzdWl0YWJsZSB3YXJuaW5nLgog CQkgKi8KLQkJaWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1 cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCXsKLQkJCVF1ZXJ5Q2FuY2VsUGVuZGlu ZyA9IGZhbHNlOwogCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJjYW5jZWxp bmcgd2FpdCBmb3Igc3luY2hyb25vdXMgcmVwbGljYXRpb24gZHVlIHRvIHVzZXIgcmVxdWVz dCIpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgY29t bWl0dGVkIGxvY2FsbHksIGJ1dCBtaWdodCBub3QgaGF2ZSBiZWVuIHJlcGxpY2F0ZWQgdG8g dGhlIHN0YW5kYnkuIikpKTsKQEAgLTI4Niw3ICsyODUsOSBAQCBTeW5jUmVwV2FpdEZvckxT TihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJCSAqIFdhaXQgb24gaW50ZXJydXB0 LiAgQW55IGNvbmRpdGlvbiB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0CiAJCSAq IHRoZSBpbnRlcnJ1cHQsIHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQuCiAJCSAqLwotCQlyYyA9 IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9ESUUgfAor CQkJCQkJICAgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCiAJCQkJCQkgICAtMSwKIAkJCQkJCSAgIFdBSVRf RVZFTlRfU1lOQ19SRVApOwpAQCAtMjk3LDcgKzI5OCw3IEBAIFN5bmNSZXBXYWl0Rm9yTFNO KFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJICovCiAJCWlmIChyYyAmIFdMX1BP U1RNQVNURVJfREVBVEgpCiAJCXsKLQkJCVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKKwkJCVJh aXNlSW50ZXJydXB0KElOVEVSUlVQVF9ESUUpOwogCQkJd2hlcmVUb1NlbmRPdXRwdXQgPSBE ZXN0Tm9uZTsKIAkJCVN5bmNSZXBDYW5jZWxXYWl0KCk7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDRiYzIzYWUyMWEzLi5jZWUwZmQy YTA4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC03MSw3 ICs3MSw2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0xNzAsNyAr MTY5LDcgQEAgUHJvY2Vzc1dhbFJjdkludGVycnVwdHModm9pZCkKIAkgKi8KIAlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYg KEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJewogCQllcmVw b3J0KEZBVEFMLAogCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLApAQCAt Mjg1LDcgKzI4NCw3IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMg YWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBxc2lnbmFsKFNJ R0FMUk0sIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2ln bmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChT SUdVU1IxLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKIAogCS8q IFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1 dCBub3QgaGVyZSAqLwpAQCAtNDYyLDkgKzQ2MSw4IEBAIFdhbFJlY2VpdmVyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCS8q IFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8K IAkJCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwogCi0JCQkJaWYgKENvbmZpZ1JlbG9h ZFBlbmRpbmcpCisJCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19S RUxPQUQpKQogCQkJCXsKLQkJCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJ CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCQkJLyogcmVjb21wdXRlIHdh a2V1cCB0aW1lcyAqLwogCQkJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CkBAIC01 NDcsNyArNTQ1LDEwIEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCSAqIGF2b2lkaW5nIHNvbWUgc3lz dGVtIGNhbGxzLgogCQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5WQUxJRF9T T0NLRVQpOwotCQkJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoSU5URVJSVVBUX0NG SV9NQVNLIHwKKwkJCQkJCQkJCQkgICBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJ CQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCQkJCQkJICAgSU5URVJS VVBUX0dFTkVSQUwsCiAJCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NP Q0tFVF9SRUFEQUJMRSB8CiAJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQ VCwKIAkJCQkJCQkJCQkgICB3YWl0X2ZkLApAQCAtNTU1LDcgKzU1Niw2IEBAIFdhbFJlY2Vp dmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOwogCQkJ CWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJCQl7Ci0JCQkJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIAkJCQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKIAog CQkJCQlpZiAod2FscmN2LT5mb3JjZV9yZXBseSkKQEAgLTU3MCw2ICs1NzAsNyBAQCBXYWxS ZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkJCQkJCXBnX21lbW9yeV9iYXJyaWVyKCk7CiAJCQkJCQlYTG9nV2FsUmN2 U2VuZFJlcGx5KHRydWUsIGZhbHNlKTsKIAkJCQkJfQorCQkJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCQkJfQogCQkJCWlmIChyYyAmIFdMX1RJTUVPVVQpCiAJ CQkJewpAQCAtNzM1LDcgKzczNiw5IEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhM b2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJCX0K IAkJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCQkodm9pZCkgV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkodm9pZCkgV2FpdEludGVycnVw dChJTlRFUlJVUFRfQ0ZJX01BU0sgfAorCQkJCQkJCSBJTlRFUlJVUFRfU0hVVERPV05fQVVY IHwKKwkJCQkJCQkgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJIDAsCiAJCQkJCQkJIFdBSVRfRVZFTlRf V0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwppbmRleCA0Y2FmYTY5Yjg5Yy4uNWFjMjAzZWY0ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiB0aGUgd2Fsc2VuZGVy IHdpbGwgZXhpdCBxdWlja2x5IHdpdGhvdXQgc2VuZGluZyBhbnkgbW9yZSBYTE9HIHJlY29y ZHMuCiAgKgogICogSWYgdGhlIHNlcnZlciBpcyBzaHV0IGRvd24sIGNoZWNrcG9pbnRlciBz ZW5kcyB1cwotICogUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORyBhZnRlciBhbGwgcmVn dWxhciBiYWNrZW5kcyBoYXZlIGV4aXRlZC4gIElmCisgKiBJTlRFUlJVUFRfV0FMU05EX0lO SVRfU1RPUFBJTkcgYWZ0ZXIgYWxsIHJlZ3VsYXIgYmFja2VuZHMgaGF2ZSBleGl0ZWQuICBJ ZgogICogdGhlIGJhY2tlbmQgaXMgaWRsZSBvciBydW5zIGFuIFNRTCBxdWVyeSB0aGlzIGNh dXNlcyB0aGUgYmFja2VuZCB0bwogICogc2h1dGRvd24sIGlmIGxvZ2ljYWwgcmVwbGljYXRp b24gaXMgaW4gcHJvZ3Jlc3MgYWxsIGV4aXN0aW5nIFdBTCByZWNvcmRzCiAgKiBhcmUgcHJv Y2Vzc2VkIGZvbGxvd2VkIGJ5IGEgc2h1dGRvd24uICBPdGhlcndpc2UgdGhpcyBjYXVzZXMg dGhlIHdhbHNlbmRlcgpAQCAtMjAwLDkgKzIwMCw5IEBAIHN0YXRpYyB2b2xhdGlsZSBzaWdf YXRvbWljX3QgZ290X1NUT1BQSU5HID0gZmFsc2U7CiAKIC8qCiAgKiBUaGlzIGlzIHNldCB3 aGlsZSB3ZSBhcmUgc3RyZWFtaW5nLiBXaGVuIG5vdCBzZXQKLSAqIFBST0NTSUdfV0FMU05E X0lOSVRfU1RPUFBJTkcgc2lnbmFsIHdpbGwgYmUgaGFuZGxlZCBsaWtlIFNJR1RFUk0uIFdo ZW4gc2V0LAotICogdGhlIG1haW4gbG9vcCBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcg Z290X1NUT1BQSU5HIGFuZCB0ZXJtaW5hdGluZyB3aGVuCi0gKiBpdCdzIHNldCAoYWZ0ZXIg c3RyZWFtaW5nIGFueSByZW1haW5pbmcgV0FMKS4KKyAqIElOVEVSUlVQVF9XQUxTTkRfSU5J VF9TVE9QUElORyBpbnRlcnJ1cHQgd2lsbCBiZSBoYW5kbGVkIGxpa2UgU0lHVEVSTS4gV2hl bgorICogc2V0LCB0aGUgbWFpbiBsb29wIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyBn b3RfU1RPUFBJTkcgYW5kIHRlcm1pbmF0aW5nCisgKiB3aGVuIGl0J3Mgc2V0IChhZnRlciBz dHJlYW1pbmcgYW55IHJlbWFpbmluZyBXQUwpLgogICovCiBzdGF0aWMgdm9sYXRpbGUgc2ln X2F0b21pY190IHJlcGxpY2F0aW9uX2FjdGl2ZSA9IGZhbHNlOwogCkBAIC0yNjAsNyArMjYw LDcgQEAgc3RhdGljIHZvaWQgV2FsU25kS2VlcGFsaXZlKGJvb2wgcmVxdWVzdFJlcGx5LCBY TG9nUmVjUHRyIHdyaXRlUHRyKTsKIHN0YXRpYyB2b2lkIFdhbFNuZEtlZXBhbGl2ZUlmTmVj ZXNzYXJ5KHZvaWQpOwogc3RhdGljIHZvaWQgV2FsU25kQ2hlY2tUaW1lT3V0KHZvaWQpOwog c3RhdGljIGxvbmcgV2FsU25kQ29tcHV0ZVNsZWVwdGltZShUaW1lc3RhbXBUeiBub3cpOwot c3RhdGljIHZvaWQgV2FsU25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1l b3V0LCB1aW50MzIgd2FpdF9ldmVudCk7CitzdGF0aWMgdm9pZCBXYWxTbmRXYWl0KHVpbnQz MiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50LCB1aW50 MzIgaW50ZXJydXB0TWFzayk7CiBzdGF0aWMgdm9pZCBXYWxTbmRQcmVwYXJlV3JpdGUoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25J ZCB4aWQsIGJvb2wgbGFzdF93cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRXcml0ZURhdGEo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rp b25JZCB4aWQsIGJvb2wgbGFzdF93cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRVcGRhdGVQ cm9ncmVzcyhMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBU cmFuc2FjdGlvbklkIHhpZCwKQEAgLTE2MDksNyArMTYwOSwxMCBAQCBQcm9jZXNzUGVuZGlu Z1dyaXRlcyh2b2lkKQogCiAJCS8qIFNsZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9y IHdlIHRpbWUgb3V0ICovCiAJCVdhbFNuZFdhaXQoV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdM X1NPQ0tFVF9SRUFEQUJMRSwgc2xlZXB0aW1lLAotCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XUklURV9EQVRBKTsKKwkJCQkgICBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV1JJVEVf REFUQSwKKwkJCQkgICBJTlRFUlJVUFRfQ0ZJX01BU0sgfAorCQkJCSAgIElOVEVSUlVQVF9D T05GSUdfUkVMT0FEIHwKKwkJCQkgICBJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQ2xl YXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCiAJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKQEAgLTE2MTcsOSArMTYyMCw4IEBAIFByb2Nlc3NQZW5kaW5n V3JpdGVzKHZvaWQpCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogUHJvY2Vz cyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7 CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCVN5bmNSZXBJbml0Q29u ZmlnKCk7CiAJCX0KQEAgLTE2MjksNyArMTYzMSw3IEBAIFByb2Nlc3NQZW5kaW5nV3JpdGVz KHZvaWQpCiAJCQlXYWxTbmRTaHV0ZG93bigpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUgaW50 ZXJydXB0IHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KKwkvKiByZWFjdGl2 YXRlIGludGVycnVwdCBmbGFnIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8K IAlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKQEAgLTE4MjMsOSAr MTgyNSw4IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKIAkJLyogUHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFs cyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJ aWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQl7Ci0J CQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQ R0NfU0lHSFVQKTsKIAkJCVN5bmNSZXBJbml0Q29uZmlnKCk7CiAJCX0KQEAgLTE5MzUsNyAr MTkzNiwxMCBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCiAJCUFzc2Vy dCh3YWl0X2V2ZW50ICE9IDApOwogCi0JCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0 aW1lLCB3YWl0X2V2ZW50KTsKKwkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUs IHdhaXRfZXZlbnQsCisJCQkJICAgSU5URVJSVVBUX0NGSV9NQVNLIHwKKwkJCQkgICBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwpOwogCX0K IAogCS8qIHJlYWN0aXZhdGUgaW50ZXJydXB0IGZsYWcgc28gV2FsU25kTG9vcCBrbm93cyB0 byBjb250aW51ZSAqLwpAQCAtMjc2MCw5ICsyNzY0LDggQEAgV2FsU25kTG9vcChXYWxTbmRT ZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0YSkKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAogCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2Vu dGx5ICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBl bmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJ U3luY1JlcEluaXRDb25maWcoKTsKIAkJfQpAQCAtMjg1OCw3ICsyODYxLDExIEBAIFdhbFNu ZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEpCiAJCQkJd2FrZUV2ZW50 cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCiAJCQkvKiBTbGVlcCB1bnRpbCBzb21ldGhp bmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dCAqLwotCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRz LCBzbGVlcHRpbWUsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9NQUlOKTsKKwkJCVdhbFNuZFdh aXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfTUFJTiwK KwkJCQkJICAgSU5URVJSVVBUX0NGSV9NQVNLIHwKKwkJCQkJICAgSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQgfAorCQkJCQkgICBJTlRFUlJVUFRfR0VORVJBTAorCQkJCSk7CiAJCX0KIAl9 CiB9CkBAIC0yODk2LDYgKzI5MDMsNyBAQCBJbml0V2FsU2VuZGVyU2xvdCh2b2lkKQogCQkJ LyoKIAkJCSAqIEZvdW5kIGEgZnJlZSBzbG90LiBSZXNlcnZlIGl0IGZvciB1cy4KIAkJCSAq LworCQkJd2Fsc25kLT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIAkJCXdhbHNuZC0+cGlk ID0gTXlQcm9jUGlkOwogCQkJd2Fsc25kLT5zdGF0ZSA9IFdBTFNORFNUQVRFX1NUQVJUVVA7 CiAJCQl3YWxzbmQtPnNlbnRQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTI5NTIsNiAr Mjk2MCw3IEBAIFdhbFNuZEtpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlTcGluTG9ja0Fj cXVpcmUoJndhbHNuZC0+bXV0ZXgpOwogCS8qIE1hcmsgV2FsU25kIHN0cnVjdCBhcyBubyBs b25nZXIgYmVpbmcgaW4gdXNlLiAqLwogCXdhbHNuZC0+cGlkID0gMDsKKwl3YWxzbmQtPnBn cHJvY25vID0gMDsKIAlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwogfQogCkBA IC0zNTI2LDEwICszNTM1LDEwIEBAIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQpCiB9CiAK IC8qCi0gKiBIYW5kbGUgUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORyBzaWduYWwuCisg KiBQcm9jZXNzIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBpbnRlcnJ1cHQKICAq Lwogdm9pZAotSGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpCitQcm9jZXNzV2FsU25k SW5pdFN0b3BwaW5nKHZvaWQpCiB7CiAJQXNzZXJ0KGFtX3dhbHNlbmRlcik7CiAKQEAgLTM1 NDAsOSArMzU0OSwxMiBAQCBIYW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCkKIAkgKiBz dGFuZGJ5LCBhbmQgdGhlbiBleGl0IGdyYWNlZnVsbHkuCiAJICovCiAJaWYgKCFyZXBsaWNh dGlvbl9hY3RpdmUpCi0JCWtpbGwoTXlQcm9jUGlkLCBTSUdURVJNKTsKKwkJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0RJRSk7CiAJZWxzZQorCXsKIAkJZ290X1NUT1BQSU5HID0gdHJ1 ZTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCX0KIH0KIAogLyoK QEAgLTM1NjgsNyArMzU4MCw3IEBAIFdhbFNuZFNpZ25hbHModm9pZCkKIAkvKiBTSUdRVUlU IGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8K IAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxl ciAqLwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEs IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdf SUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKTsJLyog cmVxdWVzdCBhIGxhc3QgY3ljbGUgYW5kCiAJCQkJCQkJCQkJCQkgKiBzaHV0ZG93biAqLwog CkBAIC0zNjU2LDI0ICszNjY4LDI4IEBAIFdhbFNuZFdha2V1cChib29sIHBoeXNpY2FsLCBi b29sIGxvZ2ljYWwpCiAgKiBvbiBwb3N0bWFzdGVyIGRlYXRoLgogICovCiBzdGF0aWMgdm9p ZAotV2FsU25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50 MzIgd2FpdF9ldmVudCkKK1dhbFNuZFdhaXQodWludDMyIHNvY2tldF9ldmVudHMsIGxvbmcg dGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewog CVdhaXRFdmVudAlldmVudDsKIAorCS8qIGZvciBjb25kaXRpb24gdmFyaWFibGVzICovCisJ aW50ZXJydXB0TWFzayB8PSBJTlRFUlJVUFRfR0VORVJBTDsKKwogCU1vZGlmeVdhaXRFdmVu dChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIDAp OworCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQ b3MsIFdMX0lOVEVSUlVQVCwgaW50ZXJydXB0TWFzayk7CiAKIAkvKgogCSAqIFdlIHVzZSBh IGNvbmRpdGlvbiB2YXJpYWJsZSB0byBlZmZpY2llbnRseSB3YWtlIHVwIHdhbHNlbmRlcnMg aW4KIAkgKiBXYWxTbmRXYWtldXAoKS4KIAkgKgogCSAqIEV2ZXJ5IHdhbHNlbmRlciBwcmVw YXJlcyB0byBzbGVlcCBvbiBhIHNoYXJlZCBtZW1vcnkgQ1YuIE5vdGUgdGhhdCBpdAotCSAq IGp1c3QgcHJlcGFyZXMgdG8gc2xlZXAgb24gdGhlIENWIChpLmUuLCBhZGRzIGl0c2VsZiB0 byB0aGUgQ1YncwotCSAqIHdhaXRsaXN0KSwgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHdhaXQg b24gdGhlIENWIChJT1csIGl0IG5ldmVyIGNhbGxzCi0JICogQ29uZGl0aW9uVmFyaWFibGVT bGVlcCgpKS4gSXQgc3RpbGwgdXNlcyBXYWl0RXZlbnRTZXRXYWl0KCkgZm9yCi0JICogd2Fp dGluZywgYmVjYXVzZSB3ZSBhbHNvIG5lZWQgdG8gd2FpdCBmb3Igc29ja2V0IGV2ZW50cy4g VGhlIHByb2Nlc3NlcwotCSAqIChzdGFydHVwIHByb2Nlc3MsIHdhbHJlY2VpdmVyIGV0Yy4p IHdhbnRpbmcgdG8gd2FrZSB1cCB3YWxzZW5kZXJzIHVzZQotCSAqIENvbmRpdGlvblZhcmlh YmxlQnJvYWRjYXN0KCksIHdoaWNoIGluIHR1cm4gY2FsbHMgU2VuZEludGVycnVwdCgpLAot CSAqIGhlbHBpbmcgd2Fsc2VuZGVycyBjb21lIG91dCBvZiBXYWl0RXZlbnRTZXRXYWl0KCku CisJICoganVzdCBwcmVwYXJlcyB0byBzbGVlcCBvbiB0aGUgQ1Ygd2FpdGxpc3QpLCBidXQg ZG9lcyBub3QgYWN0dWFsbHkgd2FpdAorCSAqIG9uIHRoZSBDViAoSU9XLCBpdCBuZXZlciBj YWxscyBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzCisJICogV2Fp dEV2ZW50U2V0V2FpdCgpIGZvciB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0byB3 YWl0IGZvciBzb2NrZXQKKwkgKiBldmVudHMuIFRoZSBwcm9jZXNzZXMgKHN0YXJ0dXAgcHJv Y2Vzcywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0bworCSAqIHdha2UgdXAgd2Fsc2Vu ZGVycyB1c2UgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVybgor CSAqIGNhbGxzIFNlbmRJbnRlcnJ1cHQoKSwgaGVscGluZyB3YWxzZW5kZXJzIGNvbWUgb3V0 IG9mCisJICogV2FpdEV2ZW50U2V0V2FpdCgpLgogCSAqCiAJICogVGhpcyBhcHByb2FjaCBp cyBzaW1wbGUgYW5kIGVmZmljaWVudCBiZWNhdXNlLCBvbmUgZG9lc24ndCBoYXZlIHRvIGxv b3AKIAkgKiB0aHJvdWdoIGFsbCB0aGUgd2Fsc2VuZGVycyBzbG90cywgd2l0aCBhIHNwaW5s b2NrIGFjcXVpc2l0aW9uIGFuZApAQCAtMzcyMSwxNiArMzczNywxNiBAQCBXYWxTbmRJbml0 U3RvcHBpbmcodm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKysp CiAJewogCQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxTbmRDdGwtPndhbHNuZHNbaV07Ci0J CXBpZF90CQlwaWQ7CisJCVByb2NOdW1iZXIJcHJvY25vOwogCiAJCVNwaW5Mb2NrQWNxdWly ZSgmd2Fsc25kLT5tdXRleCk7Ci0JCXBpZCA9IHdhbHNuZC0+cGlkOworCQlwcm9jbm8gPSB3 YWxzbmQtPnBncHJvY25vOwogCQlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwog Ci0JCWlmIChwaWQgPT0gMCkKKwkJaWYgKHByb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVS KQogCQkJY29udGludWU7CiAKLQkJU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1dBTFNO RF9JTklUX1NUT1BQSU5HLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJU2VuZEludGVycnVw dChJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcsIHByb2Nubyk7CiAJfQogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IGM1YmY0YTcwOTI1Li4xYmYw ZWM1MDlhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdy LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTU1LDYg KzU1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNs dWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKQEAg LTI5NzYsNyArMjk3Nyw3IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCQlVbmxvY2tCdWZI ZHIoYnVmSGRyLCBidWZfc3RhdGUpOwogCiAJCS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50 cyBpbiBjYXNlIE5CdWZmZXJzIGlzIGxhcmdlLiAqLwotCQlpZiAoUHJvY1NpZ25hbEJhcnJp ZXJQZW5kaW5nKQorCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQkFSUklFUikp CiAJCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIAl9CiAKQEAgLTMwNTcsNyArMzA1 OCw3IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCQlzLT5udW1fdG9fc2NhbisrOwogCiAJ CS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50cy4gKi8KLQkJaWYgKFByb2NTaWduYWxCYXJy aWVyUGVuZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0JBUlJJRVIp KQogCQkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7CiAJfQogCkBAIC01MjEzLDcgKzUy MTQsNyBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJICogZGVh ZGxvY2tfdGltZW91dCBmb3IgaXQuCiAJCQkgKi8KIAkJCWlmIChsb2dnZWRfcmVjb3Zlcnlf Y29uZmxpY3QpCi0JCQkJTG9nUmVjb3ZlcnlDb25mbGljdChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0JVRkZFUlBJTiwKKwkJCQlMb2dSZWNvdmVyeUNvbmZsaWN0KElOVEVSUlVQVF9S RUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJCQkJCQkJCQl3YWl0U3RhcnQsIEdldEN1 cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQkJCU5VTEwsIGZhbHNlKTsKIApAQCAtNTI2Myw3 ICs1MjY0LDcgQEAgTG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJCQlp ZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMod2FpdFN0YXJ0LCBub3csCiAJCQkJCQkJ CQkJCSAgIERlYWRsb2NrVGltZW91dCkpCiAJCQkJewotCQkJCQlMb2dSZWNvdmVyeUNvbmZs aWN0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAorCQkJCQlMb2dSZWNv dmVyeUNvbmZsaWN0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJ CQkJCQkJCQkJd2FpdFN0YXJ0LCBub3csIE5VTEwsIHRydWUpOwogCQkJCQlsb2dnZWRfcmVj b3ZlcnlfY29uZmxpY3QgPSB0cnVlOwogCQkJCX0KQEAgLTUyODUsMTYgKzUyODYsMTcgQEAg TG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJfQogCQllbHNlCiAJCXsK LQkJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCVdhaXRJbnRlcnJ1cHQoSU5URVJSVVBU X0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgIFdMX0lOVEVSUlVQVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX1BJ Tik7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCQl9CiAKIAkJLyoKIAkJICogUmVtb3ZlIGZsYWcgbWFya2luZyB1cyBhcyB3YWl0ZXIu IE5vcm1hbGx5IHRoaXMgd2lsbCBub3QgYmUgc2V0Ci0JCSAqIGFueW1vcmUsIGJ1dCBQcm9j V2FpdEZvclNpZ25hbCgpIGNhbiByZXR1cm4gZm9yIG90aGVyIHNpZ25hbHMgYXMKLQkJICog d2VsbC4gIFdlIHRha2UgY2FyZSB0byBvbmx5IHJlc2V0IHRoZSBmbGFnIGlmIHdlJ3JlIHRo ZSB3YWl0ZXIsIGFzCisJCSAqIGFueW1vcmUsIGJ1dCBXYWl0SW50ZXJydXB0IGNhbiByZXR1 cm4gZm9yIG90aGVyIHJlYXNvbnMgYXMgd2VsbC4KKwkJICogV2UgdGFrZSBjYXJlIHRvIG9u bHkgcmVzZXQgdGhlIGZsYWcgaWYgd2UncmUgdGhlIHdhaXRlciwgYXMKIAkJICogdGhlb3Jl dGljYWxseSBhbm90aGVyIGJhY2tlbmQgY291bGQgaGF2ZSBzdGFydGVkIHdhaXRpbmcuIFRo YXQncwogCQkgKiBpbXBvc3NpYmxlIHdpdGggdGhlIGN1cnJlbnQgdXNhZ2VzIGR1ZSB0byB0 YWJsZSBsZXZlbCBsb2NraW5nLCBidXQKIAkJICogYmV0dGVyIGJlIHNhZmUuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCmluZGV4IDZlNThmNjRiMDk2Li5hYzIyNTU1Y2M3 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKQEAgLTIxLDYgKzIxLDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCisjaW5jbHVkZSAi dXRpbHMvcmVzb3duZXIuaCIKIAogLyogQSBjb21tb24gV2FpdEV2ZW50U2V0IHVzZWQgdG8g aW1wbGVtZW50IFdhaXRJbnRlcnJ1cHQoKSAqLwogc3RhdGljIFdhaXRFdmVudFNldCAqSW50 ZXJydXB0V2FpdFNldDsKQEAgLTg5LDE3ICs5MCwxNyBAQCBTd2l0Y2hUb1NoYXJlZEludGVy cnVwdHModm9pZCkKICAqIFNldCBhbiBpbnRlcnJ1cHQgZmxhZyBpbiB0aGlzIGJhY2tlbmQu CiAgKi8KIHZvaWQKLVJhaXNlSW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVhc29uKQorUmFp c2VJbnRlcnJ1cHQodWludDMyIGludGVycnVwdE1hc2spCiB7CiAJdWludDMyCQlvbGRfcGVu ZGluZzsKIAotCW9sZF9wZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRp bmdJbnRlcnJ1cHRzLCAxIDw8IHJlYXNvbik7CisJb2xkX3BlbmRpbmcgPSBwZ19hdG9taWNf ZmV0Y2hfb3JfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOwogCiAJ LyoKIAkgKiBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3YWl0aW5nIGZv ciBhbiBpbnRlcnJ1cHQgdG8gYXJyaXZlLAogCSAqIGFuZCB0aGUgaW50ZXJydXB0IHdhc24n dCBhbHJlYWR5IHBlbmRpbmcsIHdha2UgaXQgdXAuCiAJICovCi0JaWYgKChvbGRfcGVuZGlu ZyAmICgxIDw8IHJlYXNvbiB8IDEgPDwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpID09IDEg PDwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykKKwlpZiAoKG9sZF9wZW5kaW5nICYgKGludGVy cnVwdE1hc2sgfCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSkgPT0gU0xFRVBJTkdfT05fSU5U RVJSVVBUUykKIAkJV2FrZXVwTXlQcm9jKCk7CiB9CiAKQEAgLTExMCw3ICsxMTEsNyBAQCBS YWlzZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKICAqIHRydXN0IHRoZSBjb250 ZW50cyBvZiBzaGFyZWQgbWVtb3J5LgogICovCiB2b2lkCi1TZW5kSW50ZXJydXB0KEludGVy cnVwdFR5cGUgcmVhc29uLCBQcm9jTnVtYmVyIHBncHJvY25vKQorU2VuZEludGVycnVwdCh1 aW50MzIgaW50ZXJydXB0TWFzaywgUHJvY051bWJlciBwZ3Byb2NubykKIHsKIAlQR1BST0MJ ICAgKnByb2M7CiAJdWludDMyCQlvbGRfcGVuZGluZzsKQEAgLTEyMCwxMyArMTIxLDE1IEBA IFNlbmRJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24sIFByb2NOdW1iZXIgcGdwcm9j bm8pCiAJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KTsKIAog CXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dOwotCW9sZF9wZW5kaW5n ID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMigmcHJvYy0+cGVuZGluZ0ludGVycnVwdHMsIDEg PDwgcmVhc29uKTsKKwlvbGRfcGVuZGluZyA9IHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnBy b2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCBpbnRlcnJ1cHRNYXNrKTsKKworCS8qIG5lZWQgYSBt ZW1vcnkgYmFycmllciBoZXJlPyBPciBpcyBXYWtldXBPdGhlclByb2MoKSBzdWZmaWNpZW50 PyAqLwogCiAJLyoKIAkgKiBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3 YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgdG8gYXJyaXZlLAogCSAqIGFuZCB0aGUgaW50ZXJy dXB0IHdhc24ndCBhbHJlYWR5IHBlbmRpbmcsIHdha2UgaXQgdXAuCiAJICovCi0JaWYgKChv bGRfcGVuZGluZyAmICgxIDw8IHJlYXNvbiB8IDEgPDwgU0xFRVBJTkdfT05fSU5URVJSVVBU UykpID09IDEgPDwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykKKwlpZiAoKG9sZF9wZW5kaW5n ICYgKGludGVycnVwdE1hc2sgfCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSkgPT0gU0xFRVBJ TkdfT05fSU5URVJSVVBUUykKIAkJV2FrZXVwT3RoZXJQcm9jKHByb2MpOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwYy5jCmluZGV4IGU0ZDViOTQ0ZTEyLi5lOGIyOTNmNGZmZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaXBjLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFz dGVyL2F1dG92YWN1dW0uaCIKICNlbmRpZgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKIApAQCAtMTc1LDkgKzE3Niw4IEBAIHBy b2NfZXhpdF9wcmVwYXJlKGludCBjb2RlKQogCSAqIGNsb3NlIHVwIHNob3AgYWxyZWFkeS4g IE5vdGUgdGhhdCB0aGUgc2lnbmFsIGhhbmRsZXJzIHdpbGwgbm90IHNldAogCSAqIHRoZXNl IGZsYWdzIGFnYWluLCBub3cgdGhhdCBwcm9jX2V4aXRfaW5wcm9ncmVzcyBpcyBzZXQuCiAJ ICovCi0JSW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCVByb2NEaWVQZW5kaW5nID0gZmFs c2U7Ci0JUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CisJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0RJRSk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7 CiAJSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMTsKIAlDcml0U2VjdGlvbkNvdW50ID0gMDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCAyZTU0YzExZjg4MC4u YTg3Nzk4NGI4YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nh cnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC01 OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19sZmluZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTM0ODgsMTMgKzM0 ODksMTMgQEAgR2V0Q29uZmxpY3RpbmdWaXJ0dWFsWElEcyhUcmFuc2FjdGlvbklkIGxpbWl0 WG1pbiwgT2lkIGRiT2lkKQogICogUmV0dXJucyBwaWQgb2YgdGhlIHByb2Nlc3Mgc2lnbmFs ZWQsIG9yIDAgaWYgbm90IGZvdW5kLgogICovCiBwaWRfdAotQ2FuY2VsVmlydHVhbFRyYW5z YWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24gc2ln bW9kZSkKK0NhbmNlbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkLCBJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKLQlyZXR1cm4gU2lnbmFsVmlydHVhbFRy YW5zYWN0aW9uKHZ4aWQsIHNpZ21vZGUsIHRydWUpOworCXJldHVybiBTaWduYWxWaXJ0dWFs VHJhbnNhY3Rpb24odnhpZCwgcmVhc29uLCB0cnVlKTsKIH0KIAogcGlkX3QKLVNpZ25hbFZp cnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFs UmVhc29uIHNpZ21vZGUsCitTaWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmlydHVhbFRyYW5z YWN0aW9uSWQgdnhpZCwgSW50ZXJydXB0VHlwZSByZWFzb24sCiAJCQkJCQkgYm9vbCBjb25m bGljdFBlbmRpbmcpCiB7CiAJUHJvY0FycmF5U3RydWN0ICphcnJheVAgPSBwcm9jQXJyYXk7 CkBAIC0zNTIyLDcgKzM1MjMsNyBAQCBTaWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmlydHVh bFRyYW5zYWN0aW9uSWQgdnhpZCwgUHJvY1NpZ25hbFJlYXNvbiBzaWdtb2RlLAogCQkJCSAq IEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQg d2UKIAkJCQkgKiB3YW50ZWQgc28gaWdub3JlIGFueSBlcnJvcnMuCiAJCQkJICovCi0JCQkJ KHZvaWQpIFNlbmRQcm9jU2lnbmFsKHBpZCwgc2lnbW9kZSwgdnhpZC5wcm9jTnVtYmVyKTsK KwkJCQlTZW5kSW50ZXJydXB0KHJlYXNvbiwgdnhpZC5wcm9jTnVtYmVyKTsKIAkJCX0KIAkJ CWJyZWFrOwogCQl9CkBAIC0zNjU2LDcgKzM2NTcsNyBAQCBDb3VudERCQ29ubmVjdGlvbnMo T2lkIGRhdGFiYXNlaWQpCiAgKiBDYW5jZWxEQkJhY2tlbmRzIC0tLSBjYW5jZWwgYmFja2Vu ZHMgdGhhdCBhcmUgdXNpbmcgc3BlY2lmaWVkIGRhdGFiYXNlCiAgKi8KIHZvaWQKLUNhbmNl bERCQmFja2VuZHMoT2lkIGRhdGFiYXNlaWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSwg Ym9vbCBjb25mbGljdFBlbmRpbmcpCitDYW5jZWxEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZWlk LCBJbnRlcnJ1cHRUeXBlIHJlYXNvbiwgYm9vbCBjb25mbGljdFBlbmRpbmcpCiB7CiAJUHJv Y0FycmF5U3RydWN0ICphcnJheVAgPSBwcm9jQXJyYXk7CiAJaW50CQkJaW5kZXg7CkBAIC0z NjcxLDIwICszNjcyLDE3IEBAIENhbmNlbERCQmFja2VuZHMoT2lkIGRhdGFiYXNlaWQsIFBy b2NTaWduYWxSZWFzb24gc2lnbW9kZSwgYm9vbCBjb25mbGljdFBlbmRpbmcpCiAKIAkJaWYg KGRhdGFiYXNlaWQgPT0gSW52YWxpZE9pZCB8fCBwcm9jLT5kYXRhYmFzZUlkID09IGRhdGFi YXNlaWQpCiAJCXsKLQkJCVZpcnR1YWxUcmFuc2FjdGlvbklkIHByb2N2eGlkOwogCQkJcGlk X3QJCXBpZDsKIAotCQkJR0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY3Z4aWQsICpwcm9jKTsK LQogCQkJcHJvYy0+cmVjb3ZlcnlDb25mbGljdFBlbmRpbmcgPSBjb25mbGljdFBlbmRpbmc7 CiAJCQlwaWQgPSBwcm9jLT5waWQ7CiAJCQlpZiAocGlkICE9IDApCiAJCQl7CiAJCQkJLyoK LQkJCQkgKiBLaWxsIHRoZSBwaWQgaWYgaXQncyBzdGlsbCBoZXJlLiBJZiBub3QsIHRoYXQn cyB3aGF0IHdlCi0JCQkJICogd2FudGVkIHNvIGlnbm9yZSBhbnkgZXJyb3JzLgorCQkJCSAq IENhbmNlbCB0aGUgYmFja2VuZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdz IHdoYXQKKwkJCQkgKiB3ZSB3YW50ZWQgYW55d2F5LgogCQkJCSAqLwotCQkJCSh2b2lkKSBT ZW5kUHJvY1NpZ25hbChwaWQsIHNpZ21vZGUsIHByb2N2eGlkLnByb2NOdW1iZXIpOworCQkJ CVNlbmRJbnRlcnJ1cHQocmVhc29uLCBwZ3Byb2Nubyk7CiAJCQl9CiAJCX0KIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggOTE1NTdhNzkyN2UuLjgyZWE5 ZTVjYjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yNyw2 ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z aG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zbWdyLmgiCkBAIC0zNCwzOCArMzUsMzAgQEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogCiAvKgotICogVGhlIFNJR1VTUjEgc2lnbmFsIGlzIG11bHRpcGxleGVkIHRvIHN1 cHBvcnQgc2lnbmFsaW5nIG11bHRpcGxlIGV2ZW50Ci0gKiB0eXBlcy4gVGhlIHNwZWNpZmlj IHJlYXNvbiBpcyBjb21tdW5pY2F0ZWQgdmlhIGZsYWdzIGluIHNoYXJlZCBtZW1vcnkuCi0g KiBXZSBrZWVwIGEgYm9vbGVhbiBmbGFnIGZvciBlYWNoIHBvc3NpYmxlICJyZWFzb24iLCBz byB0aGF0IGRpZmZlcmVudAotICogcmVhc29ucyBjYW4gYmUgc2lnbmFsZWQgdG8gYSBwcm9j ZXNzIGNvbmN1cnJlbnRseS4gIChIb3dldmVyLCBpZiB0aGUgc2FtZQotICogcmVhc29uIGlz IHNpZ25hbGVkIG1vcmUgdGhhbiBvbmNlIG5lYXJseSBzaW11bHRhbmVvdXNseSwgdGhlIHBy b2Nlc3MgbWF5Ci0gKiBvYnNlcnZlIGl0IG9ubHkgb25jZS4pCisgKiBTdGF0ZSBmb3IgdGhl IFByb2NTaWduYWxCYXJyaWVyIG1lY2hhbmlzbSBhbmQgcXVlcnkgY2FuY2VsbGF0aW9uLgog ICoKLSAqIEVhY2ggcHJvY2VzcyB0aGF0IHdhbnRzIHRvIHJlY2VpdmUgc2lnbmFscyByZWdp c3RlcnMgaXRzIHByb2Nlc3MgSUQKLSAqIGluIHRoZSBQcm9jU2lnbmFsU2xvdHMgYXJyYXku IFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IFByb2NOdW1iZXIgdG8gbWFrZQotICogc2xvdCBh bGxvY2F0aW9uIHNpbXBsZSwgYW5kIHRvIGF2b2lkIGhhdmluZyB0byBzZWFyY2ggdGhlIGFy cmF5IHdoZW4geW91Ci0gKiBrbm93IHRoZSBQcm9jTnVtYmVyIG9mIHRoZSBwcm9jZXNzIHlv dSdyZSBzaWduYWxpbmcuICAoV2UgZG8gc3VwcG9ydAotICogc2lnbmFsaW5nIHdpdGhvdXQg UHJvY051bWJlciwgYnV0IGl0J3MgYSBiaXQgbGVzcyBlZmZpY2llbnQuKQorICogRWFjaCBw cm9jZXNzIHRoYXQgd2FudHMgdG8gcGFydGljaXBhdGUgaW4gYmFycmllcnMgb3IgcXVlcnkg Y2FuY2VsbGF0aW9uCisgKiByZWdpc3RlcnMgaXRzIHByb2Nlc3MgSUQgaW4gdGhlIFByb2NT aWduYWxTbG90cyBhcnJheS4gVGhlIGFycmF5IGlzIGluZGV4ZWQKKyAqIGJ5IFByb2NOdW1i ZXIgdG8gbWFrZSBzbG90IGFsbG9jYXRpb24gc2ltcGxlLgogICoKICAqIFRoZSBmaWVsZHMg aW4gZWFjaCBzbG90IGFyZSBwcm90ZWN0ZWQgYnkgYSBzcGlubG9jaywgcHNzX211dGV4LiBw c3NfcGlkIGNhbgogICogYWxzbyBiZSByZWFkIHdpdGhvdXQgaG9sZGluZyB0aGUgc3Bpbmxv Y2ssIGFzIGEgcXVpY2sgcHJlbGltaW5hcnkgY2hlY2sKICAqIHdoZW4gc2VhcmNoaW5nIGZv ciBhIHBhcnRpY3VsYXIgUElEIGluIHRoZSBhcnJheS4KICAqCi0gKiBwc3Nfc2lnbmFsRmxh Z3MgYXJlIGludGVuZGVkIHRvIGJlIHNldCBpbiBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVk IHRvCi0gKiBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSB0YXJnZXQgcHJvY2Vz cyBoYXMgaGFuZGxlZCB0aGUgc2lnbmFsLAotICogYnV0IHNvbWV0aW1lcyB3ZSBuZWVkIGNv bmZpcm1hdGlvbiwgYXMgd2hlbiBtYWtpbmcgYSBnbG9iYWwgc3RhdGUgY2hhbmdlCi0gKiB0 aGF0IGNhbm5vdCBiZSBjb25zaWRlcmVkIGNvbXBsZXRlIHVudGlsIGFsbCBiYWNrZW5kcyBo YXZlIHRha2VuIG5vdGljZQotICogb2YgaXQuIEZvciBzdWNoIHVzZSBjYXNlcywgd2Ugc2V0 IGEgYml0IGluIHBzc19iYXJyaWVyQ2hlY2tNYXNrIGFuZCB0aGVuCisgKiBQbGFpbiBpbnRl cnJ1cHRzIGFyZSBpbnRlbmRlZCB0byBiZSBzZXQgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3Qg bmVlZCB0bworICoga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGFyZ2V0IHBy b2Nlc3MgaGFzIGhhbmRsZWQgdGhlIHNpZ25hbCwgYnV0CisgKiBzb21ldGltZXMgd2UgbmVl ZCBjb25maXJtYXRpb24sIGFzIHdoZW4gbWFraW5nIGEgZ2xvYmFsIHN0YXRlIGNoYW5nZSB0 aGF0CisgKiBjYW5ub3QgYmUgY29uc2lkZXJlZCBjb21wbGV0ZSB1bnRpbCBhbGwgYmFja2Vu ZHMgaGF2ZSB0YWtlbiBub3RpY2Ugb2YKKyAqIGl0LiBGb3Igc3VjaCB1c2UgY2FzZXMsIHdl IHNldCBhIGJpdCBpbiBwc3NfYmFycmllckNoZWNrTWFzayBhbmQgdGhlbgogICogaW5jcmVt ZW50IHRoZSBjdXJyZW50ICJiYXJyaWVyIGdlbmVyYXRpb24iOyB3aGVuIHRoZSBuZXcgYmFy cmllciBnZW5lcmF0aW9uCi0gKiAob3IgZ3JlYXRlcikgYXBwZWFycyBpbiB0aGUgcHNzX2Jh cnJpZXJHZW5lcmF0aW9uIGZsYWcgb2YgZXZlcnkgcHJvY2VzcywKLSAqIHdlIGtub3cgdGhh dCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZCBldmVyeXdoZXJlLgorICogKG9yIGdy ZWF0ZXIpIGFwcGVhcnMgaW4gdGhlIHBzc19iYXJyaWVyR2VuZXJhdGlvbiBmbGFnIG9mIGV2 ZXJ5IHByb2Nlc3MsIHdlCisgKiBrbm93IHRoYXQgdGhlIG1lc3NhZ2UgaGFzIGJlZW4gcmVj ZWl2ZWQgZXZlcnl3aGVyZS4KICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlwZ19hdG9taWNf dWludDMyIHBzc19waWQ7CiAJYm9vbAkJcHNzX2NhbmNlbF9rZXlfdmFsaWQ7CiAJaW50MzIJ CXBzc19jYW5jZWxfa2V5OwotCXZvbGF0aWxlIHNpZ19hdG9taWNfdCBwc3Nfc2lnbmFsRmxh Z3NbTlVNX1BST0NTSUdOQUxTXTsKIAlzbG9ja190CQlwc3NfbXV0ZXg7CQkvKiBwcm90ZWN0 cyB0aGUgYWJvdmUgZmllbGRzICovCiAKIAkvKiBCYXJyaWVyLXJlbGF0ZWQgZmllbGRzIChu b3QgcHJvdGVjdGVkIGJ5IHBzc19tdXRleCkgKi8KQEAgLTEwNCw3ICs5Nyw2IEBAIHN0cnVj dCBQcm9jU2lnbmFsSGVhZGVyCiBOT05fRVhFQ19TVEFUSUMgUHJvY1NpZ25hbEhlYWRlciAq UHJvY1NpZ25hbCA9IE5VTEw7CiBzdGF0aWMgUHJvY1NpZ25hbFNsb3QgKk15UHJvY1NpZ25h bFNsb3QgPSBOVUxMOwogCi1zdGF0aWMgYm9vbCBDaGVja1Byb2NTaWduYWwoUHJvY1NpZ25h bFJlYXNvbiByZWFzb24pOwogc3RhdGljIHZvaWQgQ2xlYW51cFByb2NTaWduYWxTdGF0ZShp bnQgc3RhdHVzLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgUmVzZXRQcm9jU2lnbmFsQmFy cmllckJpdHModWludDMyIGZsYWdzKTsKIApAQCAtMTUwLDcgKzE0Miw2IEBAIFByb2NTaWdu YWxTaG1lbUluaXQodm9pZCkKIAkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX3Bp ZCwgMCk7CiAJCQlzbG90LT5wc3NfY2FuY2VsX2tleV92YWxpZCA9IGZhbHNlOwogCQkJc2xv dC0+cHNzX2NhbmNlbF9rZXkgPSAwOwotCQkJTWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFn cywgMCwgc2l6ZW9mKHNsb3QtPnBzc19zaWduYWxGbGFncykpOwogCQkJcGdfYXRvbWljX2lu aXRfdTY0KCZzbG90LT5wc3NfYmFycmllckdlbmVyYXRpb24sIFBHX1VJTlQ2NF9NQVgpOwog CQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFycmllckNoZWNrTWFzaywgMCk7 CiAJCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3QtPnBzc19iYXJyaWVyQ1YpOwpAQCAt MTgwLDkgKzE3MSw2IEBAIFByb2NTaWduYWxJbml0KGJvb2wgY2FuY2VsX2tleV92YWxpZCwg aW50MzIgY2FuY2VsX2tleSkKIAkvKiBWYWx1ZSB1c2VkIGZvciBzYW5pdHkgY2hlY2sgYmVs b3cgKi8KIAlvbGRfcHNzX3BpZCA9IHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3Bp ZCk7CiAKLQkvKiBDbGVhciBvdXQgYW55IGxlZnRvdmVyIHNpZ25hbCByZWFzb25zICovCi0J TWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgTlVNX1BST0NTSUdOQUxTICogc2l6 ZW9mKHNpZ19hdG9taWNfdCkpOwotCiAJLyoKIAkgKiBJbml0aWFsaXplIGJhcnJpZXIgc3Rh dGUuIFNpbmNlIHdlJ3JlIGEgYnJhbmQtbmV3IHByb2Nlc3MsIHRoZXJlCiAJICogc2hvdWxk bid0IGJlIGFueSBsZWZ0b3ZlciBiYWNrZW5kLXByaXZhdGUgc3RhdGUgdGhhdCBuZWVkcyB0 byBiZQpAQCAtMjMwLDkgKzIxOCwxMCBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBz dGF0dXMsIERhdHVtIGFyZykKIAlQcm9jU2lnbmFsU2xvdCAqc2xvdCA9IE15UHJvY1NpZ25h bFNsb3Q7CiAKIAkvKgotCSAqIENsZWFyIE15UHJvY1NpZ25hbFNsb3QsIHNvIHRoYXQgYSBT SUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9pbnQKLQkgKiB3b24ndCB0cnkgdG8gYWNj ZXNzIGl0IGFmdGVyIGl0J3Mgbm8gbG9uZ2VyIG91cnMgKGFuZCBwZXJoYXBzIGV2ZW4KLQkg KiBhZnRlciB3ZSd2ZSB1bm1hcHBlZCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50KS4KKwkg KiBDbGVhciBNeVByb2NTaWduYWxTbG90LCBzbyB0aGF0IGlmIElOVEVSUlVQVF9CQVJSSUVS IGlzIHJlY2VpdmVkIGFmdGVyCisJICogdGhpcyBwb2ludCwgUHJvY2Vzc1Byb2NTaWduYWxC YXJyaWVyKCkgd29uJ3QgdHJ5IHRvIGFjY2VzcyBpdCBhZnRlcgorCSAqIGl0J3Mgbm8gbG9u Z2VyIG91cnMgKGFuZCBwZXJoYXBzIGV2ZW4gYWZ0ZXIgd2UndmUgdW5tYXBwZWQgdGhlIHNo YXJlZAorCSAqIG1lbW9yeSBzZWdtZW50KS4KIAkgKi8KIAlBc3NlcnQoTXlQcm9jU2lnbmFs U2xvdCAhPSBOVUxMKTsKIAlNeVByb2NTaWduYWxTbG90ID0gTlVMTDsKQEAgLTI2OCw3MyAr MjU3LDYgQEAgQ2xlYW51cFByb2NTaWduYWxTdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcp CiAJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJnNsb3QtPnBzc19iYXJyaWVyQ1YpOwog fQogCi0vKgotICogU2VuZFByb2NTaWduYWwKLSAqCQlTZW5kIGEgc2lnbmFsIHRvIGEgUG9z dGdyZXMgcHJvY2VzcwotICoKLSAqIFByb3ZpZGluZyBwcm9jTnVtYmVyIGlzIG9wdGlvbmFs LCBidXQgaXQgd2lsbCBzcGVlZCB1cCB0aGUgb3BlcmF0aW9uLgotICoKLSAqIE9uIHN1Y2Nl c3MgKGEgc2lnbmFsIHdhcyBzZW50KSwgemVybyBpcyByZXR1cm5lZC4KLSAqIE9uIGVycm9y LCAtMSBpcyByZXR1cm5lZCwgYW5kIGVycm5vIGlzIHNldCAodHlwaWNhbGx5IHRvIEVTUkNI IG9yIEVQRVJNKS4KLSAqCi0gKiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCBQcm9jU2VuZFNp Z25hbAotICovCi1pbnQKLVNlbmRQcm9jU2lnbmFsKHBpZF90IHBpZCwgUHJvY1NpZ25hbFJl YXNvbiByZWFzb24sIFByb2NOdW1iZXIgcHJvY051bWJlcikKLXsKLQl2b2xhdGlsZSBQcm9j U2lnbmFsU2xvdCAqc2xvdDsKLQotCWlmIChwcm9jTnVtYmVyICE9IElOVkFMSURfUFJPQ19O VU1CRVIpCi0JewotCQlBc3NlcnQocHJvY051bWJlciA8IE51bVByb2NTaWduYWxTbG90cyk7 Ci0JCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbcHJvY051bWJlcl07Ci0KLQkJU3Bp bkxvY2tBY3F1aXJlKCZzbG90LT5wc3NfbXV0ZXgpOwotCQlpZiAocGdfYXRvbWljX3JlYWRf dTMyKCZzbG90LT5wc3NfcGlkKSA9PSBwaWQpCi0JCXsKLQkJCS8qIEF0b21pY2FsbHkgc2V0 IHRoZSBwcm9wZXIgZmxhZyAqLwotCQkJc2xvdC0+cHNzX3NpZ25hbEZsYWdzW3JlYXNvbl0g PSB0cnVlOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJLyog U2VuZCBzaWduYWwgKi8KLQkJCXJldHVybiBraWxsKHBpZCwgU0lHVVNSMSk7Ci0JCX0KLQkJ U3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwotCX0KLQllbHNlCi0JewotCQkv KgotCQkgKiBwcm9jTnVtYmVyIG5vdCBwcm92aWRlZCwgc28gc2VhcmNoIHRoZSBhcnJheSB1 c2luZyBwaWQuICBXZSBzZWFyY2gKLQkJICogdGhlIGFycmF5IGJhY2sgdG8gZnJvbnQgc28g YXMgdG8gcmVkdWNlIHNlYXJjaCBvdmVyaGVhZC4gIFBhc3NpbmcKLQkJICogSU5WQUxJRF9Q Uk9DX05VTUJFUiBtZWFucyB0aGF0IHRoZSB0YXJnZXQgaXMgbW9zdCBsaWtlbHkgYW4KLQkJ ICogYXV4aWxpYXJ5IHByb2Nlc3MsIHdoaWNoIHdpbGwgaGF2ZSBhIHNsb3QgbmVhciB0aGUg ZW5kIG9mIHRoZQotCQkgKiBhcnJheS4KLQkJICovCi0JCWludAkJCWk7Ci0KLQkJZm9yIChp ID0gTnVtUHJvY1NpZ25hbFNsb3RzIC0gMTsgaSA+PSAwOyBpLS0pCi0JCXsKLQkJCXNsb3Qg PSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0KLQkJCWlmIChwZ19hdG9taWNfcmVhZF91 MzIoJnNsb3QtPnBzc19waWQpID09IHBpZCkKLQkJCXsKLQkJCQlTcGluTG9ja0FjcXVpcmUo JnNsb3QtPnBzc19tdXRleCk7Ci0JCQkJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+ cHNzX3BpZCkgPT0gcGlkKQotCQkJCXsKLQkJCQkJLyogQXRvbWljYWxseSBzZXQgdGhlIHBy b3BlciBmbGFnICovCi0JCQkJCXNsb3QtPnBzc19zaWduYWxGbGFnc1tyZWFzb25dID0gdHJ1 ZTsKLQkJCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJCQkvKiBT ZW5kIHNpZ25hbCAqLwotCQkJCQlyZXR1cm4ga2lsbChwaWQsIFNJR1VTUjEpOwotCQkJCX0K LQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQl9Ci0JCX0KLQl9 Ci0KLQllcnJubyA9IEVTUkNIOwotCXJldHVybiAtMTsKLX0KLQogLyoKICAqIEVtaXRQcm9j U2lnbmFsQmFycmllcgogICoJCVNlbmQgYSBzaWduYWwgdG8gZXZlcnkgUG9zdGdyZXMgcHJv Y2VzcwpAQCAtMzc5LDggKzMwMSw4IEBAIEVtaXRQcm9jU2lnbmFsQmFycmllcihQcm9jU2ln bmFsQmFycmllclR5cGUgdHlwZSkKIAkJcGdfYXRvbWljX2FkZF9mZXRjaF91NjQoJlByb2NT aWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwgMSk7CiAKIAkvKgotCSAqIFNpZ25hbCBh bGwgdGhlIHByb2Nlc3Nlcywgc28gdGhhdCB0aGV5IHVwZGF0ZSB0aGVpciBhZHZlcnRpc2Vk IGJhcnJpZXIKLQkgKiBnZW5lcmF0aW9uLgorCSAqIFNlbmQgYW4gaW50ZXJydXB0IHRvIGFs bCB0aGUgcHJvY2Vzc2VzLCBzbyB0aGF0IHRoZXkgdXBkYXRlIHRoZWlyCisJICogYWR2ZXJ0 aXNlZCBiYXJyaWVyIGdlbmVyYXRpb24uCiAJICoKIAkgKiBDb25jdXJyZW5jeSBpcyBub3Qg YSBwcm9ibGVtIGhlcmUuIEJhY2tlbmRzIHRoYXQgaGF2ZSBleGl0ZWQgZG9uJ3QKIAkgKiBt YXR0ZXIsIGFuZCBuZXcgYmFja2VuZHMgdGhhdCBoYXZlIGpvaW5lZCBzaW5jZSB3ZSBlbnRl cmVkIHRoaXMKQEAgLTM5MSwyNiArMzEzLDggQEAgRW1pdFByb2NTaWduYWxCYXJyaWVyKFBy b2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKQogCSAqIGJhY2tlbmRzIHRoYXQgbmVlZCB0byB1 cGRhdGUgc3RhdGUgLSBidXQgdGhleSB3b24ndCBhY3R1YWxseSBuZWVkIHRvCiAJICogY2hh bmdlIGFueSBzdGF0ZS4KIAkgKi8KLQlmb3IgKGludCBpID0gTnVtUHJvY1NpZ25hbFNsb3Rz IC0gMTsgaSA+PSAwOyBpLS0pCi0JewotCQl2b2xhdGlsZSBQcm9jU2lnbmFsU2xvdCAqc2xv dCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKLQkJcGlkX3QJCXBpZCA9IHBnX2F0b21p Y19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCk7Ci0KLQkJaWYgKHBpZCAhPSAwKQotCQl7Ci0J CQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQlwaWQgPSBwZ19hdG9t aWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpOwotCQkJaWYgKHBpZCAhPSAwKQotCQkJewot CQkJCS8qIHNlZSBTZW5kUHJvY1NpZ25hbCBmb3IgZGV0YWlscyAqLwotCQkJCXNsb3QtPnBz c19zaWduYWxGbGFnc1tQUk9DU0lHX0JBUlJJRVJdID0gdHJ1ZTsKLQkJCQlTcGluTG9ja1Jl bGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQkJa2lsbChwaWQsIFNJR1VTUjEpOwotCQkJ fQotCQkJZWxzZQotCQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJ fQotCX0KKwlmb3IgKFByb2NOdW1iZXIgcGdwcm9jbm8gPSAwOyBwZ3Byb2NubyA8IE51bVBy b2NTaWduYWxTbG90czsgcGdwcm9jbm8rKykKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRf QkFSUklFUiwgcGdwcm9jbm8pOwogCiAJcmV0dXJuIGdlbmVyYXRpb247CiB9CkBAIC00Njks MjMgKzM3Myw2IEBAIFdhaXRGb3JQcm9jU2lnbmFsQmFycmllcih1aW50NjQgZ2VuZXJhdGlv bikKIAlwZ19tZW1vcnlfYmFycmllcigpOwogfQogCi0vKgotICogSGFuZGxlIHJlY2VpcHQg b2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBnbG9iYWwgYmFycmllciBldmVudC4KLSAq Ci0gKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nlc3NQcm9jU2ln bmFsQmFycmllcigpLCBiZWNhdXNlIHdlCi0gKiBjYW5ub3Qgc2FmZWx5IGFjY2VzcyB0aGUg YmFycmllciBnZW5lcmF0aW9uIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIgYXMKLSAqIDY0 Yml0IGF0b21pY3MgbWlnaHQgdXNlIHNwaW5sb2NrIGJhc2VkIGVtdWxhdGlvbiwgZXZlbiBm b3IgcmVhZHMuIEFzIHRoaXMKLSAqIHJvdXRpbmUgb25seSBnZXRzIGNhbGxlZCB3aGVuIFBS T0NTSUdfQkFSUklFUiBpcyBzZW50IHRoYXQgd29uJ3QgY2F1c2UgYQotICogbG90IG9mIHVu bmVjZXNzYXJ5IHdvcmsuCi0gKi8KLXN0YXRpYyB2b2lkCi1IYW5kbGVQcm9jU2lnbmFsQmFy cmllckludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVBy b2NTaWduYWxCYXJyaWVyUGVuZGluZyA9IHRydWU7Ci0JLyogaW50ZXJydXB0IHdpbGwgYmUg cmFpc2VkIGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCi19Ci0KIC8qCiAgKiBQ ZXJmb3JtIGdsb2JhbCBiYXJyaWVyIHJlbGF0ZWQgaW50ZXJydXB0IGNoZWNraW5nLgogICoK QEAgLTUwMSwxMiArMzg4LDEyIEBAIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcih2b2lkKQog CXVpbnQ2NAkJc2hhcmVkX2dlbjsKIAl2b2xhdGlsZSB1aW50MzIgZmxhZ3M7CiAKLQlBc3Nl cnQoTXlQcm9jU2lnbmFsU2xvdCk7Ci0KIAkvKiBFeGl0IHF1aWNrbHkgaWYgdGhlcmUncyBu byB3b3JrIHRvIGRvLiAqLwotCWlmICghUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQorCWlm ICghQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQkFSUklFUikpCisJCXJldHVybjsKKwor CWlmIChNeVByb2NTaWduYWxTbG90ID09IE5VTEwpCiAJCXJldHVybjsKLQlQcm9jU2lnbmFs QmFycmllclBlbmRpbmcgPSBmYWxzZTsKIAogCS8qCiAJICogSXQncyBub3QgdW5saWtlbHkg dG8gcHJvY2VzcyBtdWx0aXBsZSBiYXJyaWVycyBhdCBvbmNlLCBiZWZvcmUgdGhlCkBAIC02 MzUsODYgKzUyMiw3IEBAIHN0YXRpYyB2b2lkCiBSZXNldFByb2NTaWduYWxCYXJyaWVyQml0 cyh1aW50MzIgZmxhZ3MpCiB7CiAJcGdfYXRvbWljX2ZldGNoX29yX3UzMigmTXlQcm9jU2ln bmFsU2xvdC0+cHNzX2JhcnJpZXJDaGVja01hc2ssIGZsYWdzKTsKLQlQcm9jU2lnbmFsQmFy cmllclBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotfQotCi0v KgotICogQ2hlY2tQcm9jU2lnbmFsIC0gY2hlY2sgdG8gc2VlIGlmIGEgcGFydGljdWxhciBy ZWFzb24gaGFzIGJlZW4KLSAqIHNpZ25hbGVkLCBhbmQgY2xlYXIgdGhlIHNpZ25hbCBmbGFn LiAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciByZWNlaXZpbmcKLSAqIFNJR1VTUjEuCi0gKi8K LXN0YXRpYyBib29sCi1DaGVja1Byb2NTaWduYWwoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24p Ci17Ci0Jdm9sYXRpbGUgUHJvY1NpZ25hbFNsb3QgKnNsb3QgPSBNeVByb2NTaWduYWxTbG90 OwotCi0JaWYgKHNsb3QgIT0gTlVMTCkKLQl7Ci0JCS8qCi0JCSAqIENhcmVmdWwgaGVyZSAt LS0gZG9uJ3QgY2xlYXIgZmxhZyBpZiB3ZSBoYXZlbid0IHNlZW4gaXQgc2V0LgotCQkgKiBw c3Nfc2lnbmFsRmxhZ3MgaXMgb2YgdHlwZSAidm9sYXRpbGUgc2lnX2F0b21pY190IiB0byBh bGxvdyB1cyB0bwotCQkgKiByZWFkIGl0IGhlcmUgc2FmZWx5LCB3aXRob3V0IGhvbGRpbmcg dGhlIHNwaW5sb2NrLgotCQkgKi8KLQkJaWYgKHNsb3QtPnBzc19zaWduYWxGbGFnc1tyZWFz b25dKQotCQl7Ci0JCQlzbG90LT5wc3Nfc2lnbmFsRmxhZ3NbcmVhc29uXSA9IGZhbHNlOwot CQkJcmV0dXJuIHRydWU7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLS8qCi0g KiBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAtIGhhbmRsZSBTSUdVU1IxIHNpZ25hbC4K LSAqLwotdm9pZAotcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCi17 Ci0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUKSkKLQkJ SGFuZGxlQ2F0Y2h1cEludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9D U0lHX05PVElGWV9JTlRFUlJVUFQpKQotCQlIYW5kbGVOb3RpZnlJbnRlcnJ1cHQoKTsKLQot CWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFKSkKLQkJSGFu ZGxlUGFyYWxsZWxNZXNzYWdlSW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQotCQlIYW5kbGVXYWxTbmRJbml0U3Rv cHBpbmcoKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19CQVJSSUVSKSkKLQkJ SGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQoKTsKLQotCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQotCQlIYW5kbGVMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFS QUxMRUxfQVBQTFlfTUVTU0FHRSkpCi0JCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50 ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfREFUQUJBU0UpKQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwotCi0JaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UpKQotCQlIYW5kbGVS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFC TEVTUEFDRSk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9DSykpCi0JCUhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0NLKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCi0JCUhhbmRsZVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7Ci0K LQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1QpKQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25hbChQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQotCQlIYW5kbGVS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSyk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfQlVGRkVSUElOKSkKLQkJSGFuZGxlUmVjb3ZlcnlDb25mbGljdEludGVy cnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7Ci0KLQlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0JBUlJJRVIpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htX21xLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwppbmRleCBi NzUyZGNjZWUxZC4uMmIxNzdjNTJjZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobV9tcS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5j CkBAIC00LDkgKzQsMTAgQEAKICAqCSAgc2luZ2xlLXJlYWRlciwgc2luZ2xlLXdyaXRlciBz aGFyZWQgbWVtb3J5IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBCb3RoIHRoZSBzZW5kZXIgYW5k IHRoZSByZWNlaXZlciBtdXN0IGhhdmUgYSBQR1BST0M7IHRoZWlyIHJlc3BlY3RpdmUKLSAq IHByb2Nlc3MgaW50ZXJydXB0cyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25s eSB0aGUgc2VuZGVyIG1heSBzZW5kLAotICogYW5kIG9ubHkgdGhlIHJlY2VpdmVyIG1heSBy ZWNlaXZlLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBhbGxvdyBhIHVzZXIKLSAqIGJhY2tlbmQg dG8gY29tbXVuaWNhdGUgd2l0aCB3b3JrZXIgYmFja2VuZHMgdGhhdCBpdCBoYXMgcmVnaXN0 ZXJlZC4KKyAqIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdHMgYXJlIHVzZWQgZm9yIHN5 bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlCisgKiBzZW5kZXIgbWF5IHNlbmQsIGFuZCBvbmx5 IHRoZSByZWNlaXZlciBtYXkgcmVjZWl2ZS4gIFRoaXMgaXMgaW50ZW5kZWQgdG8KKyAqIGFs bG93IGEgdXNlciBiYWNrZW5kIHRvIGNvbW11bmljYXRlIHdpdGggd29ya2VyIGJhY2tlbmRz IHRoYXQgaXQgaGFzCisgKiByZWdpc3RlcmVkLgogICoKICAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAog ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKQEAgLTQ5LDcgKzUwLDcgQEAKICAqIGludGVycnVwdCB0byB0 aGUgY291bnRlcnBhcnR5LCB0aGUgY291bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBz ZWUgdGhlCiAgKiBjaGFuZ2UgYWZ0ZXIgd2FraW5nIHVwLiAgU2luY2UgU2VuZEludGVycnVw dCBiZWdpbnMgd2l0aCBhIG1lbW9yeSBiYXJyaWVyCiAgKiBhbmQgQ2xlYXJJbnRlcnJ1cHQg ZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91bGQgYmUgT0suCi0gKiBYWFg6IE5vIGV4cGxpY2l0 IG1lbW9yeSBiYXJyaWVycyBpbiBTZW5kSW50dGVydXB0L0NsZWFySW50ZXJydXB0LCBkbyB3 ZSBuZWVkIHRvIGFkZCBzb21lPworICogWFhYOiBObyBleHBsaWNpdCBtZW1vcnkgYmFycmll cnMgaW4gU2VuZEludGVycnVwdC9DbGVhckludGVycnVwdCwgZG8gd2UgbmVlZCB0byBhZGQg c29tZT8KICAqCiAgKiBtcV9yaW5nX3NpemUgYW5kIG1xX3Jpbmdfb2Zmc2V0IG5ldmVyIGNo YW5nZSBhZnRlciBpbml0aWFsaXphdGlvbiwgYW5kCiAgKiBjYW4gdGhlcmVmb3JlIGJlIHJl YWQgd2l0aG91dCB0aGUgbG9jay4KQEAgLTM0MywxNiArMzQ0LDE1IEBAIHNobV9tcV9zZW5k KHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsIGJv b2wgbm93YWl0LAogICogV3JpdGUgYSBtZXNzYWdlIGludG8gYSBzaGFyZWQgbWVzc2FnZSBx dWV1ZSwgZ2F0aGVyZWQgZnJvbSBtdWx0aXBsZQogICogYWRkcmVzc2VzLgogICoKLSAqIFdo ZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3MgaW50ZXJydXB0 IHdoZW4gdGhlIHJpbmcKLSAqIGJ1ZmZlciBmaWxscyB1cCwgYW5kIHRoZW4gY29udGludWUg d3JpdGluZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5lZAotICogc29tZSBkYXRhLiAg VGhlIHByb2Nlc3MgaW50ZXJydXB0IGlzIGNsZWFyZWQgYWZ0ZXIgZWFjaCB3YWl0LgorICog V2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCB3aGVuIHRoZSByaW5nIGJ1ZmZlciBm aWxscyB1cCwgYW5kIHRoZW4KKyAqIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2 ZXIgaGFzIGRyYWluZWQgc29tZSBkYXRhLgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwg d2UgZG8gbm90IG1hbmlwdWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGludGVycnVw dDsKLSAqIGluc3RlYWQsIGlmIHRoZSBidWZmZXIgYmVjb21lcyBmdWxsLCB3ZSByZXR1cm4g U0hNX01RX1dPVUxEX0JMT0NLLiAgSW4KLSAqIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBzaG91 bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFnYWluLCB3aXRoIHRoZSBzYW1lCi0gKiBhcmd1bWVu dHMsIGVhY2ggdGltZSB0aGUgcHJvY2VzcyBpbnRlcnJ1cHQgaXMgc2V0LiAgKE9uY2UgYmVn dW4sIHRoZSBzZW5kaW5nCi0gKiBvZiBhIG1lc3NhZ2UgY2Fubm90IGJlIGFib3J0ZWQgZXhj ZXB0IGJ5IGRldGFjaGluZyBmcm9tIHRoZSBxdWV1ZTsgY2hhbmdpbmcKLSAqIHRoZSBsZW5n dGggb3IgcGF5bG9hZCB3aWxsIGNvcnJ1cHQgdGhlIHF1ZXVlLikKKyAqIFdoZW4gbm93YWl0 ID0gdHJ1ZSwgaWYgdGhlIGJ1ZmZlciBiZWNvbWVzIGZ1bGwsIHdlIHJldHVybgorICogU0hN X01RX1dPVUxEX0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxs IHRoaXMgZnVuY3Rpb24KKyAqIGFnYWluLCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cywgZWFj aCB0aW1lIHRoZSBJTlRFUlJVUFRfR0VORVJBTCBpbnRlcnJ1cHQKKyAqIGlzIHNldC4gIChP bmNlIGJlZ3VuLCB0aGUgc2VuZGluZyBvZiBhIG1lc3NhZ2UgY2Fubm90IGJlIGFib3J0ZWQg ZXhjZXB0IGJ5CisgKiBkZXRhY2hpbmcgZnJvbSB0aGUgcXVldWU7IGNoYW5naW5nIHRoZSBs ZW5ndGggb3IgcGF5bG9hZCB3aWxsIGNvcnJ1cHQgdGhlCisgKiBxdWV1ZS4pCiAgKgogICog V2hlbiBmb3JjZV9mbHVzaCA9IHRydWUsIHdlIGltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgc2ht X21xJ3MgbXFfYnl0ZXNfd3JpdHRlbgogICogYW5kIG5vdGlmeSB0aGUgcmVjZWl2ZXIgKGlm IGl0IGlzIGFscmVhZHkgYXR0YWNoZWQpLiAgT3RoZXJ3aXNlLCB3ZSBkb24ndApAQCAtNTU5 LDE2ICs1NTksMTUgQEAgc2htX21xX3NlbmR2KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21x X2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJvb2wgbm93YWl0LAogICogd2hpbGUgc3RpbGwg YWxsb3dpbmcgbG9uZ2VyIG1lc3NhZ2VzLiAgSW4gZWl0aGVyIGNhc2UsIHRoZSByZXR1cm4g dmFsdWUKICAqIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIG5leHQgcmVjZWl2ZSBvcGVyYXRp b24gaXMgcGVyZm9ybWVkIG9uIHRoZSBxdWV1ZS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IGZh bHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRoZSByaW5n Ci0gKiBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIGhhdmUgbm90IHlldCByZWNlaXZlZCBhIGZ1 bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIKLSAqIHdpbGwgc2V0IG91ciBwcm9jZXNzIGludGVy cnVwdCBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdlJ2xsCi0gKiBy ZXN1bWUgcHJvY2Vzc2luZy4gIEVhY2ggY2FsbCB3aWxsIHRoZXJlZm9yZSByZXR1cm4gYSBj b21wbGV0ZSBtZXNzYWdlCi0gKiAodW5sZXNzIHRoZSBzZW5kZXIgZGV0YWNoZXMgdGhlIHF1 ZXVlKS4KKyAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdoZW4gdGhlIHJpbmcgYnVm ZmVyIGlzIGVtcHR5IGFuZCB3ZSBoYXZlIG5vdAorICogeWV0IHJlY2VpdmVkIGEgZnVsbCBt ZXNzYWdlLiAgVGhlIHNlbmRlciB3aWxsIHNlbmQgdXMgSU5URVJSVVBUX0dFTkVSQUwKKyAq IGFmdGVyIG1vcmUgZGF0YSBoYXMgYmVlbiB3cml0dGVuLCBhbmQgd2UnbGwgcmVzdW1lIHBy b2Nlc3NpbmcuICBFYWNoIGNhbGwKKyAqIHdpbGwgdGhlcmVmb3JlIHJldHVybiBhIGNvbXBs ZXRlIG1lc3NhZ2UgKHVubGVzcyB0aGUgc2VuZGVyIGRldGFjaGVzIHRoZQorICogcXVldWUp LgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxhdGUgdGhl IHN0YXRlIG9mIHRoZSBwcm9jZXNzCi0gKiBpbnRlcnJ1cHQ7IGluc3RlYWQsIHdoZW5ldmVy IHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIG5lZWQgdG8gcmVhZCBmcm9tCi0gKiBpdCwg d2UgcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxl ciBzaG91bGQgY2FsbAotICogdGhpcyBmdW5jdGlvbiBhZ2FpbiBhZnRlciB0aGUgcHJvY2Vz cyBpbnRlcnJ1cHQgaGFzIGJlZW4gc2V0LgorICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBk byBub3Qgd2FpdCB3aGVuIHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHJldHVybgorICogU0hN X01RX1dPVUxEX0JMT0NLIGluc3RlYWQuICBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hv dWxkIGNhbGwgdGhpcworICogZnVuY3Rpb24gYWdhaW4gYWZ0ZXIgSU5URVJSVVBUX0dFTkVS QUwgaGFzIGJlZW4gc2V0LgogICovCiBzaG1fbXFfcmVzdWx0CiBzaG1fbXFfcmVjZWl2ZShz aG1fbXFfaGFuZGxlICptcWgsIFNpemUgKm5ieXRlc3AsIHZvaWQgKipkYXRhcCwgYm9vbCBu b3dhaXQpCkBAIC0xMDE3LDcgKzEwMTYsOCBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFf aGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICogaW50 ZXJydXB0IGF0IHRvcCBvZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQK IAkJCSAqIGludGVycnVwdCBpcyBtdWNoIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0 IGhhcyBiZWVuIHJlc2V0LgogCQkJICovCi0JCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRI LCAwLAorCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5U RVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAogCQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NFTkQpOwog CiAJCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCkBAIC0x MTYzLDE0ICsxMTYzLDE1IEBAIHNobV9tcV9yZWNlaXZlX2J5dGVzKHNobV9tcV9oYW5kbGUg Km1xaCwgU2l6ZSBieXRlc19uZWVkZWQsIGJvb2wgbm93YWl0LAogCQkgKiBsb29wLCBiZWNh dXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQgaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBlciB0 aGFuCiAJCSAqIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gY2xlYXJlZC4KIAkJICovCi0J CSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAogCQkJCQkJCSBXQUlUX0VWRU5U X01FU1NBR0VfUVVFVUVfUkVDRUlWRSk7CiAKKwkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVy cnVwdHMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKIAkJLyogQ2xlYXIgdGhlIGludGVycnVw dCBzbyB3ZSBkb24ndCBzcGluLiAqLwogCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7Ci0KLQkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdl IHdlcmUgd2FpdGluZy4gKi8KLQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CiB9CiAK QEAgLTEyNTIsMTQgKzEyNTMsMTUgQEAgc2htX21xX3dhaXRfaW50ZXJuYWwoc2htX21xICpt cSwgUEdQUk9DICoqcHRyLCBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCX0K IAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAorCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0sg fCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwgMCwKIAkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX0lOVEVS TkFMKTsKIAorCQkvKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJydXB0cyB0aGF0IG1heSBoYXZl IG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKwogCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4u ICovCiAJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQotCQkvKiBBbiBp bnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwot CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCX0KIAogCXJldHVybiByZXN1bHQ7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwppbmRleCBkNzdiNGY0NGFkNS4uMjY1 YTE0Njg0ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwpAQCAt MjA1LDcgKzIwNSw3IEBAIHBnX3dhaXRfdW50aWxfdGVybWluYXRpb24oaW50IHBpZCwgaW50 NjQgdGltZW91dCkKIAkJLyogUHJvY2VzcyBpbnRlcnJ1cHRzLCBpZiBhbnksIGJlZm9yZSB3 YWl0aW5nICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1 cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJ CSB3YWl0dGltZSwKIAkJCQkJCQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKaW5kZXggM2MxMTJkYWYwMDEuLjdkZjM3ZmNh MGIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYwpAQCAtMjAsMjUgKzIwLDggQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFs LmgiCiAKLQogdWludDY0CQlTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50ZXI7CiAKLQotLyoK LSAqIEJlY2F1c2UgYmFja2VuZHMgc2l0dGluZyBpZGxlIHdpbGwgbm90IGJlIHJlYWRpbmcg c2ludmFsIGV2ZW50cywgd2UKLSAqIG5lZWQgYSB3YXkgdG8gZ2l2ZSBhbiBpZGxlIGJhY2tl bmQgYSBzd2lmdCBraWNrIGluIHRoZSByZWFyIGFuZCBtYWtlCi0gKiBpdCBjYXRjaCB1cCBi ZWZvcmUgdGhlIHNpbnZhbCBxdWV1ZSBvdmVyZmxvd3MgYW5kIGZvcmNlcyBpdCB0byBnbwot ICogdGhyb3VnaCBhIGNhY2hlIHJlc2V0IGV4ZXJjaXNlLiAgVGhpcyBpcyBkb25lIGJ5IHNl bmRpbmcKLSAqIFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQgdG8gYW55IGJhY2tlbmQgdGhh dCBnZXRzIHRvbyBmYXIgYmVoaW5kLgotICoKLSAqIFRoZSBzaWduYWwgaGFuZGxlciB3aWxs IHNldCBhbiBpbnRlcnJ1cHQgcGVuZGluZyBmbGFnIGFuZCByYWlzZSB0aGUKLSAqIElOVEVS UlVQVF9HRU5FUkFMLiBXaGVuZXZlciBzdGFydGluZyB0byByZWFkIGZyb20gdGhlIGNsaWVu dCwgb3Igd2hlbgotICogaW50ZXJydXB0ZWQgd2hpbGUgZG9pbmcgc28sIFByb2Nlc3NDbGll bnRSZWFkSW50ZXJydXB0KCkgd2lsbCBjYWxsCi0gKiBQcm9jZXNzQ2F0Y2h1cEV2ZW50KCku Ci0gKi8KLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBjYXRjaHVwSW50ZXJydXB0UGVuZGluZyA9 IGZhbHNlOwotCi0KIC8qCiAgKiBTZW5kU2hhcmVkSW52YWxpZE1lc3NhZ2VzCiAgKglBZGQg c2hhcmVkLWNhY2hlLWludmFsaWRhdGlvbiBtZXNzYWdlKHMpIHRvIHRoZSBnbG9iYWwgU0kg bWVzc2FnZSBxdWV1ZS4KQEAgLTEzMiwzOCArMTE1LDEzIEBAIFJlY2VpdmVTaGFyZWRJbnZh bGlkTWVzc2FnZXModm9pZCAoKmludmFsRnVuY3Rpb24pIChTaGFyZWRJbnZhbGlkYXRpb25N ZXNzYWdlICptCiAJICogY2F0Y2h1cCBzaWduYWwgdGhpcyB3YXkgYXZvaWRzIGNyZWF0aW5n IHNwaWtlcyBpbiBzeXN0ZW0gbG9hZCBmb3Igd2hhdAogCSAqIHNob3VsZCBiZSBqdXN0IGEg YmFja2dyb3VuZCBtYWludGVuYW5jZSBhY3Rpdml0eS4KIAkgKi8KLQlpZiAoY2F0Y2h1cElu dGVycnVwdFBlbmRpbmcpCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZB TF9DQVRDSFVQKSkKIAl7Ci0JCWNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7CiAJ CWVsb2coREVCVUc0LCAic2ludmFsIGNhdGNodXAgY29tcGxldGUsIGNsZWFuaW5nIHF1ZXVl Iik7CiAJCVNJQ2xlYW51cFF1ZXVlKGZhbHNlLCAwKTsKIAl9CiB9CiAKLQotLyoKLSAqIEhh bmRsZUNhdGNodXBJbnRlcnJ1cHQKLSAqCi0gKiBUaGlzIGlzIGNhbGxlZCB3aGVuIFBST0NT SUdfQ0FUQ0hVUF9JTlRFUlJVUFQgaXMgcmVjZWl2ZWQuCi0gKgotICogV2UgdXNlZCB0byBk aXJlY3RseSBjYWxsIFByb2Nlc3NDYXRjaHVwRXZlbnQgZGlyZWN0bHkgd2hlbiBpZGxlLiBU aGVzZSBkYXlzCi0gKiB3ZSBqdXN0IHNldCBhIGZsYWcgdG8gZG8gaXQgbGF0ZXIgYW5kIG5v dGlmeSB0aGUgcHJvY2VzcyBvZiB0aGF0IGZhY3QgYnkKLSAqIHJhaXNpbmcgSU5URVJSVVBU X0dFTkVSQUwuCi0gKi8KLXZvaWQKLUhhbmRsZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKLXsK LQkvKgotCSAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIGJ5IGEgU0lHTkFMIEhBTkRMRVIuIFlv dSBtdXN0IGJlIHZlcnkgd2FyeSB3aGF0Ci0JICogeW91IGRvIGhlcmUuCi0JICovCi0KLQlj YXRjaHVwSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0KLQkvKiBtYWtlIHN1cmUgdGhlIGV2 ZW50IGlzIHByb2Nlc3NlZCBpbiBkdWUgY291cnNlICovCi0JUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwotfQotCiAvKgogICogUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQK ICAqCkBAIC0xNzMsMTIgKzEzMSwxMiBAQCBIYW5kbGVDYXRjaHVwSW50ZXJydXB0KHZvaWQp CiB2b2lkCiBQcm9jZXNzQ2F0Y2h1cEludGVycnVwdCh2b2lkKQogewotCXdoaWxlIChjYXRj aHVwSW50ZXJydXB0UGVuZGluZykKKwl3aGlsZSAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJV UFRfU0lOVkFMX0NBVENIVVApKQogCXsKIAkJLyoKIAkJICogV2hhdCB3ZSBuZWVkIHRvIGRv IGhlcmUgaXMgY2F1c2UgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdlcygpIHRvCiAJCSAq IHJ1biwgd2hpY2ggd2lsbCBkbyB0aGUgbmVjZXNzYXJ5IHdvcmsgYW5kIGFsc28gcmVzZXQg dGhlCi0JCSAqIGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nIGZsYWcuICBJZiB3ZSBhcmUgaW5z aWRlIGEgdHJhbnNhY3Rpb24gd2UKKwkJICogSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQIGZs YWcuICBJZiB3ZSBhcmUgaW5zaWRlIGEgdHJhbnNhY3Rpb24gd2UKIAkJICogY2FuIGp1c3Qg Y2FsbCBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpIHRvIGRvIHRoaXMuICBJZiB3ZQog CQkgKiBhcmVuJ3QsIHdlIHN0YXJ0IGFuZCBpbW1lZGlhdGVseSBlbmQgYSB0cmFuc2FjdGlv bjsgdGhlIGNhbGwgdG8KIAkJICogQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBoYXBw ZW5zIGRvd24gaW5zaWRlIHRyYW5zYWN0aW9uIHN0YXJ0LgpAQCAtMTkwLDEyICsxNDgsMTIg QEAgUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQodm9pZCkKIAkJICovCiAJCWlmIChJc1RyYW5z YWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCiAJCXsKLQkJCWVsb2coREVCVUc0LCAiUHJv Y2Vzc0NhdGNodXBFdmVudCBpbnNpZGUgdHJhbnNhY3Rpb24iKTsKKwkJCWVsb2coREVCVUc0 LCAiUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQgaW5zaWRlIHRyYW5zYWN0aW9uIik7CiAJCQlB Y2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwogCQl9CiAJCWVsc2UKIAkJewotCQkJZWxv ZyhERUJVRzQsICJQcm9jZXNzQ2F0Y2h1cEV2ZW50IG91dHNpZGUgdHJhbnNhY3Rpb24iKTsK KwkJCWVsb2coREVCVUc0LCAiUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQgb3V0c2lkZSB0cmFu c2FjdGlvbiIpOwogCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFk dC5jCmluZGV4IDJkYTkxNzM4YzMyLi44ODBlNzc2NjMzZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2ludmFsYWR0LmMKQEAgLTE4LDEwICsxOCwxMCBAQAogI2luY2x1ZGUgPHVuaXN0 ZC5oPgogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNs dWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgpA QCAtMTE4LDcgKzExOCw3IEBACiAgKiB3ZSBleGNlZWQgQ0xFQU5VUF9NSU4uICBTaG91bGQg YmUgYSBwb3dlciBvZiAyIGZvciBzcGVlZC4KICAqCiAgKiBTSUdfVEhSRVNIT0xEOiB0aGUg bWluaW11bSBudW1iZXIgb2YgbWVzc2FnZXMgYSBiYWNrZW5kIG11c3QgaGF2ZSBmYWxsZW4K LSAqIGJlaGluZCBiZWZvcmUgd2UnbGwgc2VuZCBpdCBQUk9DU0lHX0NBVENIVVBfSU5URVJS VVBULgorICogYmVoaW5kIGJlZm9yZSB3ZSdsbCBzZW5kIGl0IElOVEVSUlVQVF9TSU5WQUxf Q0FUQ0hVUC4KICAqCiAgKiBXUklURV9RVUFOVFVNOiB0aGUgbWF4IG51bWJlciBvZiBtZXNz YWdlcyB0byBwdXNoIGludG8gdGhlIGJ1ZmZlciBwZXIKICAqIGl0ZXJhdGlvbiBvZiBTSUlu c2VydERhdGFFbnRyaWVzLiAgTm9uY3JpdGljYWwgYnV0IHNob3VsZCBiZSBsZXNzIHRoYW4K QEAgLTU2NCw3ICs1NjQsNyBAQCBTSUdldERhdGFFbnRyaWVzKFNoYXJlZEludmFsaWRhdGlv bk1lc3NhZ2UgKmRhdGEsIGludCBkYXRhc2l6ZSkKICAqIG1pbkZyZWUgaXMgdGhlIG1pbmlt dW0gbnVtYmVyIG9mIG1lc3NhZ2Ugc2xvdHMgdG8gbWFrZSBmcmVlLgogICoKICAqIFBvc3Np YmxlIHNpZGUgZWZmZWN0cyBvZiB0aGlzIHJvdXRpbmUgaW5jbHVkZSBtYXJraW5nIG9uZSBv ciBtb3JlCi0gKiBiYWNrZW5kcyBhcyAicmVzZXQiIGluIHRoZSBhcnJheSwgYW5kIHNlbmRp bmcgUFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVAorICogYmFja2VuZHMgYXMgInJlc2V0IiBp biB0aGUgYXJyYXksIGFuZCBzZW5kaW5nIElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUAogICog dG8gc29tZSBiYWNrZW5kIHRoYXQgc2VlbXMgdG8gYmUgZ2V0dGluZyB0b28gZmFyIGJlaGlu ZC4gIFdlIHNpZ25hbCBhdAogICogbW9zdCBvbmUgYmFja2VuZCBhdCBhIHRpbWUsIGZvciBy ZWFzb25zIGV4cGxhaW5lZCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLgogICoKQEAgLTY1Nyw4 ICs2NTcsOCBAQCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9jaywgaW50 IG1pbkZyZWUpCiAJCXNlZ1AtPm5leHRUaHJlc2hvbGQgPSAobnVtTXNncyAvIENMRUFOVVBf UVVBTlRVTSArIDEpICogQ0xFQU5VUF9RVUFOVFVNOwogCiAJLyoKLQkgKiBMYXN0bHksIHNp Z25hbCBhbnlvbmUgd2hvIG5lZWRzIGEgY2F0Y2h1cCBpbnRlcnJ1cHQuICBTaW5jZQotCSAq IFNlbmRQcm9jU2lnbmFsKCkgbWlnaHQgbm90IGJlIGZhc3QsIHdlIGRvbid0IHdhbnQgdG8g aG9sZCBsb2NrcyB3aGlsZQorCSAqIExhc3RseSwgc2lnbmFsIGFueW9uZSB3aG8gbmVlZHMg YSBjYXRjaHVwIGludGVycnVwdC4gIFNlbmRJbnRlcnJ1cHQoKQorCSAqIGlzIHByZXR0eSBm YXN0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGRvbid0IHdhbnQgdG8gaG9sZCBsb2NrcyB3aGls ZQogCSAqIGV4ZWN1dGluZyBpdC4KIAkgKi8KIAlpZiAobmVlZFNpZykKQEAgLTY2OSw4ICs2 NjksOCBAQCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9jaywgaW50IG1p bkZyZWUpCiAJCW5lZWRTaWctPnNpZ25hbGVkID0gdHJ1ZTsKIAkJTFdMb2NrUmVsZWFzZShT SW52YWxSZWFkTG9jayk7CiAJCUxXTG9ja1JlbGVhc2UoU0ludmFsV3JpdGVMb2NrKTsKLQkJ ZWxvZyhERUJVRzQsICJzZW5kaW5nIHNpbnZhbCBjYXRjaHVwIHNpZ25hbCB0byBQSUQgJWQi LCAoaW50KSBoaXNfcGlkKTsKLQkJU2VuZFByb2NTaWduYWwoaGlzX3BpZCwgUFJPQ1NJR19D QVRDSFVQX0lOVEVSUlVQVCwgaGlzX3Byb2NOdW1iZXIpOworCQllbG9nKERFQlVHNCwgInNl bmRpbmcgc2ludmFsIGNhdGNodXAgaW50ZXJydXB0IHRvIGJhY2tlbmQgUElEICVkIiwgKGlu dCkgaGlzX3BpZCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQ LCBoaXNfcHJvY051bWJlcik7CiAJCWlmIChjYWxsZXJIYXNXcml0ZUxvY2spCiAJCQlMV0xv Y2tBY3F1aXJlKFNJbnZhbFdyaXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXggNzZiMjk5NmYzMjcuLjczY2U2ZGFhYWRlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC03MSwxMyArNzEsMTMgQEAgc3Rh dGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBnb3Rfc3RhbmRieV9kZWxheV90aW1lb3V0ID0g ZmFsc2U7CiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9zdGFuZGJ5X2xvY2tf dGltZW91dCA9IGZhbHNlOwogCiBzdGF0aWMgdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdGxpc3QsCi0JCQkJ CQkJCQkJCQkgICBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJCQkJCSAgIElu dGVycnVwdFR5cGUgcmVhc29uLAogCQkJCQkJCQkJCQkJICAgdWludDMyIHdhaXRfZXZlbnRf aW5mbywKIAkJCQkJCQkJCQkJCSAgIGJvb2wgcmVwb3J0X3dhaXRpbmcpOwotc3RhdGljIHZv aWQgU2VuZFJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKFByb2NTaWduYWxSZWFzb24g cmVhc29uKTsKK3N0YXRpYyB2b2lkIFNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBp bihJbnRlcnJ1cHRUeXBlIHJlYXNvbik7CiBzdGF0aWMgWExvZ1JlY1B0ciBMb2dDdXJyZW50 UnVubmluZ1hhY3RzKFJ1bm5pbmdUcmFuc2FjdGlvbnMgQ3VyclJ1bm5pbmdYYWN0cyk7CiBz dGF0aWMgdm9pZCBMb2dBY2Nlc3NFeGNsdXNpdmVMb2NrcyhpbnQgbmxvY2tzLCB4bF9zdGFu ZGJ5X2xvY2sgKmxvY2tzKTsKLXN0YXRpYyBjb25zdCBjaGFyICpnZXRfcmVjb3ZlcnlfY29u ZmxpY3RfZGVzYyhQcm9jU2lnbmFsUmVhc29uIHJlYXNvbik7CitzdGF0aWMgY29uc3QgY2hh ciAqZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoSW50ZXJydXB0VHlwZSByZWFzb24pOwog CiAvKgogICogSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudApAQCAtMjcxLDcg KzI3MSw3IEBAIFdhaXRFeGNlZWRzTWF4U3RhbmRieURlbGF5KHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pCiAgKiB0byBiZSByZXNvbHZlZCBvciBub3QuCiAgKi8KIHZvaWQKLUxvZ1JlY292 ZXJ5Q29uZmxpY3QoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFRpbWVzdGFtcFR6IHdhaXRf c3RhcnQsCitMb2dSZWNvdmVyeUNvbmZsaWN0KEludGVycnVwdFR5cGUgcmVhc29uLCBUaW1l c3RhbXBUeiB3YWl0X3N0YXJ0LAogCQkJCQlUaW1lc3RhbXBUeiBub3csIFZpcnR1YWxUcmFu c2FjdGlvbklkICp3YWl0X2xpc3QsCiAJCQkJCWJvb2wgc3RpbGxfd2FpdGluZykKIHsKQEAg LTM1OCw3ICszNTgsNyBAQCBMb2dSZWNvdmVyeUNvbmZsaWN0KFByb2NTaWduYWxSZWFzb24g cmVhc29uLCBUaW1lc3RhbXBUeiB3YWl0X3N0YXJ0LAogICovCiBzdGF0aWMgdm9pZAogUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5zYWN0aW9u SWQgKndhaXRsaXN0LAotCQkJCQkJCQkJICAgUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIHVp bnQzMiB3YWl0X2V2ZW50X2luZm8sCisJCQkJCQkJCQkgICBJbnRlcnJ1cHRUeXBlIHJlYXNv biwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKIAkJCQkJCQkJCSAgIGJvb2wgcmVwb3J0X3dh aXRpbmcpCiB7CiAJVGltZXN0YW1wVHogd2FpdFN0YXJ0ID0gMDsKQEAgLTQ4OSw3ICs0ODks NyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCWJhY2tlbmRzID0gR2V0Q29uZmxpY3RpbmdW aXJ0dWFsWElEcyhzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkgbG9jYXRv ci5kYk9pZCk7CiAJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoYmFj a2VuZHMsCi0JCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hP VCwKKwkJCQkJCQkJCQkgICBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Qs CiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwK IAkJCQkJCQkJCQkgICB0cnVlKTsKIApAQCAtNTYwLDcgKzU2MCw3IEBAIFJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2UoT2lkIHRzaWQpCiAJdGVtcF9maWxlX3VzZXJz ID0gR2V0Q29uZmxpY3RpbmdWaXJ0dWFsWElEcyhJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJ CQkJCQkJCQkJCUludmFsaWRPaWQpOwogCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZp cnR1YWxYSURzKHRlbXBfZmlsZV91c2VycywKLQkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCisJCQkJCQkJCQkJICAgSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9SRUNP VkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCQkJCQkJCQkJCSAgIHRydWUpOwogfQpAQCAt NTgxLDcgKzU4MSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9p ZCBkYmlkKQogCSAqLwogCXdoaWxlIChDb3VudERCQmFja2VuZHMoZGJpZCkgPiAwKQogCXsK LQkJQ2FuY2VsREJCYWNrZW5kcyhkYmlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RB VEFCQVNFLCB0cnVlKTsKKwkJQ2FuY2VsREJCYWNrZW5kcyhkYmlkLCBJTlRFUlJVUFRfUkVD T1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsIHRydWUpOwogCiAJCS8qCiAJCSAqIFdhaXQgYXdo aWxlIGZvciB0aGVtIHRvIGRpZSBzbyB0aGF0IHdlIGF2b2lkIGZsb29kaW5nIGFuCkBAIC02 NjUsNyArNjY1LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFH IGxvY2t0YWcsIGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAkJICogYmVjYXVzZSB0aGUgY2Fs bGVyLCBXYWl0T25Mb2NrKCksIGhhcyBhbHJlYWR5IHJlcG9ydGVkIHRoYXQuCiAJCSAqLwog CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcyhiYWNrZW5kcywKLQkJ CQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAorCQkJCQkJCQkJ CQkgICBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAkJCQkJCQkJCQkJICAg UEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUsCiAJCQkJCQkJCQkJCSAgIGZh bHNlKTsKIAl9CkBAIC02OTcsMTAgKzY5NywxMSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQogCX0K IAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgdGhlIHJlbGVhc2Ugb2YgdGhlIFJlbGF0 aW9uIExvY2sgKi8KLQlXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJV2FpdEludGVycnVwdChJ TlRFUlJVUFRfQ0ZJX01BU0sgfCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkgIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJICBQR19XQUlUX0xPQ0sgfCBs b2NrdGFnLmxvY2t0YWdfdHlwZSk7Ci0JQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCiAJLyoKIAkgKiBFeGl0IGlmIGx0aW1lIGlzIHJlYWNoZWQuIFRo ZW4gYWxsIHRoZSBiYWNrZW5kcyBob2xkaW5nIGNvbmZsaWN0aW5nCkBAIC03MjcsNyArNzI4 LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0YWcs IGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAkJd2hpbGUgKFZpcnR1YWxUcmFuc2FjdGlvbklk SXNWYWxpZCgqYmFja2VuZHMpKQogCQl7CiAJCQlTaWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24o KmJhY2tlbmRzLAotCQkJCQkJCQkJIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRV UF9ERUFETE9DSywKKwkJCQkJCQkJCSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSywKIAkJCQkJCQkJCSBmYWxzZSk7CiAJCQliYWNrZW5kcysrOwogCQl9 CkBAIC03NDksMTAgKzc1MCwxMSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2Nr KExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRpbCB0 aGUgcmVsYXRpb24gbG9ja3MgYXJlIHJlbGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQuCiAJ CSAqLwogCQlnb3Rfc3RhbmRieV9kZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgMCwKKwkJV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0sg fAorCQkJCQkgIElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAogCQkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190 eXBlKTsKLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJfQogCiBjbGVhbnVwOgpAQCAtNzc4LDkgKzc4MCwxMCBAQCBjbGVhbnVwOgogICogV2Ug ZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNldCBhIHRpbWVvdXQg dG8gd2FrZSB1cyBhdAogICogdGhlIGxpbWl0IG9mIG91ciBwYXRpZW5jZS4KICAqCi0gKiBS ZXNvbHZlIGNvbmZsaWN0cyBieSBzZW5kaW5nIGEgUFJPQ1NJRyBzaWduYWwgdG8gYWxsIGJh Y2tlbmRzIHRvIGNoZWNrIGlmCi0gKiB0aGV5IGhvbGQgb25lIG9mIHRoZSBidWZmZXIgcGlu cyB0aGF0IGlzIGJsb2NraW5nIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sCi0gKiB0aG9zZSBi YWNrZW5kcyB3aWxsIHRha2UgYW4gYXBwcm9wcmlhdGUgZXJyb3IgYWN0aW9uLCBFUlJPUiBv ciBGQVRBTC4KKyAqIFJlc29sdmUgY29uZmxpY3RzIGJ5IHNlbmRpbmcgSU5URVJSVVBUX1JF Q09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiB0byBhbGwKKyAqIGJhY2tlbmRzIHRvIGNoZWNr IGlmIHRoZXkgaG9sZCBvbmUgb2YgdGhlIGJ1ZmZlciBwaW5zIHRoYXQgaXMgYmxvY2tpbmcK KyAqIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sIHRob3NlIGJhY2tlbmRzIHdpbGwgdGFrZSBh biBhcHByb3ByaWF0ZSBlcnJvcgorICogYWN0aW9uLCBFUlJPUiBvciBGQVRBTC4KICAqCiAg KiBXZSBhbHNvIG11c3QgY2hlY2sgZm9yIGRlYWRsb2Nrcy4gIERlYWRsb2NrcyBvY2N1ciBi ZWNhdXNlIGlmIHF1ZXJpZXMKICAqIHdhaXQgb24gYSBsb2NrLCB0aGF0IG11c3QgYmUgYmVo aW5kIGFuIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHdoaWNoIGNhbiBvbmx5CkBAIC04MDksNyAr ODEyLDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCiAJ CS8qCiAJCSAqIFdlJ3JlIGFscmVhZHkgYmVoaW5kLCBzbyBjbGVhciBhIHBhdGggYXMgcXVp Y2tseSBhcyBwb3NzaWJsZS4KIAkJICovCi0JCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1 ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7CisJCVNlbmRS ZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJ Q1RfQlVGRkVSUElOKTsKIAl9CiAJZWxzZQogCXsKQEAgLTg0NCwxNyArODQ3LDIwIEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3Vt ZSB0aGF0IG9ubHkgVW5waW5CdWZmZXIoKSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0 YWJsaXNoZWQKIAkgKiBhYm92ZSBjYW4gd2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVy eSgpIGNhbGxlZCBieSB3YWxyZWNlaXZlciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxl ciwgZXRjIGNhbm5vdCBkbyB0aGF0IGJlY2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0J ICogaW50ZXJydXB0IGZsYWcuIEZJWE1FOiBzZWVtcyBsaWtlIGEgc2hha3kgYXNzdW1wdGlv bi4gV2FrZXVwUmVjb3ZlcnkoKQotCSAqIGluZGVlZCB1c2VzIGEgZGlmZmVyZW50IGludGVy cnVwdCBmbGFnIChkaWZmZXJlbnQgbGF0Y2ggZWFybGllciksIGJ1dAotCSAqIHRoZSBzaWdu YWwgaGFuZGxlcj8/CisJICogaW50ZXJydXB0IGZsYWcuCisJICoKKwkgKiBGSVhNRTogc2Vl bXMgbGlrZSBhIHNoYWt5IGFzc3VtcHRpb24uIFdha2V1cFJlY292ZXJ5KCkgaW5kZWVkIHVz ZXMgYQorCSAqIGRpZmZlcmVudCBpbnRlcnJ1cHQgZmxhZyAoZGlmZmVyZW50IGxhdGNoIGVh cmxpZXIpLCBidXQgdGhlIHNpZ25hbAorCSAqIGhhbmRsZXI/PwogCSAqLwotCVdhaXRJbnRl cnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwgMCwKKwlXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElO VEVSUlVQVF9HRU5FUkFMLAorCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKIAkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7Ci0JQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJaWYgKGdvdF9zdGFuZGJ5X2Rl bGF5X3RpbWVvdXQpCi0JCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7CisJCVNlbmRSZWNvdmVyeUNvbmZs aWN0V2l0aEJ1ZmZlclBpbihJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElO KTsKIAllbHNlIGlmIChnb3Rfc3RhbmRieV9kZWFkbG9ja190aW1lb3V0KQogCXsKIAkJLyoK QEAgLTg3MCw3ICs4NzYsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQ aW4odm9pZCkKIAkJICogbm90IGJlIHNvIGhhcm1mdWwgYmVjYXVzZSB0aGUgcGVyaW9kIHRo YXQgdGhlIGJ1ZmZlciBpcyBrZXB0IHBpbm5lZAogCQkgKiBpcyBiYXNpY2FsbHkgbm8gc28g bG9uZy4gQnV0IHdlIHNob3VsZCBmaXggdGhpcz8KIAkJICovCi0JCVNlbmRSZWNvdmVyeUNv bmZsaWN0V2l0aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBf REVBRExPQ0spOworCQlTZW5kUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4oSU5URVJS VVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spOwogCX0KIAogCS8qCkBA IC04ODUsMTAgKzg5MSwxMCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQ aW4odm9pZCkKIH0KIAogc3RhdGljIHZvaWQKLVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1 ZmZlclBpbihQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKK1NlbmRSZWNvdmVyeUNvbmZsaWN0 V2l0aEJ1ZmZlclBpbihJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKLQlBc3NlcnQocmVhc29u ID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOIHx8Ci0JCSAgIHJlYXNv biA9PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spOworCUFz c2VydChyZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiB8 fAorCQkgICByZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBf REVBRExPQ0spOwogCiAJLyoKIAkgKiBXZSBzZW5kIHNpZ25hbCB0byBhbGwgYmFja2VuZHMg dG8gYXNrIHRoZW0gaWYgdGhleSBhcmUgaG9sZGluZyB0aGUKQEAgLTk0Nyw2ICs5NTMsNyBA QCB2b2lkCiBTdGFuZGJ5RGVhZExvY2tIYW5kbGVyKHZvaWQpCiB7CiAJZ290X3N0YW5kYnlf ZGVhZGxvY2tfdGltZW91dCA9IHRydWU7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogfQogCiAvKgpAQCAtOTU2LDYgKzk2Myw3IEBAIHZvaWQKIFN0YW5kYnlUaW1l b3V0SGFuZGxlcih2b2lkKQogewogCWdvdF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQgPSB0cnVl OworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKQEAgLTk2 NSw2ICs5NzMsNyBAQCB2b2lkCiBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7 CiAJZ290X3N0YW5kYnlfbG9ja190aW1lb3V0ID0gdHJ1ZTsKKwlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xNDg5LDMxICsxNDk4LDMxIEBAIExv Z1N0YW5kYnlJbnZhbGlkYXRpb25zKGludCBubXNncywgU2hhcmVkSW52YWxpZGF0aW9uTWVz c2FnZSAqbXNncywKIAogLyogUmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBvZiByZWNvdmVyeSBj b25mbGljdCAqLwogc3RhdGljIGNvbnN0IGNoYXIgKgotZ2V0X3JlY292ZXJ5X2NvbmZsaWN0 X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCitnZXRfcmVjb3ZlcnlfY29uZmxpY3Rf ZGVzYyhJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKIAljb25zdCBjaGFyICpyZWFzb25EZXNj ID0gXygidW5rbm93biByZWFzb24iKTsKIAogCXN3aXRjaCAocmVhc29uKQogCXsKLQkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKKwkJY2FzZSBJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJcmVhc29uRGVzYyA9IF8oInJl Y292ZXJ5IGNvbmZsaWN0IG9uIGJ1ZmZlciBwaW4iKTsKIAkJCWJyZWFrOwotCQljYXNlIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZF UllfQ09ORkxJQ1RfTE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGlj dCBvbiBsb2NrIik7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1RBQkxFU1BBQ0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1RB QkxFU1BBQ0U6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gdGFi bGVzcGFjZSIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TTkFQU0hPVDoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1Q6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gc25hcHNob3Qi KTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1Q6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9U OgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9uIHJlcGxpY2F0aW9u IHNsb3QiKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSzoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGlj dCBvbiBidWZmZXIgZGVhZGxvY2siKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NP TkZMSUNUX0RBVEFCQVNFOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0 IG9uIGRhdGFiYXNlIik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggODE5ZGNlNjIyNTIuLjJmZTc0ZTNmZTcw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwpAQCAtMTEwMSw3 ICsxMTAxLDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9uZyB0 aW1lb3V0LAogCQkJICogc3luY2hyb25pemF0aW9uIHNvIHRoYXQgaWYgYW4gaW50ZXJydXB0 IGJpdCBpcyBzZXQgYWZ0ZXIgdGhpcywKIAkJCSAqIHRoZSBzZXR0ZXIgd2lsbCB3YWtlIHVz IHVwLgogCQkJICovCi0JCQlvbGRfbWFzayA9IHBnX2F0b21pY19mZXRjaF9vcl91MzIoTXlQ ZW5kaW5nSW50ZXJydXB0cywgMSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKTsKKwkJCW9s ZF9tYXNrID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCBT TEVFUElOR19PTl9JTlRFUlJVUFRTKTsKIAkJCWFscmVhZHlfcGVuZGluZyA9ICgob2xkX21h c2sgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKTsKIAogCQkJLyogcmVtZW1iZXIgdG8g Y2xlYXIgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgZmxhZyBsYXRlciAqLwpAQCAtMTE3 Niw3ICsxMTc2LDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9u ZyB0aW1lb3V0LAogCiAJLyogSWYgd2Ugc2V0IHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRT IGZsYWcsIHJlc2V0IGl0IGFnYWluICovCiAJaWYgKHNsZWVwaW5nX2ZsYWdfYXJtZWQpCi0J CXBnX2F0b21pY19mZXRjaF9hbmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oKHVpbnQz MikgMSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSk7CisJCXBnX2F0b21pY19mZXRjaF9h bmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oKHVpbnQzMikgU0xFRVBJTkdfT05fSU5U RVJSVVBUUykpOwogCiAjaWZuZGVmIFdJTjMyCiAJd2FpdGluZyA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCmluZGV4IGVm NzkyMTAzODM1Li4zNWNhY2MwNmI1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtMTYxLDcgKzE2MSw4IEBAIENvbmRpdGlv blZhcmlhYmxlVGltZWRTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91 dCwKIAkJICogV2FpdCBmb3IgaW50ZXJydXB0LiAgKElmIHdlJ3JlIGF3YWtlbmVkIGZvciBz b21lIG90aGVyIHJlYXNvbiwgdGhlCiAJCSAqIGNvZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdh eS4pCiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMLCB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CisJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8IElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCQkJCSB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5m byk7CiAKIAkJLyogQ2xlYXIgdGhlIGZsYWcgYmVmb3JlIGV4YW1pbmluZyB0aGUgc3RhdGUg b2YgdGhlIHdhaXQgbGlzdC4gKi8KIAkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDExYWU0MjFh ZDY4Li41M2I5MGNjMzQ5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUu YwpAQCAtMTU3NywxMCArMTU3NywxMSBAQCBHZXRTYWZlU25hcHNob3QoU25hcHNob3Qgb3Jp Z1NuYXBzaG90KQogCQkJCSBTeGFjdElzUk9VbnNhZmUoTXlTZXJpYWxpemFibGVYYWN0KSkp CiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrKTsKLQkJ CVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCVdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NG SV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgIFdMX0lOVEVSUlVQVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkgIFdBSVRfRVZFTlRfU0FGRV9TTkFQU0hP VCk7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwogCQkJTFdMb2NrQWNxdWlyZShTZXJpYWxpemFibGVYYWN0SGFzaExvY2ssIExXX0VYQ0xV U0lWRSk7CiAJCX0KIAkJTXlTZXJpYWxpemFibGVYYWN0LT5mbGFncyAmPSB+U1hBQ1RfRkxB R19ERUZFUlJBQkxFX1dBSVRJTkc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCAz NGE1MjVhZTYwNy4uNmExNTEzOGQ4ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpA QCAtMTM5Myw3ICsxMzkzLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQog CQkJCQkgKiBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgaGVyZSBoYXMgYWxyZWFkeSB3 YWl0ZWQKIAkJCQkJICogbG9uZ2VyIHRoYW4gZGVhZGxvY2tfdGltZW91dC4KIAkJCQkJICov Ci0JCQkJCUxvZ1JlY292ZXJ5Q29uZmxpY3QoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9M T0NLLAorCQkJCQlMb2dSZWNvdmVyeUNvbmZsaWN0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05G TElDVF9MT0NLLAogCQkJCQkJCQkJCXN0YW5kYnlXYWl0U3RhcnQsIG5vdywKIAkJCQkJCQkJ CQljbnQgPiAwID8gdnhpZHMgOiBOVUxMLCB0cnVlKTsKIAkJCQkJbG9nZ2VkX3JlY292ZXJ5 X2NvbmZsaWN0ID0gdHJ1ZTsKQEAgLTE0MDIsOSArMTQwMiw5IEBAIFByb2NTbGVlcChMT0NB TExPQ0sgKmxvY2FsbG9jaykKIAkJfQogCQllbHNlCiAJCXsKLQkJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsIDAsCisJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJ X01BU0sgfCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxv Y2stPnRhZy5sb2NrLmxvY2t0YWdfdHlwZSk7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiAJCQkvKiBjaGVjayBmb3IgZGVhZGxvY2tzIGZpcnN0LCBhcyB0aGF0 J3MgcHJvYmFibHkgbG9nLXdvcnRoeSAqLwogCQkJaWYgKGdvdF9kZWFkbG9ja190aW1lb3V0 KQogCQkJewpAQCAtMTQxMiw2ICsxNDEyLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9j YWxsb2NrKQogCQkJCWdvdF9kZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7CiAJCQl9CiAJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCQl9CiAKIAkJLyoKQEAgLTE2NTgsNyArMTY1OSw3IEBAIFByb2NTbGVlcChM T0NBTExPQ0sgKmxvY2FsbG9jaykKIAkvKgogCSAqIERpc2FibGUgdGhlIHRpbWVycywgaWYg dGhleSBhcmUgc3RpbGwgcnVubmluZy4gIEFzIGluIExvY2tFcnJvckNsZWFudXAsCiAJICog d2UgbXVzdCBwcmVzZXJ2ZSB0aGUgTE9DS19USU1FT1VUIGluZGljYXRvciBmbGFnOiBpZiBh IGxvY2sgdGltZW91dCBoYXMKLQkgKiBhbHJlYWR5IGNhdXNlZCBRdWVyeUNhbmNlbFBlbmRp bmcgdG8gYmVjb21lIHNldCwgd2Ugd2FudCB0aGUgY2FuY2VsIHRvCisJICogYWxyZWFkeSBy YWlzZWQgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCwgd2Ugd2FudCB0aGUgY2FuY2VsIHRvCiAJ ICogYmUgcmVwb3J0ZWQgYXMgYSBsb2NrIHRpbWVvdXQsIG5vdCBhIHVzZXIgY2FuY2VsLgog CSAqLwogCWlmICghSW5Ib3RTdGFuZGJ5KQpAQCAtMTY4Miw3ICsxNjgzLDcgQEAgUHJvY1Ns ZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCSAqIHN0YXJ0dXAgcHJvY2VzcyB3YWl0ZWQg bG9uZ2VyIHRoYW4gZGVhZGxvY2tfdGltZW91dCBmb3IgaXQuCiAJICovCiAJaWYgKEluSG90 U3RhbmRieSAmJiBsb2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QpCi0JCUxvZ1JlY292ZXJ5Q29u ZmxpY3QoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAorCQlMb2dSZWNvdmVyeUNv bmZsaWN0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0NLLAogCQkJCQkJCXN0YW5k YnlXYWl0U3RhcnQsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQlOVUxMLCBmYWxz ZSk7CiAKQEAgLTE4ODEsMTAgKzE4ODIsNiBAQCBDaGVja0RlYWRMb2NrQWxlcnQodm9pZCkK IAkgKiBkaWQuIEJhY2sgdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNl dC4uLiBJdCdzIHVubGlrZWx5CiAJICogdGhhdCB0aGlzIGV2ZXIgd291bGQgYmUgYSBwcm9i bGVtLCBidXQgcmFpc2luZyBhbiBpbnRlcnJ1cHQgYWdhaW4gaXMKIAkgKiBjaGVhcC4KLQkg KgotCSAqIE5vdGUgdGhhdCwgd2hlbiB0aGlzIGZ1bmN0aW9uIHJ1bnMgaW5zaWRlIHByb2Nz aWduYWxfc2lndXNyMV9oYW5kbGVyKCksCi0JICogdGhlIGhhbmRsZXIgZnVuY3Rpb24gcmFp c2VzIHRoZSBpbnRlcnJ1cHQgYWdhaW4gYWZ0ZXIgdGhlIGludGVycnVwdCBpcwotCSAqIHJh aXNlZCBoZXJlLgogCSAqLwogCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAllcnJubyA9IHNhdmVfZXJybm87CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOWE4ZGI1NzE5 NWUuLmU5NDNhODQxNjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC02Nyw2ICs2Nyw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnkuaCIKICNpbmNsdWRlICJ0Y29wL2Zhc3RwYXRoLmgiCiAjaW5jbHVkZSAidGNv cC9wcXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0xNTQsMTAgKzE1 NSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICp1c2VyRG9wdGlvbiA9IE5VTEw7CS8qIC1EIHN3 aXRjaCAqLwogc3RhdGljIGJvb2wgRWNob1F1ZXJ5ID0gZmFsc2U7CS8qIC1FIHN3aXRjaCAq Lwogc3RhdGljIGJvb2wgVXNlU2VtaU5ld2xpbmVOZXdsaW5lID0gZmFsc2U7CS8qIC1qIHN3 aXRjaCAqLwogCi0vKiB3aGV0aGVyIG9yIG5vdCwgYW5kIHdoeSwgd2Ugd2VyZSBjYW5jZWxl ZCBieSBjb25mbGljdCB3aXRoIHJlY292ZXJ5ICovCi1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0 b21pY190IFJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gZmFsc2U7Ci1zdGF0aWMgdm9sYXRp bGUgc2lnX2F0b21pY190IFJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tOVU1fUFJP Q1NJR05BTFNdOwotCiAvKiByZXVzZWQgYnVmZmVyIHRvIHBhc3MgdG8gU2VuZFJvd0Rlc2Ny aXB0aW9uTWVzc2FnZSgpICovCiBzdGF0aWMgTWVtb3J5Q29udGV4dCByb3dfZGVzY3JpcHRp b25fY29udGV4dCA9IE5VTEw7CiBzdGF0aWMgU3RyaW5nSW5mb0RhdGEgcm93X2Rlc2NyaXB0 aW9uX2J1ZjsKQEAgLTQ5Niw0MiArNDkzLDY0IEBAIFJlYWRDb21tYW5kKFN0cmluZ0luZm8g aW5CdWYpCiAgKiBmYWxzZSBpZiBhYm91dCB0byByZWFkIG9yIGRvbmUgcmVhZGluZy4KICAq CiAgKiBNdXN0IHByZXNlcnZlIGVycm5vIQorICoKKyAqIFJldHVybnMgaW50ZXJydXB0IG1h c2sgdG8gdXNlIGZvciB3YWl0aW5nCiAgKi8KLXZvaWQKK3VpbnQzMgogUHJvY2Vzc0NsaWVu dFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogewogCWludAkJCXNhdmVfZXJybm8gPSBl cnJubzsKKwl1aW50MzIJCWludGVycnVwdE1hc2sgPSAwOwogCiAJaWYgKERvaW5nQ29tbWFu ZFJlYWQpCiAJewogCQkvKiBDaGVjayBmb3IgZ2VuZXJhbCBpbnRlcnJ1cHRzIHRoYXQgYXJy aXZlZCBiZWZvcmUvd2hpbGUgcmVhZGluZyAqLworCQlpbnRlcnJ1cHRNYXNrIHw9IElOVEVS UlVQVF9DRklfTUFTSzsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiBQcm9j ZXNzIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdHMsIGlmIGFueSAqLwotCQlpZiAoY2F0Y2h1 cEludGVycnVwdFBlbmRpbmcpCisJCWludGVycnVwdE1hc2sgfD0gSU5URVJSVVBUX1NJTlZB TF9DQVRDSFVQOworCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0lOVkFMX0NB VENIVVApKQogCQkJUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQoKTsKIAotCQkvKiBQcm9jZXNz IG5vdGlmeSBpbnRlcnJ1cHRzLCBpZiBhbnkgKi8KLQkJaWYgKG5vdGlmeUludGVycnVwdFBl bmRpbmcpCi0JCQlQcm9jZXNzTm90aWZ5SW50ZXJydXB0KHRydWUpOwotCX0KLQllbHNlIGlm IChQcm9jRGllUGVuZGluZykKLQl7CiAJCS8qCi0JCSAqIFdlJ3JlIGR5aW5nLiAgSWYgdGhl cmUgaXMgbm8gZGF0YSBhdmFpbGFibGUgdG8gcmVhZCwgdGhlbiBpdCdzIHNhZmUKLQkJICog KGFuZCBzYW5lKSB0byBoYW5kbGUgdGhhdCBub3cuICBJZiB3ZSBoYXZlbid0IHRyaWVkIHRv IHJlYWQgeWV0LAotCQkgKiBtYWtlIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlzIHNldCwg c28gdGhhdCBpZiB0aGVyZSBpcyBubyBkYXRhCi0JCSAqIHRoZW4gd2UnbGwgY29tZSBiYWNr IGhlcmUgYW5kIGRpZS4gIElmIHdlJ3JlIGRvbmUgcmVhZGluZywgYWxzbwotCQkgKiBtYWtl IHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlzIHNldCwgYXMgd2UgbWlnaHQndmUgdW5kZXNp cmFibHkKLQkJICogY2xlYXJlZCBpdCB3aGlsZSByZWFkaW5nLgorCQkgKiBJZiB3ZSBhcmUg dHJ1bHkgaWRsZSwgaWUuICpub3QqIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIG1hdGNo aW5nCisJCSAqIHRoZSBjb25kaXRpb25zIGluIFBvc3RncmVzTWFpbigpLCB0aGVyZSBhcmUg YSBmZXcgaW50ZXJydXB0cyB0aGluZ3MKKwkJICogdGhhdCB3ZSBwcm9jZXNzIGltbWVkaWF0 ZWx5LgogCQkgKi8KLQkJaWYgKGJsb2NrZWQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwotCQllbHNlCi0JCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJCWlm ICghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlpbnRlcnJ1 cHRNYXNrIHw9IElOVEVSUlVQVF9BU1lOQ19OT1RJRlk7CisJCQlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfQVNZTkNfTk9USUZZKSkKKwkJCQlQcm9jZXNzTm90aWZ5SW50ZXJy dXB0KHRydWUpOworCisJCQlpbnRlcnJ1cHRNYXNrIHw9IElOVEVSUlVQVF9JRExFX1NUQVRT X1RJTUVPVVQ7CisJCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfSURMRV9TVEFU U19USU1FT1VUKSkKKwkJCXsKKwkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfSURMRV9T VEFUU19USU1FT1VUKTsKKwkJCQlwZ3N0YXRfcmVwb3J0X3N0YXQodHJ1ZSk7CisJCQl9CisJ CX0KKwl9CisJZWxzZQorCXsKKwkJaW50ZXJydXB0TWFzayB8PSBJTlRFUlJVUFRfRElFOwor CQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfRElFKSkKKwkJeworCQkJLyoKKwkJ CSAqIFdlJ3JlIGR5aW5nLiAgSWYgdGhlcmUgaXMgbm8gZGF0YSBhdmFpbGFibGUgdG8gcmVh ZCwgdGhlbiBpdCdzIHNhZmUKKwkJCSAqIChhbmQgc2FuZSkgdG8gaGFuZGxlIHRoYXQgbm93 LiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byByZWFkIHlldCwKKwkJCSAqIGRvbid0IGNsZWFy IHRoZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlcmUgaXMgbm8gZGF0 YQorCQkJICogdGhlbiB3ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLgorCQkJICovCisJ CQlpZiAoYmxvY2tlZCkKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CiAJfQog CiAJZXJybm8gPSBzYXZlX2Vycm5vOworCisJcmV0dXJuIGludGVycnVwdE1hc2s7CiB9CiAK IC8qCkBAIC01NDMsMTIgKzU2MiwxMiBAQCBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChi b29sIGJsb2NrZWQpCiAgKgogICogTXVzdCBwcmVzZXJ2ZSBlcnJubyEKICAqLwotdm9pZAor dWludDMyCiBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogewog CWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKIAotCWlmIChQcm9jRGllUGVuZGluZykKKwlp ZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfRElFKSkKIAl7CiAJCS8qCiAJCSAqIFdl J3JlIGR5aW5nLiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gd3JpdGUsIHRoZW4gd2Ugc2hv dWxkIGhhbmRsZQpAQCAtNTc5LDExICs1OTgsMTEgQEAgUHJvY2Vzc0NsaWVudFdyaXRlSW50 ZXJydXB0KGJvb2wgYmxvY2tlZCkKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJ fQogCQl9Ci0JCWVsc2UKLQkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAl9CiAKIAllcnJubyA9IHNhdmVfZXJybm87CisKKwlyZXR1cm4gSU5URVJSVVBUX0RJRTsK IH0KIAogLyoKQEAgLTI1MjgsMjkgKzI1NDcsMjkgQEAgZXJyZGV0YWlsX2Fib3J0KHZvaWQp CiAgKiBBZGQgYW4gZXJyZGV0YWlsKCkgbGluZSBzaG93aW5nIGNvbmZsaWN0IHNvdXJjZS4K ICAqLwogc3RhdGljIGludAotZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KFByb2NTaWdu YWxSZWFzb24gcmVhc29uKQorZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KEludGVycnVw dFR5cGUgcmVhc29uKQogewogCXN3aXRjaCAocmVhc29uKQogCXsKLQkJY2FzZSBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZF UllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyBob2xkaW5n IHNoYXJlZCBidWZmZXIgcGluIGZvciB0b28gbG9uZy4iKTsKIAkJCWJyZWFrOwotCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKKwkJY2FzZSBJTlRFUlJVUFRfUkVD T1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB3YXMgaG9sZGluZyBh IHJlbGF0aW9uIGxvY2sgZm9yIHRvbyBsb25nLiIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgorCQljYXNlIElOVEVSUlVQVF9S RUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyBv ciBtaWdodCBoYXZlIGJlZW4gdXNpbmcgdGFibGVzcGFjZSB0aGF0IG11c3QgYmUgZHJvcHBl ZC4iKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05B UFNIT1Q6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgog CQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cg dmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKLQkJY2FzZSBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQljYXNlIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKIAkJCWVycmRldGFpbCgiVXNlciB3 YXMgdXNpbmcgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgdGhhdCBtdXN0IGJlIGludmFs aWRhdGVkLiIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TVEFSVFVQX0RFQURMT0NLOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElD VF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNh dXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwotCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNhc2UgSU5URVJS VVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFOgogCQkJZXJyZGV0YWlsKCJVc2VyIHdh cyBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKIAkJ CWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMzAwNSwxNyArMzAyNCwxMSBAQCBkaWUoU0lHTkFM X0FSR1MpCiB7CiAJLyogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBwcm9jX2V4aXQgKi8K IAlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQotCXsKLQkJSW50ZXJydXB0UGVuZGluZyA9 IHRydWU7Ci0JCVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKLQl9CisJCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9ESUUpOwogCiAJLyogZm9yIHRoZSBjdW11bGF0aXZlIHN0YXRzIHN5c3Rl bSAqLwogCXBnU3RhdFNlc3Npb25FbmRDYXVzZSA9IERJU0NPTk5FQ1RfS0lMTEVEOwogCi0J LyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0aGUg aW50ZXJydXB0ICovCi0JUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwotCiAJ LyoKIAkgKiBJZiB3ZSdyZSBpbiBzaW5nbGUgdXNlciBtb2RlLCB3ZSB3YW50IHRvIHF1aXQg aW1tZWRpYXRlbHkgLSB3ZSBjYW4ndAogCSAqIHJlbHkgb24gaW50ZXJydXB0cyBhcyB0aGV5 IHdvdWxkbid0IHdvcmsgd2hlbiBzdGRpbi9zdGRvdXQgaXMgYSBmaWxlLgpAQCAtMzAzMywx NyArMzA0Niw3IEBAIGRpZShTSUdOQUxfQVJHUykKIHZvaWQKIFN0YXRlbWVudENhbmNlbEhh bmRsZXIoU0lHTkFMX0FSR1MpCiB7Ci0JLyoKLQkgKiBEb24ndCBqb2dnbGUgdGhlIGVsYm93 IG9mIHByb2NfZXhpdAotCSAqLwotCWlmICghcHJvY19leGl0X2lucHJvZ3Jlc3MpCi0Jewot CQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1 ZTsKLQl9Ci0KLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGluZyB3YWl0 aW5nIG9uIHRoZSBpbnRlcnJ1cHQgKi8KLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiB9CiAK IC8qIHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGluZyBwb2ludCBleGNlcHRpb24gKi8KQEAg LTMwNjAsMjcgKzMwNjMsMTQgQEAgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05BTF9BUkdT KQogfQogCiAvKgotICogVGVsbCB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRv IGNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZgotICogcmVjb3ZlcnkgY29uZmxpY3Qu ICBSdW5zIGluIGEgU0lHVVNSMSBoYW5kbGVyLgotICovCi12b2lkCi1IYW5kbGVSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQotewotCVJlY292 ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFzb25dID0gdHJ1ZTsKLQlSZWNvdmVyeUNv bmZsaWN0UGVuZGluZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JLyog SU5URVJSVVBUX0dFTkVSQUwgd2lsbCBiZSByYWlzZWQgYnkgcHJvY3NpZ25hbF9zaWd1c3Ix X2hhbmRsZXIgKi8KLX0KLQotLyoKLSAqIENoZWNrIG9uZSBpbmRpdmlkdWFsIGNvbmZsaWN0 IHJlYXNvbi4KKyAqIFByb2Nlc3Mgb25lIGluZGl2aWR1YWwgY29uZmxpY3QgcmVhc29uLgog ICovCiBzdGF0aWMgdm9pZAotUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJv Y1NpZ25hbFJlYXNvbiByZWFzb24pCitQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVw dChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKIAlzd2l0Y2ggKHJlYXNvbikKIAl7Ci0JCWNh c2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgorCQljYXNl IElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCiAJCQkv KgogCQkJICogSWYgd2UgYXJlbid0IHdhaXRpbmcgZm9yIGEgbG9jayB3ZSBjYW4gbmV2ZXIg ZGVhZGxvY2suCkBAIC0zMDkxLDIxICszMDgxLDIxIEBAIFByb2Nlc3NSZWNvdmVyeUNvbmZs aWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJLyogSW50ZW50aW9u YWwgZmFsbCB0aHJvdWdoIHRvIGNoZWNrIHdhaXQgZm9yIHBpbiAqLwogCQkJLyogRkFMTFRI Uk9VR0ggKi8KIAotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElO OgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAKIAkJ CS8qCi0JCQkgKiBJZiBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiBpcyBy ZXF1ZXN0ZWQgYnV0IHdlCisJCQkgKiBJZiBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf QlVGRkVSUElOIGlzIHJlcXVlc3RlZCBidXQgd2UKIAkJCSAqIGFyZW4ndCBibG9ja2luZyB0 aGUgU3RhcnR1cCBwcm9jZXNzIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0bwogCQkJICogZG8u CiAJCQkgKgotCQkJICogV2hlbiBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBf REVBRExPQ0sgaXMgcmVxdWVzdGVkLAorCQkJICogV2hlbiBJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyBpcyByZXF1ZXN0ZWQsCiAJCQkgKiBpZiB3ZSdy ZSB3YWl0aW5nIGZvciBsb2NrcyBhbmQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBpcyBub3QKIAkJ CSAqIHdhaXRpbmcgZm9yIGJ1ZmZlciBwaW4gKGkuZS4sIGFsc28gd2FpdGluZyBmb3IgbG9j a3MpLCB3ZSBzZXQKIAkJCSAqIHRoZSBmbGFnIHNvIHRoYXQgUHJvY1NsZWVwKCkgd2lsbCBj aGVjayBmb3IgZGVhZGxvY2tzLgogCQkJICovCiAJCQlpZiAoIUhvbGRpbmdCdWZmZXJQaW5U aGF0RGVsYXlzUmVjb3ZlcnkoKSkKIAkJCXsKLQkJCQlpZiAocmVhc29uID09IFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyAmJgorCQkJCWlmIChyZWFzb24g PT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0sgJiYKIAkJ CQkJR2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCgpIDwgMCkKIAkJCQkJQ2hlY2tEZWFk TG9ja0FsZXJ0KCk7CiAJCQkJcmV0dXJuOwpAQCAtMzExNiw5ICszMTA2LDkgQEAgUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJ CQkvKiBJbnRlbnRpb25hbCBmYWxsIHRocm91Z2ggdG8gZXJyb3IgaGFuZGxpbmcgKi8KIAkJ CS8qIEZBTExUSFJPVUdIICovCiAKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPQ0s6Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgot CQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CisJCWNhc2UgSU5U RVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UOgogCiAJCQkvKgogCQkJICogSWYgd2UgYXJlbid0IGluIGEgdHJh bnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KQEAgLTMxMjgsMTQgKzMxMTgsMTQg QEAgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24pCiAKIAkJCS8qIEZBTExUSFJPVUdIICovCiAKLQkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9MT0dJQ0FMU0xPVDoKIAogCQkJLyoKIAkJCSAqIElmIHdlJ3JlIG5vdCBpbiBh IHN1YnRyYW5zYWN0aW9uIHRoZW4gd2UgYXJlIE9LIHRvIHRocm93IGFuCiAJCQkgKiBFUlJP UiB0byByZXNvbHZlIHRoZSBjb25mbGljdC4gIE90aGVyd2lzZSBkcm9wIHRocm91Z2ggdG8g dGhlCiAJCQkgKiBGQVRBTCBjYXNlLgogCQkJICoKLQkJCSAqIFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfTE9HSUNBTFNMT1QgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdAorCQkJICogUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdAogCQkJ ICogYWx3YXlzIHRocm93cyBhbiBFUlJPUiAoaWUgbmV2ZXIgcHJvbW90ZXMgdG8gRkFUQUwp LCB0aG91Z2ggaXQKIAkJCSAqIHN0aWxsIGhhcyB0byByZXNwZWN0IFF1ZXJ5Q2FuY2VsSG9s ZG9mZkNvdW50LCBzbyBpdCBzaGFyZXMgdGhpcwogCQkJICogY29kZSBwYXRoLiAgTG9naWNh bCBkZWNvZGluZyBzbG90cyBhcmUgb25seSBhY3F1aXJlZCB3aGlsZQpAQCAtMzE0NSwxNyAr MzEzNSwxNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9jU2lnbmFs UmVhc29uIHJlYXNvbikKIAkJCSAqIGludGVyY2VwdCBhbiBlcnJvciBiZWZvcmUgdGhlIHJl cGxpY2F0aW9uIHNsb3QgaXMgcmVsZWFzZWQuCiAJCQkgKgogCQkJICogWFhYIG90aGVyIHRp bWVzIHRoYXQgd2UgY2FuIHRocm93IGp1c3QgYW4gRVJST1IgKm1heSogYmUKLQkJCSAqIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSyBpZiBubyBsb2NrcyBhcmUgaGVsZCBpbiBw YXJlbnQKKwkJCSAqIFJFQ09WRVJZX0NPTkZMSUNUX0xPQ0sgaWYgbm8gbG9ja3MgYXJlIGhl bGQgaW4gcGFyZW50CiAJCQkgKiB0cmFuc2FjdGlvbnMKIAkJCSAqCi0JCQkgKiBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UIGlmIG5vIHNuYXBzaG90cyBhcmUgaGVsZCBi eQorCQkJICogUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QgaWYgbm8gc25hcHNob3RzIGFy ZSBoZWxkIGJ5CiAJCQkgKiBwYXJlbnQgdHJhbnNhY3Rpb25zIGFuZCB0aGUgdHJhbnNhY3Rp b24gaXMgbm90CiAJCQkgKiB0cmFuc2FjdGlvbi1zbmFwc2hvdCBtb2RlCiAJCQkgKgotCQkJ ICogUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFIGlmIG5vIHRlbXAgZmls ZXMgb3IKKwkJCSAqIFJFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UgaWYgbm8gdGVtcCBm aWxlcyBvcgogCQkJICogY3Vyc29ycyBvcGVuIGluIHBhcmVudCB0cmFuc2FjdGlvbnMKIAkJ CSAqLwotCQkJaWYgKHJlYXNvbiA9PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lD QUxTTE9UIHx8CisJCQlpZiAocmVhc29uID09IElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVCB8fAogCQkJCSFJc1N1YlRyYW5zYWN0aW9uKCkpCiAJCQl7CiAJCQkJ LyoKQEAgLTMxNzksMTIgKzMxNjksMTAgQEAgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRl cnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQkJCWlmIChRdWVyeUNhbmNlbEhv bGRvZmZDb3VudCAhPSAwKQogCQkJCQl7CiAJCQkJCQkvKgotCQkJCQkJICogUmUtYXJtIGFu ZCBkZWZlciB0aGlzIGludGVycnVwdCB1bnRpbCBsYXRlci4gIFNlZQotCQkJCQkJICogc2lt aWxhciBjb2RlIGluIFByb2Nlc3NJbnRlcnJ1cHRzKCkuCisJCQkJCQkgKiBMZWF2ZSB0aGUg aW50ZXJydXB0IHNldCB0byBkZWZlciB0aGlzIGludGVycnVwdAorCQkJCQkJICogdW50aWwg bGF0ZXIuICBTZWUgc2ltaWxhciBjb2RlIGluCisJCQkJCQkgKiBQcm9jZXNzSW50ZXJydXB0 cygpLgogCQkJCQkJICovCi0JCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZ1JlYXNvbnNb cmVhc29uXSA9IHRydWU7Ci0JCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7 Ci0JCQkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAkJCQkJCXJldHVybjsKIAkJCQkJ fQogCkBAIC0zMjA3LDcgKzMxOTUsNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVy cnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCS8qIEludGVudGlvbmFsIGZhbGwg dGhyb3VnaCB0byBzZXNzaW9uIGNhbmNlbCAqLwogCQkJLyogRkFMTFRIUk9VR0ggKi8KIAot CQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNhc2UgSU5U RVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFOgogCiAJCQkvKgogCQkJICogUmV0 cnlpbmcgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGlzIGRyb3BwZWQs IG9yIHdlCkBAIC0zMjE2LDcgKzMyMDQsNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdElu dGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCSAqLwogCQkJcGdzdGF0X3Jl cG9ydF9yZWNvdmVyeV9jb25mbGljdChyZWFzb24pOwogCQkJZXJlcG9ydChGQVRBTCwKLQkJ CQkJKGVycmNvZGUocmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJB U0UgPworCQkJCQkoZXJyY29kZShyZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZM SUNUX0RBVEFCQVNFID8KIAkJCQkJCQkgRVJSQ09ERV9EQVRBQkFTRV9EUk9QUEVEIDoKIAkJ CQkJCQkgRVJSQ09ERV9UX1JfU0VSSUFMSVpBVElPTl9GQUlMVVJFKSwKIAkJCQkJIGVycm1z ZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gY29uZmxpY3Qgd2l0aCByZWNvdmVy eSIpLApAQCAtMzIzMCw2MCArMzIxOCwzNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdElu dGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAl9CiB9CiAKLS8qCi0gKiBDaGVj ayBlYWNoIHBvc3NpYmxlIHJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbi4KLSAqLwotc3RhdGlj IHZvaWQKLVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0cyh2b2lkKQotewotCS8q Ci0JICogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBqb2dnbGluZyB0aGUgZWxib3cg b2YgcHJvY19leGl0LCBiZWNhdXNlCi0JICogcHJvY19leGl0X3ByZXBhcmUoKSBob2xkcyBp bnRlcnJ1cHRzLCBzbyBQcm9jZXNzSW50ZXJydXB0cygpIHdvbid0IGNhbGwKLQkgKiB1cy4K LQkgKi8KLQlBc3NlcnQoIXByb2NfZXhpdF9pbnByb2dyZXNzKTsKLQlBc3NlcnQoSW50ZXJy dXB0SG9sZG9mZkNvdW50ID09IDApOwotCUFzc2VydChSZWNvdmVyeUNvbmZsaWN0UGVuZGlu Zyk7Ci0KLQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IGZhbHNlOwotCi0JZm9yIChQcm9j U2lnbmFsUmVhc29uIHJlYXNvbiA9IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfRklSU1Q7 Ci0JCSByZWFzb24gPD0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MQVNUOwotCQkgcmVh c29uKyspCi0JewotCQlpZiAoUmVjb3ZlcnlDb25mbGljdFBlbmRpbmdSZWFzb25zW3JlYXNv bl0pCi0JCXsKLQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFzb25dID0g ZmFsc2U7Ci0JCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChyZWFzb24pOwot CQl9Ci0JfQotfQotCiAvKgogICogUHJvY2Vzc0ludGVycnVwdHM6IG91dC1vZi1saW5lIHBv cnRpb24gb2YgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBtYWNybwogICoKICAqIElmIGFuIGlu dGVycnVwdCBjb25kaXRpb24gaXMgcGVuZGluZywgYW5kIGl0J3Mgc2FmZSB0byBzZXJ2aWNl IGl0LAogICogdGhlbiBjbGVhciB0aGUgZmxhZyBhbmQgYWNjZXB0IHRoZSBpbnRlcnJ1cHQu ICBDYWxsZWQgb25seSB3aGVuCi0gKiBJbnRlcnJ1cHRQZW5kaW5nIGlzIHRydWUuCisgKiBJ TlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKENoZWNrRm9ySW50ZXJydXB0c01hc2spIGlz IHRydWUuCiAgKgotICogTm90ZTogaWYgSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkg aXMgdHJ1ZSwgdGhlbiBQcm9jZXNzSW50ZXJydXB0cwotICogaXMgZ3VhcmFudGVlZCB0byBj bGVhciB0aGUgSW50ZXJydXB0UGVuZGluZyBmbGFnIGJlZm9yZSByZXR1cm5pbmcuCi0gKiAo VGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgZ3VhcmFudGVlaW5nIHRoYXQgaXQncyBzdGlsbCBj bGVhciB3aGVuIHdlCi0gKiByZXR1cm47IGFub3RoZXIgaW50ZXJydXB0IGNvdWxkIGhhdmUg YXJyaXZlZC4gIEJ1dCB3ZSBwcm9taXNlIHRoYXQKKyAqIE5vdGU6IGlmIElOVEVSUlVQVFNf Q0FOX0JFX1BST0NFU1NFRCgpIGlzIHRydWUsIHRoZW4gUHJvY2Vzc0ludGVycnVwdHMgaXMK KyAqIGd1YXJhbnRlZWQgdG8gY2xlYXIgdGhlIGludGVycnVwdCBiaXRzIGluIENoZWNrRm9y SW50ZXJydXB0c01hc2sgYmVmb3JlCisgKiByZXR1cm5pbmcuICAoVGhpcyBpcyBub3QgdGhl IHNhbWUgYXMgZ3VhcmFudGVlaW5nIHRoYXQgaXQncyBzdGlsbCBjbGVhcgorICogd2hlbiB3 ZSByZXR1cm47IGFub3RoZXIgaW50ZXJydXB0IGNvdWxkIGhhdmUgYXJyaXZlZC4gIEJ1dCB3 ZSBwcm9taXNlIHRoYXQKICAqIGFueSBwcmUtZXhpc3Rpbmcgb25lIHdpbGwgaGF2ZSBiZWVu IHNlcnZpY2VkLikKICAqLwogdm9pZAogUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIHsKIAkv KiBPSyB0byBhY2NlcHQgYW55IGludGVycnVwdHMgbm93PyAqLwotCWlmIChJbnRlcnJ1cHRI b2xkb2ZmQ291bnQgIT0gMCB8fCBDcml0U2VjdGlvbkNvdW50ICE9IDApCi0JCXJldHVybjsK LQlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7CisJQXNzZXJ0IChJbnRlcnJ1cHRIb2xkb2Zm Q291bnQgPT0gMCk7CisJQXNzZXJ0IChDcml0U2VjdGlvbkNvdW50ID09IDApOworCisJLyoK KwkgKiBUT0RPOiBpdCdkIGJlIGdvb2QgZm9yIHBlcmZvcm1hbmNlIHRvIHJlYWQgdGhlIGF0 b21pYworCSAqIE15UGVuZGluZ0ludGVycnVwdHMgdmFyaWFibGUganVzdCBvbmNlIGluIHRo aXMgZnVuY3Rpb24KKwkgKi8KKworCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9X QUxTTkRfSU5JVF9TVE9QUElORykpCisJCVByb2Nlc3NXYWxTbmRJbml0U3RvcHBpbmcoKTsK IAotCWlmIChQcm9jRGllUGVuZGluZykKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJV UFRfRElFKSkKIAl7Ci0JCVByb2NEaWVQZW5kaW5nID0gZmFsc2U7Ci0JCVF1ZXJ5Q2FuY2Vs UGVuZGluZyA9IGZhbHNlOyAvKiBQcm9jRGllIHRydW1wcyBRdWVyeUNhbmNlbCAqLworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsgLyogUHJvY0RpZSB0cnVt cHMgUXVlcnlDYW5jZWwgKi8KIAkJTG9ja0Vycm9yQ2xlYW51cCgpOwogCQkvKiBBcyBpbiBx dWlja2RpZSwgZG9uJ3QgcmlzayBzZW5kaW5nIHRvIGNsaWVudCBkdXJpbmcgYXV0aCAqLwog CQlpZiAoQ2xpZW50QXV0aEluUHJvZ3Jlc3MgJiYgd2hlcmVUb1NlbmRPdXRwdXQgPT0gRGVz dFJlbW90ZSkKQEAgLTMzMjIsMTAgKzMyODcsOCBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lk KQogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBhZG1pbmlz dHJhdG9yIGNvbW1hbmQiKSkpOwogCX0KIAotCWlmIChDaGVja0NsaWVudENvbm5lY3Rpb25Q ZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DTElFTlRfQ0hFQ0tf VElNRU9VVCkpCiAJewotCQlDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nID0gZmFsc2U7 Ci0KIAkJLyoKIAkJICogQ2hlY2sgZm9yIGxvc3QgY29ubmVjdGlvbiBhbmQgcmUtYXJtLCBp ZiBzdGlsbCBjb25maWd1cmVkLCBidXQgbm90CiAJCSAqIGlmIHdlJ3ZlIGFycml2ZWQgYmFj ayBhdCBEb2luZ0NvbW1hbmRSZWFkIHN0YXRlLiAgV2UgZG9uJ3Qgd2FudCB0bwpAQCAtMzMz NSwxNiArMzI5OCwxNiBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQlpZiAoIURvaW5n Q29tbWFuZFJlYWQgJiYgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwgPiAwKQog CQl7CiAJCQlpZiAoIXBxX2NoZWNrX2Nvbm5lY3Rpb24oKSkKLQkJCQlDbGllbnRDb25uZWN0 aW9uTG9zdCA9IHRydWU7CisJCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVOVF9D T05ORUNUSU9OX0xPU1QpOwogCQkJZWxzZQogCQkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKENM SUVOVF9DT05ORUNUSU9OX0NIRUNLX1RJTUVPVVQsCiAJCQkJCQkJCQkgY2xpZW50X2Nvbm5l Y3Rpb25fY2hlY2tfaW50ZXJ2YWwpOwogCQl9CiAJfQogCi0JaWYgKENsaWVudENvbm5lY3Rp b25Mb3N0KQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9DTElFTlRfQ09OTkVD VElPTl9MT1NUKSkKIAl7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOyAvKiBsb3N0 IGNvbm5lY3Rpb24gdHJ1bXBzIFF1ZXJ5Q2FuY2VsICovCisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9RVUVSWV9DQU5DRUwpOyAvKiBsb3N0IGNvbm5lY3Rpb24gdHJ1bXBzIFF1ZXJ5 Q2FuY2VsICovCiAJCUxvY2tFcnJvckNsZWFudXAoKTsKIAkJLyogZG9uJ3Qgc2VuZCB0byBj bGllbnQsIHdlIGFscmVhZHkga25vdyB0aGUgY29ubmVjdGlvbiB0byBiZSBkZWFkLiAqLwog CQl3aGVyZVRvU2VuZE91dHB1dCA9IERlc3ROb25lOwpAQCAtMzM2MSwyNSArMzMyNCwxOCBA QCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCSAqCiAJICogU2VlIHNpbWlsYXIgbG9naWMg aW4gUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKCkuCiAJICovCi0JaWYgKFF1 ZXJ5Q2FuY2VsUGVuZGluZyAmJiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCAhPSAwKQorCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpICYmIFF1ZXJ5Q2Fu Y2VsSG9sZG9mZkNvdW50ICE9IDApCiAJewogCQkvKgotCQkgKiBSZS1hcm0gSW50ZXJydXB0 UGVuZGluZyBzbyB0aGF0IHdlIHByb2Nlc3MgdGhlIGNhbmNlbCByZXF1ZXN0IGFzCi0JCSAq IHNvb24gYXMgd2UncmUgZG9uZSByZWFkaW5nIHRoZSBtZXNzYWdlLiAgKFhYWCB0aGlzIGlz IHNlcmlvdXNseQotCQkgKiB1Z2x5OiBpdCBjb21wbGljYXRlcyBJTlRFUlJVUFRTX0NBTl9C RV9QUk9DRVNTRUQoKSwgYW5kIGl0IG1lYW5zIHdlCi0JCSAqIGNhbid0IHVzZSB0aGF0IG1h Y3JvIGRpcmVjdGx5IGFzIHRoZSBpbml0aWFsIHRlc3QgaW4gdGhpcyBmdW5jdGlvbiwKLQkJ ICogbWVhbmluZyB0aGF0IHRoaXMgY29kZSBhbHNvIGNyZWF0ZXMgb3Bwb3J0dW5pdGllcyBm b3Igb3RoZXIgYnVncyB0bwotCQkgKiBhcHBlYXIuKQorCQkgKiBMZWF2ZSB0aGUgaW50ZXJy dXB0IHNldCBzbyB0aGF0IHdlIHByb2Nlc3MgdGhlIGNhbmNlbCByZXF1ZXN0IGFzCisJCSAq IHNvb24gYXMgd2UncmUgZG9uZSByZWFkaW5nIHRoZSBtZXNzYWdlLgogCQkgKi8KLQkJSW50 ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJfQotCWVsc2UgaWYgKFF1ZXJ5Q2FuY2VsUGVuZGlu ZykKKwllbHNlIGlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwp KQogCXsKIAkJYm9vbAkJbG9ja190aW1lb3V0X29jY3VycmVkOwogCQlib29sCQlzdG10X3Rp bWVvdXRfb2NjdXJyZWQ7CiAKLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7Ci0KIAkJ LyoKIAkJICogSWYgTE9DS19USU1FT1VUIGFuZCBTVEFURU1FTlRfVElNRU9VVCBpbmRpY2F0 b3JzIGFyZSBib3RoIHNldCwgd2UKIAkJICogbmVlZCB0byBjbGVhciBib3RoLCBzbyBhbHdh eXMgZmV0Y2ggYm90aC4KQEAgLTM0MzMsMTAgKzMzODksMjggQEAgUHJvY2Vzc0ludGVycnVw dHModm9pZCkKIAkJfQogCX0KIAotCWlmIChSZWNvdmVyeUNvbmZsaWN0UGVuZGluZykKLQkJ UHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKCk7CisJaWYgKENvbnN1bWVJbnRl cnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKKwkJUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNU X0RBVEFCQVNFKTsKKworCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVS WV9DT05GTElDVF9UQUJMRVNQQUNFKSkKKwkJUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRl cnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UpOworCisJaWYg KENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0spKQor CQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1RfTE9DSyk7CisKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfUkVD T1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QpKQorCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdElu dGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QpOwogCi0JaWYg KElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nKQorCWlmIChDb25zdW1l SW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJ CVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9MT0dJQ0FMU0xPVCk7CisKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKSkKKwkJUHJvY2Vzc1JlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7 CisKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSykpCisJCVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0 KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLKTsKKworCWlm IChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJ T05fVElNRU9VVCkpCiAJewogCQkvKgogCQkgKiBJZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0 IHRvIHplcm8sIGlnbm9yZSB0aGUgc2lnbmFsLiAgVGhpcyBpcwpAQCAtMzQ0NCw3ICszNDE4 LDYgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJICogaW50ZXJydXB0LiAgV2UgbmVl ZCB0byB1bnNldCB0aGUgZmxhZyBiZWZvcmUgdGhlIGluamVjdGlvbiBwb2ludCwKIAkJICog b3RoZXJ3aXNlIHdlIGNvdWxkIGxvb3AgaW4gaW50ZXJydXB0cyBjaGVja2luZy4KIAkJICov Ci0JCUlkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiAJ CWlmIChJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0ID4gMCkKIAkJewogCQkJSU5K RUNUSU9OX1BPSU5UKCJpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91dCIpOwpA QCAtMzQ1NCwxMCArMzQyNyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJCX0KIAl9 CiAKLQlpZiAoVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZykKKwlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfVFJBTlNBQ1RJT05fVElNRU9VVCkpCiAJewogCQkvKiBBcyBhYm92 ZSwgaWdub3JlIHRoZSBzaWduYWwgaWYgdGhlIEdVQyBoYXMgYmVlbiByZXNldCB0byB6ZXJv LiAqLwotCQlUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7CiAJCWlmIChUcmFu c2FjdGlvblRpbWVvdXQgPiAwKQogCQl7CiAJCQlJTkpFQ1RJT05fUE9JTlQoInRyYW5zYWN0 aW9uLXRpbWVvdXQiKTsKQEAgLTM0NjcsMTAgKzM0MzksOSBAQCBQcm9jZXNzSW50ZXJydXB0 cyh2b2lkKQogCQl9CiAJfQogCi0JaWYgKElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcpCisJ aWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU0VTU0lPTl9USU1FT1VUKSkK IAl7CiAJCS8qIEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0aGUgR1VDIGhhcyBi ZWVuIHJlc2V0IHRvIHplcm8uICovCi0JCUlkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBm YWxzZTsKIAkJaWYgKElkbGVTZXNzaW9uVGltZW91dCA+IDApCiAJCXsKIAkJCUlOSkVDVElP Tl9QT0lOVCgiaWRsZS1zZXNzaW9uLXRpbWVvdXQiKTsKQEAgLTM0ODAsMjggKzM0NTEsMTcg QEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJfQogCX0KIAotCS8qCi0JICogSWYgdGhl cmUgYXJlIHBlbmRpbmcgc3RhdHMgdXBkYXRlcyBhbmQgd2UgY3VycmVudGx5IGFyZSB0cnVs eSBpZGxlCi0JICogKG1hdGNoaW5nIHRoZSBjb25kaXRpb25zIGluIFBvc3RncmVzTWFpbigp LCByZXBvcnQgc3RhdHMgbm93LgotCSAqLwotCWlmIChJZGxlU3RhdHNVcGRhdGVUaW1lb3V0 UGVuZGluZyAmJgotCQlEb2luZ0NvbW1hbmRSZWFkICYmICFJc1RyYW5zYWN0aW9uT3JUcmFu c2FjdGlvbkJsb2NrKCkpCi0JewotCQlJZGxlU3RhdHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9 IGZhbHNlOwotCQlwZ3N0YXRfcmVwb3J0X3N0YXQodHJ1ZSk7Ci0JfQotCi0JaWYgKFByb2NT aWduYWxCYXJyaWVyUGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRf QkFSUklFUikpCiAJCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwogCi0JaWYgKFBhcmFs bGVsTWVzc2FnZVBlbmRpbmcpCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX1BB UkFMTEVMX01FU1NBR0UpKQogCQlQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpOwogCi0JaWYg KExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQotCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dElu dGVycnVwdCgpOwotCi0JaWYgKFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZykKKwlpZiAo Q29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCiAJ CVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKKworCWlmIChDb25zdW1lSW50ZXJy dXB0KElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpKQorCQlQcm9jZXNzTG9nTWVtb3J5 Q29udGV4dEludGVycnVwdCgpOwogfQogCiAvKgpAQCAtNDIwNCw3ICs0MTY0LDcgQEAgUG9z dGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJ CSAqIG1pZHN0IG9mIG91dHB1dCBkdXJpbmcgd2hvLWtub3dzLXdoYXQgb3BlcmF0aW9uLi4u CiAJCSAqLwogCQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQkJcHFzaWduYWwoU0lH VVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCQlwcXNpZ25hbChTSUdVU1Ix LCBTSUdfSUdOKTsKIAkJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7CiAJCXBxc2lnbmFs KFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKIApAQCAtNDM3OCw3ICs0MzM4LDcg QEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5h bWUpCiAJCSAqIGZvcmdldHRpbmcgYSB0aW1lb3V0IGNhbmNlbC4KIAkJICovCiAJCWRpc2Fi bGVfYWxsX3RpbWVvdXRzKGZhbHNlKTsJLyogZG8gZmlyc3QgdG8gYXZvaWQgcmFjZSBjb25k aXRpb24gKi8KLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCQlpZGxlX2luX3RyYW5zYWN0aW9uX3Rp bWVvdXRfZW5hYmxlZCA9IGZhbHNlOwogCQlpZGxlX3Nlc3Npb25fdGltZW91dF9lbmFibGVk ID0gZmFsc2U7CiAKQEAgLTQ1NjMsNyArNDUyMyw3IEBAIFBvc3RncmVzTWFpbihjb25zdCBj aGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogCQkJCSAqIHdlcmUgcmVjZWl2 ZWQgZHVyaW5nIHRoZSBqdXN0LWZpbmlzaGVkIHRyYW5zYWN0aW9uLCB0aGV5J2xsCiAJCQkJ ICogYmUgc2VlbiBieSB0aGUgY2xpZW50IGJlZm9yZSBSZWFkeUZvclF1ZXJ5IGlzLgogCQkJ CSAqLwotCQkJCWlmIChub3RpZnlJbnRlcnJ1cHRQZW5kaW5nKQorCQkJCWlmIChJbnRlcnJ1 cHRQZW5kaW5nKElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpKQogCQkJCQlQcm9jZXNzTm90aWZ5 SW50ZXJydXB0KGZhbHNlKTsKIAogCQkJCS8qCkBAIC00NjQ5LDcgKzQ2MDksNyBAQCBQb3N0 Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJ ICoKIAkJICogUXVlcnkgY2FuY2VsIGlzIHN1cHBvc2VkIHRvIGJlIGEgbm8tb3Agd2hlbiB0 aGVyZSBpcyBubyBxdWVyeSBpbgogCQkgKiBwcm9ncmVzcywgc28gaWYgYSBxdWVyeSBjYW5j ZWwgYXJyaXZlZCB3aGlsZSB3ZSB3ZXJlIGlkbGUsIGp1c3QKLQkJICogcmVzZXQgUXVlcnlD YW5jZWxQZW5kaW5nLiBQcm9jZXNzSW50ZXJydXB0cygpIGhhcyB0aGF0IGVmZmVjdCB3aGVu CisJCSAqIHJlc2V0IElOVEVSUlVQVF9RVUVSWV9DQU5DRUwuIFByb2Nlc3NJbnRlcnJ1cHRz KCkgaGFzIHRoYXQgZWZmZWN0IHdoZW4KIAkJICogaXQncyBjYWxsZWQgd2hlbiBEb2luZ0Nv bW1hbmRSZWFkIGlzIHNldCwgc28gY2hlY2sgZm9yIGludGVycnVwdHMKIAkJICogYmVmb3Jl IHJlc2V0dGluZyBEb2luZ0NvbW1hbmRSZWFkLgogCQkgKi8KQEAgLTQ2NjAsMTEgKzQ2MjAs OCBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2Vy bmFtZSkKIAkJICogKDYpIGNoZWNrIGZvciBhbnkgb3RoZXIgaW50ZXJlc3RpbmcgZXZlbnRz IHRoYXQgaGFwcGVuZWQgd2hpbGUgd2UKIAkJICogc2xlcHQuCiAJCSAqLwotCQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJ CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCS8qCiAJCSAqICg3 KSBwcm9jZXNzIHRoZSBjb21tYW5kLiAgQnV0IGlnbm9yZSBpdCBpZiB3ZSdyZSBza2lwcGlu ZyB0aWxsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRf ZGF0YWJhc2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFz ZS5jCmluZGV4IDA1YThjY2ZkYjc1Li5iMTk0ODk3MDZiYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTE3LDcgKzE3LDcgQEAK IAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWdu YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxz L3Bnc3RhdF9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCkBA IC03OCw3ICs3OCw3IEBAIHBnc3RhdF9yZXBvcnRfYXV0b3ZhYyhPaWQgZGJvaWQpCiAgKiBS ZXBvcnQgYSBIb3QgU3RhbmRieSByZWNvdmVyeSBjb25mbGljdC4KICAqLwogdm9pZAotcGdz dGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVhc29uKQorcGdzdGF0X3JlcG9y dF9yZWNvdmVyeV9jb25mbGljdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKIAlQZ1N0YXRf U3RhdERCRW50cnkgKmRiZW50cnk7CiAKQEAgLTkwLDMxICs5MCwzMyBAQCBwZ3N0YXRfcmVw b3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAKIAlzd2l0Y2ggKHJlYXNvbikK IAl7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRToKKwkJY2Fz ZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CiAKIAkJCS8qCiAJCQkg KiBTaW5jZSB3ZSBkcm9wIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YWJhc2UgYXMg c29vbiBhcyBpdAogCQkJICogcmVwbGljYXRlcywgdGhlcmUgaXMgbm8gcG9pbnQgaW4gY291 bnRpbmcgdGhlc2UgY29uZmxpY3RzLgogCQkJICovCiAJCQlicmVhazsKLQkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CisJCWNhc2UgSU5URVJSVVBUX1JF Q09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CiAJCQlkYmVudHJ5LT5jb25mbGljdF90YWJs ZXNwYWNlKys7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPQ0s6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQlk YmVudHJ5LT5jb25mbGljdF9sb2NrKys7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVDoKIAkJCWRiZW50cnktPmNvbmZsaWN0X3NuYXBzaG90Kys7CiAJ CQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoK KwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZGJl bnRyeS0+Y29uZmxpY3RfYnVmZmVycGluKys7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQljYXNlIElOVEVSUlVQVF9SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKIAkJCWRiZW50cnktPmNvbmZsaWN0X2xvZ2lj YWxzbG90Kys7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CiAJCQlkYmVudHJ5LT5jb25mbGljdF9zdGFydHVwX2RlYWRs b2NrKys7CiAJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coTE9HLCAidW5leHBlY3Rl ZCByZWNvdmVyeSBjb25mbGljdCByZWFzb24gJXUiLCAodW5zaWduZWQgaW50KSByZWFzb24p OwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5j cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IDM5NmMyZjIy M2I0Li43YWE2ZmEzMDRjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21j eHRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAt MjY1LDcgKzI2NSw2IEBAIHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5D VElPTl9BUkdTKQogewogCWludAkJCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKIAlQR1BS T0MJICAgKnByb2M7Ci0JUHJvY051bWJlcglwcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05V TUJFUjsKIAogCS8qCiAJICogU2VlIGlmIHRoZSBwcm9jZXNzIHdpdGggZ2l2ZW4gcGlkIGlz IGEgYmFja2VuZCBvciBhbiBhdXhpbGlhcnkgcHJvY2Vzcy4KQEAgLTI5NCwxNCArMjkzLDcg QEAgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKIAl9CiAKLQlwcm9jTnVtYmVyID0gR2V0TnVtYmVy RnJvbVBHUHJvYyhwcm9jKTsKLQlpZiAoU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX0xP R19NRU1PUllfQ09OVEVYVCwgcHJvY051bWJlcikgPCAwKQotCXsKLQkJLyogQWdhaW4sIGp1 c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3BzICovCi0JCWVyZXBvcnQoV0FSTklORywKLQkJ CQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWduYWwgdG8gcHJvY2VzcyAlZDogJW0iLCBw aWQpKSk7Ci0JCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKLQl9CisJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhULCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2Mp KTsKIAogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5k ZXggMTYwZWE1OWQ5NGIuLjViMzNlYzhkNzYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAg LTQwMywxMSArNDAzLDEwIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UK IAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUwsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSywKIAkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CiAJCQkJCQkJIGRlbGF5X21zLAogCQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCVBHX1JFVFVSTl9W T0lEKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDc5YmM5OTljZjI2Li43 YTcwOTBhMjNiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTI4LDIxICsy OCwxMiBAQAogCiBQcm90b2NvbFZlcnNpb24gRnJvbnRlbmRQcm90b2NvbDsKIAotdm9sYXRp bGUgc2lnX2F0b21pY190IEludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNp Z19hdG9taWNfdCBRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19h dG9taWNfdCBQcm9jRGllUGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190 IENoZWNrQ2xpZW50Q29ubmVjdGlvblBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19h dG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdCA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0 b21pY190IElkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7 Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZyA9IGZh bHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcg PSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRp bmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVu ZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRp bWVvdXRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9m ZkNvdW50ID0gMDsKIHZvbGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9 IDA7CiB2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7CiAKK3ZvbGF0aWxl IHVpbnQzMiBDaGVja0ZvckludGVycnVwdHNNYXNrID0gMDsKKwogaW50CQkJTXlQcm9jUGlk OwogcGdfdGltZV90CU15U3RhcnRUaW1lOwogVGltZXN0YW1wVHogTXlTdGFydFRpbWVzdGFt cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBlNTRiNWIzOTM5Ni4uMDE0 NzU0OWY1MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTEzODIsNDEg KzEzODIsMzEgQEAgTG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiBzdGF0aWMgdm9pZAogVHJh bnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCVRyYW5zYWN0aW9uVGltZW91dFBl bmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVJhaXNlSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVFJB TlNBQ1RJT05fVElNRU9VVCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBJZGxlSW5UcmFuc2FjdGlv blNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCUlkbGVJblRyYW5zYWN0aW9uU2Vz c2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsK LQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VUKTsKIH0KIAog c3RhdGljIHZvaWQKIElkbGVTZXNzaW9uVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlJZGxl U2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1 ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0lETEVfU0VTU0lPTl9USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQK IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JSWRsZVN0YXRzVXBk YXRlVGltZW91dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwot CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfSURMRV9TVEFUU19USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQKIENsaWVu dENoZWNrVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlDaGVja0NsaWVudENvbm5lY3Rpb25Q ZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NM SUVOVF9DSEVDS19USU1FT1VUKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvdGltZW91dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0 LmMKaW5kZXggOTM5OTQxOTBjNzEuLmQzMjIwZTQxOWU2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3RpbWVvdXQuYwpAQCAtMzcwLDEyICszNzAsNiBAQCBoYW5kbGVfc2lnX2FsYXJtKFNJR05B TF9BUkdTKQogCSAqLwogCUhPTERfSU5URVJSVVBUUygpOwogCi0JLyoKLQkgKiBTSUdBTFJN IGlzIGFsd2F5cyBjYXVzZSBmb3Igd2FraW5nIGFueXRoaW5nIHdhaXRpbmcgb24KLQkgKiBJ TlRFUlJVUFRfR0VORVJBTC4KLQkgKi8KLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7Ci0KIAkvKgogCSAqIEFsd2F5cyByZXNldCBzaWduYWxfcGVuZGluZywgZXZlbiBp ZiAhYWxhcm1fZW5hYmxlZCwgc2luY2UgaW5kZWVkIG5vCiAJICogc2lnbmFsIGlzIG5vdyBw ZW5kaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCA1MjMzYTY1YWFhMC4uNjNjZWUw NmExMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMjYwLDI3ICsxMjYwLDExIEBA IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6 ZSBzaXplLCBpbnQgZmxhZ3MpCiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIEhhbmRsZUxv Z01lbW9yeUNvbnRleHRJbnRlcnJ1cHQKLSAqCQlIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRl cnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIG9mIG1lbW9yeQotICoJCWNvbnRleHRzLgotICoK LSAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVmZXJyZWQgdG8gUHJvY2Vzc0xvZ01lbW9y eUNvbnRleHRJbnRlcnJ1cHQoKSwKLSAqIGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBlbWl0 IGEgbG9nIG1lc3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlci4KLSAqLwotdm9pZAot SGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gdHJ1ZTsKLQkvKiBJ TlRFUlJVUFRfR0VORVJBTCB3aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlciAqLwotfQotCiAvKgogICogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1 cHQKICAqIAkJUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlzIGJh Y2tlbmQgcHJvY2Vzcy4KICAqCi0gKiBBbnkgYmFja2VuZCB0aGF0IHBhcnRpY2lwYXRlcyBp biBQcm9jU2lnbmFsIHNpZ25hbGluZyBtdXN0IGFycmFuZ2UKKyAqIEFueSBiYWNrZW5kIHRo YXQgcGFydGljaXBhdGVzIGluIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGluZyBtdXN0IGFy cmFuZ2UKICAqIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB3ZSBzZWUgTG9nTWVtb3J5Q29u dGV4dFBlbmRpbmcgc2V0LgogICogSXQgaXMgY2FsbGVkIGZyb20gQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKSwgd2hpY2ggaXMgZW5vdWdoIGJlY2F1c2UKICAqIHRoZSB0YXJnZXQgcHJvY2Vz cyBmb3IgbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgaXMgYSBiYWNrZW5kLgpAQCAtMTI4 OCw3ICsxMjcyLDcgQEAgSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQog dm9pZAogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIHsKLQlMb2dN ZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9MT0dfTUVNT1JZX0NPTlRFWFQpOwogCiAJLyoKIAkgKiBVc2UgTE9HX1NFUlZFUl9PTkxZ IHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20gYmVpbmcgc2VudCB0byB0aGUKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3BhcmFsbGVsLmgKaW5kZXggYTI1N2QwYThlZTYuLmI3YmRhZGEzNjQ2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsOCArMTQsNiBAQAogI2lmbmRlZiBQQVJBTExFTF9I CiAjZGVmaW5lIFBBUkFMTEVMX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpAQCAtNTUsNyArNTMsNiBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbFdvcmtlckNvbnRleHQKIAlzaG1fdG9jICAgICp0b2M7CiB9IFBhcmFs bGVsV29ya2VyQ29udGV4dDsKIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBQYXJhbGxlbFdvcmtlck51bWJlcjsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIEluaXRp YWxpemluZ1BhcmFsbGVsV29ya2VyOwogCkBAIC03Miw3ICs2OSw2IEBAIGV4dGVybiB2b2lk IFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBjeHQp OwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRleHQg KnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwogCi1l eHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CiBleHRl cm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcyh2b2lkKTsKIGV4dGVybiB2b2lkIEF0 RU9YYWN0X1BhcmFsbGVsKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRFT1N1Ylhh Y3RfUGFyYWxsZWwoYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YklkKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy9hc3luYy5oCmluZGV4IGY3NWMzZGY5NTU2Li41MDc3M2RkYjBlMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy9hc3luYy5oCkBAIC0xMywxMSArMTMsOCBAQAogI2lmbmRlZiBBU1lOQ19I CiAjZGVmaW5lIEFTWU5DX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiBleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBUcmFjZV9ub3RpZnk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1h eF9ub3RpZnlfcXVldWVfcGFnZXM7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IG5vdGlmeUludGVycnVwdFBlbmRpbmc7CiAKIGV4dGVybiBTaXplIEFzeW5j U2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXN5bmNTaG1lbUluaXQodm9pZCk7CkBA IC00MCw5ICszNyw2IEBAIGV4dGVybiB2b2lkIEF0U3ViQ29tbWl0X05vdGlmeSh2b2lkKTsK IGV4dGVybiB2b2lkIEF0U3ViQWJvcnRfTm90aWZ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRQ cmVwYXJlX05vdGlmeSh2b2lkKTsKIAotLyogc2lnbmFsIGhhbmRsZXIgZm9yIGluYm91bmQg bm90aWZpZXMgKFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCkgKi8KLWV4dGVybiB2b2lkIEhh bmRsZU5vdGlmeUludGVycnVwdCh2b2lkKTsKLQogLyogcHJvY2VzcyBpbnRlcnJ1cHRzICov CiBleHRlcm4gdm9pZCBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGJvb2wgZmx1c2gpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmggYi9z cmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgKaW5kZXggZjg4YWU4MTM3 ZDYuLmU3NmE5MGM4M2FmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1i ZS1mZS1oZWxwZXJzLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVs cGVycy5oCkBAIC0yMDksNyArMjA5LDcgQEAgbGlicHFzcnZfY29ubmVjdF9pbnRlcm5hbChQ R2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCQllbHNlCiAJCQkJaW9f ZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJCXJjID0gV2FpdEludGVycnVwdE9y U29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQlyYyA9IFdhaXRJbnRlcnJ1cHRP clNvY2tldChJTlRFUlJVUFRfQ0ZJX01BU0ssCiAJCQkJCQkJCQkgICBXTF9FWElUX09OX1BN X0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKIAkJCQkJCQkJCSAgIFBRc29ja2V0 KGNvbm4pLAogCQkJCQkJCQkJICAgMCwKQEAgLTIxNywxMCArMjE3LDcgQEAgbGlicHFzcnZf Y29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8p CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwogCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQot CQkJewotCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwotCQkJfQogCiAJCQkvKiBJZiBzb2NrZXQgaXMgcmVhZHks IGFkdmFuY2UgdGhlIGxpYnBxIHN0YXRlIG1hY2hpbmUgKi8KIAkJCWlmIChyYyAmIGlvX2Zs YWcpCkBAIC0zNDEsNyArMzM4LDcgQEAgbGlicHFzcnZfZ2V0X3Jlc3VsdChQR2Nvbm4gKmNv bm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJewogCQlpbnQJCQlyYzsKIAotCQlyYyA9 IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9 IFdhaXRJbnRlcnJ1cHRPclNvY2tldChJTlRFUlJVUFRfQ0ZJX01BU0ssCiAJCQkJCQkJCSAg IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9JTlRFUlJVUFQgfAogCQkJCQkJCQkgICBXTF9T T0NLRVRfUkVBREFCTEUsCiAJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLApAQCAtMzUwLDEw ICszNDcsNyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29ubiwgdWludDMyIHdh aXRfZXZlbnRfaW5mbykKIAogCQkvKiBJbnRlcnJ1cHRlZD8gKi8KIAkJaWYgKHJjICYgV0xf SU5URVJSVVBUKQotCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9CiAKIAkJLyogQ29uc3VtZSB3aGF0 ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQgKi8KIAkJaWYgKFBRY29u c3VtZUlucHV0KGNvbm4pID09IDApCkBAIC00MzYsMTIgKzQzMCwxMCBAQCBsaWJwcXNydl9j YW5jZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJfQogCiAJCQkv KiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCQkJV2FpdEludGVy cnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIHdhaXRFdmVudHMsCisJCQlX YWl0SW50ZXJydXB0T3JTb2NrZXQoSU5URVJSVVBUX0NGSV9NQVNLLCB3YWl0RXZlbnRzLAog CQkJCQkJCQkgIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwKIAkJCQkJCQkJICBjdXJf dGltZW91dCwgUEdfV0FJVF9DTElFTlQpOwogCi0JCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7Ci0KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIGV4aXQ6 CTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaCBiL3NyYy9pbmNsdWRl L2xpYnBxL3BxbXEuaAppbmRleCAzNDhiNDQ5NDMzMy4uYWUwMmFhY2ZhYTEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9w cW1xLmgKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgog CiBleHRlcm4gdm9pZCBwcV9yZWRpcmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywg c2htX21xX2hhbmRsZSAqbXFoKTsKLWV4dGVybiB2b2lkIHBxX3NldF9wYXJhbGxlbF9sZWFk ZXIocGlkX3QgcGlkLCBQcm9jTnVtYmVyIHByb2NOdW1iZXIpOworZXh0ZXJuIHZvaWQgcHFf c2V0X3BhcmFsbGVsX2xlYWRlcihQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwogCiBleHRlcm4g dm9pZCBwcV9wYXJzZV9lcnJvcm5vdGljZShTdHJpbmdJbmZvIG1zZywgRXJyb3JEYXRhICpl ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggZjViNzczYjc5ZTUuLjk0OWI1YTU5MjUyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNj YWRtaW4uaApAQCAtMjgsNiArMjgsOSBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFt cC5oIiAvKiBmb3IgVGltZXN0YW1wVHogKi8KICNpbmNsdWRlICJwZ3RpbWUuaCIJCQkJLyog Zm9yIHBnX3RpbWVfdCAqLwogCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAic3RvcmFn ZS9pbnRlcnJ1cHQuaCIKKyNlbmRpZgogCiAjZGVmaW5lIEludmFsaWRQaWQJCQkJKC0xKQog CkBAIC01OSw3ICs2Miw3IEBACiAgKgogICogTm90ZSB0aGF0IFByb2Nlc3NJbnRlcnJ1cHRz KCkgaGFzIGFsc28gYWNxdWlyZWQgYSBudW1iZXIgb2YgdGFza3MgdGhhdAogICogZG8gbm90 IG5lY2Vzc2FyaWx5IGNhdXNlIGEgcXVlcnktY2FuY2VsLW9yLWRpZSByZXNwb25zZS4gIEhl bmNlLCBpdCdzCi0gKiBwb3NzaWJsZSB0aGF0IGl0IHdpbGwganVzdCBjbGVhciBJbnRlcnJ1 cHRQZW5kaW5nIGFuZCByZXR1cm4uCisgKiBwb3NzaWJsZSB0aGF0IGl0IHdpbGwganVzdCBj bGVhciBJbnRlcnJ1cHRQZW5kaW5nIGFuZCByZXR1cm4uIFhYWAogICoKICAqIElOVEVSUlVQ VFNfUEVORElOR19DT05ESVRJT04oKSBjYW4gYmUgY2hlY2tlZCB0byBzZWUgd2hldGhlciBh bgogICogaW50ZXJydXB0IG5lZWRzIHRvIGJlIHNlcnZpY2VkLCB3aXRob3V0IHRyeWluZyB0 byBkbyBzbyBpbW1lZGlhdGVseS4KQEAgLTg2LDY0ICs4OSw3MCBAQAogICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogCiAvKiBpbiBnbG9iYWxzLmMgKi8KLS8qIHRoZXNlIGFyZSBtYXJr ZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzOiAq LwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJbnRlcnJ1cHRQ ZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBRdWVy eUNhbmNlbFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IFByb2NEaWVQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rpb25UaW1lb3V0 UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRs ZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBz aWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1Q T1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZzsKLWV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBkYXRl VGltZW91dFBlbmRpbmc7Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRv bWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9S VCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7Ci0KIC8qIHRo ZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBleGFtaW5lZCBieSBz aWduYWwgaGFuZGxlcnM6ICovCisvKiBGSVhNRTogaXMgdGhhdCBzdGlsbCB0cnVlLCBkbyB0 aGVzZSBzdGlsbCBuZWVkIHRvIGJlIHZvbGF0aWxlPyAqLwogZXh0ZXJuIFBHRExMSU1QT1JU IHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQ7CiBleHRlcm4gUEdETExJ TVBPUlQgdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50OwogZXh0ZXJu IFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50OwogCisvKiBJ ZiB5b3Ugd291bGQgY2FsbCBQcm9jZXNzSW50ZXJydXB0cyBub3csIGl0IGNvdWxkIGhhbmRs ZSB0aGVzZSBpbnRlcnJ1cHRzICovCisvKiBYWFg6IHZvbGF0aWxlIHN0aWxsIG5lZWRlZD8g Ki8KK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1aW50MzIgQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzazsKKwogLyogaW4gdGNvcC9wb3N0Z3Jlcy5jICovCiBleHRlcm4gdm9pZCBQcm9j ZXNzSW50ZXJydXB0cyh2b2lkKTsKIAogLyogVGVzdCB3aGV0aGVyIGFuIGludGVycnVwdCBp cyBwZW5kaW5nICovCiAjaWZuZGVmIFdJTjMyCi0jZGVmaW5lIElOVEVSUlVQVFNfUEVORElO R19DT05ESVRJT04oKSBcCi0JKHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcpKQorI2RlZmlu ZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKG1hc2spIFwKKwkodW5saWtlbHkoSW50 ZXJydXB0UGVuZGluZyhtYXNrKSkpCiAjZWxzZQotI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJ TkdfQ09ORElUSU9OKCkgXAorI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9O KG1hc2spIFwKIAkodW5saWtlbHkoVU5CTE9DS0VEX1NJR05BTF9RVUVVRSgpKSA/IHBnd2lu MzJfZGlzcGF0Y2hfcXVldWVkX3NpZ25hbHMoKSA6IDAsIFwKLQkgdW5saWtlbHkoSW50ZXJy dXB0UGVuZGluZykpCisJIHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcobWFzaykpKQogI2Vu ZGlmCiAKIC8qIFNlcnZpY2UgaW50ZXJydXB0LCBpZiBvbmUgaXMgcGVuZGluZyBhbmQgaXQn cyBzYWZlIHRvIHNlcnZpY2UgaXQgbm93ICovCiAjZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgXAogZG8geyBcCi0JaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSkg XAorCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKENoZWNrRm9ySW50ZXJydXB0 c01hc2spICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkgXAogCQlQcm9jZXNzSW50ZXJydXB0 cygpOyBcCiB9IHdoaWxlKDApCiAKLS8qIElzIFByb2Nlc3NJbnRlcnJ1cHRzKCkgZ3VhcmFu dGVlZCB0byBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nPyAqLwotI2RlZmluZSBJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoKSBcCi0JKEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYm IENyaXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCi0JIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50 ID09IDApCisvKiBJcyBQcm9jZXNzSW50ZXJydXB0cygpIGd1YXJhbnRlZWQgdG8gY2xlYXIg YWxsIHRoZSBiaXRzIGluICdtYXNrJz8gKi8KKyNkZWZpbmUgSU5URVJSVVBUU19DQU5fQkVf UFJPQ0VTU0VEKG1hc2spIFwKKwkoKChtYXNrKSAmIH5DaGVja0ZvckludGVycnVwdHNNYXNr KSA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKIAotI2RlZmluZSBIT0xEX0lOVEVS UlVQVFMoKSAgKEludGVycnVwdEhvbGRvZmZDb3VudCsrKQorI2RlZmluZSBIT0xEX0lOVEVS UlVQVFMoKSBcCitkbyB7IFwKKwlDaGVja0ZvckludGVycnVwdHNNYXNrICY9IH5JTlRFUlJV UFRfQ0ZJX01BU0s7CVwKKwlJbnRlcnJ1cHRIb2xkb2ZmQ291bnQrKzsgXAorfSB3aGlsZSgw KQogCiAjZGVmaW5lIFJFU1VNRV9JTlRFUlJVUFRTKCkgXAogZG8geyBcCiAJQXNzZXJ0KElu dGVycnVwdEhvbGRvZmZDb3VudCA+IDApOyBcCiAJSW50ZXJydXB0SG9sZG9mZkNvdW50LS07 IFwKKwlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDApIFwKKwl7CQkJCQkJCQkJCQkJ ICBcCisJCUNoZWNrRm9ySW50ZXJydXB0c01hc2sgfD0gSU5URVJSVVBUX0NGSV9NQVNLOyBc CisJCWlmIChRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA+IDApIFwKKwkJCUNoZWNrRm9ySW50 ZXJydXB0c01hc2sgJj0gfklOVEVSUlVQVF9RVUVSWV9DQU5DRUw7IFwKKwkgIH0gXAogfSB3 aGlsZSgwKQogCi0jZGVmaW5lIEhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKSAgKFF1ZXJ5Q2Fu Y2VsSG9sZG9mZkNvdW50KyspCisjZGVmaW5lIEhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKSAg XAorZG8geyBcCisJQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayAmPSB+SU5URVJSVVBUX1FVRVJZ X0NBTkNFTDsJXAorCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50Kys7IFwKK30gd2hpbGUoMCkK IAogI2RlZmluZSBSRVNVTUVfQ0FOQ0VMX0lOVEVSUlVQVFMoKSBcCiBkbyB7IFwKIAlBc3Nl cnQoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPiAwKTsgXAogCVF1ZXJ5Q2FuY2VsSG9sZG9m ZkNvdW50LS07IFwKKwlpZiAoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPT0gMCAmJiBJbnRl cnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCkgXAorCQlDaGVja0ZvckludGVycnVwdHNNYXNrIHw9 IElOVEVSUlVQVF9RVUVSWV9DQU5DRUw7CQkJXAogfSB3aGlsZSgwKQogCiAjZGVmaW5lIFNU QVJUX0NSSVRfU0VDVElPTigpICAoQ3JpdFNlY3Rpb25Db3VudCsrKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCA0YWFk MTBiMGI2ZC4uYmU1MjNkMWFiM2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5o CisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC02MDUsNyArNjA1LDcgQEAgZXh0ZXJu IGJvb2wgcGdzdGF0X3RyYWNrc19pb19vcChCYWNrZW5kVHlwZSBia3R5cGUsIElPT2JqZWN0 IGlvX29iamVjdCwKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2Ryb3BfZGF0YWJhc2UoT2lkIGRh dGFiYXNlaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hdXRvdmFjKE9pZCBkYm9p ZCk7Ci1leHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCBy ZWFzb24pOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChJ bnRlcnJ1cHRUeXBlIHJlYXNvbik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2RlYWRs b2NrKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9jaGVja3N1bV9mYWlsdXJl c19pbl9kYihPaWQgZGJvaWQsIGludCBmYWlsdXJlY291bnQpOwogZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF9jaGVja3N1bV9mYWlsdXJlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuaCBiL3NyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRsZXJzLmgKaW5kZXggYjNhOGMzODM1M2UuLmM2Zjc1 NTE2YzY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdF9o YW5kbGVycy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvaW50ZXJydXB0X2hhbmRs ZXJzLmgKQEAgLTE5LDExICsxOSw2IEBACiAjaWZuZGVmIElOVEVSUlVQVF9IQU5ETEVSU19I CiAjZGVmaW5lIElOVEVSUlVQVF9IQU5ETEVSU19ICiAKLSNpbmNsdWRlIDxzaWduYWwuaD4K LQotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDb25maWdSZWxv YWRQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBT aHV0ZG93blJlcXVlc3RQZW5kaW5nOwotCiBleHRlcm4gdm9pZCBQcm9jZXNzTWFpbkxvb3BJ bnRlcnJ1cHRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1Jl bG9hZChTSUdOQUxfQVJHUyk7CiBleHRlcm4gdm9pZCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hF eGl0KFNJR05BTF9BUkdTKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaAppbmRleCA4ODkxMjYwNmU0ZC4uODkwMGQxZWQ5MmYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEyLDEwICsxMiw2IEBACiAjaWZuZGVm IExPR0lDQUxXT1JLRVJfSAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAotI2luY2x1ZGUg PHNpZ25hbC5oPgotCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190 IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKLQogZXh0ZXJuIHZvaWQgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiB2b2lkIFBhcmFsbGVsQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiB2b2lkIFRhYmxlc3luY1dvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwpAQCAtMjMsNyArMTksNiBAQCBleHRlcm4gdm9pZCBUYWJs ZXN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiBib29sIElzTG9naWNh bFdvcmtlcih2b2lkKTsKIGV4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3Jr ZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50 ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdl cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdvcmtlcnNXYWtldXBBdENvbW1p dChPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IGY1YTI0Y2NmYmYy Li5iMGFjOWY3MGFlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMTYwLDggKzE2 MCw4IEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdAogCS8qIGlzIHRoaXMgc2xv dCBkZWZpbmVkICovCiAJYm9vbAkJaW5fdXNlOwogCi0JLyogV2hvIGlzIHN0cmVhbWluZyBv dXQgY2hhbmdlcyBmb3IgdGhpcyBzbG90PyAwIGluIHVudXNlZCBzbG90cy4gKi8KLQlwaWRf dAkJYWN0aXZlX3BpZDsKKwkvKiBXaG8gaXMgc3RyZWFtaW5nIG91dCBjaGFuZ2VzIGZvciB0 aGlzIHNsb3Q/IElOVkFMSURfUFJPQ19OVU1CRVIgaW4gdW51c2VkIHNsb3RzLiAqLworCVBy b2NOdW1iZXIJYWN0aXZlX3Byb2M7CiAKIAkvKiBhbnkgb3V0c3RhbmRpbmcgbW9kaWZpY2F0 aW9ucz8gKi8KIAlib29sCQlqdXN0X2RpcnRpZWQ7CkBAIC0xODcsNyArMTg3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90CiAJLyogaXMgc29tZWJvZHkgcGVyZm9ybWlu ZyBpbyBvbiB0aGlzIHNsb3Q/ICovCiAJTFdMb2NrCQlpb19pbl9wcm9ncmVzc19sb2NrOwog Ci0JLyogQ29uZGl0aW9uIHZhcmlhYmxlIHNpZ25hbGVkIHdoZW4gYWN0aXZlX3BpZCBjaGFu Z2VzICovCisJLyogQ29uZGl0aW9uIHZhcmlhYmxlIHNpZ25hbGVkIHdoZW4gYWN0aXZlX3By b2MgY2hhbmdlcyAqLwogCUNvbmRpdGlvblZhcmlhYmxlIGFjdGl2ZV9jdjsKIAogCS8qIGFs bCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgb25seSB1c2VkIGZvciBsb2dpY2FsIHNsb3RzICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IGMzZThlMTkxMzM5Li4y NDAyNmZjZmU1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTQ2 LDcgKzQ2LDcgQEAgZXh0ZXJuIHZvaWQgV2FsU25kU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJu IHZvaWQgV2FsU25kV2FrZXVwKGJvb2wgcGh5c2ljYWwsIGJvb2wgbG9naWNhbCk7CiBleHRl cm4gdm9pZCBXYWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRX YWl0U3RvcHBpbmcodm9pZCk7Ci1leHRlcm4gdm9pZCBIYW5kbGVXYWxTbmRJbml0U3RvcHBp bmcodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQp OwogZXh0ZXJuIHZvaWQgV2FsU25kUnFzdEZpbGVSZWxvYWQodm9pZCk7CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAppbmRleCA4MTRi ODEyNDMyYS4uM2YwN2ZlZDdhMzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2Fsc2VuZGVyX3ByaXZhdGUuaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIGVudW0gV2Fs U25kU3RhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgV2FsU25kCiB7CisJUHJvY051bWJlcglw Z3Byb2NubzsJCS8qIHRoaXMgd2Fsc2VuZGVyJ3MgUHJvY051bWJlciwgb3IgaW52YWxpZCBp ZiBub3QgYWN0aXZlICovCiAJcGlkX3QJCXBpZDsJCQkvKiB0aGlzIHdhbHNlbmRlcidzIFBJ RCwgb3IgMCBpZiBub3QgYWN0aXZlICovCiAKIAlXYWxTbmRTdGF0ZSBzdGF0ZTsJCQkvKiB0 aGlzIHdhbHNlbmRlcidzIHN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCmluZGV4IDMwYjI3NzU5NTJjLi42NzgxZTlmNmE2YSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTc4LDkgKzc4 LDEwIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlGaWxlU2V0ICAgICpz dHJlYW1fZmlsZXNldDsKIAogCS8qCi0JICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIg aWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKLQkgKiB3b3JrZXIs IEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqIExlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhp cyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLAorCSAqIElOVkFM SURfUFJPQ19OVU1CRVIvSW52YWxpZFBpZCBvdGhlcndpc2UuCiAJICovCisJUHJvY051bWJl cglsZWFkZXJfcGdwcm9jbm87CiAJcGlkX3QJCWxlYWRlcl9waWQ7CiAKIAkvKiBJbmRpY2F0 ZXMgd2hldGhlciBhcHBseSBjYW4gYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvaW50ZXJydXB0LmgKaW5kZXggOGE4ODBjZDRjMjkuLjIzNGJlNzhiZGQyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2ludGVycnVwdC5oCisrKyBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKQEAgLTEyLDE4ICsxMiw0MCBAQAogICogYW4g YWN0aW9uLCBvciBhc3luY2hyb25vdXNseSBieSB0aW1lciBzaWduYWwgaGFuZGxlcnMsIG90 aGVyIHNpZ25hbAogICogaGFuZGxlcnMgb3IgInNlbnQiIGJ5IG90aGVyIGJhY2tlbmRzIHNl dHRpbmcgdGhlbSBkaXJlY3RseS4KICAqCi0gKiBNb3N0IGNvZGUgY3VycmVudGx5IGRlYWxz IHdpdGggdGhlIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdC4gSXQgaXMKLSAqIHJhaXNl ZCBieSBhbnkgb2YgdGhlIGV2ZW50cyBjaGVja2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRT KCksIGxpa2UgcXVlcnkKLSAqIGNhbmNlbGxhdGlvbiBvciBpZGxlIHNlc3Npb24gdGltZW91 dC4gV2VsbCBiZWhhdmVkIGJhY2tlbmQgY29kZSBwZXJmb3JtcwotICogQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSBwZXJpb2RpY2FsbHkgaW4gbG9uZyBjb21wdXRhdGlvbnMsIGFuZCBzaG91 bGQgbmV2ZXIKLSAqIHNsZWVwIHVzaW5nIG1lY2hhbmlzbXMgb3RoZXIgdGhhbiB0aGUgV2Fp dEV2ZW50U2V0IG1lY2hhbmlzbSBvciB0aGUgbW9yZQotICogY29udmVuaWVudCBXYWl0SW50 ZXJydXB0L1dhaXRTb2NrZXJPckludGVycnVwdCBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IKLSAq IGJvdW5kZWQgc2hvcnQgcGVyaW9kcywgZWcgTFdMb2NrIHdhaXRzKSwgc28gdGhleSBzaG91 bGQgcmVhY3QgaW4gZ29vZCB0aW1lLgorICoKKyAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBUaGUgInN0YW5kYXJkIiBzZXQg b2YgaW50ZXJydXB0cyBpcyBoYW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGFu ZAotICogY29uc2lzdHMgb2YgdGFza3MgdGhhdCBhcmUgc2FmZSB0byBwZXJmb3JtIGF0IG1v c3QgdGltZXMuICBUaGV5IGNhbiBiZQotICogc3VwcHJlc3NlZCBieSBIT0xEX0lOVEVSUlVQ VFMoKS9SRVNVTUVfSU5URVJSVVBUUygpLgorICogY29uc2lzdHMgb2YgdGFza3MgdGhhdCBh cmUgc2FmZSB0byBwZXJmb3JtIGF0IG1vc3QgdGltZXMuICBJdCBpbmNsdWRlcworICogdGhp bmdzIGxpa2UgcXVlcnkgY2FuY2VsbGF0aW9uIGFuZCBpZGxlIHNlc3Npb24gdGltZW91dC4g IFdlbGwgYmVoYXZlZAorICogYmFja2VuZCBjb2RlIHBlcmZvcm1zIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgcGVyaW9kaWNhbGx5IGluIGxvbmcKKyAqIGNvbXB1dGF0aW9ucywgYW5kIHNo b3VsZCBuZXZlciBzbGVlcCB1c2luZyBtZWNoYW5pc21zIG90aGVyIHRoYW4gdGhlCisgKiBX YWl0RXZlbnRTZXQgbWVjaGFuaXNtIG9yIHRoZSBtb3JlIGNvbnZlbmllbnQgV2FpdEludGVy cnVwdCAvCisgKiBXYWl0U29ja2VyT3JJbnRlcnJ1cHQgZnVuY3Rpb25zIChleGNlcHQgZm9y IGJvdW5kZWQgc2hvcnQgcGVyaW9kcywgZWcKKyAqIExXTG9jayB3YWl0cyksIHNvIHRoZXkg c2hvdWxkIHJlYWN0IGluIGdvb2QgdGltZS4gIFRoZXkgY2FuIGJlIHN1cHByZXNzZWQKKyAq IGJ5IEhPTERfSU5URVJSVVBUUygpL1JFU1VNRV9JTlRFUlJVUFRTKCkuCisgKgorICogT3Ro ZXIgc3BlY2lhbCBpbnRlcnJ1cHRzIGFyZSBjaGVja2VkIGZvciBleHBsaWNpdGx5LgorICoK KyAqIFN0YW5kYXJkIFNpZ25hbCBoYW5kbGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogUmVzcG9uc2VzIHRvIHNpZ25hbHMgdGhhdCBhcmUgdHJhbnNsYXRlZCB0 byBpbnRlcnJ1cHRzIGFyZSBmYWlybHkgdmFyaWVkCisgKiBhbmQgbWFueSB0eXBlcyBvZiBi YWNrZW5kcyBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB3ZSBwcm92aWRl IGEKKyAqIGZldyBnZW5lcmljIHNpZ25hbCBoYW5kbGVycyBhbmQgaW50ZXJydXB0IGNoZWNr cyBpbgorICogcG9zdG1hc3Rlci9pbnRlcnJ1cHRfaGFuZGxlcnMuYyB0byBmYWNpbGl0YXRl IGNvZGUgcmV1c2UuCiAgKgorICogTXVsdGlwbGV4ZWQgSU5URVJSVVBUX0dFTkVSQUwKKyAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlIElOVEVSUlVQVF9H RU5FUkFMIGludGVycnVwdCBpcyBtdWx0aXBsZXhlZCBmb3IgbWFueSBkaWZmZXJlbnQgcHVy cG9zZXMKKyAqIHRoYXQgZG9uJ3Qgd2FycmFudCBhIGRlZGljYXRlZCBpbnRlcnJ1cHQgYml0 LiAgQmVjYXVzZSBpdCdzIHJldXNlZCBmb3IKKyAqIGRpZmZlcmVudCBwdXJwb3Nlcywgd2Fp dGVycyBtdXN0IHRvbGVyYXRlIHJlY2VpdmluZyBzcHVyaW91cyBpbnRlcnJ1cHQKKyAqIHdh a2V1cHMuCisgKgorICogV2FpdGluZyBvbiBhbiBpbnRlcnJ1cHQKKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgogICogVGhlIGNvcnJlY3QgcGF0dGVybiB0byB3YWl0IGZvciBl dmVudChzKSB1c2luZyBJTlRFUlJVUFRfR0VORVJBTCBpczoKICAqCkBAIC0zMiwxMSArNTQs MTEgQEAKICAqCSAgIENsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKICAqCSAg IGlmICh3b3JrIHRvIGRvKQogICoJCSAgIERvIFN0dWZmKCk7Ci0gKgkgICBXYWl0SW50ZXJy dXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUwsIC4uLik7CisgKgkgICBXYWl0SW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOwogICogfQogICoKICAqIEl0J3MgaW1wb3J0YW50 IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlcmUncyB3 b3JrIHRvCi0gKiBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGludGVycnVw dCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCisgKiBkby4gIE90aGVyd2lzZSwgaWYgc29t ZW9uZSBzZXRzIHRoZSBpbnRlcnJ1cHQgYmV0d2VlbiB0aGUgY2hlY2sgYW5kIHRoZQogICog Q2xlYXJJbnRlcnJ1cHQoKSBjYWxsLCB5b3Ugd2lsbCBtaXNzIGl0IGFuZCBXYWl0IHdpbGwg aW5jb3JyZWN0bHkgYmxvY2suCiAgKgogICogQW5vdGhlciB2YWxpZCBjb2RpbmcgcGF0dGVy biBsb29rcyBsaWtlOgpAQCAtNDUsNyArNjcsNyBAQAogICogewogICoJICAgaWYgKHdvcmsg dG8gZG8pCiAgKgkJICAgRG8gU3R1ZmYoKTsgLy8gaW4gcGFydGljdWxhciwgZXhpdCBsb29w IGlmIHNvbWUgY29uZGl0aW9uIHNhdGlzZmllZAotICoJICAgV2FpdEludGVycnVwdCgxIDw8 IElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOworICoJICAgV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwgLi4uKTsKICAqCSAgIENsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKICAqIH0KICAqCkBAIC02Miw2ICs4NCw3IEBACiAgKiB3aXRoIG5lc3RlZCBsb29w cyB0aGF0IGNhbiBjb25zdW1lIGRpZmZlcmVudCBldmVudHMsIHlvdSBjYW4gZGVmaW5lIHlv dXIKICAqIG93biBJTlRFUlJVUFRfKiBmbGFnIGluc3RlYWQgb2YgcmVseWluZyBvbiBJTlRF UlJVUFRfR0VORVJBTC4KICAqCisgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQogICoKQEAgLTc2LDkgKzk5LDcgQEAKIAogI2luY2x1ZGUgInBvcnQvYXRvbWlj cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgotI2luY2x1ZGUgInN0b3Jh Z2Uvd2FpdGV2ZW50c2V0LmgiCi0KLSNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlICJz dG9yYWdlL3dhaXRldmVudHNldC5oIgkJLyogV0xfKiBhcmUgZGVmaW5lZCBpbiB3YWl0ZXZl bnRzZXQuaCAqLwogCiBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqTXlQ ZW5kaW5nSW50ZXJydXB0czsKIApAQCAtODksODAgKzExMCwyMTkgQEAgZXh0ZXJuIFBHRExM SU1QT1JUIHBnX2F0b21pY191aW50MzIgKk15UGVuZGluZ0ludGVycnVwdHM7CiB0eXBlZGVm IGVudW0KIHsKIAkvKgotCSAqIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgaW5kaWNhdGVzIHRo YXQgdGhlIGJhY2tlbmQgaXMgY3VycmVudGx5IGJsb2NrZWQKLQkgKiB3YWl0aW5nIGZvciBh biBpbnRlcnJ1cHQuIElmIGl0J3Mgc2V0LCB0aGUgYmFja2VuZCBuZWVkcyB0byBiZSB3b2tl biB1cAotCSAqIHdoZW4gYSBiaXQgaW4gdGhlIHBlbmRpbmcgaW50ZXJydXB0cyBtYXNrIGlz IHNldC4gSXQncyB1c2VkIGludGVybmFsbHkKLQkgKiBieSB0aGUgaW50ZXJydXB0IG1hY2hp bmVyeSwgYW5kIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGluIHRoZSBwdWJsaWMKLQkgKiBm dW5jdGlvbnMuIEl0J3MgbmFtZWQgZGlmZmVyZW50bHkgdG8gZGlzdGluZ3Vpc2ggaXQgZnJv bSB0aGUgYWN0dWFsCi0JICogaW50ZXJydXB0IGZsYWdzLgorCSAqIElOVEVSUlVQVF9HRU5F UkFMIGlzIHVzZWQgYXMgYSBnZW5lcmFsLXB1cnBvc2Ugd2FrZXVwLCBtdWx0aXBsZXhlZCBm b3IKKwkgKiBtYW55IHJlYXNvbnMuCisJICovCisJSU5URVJSVVBUX0dFTkVSQUwgPSAxIDw8 IDAsCisKKwkvKgorCSAqIEJlY2F1c2UgYmFja2VuZHMgc2l0dGluZyBpZGxlIHdpbGwgbm90 IGJlIHJlYWRpbmcgc2ludmFsIGV2ZW50cywgd2UKKwkgKiBuZWVkIGEgd2F5IHRvIGdpdmUg YW4gaWRsZSBiYWNrZW5kIGEgc3dpZnQga2ljayBpbiB0aGUgcmVhciBhbmQgbWFrZSBpdAor CSAqIGNhdGNoIHVwIGJlZm9yZSB0aGUgc2ludmFsIHF1ZXVlIG92ZXJmbG93cyBhbmQgZm9y Y2VzIGl0IHRvIGdvIHRocm91Z2gKKwkgKiBhIGNhY2hlIHJlc2V0IGV4ZXJjaXNlLiAgVGhp cyBpcyBkb25lIGJ5IHNlbmRpbmcKKwkgKiBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAgdG8g YW55IGJhY2tlbmQgdGhhdCBnZXRzIHRvbyBmYXIgYmVoaW5kLgorCSAqCisJICogVGhlIGlu dGVycnVwdCBpcyBwcm9jZXNzZWQgd2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRo ZSBjbGllbnQsCisJICogb3Igd2hlbiBpbnRlcnJ1cHRlZCB3aGlsZSBkb2luZyBzbywgUHJv Y2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsCisJICogY2FsbCBQcm9jZXNzQ2F0Y2h1 cEludGVycnVwdCgpLgogCSAqLwotCVNMRUVQSU5HX09OX0lOVEVSUlVQVFMgPSAwLAorCUlO VEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUCA9IDEgPDwgMSwKIAogCS8qCi0JICogSU5URVJSVVBU X0dFTkVSQUwgaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkgcmVhc29ucywgbGlrZSBxdWVyeQot CSAqIGNhbmNlbGxhdGlvbiB0ZXJtaW5hdGlvbiByZXF1ZXN0cywgcmVjb3ZlcnkgY29uZmxp Y3RzLCBhbmQgY29uZmlnCi0JICogcmVsb2FkIHJlcXVlc3RzLiAgVXBvbiByZWNlaXZpbmcg SU5URVJSVVBUX0dFTkVSQUwsIHlvdSBzaG91bGQgY2FsbAotCSAqIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgdG8gcHJvY2VzcyB0aG9zZSByZXF1ZXN0cy4gIEl0IGlzIGFsc28gdXNlZCBm b3IKLQkgKiB2YXJpb3VzIG90aGVyIGNvbnRleHQtZGVwZW5kZW50IHB1cnBvc2VzLCBidXQg bm90ZSB0aGF0IGlmIGl0J3MgdXNlZCB0bwotCSAqIHdha2UgdXAgZm9yIG90aGVyIHJlYXNv bnMsIHlvdSBtdXN0IHN0aWxsIGNhbGwgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQotCSAqIG9u Y2UgcGVyIGl0ZXJhdGlvbi4KKwkgKiBJTlRFUlJVUFRfQVNZTkNfTk9USUZZIGlzIHNlbnQg dG8gbm90aWZ5IGJhY2tlbmRzIHRoYXQgaGF2ZSByZWdpc3RlcmVkCisJICogdG8gTElTVEVO IG9uIGFueSBjaGFubmVscyB0aGF0IHRoZXkgbWlnaHQgaGF2ZSBtZXNzYWdlcyB0aGV5IG5l ZWQgdG8KKwkgKiBkZWxpdmVyIHRvIHRoZSBmcm9udGVudC4gSXQgaXMgYWxzbyBwcm9jZXNz ZWQgd2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZAorCSAqIGZyb20gdGhlIGNsaWVudCBvciB3 aGlsZSBkb2luZyBzbywgYnV0IG9ubHkgd2hlbiB0aGVyZSBpcyBubworCSAqIHRyYW5zYWN0 aW9uIGluIHByb2dyZXNzLgogCSAqLwotCUlOVEVSUlVQVF9HRU5FUkFMLAorCUlOVEVSUlVQ VF9BU1lOQ19OT1RJRlkgPSAxIDw8IDIsCisKKwkvKiBSYWlzZWQgYnkgdGltZXIgd2hpbGUg aWRsZSwgdG8gc2VuZCBhIHN0YXRzIHVwZGF0ZSAqLworCUlOVEVSUlVQVF9JRExFX1NUQVRT X1RJTUVPVVQgPSAxIDw8IDMsCisKKwkvKiBDb25maWcgZmlsZSByZWxvYWQgaXMgcmVxdWVz dGVkICovCisJSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgPSAxIDw8IDQsCiAKIAkvKgotCSAq IElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1 cCBwcm9jZXNzLCB0byB0ZWxsCi0JICogaXQgdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FM IHJlcGxheS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCi0JICogbW9yZSBXQUwg YXJyaXZlcywgb3Igd2hlbiBwcm9tb3Rpb24gaXMgcmVxdWVzdGVkLgorCSAqIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAgdGhlIHN0YXJ0dXAgcHJv Y2VzcywgdG8KKwkgKiB0ZWxsIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCByZXBs YXkuICBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyCisJICogd2hlbiBtb3JlIFdBTCBhcnJp dmVzLCBvciB3aGVuIHByb21vdGlvbiBpcyByZXF1ZXN0ZWQuICBXZSBkb24ndCByZXVzZQor CSAqIElOVEVSUlVQVF9HRU5FUkFMIGZvciB0aGlzLCBzbyB0aGF0IG1vcmUgV0FMIGFycml2 aW5nIGRvZXNuJ3Qgd2FrZSB1cAorCSAqIHRoZSBzdGFydHVwIHByb2Nlc3MgZXhjZXNzaXZl bHkgd2hlbiB3ZSdyZSB3YWl0aW5nIGluIG90aGVyIHBsYWNlcywKKwkgKiBsaWtlIGZvciBy ZWNvdmVyeSBjb25mbGljdHMuCiAJICovCi0JSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVF LAorCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSA9IDEgPDwgNSwKIAogCS8qIHNlbnQg dG8gbG9naWNhbCByZXBsaWNhdGlvbiBsYXVuY2hlciwgd2hlbiBhIHN1YnNjcmlwdGlvbiBj aGFuZ2VzICovCi0JSU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UsCisJSU5URVJSVVBU X1NVQlNDUklQVElPTl9DSEFOR0UgPSAxIDw8IDYsCisKKwkvKgorCSAqIE1hbnkgYXV4IHBy b2Nlc3NlcyBkb24ndCB3YW50IHRvIHJlYWN0IHRvIElOVEVSUlVQVF9ESUUgaW4KKwkgKiBD SEVDS19GT1JfSU5URVJSVVBUUygpLCBzbyB0aGV5IHVzZSBhIHNlcGFyYXRlIGZsYWcgd2hl biBzaHV0ZG93biBpcworCSAqIHJlcXVlc3RlZC4KKwkgKgorCSAqIFRPRE86IHBlcmhhcHMg dXNlIElOVEVSUlVQVF9ESUUsIGJ1dCB0ZWFjaCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRv CisJICogaWdub3JlIGl0IGluIGF1eCBwcm9jZXNzZXMsIGFuZCByZW1vdmUgaXQgZnJvbSBD aGVja0ZvckludGVycnVwdHNNYXNrLgorCSAqIFRoYXQgd291bGQgc2F2ZSBvbmUgaW50ZXJy dXB0IGJpdCwgYW5kIHdvdWxkIG1ha2UgdGhpbmdzIG1vcmUKKwkgKiBjb25zaXN0ZW50Lgor CSAqLworCUlOVEVSUlVQVF9TSFVURE9XTl9BVVggPSAxIDw8IDcsCisKKwkvKgorCSAqIFBl cmZvcm0gb25lIGxhc3QgY2hlY2twb2ludCwgdGhlbiBzaHV0IGRvd24uIE9ubHkgdXNlZCBp biB0aGUgY2hlY2twb2ludGVyCisJICogcHJvY2Vzcy4KKwkgKi8KKwlJTlRFUlJVUFRfU0hV VERPV05fWExPRyA9IDEgPDwgOCwKKworCS8qLS0tLSBJbnRlcnJ1cHRzIGhhbmRsZWQgYnkg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSAtLS0tKi8KKworCS8qCisJICogQmFja2VuZCBoYXMg YmVlbiByZXF1ZXN0ZWQgdG8gdGVybWluYXRlCisJICoKKwkgKiBUaGlzIGlzIHJhaXNlZCBi eSB0aGUgU0lHVEVSTSBzaWduYWwgaGFuZGxlciwgb3IgY2FuIGJlIHNlbnQgZGlyZWN0bHkK KwkgKiBieSBhbm90aGVyIGJhY2tlbmQgZS5nLiB3aXRoIHBnX3Rlcm1pbmF0ZV9iYWNrZW5k KCkuCisJICovCisJSU5URVJSVVBUX0RJRSA9IDEgPDwgOSwKKworCS8qCisJICogQ2FuY2Vs IGN1cnJlbnQgcXVlcnksIGlmIGFueS4KKwkgKgorCSAqIFRoaXMgaXMgcmFpc2VkIGJ5IHRo ZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyLCBvciBjYW4gYmUgc2VudCBkaXJlY3RseQorCSAq IGJ5IGFub3RoZXIgYmFja2VuZCBlLmcuIHdpdGggcGdfY2FuY2VsX2JhY2tlbmQoKSwgb3Ig aW4gcmVzcG9uc2UgdG8gYQorCSAqIHF1ZXJ5IGNhbmNlbGxhdGlvbiBwYWNrZXQuCisJICov CisJSU5URVJSVVBUX1FVRVJZX0NBTkNFTCA9IDEgPDwgMTAsCisKKwkvKiBhc2sgd2Fsc2Vu ZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KKwlJTlRFUlJVUFRfV0FMU05EX0lO SVRfU1RPUFBJTkcgPSAxIDw8IDExLAorCisJLyoKKwkgKiBSZWNvdmVyeSBjb25mbGljdCBy ZWFzb25zLiBUaGVzZSBhcmUgc2VudCBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIGhvdAor CSAqIHN0YW5kYnkgbW9kZSB3aGVuIGEgYmFja2VuZCBob2xkcyBiYWNrIHRoZSBXQUwgcmVw bGF5IGZvciB0b28gbG9uZy4KKwkgKi8KKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf REFUQUJBU0UgPSAxIDw8IDEyLAorCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9UQUJM RVNQQUNFID0gMSA8PCAxMywKKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSyA9 IDEgPDwgMTQsCisJSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UID0gMSA8 PCAxNSwKKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOID0gMSA8PCAx NiwKKwlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyA9IDEg PDwgMTcsCisJSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UID0gMSA8 PCAxOCwKKworCS8qIFJhaXNlZCBieSB0aW1lcnMgKi8KKwlJTlRFUlJVUFRfVFJBTlNBQ1RJ T05fVElNRU9VVCA9IDEgPDwgMTksCisJSU5URVJSVVBUX0lETEVfU0VTU0lPTl9USU1FT1VU ID0gMSA8PCAyMCwKKwlJTlRFUlJVUFRfSURMRV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJ TUVPVVQgPSAxIDw8IDIxLAorCUlOVEVSUlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9VVCA9IDEg PDwgMjIsCisKKwkvKiBSYWlzZWQgc3luY2hyb25vdXNseSB3aGVuIHRoZSBjbGllbnQgY29u bmVjdGlvbiBpcyBsb3N0ICovCisJSU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1Qg PSAxIDw8IDIzLAorCisJLyogQXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4 dHMgKi8KKwlJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUID0gMSA8PCAyNCwKKworCS8q IE1lc3NhZ2UgZnJvbSBhIGNvb3BlcmF0aW5nIHBhcmFsbGVsIGJhY2tlbmQgKi8KKwlJTlRF UlJVUFRfUEFSQUxMRUxfTUVTU0FHRSA9IDEgPDwgMjUsCisKKwkvKiBNZXNzYWdlIGZyb20g YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwlJTlRFUlJVUFRfUEFSQUxMRUxfQVBQTFlf TUVTU0FHRSA9IDEgPDwgMjYsCisKKwkvKiBwcm9jc2lnbmFsIGdsb2JhbCBiYXJyaWVyIGlu dGVycnVwdCAgKi8KKwlJTlRFUlJVUFRfQkFSUklFUiA9IDEgPDwgMjcsCisKKwkvKi0tLS0g ZW5kIG9mIGludGVycnVwdHMgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpIC0t LS0qLworCisJLyoKKwkgKiBOT1RFOiBJbnRlcnJ1cHRUeXBlcyBtdXN0IGZpdCBpbiBhIDMy LWJpdCBiaXRtYXNrLiAoSWYgd2UgaGFkIGVmZmljaWVudAorCSAqIDY0LWJpdCBhdG9taWNz IG9uIGFsbCBwbGF0Zm9ybXMsIHdlIGNvdWxkIGVhc2lseSBnbyB1cCB0byA2NCBiaXRzKQor CSAqLworCisJLyoKKwkgKiBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGluZGljYXRlcyB0aGF0 IHRoZSBiYWNrZW5kIGlzIGN1cnJlbnRseSBibG9ja2VkCisJICogd2FpdGluZyBmb3IgYW4g aW50ZXJydXB0LiBJZiBpdCdzIHNldCwgdGhlIGJhY2tlbmQgbmVlZHMgdG8gYmUgd29rZW4g dXAKKwkgKiB3aGVuIGEgYml0IGluIHRoZSBwZW5kaW5nIGludGVycnVwdHMgbWFzayBpcyBz ZXQuIEl0J3MgdXNlZCBpbnRlcm5hbGx5CisJICogYnkgdGhlIGludGVycnVwdCBtYWNoaW5l cnksIGFuZCBjYW5ub3QgYmUgdXNlZCBkaXJlY3RseSBpbiB0aGUgcHVibGljCisJICogZnVu Y3Rpb25zLiBJdCdzIG5hbWVkIGRpZmZlcmVudGx5IHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20g dGhlIGFjdHVhbAorCSAqIGludGVycnVwdCBmbGFncy4KKwkgKi8KKwlTTEVFUElOR19PTl9J TlRFUlJVUFRTID0gMSA8PCAzMSwKKwogfSBJbnRlcnJ1cHRUeXBlOwogCi0vKgotICogVGVz dCBhbiBpbnRlcnJ1cHQgZmxhZy4KLSAqLwotc3RhdGljIGlubGluZSBib29sCi1JbnRlcnJ1 cHRJc1BlbmRpbmcoSW50ZXJydXB0VHlwZSByZWFzb24pCi17Ci0JcmV0dXJuIChwZ19hdG9t aWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiAoMSA8PCByZWFzb24pKSAhPSAw OwotfQorLyogVGhpcyBpcyB0aGUgc2V0IG9mIGludGVycnVwdHMgdGhhdCBhcmUgcHJvY2Vz c2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTICovCisjZGVmaW5lIElOVEVSUlVQVF9DRklf TUFTSwkoCQkJCQkJCVwKKwkJSU5URVJSVVBUX0RJRSB8CQkJCQkJCQkJXAorCQlJTlRFUlJV UFRfUVVFUllfQ0FOQ0VMIHwJCQkJCQlcCisJCUlOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9Q UElORyB8CQkJCVwKKwkJSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFIHwJ CQlcCisJCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFIHwJCVwKKwkJ SU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0sgfAkJCQlcCisJCUlOVEVSUlVQVF9S RUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCB8CQkJXAorCQlJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1RfQlVGRkVSUElOIHwJCQlcCisJCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElD VF9TVEFSVFVQX0RFQURMT0NLIHwJXAorCQlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf TE9HSUNBTFNMT1QgfAkJXAorCQlJTlRFUlJVUFRfVFJBTlNBQ1RJT05fVElNRU9VVCB8CQkJ CQlcCisJCUlOVEVSUlVQVF9JRExFX1NFU1NJT05fVElNRU9VVCB8CQkJCVwKKwkJSU5URVJS VVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VUIHwJXAorCQlJTlRFUlJV UFRfQ0xJRU5UX0NIRUNLX1RJTUVPVVQgfAkJCQlcCisJCUlOVEVSUlVQVF9DTElFTlRfQ09O TkVDVElPTl9MT1NUIHwJCQkJXAorCQlJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUIHwJ CQkJCVwKKwkJSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UgfAkJCQkJXAorCQlJTlRFUlJV UFRfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSB8CQkJCVwKKwkJSU5URVJSVVBUX0JBUlJJRVIJ CQkJCQkJCVwKKwkJKQorCisvKiBUaGlzIGlzIHRoZSBzZXQgb2YgaW50ZXJydXB0cyB0aGF0 IGFyZSBwcm9jZXNzZWQgYnkgUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cyAqLworI2Rl ZmluZSBJTlRFUlJVUFRfU1RBUlRVUF9QUk9DX01BU0sJKAkJCVwKKwkJSU5URVJSVVBUX0JB UlJJRVIgfAkJCQkJCVwKKwkJSU5URVJSVVBUX0RJRSB8CQkJCQkJCVwKKwkJSU5URVJSVVBU X0xPR19NRU1PUllfQ09OVEVYVCB8CQkJXAorCQlJTlRFUlJVUFRfQ09ORklHX1JFTE9BRAkJ CQkJXAorCQkpCisKKy8qIFRoaXMgaXMgdGhlIHNldCBvZiBpbnRlcnJ1cHRzIHRoYXQgYXJl IHByb2Nlc3NlZCBieSBQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzICovCisjZGVmaW5lIElO VEVSUlVQVF9NQUlOX0xPT1BfTUFTSwkoCQkJXAorCQlJTlRFUlJVUFRfQkFSUklFUiB8CQkJ CQkJXAorCQlJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwJCQkJXAorCQlJTlRFUlJVUFRfTE9H X01FTU9SWV9DT05URVhUIHwJCQlcCisJCUlOVEVSUlVQVF9DT05GSUdfUkVMT0FECQkJCQlc CisJCSkKIAogLyoKLSAqIFRlc3QgYW4gaW50ZXJydXB0IGZsYWcuCisgKiBUZXN0IGFuIGlu dGVycnVwdCBmbGFnIChvciBmbGFncykuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbAotSW50 ZXJydXB0c1BlbmRpbmcodWludDMyIG1hc2spCitJbnRlcnJ1cHRQZW5kaW5nKHVpbnQzMiBp bnRlcnJ1cHRNYXNrKQogewotCXJldHVybiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGlu Z0ludGVycnVwdHMpICYgKG1hc2spKSAhPSAwOworCXBnX3JlYWRfYmFycmllcigpOworCXJl dHVybiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgaW50ZXJy dXB0TWFzaykgIT0gMDsKIH0KIAogLyoKLSAqIENsZWFyIGFuIGludGVycnVwdCBmbGFnLgor ICogQ2xlYXIgYW4gaW50ZXJydXB0IGZsYWcgKG9yIGZsYWdzKS4KICAqLwogc3RhdGljIGlu bGluZSB2b2lkCi1DbGVhckludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKK0NsZWFy SW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewotCXBnX2F0b21pY19mZXRjaF9h bmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oMSA8PCByZWFzb24pKTsKKwlwZ19hdG9t aWNfZmV0Y2hfYW5kX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCB+aW50ZXJydXB0TWFzayk7 CisJcGdfd3JpdGVfYmFycmllcigpOwogfQogCiAvKgotICogVGVzdCBhbmQgY2xlYXIgYW4g aW50ZXJydXB0IGZsYWcuCisgKiBUZXN0IGFuZCBjbGVhciBhbiBpbnRlcnJ1cHQgZmxhZyAo b3IgZmxhZ3MpLgogICovCiBzdGF0aWMgaW5saW5lIGJvb2wKLUNvbnN1bWVJbnRlcnJ1cHQo SW50ZXJydXB0VHlwZSByZWFzb24pCitDb25zdW1lSW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1 cHRNYXNrKQogewotCWlmIChsaWtlbHkoIUludGVycnVwdElzUGVuZGluZyhyZWFzb24pKSkK KwlpZiAobGlrZWx5KCFJbnRlcnJ1cHRQZW5kaW5nKGludGVycnVwdE1hc2spKSkKIAkJcmV0 dXJuIGZhbHNlOwogCi0JQ2xlYXJJbnRlcnJ1cHQocmVhc29uKTsKKwlDbGVhckludGVycnVw dChpbnRlcnJ1cHRNYXNrKTsKIAogCXJldHVybiB0cnVlOwogfQogCi1leHRlcm4gdm9pZCBS YWlzZUludGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbik7Ci1leHRlcm4gdm9pZCBTZW5k SW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVhc29uLCBQcm9jTnVtYmVyIHBncHJvY25vKTsK K2V4dGVybiB2b2lkIFJhaXNlSW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrKTsKK2V4 dGVybiB2b2lkIFNlbmRJbnRlcnJ1cHQodWludDMyIGludGVycnVwdE1hc2ssIFByb2NOdW1i ZXIgcGdwcm9jbm8pOwogZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1 cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAogCQkJCQkJICB1aW50MzIg d2FpdF9ldmVudF9pbmZvKTsKIGV4dGVybiBpbnQJV2FpdEludGVycnVwdE9yU29ja2V0KHVp bnQzMiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NhcnJheS5oCmluZGV4IGVmMGI3MzNlYmU4Li5lOGI4YzBhNjUzZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaWZuZGVm IFBST0NBUlJBWV9ICiAjZGVmaW5lIFBST0NBUlJBWV9ICiAKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCkBAIC03Nywx NCArNzgsMTQgQEAgZXh0ZXJuIFZpcnR1YWxUcmFuc2FjdGlvbklkICpHZXRDdXJyZW50Vmly dHVhbFhJRHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4sCiAJCQkJCQkJCQkJCQkgICBib29s IGV4Y2x1ZGVYbWluMCwgYm9vbCBhbGxEYnMsIGludCBleGNsdWRlVmFjdXVtLAogCQkJCQkJ CQkJCQkJICAgaW50ICpudnhpZHMpOwogZXh0ZXJuIFZpcnR1YWxUcmFuc2FjdGlvbklkICpH ZXRDb25mbGljdGluZ1ZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBPaWQg ZGJPaWQpOwotZXh0ZXJuIHBpZF90IENhbmNlbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFs VHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUpOwotZXh0ZXJu IHBpZF90IFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCitleHRlcm4gcGlkX3QgQ2FuY2VsVmly dHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIEludGVycnVwdFR5 cGUgcmVhc29uKTsKK2V4dGVybiBwaWRfdCBTaWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmly dHVhbFRyYW5zYWN0aW9uSWQgdnhpZCwgSW50ZXJydXB0VHlwZSByZWFzb24sCiAJCQkJCQkJ CQkgIGJvb2wgY29uZmxpY3RQZW5kaW5nKTsKIAogZXh0ZXJuIGJvb2wgTWluaW11bUFjdGl2 ZUJhY2tlbmRzKGludCBtaW4pOwogZXh0ZXJuIGludAlDb3VudERCQmFja2VuZHMoT2lkIGRh dGFiYXNlaWQpOwogZXh0ZXJuIGludAlDb3VudERCQ29ubmVjdGlvbnMoT2lkIGRhdGFiYXNl aWQpOwotZXh0ZXJuIHZvaWQgQ2FuY2VsREJCYWNrZW5kcyhPaWQgZGF0YWJhc2VpZCwgUHJv Y1NpZ25hbFJlYXNvbiBzaWdtb2RlLCBib29sIGNvbmZsaWN0UGVuZGluZyk7CitleHRlcm4g dm9pZCBDYW5jZWxEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZWlkLCBJbnRlcnJ1cHRUeXBlIHJl YXNvbiwgYm9vbCBjb25mbGljdFBlbmRpbmcpOwogZXh0ZXJuIGludAlDb3VudFVzZXJCYWNr ZW5kcyhPaWQgcm9sZWlkKTsKIGV4dGVybiBib29sIENvdW50T3RoZXJEQkJhY2tlbmRzKE9p ZCBkYXRhYmFzZUlkLAogCQkJCQkJCQkgaW50ICpuYmFja2VuZHMsIGludCAqbnByZXBhcmVk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggMDIyZmQ4ZWQ5MzMuLjhkOTE3 ZjFiZWM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMTQsNDMgKzE0LDYg QEAKICNpZm5kZWYgUFJPQ1NJR05BTF9ICiAjZGVmaW5lIFBST0NTSUdOQUxfSAogCi0jaW5j bHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCi0KLQotLyoKLSAqIFJlYXNvbnMgZm9yIHNp Z25hbGluZyBhIFBvc3RncmVzIGNoaWxkIHByb2Nlc3MgKGEgYmFja2VuZCBvciBhbiBhdXhp bGlhcnkKLSAqIHByb2Nlc3MsIGxpa2UgY2hlY2twb2ludGVyKS4gIFdlIGNhbiBjb3BlIHdp dGggY29uY3VycmVudCBzaWduYWxzIGZvciBkaWZmZXJlbnQKLSAqIHJlYXNvbnMuICBIb3dl dmVyLCBpZiB0aGUgc2FtZSByZWFzb24gaXMgc2lnbmFsZWQgbXVsdGlwbGUgdGltZXMgaW4g cXVpY2sKLSAqIHN1Y2Nlc3Npb24sIHRoZSBwcm9jZXNzIGlzIGxpa2VseSB0byBvYnNlcnZl IG9ubHkgb25lIG5vdGlmaWNhdGlvbiBvZiBpdC4KLSAqIFRoaXMgaXMgb2theSBmb3IgdGhl IHByZXNlbnQgdXNlcy4KLSAqCi0gKiBBbHNvLCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9u cywgaXQncyBpbXBvcnRhbnQgdGhhdCBhbGwgdGhlIHNpZ25hbHMgYmUKLSAqIGRlZmluZWQg c28gdGhhdCBubyBoYXJtIGlzIGRvbmUgaWYgYSBwcm9jZXNzIG1pc3Rha2VubHkgcmVjZWl2 ZXMgb25lLgotICovCi10eXBlZGVmIGVudW0KLXsKLQlQUk9DU0lHX0NBVENIVVBfSU5URVJS VVBULAkvKiBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHQgKi8KLQlQUk9DU0lHX05PVElGWV9J TlRFUlJVUFQsCS8qIGxpc3Rlbi9ub3RpZnkgaW50ZXJydXB0ICovCi0JUFJPQ1NJR19QQVJB TExFTF9NRVNTQUdFLAkvKiBtZXNzYWdlIGZyb20gY29vcGVyYXRpbmcgcGFyYWxsZWwgYmFj a2VuZCAqLwotCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5k ZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwotCVBST0NTSUdfQkFSUklFUiwJCQkv KiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCi0JUFJPQ1NJR19MT0dfTUVNT1JZX0NP TlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCi0J UFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxs ZWwgYXBwbHkgd29ya2VycyAqLwotCi0JLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAq LwotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfRklSU1QsCi0JUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9EQVRBQkFTRSA9IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfRklSU1Qs Ci0JUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAotCVBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9DSywKLQlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCi0JUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCi0JUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TVEFSVFVQX0RFQURMT0NLLAotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTEFT VCA9IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSywKLX0gUHJv Y1NpZ25hbFJlYXNvbjsKLQotI2RlZmluZSBOVU1fUFJPQ1NJR05BTFMgKFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTEFTVCArIDEpCi0KIHR5cGVkZWYgZW51bQogewogCVBST0NTSUdO QUxfQkFSUklFUl9TTUdSUkVMRUFTRSwgLyogYXNrIHNtZ3IgdG8gY2xvc2UgZmlsZXMgKi8K QEAgLTYzLDE2ICsyNiwxMiBAQCBleHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2htZW1TaXplKHZv aWQpOwogZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKIAogZXh0ZXJu IHZvaWQgUHJvY1NpZ25hbEluaXQoYm9vbCBjYW5jZWxfa2V5X3ZhbGlkLCBpbnQzMiBjYW5j ZWxfa2V5KTsKLWV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2ln bmFsUmVhc29uIHJlYXNvbiwKLQkJCQkJCSAgIFByb2NOdW1iZXIgcHJvY051bWJlcik7CiBl eHRlcm4gdm9pZCBTZW5kQ2FuY2VsUmVxdWVzdChpbnQgYmFja2VuZFBJRCwgaW50MzIgY2Fu Y2VsQXV0aENvZGUpOwogCiBleHRlcm4gdWludDY0IEVtaXRQcm9jU2lnbmFsQmFycmllcihQ cm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSk7CiBleHRlcm4gdm9pZCBXYWl0Rm9yUHJvY1Np Z25hbEJhcnJpZXIodWludDY0IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1By b2NTaWduYWxCYXJyaWVyKHZvaWQpOwogCi1leHRlcm4gdm9pZCBwcm9jc2lnbmFsX3NpZ3Vz cjFfaGFuZGxlcihTSUdOQUxfQVJHUyk7Ci0KIC8qIFByb2NTaWduYWxIZWFkZXIgaXMgYW4g b3BhcXVlIHN0cnVjdCwgZGV0YWlscyBrbm93biBvbmx5IHdpdGhpbiBwcm9jc2lnbmFsLmMg Ki8KIHR5cGVkZWYgc3RydWN0IFByb2NTaWduYWxIZWFkZXIgUHJvY1NpZ25hbEhlYWRlcjsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2ludmFsLmgKaW5kZXggMjQ2M2MwZjlmYWMuLmNjNjI3YWU0ODUzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2ludmFsLmgKQEAgLTEyNSwxNiArMTI1LDExIEBAIHR5cGVkZWYgdW5p b24KIC8qIENvdW50ZXIgb2YgbWVzc2FnZXMgcHJvY2Vzc2VkOyBkb24ndCB3b3JyeSBhYm91 dCBvdmVyZmxvdy4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgU2hhcmVkSW52YWxp ZE1lc3NhZ2VDb3VudGVyOwogCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0 b21pY190IGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nOwotCiBleHRlcm4gdm9pZCBTZW5kU2hh cmVkSW52YWxpZE1lc3NhZ2VzKGNvbnN0IFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1z Z3MsCiAJCQkJCQkJCQkgIGludCBuKTsKIGV4dGVybiB2b2lkIFJlY2VpdmVTaGFyZWRJbnZh bGlkTWVzc2FnZXModm9pZCAoKmludmFsRnVuY3Rpb24pIChTaGFyZWRJbnZhbGlkYXRpb25N ZXNzYWdlICptc2cpLAogCQkJCQkJCQkJCSB2b2lkICgqcmVzZXRGdW5jdGlvbikgKHZvaWQp KTsKIAotLyogc2lnbmFsIGhhbmRsZXIgZm9yIGNhdGNodXAgZXZlbnRzIChQUk9DU0lHX0NB VENIVVBfSU5URVJSVVBUKSAqLwotZXh0ZXJuIHZvaWQgSGFuZGxlQ2F0Y2h1cEludGVycnVw dCh2b2lkKTsKLQogLyoKICAqIGVuYWJsZS9kaXNhYmxlIHByb2Nlc3Npbmcgb2YgY2F0Y2h1 cCBldmVudHMgZGlyZWN0bHkgZnJvbSBzaWduYWwgaGFuZGxlci4KICAqIFRoZSBlbmFibGUg cm91dGluZSBmaXJzdCBwZXJmb3JtcyBwcm9jZXNzaW5nIG9mIGFueSBjYXRjaHVwIGV2ZW50 cyB0aGF0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oCmluZGV4IDI0ZTJmNTA4MmJjLi45NjBkMDhj YTI5NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTE1LDggKzE1LDggQEAKICNkZWZp bmUgU1RBTkRCWV9ICiAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgot I2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVs ZmlsZWxvY2F0b3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnlkZWZzLmgiCiAKQEAg LTQzLDcgKzQzLDcgQEAgZXh0ZXJuIHZvaWQgQ2hlY2tSZWNvdmVyeUNvbmZsaWN0RGVhZGxv Y2sodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5RGVhZExvY2tIYW5kbGVyKHZvaWQpOwog ZXh0ZXJuIHZvaWQgU3RhbmRieVRpbWVvdXRIYW5kbGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQg U3RhbmRieUxvY2tUaW1lb3V0SGFuZGxlcih2b2lkKTsKLWV4dGVybiB2b2lkIExvZ1JlY292 ZXJ5Q29uZmxpY3QoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFRpbWVzdGFtcFR6IHdhaXRf c3RhcnQsCitleHRlcm4gdm9pZCBMb2dSZWNvdmVyeUNvbmZsaWN0KEludGVycnVwdFR5cGUg cmVhc29uLCBUaW1lc3RhbXBUeiB3YWl0X3N0YXJ0LAogCQkJCQkJCQlUaW1lc3RhbXBUeiBu b3csIFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0X2xpc3QsCiAJCQkJCQkJCWJvb2wgc3Rp bGxfd2FpdGluZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2 ZW50c2V0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCmluZGV4IDYw ZWNlY2I3ODVjLi5jOWFiODEzNmI1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS93YWl0ZXZlbnRzZXQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNl dC5oCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKICNpbmNsdWRl ICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKLSNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog CiAvKgogICogQml0bWFza3MgZm9yIGV2ZW50cyB0aGF0IG1heSB3YWtlLXVwIFdhaXRJbnRl cnJ1cHQoKSwKQEAgLTgyLDcgKzgxLDkgQEAgZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhaXRF dmVudFN1cHBvcnQodm9pZCk7CiBleHRlcm4gSEFORExFIENyZWF0ZVNoYXJlZFdha2V1cEhh bmRsZSh2b2lkKTsKICNlbmRpZgogCi1leHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0 RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwgaW50IG5ldmVudHMpOworc3RydWN0 IFJlc291cmNlT3duZXJEYXRhOworCitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0 RXZlbnRTZXQoc3RydWN0IFJlc291cmNlT3duZXJEYXRhICpyZXNvd25lciwgaW50IG5ldmVu dHMpOwogZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRTZXQgKnNldCk7 CiBleHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAq c2V0KTsKIGV4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQs IHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IGE2 MjM2N2Y3NzkzLi45MDhmMzkyMTdiMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC90 Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApAQCAtMTYsNyAr MTYsNiBAQAogCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgiCiAjaW5jbHVkZSAibm9kZXMv cGxhbm5vZGVzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgog CkBAIC03Miw5ICs3MSw4IEBAIGV4dGVybiB2b2lkIGRpZShTSUdOQUxfQVJHUyk7CiBleHRl cm4gdm9pZCBxdWlja2RpZShTSUdOQUxfQVJHUykgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7 CiBleHRlcm4gdm9pZCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJR05BTF9BUkdTKTsKIGV4 dGVybiB2b2lkIEZsb2F0RXhjZXB0aW9uSGFuZGxlcihTSUdOQUxfQVJHUykgcGdfYXR0cmli dXRlX25vcmV0dXJuKCk7Ci1leHRlcm4gdm9pZCBIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50 ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKTsKLWV4dGVybiB2b2lkIFByb2Nlc3ND bGllbnRSZWFkSW50ZXJydXB0KGJvb2wgYmxvY2tlZCk7Ci1leHRlcm4gdm9pZCBQcm9jZXNz Q2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKK2V4dGVybiB1aW50MzIgUHJv Y2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKK2V4dGVybiB1aW50MzIg UHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCk7CiAKIGV4dGVybiB2 b2lkIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwK IAkJCQkJCQkJCSAgR3VjQ29udGV4dCBjdHgsIGNvbnN0IGNoYXIgKipkYm5hbWUpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL21lbXV0aWxzLmgKaW5kZXggOGFiYzI2YWJjZTIuLjVkY2UyMDJmZTkwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL21lbXV0aWxzLmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBleHRlcm4gdm9pZCBNZW1vcnlD b250ZXh0Q2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKICNkZWZpbmUgTWVtb3J5Q29u dGV4dENvcHlBbmRTZXRJZGVudGlmaWVyKGN4dCwgaWQpIFwKIAlNZW1vcnlDb250ZXh0U2V0 SWRlbnRpZmllcihjeHQsIE1lbW9yeUNvbnRleHRTdHJkdXAoY3h0LCBpZCkpCiAKLWV4dGVy biB2b2lkIEhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4g dm9pZCBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKTsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwppbmRleCA1ZjMxYmY3MDgyYi4uYWFm M2E5YWUxOTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0 dXAuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKQEAgLTI2 Myw2ICsyNjMsOSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFkeSh3b3JrZXJf c3RhdGUgKndzdGF0ZSwKIAl7CiAJCWludAkJCXdvcmtlcnNfcmVhZHk7CiAKKwkJLyogQ2xl YXIgdGhlIGludGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwogCQkvKiBJZiBhbGwgdGhlIHdvcmtlcnMg YXJlIHJlYWR5LCB3ZSBoYXZlIHN1Y2NlZWRlZC4gKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZo ZHItPm11dGV4KTsKIAkJd29ya2Vyc19yZWFkeSA9IGhkci0+d29ya2Vyc19yZWFkeTsKQEAg LTI4NSwxMiArMjg4LDEwIEBAIHdhaXRfZm9yX3dvcmtlcnNfdG9fYmVjb21lX3JlYWR5KHdv cmtlcl9zdGF0ZSAqd3N0YXRlLAogCQkJd2VfYmd3b3JrZXJfc3RhcnR1cCA9IFdhaXRFdmVu dEV4dGVuc2lvbk5ldygiVGVzdFNobU1xQmdXb3JrZXJTdGFydHVwIik7CiAKIAkJLyogV2Fp dCB0byBiZSBzaWduYWxlZC4gKi8KLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5URVJSVVBU X0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCiAJCQkJCQkJIHdlX2Jnd29ya2VyX3N0YXJ0dXApOwogCi0JCS8qIENsZWFyIHRoZSBp bnRlcnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7Ci0KIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3Vy cmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Qu YyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCmluZGV4IGNlOTFkNzRj YTIwLi5mMDYzY2FiOWJhZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS90ZXN0LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMK QEAgLTE3MSw2ICsxNzEsOCBAQCB0ZXN0X3NobV9tcV9waXBlbGluZWQoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWJvb2wJCXdhaXQgPSB0cnVlOwogCisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKKwogCQkvKgogCQkgKiBJZiB3ZSBoYXZlbid0IHlldCBzZW50 IHRoZSBtZXNzYWdlIHRoZSByZXF1aXNpdGUgbnVtYmVyIG9mIHRpbWVzLAogCQkgKiB0cnkg YWdhaW4gdG8gc2VuZCBpdCBub3cuICBOb3RlIHRoYXQgd2hlbiBzaG1fbXFfc2VuZCgpIHJl dHVybnMKQEAgLTIzOSw5ICsyNDEsOSBAQCB0ZXN0X3NobV9tcV9waXBlbGluZWQoUEdfRlVO Q1RJT05fQVJHUykKIAkJCSAqIHRoZXkgaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQg dGhlcmVmb3JlIHRoZXJlIG1heSBub3cgYmUKIAkJCSAqIHdvcmsgZm9yIHVzIHRvIGRvLgog CQkJICovCi0JCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM LCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLIHwgSU5URVJSVVBUX0dFTkVSQUwsCisJ CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAogCQkJCQkJ CQkgd2VfbWVzc2FnZV9xdWV1ZSk7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0 L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKaW5kZXggNTczNjYyMDgzMmYuLjg0 MDUyYTk5MmNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29y a2VyX3NwaS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3Bp LmMKQEAgLTIxNyw3ICsyMTcsOSBAQCB3b3JrZXJfc3BpX21haW4oRGF0dW0gbWFpbl9hcmcp CiAJCSAqIGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4gIFRoYXQgd2F5IHRoZSBi YWNrZ3JvdW5kIHByb2Nlc3MKIAkJICogZ29lcyBhd2F5IGltbWVkaWF0ZWx5IGluIGFuIGVt ZXJnZW5jeS4KIAkJICovCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUwsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8 CisJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCQkgSU5URVJSVVBU X0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAogCQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwKIAkJ CQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21haW4pOwpAQCAtMjI4LDExICsyMzAsOCBA QCB3b3JrZXJfc3BpX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJCS8qCiAJCSAqIEluIGNhc2Ug b2YgYSBTSUdIVVAsIGp1c3QgcmVsb2FkIHRoZSBjb25maWd1cmF0aW9uLgogCQkgKi8KLQkJ aWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxP QUQpKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKgog CQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHdoaWNoIHdlIGNhbiBydW4gcXVlcmllcy4g IE5vdGUgdGhhdCBlYWNoCi0tIAoyLjM5LjUKCg== --------------OZXx96FoefdRECznQzl2Ss4O--