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 1sk9wU-008ErF-26 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2024 22:18:07 +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 1sk9wR-00C6gu-Ss for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2024 22:18:04 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sk9wQ-00C6ew-J9 for pgsql-hackers@lists.postgresql.org; Fri, 30 Aug 2024 22:18:03 +0000 Received: from meesny.iki.fi ([2001:67c:2b0:1c1::201]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sk9wB-002F3P-SV for pgsql-hackers@postgresql.org; Fri, 30 Aug 2024 22:18:01 +0000 Received: from [192.168.1.110] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (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 meesny.iki.fi (Postfix) with ESMTPSA id 4WwXZs4SJ8zyTV; Sat, 31 Aug 2024 01:17:41 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1725056262; 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=XFOsCqQ6GNl9fsdUmudLkk/UdElxsi9Hyc6JtLdnsQI=; b=P+AxhnHi52iomldYxAvXBGi7pqEYVEtnN2AdUNAdfy9iZXmFYJM1e8mXzjB3HfYaeOIytD ykFQR4aVoBcT4iq+Im4blsU2k1gBAqklr+BwXXpQ1H8I8YDRPWqzNTyaPx1jOv/gc2cR4Z bvgMwVuSuVfU13JZW+cnCzcBs5CdEtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1725056262; 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=XFOsCqQ6GNl9fsdUmudLkk/UdElxsi9Hyc6JtLdnsQI=; b=DxvhoM27vX816DfGHEMTcIdVslRDMmOMteT1KtkbQubMvuBxDZnpmtikuU7zw6qrNFpIRB O73lMjWLaKvVTFlkMcHc+iSYpBwz4p7RSZSFIC0eA6xvR4wTGNy4uDZu2ibIWJ6mz8SR2u /2cGQJHQPHKuhKCxKFOd7X4lTSSkUDU= ARC-Seal: i=1; s=meesny; d=iki.fi; t=1725056262; a=rsa-sha256; cv=none; b=kIOQT/WcfUTpivY+wrl5wUVBho3RM2VEgEY87ZAnVtnDprxT6v/a6OSZDu8UYKzg+/tK12 vnvwMzuFqg+VOyxBYmoPdGG1unrc7KZg3zrij6VGF0/yVyEfewNyfWypgylGjRonHpiPaS g1zUVS70Iz3wG3XOPxKUyM94GOD521Q= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------AZiMqnU9Aq4oPSw1HqIDr3h2" Message-ID: <391abe21-413e-4d91-a650-b663af49500c@iki.fi> Date: Sat, 31 Aug 2024 01:17:40 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals To: Thomas Munro , Fujii Masao Cc: pgsql-hackers , Andres Freund , Robert Haas References: <20211020192748.dguzfnnd4hzh7e5v@alap3.anarazel.de> <20211111195000.v5fmy5yvtqcbvo55@alap3.anarazel.de> <3b996d73-2a10-4072-a58d-0386af0cbb78@iki.fi> <46f047a1-bfd5-406a-a0f3-97205d9529ad@iki.fi> <476672e7-62f1-4cab-a822-f3a8e949dd3f@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. --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 26/08/2024 02:05, Thomas Munro wrote: > On Sun, Aug 25, 2024 at 5:17 AM Heikki Linnakangas wrote: >> On 07/08/2024 17:59, Heikki Linnakangas wrote: >>> I'm also wondering about the relationship between interrupts and >>> latches. Currently, SendInterrupt sets a latch to wake up the target >>> process. I wonder if it should be the other way 'round? Move all the >>> wakeup code, with the signalfd, the self-pipe etc to interrupt.c, and in >>> SetLatch, call SendInterrupt to wake up the target process? Somehow that >>> feels more natural to me, I think. >> >> I explored that a little, see attached patch set. It's going towards the >> same end state as your patches, I think, but it starts from different >> angle. In a nutshell: >> >> Remove Latch as an abstraction, and replace all use of Latches with >> Interrupts. When I originally created the Latch abstraction, I imagined >> that we would have different latches for different purposes, but in >> reality, almost all code just used the general-purpose "process latch". >> this patch accepts that reality and replaces the Latch struct directly >> with the interrupt mask in PGPROC. > > Some very initial reactions: > > * I like it! Ok, here's a new version, with a bunch of bugs and FIXMEs fixed, comments and other polish. A few things remain that I'm not sure about: - Terminology. We now have storage/interrupt.h and postmaster/interrupt.h. They're not the same thing, but there's also some overlap, especially after your patch set is applied. Aside from filenames, "interrupt" now means at least two things: a wakeup that you can send to a backend with SendInterrupt, and the thing that you check with CHECK_FOR_INTERRUPTS(). They're related, but different. To show case that confusion, the patch now contains this gem, which was a result of mechanically replacing "latch" with "interrupt": * We process interrupts whenever the interrupt has been set, so * cancel/die interrupts are processed quickly. - Fujii: this replaces the "recoveryWakeupLatch" with a separate interrupt type. There was an earlier attempt at replacing recoveryWakeupLatch with the process's regular latch which was reverted, commits ac22929a26, and 00f690a239. I think this solution doesn't suffer from the same problems as that earlier attempt, but if you have a chance to review this, I would appreciate that. In a nutshell, INTERRUPT_RECOVERY_CONTINUE interrupt is now used instead of recoveryWakeupLatch, but the places that previously waited just on recoveryWakeupLatch, now wait on both INTERRUPT_GENERAL_WAKEUP, which is equivalent to waiting on the process latch, and INTERRUPT_RECOVERY_CONTINUE. So those loops should now react more quickly to signals like SIGHUP. - Backwards-compatibility and extensions. This will break any extensions that use Latches. Extensions that just used WaitLatch(MyLatch) or similar are easy to convert to use latches instead. Or we could keep around some backwards-compatibility macros like 0008 here does, to avoid the code churn. However, if an extension is creating its own latches or doing more complicated stuff with them, it gets harder to maintain source-code compatibility for them. Aside from the backwards-compatibility aspect, should we reserve a few INTERRUPT_* values for extensions? > * This direction seems to fit quite nicely with future ideas about > asynchronous network I/O. That may sound unrelated, but imagine that > a future version of WaitEventSet is built on Linux io_uring (or > Windows iorings, or Windows IOCP, or kqueue), and waits for the kernel > to tell you that network data has been transferred directly into a > user space buffer. You could wait for the interrupt word to change at > the same time by treating it as a futex[1]. Then all that other stuff > -- signalfd, is_set, maybe_sleeping -- just goes away, and all we have > left is one single word in memory. (That it is possible to do that is > not really a coincidence, as our own Mr Freund asked Mr Axboe to add > it[2]. The existing latch implementation techniques could be used as > fallbacks, but when looked at from the right angle, once you squish > all the wakeup reasons into a single word, it's all just an > implementation of a multiplexable futex with extra steps.) Cool > * Speaking of other problems in other threads that might be solved by > this redesign, I think I see the outline of some solutions to the > problem of different classes of wakeup which you can handle at > different times, using masks. There is a tension in a few places > where we want to handle some kind of interrupts but not others in > localised wait points, which we sort of try to address by holding > interrupts or holding cancel interrupts, but it's not satisfying and > there are some places where it doesn't work well. Needs a lot more > thought, but a basic step would be: after old_interrupt_vector = > pg_atomic_fetch_or_u32(interrupt_vector, new_bits), if > (old_interrupt_vector & new_bits) == new_bits, then you didn't > actually change any bits, so you probably don't really need to wake > the other backend. If someone is currently unable to handle that type > of interrupt (has ignored, ie not cleared, those bits) or is already > in the process of handling it (is currently being rescheduled but > hasn't cleared those bits yet), then you don't bother to wake it up. > Concretely, it could mean that we avoid some of the useless wakeup > storm problems we see in vacuum delays or while executing a query and > not in a good place to handle sinval wakeups, etc. These are just > some raw thoughts, I am not sure about the bigger picture of that > topic yet. Yeah, I expect this work to help with those issues, but also not sure of the details yet. -- Heikki Linnakangas Neon (https://neon.tech) --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Remove-unused-latch.patch" Content-Disposition: attachment; filename="v2-0001-Remove-unused-latch.patch" Content-Transfer-Encoding: base64 RnJvbSBhMTg0MjE4MTUxODNmNjY0OTVhOTFlNzM0NGJmNjA2ZjY2ZGZiYjBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjQgQXVnIDIwMjQgMDE6MDQ6MjEgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDAxLzEyXSBSZW1vdmUgdW51c2VkIGxhdGNoCgpJdCB3YXMg bGVmdCB1bnVzZWQgYnkgY29tbWl0IGJjOTcxZjQwMjUsIHdoaWNoIHJlcGxhY2VkIHRoZSBs YXRjaAp1c2FnZSB3aXRoIGEgY29uZGl0aW9uIHZhcmlhYmxlCi0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICB8IDMgLS0tCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIHwgNyAtLS0tLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggYzVmMTAwOWYzNy4uODY2YjY5ZWM4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKQEAgLTI5MzUsNyArMjkzNSw2IEBAIEluaXRXYWxTZW5kZXJTbG90 KHZvaWQpCiAJCQl3YWxzbmQtPmZsdXNoTGFnID0gLTE7CiAJCQl3YWxzbmQtPmFwcGx5TGFn ID0gLTE7CiAJCQl3YWxzbmQtPnN5bmNfc3RhbmRieV9wcmlvcml0eSA9IDA7Ci0JCQl3YWxz bmQtPmxhdGNoID0gJk15UHJvYy0+cHJvY0xhdGNoOwogCQkJd2Fsc25kLT5yZXBseVRpbWUg PSAwOwogCiAJCQkvKgpAQCAtMjk3OSw4ICsyOTc4LDYgQEAgV2FsU25kS2lsbChpbnQgY29k ZSwgRGF0dW0gYXJnKQogCU15V2FsU25kID0gTlVMTDsKIAogCVNwaW5Mb2NrQWNxdWlyZSgm d2Fsc25kLT5tdXRleCk7Ci0JLyogY2xlYXIgbGF0Y2ggd2hpbGUgaG9sZGluZyB0aGUgc3Bp bmxvY2ssIHNvIGl0IGNhbiBzYWZlbHkgYmUgcmVhZCAqLwotCXdhbHNuZC0+bGF0Y2ggPSBO VUxMOwogCS8qIE1hcmsgV2FsU25kIHN0cnVjdCBhcyBubyBsb25nZXIgYmVpbmcgaW4gdXNl LiAqLwogCXdhbHNuZC0+cGlkID0gMDsKIAlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0 ZXgpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3By aXZhdGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgK aW5kZXggY2YzMmFjMjQ4OC4uNDFhYzczNmI5NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVk ZSAibm9kZXMvcmVwbG5vZGVzLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCi0jaW5jbHVkZSAi c3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NwaW4uaCIKIApAQCAtNzEsMTIgKzcwLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg V2FsU25kCiAJLyogUHJvdGVjdHMgc2hhcmVkIHZhcmlhYmxlcyBpbiB0aGlzIHN0cnVjdHVy ZS4gKi8KIAlzbG9ja190CQltdXRleDsKIAotCS8qCi0JICogUG9pbnRlciB0byB0aGUgd2Fs c2VuZGVyJ3MgbGF0Y2guIFVzZWQgYnkgYmFja2VuZHMgdG8gd2FrZSB1cCB0aGlzCi0JICog d2Fsc2VuZGVyIHdoZW4gaXQgaGFzIHdvcmsgdG8gZG8uIE5VTEwgaWYgdGhlIHdhbHNlbmRl ciBpc24ndCBhY3RpdmUuCi0JICovCi0JTGF0Y2gJICAgKmxhdGNoOwotCiAJLyoKIAkgKiBU aW1lc3RhbXAgb2YgdGhlIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHN0YW5kYnkuCiAJ ICovCi0tIAoyLjM5LjIKCg== --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-Remove-unneeded-include.patch" Content-Disposition: attachment; filename="v2-0002-Remove-unneeded-include.patch" Content-Transfer-Encoding: base64 RnJvbSAyYTAyOGZlNDc1OTE2M2NkYmM1NjFjYzgzYzk1ZDgyMTRiZmQwNTIyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjQgQXVnIDIwMjQgMDA6MjY6NDYgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDAyLzEyXSBSZW1vdmUgdW5uZWVkZWQgI2luY2x1ZGUKClVu bmVlZGVkIHNpbmNlIGNvbW1pdCBkNzI3MzFhNzA0LgotLS0KIHNyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmX2ludGVybmFscy5oIHwgMSAtCiAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggZjE5MGU2ZTVlNC4u ZWRhNmM2OTkyMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJu YWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKQEAgLTIw LDcgKzIwLDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdy LmgiCi0tIAoyLjM5LjIKCg== --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0003-Rename-SetWalSummarizerLatch-function.patch" Content-Disposition: attachment; filename="v2-0003-Rename-SetWalSummarizerLatch-function.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZWFlNDI0YTlhNzZlMTRkZGJjMjJhYzZhYmIyNjhlYTJlM2I2Y2U3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjQgQXVnIDIwMjQgMDA6MjE6MTUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDAzLzEyXSBSZW5hbWUgU2V0V2FsU3VtbWFyaXplckxhdGNo IGZ1bmN0aW9uCgpUaGUgZmFjdCB0aGF0IGl0IHVzZXMgYSBsYXRjaCBmb3IgdGhlIHdha2V1 cCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs c3VtbWFyaXplci5jIHwgNCArKy0tCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuaCB8IDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBlZTBmYjBl MjhmLi40NWE0YTQwZWNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC03 MjY4LDcgKzcyNjgsNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKiB1bnRp bCBhZnRlciB0aGUgYWJvdmUgY2FsbCB0aGF0IGZsdXNoZXMgdGhlIFhMT0dfQ0hFQ0tQT0lO VF9PTkxJTkUKIAkgKiByZWNvcmQuCiAJICovCi0JU2V0V2FsU3VtbWFyaXplckxhdGNoKCk7 CisJV2FrZXVwV2FsU3VtbWFyaXplcigpOwogCiAJLyoKIAkgKiBMZXQgc21nciBkbyBwb3N0 LWNoZWNrcG9pbnQgY2xlYW51cCAoZWcsIGRlbGV0aW5nIG9sZCBmaWxlcykuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCmluZGV4IGMxYmY0YTcwZGQuLjNhNDA3 ZjhkYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC02 MjYsNyArNjI2LDcgQEAgR2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKFRpbWVMaW5lSUQgKnRs aSwgYm9vbCAqbHNuX2lzX2V4YWN0KQogfQogCiAvKgotICogQXR0ZW1wdCB0byBzZXQgdGhl IFdBTCBzdW1tYXJpemVyJ3MgbGF0Y2guCisgKiBXYWtlIHVwIHRoZSBXQUwgc3VtbWFyaXpl ciBwcm9jZXNzLgogICoKICAqIFRoaXMgbWlnaHQgbm90IHdvcmssIGJlY2F1c2UgdGhlcmUn cyBubyBndWFyYW50ZWUgdGhhdCB0aGUgV0FMIHN1bW1hcml6ZXIKICAqIHByb2Nlc3Mgd2Fz IHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBhbmQgaXQgYWxzbyBtaWdodCBoYXZlIHN0YXJ0ZWQg YnV0CkBAIC02MzQsNyArNjM0LDcgQEAgR2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKFRpbWVM aW5lSUQgKnRsaSwgYm9vbCAqbHNuX2lzX2V4YWN0KQogICogbGF0Y2ggc2V0LCBidXQgdGhl cmUncyBubyBndWFyYW50ZWUuCiAgKi8KIHZvaWQKLVNldFdhbFN1bW1hcml6ZXJMYXRjaCh2 b2lkKQorV2FrZXVwV2FsU3VtbWFyaXplcih2b2lkKQogewogCVByb2NOdW1iZXIJcGdwcm9j bm87CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgKaW5kZXggYWVk Y2E1NTY3Ni4uMjY0MmFhNzAxZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci93YWxzdW1tYXJpemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxzdW1t YXJpemVyLmgKQEAgLTI5LDcgKzI5LDcgQEAgZXh0ZXJuIHZvaWQgR2V0V2FsU3VtbWFyaXpl clN0YXRlKFRpbWVMaW5lSUQgKnN1bW1hcml6ZWRfdGxpLAogCQkJCQkJCQkgIGludCAqc3Vt bWFyaXplcl9waWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0T2xkZXN0VW5zdW1tYXJpemVk TFNOKFRpbWVMaW5lSUQgKnRsaSwKIAkJCQkJCQkJCQkgICBib29sICpsc25faXNfZXhhY3Qp OwotZXh0ZXJuIHZvaWQgU2V0V2FsU3VtbWFyaXplckxhdGNoKHZvaWQpOworZXh0ZXJuIHZv aWQgV2FrZXVwV2FsU3VtbWFyaXplcih2b2lkKTsKIGV4dGVybiB2b2lkIFdhaXRGb3JXYWxT dW1tYXJpemF0aW9uKFhMb2dSZWNQdHIgbHNuKTsKIAogI2VuZGlmCi0tIAoyLjM5LjIKCg== --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0004-Address-walwriter-and-checkpointer-by-proc-number.patch" Content-Disposition: attachment; filename*0="v2-0004-Address-walwriter-and-checkpointer-by-proc-number.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMjg1NDkxN2RmM2NlNjIwMjY2MjZhYWVjYTQzYzgxNDZjMDlmM2I5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjMgQXVnIDIwMjQgMTc6MjU6MTUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA0LzEyXSBBZGRyZXNzIHdhbHdyaXRlciBhbmQgY2hlY2tw b2ludGVyIGJ5IHByb2MgbnVtYmVyCgppbnN0ZWFkIG9mIHBvaW50aW5nIGRpcmVjdGx5IHRv IHRoZWlyIGxhdGNoCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAg ICB8IDExICsrKysrKysrKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRl ci5jIHwgMTcgKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs d3JpdGVyLmMgICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMgICAgICAgfCAgNCArKy0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAg ICAgIHwgMTIgKysrKysrKystLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMo KyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRl eCA0NWE0YTQwZWNhLi42M2E4YWI1YTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCkBAIC0yNjY5LDggKzI2NjksMTUgQEAgWExvZ1NldEFzeW5jWGFjdExTTihYTG9nUmVj UHRyIGFzeW5jWGFjdExTTikKIAkJCXdha2V1cCA9IHRydWU7CiAJfQogCi0JaWYgKHdha2V1 cCAmJiBQcm9jR2xvYmFsLT53YWx3cml0ZXJMYXRjaCkKLQkJU2V0TGF0Y2goUHJvY0dsb2Jh bC0+d2Fsd3JpdGVyTGF0Y2gpOworCWlmICh3YWtldXApCisJeworCQl2b2xhdGlsZSBQUk9D X0hEUiAqcHJvY2dsb2JhbCA9IFByb2NHbG9iYWw7CisJCVByb2NOdW1iZXIJd2Fsd3JpdGVy UHJvYzsKKworCQl3YWx3cml0ZXJQcm9jID0gcHJvY2dsb2JhbC0+d2Fsd3JpdGVyUHJvYzsK KwkJaWYgKHdhbHdyaXRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCVNldExh dGNoKCZHZXRQR1Byb2NCeU51bWJlcih3YWx3cml0ZXJQcm9jKS0+cHJvY0xhdGNoKTsKKwl9 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9p bnRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCAx OTlmMDA4YmNkLi5lNTU2ZDdlY2VlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMKQEAgLTMyNCwxMCArMzI0LDEwIEBAIENoZWNrcG9pbnRlck1haW4oY2hhciAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlVcGRhdGVTaGFyZWRN ZW1vcnlDb25maWcoKTsKIAogCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBsYXRjaCB0aGF0IGJh Y2tlbmRzIGNhbiB1c2UgdG8gd2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQotCSAqIHNsZWVwaW5n LgorCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBudW1iZXIgdGhhdCBiYWNrZW5kcyBjYW4gdXNl IHRvIHdha2UgdXMgdXAgd2hpbGUKKwkgKiB3ZSdyZSBzbGVlcGluZy4KIAkgKi8KLQlQcm9j R2xvYmFsLT5jaGVja3BvaW50ZXJMYXRjaCA9ICZNeVByb2MtPnByb2NMYXRjaDsKKwlQcm9j R2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jID0gTXlQcm9jTnVtYmVyOwogCiAJLyoKIAkgKiBM b29wIGZvcmV2ZXIKQEAgLTExMjgsOCArMTEyOCwxNSBAQCBGb3J3YXJkU3luY1JlcXVlc3Qo Y29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJTFdMb2NrUmVs ZWFzZShDaGVja3BvaW50ZXJDb21tTG9jayk7CiAKIAkvKiAuLi4gYnV0IG5vdCB0aWxsIGFm dGVyIHdlIHJlbGVhc2UgdGhlIGxvY2sgKi8KLQlpZiAodG9vX2Z1bGwgJiYgUHJvY0dsb2Jh bC0+Y2hlY2twb2ludGVyTGF0Y2gpCi0JCVNldExhdGNoKFByb2NHbG9iYWwtPmNoZWNrcG9p bnRlckxhdGNoKTsKKwlpZiAodG9vX2Z1bGwpCisJeworCQl2b2xhdGlsZSBQUk9DX0hEUiAq cHJvY2dsb2JhbCA9IFByb2NHbG9iYWw7CisJCVByb2NOdW1iZXIJY2hlY2twb2ludGVyUHJv YzsKKworCQljaGVja3BvaW50ZXJQcm9jID0gcHJvY2dsb2JhbC0+Y2hlY2twb2ludGVyUHJv YzsKKwkJaWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJ CVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50ZXJQcm9jKS0+cHJvY0xh dGNoKTsKKwl9CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdy aXRlci5jCmluZGV4IDZlNzkxOGE3OGQuLjBjNTVkOWZhNTkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci93YWx3cml0ZXIuYwpAQCAtMjEwLDEwICsyMTAsMTAgQEAgV2FsV3JpdGVyTWFpbihj aGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCVNldFdhbFdy aXRlclNsZWVwaW5nKGZhbHNlKTsKIAogCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBsYXRjaCB0 aGF0IGJhY2tlbmRzIGNhbiB1c2UgdG8gd2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQotCSAqIHNs ZWVwaW5nLgorCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBudW1iZXIgdGhhdCBiYWNrZW5kcyBj YW4gdXNlIHRvIHdha2UgdXMgdXAgd2hpbGUKKwkgKiB3ZSdyZSBzbGVlcGluZy4KIAkgKi8K LQlQcm9jR2xvYmFsLT53YWx3cml0ZXJMYXRjaCA9ICZNeVByb2MtPnByb2NMYXRjaDsKKwlQ cm9jR2xvYmFsLT53YWx3cml0ZXJQcm9jID0gTXlQcm9jTnVtYmVyOwogCiAJLyoKIAkgKiBM b29wIGZvcmV2ZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IGFjNjZkYTg2Mzgu LjU2YzYwNzA0ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTc3LDggKzE3 Nyw4IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+ Ymd3b3JrZXJGcmVlUHJvY3MpOwogCWRsaXN0X2luaXQoJlByb2NHbG9iYWwtPndhbHNlbmRl ckZyZWVQcm9jcyk7CiAJUHJvY0dsb2JhbC0+c3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCA9 IC0xOwotCVByb2NHbG9iYWwtPndhbHdyaXRlckxhdGNoID0gTlVMTDsKLQlQcm9jR2xvYmFs LT5jaGVja3BvaW50ZXJMYXRjaCA9IE5VTEw7CisJUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJv YyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJv YyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xv YmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19h dG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BS T0NfTlVNQkVSKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCBkZWViMDZjOWUwLi45NTcxMGU0 MTZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNDEzLDEwICs0MTMsMTQgQEAgdHlwZWRlZiBz dHJ1Y3QgUFJPQ19IRFIKIAlwZ19hdG9taWNfdWludDMyIHByb2NBcnJheUdyb3VwRmlyc3Q7 CiAJLyogRmlyc3QgcGdwcm9jIHdhaXRpbmcgZm9yIGdyb3VwIHRyYW5zYWN0aW9uIHN0YXR1 cyB1cGRhdGUgKi8KIAlwZ19hdG9taWNfdWludDMyIGNsb2dHcm91cEZpcnN0OwotCS8qIFdB TFdyaXRlciBwcm9jZXNzJ3MgbGF0Y2ggKi8KLQlMYXRjaAkgICAqd2Fsd3JpdGVyTGF0Y2g7 Ci0JLyogQ2hlY2twb2ludGVyIHByb2Nlc3MncyBsYXRjaCAqLwotCUxhdGNoCSAgICpjaGVj a3BvaW50ZXJMYXRjaDsKKworCS8qCisJICogQ3VycmVudCBzbG90IG51bWJlcnMgb2Ygc29t ZSBhdXhpbGlhcnkgcHJvY2Vzc2VzLiBUaGVyZSBjYW4gYmUgb25seSBvbmUKKwkgKiBvZiBl YWNoIG9mIHRoZXNlIHJ1bm5pbmcgYXQgYSB0aW1lLgorCSAqLworCVByb2NOdW1iZXIJd2Fs d3JpdGVyUHJvYzsKKwlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclByb2M7CisKIAkvKiBDdXJy ZW50IHNoYXJlZCBlc3RpbWF0ZSBvZiBhcHByb3ByaWF0ZSBzcGluc19wZXJfZGVsYXkgdmFs dWUgKi8KIAlpbnQJCQlzcGluc19wZXJfZGVsYXk7CiAJLyogQnVmZmVyIGlkIG9mIHRoZSBi dWZmZXIgdGhhdCBTdGFydHVwIHByb2Nlc3Mgd2FpdHMgZm9yIHBpbiBvbiwgb3IgLTEgKi8K LS0gCjIuMzkuMgoK --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0005-Address-walreceiver-by-procno-not-direct-pointer-.patch" Content-Disposition: attachment; filename*0="v2-0005-Address-walreceiver-by-procno-not-direct-pointer-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhZmZmNjhiZTQ1OTMyYzAzNDBmZGE3OWZmMWY3YTE1NDEzMGJlYWY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjMgQXVnIDIwMjQgMjM6NTQ6NTMgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA1LzEyXSBBZGRyZXNzIHdhbHJlY2VpdmVyIGJ5IHByb2Nu bywgbm90IGRpcmVjdCBwb2ludGVyIHRvCiBpdHMgbGF0Y2gKCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDEgKwogLi4uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgICAgIHwgMTcgKysrKysrLS0tLS0tLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jICAgIHwgMTIgKysr KysrLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAg IHwgMjQgKysrKysrKysrLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRp b25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dmdW5jcy5jCmluZGV4IDRlNDZiYWFlYmQuLmIwYzZkN2M2ODcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKaW5kZXggOTdmOTU3Y2Q4Ny4uYzc0MzY5OTUzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwcWV4cGJ1ZmZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9w Z19sc24uaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IGEy N2FlZTYzZGUuLmQxZDk5ZGU5ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYwpAQCAtMjY2LDggKzI2Niw4IEBAIFdhbFJlY2VpdmVyTWFpbihjaGFyICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXdhbHJjdi0+bGFzdE1zZ1Nl bmRUaW1lID0KIAkJd2FscmN2LT5sYXN0TXNnUmVjZWlwdFRpbWUgPSB3YWxyY3YtPmxhdGVz dFdhbEVuZFRpbWUgPSBub3c7CiAKLQkvKiBSZXBvcnQgdGhlIGxhdGNoIHRvIHVzZSB0byBh d2FrZW4gdGhpcyBwcm9jZXNzICovCi0Jd2FscmN2LT5sYXRjaCA9ICZNeVByb2MtPnByb2NM YXRjaDsKKwkvKiBSZXBvcnQgb3VyIFBHUFJPQyBlbnRyeSB0byB1c2UgdG8gYXdha2VuIHRo aXMgcHJvY2VzcyAqLworCXdhbHJjdi0+cHJvY25vID0gTXlQcm9jTnVtYmVyOwogCiAJU3Bp bkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIApAQCAtODE5LDggKzgxOSw4IEBAIFdh bFJjdkRpZShpbnQgY29kZSwgRGF0dW0gYXJnKQogCUFzc2VydCh3YWxyY3YtPnBpZCA9PSBN eVByb2NQaWQpOwogCXdhbHJjdi0+d2FsUmN2U3RhdGUgPSBXQUxSQ1ZfU1RPUFBFRDsKIAl3 YWxyY3YtPnBpZCA9IDA7CisJd2FscmN2LT5wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVS OwogCXdhbHJjdi0+cmVhZHlfdG9fZGlzcGxheSA9IGZhbHNlOwotCXdhbHJjdi0+bGF0Y2gg PSBOVUxMOwogCVNwaW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7CiAKIAlDb25kaXRp b25WYXJpYWJsZUJyb2FkY2FzdCgmd2FscmN2LT53YWxSY3ZTdG9wcGVkQ1YpOwpAQCAtMTM1 OCwxNSArMTM1OCwxNiBAQCBXYWxSY3ZDb21wdXRlTmV4dFdha2V1cChXYWxSY3ZXYWtldXBS ZWFzb24gcmVhc29uLCBUaW1lc3RhbXBUeiBub3cpCiB2b2lkCiBXYWxSY3ZGb3JjZVJlcGx5 KHZvaWQpCiB7Ci0JTGF0Y2gJICAgKmxhdGNoOworCVByb2NOdW1iZXIJcHJvY25vOwogCiAJ V2FsUmN2LT5mb3JjZV9yZXBseSA9IHRydWU7Ci0JLyogZmV0Y2hpbmcgdGhlIGxhdGNoIHBv aW50ZXIgbWlnaHQgbm90IGJlIGF0b21pYywgc28gdXNlIHNwaW5sb2NrICovCisKKwkvKiBm ZXRjaGluZyB0aGUgcHJvYyBudW1iZXIgaXMgcHJvYmFibHkgYXRvbWljLCBidXQgZG9uJ3Qg cmVseSBvbiBpdCAqLwogCVNwaW5Mb2NrQWNxdWlyZSgmV2FsUmN2LT5tdXRleCk7Ci0JbGF0 Y2ggPSBXYWxSY3YtPmxhdGNoOworCXByb2NubyA9IFdhbFJjdi0+cHJvY25vOwogCVNwaW5M b2NrUmVsZWFzZSgmV2FsUmN2LT5tdXRleCk7Ci0JaWYgKGxhdGNoKQotCQlTZXRMYXRjaChs YXRjaCk7CisJaWYgKHByb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZXRMYXRj aCgmR2V0UEdQcm9jQnlOdW1iZXIocHJvY25vKS0+cHJvY0xhdGNoKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRleCA4NWEx OWNkZmE1Li5iMTc4MGQwMTA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlcmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXJmdW5jcy5jCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgi CiAKQEAgLTY2LDcgKzY4LDcgQEAgV2FsUmN2U2htZW1Jbml0KHZvaWQpCiAJCUNvbmRpdGlv blZhcmlhYmxlSW5pdCgmV2FsUmN2LT53YWxSY3ZTdG9wcGVkQ1YpOwogCQlTcGluTG9ja0lu aXQoJldhbFJjdi0+bXV0ZXgpOwogCQlwZ19hdG9taWNfaW5pdF91NjQoJldhbFJjdi0+d3Jp dHRlblVwdG8sIDApOwotCQlXYWxSY3YtPmxhdGNoID0gTlVMTDsKKwkJV2FsUmN2LT5wcm9j bm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCX0KIH0KIApAQCAtMjQ4LDcgKzI1MCw3IEBA IFJlcXVlc3RYTG9nU3RyZWFtaW5nKFRpbWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHJlY3B0 ciwgY29uc3QgY2hhciAqY29ubmluZm8sCiAJV2FsUmN2RGF0YSAqd2FscmN2ID0gV2FsUmN2 OwogCWJvb2wJCWxhdW5jaCA9IGZhbHNlOwogCXBnX3RpbWVfdAlub3cgPSAocGdfdGltZV90 KSB0aW1lKE5VTEwpOwotCUxhdGNoCSAgICpsYXRjaDsKKwlQcm9jTnVtYmVyCXdhbHJjdl9w cm9jOwogCiAJLyoKIAkgKiBXZSBhbHdheXMgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0 aGUgc2VnbWVudC4gVGhhdCBwcmV2ZW50cyBhIGJyb2tlbgpAQCAtMzA5LDE0ICszMTEsMTQg QEAgUmVxdWVzdFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgcmVj cHRyLCBjb25zdCBjaGFyICpjb25uaW5mbywKIAl3YWxyY3YtPnJlY2VpdmVTdGFydCA9IHJl Y3B0cjsKIAl3YWxyY3YtPnJlY2VpdmVTdGFydFRMSSA9IHRsaTsKIAotCWxhdGNoID0gd2Fs cmN2LT5sYXRjaDsKKwl3YWxyY3ZfcHJvYyA9IHdhbHJjdi0+cHJvY25vOwogCiAJU3Bpbkxv Y2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAogCWlmIChsYXVuY2gpCiAJCVNlbmRQb3N0 bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX1dBTFJFQ0VJVkVSKTsKLQllbHNlIGlmIChs YXRjaCkKLQkJU2V0TGF0Y2gobGF0Y2gpOworCWVsc2UgaWYgKHdhbHJjdl9wcm9jICE9IElO VkFMSURfUFJPQ19OVU1CRVIpCisJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcih3YWxy Y3ZfcHJvYyktPnByb2NMYXRjaCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaAppbmRleCAxMzJlNzg5OTQ4Li5mODZlNGNkYTRjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5o IgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4u aCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCiAKQEAgLTU4LDExICs1NywxOSBA QCB0eXBlZGVmIGVudW0KIHR5cGVkZWYgc3RydWN0CiB7CiAJLyoKLQkgKiBQSUQgb2YgY3Vy cmVudGx5IGFjdGl2ZSB3YWxyZWNlaXZlciBwcm9jZXNzLCBpdHMgY3VycmVudCBzdGF0ZSBh bmQKLQkgKiBzdGFydCB0aW1lIChhY3R1YWxseSwgdGhlIHRpbWUgYXQgd2hpY2ggaXQgd2Fz IHJlcXVlc3RlZCB0byBiZQotCSAqIHN0YXJ0ZWQpLgorCSAqIFByb2MgbnVtYmVyIG9mIGN1 cnJlbnRseSBhY3RpdmUgd2FscmVjZWl2ZXIgcHJvY2Vzcywgc28gdGhhdCB0aGUKKwkgKiBz dGFydHVwIHByb2Nlc3MgY2FuIHdha2UgaXQgdXAgYWZ0ZXIgdGVsbGluZyBpdCB3aGVyZSB0 byBzdGFydAorCSAqIHN0cmVhbWluZyAoYWZ0ZXIgc2V0dGluZyByZWNlaXZlU3RhcnQgYW5k IHJlY2VpdmVTdGFydFRMSSksIGFuZCBhbHNvIHRvCisJICogdGVsbCBpdCB0byBzZW5kIGFw cGx5IGZlZWRiYWNrIHRvIHRoZSBwcmltYXJ5IHdoZW5ldmVyIHNwZWNpYWxseSBtYXJrZWQK KwkgKiBjb21taXQgcmVjb3JkcyBhcmUgYXBwbGllZC4KIAkgKi8KKwlQcm9jTnVtYmVyCXBy b2NubzsKIAlwaWRfdAkJcGlkOworCisJLyoKKwkgKiBJdHMgY3VycmVudCBzdGF0ZSBhbmQg c3RhcnQgdGltZSAoYWN0dWFsbHksIHRoZSB0aW1lIGF0IHdoaWNoIGl0IHdhcworCSAqIHJl cXVlc3RlZCB0byBiZSBzdGFydGVkKS4KKwkgKi8KIAlXYWxSY3ZTdGF0ZSB3YWxSY3ZTdGF0 ZTsKIAlDb25kaXRpb25WYXJpYWJsZSB3YWxSY3ZTdG9wcGVkQ1Y7CiAJcGdfdGltZV90CXN0 YXJ0VGltZTsKQEAgLTEzNCwxNSArMTQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkvKiBzZXQg dHJ1ZSBvbmNlIGNvbm5pbmZvIGlzIHJlYWR5IHRvIGRpc3BsYXkgKG9iZnVzY2F0ZWQgcHdk cyBldGMpICovCiAJYm9vbAkJcmVhZHlfdG9fZGlzcGxheTsKIAotCS8qCi0JICogTGF0Y2gg dXNlZCBieSBzdGFydHVwIHByb2Nlc3MgdG8gd2FrZSB1cCB3YWxyZWNlaXZlciBhZnRlciB0 ZWxsaW5nIGl0Ci0JICogd2hlcmUgdG8gc3RhcnQgc3RyZWFtaW5nIChhZnRlciBzZXR0aW5n IHJlY2VpdmVTdGFydCBhbmQKLQkgKiByZWNlaXZlU3RhcnRUTEkpLCBhbmQgYWxzbyB0byB0 ZWxsIGl0IHRvIHNlbmQgYXBwbHkgZmVlZGJhY2sgdG8gdGhlCi0JICogcHJpbWFyeSB3aGVu ZXZlciBzcGVjaWFsbHkgbWFya2VkIGNvbW1pdCByZWNvcmRzIGFyZSBhcHBsaWVkLiBUaGlz IGlzCi0JICogbm9ybWFsbHkgbWFwcGVkIHRvIHByb2NMYXRjaCB3aGVuIHdhbHJlY2VpdmVy IGlzIHJ1bm5pbmcuCi0JICovCi0JTGF0Y2gJICAgKmxhdGNoOwotCiAJc2xvY2tfdAkJbXV0 ZXg7CQkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogCiAJLyoK LS0gCjIuMzkuMgoK --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0006-Use-proc-number-for-wakeups-in-waitlsn.c.patch" Content-Disposition: attachment; filename="v2-0006-Use-proc-number-for-wakeups-in-waitlsn.c.patch" Content-Transfer-Encoding: base64 RnJvbSBlZDdmZGFiNzhiODQ3ZDkwM2M3ZjRmNGMyOWY3MjU5NzFlMzExM2Y3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMzAgQXVnIDIwMjQgMjI6NDk6MjUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA2LzEyXSBVc2UgcHJvYyBudW1iZXIgZm9yIHdha2V1cHMg aW4gd2FpdGxzbi5jCgpBbHNvIHJlbmFtZSBXYWl0TFNOU2V0TGF0Y2hlcygpIHRvIFdhaXRM U05XYWtldXAoKSwgdG8gZW1waGFzaXplIHdoYXQKaXQgZG9lcywgcmF0aGVyIHRoYW4gaG93 IGl0IGRvZXMgaXQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdGxzbi5jICAgICAgICAgICAg fCAxOCArKysrKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXRsc24u aCAgICAgICAgICAgIHwgMTAgKysrKy0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNl cnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMKaW5kZXggNjNhOGFiNWEyOS4uZmRjMDkwNjMxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwpAQCAtNjE1NSw3ICs2MTU1LDcgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkg KiBXYWtlIHVwIGFsbCB3YWl0ZXJzIGZvciByZXBsYXkgTFNOLiAgVGhleSBuZWVkIHRvIHJl cG9ydCBhbiBlcnJvciB0aGF0CiAJICogcmVjb3Zlcnkgd2FzIGVuZGVkIGJlZm9yZSBhY2hp ZXZpbmcgdGhlIHRhcmdldCBMU04uCiAJICovCi0JV2FpdExTTlNldExhdGNoZXMoSW52YWxp ZFhMb2dSZWNQdHIpOworCVdhaXRMU05XYWtldXAoSW52YWxpZFhMb2dSZWNQdHIpOwogCiAJ LyoKIAkgKiBTaHV0ZG93biB0aGUgcmVjb3ZlcnkgZW52aXJvbm1lbnQuICBUaGlzIG11c3Qg b2NjdXIgYWZ0ZXIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKaW5kZXggYWQ4MTdmYmNhNi4uMzVhNWUzMWUzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFBlcmZv cm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJaWYgKHdhaXRMU05TdGF0ZSAmJgogCQkJCShYTG9n UmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PQogCQkJCSBwZ19hdG9taWNf cmVhZF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOKSkpCi0JCQkJV2FpdExTTlNl dExhdGNoZXMoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIpOworCQkJ CVdhaXRMU05XYWtldXAoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIp OwogCiAJCQkvKiBFbHNlLCB0cnkgdG8gZmV0Y2ggdGhlIG5leHQgV0FMIHJlY29yZCAqLwog CQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9HLCBmYWxzZSwgcmVw bGF5VExJKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYwppbmRleCBkOWNmOWU3ZDc1Li4xOTM3 YmFmYWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0bHNuLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdGxzbi5jCkBAIC0xMTMsNyArMTEzLDcgQEAg YWRkTFNOV2FpdGVyKFhMb2dSZWNQdHIgbHNuKQogCiAJQXNzZXJ0KCFwcm9jSW5mby0+aW5I ZWFwKTsKIAotCXByb2NJbmZvLT5sYXRjaCA9IE15TGF0Y2g7CisJcHJvY0luZm8tPnByb2Nu byA9IE15UHJvY051bWJlcjsKIAlwcm9jSW5mby0+d2FpdExTTiA9IGxzbjsKIAogCXBhaXJp bmdoZWFwX2FkZCgmd2FpdExTTlN0YXRlLT53YWl0ZXJzSGVhcCwgJnByb2NJbmZvLT5waE5v ZGUpOwpAQCAtMTUyLDE5ICsxNTIsMjEgQEAgZGVsZXRlTFNOV2FpdGVyKHZvaWQpCiAgKiBh bmQgc2V0IGxhdGNoZXMgZm9yIGFsbCB3YWl0ZXJzLgogICovCiB2b2lkCi1XYWl0TFNOU2V0 TGF0Y2hlcyhYTG9nUmVjUHRyIGN1cnJlbnRMU04pCitXYWl0TFNOV2FrZXVwKFhMb2dSZWNQ dHIgY3VycmVudExTTikKIHsKIAlpbnQJCQlpOwotCUxhdGNoCSAgKip3YWtlVXBQcm9jTGF0 Y2hlczsKKwlQcm9jTnVtYmVyICp3YWtlVXBQcm9jczsKIAlpbnQJCQludW1XYWtlVXBQcm9j cyA9IDA7CiAKLQl3YWtlVXBQcm9jTGF0Y2hlcyA9IHBhbGxvYyhzaXplb2YoTGF0Y2ggKikg KiBNYXhCYWNrZW5kcyk7CisJd2FrZVVwUHJvY3MgPSBwYWxsb2Moc2l6ZW9mKFByb2NOdW1i ZXIpICogTWF4QmFja2VuZHMpOwogCiAJTFdMb2NrQWNxdWlyZShXYWl0TFNOTG9jaywgTFdf RVhDTFVTSVZFKTsKIAogCS8qCiAJICogSXRlcmF0ZSB0aGUgcGFpcmluZyBoZWFwIG9mIHdh aXRpbmcgcHJvY2Vzc2VzIHRpbGwgd2UgZmluZCBMU04gbm90IHlldAotCSAqIHJlcGxheWVk LiAgUmVjb3JkIHRoZSBwcm9jZXNzIGxhdGNoZXMgdG8gc2V0IHRoZW0gbGF0ZXIuCisJICog cmVwbGF5ZWQuICBSZWNvcmQgdGhlIHByb2Nlc3MgbnVtYmVycyB0byBpbnRlcnJ1cHQsIGJ1 dCB0byBhdm9pZAorCSAqIGhvbGRpbmcgdGhlIGxvY2sgZm9yIHRvbyBsb25nLCBzZW5kIHRo ZSBpbnRlcnJ1cHRzIHRvIHRoZW0gb25seSBhZnRlcgorCSAqIHJlbGVhc2luZyB0aGUgbG9j ay4KIAkgKi8KIAl3aGlsZSAoIXBhaXJpbmdoZWFwX2lzX2VtcHR5KCZ3YWl0TFNOU3RhdGUt PndhaXRlcnNIZWFwKSkKIAl7CkBAIC0xNzUsNyArMTc3LDcgQEAgV2FpdExTTlNldExhdGNo ZXMoWExvZ1JlY1B0ciBjdXJyZW50TFNOKQogCQkJcHJvY0luZm8tPndhaXRMU04gPiBjdXJy ZW50TFNOKQogCQkJYnJlYWs7CiAKLQkJd2FrZVVwUHJvY0xhdGNoZXNbbnVtV2FrZVVwUHJv Y3MrK10gPSBwcm9jSW5mby0+bGF0Y2g7CisJCXdha2VVcFByb2NzW251bVdha2VVcFByb2Nz KytdID0gcHJvY0luZm8tPnByb2NubzsKIAkJKHZvaWQpIHBhaXJpbmdoZWFwX3JlbW92ZV9m aXJzdCgmd2FpdExTTlN0YXRlLT53YWl0ZXJzSGVhcCk7CiAJCXByb2NJbmZvLT5pbkhlYXAg PSBmYWxzZTsKIAl9CkBAIC0xOTIsOSArMTk0LDkgQEAgV2FpdExTTlNldExhdGNoZXMoWExv Z1JlY1B0ciBjdXJyZW50TFNOKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1XYWtlVXBQ cm9jczsgaSsrKQogCXsKLQkJU2V0TGF0Y2god2FrZVVwUHJvY0xhdGNoZXNbaV0pOworCQlT ZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2FrZVVwUHJvY3NbaV0pLT5wcm9jTGF0Y2gp OwogCX0KLQlwZnJlZSh3YWtlVXBQcm9jTGF0Y2hlcyk7CisJcGZyZWUod2FrZVVwUHJvY3Mp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5oCmluZGV4IGY3MTlmZWFkYjAuLjgx ZmNiOWMyMzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXRsc24uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmgKQEAgLTE2LDYgKzE2LDcgQEAK ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIK IApAQCAtMjksMTEgKzMwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgV2FpdExTTlByb2NJbmZvCiAJ LyogTFNOLCB3aGljaCB0aGlzIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgKi8KIAlYTG9nUmVj UHRyCXdhaXRMU047CiAKLQkvKgotCSAqIEEgcG9pbnRlciB0byB0aGUgbGF0Y2gsIHdoaWNo IHNob3VsZCBiZSBzZXQgb25jZSB0aGUgd2FpdExTTiBpcwotCSAqIHJlcGxheWVkLgotCSAq LwotCUxhdGNoCSAgICpsYXRjaDsKKwkvKiBQcm9jZXNzIHRvIGJlIHdva2VuIHVwIG9uY2Ug dGhlIHdhaXRMU04gaXMgcmVwbGF5ZWQgKi8KKwlQcm9jTnVtYmVyCXByb2NubzsKIAogCS8q IEEgcGFpcmluZyBoZWFwIG5vZGUgZm9yIHBhcnRpY2lwYXRpb24gaW4gd2FpdExTTlN0YXRl LT53YWl0ZXJzSGVhcCAqLwogCXBhaXJpbmdoZWFwX25vZGUgcGhOb2RlOwpAQCAtNzQsNyAr NzIsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgV2FpdExTTlN0YXRlICp3YWl0TFNOU3RhdGU7 CiAKIGV4dGVybiBTaXplIFdhaXRMU05TaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBX YWl0TFNOU2htZW1Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgV2FpdExTTlNldExhdGNoZXMo WExvZ1JlY1B0ciBjdXJyZW50TFNOKTsKK2V4dGVybiB2b2lkIFdhaXRMU05XYWtldXAoWExv Z1JlY1B0ciBjdXJyZW50TFNOKTsKIGV4dGVybiB2b2lkIFdhaXRMU05DbGVhbnVwKHZvaWQp OwogCiAjZW5kaWYJCQkJCQkJLyogV0FJVF9MU05fSCAqLwotLSAKMi4zOS4yCgo= --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0007-Clean-up-existing-WaitLatch-calls-that-passed-MyL.patch" Content-Disposition: attachment; filename*0="v2-0007-Clean-up-existing-WaitLatch-calls-that-passed-MyL.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NzdjN2IwYmEyZmI1YTUzOGMwZWIzZWMwYWZlODdiMGQ4OTk3ZmVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMzAgQXVnIDIwMjQgMjE6MDY6MzYgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA3LzEyXSBDbGVhbiB1cCBleGlzdGluZyBXYWl0TGF0Y2gg Y2FsbHMgdGhhdCBwYXNzZWQKIE15TGF0Y2ggd2l0aG91dCBXTF9MQVRDSF9TRVQKClRoZSAn bGF0Y2gnIGFyZ3VtZW50IGlzIGlnbm9yZWQgaWYgV0xfTEFUQ0hfU0VUIGlzIG5vdCBnaXZl bi4gQ2xhcmlmeQp0aGVzZSBjYWxscyBieSBub3QgcG9pbnRsZXNzbHkgcGFzc2luZyBNeUxh dGNoLgotLS0KIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYyAgIHwgNCAr Ky0tCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jICB8IDIgKy0KIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIHwgMiArLQogMyBmaWxlcyBj aGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jIGIvc3JjL2JhY2tlbmQvbGli cHEvYmUtc2VjdXJlLWdzc2FwaS5jCmluZGV4IDQ4MzYzNjUwM2MuLjJkMzZjNzYzMjQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKQEAgLTQ1MCw3ICs0NTAsNyBA QCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAJCSAqLwogCQlpZiAo cmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCisJCQlXYWl0 TGF0Y2hPclNvY2tldChOVUxMLAogCQkJCQkJCSAgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkgIHBvcnQtPnNvY2ssIDAsIFdBSVRfRVZFTlRf R1NTX09QRU5fU0VSVkVSKTsKIApAQCAtNjY4LDcgKzY2OCw3IEBAIHNlY3VyZV9vcGVuX2dz c2FwaShQb3J0ICpwb3J0KQogCQkJCS8qIFdhaXQgYW5kIHJldHJ5IGlmIHdlIGNvdWxkbid0 IHdyaXRlIHlldCAqLwogCQkJCWlmIChyZXQgPD0gMCkKIAkJCQl7Ci0JCQkJCVdhaXRMYXRj aE9yU29ja2V0KE15TGF0Y2gsCisJCQkJCVdhaXRMYXRjaE9yU29ja2V0KE5VTEwsCiAJCQkJ CQkJCQkgIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJ CQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CiAJ CQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJl LW9wZW5zc2wuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMKaW5k ZXggNjBjZjVkMTZlNy4uMWIzNjA3Nzg5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGli cHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1 cmUtb3BlbnNzbC5jCkBAIC01MTksNyArNTE5LDcgQEAgYWxvb3A6CiAJCQkJZWxzZQogCQkJ CQl3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEg7 CiAKLQkJCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwgd2FpdGZvciwgcG9y dC0+c29jaywgMCwKKwkJCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwgd2FpdGZv ciwgcG9ydC0+c29jaywgMCwKIAkJCQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BFTl9TRVJW RVIpOwogCQkJCWdvdG8gYWxvb3A7CiAJCQljYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCAzYTQwN2Y4ZGFhLi40 ODM1MGJlYzUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpA QCAtMzE1LDcgKzMxNSw3IEBAIFdhbFN1bW1hcml6ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFNvIGEgcmVhbGx5IGZhc3QgcmV0 cnkgdGltZSBkb2Vzbid0IHNlZW0gdG8gYmUgZXNwZWNpYWxseQogCQkgKiBiZW5lZmljaWFs LCBhbmQgaXQgd2lsbCBjbHV0dGVyIHRoZSBsb2dzLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAorCQkodm9pZCkgV2FpdExhdGNoKE5VTEwsCiAJCQkJCQkgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkgMTAwMDAsCiAJCQkJCQkgV0FJ VF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9FUlJPUik7Ci0tIAoyLjM5LjIKCg== --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0008-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v2-0008-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSA1MTkwNjdjZDEyYWQ4OWFiZWYzYjFiMmM4ZWQyZWZhMzFmN2ZmYTFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMzAgQXVnIDIwMjQgMjI6MDE6NDUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA4LzEyXSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1 cHRzCgpUaGUgTGF0Y2ggd2FzIGEgZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25h bGxpbmcgbWVjaGFuaXNtIHRoYXQKYWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhl IExhdGNoIHRvIGJlIHNldC4gTXkgb3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0 aGF0IHlvdSBjb3VsZCBoYXZlIGRpZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhp bmdzIHRoYXQgeW91IG5lZWQgdG8gd2FpdCBmb3IsIGJ1dCBidXQgaW4gcHJhY3RpY2UsIGFs bW9zdCBhbGwgY29kZQp1c2VkIG9uZSAicHJvY2VzcyBsYXRjaCIgdGhhdCB3YXMgc2hhcmVk IGZvciBhbGwgd2FrZXVwcy4gVGhlIG9ubHkKZXhjZXB0aW9uIHdhcyB0aGUgInJlY292ZXJ5 V2FrZXVwTGF0Y2giLiBJIHRoaW5rIHRoZSByZWFzb24gdGhhdCB3ZQplbmRlZCB1cCBqdXN0 IHNoYXJpbmcgdGhlIHNhbWUgbGF0Y2ggZm9yIGFsbCB3YWtldXBzIGlzIHRoYXQgaXQgd2Fz CmN1bWJlcnNvbWUgaW4gcHJhY3RpY2UgdG8gZGVhbCB3aXRoIG11bHRpcGxlIGxhdGNoZXMu IEZvciBzdGFydGVycywKdGhlcmUgd2FzIG5vIG1hY2hpbmVyeSBmb3Igd2FpdGluZyBmb3Ig bXVsdGlwbGUgbGF0Y2hlcyBhdCB0aGUgc2FtZQp0aW1lLiBTZWNvbmRseSwgY2hhbmdpbmcg dGhlICJvd25lcnNoaXAiIG9mIGEgbGF0Y2ggbmVlZGVkIGV4dHJhCmxvY2tpbmcgb3Igb3Ro ZXIgY29vcmRpbmF0aW9uLiBUaGlyZGx5LCBlYWNoIGludGVyLXByb2Nlc3MgbGF0Y2gKbmVl ZGVkIHRvIGJlIGluaXRpYWxpemVkIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCB0aW1lLgoKVGhp cyBwYXRjaCBlbWJyYWNlcyB0aGUgcmVhbGl0eSBvZiBob3cgTGF0Y2hlcyB3ZXJlIHVzZWQs IGFuZCByZXBsYWNlcwp0aGUgTGF0Y2hlcyB3aXRoIHBlci1wcm9jZXNzIGludGVycnVwdCBt YXNrLiBZb3UgY2FuIG5vIGxvbmdlcgphbGxvY2F0ZSBMYXRjaGVzIGluIGFyYml0cmFyeSBz aGFyZWQgbWVtb3J5IHN0cnVjdHMsIGFuIGludGVycnVwdCBpcwphbHdheXMgZGlyZWN0ZWQg YXQgYSBwYXJ0aWN1bGFyIHByb2Nlc3MsIGFkZHJlc3NlZCBieSBpdHMgUHJvY051bWJlci4K RWFjaCBwcm9jZXNzIGhhcyBhIGJpdG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzIGluIFBH UFJPQy4KClRoaXMgY29tbWl0IGludHJvZHVjZXMgdHdvIGludGVycnVwdCBiaXRzLiBJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAKcmVwbGFjZXMgdGhlIGdlbmVyYWwgcHVycG9zZSBwZXIt cHJvY2VzcyBsYXRjaC4gQWxsIGNvZGUgdGhhdApwcmV2aW91c2x5IHNldCBhIHByb2Nlc3Mn cyBwcm9jZXNzIGxhdGNoIG5vdyBzZXRzIGl0cwpJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAg aW50ZXJydXB0IGJpdCBpbnN0ZWFkLgoKVGhlIG90aGVyIGludGVycnVwdCBiaXQsIElOVEVS UlVQVF9SRUNPVkVSWV9XQUtFVVAsIHJlcGxhY2VzCnJlY292ZXJ5V2FrZXVwTGF0Y2guIFdp dGggdGhpcyBuZXcgaW50ZXJmYWNlLCB0aGUgY29kZSBjYW4gZWFzaWx5IHdhaXQKZm9yIHRo ZSByZWd1bGFyIGludGVycnVwdHMgKElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCkgYXQgdGhl IHNhbWUgdGltZQphcyBJTlRFUlJVUFRfUkVDT1ZFUllfV0FLRVVQLiBQcmV2aW91c2x5LCB0 aGUgY29kZSB0aGF0IHdhaXRlZCBvbgpyZWNvdmVyeVdha2V1cExhdGNoIGhhZCB0byByZXNv cnQgdG8gdGltZW91dHMgdG8gcmVhY3QgdG8gb3RoZXIKc2lnbmFscywgYmVjYXVzZSBpdCB3 YXMgbm90IHBvc3NpYmxlIHRvIHdhaXQgZm9yIHR3byBsYXRjaGVzIGF0IHRoZQpzYW1lIHRp bWUuIFByZXZpb3VzIGF0dGVtcHQgYXQgdW5pZnlpbmcgdGhvc2Ugd2FrZXVwcyB3YXMgaW4g Y29tbWl0CmFjMjI5MjlhMjYsIGJ1dCB0aGF0IHdhcyByZXZlcnRlZCBpbiBjb21taXQgMDBm NjkwYTIzOSBiZWNhdXNlIGl0CmNhdXNlZCBhIGxvdCBvZiBzcHVyaW91cyB3YWtldXBzIHdo ZW4gc3RhcnR1cCBwcm9jZXNzIHdhcyB3YWl0aW5nIGZvcgpyZWNvdmVyeSBjb25mbGljdHMu IFRoZSBuZXcgbWFjaGluZXJ5IGF2b2lkcyB0aGF0IHByb2JsZW0sIGJ5IG1ha2luZwppdCBl YXN5IHRvIHdhaXQgZm9yIHR3byBpbnRlcnJ1cHRzIGF0IHRoZSBzYW1lIHRpbWUuCgpNb3Jl IGludGVycnVwdCBiaXRzIGFyZSBwbGFubmVkIGZvciBmb2xsb3d1cCBwYXRjaGVzLCB0byBy ZXBsYWNlIHRoZQp2YXJpb3VzIFByb2NTaWduYWwgYml0cywgYXMgd2VsbCBhcyBDb25maWdS ZWxvYWRQZW5kaW5nIGFuZApTaHV0ZG93blJlcXVlc3RQZW5kaW5nLgoKVGhpcyBwYXRjaCBs ZWF2ZXMgYmVoaW5kIGEgY29tcGF0aWJpbGl0eSAibGF0Y2guaCIgaGVhZGVyLCB3aGljaApk ZWZpbmVzIG1hY3JvcyB0byBtYXAgZXhpc3RpbmcgTGF0Y2ggZnVuY3Rpb25zIHRvIHRoZSBj b3JyZXNwb25kaW5nCkludGVycnVwdCBmdW5jdGlvbnMuIFRoaXMgcmVkdWNlcyB0aGUgY29k ZSBjaHVybiwgYW5kIHNob3dzIGhvdyB3ZQpjb3VsZCBrZWVwIGxpbWl0ZWQgYmFja3dhcmRz LWNvbXBhdGliaWxpdHkgZm9yIGV4dGVuc2lvbnMgaWYKbmVjZXNzYXJ5LgoKVGhpcyBhbHNv IG1vdmVzIHRoZSBXYWl0RXZlbnRTZXQgZnVuY3Rpb25zIHRvIGEgZGlmZmVyZW50IHNvdXJj ZSBmaWxlLAp3YWl0ZXZlbnRzZXQuYy4gVGhpcyBzZXBhcmF0ZXMgdGhlIHBsYXRmb3JtLWRl cGVuZGVudCBjb2RlIHdhaXRpbmcgYW5kCnNpZ25hbGxpbmcgY29kZSBmcm9tIHRoZSBwbGF0 Zm9ybS1pbmRlcGVuZGVudCBwYXJ0cy4KLS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgIDg1ICstLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvd2FpdGxzbi5jICAgICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2xp YnBxL2JlLXNlY3VyZS5jICAgICAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQv bGlicHEvcHFjb21tLmMgICAgICAgICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgIDI0ICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICB8ICAyNyArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgIDMxICstCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyAgICAgICAgICAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgICAgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jICAgICAgICAgICAgfCAg MTEgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3Mu YyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5j ICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0 LmMgICAgICAgICAgIHwgMTE0ICsrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29u LmJ1aWxkICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht X21xLmMgICAgICAgICAgICAgIHwgIDg5ICstLQogLi4uL3N0b3JhZ2UvaXBjL3tsYXRjaC5j ID0+IHdhaXRldmVudHNldC5jfSAgIHwgNjAxICsrKysrKystLS0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIHwgICA2ICstCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAgfCAxMDUgKy0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgOSAt CiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAgICAgfCAgNTYg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmggICAgICAgICAgICAgICAgfCAg IDEgLQogc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaCAgICAgICAgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAg fCAgIDQgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCAgICAgICAgICAgICAg IHwgMTU5ICsrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggICAgICAgICAgICAg ICAgICAgfCAyMTcgKystLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAg ICAgICAgICAgICAgIHwgIDI5ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNl dC5oICAgICAgICAgICAgfCAxMTkgKysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9t cS9zZXR1cC5jICAgICAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3Rlc3QuYyAgICAgICAgICAgfCAgIDcgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvd29ya2VyLmMgICAgICAgICB8ICAgMyArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICstCiA0NCBmaWxlcyBjaGFuZ2VkLCA5 ODAgaW5zZXJ0aW9ucygrKSwgODk0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2ludGVycnVwdC5jCiByZW5hbWUgc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMve2xhdGNoLmMgPT4gd2FpdGV2ZW50c2V0LmN9ICg3OCUpCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKCmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGFkYzYyNTc2ZDEuLjQ2NTI4NTFi NTAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC03MzU3LDcgKzcz NTcsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0 ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0FyZXEgPT0gYXJlcSk7CiAKIAlBZGRXYWl0RXZl bnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgUFFzb2NrZXQoZnNzdGF0ZS0+Y29u biksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJCQkJCSAgMCwgYXJlcSk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZmRjMDkwNjMxNC4uZmQxOWE4ODQ1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtODYsOSArODYsOSBAQAog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xhcmdlX29iamVjdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNs dWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBAIC0yNjc2LDcgKzI2NzYsNyBAQCBY TG9nU2V0QXN5bmNYYWN0TFNOKFhMb2dSZWNQdHIgYXN5bmNYYWN0TFNOKQogCiAJCXdhbHdy aXRlclByb2MgPSBwcm9jZ2xvYmFsLT53YWx3cml0ZXJQcm9jOwogCQlpZiAod2Fsd3JpdGVy UHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5 TnVtYmVyKHdhbHdyaXRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFByb2NHbG9iYWwtPndhbHdyaXRlclByb2MpOwog CX0KIH0KIApAQCAtOTMyNCwxMSArOTMyNCwxMSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNr dXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2Fp dGluZyA9IHRydWU7CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkJIDEwMDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9B UkNISVZFKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVy cnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgMTAw MEwsCisJCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKKwkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCWlmICgr K3dhaXRzID49IHNlY29uZHNfYmVmb3JlX3dhcm5pbmcpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IDM1YTVlMzFlM2QuLmFiNzU3 MGVjYzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5j CkBAIC01NCw4ICs1NCw5IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ1dGlscy9kYXRldGltZS5oIgpAQCAtMzE2LDIz ICszMTcsNiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJICovCiAJ Ym9vbAkJU2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkOwogCi0JLyoKLQkgKiByZWNvdmVyeVdh a2V1cExhdGNoIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIGNv bnRpbnVlCi0JICogV0FMIHJlcGxheSwgaWYgaXQgaXMgd2FpdGluZyBmb3IgV0FMIHRvIGFy cml2ZSBvciBwcm9tb3Rpb24gdG8gYmUKLQkgKiByZXF1ZXN0ZWQuCi0JICoKLQkgKiBOb3Rl IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHNvIHVzZXMgYW5vdGhlciBsYXRjaCwgaXRz IHByb2NMYXRjaCwKLQkgKiB0byB3YWl0IGZvciByZWNvdmVyeSBjb25mbGljdC4gSWYgd2Ug Z2V0IHJpZCBvZiByZWNvdmVyeVdha2V1cExhdGNoIGZvcgotCSAqIHNpZ25hbGluZyB0aGUg c3RhcnR1cCBwcm9jZXNzIGluIGZhdm9yIG9mIHVzaW5nIGl0cyBwcm9jTGF0Y2gsIHdoaWNo Ci0JICogY29tcG9ydHMgYmV0dGVyIHdpdGggcG9zc2libGUgZ2VuZXJpYyBzaWduYWwgaGFu ZGxlcnMgdXNpbmcgdGhhdCBsYXRjaC4KLQkgKiBCdXQgd2Ugc2hvdWxkIG5vdCBkbyB0aGF0 IGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBkb2Vzbid0IGFzc3VtZQotCSAqIHRoYXQg aXQncyB3YWtlbiB1cCBieSB3YWxyZWNlaXZlciBwcm9jZXNzIG9yIFNJR0hVUCBzaWduYWwg aGFuZGxlcgotCSAqIHdoaWxlIGl0J3Mgd2FpdGluZyBmb3IgcmVjb3ZlcnkgY29uZmxpY3Qu IFRoZSBzZXBhcmF0ZSBsYXRjaGVzLAotCSAqIHJlY292ZXJ5V2FrZXVwTGF0Y2ggYW5kIHBy b2NMYXRjaCwgc2hvdWxkIGJlIHVzZWQgZm9yIGludGVyLXByb2Nlc3MKLQkgKiBjb21tdW5p Y2F0aW9uIGZvciBXQUwgcmVwbGF5IGFuZCByZWNvdmVyeSBjb25mbGljdCwgcmVzcGVjdGl2 ZWx5LgotCSAqLwotCUxhdGNoCQlyZWNvdmVyeVdha2V1cExhdGNoOwotCiAJLyoKIAkgKiBM YXN0IHJlY29yZCBzdWNjZXNzZnVsbHkgcmVwbGF5ZWQuCiAJICovCkBAIC00NjcsNyArNDUx LDYgQEAgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpCiAJbWVtc2V0KFhMb2dSZWNvdmVy eUN0bCwgMCwgc2l6ZW9mKFhMb2dSZWNvdmVyeUN0bERhdGEpKTsKIAogCVNwaW5Mb2NrSW5p dCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7Ci0JSW5pdFNoYXJlZExhdGNoKCZYTG9n UmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZhcmlhYmxl SW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKIH0KIApAQCAt NTQxLDEzICs1MjQsNiBAQCBJbml0V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250 cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25fcHRyLAogCXJlYWRSZWNvdmVyeVNpZ25hbEZp bGUoKTsKIAl2YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVycygpOwogCi0JLyoKLQkgKiBUYWtl IG93bmVyc2hpcCBvZiB0aGUgd2FrZXVwIGxhdGNoIGlmIHdlJ3JlIGdvaW5nIHRvIHNsZWVw IGR1cmluZwotCSAqIHJlY292ZXJ5LCBpZiByZXF1aXJlZC4KLQkgKi8KLQlpZiAoQXJjaGl2 ZVJlY292ZXJ5UmVxdWVzdGVkKQotCQlPd25MYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNv dmVyeVdha2V1cExhdGNoKTsKLQogCS8qCiAJICogU2V0IHRoZSBXQUwgcmVhZGluZyBwcm9j ZXNzb3Igbm93LCBhcyBpdCB3aWxsIGJlIG5lZWRlZCB3aGVuIHJlYWRpbmcKIAkgKiB0aGUg Y2hlY2twb2ludCByZWNvcmQgcmVxdWlyZWQgKGJhY2t1cF9sYWJlbCBvciBub3QpLgpAQCAt MTYzNSwxMyArMTYxMSw2IEBAIFNodXRkb3duV2FsUmVjb3Zlcnkodm9pZCkKIAkJc25wcmlu dGYocmVjb3ZlcnlQYXRoLCBNQVhQR1BBVEgsIFhMT0dESVIgIi9SRUNPVkVSWUhJU1RPUlki KTsKIAkJdW5saW5rKHJlY292ZXJ5UGF0aCk7CS8qIGlnbm9yZSBhbnkgZXJyb3IgKi8KIAl9 Ci0KLQkvKgotCSAqIFdlIGRvbid0IG5lZWQgdGhlIGxhdGNoIGFueW1vcmUuIEl0J3Mgbm90 IHN0cmljdGx5IG5lY2Vzc2FyeSB0byBkaXNvd24KLQkgKiBpdCwgYnV0IGxldCdzIGRvIGl0 IGZvciB0aGUgc2FrZSBvZiB0aWRpbmVzcy4KLQkgKi8KLQlpZiAoQXJjaGl2ZVJlY292ZXJ5 UmVxdWVzdGVkKQotCQlEaXNvd25MYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdh a2V1cExhdGNoKTsKIH0KIAogLyoKQEAgLTMwNDIsMTEgKzMwMTEsMTkgQEAgcmVjb3ZlcnlB cHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJd2hpbGUgKHRydWUpCiAJ ewotCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gp OworCQkvKgorCQkgKiBJTlRFUlJVUFRfR0VORVJBTF9XQUtVUCBpcyB1c2VkIGZvciBhbGwg dGhlIHVzdWFsIGludGVycnVwdHMsIGxpa2UKKwkJICogY29uZmlnIHJlbG9hZHMuICBUaGUg d2FrZXVwcyB3aGVuIG1vcmUgV0FMIGFycml2ZSB1c2UgYSBkaWZmZXJlbnQKKwkJICogaW50 ZXJydXB0IG51bWJlciAoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFKSBzbyB0aGF0IG1v cmUgV0FMCisJCSAqIGFycml2aW5nIGRvbid0IHdha2UgdXAgdGhlIHN0YXJ0dXAgcHJvY2Vz cyBleGNlc3NpdmVseSwgd2hlbiB3ZSdyZQorCQkgKiB3YWl0aW5nIGluIG90aGVyIHBsYWNl cywgbGlrZSBmb3IgcmVjb3ZlcnkgY29uZmxpY3RzLgorCQkgKi8KKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBUaGlzIG1pZ2h0IGNoYW5n ZSByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkuICovCiAJCUhhbmRsZVN0YXJ0dXBQcm9jSW50 ZXJydXB0cygpOwogCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05U SU5VRSk7CiAJCWlmIChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkpCiAJCQlicmVhazsKIApA QCAtMzA2NywxMCArMzA0NCwxMSBAQCByZWNvdmVyeUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJZWxvZyhERUJVRzIsICJyZWNvdmVyeSBhcHBseSBkZWxheSAl bGQgbWlsbGlzZWNvbmRzIiwgbXNlY3MpOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBtc2VjcywKLQkJ CQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgfAorCQkJCQkJCSAx IDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNzLAorCQkJ CQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRy dWU7CiB9CkBAIC0zNzEzLDE1ICszNjkxLDE3IEBAIFdhaXRGb3JXQUxUb0JlY29tZUF2YWls YWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJLyogRG8g YmFja2dyb3VuZCB0YXNrcyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJ CQlLbm93bkFzc2lnbmVkVHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJ CQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExh dGNoLAotCQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJ CQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAotCQkJCQkJ CQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJ CQkJCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7 CisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNPVkVSWV9D T05USU5VRSB8CisJCQkJCQkJCQkJCSAxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwK KwkJCQkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfAorCQkJCQkJCQkJCQkg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkJIHdhaXRfdGltZSwKKwkJCQkJCQkJ CQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfUkVUUklFVkVfUkVUUllfSU5URVJWQUwpOworCQkJ CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFKTsKIAkJCQkJ CW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAogCQkJCQkJLyogSGFuZGxlIGludGVy cnVwdCBzaWduYWxzIG9mIHN0YXJ0dXAgcHJvY2VzcyAqLworCQkJCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCQkJCUhhbmRsZVN0YXJ0dXBQcm9j SW50ZXJydXB0cygpOwogCQkJCQl9CiAJCQkJCWxhc3RfZmFpbF90aW1lID0gbm93OwpAQCAt Mzk4OSwxMSArMzk2OSwxMiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1Jl Y1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJICogV2FpdCBmb3IgbW9yZSBX QUwgdG8gYXJyaXZlLCB3aGVuIHdlIHdpbGwgYmUgd29rZW4KIAkJCQkJICogaW1tZWRpYXRl bHkgYnkgdGhlIFdBTCByZWNlaXZlci4KIAkJCQkJICovCi0JCQkJCSh2b2lkKSBXYWl0TGF0 Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCwKLQkJCQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJIC0xTCwKLQkJ CQkJCQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0pOwotCQkJCQlSZXNldExh dGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCQkJCQkodm9p ZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSB8CisJ CQkJCQkJCQkJIDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJCSAtMUwsCisJ CQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSk7CisJCQkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSk7CiAJCQkJCWJyZWFrOwog CQkJCX0KIApAQCAtNDAxMyw2ICszOTk0LDcgQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxh YmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29sIHJhbmRBY2Nlc3MsCiAJCSAqIFRoaXMgcG9z c2libHktbG9uZyBsb29wIG5lZWRzIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAK IAkJICogcHJvY2Vzcy4KIAkJICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCk7CiAJCUhhbmRsZVN0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwogCX0KIApA QCAtNDQ4OSw3ICs0NDcxLDEwIEBAIENoZWNrUHJvbW90ZVNpZ25hbCh2b2lkKQogdm9pZAog V2FrZXVwUmVjb3Zlcnkodm9pZCkKIHsKLQlTZXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5y ZWNvdmVyeVdha2V1cExhdGNoKTsKKwlpbnQJCQlwcm9jbm8gPSAoKHZvbGF0aWxlIFBST0Nf SERSICopIFByb2NHbG9iYWwpLT5zdGFydHVwUHJvYzsKKworCWlmIChwcm9jbm8gIT0gSU5W QUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09OVElOVUUsIHByb2Nubyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy93YWl0bHNuLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0bHNuLmMKaW5k ZXggMTkzN2JhZmFmYy4uNGZjMzQ4NTRiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvd2FpdGxzbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXRsc24uYwpA QCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3dhaXRsc24uaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1 ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKQEAgLTE0Nyw5ICsxNDcsOSBAQCBkZWxldGVMU05X YWl0ZXIodm9pZCkKIH0KIAogLyoKLSAqIFJlbW92ZSB3YWl0ZXJzIHdob3NlIExTTiBoYXMg YmVlbiByZXBsYXllZCBmcm9tIHRoZSBoZWFwIGFuZCBzZXQgdGhlaXIKLSAqIGxhdGNoZXMu ICBJZiBJbnZhbGlkWExvZ1JlY1B0ciBpcyBnaXZlbiwgcmVtb3ZlIGFsbCB3YWl0ZXJzIGZy b20gdGhlIGhlYXAKLSAqIGFuZCBzZXQgbGF0Y2hlcyBmb3IgYWxsIHdhaXRlcnMuCisgKiBS ZW1vdmUgd2FpdGVycyB3aG9zZSBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgZnJvbSB0aGUgaGVh cCBhbmQgc2VuZCB0aGVtCisgKiBpbnRlcnJ1cHRzLiAgSWYgSW52YWxpZFhMb2dSZWNQdHIg aXMgZ2l2ZW4sIHJlbW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBoZWFwCisgKiBhbmQgc2Vu ZCBpbnRlcnJ1cHRzIGZvciBhbGwgd2FpdGVycy4KICAqLwogdm9pZAogV2FpdExTTldha2V1 cChYTG9nUmVjUHRyIGN1cnJlbnRMU04pCkBAIC0xODcsMTQgKzE4NywxMyBAQCBXYWl0TFNO V2FrZXVwKFhMb2dSZWNQdHIgY3VycmVudExTTikKIAlMV0xvY2tSZWxlYXNlKFdhaXRMU05M b2NrKTsKIAogCS8qCi0JICogU2V0IGxhdGNoZXMgZm9yIHByb2Nlc3Nlcywgd2hvc2Ugd2Fp dGVkIExTTnMgYXJlIGFscmVhZHkgcmVwbGF5ZWQuIEFzCi0JICogdGhlIHRpbWUgY29uc3Vt aW5nIG9wZXJhdGlvbnMsIHdlIGRvIGl0IHRoaXMgb3V0c2lkZSBvZiBXYWl0TFNOTG9jay4K LQkgKiBUaGlzIGlzICBhY3R1YWxseSBmaW5lIGJlY2F1c2UgcHJvY0xhdGNoIGlzbid0IGV2 ZXIgZnJlZWQsIHNvIHdlIGp1c3QKLQkgKiBjYW4gcG90ZW50aWFsbHkgc2V0IHRoZSB3cm9u ZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLgorCSAqIFNlbmQgdGhlIGludGVy cnVwdHMuIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgYmFja2VuZHMgaGF2ZSBleGl0ZWQgc2lu Y2UKKwkgKiB3ZSByZWxlYXNlZCB0aGUgbG9jaywgc28gd2UgbWF5IGludGVycnVwdCB3cm9u ZyBiYWNrZW5kLCBidXQgdGhhdCdzCisJICogaGFybWxlc3MuCiAJICovCiAJZm9yIChpID0g MDsgaSA8IG51bVdha2VVcFByb2NzOyBpKyspCiAJewotCQlTZXRMYXRjaCgmR2V0UEdQcm9j QnlOdW1iZXIod2FrZVVwUHJvY3NbaV0pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgd2FrZVVwUHJvY3NbaV0pOwogCX0KIAlwZnJl ZSh3YWtlVXBQcm9jcyk7CiB9CkBAIC0yMTYsMTUgKzIxNSwxNSBAQCBXYWl0TFNOQ2xlYW51 cCh2b2lkKQogfQogCiAvKgotICogV2FpdCB1c2luZyBNeUxhdGNoIHRpbGwgdGhlIGdpdmVu IExTTiBpcyByZXBsYXllZCwgdGhlIHBvc3RtYXN0ZXIgZGllcyBvcgotICogdGltZW91dCBo YXBwZW5zLgorICogV2FpdCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVwbGF5ZWQgYW5kIHdl IGdldCBpbnRlcnJ1cHRlZCwgdGhlIHBvc3RtYXN0ZXIKKyAqIGRpZXMgb3IgdGltZW91dCBo YXBwZW5zLgogICovCiBzdGF0aWMgdm9pZAogV2FpdEZvckxTTlJlcGxheShYTG9nUmVjUHRy IHRhcmdldExTTiwgaW50NjQgdGltZW91dCkKIHsKIAlYTG9nUmVjUHRyCWN1cnJlbnRMU047 CiAJVGltZXN0YW1wVHogZW5kdGltZSA9IDA7Ci0JaW50CQkJd2FrZV9ldmVudHMgPSBXTF9M QVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCWludAkJCXdha2VfZXZlbnRzID0g V0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAogCS8qIFNob3VsZG4ndCBi ZSBjYWxsZWQgd2hlbiBzaG1lbSBpc24ndCBpbml0aWFsaXplZCAqLwogCUFzc2VydCh3YWl0 TFNOU3RhdGUpOwpAQCAtMzEyLDExICszMTEsMTEgQEAgV2FpdEZvckxTTlJlcGxheShYTG9n UmVjUHRyIHRhcmdldExTTiwgaW50NjQgdGltZW91dCkKIAogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIHdha2VfZXZlbnRzLCBkZWxh eV9tcywKLQkJCQkJICAgV0FJVF9FVkVOVF9XQUlUX0ZPUl9XQUxfUkVQTEFZKTsKKwkJcmMg PSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCB3YWtlX2V2 ZW50cywgZGVsYXlfbXMsCisJCQkJCQkgICBXQUlUX0VWRU5UX1dBSVRfRk9SX1dBTF9SRVBM QVkpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li4zMTRlM2Q4ZmJiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jCkBAIC02MSw5ICs2MSw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivbm9kZUFwcGVuZC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNs dWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgogCiAvKiBTaGFyZWQgc3RhdGUgZm9yIHBh cmFsbGVsLWF3YXJlIEFwcGVuZC4gKi8KIHN0cnVjdCBQYXJhbGxlbEFwcGVuZFN0YXRlCkBA IC0xMDI4LDcgKzEwMjcsNyBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3Rh dGUgKm5vZGUpCiAJQXNzZXJ0KG5vZGUtPmFzX2V2ZW50c2V0ID09IE5VTEwpOwogCW5vZGUt PmFzX2V2ZW50c2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVy LCBuZXZlbnRzKTsKIAlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJICBOVUxMLCBOVUxM KTsKKwkJCQkJICAwLCBOVUxMKTsKIAogCS8qIEdpdmUgZWFjaCB3YWl0aW5nIHN1YnBsYW4g YSBjaGFuY2UgdG8gYWRkIGFuIGV2ZW50LiAqLwogCWkgPSAtMTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2Vj dXJlLmMKaW5kZXggZWYyMGVhNzU1Yi4uNGZkYmYyZDg3MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2Vj dXJlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KIAogI2lu Y2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgpAQCAtMjEyLDcgKzIxMiw3IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3YWl0 Zm9yKTsKIAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29j a2V0UG9zLCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0 LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CiAKIAkJV2FpdEV2ZW50U2V0 V2FpdChGZUJlV2FpdFNldCwgLTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJ CQkJCSBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKTsKQEAgLTI0MCw5ICsyNDAsOSBAQCByZXRy eToKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gdW5leHBl Y3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwogCiAJCS8qIEhhbmRsZSBpbnRlcnJ1cHQuICov Ci0JCWlmIChldmVudC5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChldmVudC5ldmVu dHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJUHJvY2Vzc0Ns aWVudFJlYWRJbnRlcnJ1cHQodHJ1ZSk7CiAKIAkJCS8qCkBAIC0zMzcsNyArMzM3LDcgQEAg cmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0JCU1vZGlmeVdhaXRFdmVudChGZUJl V2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdhaXRmb3IsIE5VTEwpOworCQlNb2Rp ZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCB3YWl0Zm9y LCAwKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAvKiBubyB0aW1l b3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5UX1dSSVRFKTsK QEAgLTM0OSw5ICszNDksOSBAQCByZXRyeToKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcg Y29ubmVjdGlvbiBkdWUgdG8gdW5leHBlY3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwogCiAJ CS8qIEhhbmRsZSBpbnRlcnJ1cHQuICovCi0JCWlmIChldmVudC5ldmVudHMgJiBXTF9MQVRD SF9TRVQpCisJCWlmIChldmVudC5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVApOwogCQkJUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KHRydWUpOwogCiAJ CQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMgYi9zcmMvYmFj a2VuZC9saWJwcS9wcWNvbW0uYwppbmRleCA4OTZlMTQ3NmI1Li4zYjdiYzk5Y2E3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9wcWNvbW0uYwpAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bv c3RtYXN0ZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCBwcV9pbml0KENsaWVu dFNvY2tldCAqY2xpZW50X3NvY2spCiB7CiAJUG9ydAkgICAqcG9ydDsKIAlpbnQJCQlzb2Nr ZXRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKLQlpbnQJCQlsYXRjaF9wb3MgUEdf VVNFRF9GT1JfQVNTRVJUU19PTkxZOworCWludAkJCWludGVycnVwdF9wb3MgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZOwogCiAJLyogYWxsb2NhdGUgdGhlIFBvcnQgc3RydWN0IGFuZCBj b3B5IHRoZSBDbGllbnRTb2NrZXQgY29udGVudHMgdG8gaXQgKi8KIAlwb3J0ID0gcGFsbG9j MChzaXplb2YoUG9ydCkpOwpAQCAtMjg3LDggKzI4OCw4IEBAIHBxX2luaXQoQ2xpZW50U29j a2V0ICpjbGllbnRfc29jaykKIAogCS8qCiAJICogSW4gYmFja2VuZHMgKGFzIHNvb24gYXMg Zm9ya2VkKSB3ZSBvcGVyYXRlIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpbgotCSAqIG5vbmJs b2NraW5nIG1vZGUgYW5kIHVzZSBsYXRjaGVzIHRvIGltcGxlbWVudCBibG9ja2luZyBzZW1h bnRpY3MgaWYKLQkgKiBuZWVkZWQuIFRoYXQgYWxsb3dzIHVzIHRvIHByb3ZpZGUgc2FmZWx5 IGludGVycnVwdGlibGUgcmVhZHMgYW5kCisJICogbm9uYmxvY2tpbmcgbW9kZSBhbmQgdXNl IFdhaXRFdmVudFNldCB0byBpbXBsZW1lbnQgYmxvY2tpbmcgc2VtYW50aWNzCisJICogaWYg bmVlZGVkLiBUaGF0IGFsbG93cyB1cyB0byBwcm92aWRlIHNhZmVseSBpbnRlcnJ1cHRpYmxl IHJlYWRzIGFuZAogCSAqIHdyaXRlcy4KIAkgKi8KICNpZm5kZWYgV0lOMzIKQEAgLTMwNiwx OCArMzA3LDE4IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIAogCUZl QmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIEZlQmVXYWl0U2V0TkV2ZW50 cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9T T0NLRVRfV1JJVEVBQkxFLAotCQkJCQkJCQkgICBwb3J0LT5zb2NrLCBOVUxMLCBOVUxMKTsK LQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2FpdFNldCwgV0xfTEFUQ0hf U0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCQkJ CQkJCQkgICBwb3J0LT5zb2NrLCAwLCBOVUxMKTsKKwlpbnRlcnJ1cHRfcG9zID0gQWRkV2Fp dEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tF VCwKKwkJCQkJCQkJCSAgMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIE5VTEwpOwog CUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQ R0lOVkFMSURfU09DS0VULAotCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkgIDAsIE5VTEwp OwogCiAJLyoKIAkgKiBUaGUgZXZlbnQgcG9zaXRpb25zIG1hdGNoIHRoZSBvcmRlciB3ZSBh ZGRlZCB0aGVtLCBidXQgbGV0J3Mgc2FuaXR5CiAJICogY2hlY2sgdGhlbSB0byBiZSBzdXJl LgogCSAqLwogCUFzc2VydChzb2NrZXRfcG9zID09IEZlQmVXYWl0U2V0U29ja2V0UG9zKTsK LQlBc3NlcnQobGF0Y2hfcG9zID09IEZlQmVXYWl0U2V0TGF0Y2hQb3MpOworCUFzc2VydChp bnRlcnJ1cHRfcG9zID09IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zKTsKIAogCXJldHVybiBw b3J0OwogfQpAQCAtMjA2MCw3ICsyMDYxLDcgQEAgcHFfY2hlY2tfY29ubmVjdGlvbih2b2lk KQogCSAqIEl0J3MgT0sgdG8gbW9kaWZ5IHRoZSBzb2NrZXQgZXZlbnQgZmlsdGVyIHdpdGhv dXQgcmVzdG9yaW5nLCBiZWNhdXNlCiAJICogYWxsIEZlQmVXYWl0U2V0IHNvY2tldCB3YWl0 IHNpdGVzIGRvIHRoZSBzYW1lLgogCSAqLwotCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNl dCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9DTE9TRUQsIE5VTEwpOworCU1v ZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdMX1NP Q0tFVF9DTE9TRUQsIDApOwogCiByZXRyeToKIAlyYyA9IFdhaXRFdmVudFNldFdhaXQoRmVC ZVdhaXRTZXQsIDAsIGV2ZW50cywgbGVuZ3Rob2YoZXZlbnRzKSwgMCk7CkBAIC0yMDY4LDE1 ICsyMDY5LDE1IEBAIHJldHJ5OgogCXsKIAkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9T T0NLRVRfQ0xPU0VEKQogCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZXZlbnRzW2ldLmV2ZW50 cyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJV UFQpCiAJCXsKIAkJCS8qCi0JCQkgKiBBIGxhdGNoIGV2ZW50IG1pZ2h0IGJlIHByZXZlbnRp bmcgb3RoZXIgZXZlbnRzIGZyb20gYmVpbmcKKwkJCSAqIEFuIGludGVycnVwdCBldmVudCBt aWdodCBiZSBwcmV2ZW50aW5nIG90aGVyIGV2ZW50cyBmcm9tIGJlaW5nCiAJCQkgKiByZXBv cnRlZC4gIFJlc2V0IGl0IGFuZCBwb2xsIGFnYWluLiAgTm8gbmVlZCB0byByZXN0b3JlIGl0 Ci0JCQkgKiBiZWNhdXNlIG5vIGNvZGUgc2hvdWxkIGV4cGVjdCBsYXRjaGVzIHRvIHN1cnZp dmUgYWNyb3NzCi0JCQkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpLgorCQkJICogYmVjYXVz ZSBubyBjb2RlIHNob3VsZCBleHBlY3QgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQIHRvCisJ CQkgKiBzdXJ2aXZlIGFjcm9zcyBDSEVDS19GT1JfSU5URVJSVVBUUygpLgogCQkJICovCi0J CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIAkJCWdvdG8gcmV0cnk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV4cHJvY2Vzcy5jCmluZGV4IDc0YjhhMDBjOTQuLjczNmUyMzBiZDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25l ci5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGU1NTZkN2VjZWUuLmNiYjVjN2E3YTQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNDksNiArNDksNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25k aXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0z NDMsNyArMzQ0LDcgQEAgQ2hlY2twb2ludGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlib29sCQljaGtwdF9vcl9yc3RwdF90aW1lZCA9 IGZhbHNlOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwot CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOwogCiAJCS8qCiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNp Z25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCkBAIC01NDQsMTAgKzU0NSwxMCBAQCBDaGVja3Bv aW50ZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4p CiAJCQljdXJfdGltZW91dCA9IE1pbihjdXJfdGltZW91dCwgWExvZ0FyY2hpdmVUaW1lb3V0 IC0gZWxhcHNlZF9zZWNzKTsKIAkJfQogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCSBjdXJfdGltZW91dCAqIDEwMDBMIC8qIGNvbnZlcnQgdG8gbXMgKi8gLAot CQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4pOworCQkodm9pZCkgV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5U RVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGN1 cl90aW1lb3V0ICogMTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCisJCQkJCQkJIFdBSVRf RVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4pOwogCX0KIH0KIApAQCAtNzQ3LDEwICs3NDgsMTEg QEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCiAJ CSAqIENoZWNrcG9pbnRlciBhbmQgYmd3cml0ZXIgYXJlIG5vIGxvbmdlciByZWxhdGVkIHNv IHRha2UgdGhlIEJpZwogCQkgKiBTbGVlcC4KIAkJICovCi0JCVdhaXRMYXRjaChNeUxhdGNo LCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKLQkJ CQkgIDEwMCwKLQkJCQkgIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVF9XUklURV9ERUxBWSk7Ci0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVAsCisJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCB8IFdMX1RJTUVPVVQsCisJCQkJCSAgMTAwLAorCQkJCQkgIFdBSVRfRVZFTlRfQ0hF Q0tQT0lOVF9XUklURV9ERUxBWSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCk7CiAJfQogCWVsc2UgaWYgKC0tYWJzb3JiX2NvdW50ZXIgPD0gMCkKIAl7 CkBAIC04NjIsNyArODY0LDcgQEAgUmVxQ2hlY2twb2ludEhhbmRsZXIoU0lHTkFMX0FSR1Mp CiAJICogVGhlIHNpZ25hbGluZyBwcm9jZXNzIHNob3VsZCBoYXZlIHNldCBja3B0X2ZsYWdz IG5vbnplcm8sIHNvIGFsbCB3ZQogCSAqIG5lZWQgZG8gaXMgZW5zdXJlIHRoYXQgb3VyIG1h aW4gbG9vcCBnZXRzIGtpY2tlZCBvdXQgb2YgYW55IHdhaXQuCiAJICovCi0JU2V0TGF0Y2go TXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IH0KIAogCkBAIC0xMTM1LDcgKzExMzcsNyBAQCBGb3J3YXJkU3luY1JlcXVlc3QoY29uc3Qg RmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAKIAkJY2hlY2twb2ludGVy UHJvYyA9IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2M7CiAJCWlmIChjaGVja3BvaW50 ZXJQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9j QnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVy UHJvYyk7CiAJfQogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1 cHQuYwppbmRleCBlZWRjMDk4MGNmLi44Y2JkZTA2OThjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKQEAgLTE4LDggKzE4LDggQEAKIAogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUg InN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNp bmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAt NjEsNyArNjEsNyBAQCB2b2lkCiBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKFNJR05B TF9BUkdTKQogewogCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15 TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9 CiAKIC8qCkBAIC0xMDUsNSArMTA1LDUgQEAgdm9pZAogU2lnbmFsSGFuZGxlckZvclNodXRk b3duUmVxdWVzdChTSUdOQUxfQVJHUykKIHsKIAlTaHV0ZG93blJlcXVlc3RQZW5kaW5nID0g dHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wZ2FyY2guYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKaW5kZXggMDJm OTE0MzFmNS4uMDE0MDViZjJhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wZ2FyY2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC00 MSw4ICs0MSw4IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wZ2FyY2guaCIKICNpbmNsdWRl ICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2NzaWduYWwuaCIKQEAgLTI0Nyw4ICsyNDcsOCBAQCBQZ0FyY2hpdmVyTWFpbihj aGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCW9uX3NobWVt X2V4aXQocGdhcmNoX2RpZSwgMCk7CiAKIAkvKgotCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBu dW1iZXIgc28gdGhhdCBiYWNrZW5kcyBjYW4gdXNlIG91ciBsYXRjaCB0byB3YWtlIHVzCi0J ICogdXAgd2hpbGUgd2UncmUgc2xlZXBpbmcuCisJICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51 bWJlciBzbyB0aGF0IGJhY2tlbmRzIGNhbiB3YWtlIHVzIHVwIHdoaWxlIHdlJ3JlCisJICog c2xlZXBpbmcuCiAJICovCiAJUGdBcmNoLT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIApA QCAtMjgyLDEzICsyODIsMTIgQEAgUGdBcmNoV2FrZXVwKHZvaWQpCiAJaW50CQkJYXJjaF9w Z3Byb2NubyA9IFBnQXJjaC0+cGdwcm9jbm87CiAKIAkvKgotCSAqIFdlIGRvbid0IGFjcXVp cmUgUHJvY0FycmF5TG9jayBoZXJlLiAgSXQncyBhY3R1YWxseSBmaW5lIGJlY2F1c2UKLQkg KiBwcm9jTGF0Y2ggaXNuJ3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4gcG90ZW50aWFs bHkgc2V0IHRoZSB3cm9uZwotCSAqIHByb2Nlc3MnIChvciBubyBwcm9jZXNzJykgbGF0Y2gu ICBFdmVuIGluIHRoYXQgY2FzZSB0aGUgYXJjaGl2ZXIgd2lsbAotCSAqIGJlIHJlbGF1bmNo ZWQgc2hvcnRseSBhbmQgd2lsbCBzdGFydCBhcmNoaXZpbmcuCisJICogV2UgZG9uJ3QgYWNx dWlyZSBQcm9jQXJyYXlMb2NrIGhlcmUsIHNvIHdlIG1heSBzZW5kIHRoZSBpbnRlcnJ1cHQg dG8KKwkgKiB3cm9uZyBwcm9jZXNzLCBidXQgdGhhdCdzIGhhcm1sZXNzLiAgRXZlbiBpbiB0 aGF0IGNhc2UgdGhlIGFyY2hpdmVyCisJICogd2lsbCBiZSByZWxhdW5jaGVkIHNob3J0bHkg YW5kIHdpbGwgc3RhcnQgYXJjaGl2aW5nLgogCSAqLwogCWlmIChhcmNoX3BncHJvY25vICE9 IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQcm9j c1thcmNoX3BncHJvY25vXS5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgYXJjaF9wZ3Byb2Nubyk7CiB9CiAKIApAQCAtMjk4LDcgKzI5 Nyw3IEBAIHBnYXJjaF93YWtlbl9zdG9wKFNJR05BTF9BUkdTKQogewogCS8qIHNldCBmbGFn IHRvIGRvIGEgZmluYWwgY3ljbGUgYW5kIHNodXQgZG93biBhZnRlcndhcmRzICovCiAJcmVh ZHlfdG9fc3RvcCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTMxOCw3ICszMTcs NyBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkgKi8KIAlkbwogCXsKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIAogCQkvKiBXaGVuIHdlIGdldCBTSUdVU1IyLCB3ZSBkbyBvbmUgbW9yZSBhcmNoaXZl IGN5Y2xlLCB0aGVuIGV4aXQgKi8KIAkJdGltZV90b19zdG9wID0gcmVhZHlfdG9fc3RvcDsK QEAgLTM1NSwxMCArMzU0LDEwIEBAIHBnYXJjaF9NYWluTG9vcCh2b2lkKQogCQl7CiAJCQlp bnQJCQlyYzsKIAotCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAotCQkJCQkJICAg UEdBUkNIX0FVVE9XQUtFX0lOVEVSVkFMICogMTAwMEwsCi0JCQkJCQkgICBXQUlUX0VWRU5U X0FSQ0hJVkVSX01BSU4pOworCQkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9QT1NUTUFTVEVSX0RFQVRILAorCQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRF UlZBTCAqIDEwMDBMLAorCQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CiAJ CQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQkJCXRpbWVfdG9fc3RvcCA9IHRy dWU7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggYTZmZmY5 M2RiMy4uOWJiNDY3ODk1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMK QEAgLTExMiw2ICsxMTIsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCkBAIC01MjgsOCArNTI5LDcgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlwcXNpZ25hbChTSUdDSExELCBoYW5kbGVfcG1fY2hp bGRfZXhpdF9zaWduYWwpOwogCiAJLyogVGhpcyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVw ZW5kaW5nIG9uIHBsYXRmb3JtLiAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsKLQlJ bml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKKwlJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgp OwogCiAJLyoKIAkgKiBObyBvdGhlciBwbGFjZSBpbiBQb3N0Z3JlcyBzaG91bGQgdG91Y2gg U0lHVFRJTi9TSUdUVE9VIGhhbmRsaW5nLiAgV2UKQEAgLTE1ODAsMTQgKzE1ODAsMTQgQEAg Q29uZmlndXJlUG9zdG1hc3RlcldhaXRTZXQoYm9vbCBhY2NlcHRfY29ubmVjdGlvbnMpCiAK IAlwbV93YWl0X3NldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLAogCQkJCQkJCQkJIGFj Y2VwdF9jb25uZWN0aW9ucyA/ICgxICsgTnVtTGlzdGVuU29ja2V0cykgOiAxKTsKLQlBZGRX YWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09D S0VULCBNeUxhdGNoLAorCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9JTlRF UlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsIDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ LAogCQkJCQkgIE5VTEwpOwogCiAJaWYgKGFjY2VwdF9jb25uZWN0aW9ucykKIAl7CiAJCWZv ciAoaW50IGkgPSAwOyBpIDwgTnVtTGlzdGVuU29ja2V0czsgaSsrKQogCQkJQWRkV2FpdEV2 ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX1NPQ0tFVF9BQ0NFUFQsIExpc3RlblNvY2tldHNb aV0sCi0JCQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJCQkgIDAsIE5VTEwpOwogCX0KIH0K IApAQCAtMTYxNiwxOSArMTYxNiwyMCBAQCBTZXJ2ZXJMb29wKHZvaWQpCiAJCQkJCQkJCSAg IDAgLyogcG9zdG1hc3RlciBwb3N0cyBubyB3YWl0X2V2ZW50cyAqLyApOwogCiAJCS8qCi0J CSAqIExhdGNoIHNldCBieSBzaWduYWwgaGFuZGxlciwgb3IgbmV3IGNvbm5lY3Rpb24gcGVu ZGluZyBvbiBhbnkgb2YKLQkJICogb3VyIHNvY2tldHM/IElmIHRoZSBsYXR0ZXIsIGZvcmsg YSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwgd2l0aCBpdC4KKwkJICogSW50ZXJydXB0IHJhaXNl ZCBieSBzaWduYWwgaGFuZGxlciwgb3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbgorCQkg KiBhbnkgb2Ygb3VyIHNvY2tldHM/IElmIHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9j ZXNzIHRvIGRlYWwKKwkJICogd2l0aCBpdC4KIAkJICovCiAJCWZvciAoaW50IGkgPSAwOyBp IDwgbmV2ZW50czsgaSsrKQogCQl7Ci0JCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xB VENIX1NFVCkKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJaWYgKGV2ZW50c1tpXS5l dmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQKTsKIAogCQkJLyoKIAkJCSAqIFRoZSBmb2xsb3dpbmcgcmVxdWVzdHMg YXJlIGhhbmRsZWQgdW5jb25kaXRpb25hbGx5LCBldmVuIGlmIHdlCi0JCQkgKiBkaWRuJ3Qg c2VlIFdMX0xBVENIX1NFVC4gIFRoaXMgZ2l2ZXMgaGlnaCBwcmlvcml0eSB0byBzaHV0ZG93 bgotCQkJICogYW5kIHJlbG9hZCByZXF1ZXN0cyB3aGVyZSB0aGUgbGF0Y2ggaGFwcGVucyB0 byBhcHBlYXIgbGF0ZXIgaW4KLQkJCSAqIGV2ZW50c1tdIG9yIHdpbGwgYmUgcmVwb3J0ZWQg YnkgYSBsYXRlciBjYWxsIHRvCisJCQkgKiBkaWRuJ3Qgc2VlIFdMX0lOVEVSUlVQVC4gIFRo aXMgZ2l2ZXMgaGlnaCBwcmlvcml0eSB0byBzaHV0ZG93bgorCQkJICogYW5kIHJlbG9hZCBy ZXF1ZXN0cyB3aGVyZSB0aGUgaW50ZXJydXB0IGV2ZW50IGhhcHBlbnMgdG8gYXBwZWFyCisJ CQkgKiBsYXRlciBpbiBldmVudHNbXSBvciB3aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIg Y2FsbCB0bwogCQkJICogV2FpdEV2ZW50U2V0V2FpdCgpLgogCQkJICovCiAJCQlpZiAocGVu ZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0KQpAQCAtMTkzNyw3ICsxOTM4LDcgQEAgc3RhdGlj IHZvaWQKIGhhbmRsZV9wbV9wbXNpZ25hbF9zaWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVu ZGluZ19wbV9wbXNpZ25hbCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTE5NDcs NyArMTk0OCw3IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfcG1fcmVsb2FkX3JlcXVlc3Rfc2ln bmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdfcG1fcmVsb2FkX3JlcXVlc3QgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yMDQ0LDcgKzIwNDUsNyBAQCBoYW5kbGVfcG1f c2h1dGRvd25fcmVxdWVzdF9zaWduYWwoU0lHTkFMX0FSR1MpCiAJCQlwZW5kaW5nX3BtX3No dXRkb3duX3JlcXVlc3QgPSB0cnVlOwogCQkJYnJlYWs7CiAJfQotCVNldExhdGNoKE15TGF0 Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAK IC8qCkBAIC0yMjA1LDcgKzIyMDYsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX2NoaWxk X2V4aXRfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdfcG1fY2hpbGRfZXhpdCA9 IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvc3RhcnR1cC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMK aW5kZXggZWY2Zjk4ZWJjZC4uZGRiZTI5ZmJlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFy dHVwLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWdu YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKQEAgLTQwLDcgKzQxLDcgQEAKICAqIE9uIHN5c3RlbXMgdGhhdCBuZWVk IHRvIG1ha2UgYSBzeXN0ZW0gY2FsbCB0byBmaW5kIG91dCBpZiB0aGUgcG9zdG1hc3RlciBo YXMKICAqIGdvbmUgYXdheSwgd2UnbGwgZG8gc28gb25seSBldmVyeSBOdGggY2FsbCB0byBI YW5kbGVTdGFydHVwUHJvY0ludGVycnVwdHMoKS4KICAqIFRoaXMgb25seSBhZmZlY3RzIGhv dyBsb25nIGl0IHRha2VzIHVzIHRvIGRldGVjdCB0aGUgY29uZGl0aW9uIHdoaWxlIHdlJ3Jl Ci0gKiBidXN5IHJlcGxheWluZyBXQUwuICBMYXRjaCB3YWl0cyBhbmQgc2ltaWxhciB3aGlj aCBzaG91bGQgcmVhY3QgaW1tZWRpYXRlbHkKKyAqIGJ1c3kgcmVwbGF5aW5nIFdBTC4gIElu dGVycnVwdCB3YWl0cyBhbmQgc2ltaWxhciB3aGljaCBzaG91bGQgcmVhY3QgaW1tZWRpYXRl bHkKICAqIHRocm91Z2ggdGhlIHVzdWFsIHRlY2huaXF1ZXMuCiAgKi8KICNkZWZpbmUgUE9T VE1BU1RFUl9QT0xMX1JBVEVfTElNSVQgMTAyNApAQCAtMjA1LDYgKzIwNiw4IEBAIFN0YXJ0 dXBQcm9jRXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogCS8qIFNodXRkb3duIHRoZSByZWNv dmVyeSBlbnZpcm9ubWVudCAqLwogCWlmIChzdGFuZGJ5U3RhdGUgIT0gU1RBTkRCWV9ESVNB QkxFRCkKIAkJU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQoKTsKKwor CVByb2NHbG9iYWwtPnN0YXJ0dXBQcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIH0KIAog CkBAIC0yMjAsNiArMjIzLDEyIEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihjaGFyICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCU15QmFja2VuZFR5cGUgPSBCX1NU QVJUVVA7CiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb24oKTsKIAorCS8qCisJICogQWR2 ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0IGJhY2tlbmRzIGNhbiB3YWtlIHVzIHVw LCB3aGVuIHRoZQorCSAqIHNlcnZlciBpcyBwcm9tb3RlZCBvciByZWNvdmVyeSBpcyBwYXVz ZWQvcmVzdW1lZC4KKwkgKi8KKwlQcm9jR2xvYmFsLT5zdGFydHVwUHJvYyA9IE15UHJvY051 bWJlcjsKKwogCS8qIEFycmFuZ2UgdG8gY2xlYW4gdXAgYXQgc3RhcnR1cCBwcm9jZXNzIGV4 aXQgKi8KIAlvbl9zaG1lbV9leGl0KFN0YXJ0dXBQcm9jRXhpdCwgMCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3N5c2xvZ2dlci5jCmluZGV4IDc5NTE1OTlmYTguLmIzMzAzM2IyOTAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwpAQCAtMzM4LDkgKzMzOCw5IEBAIFN5 c0xvZ2dlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkgKiAoaW5jbHVkaW5nIHRoZSBwb3N0bWFzdGVyKS4KIAkgKi8KIAl3ZXMgPSBDcmVh dGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9M QVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsIE15TGF0Y2gsIE5VTEwpOworCUFkZFdhaXRF dmVudFRvU2V0KHdlcywgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULCAxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgTlVMTCk7CiAjaWZuZGVmIFdJTjMyCi0JQWRkV2Fp dEV2ZW50VG9TZXQod2VzLCBXTF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVbMF0sIE5V TEwsIE5VTEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxF LCBzeXNsb2dQaXBlWzBdLCAwLCBOVUxMKTsKICNlbmRpZgogCiAJLyogbWFpbiB3b3JrZXIg bG9vcCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJp emVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCA0 ODM1MGJlYzUyLi4wOTZiMWMyZTAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1 bW1hcml6ZXIuYwpAQCAtNjQ2LDcgKzY0Niw3IEBAIFdha2V1cFdhbFN1bW1hcml6ZXIodm9p ZCkKIAlMV0xvY2tSZWxlYXNlKFdBTFN1bW1hcml6ZXJMb2NrKTsKIAogCWlmIChwZ3Byb2Nu byAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxs UHJvY3NbcGdwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQLCBwZ3Byb2Nubyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci93YWx3cml0ZXIuYwppbmRleCAwYzU1ZDlmYTU5Li4yM2Y1ZTFlYTBmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxl LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3 bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMjM4LDcgKzIzOSw3IEBA IFdhbFdyaXRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAkJfQogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAq LwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOwogCiAJCS8qIFByb2Nlc3MgYW55IHNpZ25hbHMgcmVjZWl2ZWQg cmVjZW50bHkgKi8KIAkJSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CkBAIC0yNjUsOSAr MjY2LDkgQEAgV2FsV3JpdGVyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCQllbHNlCiAJCQljdXJfdGltZW91dCA9IFdhbFdyaXRlckRlbGF5 ICogSElCRVJOQVRFX0ZBQ1RPUjsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkgY3VyX3RpbWVvdXQsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfV1JJVEVSX01B SU4pOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJIGN1cl90aW1lb3V0LAorCQkJCQkJCSBXQUlUX0VWRU5UX1dB TF9XUklURVJfTUFJTik7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jCmluZGV4IGM1NjZkNTBhMDcuLjg0MDgxZGNmODMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTcwMyw3ICs3 MDMsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIg KndvcmtlcikKIHsKIAlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxv Y2spKTsKIAotCVNldExhdGNoKCZ3b3JrZXItPnByb2MtPnByb2NMYXRjaCk7CisJU2VuZElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Mo d29ya2VyLT5wcm9jKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zeW5jcmVwLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMK aW5kZXggZmE1OTg4YzgyNC4uZDhhNTI0MDViMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5 bmNyZXAuYwpAQCAtOTAyLDcgKzkwMiw3IEBAIFN5bmNSZXBXYWtlUXVldWUoYm9vbCBhbGws IGludCBtb2RlKQogCQkvKgogCQkgKiBXYWtlIG9ubHkgd2hlbiB3ZSBoYXZlIHNldCBzdGF0 ZSBhbmQgcmVtb3ZlZCBmcm9tIHF1ZXVlLgogCQkgKi8KLQkJU2V0TGF0Y2goJihwcm9jLT5w cm9jTGF0Y2gpKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAs IEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogCiAJCW51bXByb2NzKys7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggZDFkOTlkZTk4MC4uNDBk MWZhNDkzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC0x MzY3LDcgKzEzNjcsNyBAQCBXYWxSY3ZGb3JjZVJlcGx5KHZvaWQpCiAJcHJvY25vID0gV2Fs UmN2LT5wcm9jbm87CiAJU3BpbkxvY2tSZWxlYXNlKCZXYWxSY3YtPm11dGV4KTsKIAlpZiAo cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNoKCZHZXRQR1Byb2NC eU51bWJlcihwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgcHJvY25vKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRleCBiMTc4MGQwMTA2Li5kMDE1ZjAz MjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5j CkBAIC0zMTgsNyArMzE4LDcgQEAgUmVxdWVzdFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0 bGksIFhMb2dSZWNQdHIgcmVjcHRyLCBjb25zdCBjaGFyICpjb25uaW5mbywKIAlpZiAobGF1 bmNoKQogCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9TVEFSVF9XQUxSRUNFSVZF Uik7CiAJZWxzZSBpZiAod2FscmN2X3Byb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJ U2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHJjdl9wcm9jKS0+cHJvY0xhdGNoKTsK KwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHdhbHJjdl9wcm9j KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggODY2 YjY5ZWM4NS4uN2NlOGYwMTlmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXJf cHJpdmF0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFs LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0xMDQyLDcgKzEwNDMsNyBAQCBT dGFydFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKICAqIHdhbHNlbmRl ciBwcm9jZXNzLgogICoKICAqIEluc2lkZSB0aGUgd2Fsc2VuZGVyIHdlIGNhbiBkbyBiZXR0 ZXIgdGhhbiByZWFkX2xvY2FsX3hsb2dfcGFnZSwKLSAqIHdoaWNoIGhhcyB0byBkbyBhIHBs YWluIHNsZWVwL2J1c3kgbG9vcCwgYmVjYXVzZSB0aGUgd2Fsc2VuZGVyJ3MgbGF0Y2ggZ2V0 cworICogd2hpY2ggaGFzIHRvIGRvIGEgcGxhaW4gc2xlZXAvYnVzeSBsb29wLCBiZWNhdXNl IHRoZSB3YWxzZW5kZXIncyBpbnRlcnJ1cHQgZ2V0cwogICogc2V0IGV2ZXJ5IHRpbWUgV0FM IGlzIGZsdXNoZWQuCiAgKi8KIHN0YXRpYyBpbnQKQEAgLTE2MzksNyArMTY0MCw3IEBAIFBy b2Nlc3NQZW5kaW5nV3JpdGVzKHZvaWQpCiAJCQkJICAgV0FJVF9FVkVOVF9XQUxfU0VOREVS X1dSSVRFX0RBVEEpOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVw cyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVApOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAg LTE2NTcsNyArMTY1OCw3IEBAIFByb2Nlc3NQZW5kaW5nV3JpdGVzKHZvaWQpCiAJfQogCiAJ LyogcmVhY3RpdmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICov Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTE4NDUsNyArMTg0Niw3IEBAIFdhbFNuZFdhaXRG b3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCWxvbmcJCXNsZWVwdGltZTsKIAogCQkvKiBDbGVh ciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0xOTY2LDcgKzE5NjcsNyBAQCBXYWxTbmRX YWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2gg c28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwotCVNldExhdGNoKE15TGF0Y2gp OworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJcmV0dXJu IFJlY2VudEZsdXNoUHRyOwogfQogCkBAIC0yNzgzLDcgKzI3ODQsNyBAQCBXYWxTbmRMb29w KFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQogCWZvciAoOzspCiAJewogCQkv KiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0zNTgyLDcgKzM1ODMsNyBAQCBz dGF0aWMgdm9pZAogV2FsU25kTGFzdEN5Y2xlSGFuZGxlcihTSUdOQUxfQVJHUykKIHsKIAln b3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyogU2V0IHVwIHNpZ25hbCBo YW5kbGVycyAqLwpAQCAtMzY4OCw3ICszNjg5LDcgQEAgV2FsU25kV2FpdCh1aW50MzIgc29j a2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudCkKIHsKIAlXYWl0 RXZlbnQJZXZlbnQ7CiAKLQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0 U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRzLCBOVUxMKTsKKwlNb2RpZnlXYWl0RXZlbnQo RmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRzLCAwKTsK IAogCS8qCiAJICogV2UgdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGVmZmljaWVudGx5 IHdha2UgdXAgd2Fsc2VuZGVycyBpbgpAQCAtMzcwMCw4ICszNzAxLDggQEAgV2FsU25kV2Fp dCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVu dCkKIAkgKiBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzIFdhaXRF dmVudFNldFdhaXQoKSBmb3IKIAkgKiB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0 byB3YWl0IGZvciBzb2NrZXQgZXZlbnRzLiBUaGUgcHJvY2Vzc2VzCiAJICogKHN0YXJ0dXAg cHJvY2Vzcywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0byB3YWtlIHVwIHdhbHNlbmRl cnMgdXNlCi0JICogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVy biBjYWxscyBTZXRMYXRjaCgpLCBoZWxwaW5nCi0JICogd2Fsc2VuZGVycyBjb21lIG91dCBv ZiBXYWl0RXZlbnRTZXRXYWl0KCkuCisJICogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3Qo KSwgd2hpY2ggaW4gdHVybiBjYWxscyBTZW5kSW50ZXJydXB0KCksCisJICogaGVscGluZyB3 YWxzZW5kZXJzIGNvbWUgb3V0IG9mIFdhaXRFdmVudFNldFdhaXQoKS4KIAkgKgogCSAqIFRo aXMgYXBwcm9hY2ggaXMgc2ltcGxlIGFuZCBlZmZpY2llbnQgYmVjYXVzZSwgb25lIGRvZXNu J3QgaGF2ZSB0byBsb29wCiAJICogdGhyb3VnaCBhbGwgdGhlIHdhbHNlbmRlcnMgc2xvdHMs IHdpdGggYSBzcGlubG9jayBhY3F1aXNpdGlvbiBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jCmluZGV4IGRmZmRkNTdlOWIuLjM4M2M1OThjNWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMjM5LDcgKzIzOSw3IEBAIFN0 cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIg KmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCSAqIGFjdHVhbGx5IGZpbmUgYmVjYXVzZSBw cm9jTGF0Y2ggaXNuJ3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4KIAkJICogcG90ZW50 aWFsbHkgc2V0IHRoZSB3cm9uZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLgog CQkgKi8KLQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Jnd3Byb2Nub10ucHJv Y0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIGJn d3Byb2Nubyk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKaW5kZXgg ZDhhMTY1M2ViNi4uNWM3YzcyZjkwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUK QEAgLTEzLDkgKzEzLDkgQEAgT0JKUyA9IFwKIAlkc20ubyBcCiAJZHNtX2ltcGwubyBcCiAJ ZHNtX3JlZ2lzdHJ5Lm8gXAorCWludGVycnVwdC5vIFwKIAlpcGMubyBcCiAJaXBjaS5vIFwK LQlsYXRjaC5vIFwKIAlwbXNpZ25hbC5vIFwKIAlwcm9jYXJyYXkubyBcCiAJcHJvY3NpZ25h bC5vIFwKQEAgLTI1LDYgKzI1LDcgQEAgT0JKUyA9IFwKIAlzaWduYWxmdW5jcy5vIFwKIAlz aW52YWwubyBcCiAJc2ludmFsYWR0Lm8gXAotCXN0YW5kYnkubworCXN0YW5kYnkubyBcCisJ d2FpdGV2ZW50c2V0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2Nv bW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0 LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xNDczNDk4NDJjCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaW50ZXJydXB0LmMKQEAgLTAsMCArMSwxMTQg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGludGVycnVwdC5jCisgKgkgIElu dGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tl bmQvc3RvcmFnZS9pbnRlcnJ1cHQuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFs LmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKKyNpbmNsdWRlICJ1dGls cy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCitzdGF0aWMgcGdfYXRv bWljX3VpbnQzMiBMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzOworc3RhdGljIHBnX2F0b21pY191 aW50MzIgTG9jYWxNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzOworCitwZ19hdG9taWNfdWlu dDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHM7Citw Z19hdG9taWNfdWludDMyICpNeU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMgPSAmTG9jYWxN YXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzOworCisvKgorICogU3dpdGNoIHRvIGxvY2FsIGlu dGVycnVwdHMuICBPdGhlciBiYWNrZW5kcyBjYW4ndCBzZW5kIGludGVycnVwdHMgdG8gdGhp cworICogb25lLiAgT25seSBSYWlzZUludGVycnVwdCgpIGNhbiBzZXQgdGhlbSwgZnJvbSBp bnNpZGUgdGhpcyBwcm9jZXNzLgorICovCit2b2lkCitTd2l0Y2hUb0xvY2FsSW50ZXJydXB0 cyh2b2lkKQoreworCWlmIChNeVBlbmRpbmdJbnRlcnJ1cHRzID09ICZMb2NhbFBlbmRpbmdJ bnRlcnJ1cHRzKQorCQlyZXR1cm47CisKKwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxvY2Fs UGVuZGluZ0ludGVycnVwdHM7CisJTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzID0gJkxv Y2FsTWF5YmVTbGVlcGluZ09uSW50ZXJydXB0czsKKworCS8qCisJICogTWFrZSBzdXJlIHRo YXQgU0lHQUxSTSBoYW5kbGVycyB0aGF0IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBhcmUgbm93 CisJICogc2VlaW5nIHRoZSBuZXcgTXlQZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5hdGlvbi4K KwkgKi8KKwlwZ19tZW1vcnlfYmFycmllcigpOworCisJLyoKKwkgKiBNaXggaW4gdGhlIGlu dGVycnVwdHMgdGhhdCB3ZSBoYXZlIHJlY2VpdmVkIGFscmVhZHkgaW4gb3VyIHNoYXJlZAor CSAqIGludGVycnVwdCB2ZWN0b3IsIHdoaWxlIGF0b21pY2FsbHkgY2xlYXJpbmcgaXQuICBP dGhlciBiYWNrZW5kcyBtYXkKKwkgKiBjb250aW51ZSB0byBzZXQgYml0cyBpbiBpdCBhZnRl ciB0aGlzIHBvaW50LCBidXQgd2UndmUgYXRvbWljYWxseQorCSAqIHRyYW5zZmVycmVkIHRo ZSBleGlzdGluZyBiaXRzIHRvIG91ciBsb2NhbCB2ZWN0b3Igc28gd2Ugd29uJ3QgZ2V0CisJ ICogZHVwbGljYXRlZCBpbnRlcnJ1cHRzIGxhdGVyIGlmIHdlIHN3aXRjaCBiYWNreC4KKwkg Ki8KKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsCisJCQkJ CQkgICBwZ19hdG9taWNfZXhjaGFuZ2VfdTMyKCZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRz LCAwKSk7Cit9CisKKy8qCisgKiBTd2l0Y2ggdG8gc2hhcmVkIG1lbW9yeSBpbnRlcnJ1cHRz LiAgT3RoZXIgYmFja2VuZHMgY2FuIHNlbmQgaW50ZXJydXB0cyB0bworICogdGhpcyBvbmUg aWYgdGhleSBrbm93IGl0cyBQcm9jTnVtYmVyLCBhbmQgd2UnbGwgbm93IHNlZSBhbnkgdGhh dCB3ZSBtaXNzZWQuCisgKi8KK3ZvaWQKK1N3aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lk KQoreworCWlmIChNeVBlbmRpbmdJbnRlcnJ1cHRzID09ICZNeVByb2MtPnBlbmRpbmdJbnRl cnJ1cHRzKQorCQlyZXR1cm47CisKKwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJk15UHJvYy0+ cGVuZGluZ0ludGVycnVwdHM7CisJTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzID0gJk15 UHJvYy0+bWF5YmVTbGVlcGluZ09uSW50ZXJydXB0czsKKworCS8qCisJICogTWFrZSBzdXJl IHRoYXQgU0lHQUxSTSBoYW5kbGVycyB0aGF0IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBhcmUg bm93CisJICogc2VlaW5nIHRoZSBuZXcgTXlQZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5hdGlv bi4KKwkgKi8KKwlwZ19tZW1vcnlfYmFycmllcigpOworCisJLyogTWl4IGluIGFueSB1bmhh bmRsZWQgYml0cyBmcm9tIExvY2FsUGVuZGluZ0ludGVycnVwdHMuICovCisJcGdfYXRvbWlj X2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWlj X2V4Y2hhbmdlX3UzMigmTG9jYWxQZW5kaW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgor ICogU2V0IGFuIGludGVycnVwdCBmbGFnIGluIHRoaXMgYmFja2VuZC4KKyAqLwordm9pZAor UmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJcGdfYXRvbWljX2Zl dGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCAxIDw8IHJlYXNvbik7CisJV2FrZXVw TXlQcm9jKCk7Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gYW5vdGhl ciBiYWNrZW5kLgorICovCit2b2lkCitTZW5kSW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVh c29uLCBQcm9jTnVtYmVyIHBncHJvY25vKQoreworCVBHUFJPQwkgICAqcHJvYzsKKworCUFz c2VydChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlBc3NlcnQocGdwcm9j bm8gPj0gMCk7CisJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50 KTsKKworCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dOworCXBnX2F0 b21pY19mZXRjaF9vcl91MzIoJnByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCAxIDw8IHJlYXNv bik7CisJV2FrZXVwT3RoZXJQcm9jKHByb2MpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9t ZXNvbi5idWlsZAppbmRleCA1YTkzNjE3MWY3Li40ZWJhNDFiNzhhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9tZXNvbi5idWlsZApAQCAtNSw5ICs1LDkgQEAgYmFja2VuZF9zb3VyY2Vz ICs9IGZpbGVzKAogICAnZHNtLmMnLAogICAnZHNtX2ltcGwuYycsCiAgICdkc21fcmVnaXN0 cnkuYycsCisgICdpbnRlcnJ1cHQuYycsCiAgICdpcGMuYycsCiAgICdpcGNpLmMnLAotICAn bGF0Y2guYycsCiAgICdwbXNpZ25hbC5jJywKICAgJ3Byb2NhcnJheS5jJywKICAgJ3Byb2Nz aWduYWwuYycsCkBAIC0xOCw1ICsxOCw2IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK ICAgJ3NpbnZhbC5jJywKICAgJ3NpbnZhbGFkdC5jJywKICAgJ3N0YW5kYnkuYycsCisgICd3 YWl0ZXZlbnRzZXQuYycsCiAKICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NobV9tcS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXgg OTIzNWZjZDA4ZS4uZWJkNmZhMjY0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htX21xLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMK QEAgLTQsNyArNCw3IEBACiAgKgkgIHNpbmdsZS1yZWFkZXIsIHNpbmdsZS13cml0ZXIgc2hh cmVkIG1lbW9yeSBtZXNzYWdlIHF1ZXVlCiAgKgogICogQm90aCB0aGUgc2VuZGVyIGFuZCB0 aGUgcmVjZWl2ZXIgbXVzdCBoYXZlIGEgUEdQUk9DOyB0aGVpciByZXNwZWN0aXZlCi0gKiBw cm9jZXNzIGxhdGNoZXMgYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gIE9ubHkgdGhl IHNlbmRlciBtYXkgc2VuZCwKKyAqIHByb2Nlc3MgaW50ZXJydXB0cyBhcmUgdXNlZCBmb3Ig c3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVyIG1heSBzZW5kLAogICogYW5kIG9u bHkgdGhlIHJlY2VpdmVyIG1heSByZWNlaXZlLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBhbGxv dyBhIHVzZXIKICAqIGJhY2tlbmQgdG8gY29tbXVuaWNhdGUgd2l0aCB3b3JrZXIgYmFja2Vu ZHMgdGhhdCBpdCBoYXMgcmVnaXN0ZXJlZC4KICAqCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z cGluLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTQ0LDkgKzQ1LDkgQEAK ICAqCiAgKiBtcV9kZXRhY2hlZCBuZWVkcyBubyBsb2NraW5nLiAgSXQgY2FuIGJlIHNldCBi eSBlaXRoZXIgdGhlIHNlbmRlciBvciB0aGUKICAqIHJlY2VpdmVyLCBidXQgb25seSBldmVy IGZyb20gZmFsc2UgdG8gdHJ1ZSwgc28gcmVkdW5kYW50IHdyaXRlcyBkb24ndAotICogbWF0 dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0 aGVuIHNldCB0aGUKLSAqIGNvdW50ZXJwYXJ0eSdzIGxhdGNoLCB0aGUgY291bnRlcnBhcnR5 IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlIGNoYW5nZQotICogYWZ0ZXIgd2FraW5nIHVw LiAgU2luY2UgU2V0TGF0Y2ggYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFycmllciBhbmQgUmVz ZXRMYXRjaAorICogbWF0dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1x X2RldGFjaGVkIGFuZCB0aGVuIHNlbmQgdGhlCisgKiBpbnRlcnJ1cCB0byB0aGUgY291bnRl cnBhcnR5LCB0aGUgY291bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlIGNo YW5nZQorICogYWZ0ZXIgd2FraW5nIHVwLiAgU2luY2UgU2VuZEludGVycnVwdCBiZWdpbnMg d2l0aCBhIG1lbW9yeSBiYXJyaWVyIGFuZCBDbGVhckludGVycnVwCiAgKiBlbmRzIHdpdGgg b25lLCB0aGlzIHNob3VsZCBiZSBPSy4KICAqCiAgKiBtcV9yaW5nX3NpemUgYW5kIG1xX3Jp bmdfb2Zmc2V0IG5ldmVyIGNoYW5nZSBhZnRlciBpbml0aWFsaXphdGlvbiwgYW5kCkBAIC0x MTIsNyArMTEzLDcgQEAgc3RydWN0IHNobV9tcQogICogeWV0IHVwZGF0ZWQgaW4gdGhlIHNo YXJlZCBtZW1vcnkuICBXZSB3aWxsIG5vdCB1cGRhdGUgaXQgdW50aWwgdGhlIHdyaXR0ZW4K ICAqIGRhdGEgaXMgMS80dGggb2YgdGhlIHJpbmcgc2l6ZSBvciB0aGUgdHVwbGUgcXVldWUg aXMgZnVsbC4gIFRoaXMgd2lsbAogICogcHJldmVudCBmcmVxdWVudCBDUFUgY2FjaGUgbWlz c2VzLCBhbmQgaXQgd2lsbCBhbHNvIGF2b2lkIGZyZXF1ZW50Ci0gKiBTZXRMYXRjaCgpIGNh bGxzLCB3aGljaCBhcmUgcXVpdGUgZXhwZW5zaXZlLgorICogU2VuZEludGVycnVwdCgpIGNh bGxzLCB3aGljaCBhcmUgcXVpdGUgZXhwZW5zaXZlLgogICoKICAqIG1xaF9wYXJ0aWFsX2J5 dGVzLCBtcWhfZXhwZWN0ZWRfYnl0ZXMsIGFuZCBtcWhfbGVuZ3RoX3dvcmRfY29tcGxldGUK ICAqIGFyZSB1c2VkIHRvIHRyYWNrIHRoZSBzdGF0ZSBvZiBub24tYmxvY2tpbmcgb3BlcmF0 aW9ucy4gIFdoZW4gdGhlIGNhbGxlcgpAQCAtMjE0LDcgKzIxNSw3IEBAIHNobV9tcV9zZXRf cmVjZWl2ZXIoc2htX21xICptcSwgUEdQUk9DICpwcm9jKQogCVNwaW5Mb2NrUmVsZWFzZSgm bXEtPm1xX211dGV4KTsKIAogCWlmIChzZW5kZXIgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnNl bmRlci0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCkBAIC0yMzIs NyArMjMzLDcgQEAgc2htX21xX3NldF9zZW5kZXIoc2htX21xICptcSwgUEdQUk9DICpwcm9j KQogCVNwaW5Mb2NrUmVsZWFzZSgmbXEtPm1xX211dGV4KTsKIAogCWlmIChyZWNlaXZlciAh PSBOVUxMKQotCQlTZXRMYXRjaCgmcmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJl Y2VpdmVyKSk7CiB9CiAKIC8qCkBAIC0zNDEsMTQgKzM0MiwxNCBAQCBzaG1fbXFfc2VuZChz aG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLCBib29s IG5vd2FpdCwKICAqIFdyaXRlIGEgbWVzc2FnZSBpbnRvIGEgc2hhcmVkIG1lc3NhZ2UgcXVl dWUsIGdhdGhlcmVkIGZyb20gbXVsdGlwbGUKICAqIGFkZHJlc3Nlcy4KICAqCi0gKiBXaGVu IG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGxhdGNoIHdoZW4g dGhlIHJpbmcgYnVmZmVyCisgKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9u IG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgogICogZmlsbHMg dXAsIGFuZCB0aGVuIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIgaGFzIGRy YWluZWQgc29tZSBkYXRhLgotICogVGhlIHByb2Nlc3MgbGF0Y2ggaXMgcmVzZXQgYWZ0ZXIg ZWFjaCB3YWl0LgorICogVGhlIHByb2Nlc3MgaW50ZXJydXB0IGlzIGNsZWFyZWQgYWZ0ZXIg ZWFjaCB3YWl0LgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlw dWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGxhdGNoOworICogV2hlbiBub3dhaXQg PSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3Mg aW50ZXJydXB0OwogICogaW5zdGVhZCwgaWYgdGhlIGJ1ZmZlciBiZWNvbWVzIGZ1bGwsIHdl IHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJbgogICogdGhpcyBjYXNlLCB0aGUgY2Fs bGVyIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4sIHdpdGggdGhlIHNhbWUKLSAq IGFyZ3VtZW50cywgZWFjaCB0aW1lIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldC4gIChPbmNl IGJlZ3VuLCB0aGUgc2VuZGluZworICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nl c3MgaW50ZXJydXB0IGlzIHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2VuZGluZwogICogb2Yg YSBtZXNzYWdlIGNhbm5vdCBiZSBhYm9ydGVkIGV4Y2VwdCBieSBkZXRhY2hpbmcgZnJvbSB0 aGUgcXVldWU7IGNoYW5naW5nCiAgKiB0aGUgbGVuZ3RoIG9yIHBheWxvYWQgd2lsbCBjb3Jy dXB0IHRoZSBxdWV1ZS4pCiAgKgpAQCAtNTM5LDcgKzU0MCw3IEBAIHNobV9tcV9zZW5kdihz aG1fbXFfaGFuZGxlICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBib29s IG5vd2FpdCwKIAl7CiAJCXNobV9tcV9pbmNfYnl0ZXNfd3JpdHRlbihtcSwgbXFoLT5tcWhf c2VuZF9wZW5kaW5nKTsKIAkJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCQlTZXRMYXRjaCgm cmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWNlaXZlcikpOwogCQltcWgtPm1x aF9zZW5kX3BlbmRpbmcgPSAwOwogCX0KIApAQCAtNTU3LDE2ICs1NTgsMTYgQEAgc2htX21x X3NlbmR2KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3YsIGludCBpb3Zj bnQsIGJvb2wgbm93YWl0LAogICogd2hpbGUgc3RpbGwgYWxsb3dpbmcgbG9uZ2VyIG1lc3Nh Z2VzLiAgSW4gZWl0aGVyIGNhc2UsIHRoZSByZXR1cm4gdmFsdWUKICAqIHJlbWFpbnMgdmFs aWQgdW50aWwgdGhlIG5leHQgcmVjZWl2ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIG9uIHRo ZSBxdWV1ZS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91 ciBwcm9jZXNzIGxhdGNoIHdoZW4gdGhlIHJpbmcgYnVmZmVyCisgKiBXaGVuIG5vd2FpdCA9 IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRoZSBy aW5nIGJ1ZmZlcgogICogaXMgZW1wdHkgYW5kIHdlIGhhdmUgbm90IHlldCByZWNlaXZlZCBh IGZ1bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIgd2lsbAotICogc2V0IG91ciBwcm9jZXNzIGxh dGNoIGFmdGVyIG1vcmUgZGF0YSBoYXMgYmVlbiB3cml0dGVuLCBhbmQgd2UnbGwgcmVzdW1l CisgKiBzZXQgb3VyIHByb2Nlc3MgaW50ZXJydXB0IGFmdGVyIG1vcmUgZGF0YSBoYXMgYmVl biB3cml0dGVuLCBhbmQgd2UnbGwgcmVzdW1lCiAgKiBwcm9jZXNzaW5nLiAgRWFjaCBjYWxs IHdpbGwgdGhlcmVmb3JlIHJldHVybiBhIGNvbXBsZXRlIG1lc3NhZ2UKICAqICh1bmxlc3Mg dGhlIHNlbmRlciBkZXRhY2hlcyB0aGUgcXVldWUpLgogICoKLSAqIFdoZW4gbm93YWl0ID0g dHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGxh dGNoOworICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUg c3RhdGUgb2YgdGhlIHByb2Nlc3MgaW50ZXJydXB0OwogICogaW5zdGVhZCwgd2hlbmV2ZXIg dGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgbmVlZCB0byByZWFkIGZyb20gaXQsIHdlCiAg KiByZXR1cm4gU0hNX01RX1dPVUxEX0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVy IHNob3VsZCBjYWxsIHRoaXMKLSAqIGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBwcm9jZXNz IGxhdGNoIGhhcyBiZWVuIHNldC4KKyAqIGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBwcm9j ZXNzIGludGVycnVwdCBoYXMgYmVlbiBzZXQuCiAgKi8KIHNobV9tcV9yZXN1bHQKIHNobV9t cV9yZWNlaXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwgdm9pZCAqKmRh dGFwLCBib29sIG5vd2FpdCkKQEAgLTYxOSw4ICs2MjAsOCBAQCBzaG1fbXFfcmVjZWl2ZShz aG1fbXFfaGFuZGxlICptcWgsIFNpemUgKm5ieXRlc3AsIHZvaWQgKipkYXRhcCwgYm9vbCBu b3dhaXQpCiAJICogSWYgd2UndmUgY29uc3VtZWQgYW4gYW1vdW50IG9mIGRhdGEgZ3JlYXRl ciB0aGFuIDEvNHRoIG9mIHRoZSByaW5nCiAJICogc2l6ZSwgbWFyayBpdCBjb25zdW1lZCBp biBzaGFyZWQgbWVtb3J5LiAgV2UgdHJ5IHRvIGF2b2lkIGRvaW5nIHRoaXMKIAkgKiB1bm5l Y2Vzc2FyaWx5IHdoZW4gb25seSBhIHNtYWxsIGFtb3VudCBvZiBkYXRhIGhhcyBiZWVuIGNv bnN1bWVkLAotCSAqIGJlY2F1c2UgU2V0TGF0Y2goKSBpcyBmYWlybHkgZXhwZW5zaXZlIGFu ZCB3ZSBkb24ndCB3YW50IHRvIGRvIGl0IHRvbwotCSAqIG9mdGVuLgorCSAqIGJlY2F1c2Ug U2VuZEludGVycnVwdCgpIGlzIGZhaXJseSBleHBlbnNpdmUgYW5kIHdlIGRvbid0IHdhbnQg dG8gZG8gaXQKKwkgKiB0b28gb2Z0ZW4uCiAJICovCiAJaWYgKG1xaC0+bXFoX2NvbnN1bWVf cGVuZGluZyA+IG1xLT5tcV9yaW5nX3NpemUgLyA0KQogCXsKQEAgLTg5NSw3ICs4OTYsNyBA QCBzaG1fbXFfZGV0YWNoX2ludGVybmFsKHNobV9tcSAqbXEpCiAJU3BpbkxvY2tSZWxlYXNl KCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHZpY3RpbSAhPSBOVUxMKQotCQlTZXRMYXRjaCgm dmljdGltLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh2aWN0aW0pKTsKIH0KIAogLyoKQEAgLTk5 Myw3ICs5OTQsNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNp emUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICogVGhlcmVmb3JlLCB3ZSBjYW4g cmVhZCBpdCB3aXRob3V0IGFjcXVpcmluZyB0aGUgc3BpbmxvY2suCiAJCQkgKi8KIAkJCUFz c2VydChtcWgtPm1xaF9jb3VudGVycGFydHlfYXR0YWNoZWQpOwotCQkJU2V0TGF0Y2goJm1x LT5tcV9yZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKG1xLT5tcV9yZWNlaXZlcikp OwogCiAJCQkvKgogCQkJICogV2UgaGF2ZSBqdXN0IHVwZGF0ZWQgdGhlIG1xaF9zZW5kX3Bl bmRpbmcgYnl0ZXMgaW4gdGhlIHNoYXJlZApAQCAtMTAwMSw3ICsxMDAyLDcgQEAgc2htX21x X3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9p ZCAqZGF0YSwKIAkJCSAqLwogCQkJbXFoLT5tcWhfc2VuZF9wZW5kaW5nID0gMDsKIAotCQkJ LyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9IHRydWUuICov CisJCQkvKiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4gKi8KIAkJCWlmIChub3dh aXQpCiAJCQl7CiAJCQkJKmJ5dGVzX3dyaXR0ZW4gPSBzZW50OwpAQCAtMTAwOSwxNyArMTAx MCwxNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5 dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJfQogCiAJCQkvKgotCQkJICogV2FpdCBmb3Ig b3VyIGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21l CisJCQkgKiBXYWl0IGZvciB0aGUgaW50ZXJydXB0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBz ZXQgZm9yIHNvbWUKIAkJCSAqIHVucmVsYXRlZCByZWFzb24sIGJ1dCB0aGF0J2xsIGp1c3Qg cmVzdWx0IGluIG9uZSBleHRyYSB0cmlwCi0JCQkgKiB0aHJvdWdoIHRoZSBsb29wLiAgSXQn cyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNoCi0JCQkgKiBhdCB0b3Ag b2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGxhdGNoIGlzIG11Y2gK LQkJCSAqIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJlc2V0Lgor CQkJICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgY2xlYXJp bmcgdGhlCisJCQkgKiBpbnRlcnJ1cHQgYXQgdG9wIG9mIGxvb3AsIGJlY2F1c2Ugc2V0dGlu ZyBhbiBhbHJlYWR5LXNldAorCQkJICogaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBlciB0aGFu IHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQuCiAJCQkgKi8KLQkJCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NFTkQpOworCQkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJCSBXQUlUX0VWRU5UX01F U1NBR0VfUVVFVUVfU0VORCk7CiAKLQkJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24n dCBzcGluLiAqLwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCS8qIENsZWFyIHRoZSBp bnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBv Y2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwpAQCAtMTA1NCw3ICsxMDU1LDcgQEAgc2htX21xX3NlbmRfYnl0ZXMoc2htX21x X2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAogCQkJLyoK IAkJCSAqIEZvciBlZmZpY2llbmN5LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGJ5dGVzIHdyaXR0 ZW4gaW4gdGhlIHNoYXJlZAotCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0IHNldCB0aGUg cmVhZGVyJ3MgbGF0Y2ggaGVyZS4gIFJlZmVyIHRvCisJCQkgKiBtZW1vcnkgYW5kIGFsc28g ZG9uJ3Qgc2VuZCB0aGUgcmVhZGVyIGludGVycnVwdCBoZXJlLiAgUmVmZXIgdG8KIAkJCSAq IHRoZSBjb21tZW50cyBhdG9wIHRoZSBzaG1fbXFfaGFuZGxlIHN0cnVjdHVyZSBmb3IgbW9y ZQogCQkJICogaW5mb3JtYXRpb24uCiAJCQkgKi8KQEAgLTExNTAsMjIgKzExNTEsMjIgQEAg c2htX21xX3JlY2VpdmVfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIGJ5dGVzX25l ZWRlZCwgYm9vbCBub3dhaXQsCiAJCQltcWgtPm1xaF9jb25zdW1lX3BlbmRpbmcgPSAwOwog CQl9CiAKLQkJLyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9 IHRydWUuICovCisJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAqLwogCQlp ZiAobm93YWl0KQogCQkJcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSzsKIAogCQkvKgotCQkg KiBXYWl0IGZvciBvdXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBz ZXQgZm9yIHNvbWUKKwkJICogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBzZXQuICBJ dCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQogCQkgKiB1bnJlbGF0ZWQgcmVhc29u LCBidXQgdGhhdCdsbCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcCB0aHJvdWdoCi0J CSAqIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxh dGNoIGF0IHRvcCBvZgotCQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1z ZXQgbGF0Y2ggaXMgbXVjaCBjaGVhcGVyIHRoYW4KLQkJICogc2V0dGluZyBvbmUgdGhhdCBo YXMgYmVlbiByZXNldC4KKwkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRvIGF2b2lk IGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgYXQgdG9wIG9mCisJCSAqIGxvb3AsIGJlY2F1c2Ug c2V0dGluZyBhbiBhbHJlYWR5LXNldCBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRoYW4K KwkJICogc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiBjbGVhcmVkLgogCQkgKi8KLQkJKHZv aWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKKwkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZF TlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKIAotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28g d2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogQ2xlYXIg dGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2 ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CkBAIC0xMjUwLDExICsxMjUxLDExIEBAIHNobV9tcV93YWl0X2ludGVybmFs KHNobV9tcSAqbXEsIFBHUFJPQyAqKnB0ciwgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFu ZGxlKQogCQl9CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxlZC4gKi8KLQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5BTCk7CisJCSh2b2lk KSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRF UlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX01F U1NBR0VfUVVFVUVfSU5URVJOQUwpOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBk b24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBDbGVhciB0aGUg aW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9j Y3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKQEAgLTEyOTMsNyArMTI5NCw3IEBAIHNobV9tcV9pbmNfYnl0ZXNfcmVhZChzaG1f bXEgKm1xLCBTaXplIG4pCiAJICovCiAJc2VuZGVyID0gbXEtPm1xX3NlbmRlcjsKIAlBc3Nl cnQoc2VuZGVyICE9IE5VTEwpOwotCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRjaCk7CisJ U2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21Q R1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9sYXRjaC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0 LmMKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvbGF0Y2guYwpyZW5hbWUgdG8gc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2 ZW50c2V0LmMKaW5kZXggNjA4ZWI2NmFiZS4uOTE0MjkxNzcyMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy93YWl0ZXZlbnRzZXQuYwpAQCAtMSwxMiArMSwyOSBAQAogLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKgotICogbGF0Y2guYwotICoJICBSb3V0aW5lcyBmb3IgaW50ZXItcHJvY2Vz cyBsYXRjaGVzCisgKiB3YWl0ZXZlbnRzZXQuYworICoJICBwcG9sbCgpL3BzZWxlY3QoKSBs aWtlIGFic3RyYWN0aW9uCisgKgorICogV2FpdEV2ZW50cyBhcmUgYW4gYWJzdHJhY3Rpb24g Zm9yIHdhaXRpbmcgZm9yIG9uZSBvciBtb3JlIGV2ZW50cyBhdCBhIHRpbWUuCisgKiBUaGUg d2FpdGluZyBjYW4gYmUgZG9uZSBpbiByYWNlIGZyZWUgZmFzaGlvbiwgc2ltaWxhciBwcG9s bCgpIG9yIHBzZWxlY3QoKQorICogKGFzIG9wcG9zZWQgdG8gcGxhaW4gcG9sbCgpL3NlbGVj dCgpKS4KKyAqCisgKiBZb3UgY2FuIHdhaXQgZm9yOgorICogLSBhbiBpbnRlcnJ1cHQgZnJv bSBhbm90aGVyIHByb2Nlc3Mgb3IgZnJvbSBzaWduYWwgaGFuZGxlciBpbiB0aGUgc2FtZQor ICogICBwcm9jZXNzIChXTF9JTlRFUlJVUFQpCisgKiAtIGRhdGEgdG8gYmVjb21lIHJlYWRh YmxlIG9yIHdyaXRlYWJsZSBvbiBhIHNvY2tldCAoV0xfU09DS0VUXyopCisgKiAtIHBvc3Rt YXN0ZXIgZGVhdGggKFdMX1BPU1RNQVNURVJfREVBVEggb3IgV0xfRVhJVF9PTl9QTV9ERUFU SCkKKyAqIC0gdGltZW91dCAoV0xfVElNRU9VVCkKKyAqCisgKiBYWFggVGhlIGxhdGNoIGFi c3RyYWN0aW9uIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBp bnRlcnJ1cHRzLgorICogVGhlIFdMX0xBVENIX1NFVCBmbGFnIGlzIGJ1aWx0IG9uIHRoYXQu CisgKgorICogSW1wbGVtZW50YXRpb24KKyAqIC0tLS0tLS0tLS0tLS0tCiAgKgogICogVGhl IHBvbGwoKSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQgc2VsZi1waXBlIHRy aWNrIHRvIG92ZXJjb21lIHRoZQogICogcmFjZSBjb25kaXRpb24gaW52b2x2ZWQgd2l0aCBw b2xsKCkgYW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUgc2lnbmFsCiAgKiBoYW5k bGVyLiBXaGVuIGEgbGF0Y2ggaXMgc2V0IGFuZCB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHdh aXRpbmcgZm9yIGl0LCB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHdha2VzIHVwIHRoZSBwb2xs KCkgaW4gV2FpdExhdGNoIGJ5IHdyaXRpbmcgYSBieXRlIHRvIGEgcGlwZS4KKyAqIHNpZ25h bCBoYW5kbGVyIHdha2VzIHVwIHRoZSBwb2xsKCkgaW4gV2FpdEludGVycnVwdCBieSB3cml0 aW5nIGEgYnl0ZSB0byBhIHBpcGUuCiAgKiBBIHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndCBp bnRlcnJ1cHQgcG9sbCgpIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCBldmVuIG9uCiAgKiBwbGF0 Zm9ybXMgd2hlcmUgaXQgZG9lcywgYSBzaWduYWwgdGhhdCBhcnJpdmVzIGp1c3QgYmVmb3Jl IHRoZSBwb2xsKCkgY2FsbAogICogZG9lcyBub3QgcHJldmVudCBwb2xsKCkgZnJvbSBlbnRl cmluZyBzbGVlcC4gQW4gaW5jb21pbmcgYnl0ZSBvbiBhIHBpcGUKQEAgLTI3LDcgKzQ0LDcg QEAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgogICogSURFTlRJRklDQVRJT04KLSAqCSAgc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworICoJICBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy93YWl0ZXZlbnRzZXQuYwogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBA IC01Nyw5ICs3NCwxMSBAQAogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9y YWdlL3Btc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAi c3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKQEAgLTk4LDcgKzExNyw3IEBACiAjZW5k aWYKICNlbmRpZgogCi0vKiB0eXBlZGVmIGluIGxhdGNoLmggKi8KKy8qIHR5cGVkZWYgaW4g d2FpdGV2ZW50cy5oICovCiBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiB7CiAJUmVzb3VyY2VPd25l ciBvd25lcjsKQEAgLTExMywxMyArMTMyLDEzIEBAIHN0cnVjdCBXYWl0RXZlbnRTZXQKIAlX YWl0RXZlbnQgICpldmVudHM7CiAKIAkvKgotCSAqIElmIFdMX0xBVENIX1NFVCBpcyBzcGVj aWZpZWQgaW4gYW55IHdhaXQgZXZlbnQsIGxhdGNoIGlzIGEgcG9pbnRlciB0bwotCSAqIHNh aWQgbGF0Y2gsIGFuZCBsYXRjaF9wb3MgdGhlIG9mZnNldCBpbiB0aGUgLT5ldmVudHMgYXJy YXkuIFRoaXMgaXMKLQkgKiB1c2VmdWwgYmVjYXVzZSB3ZSBjaGVjayB0aGUgc3RhdGUgb2Yg dGhlIGxhdGNoIGJlZm9yZSBwZXJmb3JtaW5nIGRvaW5nCi0JICogc3lzY2FsbHMgcmVsYXRl ZCB0byB3YWl0aW5nLgorCSAqIElmIFdMX0lOVEVSUlVQVCBpcyBzcGVjaWZpZWQgaW4gYW55 IHdhaXQgZXZlbnQsIGludGVycnVwdE1hc2sgaXMgdGhlCisJICogaW50ZXJydXB0cyB0byB3 YWl0IGZvciwgYW5kIGludGVycnVwdF9wb3MgdGhlIG9mZnNldCBpbiB0aGUgLT5ldmVudHMK KwkgKiBhcnJheS4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB3ZSBjaGVjayB0aGUgc3RhdGUg b2YgcGVuZGluZyBpbnRlcnJ1cHRzCisJICogYmVmb3JlIHBlcmZvcm1pbmcgZG9pbmcgc3lz Y2FsbHMgcmVsYXRlZCB0byB3YWl0aW5nLgogCSAqLwotCUxhdGNoCSAgICpsYXRjaDsKLQlp bnQJCQlsYXRjaF9wb3M7CisJdWludDMyCQlpbnRlcnJ1cHRfbWFzazsKKwlpbnQJCQlpbnRl cnJ1cHRfcG9zOwogCiAJLyoKIAkgKiBXTF9FWElUX09OX1BNX0RFQVRIIGlzIGNvbnZlcnRl ZCB0byBXTF9QT1NUTUFTVEVSX0RFQVRILCBidXQgdGhpcyBmbGFnCkBAIC0xNTEsMTQgKzE3 MCwxNCBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiAjZW5kaWYKIH07CiAKLS8qIEEgY29tbW9u IFdhaXRFdmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBXYWl0TGF0Y2goKSAqLwotc3RhdGlj IFdhaXRFdmVudFNldCAqTGF0Y2hXYWl0U2V0OworLyogQSBjb21tb24gV2FpdEV2ZW50U2V0 IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRJbnRlcnJ1cHQoKSAqLworc3RhdGljIFdhaXRFdmVu dFNldCAqSW50ZXJydXB0V2FpdFNldDsKIAotLyogVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXRj aCBpbiBMYXRjaFdhaXRTZXQuICovCi0jZGVmaW5lIExhdGNoV2FpdFNldExhdGNoUG9zIDAK Ky8qIFRoZSBwb3NpdGlvbiBvZiB0aGUgaW50ZXJydXB0IGluIEludGVycnVwdFdhaXRTZXQu ICovCisjZGVmaW5lIEludGVycnVwdFdhaXRTZXRJbnRlcnJ1cHRQb3MgMAogCiAjaWZuZGVm IFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5IGluIFdhaXRMYXRjaD8gVGhlIHNpZ25hbCBo YW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KKy8qIEFyZSB3ZSBjdXJyZW50bHkgaW4g V2FpdEludGVycnVwdD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4g Ki8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgd2FpdGluZyA9IGZhbHNlOwogI2Vu ZGlmCiAKQEAgLTE3NCw5ICsxOTMsMTYgQEAgc3RhdGljIGludAlzZWxmcGlwZV93cml0ZWZk ID0gLTE7CiAKIC8qIFByb2Nlc3Mgb3duaW5nIHRoZSBzZWxmLXBpcGUgLS0tIG5lZWRlZCBm b3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KIHN0YXRpYyBpbnQJc2VsZnBpcGVfb3duZXJfcGlk ID0gMDsKKyNlbmRpZgorCisjaWZkZWYgV0FJVF9VU0VfV0lOMzIKK3N0YXRpYyBIQU5ETEUg TG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgogCiAvKiBQcml2YXRlIGZ1bmN0 aW9uIHByb3RvdHlwZXMgKi8KLXN0YXRpYyB2b2lkIGxhdGNoX3NpZ3VyZ19oYW5kbGVyKFNJ R05BTF9BUkdTKTsKKworI2lmZGVmIFdBSVRfVVNFX1NFTEZfUElQRQorc3RhdGljIHZvaWQg aW50ZXJ1cHRfc2lndXJnX2hhbmRsZXIoU0lHTkFMX0FSR1MpOwogc3RhdGljIHZvaWQgc2Vu ZFNlbGZQaXBlQnl0ZSh2b2lkKTsKICNlbmRpZgogCkBAIC0yMjMsMTMgKzI0OSwxMyBAQCBS ZXNvdXJjZU93bmVyRm9yZ2V0V2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgb3duZXIsIFdh aXRFdmVudFNldCAqc2V0KQogCiAKIC8qCi0gKiBJbml0aWFsaXplIHRoZSBwcm9jZXNzLWxv Y2FsIGxhdGNoIGluZnJhc3RydWN0dXJlLgorICogSW5pdGlhbGl6ZSB0aGUgcHJvY2Vzcy1s b2NhbCB3YWl0IGV2ZW50IGluZnJhc3RydWN0dXJlLgogICoKICAqIFRoaXMgbXVzdCBiZSBj YWxsZWQgb25jZSBkdXJpbmcgc3RhcnR1cCBvZiBhbnkgcHJvY2VzcyB0aGF0IGNhbiB3YWl0 IG9uCi0gKiBsYXRjaGVzLCBiZWZvcmUgaXQgaXNzdWVzIGFueSBJbml0TGF0Y2goKSBvciBP d25MYXRjaCgpIGNhbGxzLgorICogaW50ZXJydXB0cy4KICAqLwogdm9pZAotSW5pdGlhbGl6 ZUxhdGNoU3VwcG9ydCh2b2lkKQorSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkK IHsKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKIAlpbnQJCQlwaXBlZmRbMl07 CkBAIC0yNzYsMTIgKzMwMiwxMiBAQCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0KHZvaWQpCiAK IAkvKgogCSAqIFNldCB1cCB0aGUgc2VsZi1waXBlIHRoYXQgYWxsb3dzIGEgc2lnbmFsIGhh bmRsZXIgdG8gd2FrZSB1cCB0aGUKLQkgKiBwb2xsKCkvZXBvbGxfd2FpdCgpIGluIFdhaXRM YXRjaC4gTWFrZSB0aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2luZywgc28KLQkgKiB0aGF0IFNl dExhdGNoIHdvbid0IGJsb2NrIGlmIHRoZSBldmVudCBoYXMgYWxyZWFkeSBiZWVuIHNldCBt YW55IHRpbWVzCi0JICogZmlsbGluZyB0aGUga2VybmVsIGJ1ZmZlci4gTWFrZSB0aGUgcmVh ZC1lbmQgbm9uLWJsb2NraW5nIHRvbywgc28gdGhhdAotCSAqIHdlIGNhbiBlYXNpbHkgY2xl YXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRpbCBFQUdBSU4gb3IgRVdPVUxEQkxPQ0suCi0J ICogQWxzbywgbWFrZSBib3RoIEZEcyBjbG9zZS1vbi1leGVjLCBzaW5jZSB3ZSBzdXJlbHkg ZG8gbm90IHdhbnQgYW55Ci0JICogY2hpbGQgcHJvY2Vzc2VzIG1lc3Npbmcgd2l0aCB0aGVt LgorCSAqIHBvbGwoKS9lcG9sbF93YWl0KCkgaW4gV2FpdEludGVycnVwdC4gTWFrZSB0aGUg d3JpdGUtZW5kIG5vbi1ibG9ja2luZywKKwkgKiBzbyB0aGF0IFNlbmRJbnRlcnJ1cHQgd29u J3QgYmxvY2sgaWYgdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gc2V0CisJICogbWFueSB0 aW1lcyBmaWxsaW5nIHRoZSBrZXJuZWwgYnVmZmVyLiBNYWtlIHRoZSByZWFkLWVuZCBub24t YmxvY2tpbmcKKwkgKiB0b28sIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBjbGVhciB0aGUgcGlw ZSBieSByZWFkaW5nIHVudGlsIEVBR0FJTiBvcgorCSAqIEVXT1VMREJMT0NLLiBBbHNvLCBt YWtlIGJvdGggRkRzIGNsb3NlLW9uLWV4ZWMsIHNpbmNlIHdlIHN1cmVseSBkbyBub3QKKwkg KiB3YW50IGFueSBjaGlsZCBwcm9jZXNzZXMgbWVzc2luZyB3aXRoIHRoZW0uCiAJICovCiAJ aWYgKHBpcGUocGlwZWZkKSA8IDApCiAJCWVsb2coRkFUQUwsICJwaXBlKCkgZmFpbGVkOiAl bSIpOwpAQCAtMzAyLDcgKzMyOCw3IEBAIEluaXRpYWxpemVMYXRjaFN1cHBvcnQodm9pZCkK IAlSZXNlcnZlRXh0ZXJuYWxGRCgpOwogCVJlc2VydmVFeHRlcm5hbEZEKCk7CiAKLQlwcXNp Z25hbChTSUdVUkcsIGxhdGNoX3NpZ3VyZ19oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVUkcs IGludGVycnVwdF9zaWd1cmdfaGFuZGxlcik7CiAjZW5kaWYKIAogI2lmZGVmIFdBSVRfVVNF X1NJR05BTEZECkBAIC0zNDAsMzcgKzM2Niw0MyBAQCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0 KHZvaWQpCiAJLyogSWdub3JlIFNJR1VSRywgYmVjYXVzZSB3ZSdsbCByZWNlaXZlIGl0IHZp YSBrcXVldWUuICovCiAJcHFzaWduYWwoU0lHVVJHLCBTSUdfSUdOKTsKICNlbmRpZgorCisj aWZkZWYgV0FJVF9VU0VfV0lOMzIKKwlMb2NhbEludGVycnVwdFdha2V1cEV2ZW50ID0gQ3Jl YXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOworCWlmIChMb2NhbEludGVycnVw dFdha2V1cEV2ZW50ID09IE5VTEwpCisJCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWls ZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCiB9CiAKIHZv aWQKLUluaXRpYWxpemVMYXRjaFdhaXRTZXQodm9pZCkKK0luaXRpYWxpemVJbnRlcnJ1cHRX YWl0U2V0KHZvaWQpCiB7Ci0JaW50CQkJbGF0Y2hfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNf T05MWTsKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsK IAotCUFzc2VydChMYXRjaFdhaXRTZXQgPT0gTlVMTCk7CisJQXNzZXJ0KEludGVycnVwdFdh aXRTZXQgPT0gTlVMTCk7CiAKLQkvKiBTZXQgdXAgdGhlIFdhaXRFdmVudFNldCB1c2VkIGJ5 IFdhaXRMYXRjaCgpLiAqLwotCUxhdGNoV2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNldChO VUxMLCAyKTsKLQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChMYXRjaFdhaXRTZXQs IFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJCQkJICBNeUxhdGNoLCBO VUxMKTsKKwkvKiBTZXQgdXAgdGhlIFdhaXRFdmVudFNldCB1c2VkIGJ5IFdhaXRJbnRlcnJ1 cHQoKS4gKi8KKwlJbnRlcnJ1cHRXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEws IDIpOworCWludGVycnVwdF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChJbnRlcnJ1cHRXYWl0 U2V0LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkJCQkgIDAsIE5V TEwpOwogCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKLQkJQWRkV2FpdEV2ZW50VG9TZXQoTGF0 Y2hXYWl0U2V0LCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJICBQR0lOVkFMSURfU09D S0VULCBOVUxMLCBOVUxMKTsKKwkJQWRkV2FpdEV2ZW50VG9TZXQoSW50ZXJydXB0V2FpdFNl dCwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgUEdJTlZBTElEX1NPQ0tFVCwgMCwg TlVMTCk7CiAKLQlBc3NlcnQobGF0Y2hfcG9zID09IExhdGNoV2FpdFNldExhdGNoUG9zKTsK KwlBc3NlcnQoaW50ZXJydXB0X3BvcyA9PSBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9z KTsKIH0KIAogdm9pZAotU2h1dGRvd25MYXRjaFN1cHBvcnQodm9pZCkKK1NodXRkb3duV2Fp dEV2ZW50U3VwcG9ydCh2b2lkKQogewogI2lmIGRlZmluZWQoV0FJVF9VU0VfUE9MTCkKIAlw cXNpZ25hbChTSUdVUkcsIFNJR19JR04pOwogI2VuZGlmCiAKLQlpZiAoTGF0Y2hXYWl0U2V0 KQorCWlmIChJbnRlcnJ1cHRXYWl0U2V0KQogCXsKLQkJRnJlZVdhaXRFdmVudFNldChMYXRj aFdhaXRTZXQpOwotCQlMYXRjaFdhaXRTZXQgPSBOVUxMOworCQlGcmVlV2FpdEV2ZW50U2V0 KEludGVycnVwdFdhaXRTZXQpOworCQlJbnRlcnJ1cHRXYWl0U2V0ID0gTlVMTDsKIAl9CiAK ICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKQEAgLTM4OCwxMzQgKzQyMCwyNCBA QCBTaHV0ZG93bkxhdGNoU3VwcG9ydCh2b2lkKQogfQogCiAvKgotICogSW5pdGlhbGl6ZSBh IHByb2Nlc3MtbG9jYWwgbGF0Y2guCi0gKi8KLXZvaWQKLUluaXRMYXRjaChMYXRjaCAqbGF0 Y2gpCi17Ci0JbGF0Y2gtPmlzX3NldCA9IGZhbHNlOwotCWxhdGNoLT5tYXliZV9zbGVlcGlu ZyA9IGZhbHNlOwotCWxhdGNoLT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci0JbGF0Y2gtPmlz X3NoYXJlZCA9IGZhbHNlOwotCi0jaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCi0J LyogQXNzZXJ0IEluaXRpYWxpemVMYXRjaFN1cHBvcnQgaGFzIGJlZW4gY2FsbGVkIGluIHRo aXMgcHJvY2VzcyAqLwotCUFzc2VydChzZWxmcGlwZV9yZWFkZmQgPj0gMCAmJiBzZWxmcGlw ZV9vd25lcl9waWQgPT0gTXlQcm9jUGlkKTsKLSNlbGlmIGRlZmluZWQoV0FJVF9VU0VfU0lH TkFMRkQpCi0JLyogQXNzZXJ0IEluaXRpYWxpemVMYXRjaFN1cHBvcnQgaGFzIGJlZW4gY2Fs bGVkIGluIHRoaXMgcHJvY2VzcyAqLwotCUFzc2VydChzaWduYWxfZmQgPj0gMCk7Ci0jZWxp ZiBkZWZpbmVkKFdBSVRfVVNFX1dJTjMyKQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50 KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKLQlpZiAobGF0Y2gtPmV2ZW50ID09IE5VTEwp Ci0JCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1Iiwg R2V0TGFzdEVycm9yKCkpOwotI2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCi19Ci0KLS8qCi0g KiBJbml0aWFsaXplIGEgc2hhcmVkIGxhdGNoIHRoYXQgY2FuIGJlIHNldCBmcm9tIG90aGVy IHByb2Nlc3Nlcy4gVGhlIGxhdGNoCi0gKiBpcyBpbml0aWFsbHkgb3duZWQgYnkgbm8tb25l OyB1c2UgT3duTGF0Y2ggdG8gYXNzb2NpYXRlIGl0IHdpdGggdGhlCi0gKiBjdXJyZW50IHBy b2Nlc3MuCi0gKgotICogSW5pdFNoYXJlZExhdGNoIG5lZWRzIHRvIGJlIGNhbGxlZCBpbiBw b3N0bWFzdGVyIGJlZm9yZSBmb3JraW5nIGNoaWxkCi0gKiBwcm9jZXNzZXMsIHVzdWFsbHkg cmlnaHQgYWZ0ZXIgYWxsb2NhdGluZyB0aGUgc2hhcmVkIG1lbW9yeSBibG9jawotICogY29u dGFpbmluZyB0aGUgbGF0Y2ggd2l0aCBTaG1lbUluaXRTdHJ1Y3QuIChUaGUgVW5peCBpbXBs ZW1lbnRhdGlvbgotICogZG9lc24ndCBhY3R1YWxseSByZXF1aXJlIHRoYXQsIGJ1dCB0aGUg V2luZG93cyBvbmUgZG9lcy4pIEJlY2F1c2Ugb2YKLSAqIHRoaXMgcmVzdHJpY3Rpb24sIHdl IGhhdmUgbm8gY29uY3VycmVuY3kgaXNzdWVzIHRvIHdvcnJ5IGFib3V0IGhlcmUuCi0gKgot ICogTm90ZSB0aGF0IG90aGVyIGhhbmRsZXMgY3JlYXRlZCBpbiB0aGlzIG1vZHVsZSBhcmUg bmV2ZXIgbWFya2VkIGFzCi0gKiBpbmhlcml0YWJsZS4gIFRodXMgd2UgZG8gbm90IG5lZWQg dG8gd29ycnkgYWJvdXQgY2xlYW5pbmcgdXAgY2hpbGQKLSAqIHByb2Nlc3MgcmVmZXJlbmNl cyB0byBwb3N0bWFzdGVyLXByaXZhdGUgbGF0Y2hlcyBvciBXYWl0RXZlbnRTZXRzLgotICov Ci12b2lkCi1Jbml0U2hhcmVkTGF0Y2goTGF0Y2ggKmxhdGNoKQotewotI2lmZGVmIFdJTjMy Ci0JU0VDVVJJVFlfQVRUUklCVVRFUyBzYTsKLQotCS8qCi0JICogU2V0IHVwIHNlY3VyaXR5 IGF0dHJpYnV0ZXMgdG8gc3BlY2lmeSB0aGF0IHRoZSBldmVudHMgYXJlIGluaGVyaXRlZC4K LQkgKi8KLQlaZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7Ci0Jc2Eubkxlbmd0aCA9IHNp emVvZihzYSk7Ci0Jc2EuYkluaGVyaXRIYW5kbGUgPSBUUlVFOwotCi0JbGF0Y2gtPmV2ZW50 ID0gQ3JlYXRlRXZlbnQoJnNhLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0JaWYgKGxhdGNoLT5l dmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJv ciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKLSNlbmRpZgotCi0JbGF0Y2gtPmlzX3Nl dCA9IGZhbHNlOwotCWxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwotCWxhdGNoLT5v d25lcl9waWQgPSAwOwotCWxhdGNoLT5pc19zaGFyZWQgPSB0cnVlOwotfQotCi0vKgotICog QXNzb2NpYXRlIGEgc2hhcmVkIGxhdGNoIHdpdGggdGhlIGN1cnJlbnQgcHJvY2VzcywgYWxs b3dpbmcgaXQgdG8KLSAqIHdhaXQgb24gdGhlIGxhdGNoLgotICoKLSAqIEFsdGhvdWdoIHRo ZXJlIGlzIGEgc2FuaXR5IGNoZWNrIGZvciBsYXRjaC1hbHJlYWR5LW93bmVkLCB3ZSBkb24n dCBkbwotICogYW55IHNvcnQgb2YgbG9ja2luZyBoZXJlLCBtZWFuaW5nIHRoYXQgd2UgY291 bGQgZmFpbCB0byBkZXRlY3QgdGhlIGVycm9yCi0gKiBpZiB0d28gcHJvY2Vzc2VzIHRyeSB0 byBvd24gdGhlIHNhbWUgbGF0Y2ggYXQgYWJvdXQgdGhlIHNhbWUgdGltZS4gIElmCi0gKiB0 aGVyZSBpcyBhbnkgcmlzayBvZiB0aGF0LCBjYWxsZXIgbXVzdCBwcm92aWRlIGFuIGludGVy bG9jayB0byBwcmV2ZW50IGl0LgotICovCi12b2lkCi1Pd25MYXRjaChMYXRjaCAqbGF0Y2gp Ci17Ci0JaW50CQkJb3duZXJfcGlkOwotCi0JLyogU2FuaXR5IGNoZWNrcyAqLwotCUFzc2Vy dChsYXRjaC0+aXNfc2hhcmVkKTsKLQotI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBF KQotCS8qIEFzc2VydCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0IGhhcyBiZWVuIGNhbGxlZCBp biB0aGlzIHByb2Nlc3MgKi8KLQlBc3NlcnQoc2VsZnBpcGVfcmVhZGZkID49IDAgJiYgc2Vs ZnBpcGVfb3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0jZWxpZiBkZWZpbmVkKFdBSVRfVVNF X1NJR05BTEZEKQotCS8qIEFzc2VydCBJbml0aWFsaXplTGF0Y2hTdXBwb3J0IGhhcyBiZWVu IGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MgKi8KLQlBc3NlcnQoc2lnbmFsX2ZkID49IDApOwot I2VuZGlmCi0KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwotCWlmIChvd25lcl9w aWQgIT0gMCkKLQkJZWxvZyhQQU5JQywgImxhdGNoIGFscmVhZHkgb3duZWQgYnkgUElEICVk Iiwgb3duZXJfcGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci19Ci0K LS8qCi0gKiBEaXNvd24gYSBzaGFyZWQgbGF0Y2ggY3VycmVudGx5IG93bmVkIGJ5IHRoZSBj dXJyZW50IHByb2Nlc3MuCi0gKi8KLXZvaWQKLURpc293bkxhdGNoKExhdGNoICpsYXRjaCkK LXsKLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0JQXNzZXJ0KGxhdGNoLT5vd25lcl9w aWQgPT0gTXlQcm9jUGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSAwOwotfQotCi0vKgot ICogV2FpdCBmb3IgYSBnaXZlbiBsYXRjaCB0byBiZSBzZXQsIG9yIGZvciBwb3N0bWFzdGVy IGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0Ci0gKiBpcyBleGNlZWRlZC4gJ3dha2VFdmVudHMn IGlzIGEgYml0bWFzayB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMKLSAq IHRvIHdhaXQgZm9yLiBJZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQgKGFuZCBXTF9MQVRD SF9TRVQgaXMgZ2l2ZW4pLCB0aGUKLSAqIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHku CisgKiBXYWl0IGZvciBhbnkgb2YgdGhlIGludGVycnVwdHMgaW4gaW50ZXJydXB0TWFzayB0 byBiZSBzZXQsIG9yIGZvcgorICogcG9zdG1hc3RlciBkZWF0aCwgb3IgdW50aWwgdGltZW91 dCBpcyBleGNlZWRlZC4gJ3dha2VFdmVudHMnIGlzIGEgYml0bWFzaworICogdGhhdCBzcGVj aWZpZXMgd2hpY2ggb2YgdGhvc2UgZXZlbnRzIHRvIHdhaXQgZm9yLiBJZiB0aGUgaW50ZXJy dXB0IGlzCisgKiBhbHJlYWR5IHBlbmRpbmcgKGFuZCBXTF9JTlRFUlJVUFQgaXMgZ2l2ZW4p LCB0aGUgZnVuY3Rpb24gcmV0dXJucworICogaW1tZWRpYXRlbHkuCiAgKgogICogVGhlICJ0 aW1lb3V0IiBpcyBnaXZlbiBpbiBtaWxsaXNlY29uZHMuIEl0IG11c3QgYmUgPj0gMCBpZiBX TF9USU1FT1VUIGZsYWcKICAqIGlzIGdpdmVuLiAgQWx0aG91Z2ggaXQgaXMgZGVjbGFyZWQg YXMgImxvbmciLCB3ZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0CiAgKiB0aW1lb3V0cyBsb25n ZXIgdGhhbiBJTlRfTUFYIG1pbGxpc2Vjb25kcy4gIE5vdGUgdGhhdCBzb21lIGV4dHJhIG92 ZXJoZWFkCiAgKiBpcyBpbmN1cnJlZCB3aGVuIFdMX1RJTUVPVVQgaXMgZ2l2ZW4sIHNvIGF2 b2lkIHVzaW5nIGEgdGltZW91dCBpZiBwb3NzaWJsZS4KICAqCi0gKiBUaGUgbGF0Y2ggbXVz dCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLCBpZS4gaXQgbXVzdCBiZSBhCi0g KiBwcm9jZXNzLWxvY2FsIGxhdGNoIGluaXRpYWxpemVkIHdpdGggSW5pdExhdGNoLCBvciBh IHNoYXJlZCBsYXRjaAotICogYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3Mg YnkgY2FsbGluZyBPd25MYXRjaC4KLSAqCiAgKiBSZXR1cm5zIGJpdCBtYXNrIGluZGljYXRp bmcgd2hpY2ggY29uZGl0aW9uKHMpIGNhdXNlZCB0aGUgd2FrZS11cC4gTm90ZQogICogdGhh dCBpZiBtdWx0aXBsZSB3YWtlLXVwIGNvbmRpdGlvbnMgYXJlIHRydWUsIHRoZXJlIGlzIG5v IGd1YXJhbnRlZSB0aGF0CiAgKiB3ZSByZXR1cm4gYWxsIG9mIHRoZW0gaW4gb25lIGNhbGws IGJ1dCB3ZSB3aWxsIHJldHVybiBhdCBsZWFzdCBvbmUuCiAgKi8KIGludAotV2FpdExhdGNo KExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKLQkJICB1aW50 MzIgd2FpdF9ldmVudF9pbmZvKQorV2FpdEludGVycnVwdCh1aW50MzIgaW50ZXJydXB0TWFz aywgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKKwkJCSAgdWludDMyIHdhaXRfZXZl bnRfaW5mbykKIHsKIAlXYWl0RXZlbnQJZXZlbnQ7CiAKQEAgLTUyNSwxNyArNDQ3LDE3IEBA IFdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQs CiAJCSAgICh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkpOwogCiAJLyoKLQkg KiBTb21lIGNhbGxlcnMgbWF5IGhhdmUgYSBsYXRjaCBvdGhlciB0aGFuIE15TGF0Y2gsIG9y IG5vIGxhdGNoIGF0IGFsbCwKLQkgKiBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRl YXRoIGRpZmZlcmVudGx5LiAgSXQncyBjaGVhcCB0byBhc3NpZ24KLQkgKiB0aG9zZSwgc28g anVzdCBkbyBpdCBldmVyeSB0aW1lLgorCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhbiBp bnRlcnJ1cHQgbWFzayBkaWZmZXJlbnQgZnJvbSBsYXN0IHRpbWUsIG9yIG5vCisJICogaW50 ZXJydXB0IG1hc2sgYXQgYWxsLCBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRo IGRpZmZlcmVudGx5LgorCSAqIEl0J3MgY2hlYXAgdG8gYXNzaWduIHRob3NlLCBzbyBqdXN0 IGRvIGl0IGV2ZXJ5IHRpbWUuCiAJICovCi0JaWYgKCEod2FrZUV2ZW50cyAmIFdMX0xBVENI X1NFVCkpCi0JCWxhdGNoID0gTlVMTDsKLQlNb2RpZnlXYWl0RXZlbnQoTGF0Y2hXYWl0U2V0 LCBMYXRjaFdhaXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hfU0VULCBsYXRjaCk7Ci0JTGF0Y2hX YWl0U2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPQorCWlmICghKHdha2VFdmVudHMg JiBXTF9JTlRFUlJVUFQpKQorCQlpbnRlcnJ1cHRNYXNrID0gMDsKKwlNb2RpZnlXYWl0RXZl bnQoSW50ZXJydXB0V2FpdFNldCwgSW50ZXJydXB0V2FpdFNldEludGVycnVwdFBvcywgV0xf SU5URVJSVVBULCBpbnRlcnJ1cHRNYXNrKTsKKwlJbnRlcnJ1cHRXYWl0U2V0LT5leGl0X29u X3Bvc3RtYXN0ZXJfZGVhdGggPQogCQkoKHdha2VFdmVudHMgJiBXTF9FWElUX09OX1BNX0RF QVRIKSAhPSAwKTsKIAotCWlmIChXYWl0RXZlbnRTZXRXYWl0KExhdGNoV2FpdFNldCwKKwlp ZiAoV2FpdEV2ZW50U2V0V2FpdChJbnRlcnJ1cHRXYWl0U2V0LAogCQkJCQkJICh3YWtlRXZl bnRzICYgV0xfVElNRU9VVCkgPyB0aW1lb3V0IDogLTEsCiAJCQkJCQkgJmV2ZW50LCAxLAog CQkJCQkJIHdhaXRfZXZlbnRfaW5mbykgPT0gMCkKQEAgLTU0NSw3ICs0NjcsNyBAQCBXYWl0 TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAogfQog CiAvKgotICogTGlrZSBXYWl0TGF0Y2gsIGJ1dCB3aXRoIGFuIGV4dHJhIHNvY2tldCBhcmd1 bWVudCBmb3IgV0xfU09DS0VUXyoKKyAqIExpa2UgV2FpdEludGVycnVwdCwgYnV0IHdpdGgg YW4gZXh0cmEgc29ja2V0IGFyZ3VtZW50IGZvciBXTF9TT0NLRVRfKgogICogY29uZGl0aW9u cy4KICAqCiAgKiBXaGVuIHdhaXRpbmcgb24gYSBzb2NrZXQsIEVPRiBhbmQgZXJyb3IgY29u ZGl0aW9ucyBhbHdheXMgY2F1c2UgdGhlIHNvY2tldApAQCAtNTU4LDEyICs0ODAsMTIgQEAg V2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwK ICAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhhbiBpbW1lZGlhdGUgZXhpdCBpcyBu ZWVkZWQuCiAgKgogICogTkI6IFRoZXNlIGRheXMgdGhpcyBpcyBqdXN0IGEgd3JhcHBlciBh cm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4KLSAqIHVzaW5nIGEgbGF0Y2ggdmVy eSBmcmVxdWVudGx5LCBjb25zaWRlciBjcmVhdGluZyBhIGxvbmdlciBsaXZpbmcKKyAqIHVz aW5nIGFuIGludGVycnVwdCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEg bG9uZ2VyIGxpdmluZwogICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVm ZmljaWVudC4KICAqLwogaW50Ci1XYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGlu dCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAotCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvKQorV2FpdEludGVycnVwdE9yU29ja2V0KHVpbnQzMiBpbnRl cnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKKwkJCQkJICBsb25n IHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7CiAJaW50CQkJcmV0ID0gMDsK IAlpbnQJCQlyYzsKQEAgLTU3NSw5ICs0OTcsOSBAQCBXYWl0TGF0Y2hPclNvY2tldChMYXRj aCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAogCWVsc2UKIAkJdGlt ZW91dCA9IC0xOwogCi0JaWYgKHdha2VFdmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCUFkZFdh aXRFdmVudFRvU2V0KHNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJ CQkJICBsYXRjaCwgTlVMTCk7CisJaWYgKHdha2VFdmVudHMgJiBXTF9JTlRFUlJVUFQpCisJ CUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VU LAorCQkJCQkJICBpbnRlcnJ1cHRNYXNrLCBOVUxMKTsKIAogCS8qIFBvc3RtYXN0ZXItbWFu YWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8K IAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CkBAIC01ODYsMTggKzUwOCwxOCBAQCBX YWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tl dCBzb2NrLAogCiAJaWYgKCh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkgJiYg SXNVbmRlclBvc3RtYXN0ZXIpCiAJCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfUE9TVE1B U1RFUl9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJCSAgTlVMTCwgTlVMTCk7CisJ CQkJCQkgIDAsIE5VTEwpOwogCiAJaWYgKCh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9E RUFUSCkgJiYgSXNVbmRlclBvc3RtYXN0ZXIpCiAJCUFkZFdhaXRFdmVudFRvU2V0KHNldCwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJCSAgTlVMTCwg TlVMTCk7CisJCQkJCQkgIDAsIE5VTEwpOwogCiAJaWYgKHdha2VFdmVudHMgJiBXTF9TT0NL RVRfTUFTSykKIAl7CiAJCWludAkJCWV2OwogCiAJCWV2ID0gd2FrZUV2ZW50cyAmIFdMX1NP Q0tFVF9NQVNLOwotCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCBOVUxMLCBO VUxMKTsKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBldiwgc29jaywgMCwgTlVMTCk7CiAJ fQogCiAJcmMgPSBXYWl0RXZlbnRTZXRXYWl0KHNldCwgdGltZW91dCwgJmV2ZW50LCAxLCB3 YWl0X2V2ZW50X2luZm8pOwpAQCAtNjA2LDcgKzUyOCw3IEBAIFdhaXRMYXRjaE9yU29ja2V0 KExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ssCiAJCXJldCB8 PSBXTF9USU1FT1VUOwogCWVsc2UKIAl7Ci0JCXJldCB8PSBldmVudC5ldmVudHMgJiAoV0xf TEFUQ0hfU0VUIHwKKwkJcmV0IHw9IGV2ZW50LmV2ZW50cyAmIChXTF9JTlRFUlJVUFQgfAog CQkJCQkJCSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAogCQkJCQkJCSAgIFdMX1NPQ0tFVF9N QVNLKTsKIAl9CkBAIC02MTcsMTI3ICs1MzksNTAgQEAgV2FpdExhdGNoT3JTb2NrZXQoTGF0 Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKIH0KIAogLyoKLSAq IFNldHMgYSBsYXRjaCBhbmQgd2FrZXMgdXAgYW55b25lIHdhaXRpbmcgb24gaXQuCi0gKgot ICogVGhpcyBpcyBjaGVhcCBpZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQsIG90aGVyd2lz ZSBub3Qgc28gbXVjaC4KKyAqIFdha2VzIHVwIG15IHByb2Nlc3MgaWYgaXQncyBjdXJyZW50 bHkgd2FpdGluZy4KICAqCi0gKiBOQjogd2hlbiBjYWxsaW5nIHRoaXMgaW4gYSBzaWduYWwg aGFuZGxlciwgYmUgc3VyZSB0byBzYXZlIGFuZCByZXN0b3JlCi0gKiBlcnJubyBhcm91bmQg aXQuICAoVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlIGluIG1vc3Qgc2lnbmFsIGhhbmRsZXJz LCBvZgotICogY291cnNlLCBidXQgd2UgdXNlZCB0byBvbWl0IGl0IGluIGhhbmRsZXJzIHRo YXQgb25seSBzZXQgYSBmbGFnLikKKyAqIE5COiBiZSBzdXJlIHRvIHNhdmUgYW5kIHJlc3Rv cmUgZXJybm8gYXJvdW5kIGl0LiAgKFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZQorICogaW4g bW9zdCBzaWduYWwgaGFuZGxlcnMsIG9mIGNvdXJzZSwgYnV0IHdlIHVzZWQgdG8gb21pdCBp dCBpbiBoYW5kbGVycyB0aGF0CisgKiBvbmx5IHNldCBhIGZsYWcuKQogICoKICAqIE5COiB0 aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBzaWdu YWwgaGFuZGxlcnMgc28KICAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2QgaWRl YS4KICAqLwogdm9pZAotU2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQorV2FrZXVwTXlQcm9jKHZv aWQpCiB7CiAjaWZuZGVmIFdJTjMyCi0JcGlkX3QJCW93bmVyX3BpZDsKLSNlbHNlCi0JSEFO RExFCQloYW5kbGU7Ci0jZW5kaWYKLQotCS8qCi0JICogVGhlIG1lbW9yeSBiYXJyaWVyIGhh cyB0byBiZSBwbGFjZWQgaGVyZSB0byBlbnN1cmUgdGhhdCBhbnkgZmxhZwotCSAqIHZhcmlh YmxlcyBwb3NzaWJseSBjaGFuZ2VkIGJ5IHRoaXMgcHJvY2VzcyBoYXZlIGJlZW4gZmx1c2hl ZCB0byBtYWluCi0JICogbWVtb3J5LCBiZWZvcmUgd2UgY2hlY2svc2V0IGlzX3NldC4KLQkg Ki8KLQlwZ19tZW1vcnlfYmFycmllcigpOwotCi0JLyogUXVpY2sgZXhpdCBpZiBhbHJlYWR5 IHNldCAqLwotCWlmIChsYXRjaC0+aXNfc2V0KQotCQlyZXR1cm47Ci0KLQlsYXRjaC0+aXNf c2V0ID0gdHJ1ZTsKLQotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci0JaWYgKCFsYXRjaC0+bWF5 YmVfc2xlZXBpbmcpCi0JCXJldHVybjsKLQotI2lmbmRlZiBXSU4zMgotCi0JLyoKLQkgKiBT ZWUgaWYgYW55b25lJ3Mgd2FpdGluZyBmb3IgdGhlIGxhdGNoLiBJdCBjYW4gYmUgdGhlIGN1 cnJlbnQgcHJvY2VzcyBpZgotCSAqIHdlJ3JlIGluIGEgc2lnbmFsIGhhbmRsZXIuIFdlIHVz ZSB0aGUgc2VsZi1waXBlIG9yIFNJR1VSRyB0byBvdXJzZWx2ZXMKLQkgKiB0byB3YWtlIHVw IFdhaXRFdmVudFNldFdhaXRCbG9jaygpIHdpdGhvdXQgcmFjZXMgaW4gdGhhdCBjYXNlLiBJ ZiBpdCdzCi0JICogYW5vdGhlciBwcm9jZXNzLCBzZW5kIGEgc2lnbmFsLgotCSAqCi0JICog RmV0Y2ggb3duZXJfcGlkIG9ubHkgb25jZSwgaW4gY2FzZSB0aGUgbGF0Y2ggaXMgY29uY3Vy cmVudGx5IGdldHRpbmcKLQkgKiBvd25lZCBvciBkaXNvd25lZC4gWFhYOiBUaGlzIGFzc3Vt ZXMgdGhhdCBwaWRfdCBpcyBhdG9taWMsIHdoaWNoIGlzbid0Ci0JICogZ3VhcmFudGVlZCB0 byBiZSB0cnVlISBJbiBwcmFjdGljZSwgdGhlIGVmZmVjdGl2ZSByYW5nZSBvZiBwaWRfdCBm aXRzCi0JICogaW4gYSAzMiBiaXQgaW50ZWdlciwgYW5kIHNvIHNob3VsZCBiZSBhdG9taWMu IEluIHRoZSB3b3JzdCBjYXNlLCB3ZQotCSAqIG1pZ2h0IGVuZCB1cCBzaWduYWxpbmcgdGhl IHdyb25nIHByb2Nlc3MuIEV2ZW4gdGhlbiwgeW91J3JlIHZlcnkKLQkgKiB1bmx1Y2t5IGlm IGEgcHJvY2VzcyB3aXRoIHRoYXQgYm9ndXMgcGlkIGV4aXN0cyBhbmQgYmVsb25ncyB0bwot CSAqIFBvc3RncmVzOyBhbmQgUEcgZGF0YWJhc2UgcHJvY2Vzc2VzIHNob3VsZCBoYW5kbGUg ZXhjZXNzIFNJR1VTUjEKLQkgKiBpbnRlcnJ1cHRzIHdpdGhvdXQgYSBwcm9ibGVtIGFueWhv dy4KLQkgKgotCSAqIEFub3RoZXIgc29ydCBvZiByYWNlIGNvbmRpdGlvbiB0aGF0J3MgcG9z c2libGUgaGVyZSBpcyBmb3IgYSBuZXcKLQkgKiBwcm9jZXNzIHRvIG93biB0aGUgbGF0Y2gg aW1tZWRpYXRlbHkgYWZ0ZXIgd2UgbG9vaywgc28gd2UgZG9uJ3Qgc2lnbmFsCi0JICogaXQu IFRoaXMgaXMgb2theSBzbyBsb25nIGFzIGFsbCBjYWxsZXJzIG9mIFJlc2V0TGF0Y2gvV2Fp dExhdGNoIGZvbGxvdwotCSAqIHRoZSBzdGFuZGFyZCBjb2RpbmcgY29udmVudGlvbiBvZiB3 YWl0aW5nIGF0IHRoZSBib3R0b20gb2YgdGhlaXIgbG9vcHMsCi0JICogbm90IHRoZSB0b3As IHNvIHRoYXQgdGhleSdsbCBjb3JyZWN0bHkgcHJvY2VzcyBsYXRjaC1zZXR0aW5nIGV2ZW50 cwotCSAqIHRoYXQgaGFwcGVuIGJlZm9yZSB0aGV5IGVudGVyIHRoZSBsb29wLgotCSAqLwot CW93bmVyX3BpZCA9IGxhdGNoLT5vd25lcl9waWQ7Ci0JaWYgKG93bmVyX3BpZCA9PSAwKQot CQlyZXR1cm47Ci0JZWxzZSBpZiAob3duZXJfcGlkID09IE15UHJvY1BpZCkKLQl7CiAjaWYg ZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCi0JCWlmICh3YWl0aW5nKQotCQkJc2VuZFNl bGZQaXBlQnl0ZSgpOworCWlmICh3YWl0aW5nKQorCQlzZW5kU2VsZlBpcGVCeXRlKCk7CiAj ZWxzZQotCQlpZiAod2FpdGluZykKLQkJCWtpbGwoTXlQcm9jUGlkLCBTSUdVUkcpOworCWlm ICh3YWl0aW5nKQorCQlraWxsKE15UHJvY1BpZCwgU0lHVVJHKTsKICNlbmRpZgotCX0KLQll bHNlCi0JCWtpbGwob3duZXJfcGlkLCBTSUdVUkcpOwotCiAjZWxzZQotCi0JLyoKLQkgKiBT ZWUgaWYgYW55b25lJ3Mgd2FpdGluZyBmb3IgdGhlIGxhdGNoLiBJdCBjYW4gYmUgdGhlIGN1 cnJlbnQgcHJvY2VzcyBpZgotCSAqIHdlJ3JlIGluIGEgc2lnbmFsIGhhbmRsZXIuCi0JICoK LQkgKiBVc2UgYSBsb2NhbCB2YXJpYWJsZSBoZXJlIGp1c3QgaW4gY2FzZSBzb21lYm9keSBj aGFuZ2VzIHRoZSBldmVudCBmaWVsZAotCSAqIGNvbmN1cnJlbnRseSAod2hpY2ggcmVhbGx5 IHNob3VsZCBub3QgaGFwcGVuKS4KLQkgKi8KLQloYW5kbGUgPSBsYXRjaC0+ZXZlbnQ7Ci0J aWYgKGhhbmRsZSkKLQl7Ci0JCVNldEV2ZW50KGhhbmRsZSk7Ci0KLQkJLyoKLQkJICogTm90 ZSB0aGF0IHdlIHNpbGVudGx5IGlnbm9yZSBhbnkgZXJyb3JzLiBXZSBtaWdodCBiZSBpbiBh IHNpZ25hbAotCQkgKiBoYW5kbGVyIG9yIG90aGVyIGNyaXRpY2FsIHBhdGggd2hlcmUgaXQn cyBub3Qgc2FmZSB0byBjYWxsIGVsb2coKS4KLQkJICovCi0JfQorCVNldEV2ZW50KE15UHJv YyA/IE15UHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgOiBMb2NhbEludGVycnVwdFdha2V1 cEV2ZW50KTsKICNlbmRpZgogfQogCiAvKgotICogQ2xlYXIgdGhlIGxhdGNoLiBDYWxsaW5n IFdhaXRMYXRjaCBhZnRlciB0aGlzIHdpbGwgc2xlZXAsIHVubGVzcwotICogdGhlIGxhdGNo IGlzIHNldCBhZ2FpbiBiZWZvcmUgdGhlIFdhaXRMYXRjaCBjYWxsLgorICogV2FrZXMgdXAg YW5vdGhlciBwcm9jZXNzIGlmIGl0J3MgY3VycmVudGx5IHdhaXRpbmcuCiAgKi8KIHZvaWQK LVJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQorV2FrZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJv YykKIHsKLQkvKiBPbmx5IHRoZSBvd25lciBzaG91bGQgcmVzZXQgdGhlIGxhdGNoICovCi0J QXNzZXJ0KGxhdGNoLT5vd25lcl9waWQgPT0gTXlQcm9jUGlkKTsKLQlBc3NlcnQobGF0Y2gt Pm1heWJlX3NsZWVwaW5nID09IGZhbHNlKTsKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsK KyNpZm5kZWYgV0lOMzIKKwlraWxsKHByb2MtPnBpZCwgU0lHVVJHKTsKKyNlbHNlCisJU2V0 RXZlbnQocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQpOwogCiAJLyoKLQkgKiBFbnN1cmUg dGhhdCB0aGUgd3JpdGUgdG8gaXNfc2V0IGdldHMgZmx1c2hlZCB0byBtYWluIG1lbW9yeSBi ZWZvcmUgd2UKLQkgKiBleGFtaW5lIGFueSBmbGFnIHZhcmlhYmxlcy4gIE90aGVyd2lzZSBh IGNvbmN1cnJlbnQgU2V0TGF0Y2ggbWlnaHQKLQkgKiBmYWxzZWx5IGNvbmNsdWRlIHRoYXQg aXQgbmVlZG4ndCBzaWduYWwgdXMsIGV2ZW4gdGhvdWdoIHdlIGhhdmUgbWlzc2VkCi0JICog c2VlaW5nIHNvbWUgZmxhZyB1cGRhdGVzIHRoYXQgU2V0TGF0Y2ggd2FzIHN1cHBvc2VkIHRv IGluZm9ybSB1cyBvZi4KKwkgKiBOb3RlIHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBl cnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCisJICogaGFuZGxlciBvciBvdGhlciBj cml0aWNhbCBwYXRoIHdoZXJlIGl0J3Mgbm90IHNhZmUgdG8gY2FsbCBlbG9nKCkuCiAJICov Ci0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKKyNlbmRpZgogfQogCisKIC8qCiAgKiBDcmVhdGUg YSBXYWl0RXZlbnRTZXQgd2l0aCBzcGFjZSBmb3IgbmV2ZW50cyBkaWZmZXJlbnQgZXZlbnRz IHRvIHdhaXQgZm9yLgogICoKQEAgLTc5OSw3ICs2NDQsOCBAQCBDcmVhdGVXYWl0RXZlbnRT ZXQoUmVzb3VyY2VPd25lciByZXNvd25lciwgaW50IG5ldmVudHMpCiAJZGF0YSArPSBNQVhB TElHTihzaXplb2YoSEFORExFKSAqIG5ldmVudHMpOwogI2VuZGlmCiAKLQlzZXQtPmxhdGNo ID0gTlVMTDsKKwlzZXQtPmludGVycnVwdF9tYXNrID0gMDsKKwlzZXQtPmludGVycnVwdF9w b3MgPSAtMTsKIAlzZXQtPm5ldmVudHNfc3BhY2UgPSBuZXZlbnRzOwogCXNldC0+ZXhpdF9v bl9wb3N0bWFzdGVyX2RlYXRoID0gZmFsc2U7CiAKQEAgLTg5MCw5ICs3MzYsOSBAQCBGcmVl V2FpdEV2ZW50U2V0KFdhaXRFdmVudFNldCAqc2V0KQogCQkgY3VyX2V2ZW50IDwgKHNldC0+ ZXZlbnRzICsgc2V0LT5uZXZlbnRzKTsKIAkJIGN1cl9ldmVudCsrKQogCXsKLQkJaWYgKGN1 cl9ldmVudC0+ZXZlbnRzICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5ldmVu dHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCS8qIHVzZXMgdGhlIGxhdGNoJ3MgSEFORExF ICovCisJCQkvKiB1c2VzIHRoZSBwcm9jZXNzJ3Mgd2FrZXVwIEhBTkRMRSAqLwogCQl9CiAJ CWVsc2UgaWYgKGN1cl9ldmVudC0+ZXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJ ewpAQCAtOTI5LDcgKzc3NSw3IEBAIEZyZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2 ZW50U2V0ICpzZXQpCiAKIC8qIC0tLQogICogQWRkIGFuIGV2ZW50IHRvIHRoZSBzZXQuIFBv c3NpYmxlIGV2ZW50cyBhcmU6Ci0gKiAtIFdMX0xBVENIX1NFVDogV2FpdCBmb3IgdGhlIGxh dGNoIHRvIGJlIHNldAorICogLSBXTF9JTlRFUlJVUFQ6IFdhaXQgZm9yIHRoZSBpbnRlcnJ1 cHQgdG8gYmUgc2V0CiAgKiAtIFdMX1BPU1RNQVNURVJfREVBVEg6IFdhaXQgZm9yIHBvc3Rt YXN0ZXIgdG8gZGllCiAgKiAtIFdMX1NPQ0tFVF9SRUFEQUJMRTogV2FpdCBmb3Igc29ja2V0 IHRvIGJlY29tZSByZWFkYWJsZSwKICAqCSBjYW4gYmUgY29tYmluZWQgaW4gb25lIGV2ZW50 IHdpdGggb3RoZXIgV0xfU09DS0VUXyogZXZlbnRzCkBAIC05NDcsMTAgKzc5Myw2IEBAIEZy ZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBSZXR1cm5z IHRoZSBvZmZzZXQgaW4gV2FpdEV2ZW50U2V0LT5ldmVudHMgKHN0YXJ0aW5nIGZyb20gMCks IHdoaWNoIGNhbiBiZQogICogdXNlZCB0byBtb2RpZnkgcHJldmlvdXNseSBhZGRlZCB3YWl0 IGV2ZW50cyB1c2luZyBNb2RpZnlXYWl0RXZlbnQoKS4KICAqCi0gKiBJbiB0aGUgV0xfTEFU Q0hfU0VUIGNhc2UgdGhlIGxhdGNoIG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQgcHJv Y2VzcywKLSAqIGkuZS4gaXQgbXVzdCBiZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2ggaW5pdGlh bGl6ZWQgd2l0aCBJbml0TGF0Y2gsIG9yIGEKLSAqIHNoYXJlZCBsYXRjaCBhc3NvY2lhdGVk IHdpdGggdGhlIGN1cnJlbnQgcHJvY2VzcyBieSBjYWxsaW5nIE93bkxhdGNoLgotICoKICAq IEluIHRoZSBXTF9TT0NLRVRfUkVBREFCTEUvV1JJVEVBQkxFL0NPTk5FQ1RFRC9BQ0NFUFQg Y2FzZXMsIEVPRiBhbmQgZXJyb3IKICAqIGNvbmRpdGlvbnMgY2F1c2UgdGhlIHNvY2tldCB0 byBiZSByZXBvcnRlZCBhcyByZWFkYWJsZS93cml0YWJsZS9jb25uZWN0ZWQsCiAgKiBzbyB0 aGF0IHRoZSBjYWxsZXIgY2FuIGRlYWwgd2l0aCB0aGUgY29uZGl0aW9uLgpAQCAtOTYwLDcg KzgwMiw3IEBAIEZyZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQp CiAgKiBldmVudHMuCiAgKi8KIGludAotQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0 ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCitBZGRX YWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2Nr ZXQgZmQsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrLAogCQkJCSAgdm9pZCAqdXNlcl9kYXRhKQog ewogCVdhaXRFdmVudCAgKmV2ZW50OwpAQCAtOTc0LDE5ICs4MTYsMTYgQEAgQWRkV2FpdEV2 ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZk LCBMYXRjaCAqbGF0Y2gsCiAJCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0gdHJ1 ZTsKIAl9CiAKLQlpZiAobGF0Y2gpCi0JewotCQlpZiAobGF0Y2gtPm93bmVyX3BpZCAhPSBN eVByb2NQaWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBsYXRjaCBvd25l ZCBieSBhbm90aGVyIHByb2Nlc3MiKTsKLQkJaWYgKHNldC0+bGF0Y2gpCi0JCQllbG9nKEVS Uk9SLCAiY2Fubm90IHdhaXQgb24gbW9yZSB0aGFuIG9uZSBsYXRjaCIpOwotCQlpZiAoKGV2 ZW50cyAmIFdMX0xBVENIX1NFVCkgIT0gV0xfTEFUQ0hfU0VUKQotCQkJZWxvZyhFUlJPUiwg ImxhdGNoIGV2ZW50cyBvbmx5IHN1cHBvcnQgYmVpbmcgc2V0Iik7Ci0JfQotCWVsc2UKKwkv KgorCSAqIEl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIHdhaXQgZm9yIFdMX0lOVEVS UlVQVCB3aXRoIGVtcHR5CisJICogaW50ZXJydXB0TWFzaywgYnV0IHdlIGFsbG93IGl0IHNv IHRoYXQgeW91IGNhbiB1c2UgTW9kaWZ5RXZlbnQgdG8gc2V0CisJICogdGhlIGludGVycnVw dE1hc2sgbGF0ZXIuIE5vbi16ZXJvIGludGVycnVwdE1hc2sgZG9lc24ndCBtYWtlIHNlbnNl CisJICogd2l0aG91dCBXTF9JTlRFUlJVUFQsIGhvd2V2ZXIuCisJICovCisJaWYgKGludGVy cnVwdE1hc2sgIT0gMCkKIAl7Ci0JCWlmIChldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQll bG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gbGF0Y2ggd2l0aG91dCBhIHNwZWNpZmllZCBs YXRjaCIpOworCQlpZiAoKGV2ZW50cyAmIFdMX0lOVEVSUlVQVCkgIT0gV0xfSU5URVJSVVBU KQorCQkJZWxvZyhFUlJPUiwgImludGVycnVwdGVkIGV2ZW50cyBvbmx5IHN1cHBvcnQgYmVp bmcgc2V0Iik7CiAJfQogCiAJLyogd2FpdGluZyBmb3Igc29ja2V0IHJlYWRpbmVzcyB3aXRo b3V0IGEgc29ja2V0IGluZGljYXRlcyBhIGJ1ZyAqLwpAQCAtMTAwMiwxMCArODQxLDEwIEBA IEFkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBw Z3NvY2tldCBmZCwgTGF0Y2ggKmxhdGNoLAogCWV2ZW50LT5yZXNldCA9IGZhbHNlOwogI2Vu ZGlmCiAKLQlpZiAoZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnRzID09IFdM X0lOVEVSUlVQVCkKIAl7Ci0JCXNldC0+bGF0Y2ggPSBsYXRjaDsKLQkJc2V0LT5sYXRjaF9w b3MgPSBldmVudC0+cG9zOworCQlzZXQtPmludGVycnVwdF9tYXNrID0gaW50ZXJydXB0TWFz azsKKwkJc2V0LT5pbnRlcnJ1cHRfcG9zID0gZXZlbnQtPnBvczsKICNpZiBkZWZpbmVkKFdB SVRfVVNFX1NFTEZfUElQRSkKIAkJZXZlbnQtPmZkID0gc2VsZnBpcGVfcmVhZGZkOwogI2Vs aWYgZGVmaW5lZChXQUlUX1VTRV9TSUdOQUxGRCkKQEAgLTEwMzksMTQgKzg3OCwxNCBAQCBB ZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdz b2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIH0KIAogLyoKLSAqIENoYW5nZSB0aGUgZXZlbnQg bWFzayBhbmQsIGluIHRoZSBXTF9MQVRDSF9TRVQgY2FzZSwgdGhlIGxhdGNoIGFzc29jaWF0 ZWQKLSAqIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBsYXRjaCBtYXkgYmUgY2hhbmdlZCB0 byBOVUxMIHRvIGRpc2FibGUgdGhlIGxhdGNoCi0gKiB0ZW1wb3JhcmlseSwgYW5kIHRoZW4g c2V0IGJhY2sgdG8gYSBsYXRjaCBsYXRlci4KKyAqIENoYW5nZSB0aGUgZXZlbnQgbWFzayBh bmQsIGluIHRoZSBXTF9JTlRFUlJVUFQgY2FzZSwgdGhlIGludGVycnVwdCBtYXNrCisgKiBh c3NvY2lhdGVkIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBpbnRlcnJ1cHQgbWFzayBtYXkg YmUgY2hhbmdlZCB0byAwIHRvCisgKiBkaXNhYmxlIHRoZSB3YWtldXBzIG9uIGludGVycnVw dHMgdGVtcG9yYXJpbHksIGFuZCB0aGVuIHNldCBiYWNrIGxhdGVyLgogICoKICAqICdwb3Mn IGlzIHRoZSBpZCByZXR1cm5lZCBieSBBZGRXYWl0RXZlbnRUb1NldC4KICAqLwogdm9pZAot TW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZl bnRzLCBMYXRjaCAqbGF0Y2gpCitNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQs IGludCBwb3MsIHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewogCVdh aXRFdmVudCAgKmV2ZW50OwogI2lmIGRlZmluZWQoV0FJVF9VU0VfS1FVRVVFKQpAQCAtMTA2 MSwxOSArOTAwLDE5IEBAIE1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50 IHBvcywgdWludDMyIGV2ZW50cywgTGF0Y2ggKmxhdGNoKQogI2VuZGlmCiAKIAkvKgotCSAq IElmIG5laXRoZXIgdGhlIGV2ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGxhdGNoIGNo YW5nZXMsIHJldHVybgotCSAqIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXph dGlvbiBmb3Igc29tZSBzb2NrZXRzLCB3aGVyZQorCSAqIElmIG5laXRoZXIgdGhlIGV2ZW50 IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGludGVycnVwdCBtYXNrIGNoYW5nZXMsCisJICog cmV0dXJuIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbiBmb3Igc29t ZSBzb2NrZXRzLCB3aGVyZQogCSAqIE1vZGlmeVdhaXRFdmVudCBpcyBmcmVxdWVudGx5IHVz ZWQgdG8gc3dpdGNoIGZyb20gd2FpdGluZyBmb3IgcmVhZHMgdG8KIAkgKiB3YWl0aW5nIG9u IHdyaXRlcy4KIAkgKi8KIAlpZiAoZXZlbnRzID09IGV2ZW50LT5ldmVudHMgJiYKLQkJKCEo ZXZlbnQtPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkgfHwgc2V0LT5sYXRjaCA9PSBsYXRjaCkp CisJCSghKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpIHx8IHNldC0+aW50ZXJydXB0 X21hc2sgPT0gaW50ZXJydXB0TWFzaykpCiAJCXJldHVybjsKIAotCWlmIChldmVudC0+ZXZl bnRzICYgV0xfTEFUQ0hfU0VUICYmCisJaWYgKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJV UFQgJiYKIAkJZXZlbnRzICE9IGV2ZW50LT5ldmVudHMpCiAJewotCQllbG9nKEVSUk9SLCAi Y2Fubm90IG1vZGlmeSBsYXRjaCBldmVudCIpOworCQllbG9nKEVSUk9SLCAiY2Fubm90IG1v ZGlmeSBpbnRlcnJ1cHRzIGV2ZW50Iik7CiAJfQogCiAJaWYgKGV2ZW50LT5ldmVudHMgJiBX TF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtMTA4NCwyNSArOTIzLDE5IEBAIE1vZGlmeVdhaXRF dmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywgTGF0Y2gg KmxhdGNoKQogCS8qIEZJWE1FOiB2YWxpZGF0ZSBldmVudCBtYXNrICovCiAJZXZlbnQtPmV2 ZW50cyA9IGV2ZW50czsKIAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChl dmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJaWYgKGxhdGNoICYmIGxhdGNoLT5vd25l cl9waWQgIT0gTXlQcm9jUGlkKQotCQkJZWxvZyhFUlJPUiwgImNhbm5vdCB3YWl0IG9uIGEg bGF0Y2ggb3duZWQgYnkgYW5vdGhlciBwcm9jZXNzIik7Ci0JCXNldC0+bGF0Y2ggPSBsYXRj aDsKKwkJc2V0LT5pbnRlcnJ1cHRfbWFzayA9IGludGVycnVwdE1hc2s7CiAKIAkJLyoKLQkJ ICogT24gVW5peCwgd2UgZG9uJ3QgbmVlZCB0byBtb2RpZnkgdGhlIGtlcm5lbCBvYmplY3Qg YmVjYXVzZSB0aGUKLQkJICogdW5kZXJseWluZyBwaXBlIChpZiB0aGVyZSBpcyBvbmUpIGlz IHRoZSBzYW1lIGZvciBhbGwgbGF0Y2hlcyBzbyB3ZQotCQkgKiBjYW4gcmV0dXJuIGltbWVk aWF0ZWx5LiAgT24gV2luZG93cywgd2UgbmVlZCB0byB1cGRhdGUgb3VyIGFycmF5IG9mCi0J CSAqIGhhbmRsZXMsIGJ1dCB3ZSBsZWF2ZSB0aGUgb2xkIG9uZSBpbiBwbGFjZSBhbmQgdG9s ZXJhdGUgc3B1cmlvdXMKLQkJICogd2FrZXVwcyBpZiB0aGUgbGF0Y2ggaXMgZGlzYWJsZWQu CisJCSAqIFdlIGRvbid0IGJvdGhlciB0byBhZGp1c3QgdGhlIGV2ZW50IHdoZW4gdGhlIGlu dGVycnVwdCBtYXNrCisJCSAqIGNoYW5nZXMuICBJdCBtZWFucyB0aGF0IHdoZW4gaW50ZXJy dXB0IG1hc2sgaXMgc2V0IHRvIDAsIHdlIHdpbGwKKwkJICogbGlzdGVuIG9uIHRoZSBrZXJu ZWwgb2JqZWN0IHVubmVjZXNzYXJpbHksIGFuZCBtaWdodCBnZXQgc29tZQorCQkgKiBzcHVy aW91cyB3YWtldXBzLiBUaGUgaW50ZXJydXB0IHNlbmRpbmcgY29kZSBzaG91bGQgbm90IHdh a2VzIHVzIHVwCisJCSAqIGlmIHRoZSBtYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzIGlzIHpl cm8sIHRob3VnaCwgc28gaXQgc2hvdWxkCisJCSAqIGJlIHJhcmUuCiAJCSAqLwotI2lmIGRl ZmluZWQoV0FJVF9VU0VfV0lOMzIpCi0JCWlmICghbGF0Y2gpCi0JCQlyZXR1cm47Ci0jZWxz ZQogCQlyZXR1cm47Ci0jZW5kaWYKIAl9CiAKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0VQT0xM KQpAQCAtMTEzMiw5ICs5NjUsOCBAQCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRT ZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVu dHMgPSBFUE9MTEVSUiB8IEVQT0xMSFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkg b25jZSAqLwotCWlmIChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZl bnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAh PSBOVUxMKTsKIAkJZXBvbGxfZXYuZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYg KGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTExODEsOSArMTAx Myw4IEBAIFdhaXRFdmVudEFkanVzdFBvbGwoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVu dCAqZXZlbnQpCiAJcG9sbGZkLT5mZCA9IGV2ZW50LT5mZDsKIAogCS8qIHByZXBhcmUgcG9s bGZkIGVudHJ5IG9uY2UgKi8KLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQp CisJaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNl dC0+bGF0Y2ggIT0gTlVMTCk7CiAJCXBvbGxmZC0+ZXZlbnRzID0gUE9MTElOOwogCX0KIAll bHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCkBAIC0xMjQ1 LDkgKzEwNzYsOSBAQCBXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0bWFzdGVyKHN0cnVj dCBrZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB9CiAKIHN0YXRpYyBpbmxpbmUg dm9pZAotV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkTGF0Y2goc3RydWN0IGtldmVudCAqa19l diwgV2FpdEV2ZW50ICpldmVudCkKK1dhaXRFdmVudEFkanVzdEtxdWV1ZUFkZEludGVycnVw dFdha2V1cChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2ZW50KQogewotCS8q IEZvciBub3cgbGF0Y2ggY2FuIG9ubHkgYmUgYWRkZWQsIG5vdCByZW1vdmVkLiAqLworCS8q IEZvciBub3cgaW50ZXJydXB0IHdha2V1cCBjYW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92 ZWQuICovCiAJa19ldi0+aWRlbnQgPSBTSUdVUkc7CiAJa19ldi0+ZmlsdGVyID0gRVZGSUxU X1NJR05BTDsKIAlrX2V2LT5mbGFncyA9IEVWX0FERDsKQEAgLTEyNzMsOCArMTEwNCw3IEBA IFdhaXRFdmVudEFkanVzdEtxdWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpl dmVudCwgaW50IG9sZF9ldmVudHMpCiAJaWYgKG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50 cykKIAkJcmV0dXJuOwogCi0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VU IHx8IHNldC0+bGF0Y2ggIT0gTlVMTCk7Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xf TEFUQ0hfU0VUIHx8CisJQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8 CiAJCSAgIGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAo ZXZlbnQtPmV2ZW50cyAmIChXTF9TT0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NL RVRfV1JJVEVBQkxFIHwKQEAgLTEyODksMTAgKzExMTksMTAgQEAgV2FpdEV2ZW50QWRqdXN0 S3F1ZXVlKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgb2xkX2V2 ZW50cykKIAkJICovCiAJCVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoJmtf ZXZbY291bnQrK10sIGV2ZW50KTsKIAl9Ci0JZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBX TF9MQVRDSF9TRVQpCisJZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQp CiAJewotCQkvKiBXZSBkZXRlY3QgbGF0Y2ggd2FrZXVwIHVzaW5nIGEgc2lnbmFsIGV2ZW50 LiAqLwotCQlXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRMYXRjaCgma19ldltjb3VudCsrXSwg ZXZlbnQpOworCQkvKiBXZSBkZXRlY3QgaW50ZXJydXB0IHdha2V1cCB1c2luZyBhIHNpZ25h bCBldmVudC4gKi8KKwkJV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVw KCZrX2V2W2NvdW50KytdLCBldmVudCk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMzcwLDEwICsx MjAwLDEzIEBAIFdhaXRFdmVudEFkanVzdFdpbjMyKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0 RXZlbnQgKmV2ZW50KQogewogCUhBTkRMRQkgICAqaGFuZGxlID0gJnNldC0+aGFuZGxlc1tl dmVudC0+cG9zICsgMV07CiAKLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQp CisJaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNl dC0+bGF0Y2ggIT0gTlVMTCk7Ci0JCSpoYW5kbGUgPSBzZXQtPmxhdGNoLT5ldmVudDsKKwkJ LyoKKwkJICogV2UgcmVnaXN0ZXIgdGhlIGV2ZW50IGV2ZW4gaWYgaW50ZXJydXB0X21hc2sg aXMgemVyby4gV2UgbWlnaHQgZ2V0CisJCSAqIHNvbWUgc3B1cmlvdXMgd2FrZXVwcywgYnV0 IHRoYXQncyBPSworCQkgKi8KKwkJKmhhbmRsZSA9IE15UHJvYyA/IE15UHJvYy0+aW50ZXJy dXB0V2FrZXVwRXZlbnQgOiBMb2NhbEludGVycnVwdFdha2V1cEV2ZW50OwogCX0KIAllbHNl IGlmIChldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCiAJewpAQCAtMTQ1 MCw3ICsxMjgzLDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9u ZyB0aW1lb3V0LAogI2lmbmRlZiBXSU4zMgogCXdhaXRpbmcgPSB0cnVlOwogI2Vsc2UKLQkv KiBFbnN1cmUgdGhhdCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlmIGxhdGNoIGlzIGFs cmVhZHkgc2V0ICovCisJLyogRW5zdXJlIHRoYXQgc2lnbmFscyBhcmUgc2VydmljZWQgZXZl biBpZiBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nICovCiAJcGd3aW4zMl9kaXNwYXRj aF9xdWV1ZWRfc2lnbmFscygpOwogI2VuZGlmCiAJd2hpbGUgKHJldHVybmVkX2V2ZW50cyA9 PSAwKQpAQCAtMTQ1OCw1MiArMTI5MSw1MiBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVu dFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJCWludAkJCXJjOwogCiAJCS8qCi0JCSAqIENo ZWNrIGlmIHRoZSBsYXRjaCBpcyBzZXQgYWxyZWFkeS4gSWYgc28sIGxlYXZlIHRoZSBsb29w CisJCSAqIENoZWNrIGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nLiBJZiBz bywgbGVhdmUgdGhlIGxvb3AKIAkJICogaW1tZWRpYXRlbHksIGF2b2lkIGJsb2NraW5nIGFn YWluLiBXZSBkb24ndCBhdHRlbXB0IHRvIHJlcG9ydCBhbnkKIAkJICogb3RoZXIgZXZlbnRz IHRoYXQgbWlnaHQgYWxzbyBiZSBzYXRpc2ZpZWQuCiAJCSAqCi0JCSAqIElmIHNvbWVvbmUg c2V0cyB0aGUgbGF0Y2ggYmV0d2VlbiB0aGlzIGFuZCB0aGUKKwkJICogSWYgc29tZW9uZSBz ZXRzIHRoZSBpbnRlcnJ1cHQgZmxhZyBiZXR3ZWVuIHRoaXMgYW5kIHRoZQogCQkgKiBXYWl0 RXZlbnRTZXRXYWl0QmxvY2soKSBiZWxvdywgdGhlIHNldHRlciB3aWxsIHdyaXRlIGEgYnl0 ZSB0byB0aGUKIAkJICogcGlwZSAob3Igc2lnbmFsIHVzIGFuZCB0aGUgc2lnbmFsIGhhbmRs ZXIgd2lsbCBkbyB0aGF0KSwgYW5kIHRoZQogCQkgKiByZWFkaW5lc3Mgcm91dGluZSB3aWxs IHJldHVybiBpbW1lZGlhdGVseS4KIAkJICoKIAkJICogT24gdW5peCwgSWYgdGhlcmUncyBh IHBlbmRpbmcgYnl0ZSBpbiB0aGUgc2VsZiBwaXBlLCB3ZSdsbCBub3RpY2UKIAkJICogd2hl bmV2ZXIgYmxvY2tpbmcuIE9ubHkgY2xlYXJpbmcgdGhlIHBpcGUgaW4gdGhhdCBjYXNlIGF2 b2lkcwotCQkgKiBoYXZpbmcgdG8gZHJhaW4gaXQgZXZlcnkgdGltZSBXYWl0TGF0Y2hPclNv Y2tldCgpIGlzIHVzZWQuIFNob3VsZAotCQkgKiB0aGUgcGlwZS1idWZmZXIgZmlsbCB1cCB3 ZSdyZSBzdGlsbCBvaywgYmVjYXVzZSB0aGUgcGlwZSBpcyBpbgotCQkgKiBub25ibG9ja2lu ZyBtb2RlLiBJdCdzIHVubGlrZWx5IGZvciB0aGF0IHRvIGhhcHBlbiwgYmVjYXVzZSB0aGUK KwkJICogaGF2aW5nIHRvIGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdEludGVycnVwdE9yU29j a2V0KCkgaXMgdXNlZC4KKwkJICogU2hvdWxkIHRoZSBwaXBlLWJ1ZmZlciBmaWxsIHVwIHdl J3JlIHN0aWxsIG9rLCBiZWNhdXNlIHRoZSBwaXBlIGlzCisJCSAqIGluIG5vbmJsb2NraW5n IG1vZGUuIEl0J3MgdW5saWtlbHkgZm9yIHRoYXQgdG8gaGFwcGVuLCBiZWNhdXNlIHRoZQog CQkgKiBzZWxmIHBpcGUgaXNuJ3QgZmlsbGVkIHVubGVzcyB3ZSdyZSBibG9ja2luZyAod2Fp dGluZyA9IHRydWUpLCBvcgotCQkgKiBmcm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyIGlu IGxhdGNoX3NpZ3VyZ19oYW5kbGVyKCkuCisJCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhh bmRsZXIgaW4gaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKCkuCiAJCSAqCiAJCSAqIE9uIHdp bmRvd3MsIHdlJ2xsIGFsc28gbm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2ZW50IGZv ciB0aGUKLQkJICogbGF0Y2ggd2hlbiBibG9ja2luZywgYnV0IHRoZXJlJ3Mgbm8gZGFuZ2Vy IG9mIGFueXRoaW5nIGZpbGxpbmcgdXAsCi0JCSAqIGFzICJTZXR0aW5nIGFuIGV2ZW50IHRo YXQgaXMgYWxyZWFkeSBzZXQgaGFzIG5vIGVmZmVjdC4iLgorCQkgKiBpbnRlcnJ1cHQgd2hl biBibG9ja2luZywgYnV0IHRoZXJlJ3Mgbm8gZGFuZ2VyIG9mIGFueXRoaW5nIGZpbGxpbmcK KwkJICogdXAsIGFzICJTZXR0aW5nIGFuIGV2ZW50IHRoYXQgaXMgYWxyZWFkeSBzZXQgaGFz IG5vIGVmZmVjdC4iLgogCQkgKgotCQkgKiBOb3RlOiB3ZSBhc3N1bWUgdGhhdCB0aGUga2Vy bmVsIGNhbGxzIGludm9sdmVkIGluIGxhdGNoIG1hbmFnZW1lbnQKLQkJICogd2lsbCBwcm92 aWRlIGFkZXF1YXRlIHN5bmNocm9uaXphdGlvbiBvbiBtYWNoaW5lcyB3aXRoIHdlYWsgbWVt b3J5Ci0JCSAqIG9yZGVyaW5nLCBzbyB0aGF0IHdlIGNhbm5vdCBtaXNzIHNlZWluZyBpc19z ZXQgaWYgYSBub3RpZmljYXRpb24KLQkJICogaGFzIGFscmVhZHkgYmVlbiBxdWV1ZWQuCisJ CSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMgaW52b2x2ZWQgaW4g aW50ZXJydXB0CisJCSAqIG1hbmFnZW1lbnQgd2lsbCBwcm92aWRlIGFkZXF1YXRlIHN5bmNo cm9uaXphdGlvbiBvbiBtYWNoaW5lcyB3aXRoCisJCSAqIHdlYWsgbWVtb3J5IG9yZGVyaW5n LCBzbyB0aGF0IHdlIGNhbm5vdCBtaXNzIHNlZWluZyBpc19zZXQgaWYgYQorCQkgKiBub3Rp ZmljYXRpb24gaGFzIGFscmVhZHkgYmVlbiBxdWV1ZWQuCiAJCSAqLwotCQlpZiAoc2V0LT5s YXRjaCAmJiAhc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFz ayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBz ZXQtPmludGVycnVwdF9tYXNrKSA9PSAwKQogCQl7Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBv biBhIGxhdGNoICovCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRydWU7CisJ CQkvKiBhYm91dCB0byBzbGVlcCB3YWl0X2luZyBmb3IgaW50ZXJydXB0cyAqLworCQkJcGdf YXRvbWljX3dyaXRlX3UzMihNeU1heWJlU2xlZXBpbmdPbkludGVycnVwdHMsIHNldC0+aW50 ZXJydXB0X21hc2spOwogCQkJcGdfbWVtb3J5X2JhcnJpZXIoKTsKIAkJCS8qIGFuZCByZWNo ZWNrICovCiAJCX0KIAotCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5pc19zZXQp CisJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3Uz MihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJ CXsKIAkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJb2Nj dXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQtPmxhdGNoX3BvczsKKwkJCW9jY3VycmVkX2V2ZW50 cy0+cG9zID0gc2V0LT5pbnRlcnJ1cHRfcG9zOwogCQkJb2NjdXJyZWRfZXZlbnRzLT51c2Vy X2RhdGEgPQotCQkJCXNldC0+ZXZlbnRzW3NldC0+bGF0Y2hfcG9zXS51c2VyX2RhdGE7Ci0J CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NFVDsKKwkJCQlzZXQtPmV2 ZW50c1tzZXQtPmludGVycnVwdF9wb3NdLnVzZXJfZGF0YTsKKwkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQly ZXR1cm5lZF9ldmVudHMrKzsKIAogCQkJLyogY291bGQgaGF2ZSBiZWVuIHNldCBhYm92ZSAq LwotCQkJc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKKwkJCXBnX2F0b21p Y193cml0ZV91MzIoTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzLCAwKTsKIAogCQkJYnJl YWs7CiAJCX0KQEAgLTE1MTYsMTAgKzEzNDksMTAgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0 RXZlbnRTZXQgKnNldCwgbG9uZyB0aW1lb3V0LAogCQlyYyA9IFdhaXRFdmVudFNldFdhaXRC bG9jayhzZXQsIGN1cl90aW1lb3V0LAogCQkJCQkJCQkgICBvY2N1cnJlZF9ldmVudHMsIG5l dmVudHMpOwogCi0JCWlmIChzZXQtPmxhdGNoKQorCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFz ayAhPSAwKQogCQl7Ci0JCQlBc3NlcnQoc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcpOwot CQkJc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKKwkJCUFzc2VydChwZ19h dG9taWNfcmVhZF91MzIoTXlNYXliZVNsZWVwaW5nT25JbnRlcnJ1cHRzKSA9PSBzZXQtPmlu dGVycnVwdF9tYXNrKTsKKwkJCXBnX2F0b21pY193cml0ZV91MzIoTXlNYXliZVNsZWVwaW5n T25JbnRlcnJ1cHRzLCAwKTsKIAkJfQogCiAJCWlmIChyYyA9PSAtMSkKQEAgLTE2MDcsMTYg KzE0NDAsMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBp bnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2 ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlp ZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJCWlmIChjdXJfZXZl bnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCWN1cl9lcG9sbF9ldmVudC0+ZXZl bnRzICYgKEVQT0xMSU4gfCBFUE9MTEVSUiB8IEVQT0xMSFVQKSkKIAkJewogCQkJLyogRHJh aW4gdGhlIHNpZ25hbGZkLiAqLwogCQkJZHJhaW4oKTsKIAotCQkJaWYgKHNldC0+bGF0Y2gg JiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0g MCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0LT5p bnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0g UEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xB VENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsK IAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJCX0K QEAgLTE3NjksMTMgKzE2MDIsMTMgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVu dFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9k YXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRz ID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJ CWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCWN1cl9rcXVl dWVfZXZlbnQtPmZpbHRlciA9PSBFVkZJTFRfU0lHTkFMKQogCQl7Ci0JCQlpZiAoc2V0LT5s YXRjaCAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFz ayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBz ZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0g V0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJS VVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwog CQkJfQpAQCAtMTg5MSwxNiArMTcyNCwxNiBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2Fp dEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJb2NjdXJyZWRfZXZlbnRzLT51 c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsKIAkJb2NjdXJyZWRfZXZlbnRzLT5l dmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQg JiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCAmJgogCQkJKGN1 cl9wb2xsZmQtPnJldmVudHMgJiAoUE9MTElOIHwgUE9MTEhVUCB8IFBPTExFUlIgfCBQT0xM TlZBTCkpKQogCQl7CiAJCQkvKiBUaGVyZSdzIGRhdGEgaW4gdGhlIHNlbGYtcGlwZSwgY2xl YXIgaXQuICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxh dGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19h dG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9t YXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURf U09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOwor CQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3Vy cmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTk5OSw2 ICsxODMyLDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwg aW50IGN1cl90aW1lb3V0LAogCQkJY3VyX2V2ZW50LT5yZXNldCA9IGZhbHNlOwogCQl9CiAK KwkJLyoKKwkJICogV2UgbmVlZCB0byB1c2UgZGlmZmVyZW50IGV2ZW50IG9iamVjdCBkZXBl bmRpbmcgb24gd2hldGhlciAibG9jYWwiCisJCSAqIG9yICJzaGFyZWQgbWVtb3J5IiBpbnRl cnJ1cHRzIGFyZSBpbiB1c2UuIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8KKwkJICogYWRqdXN0 IGFsbCBleGlzdGluZyBXYWl0RXZlbnRTZXQgd2hlbiB5b3Ugc3dpdGNoIGZyb20gbG9jYWwg dG8KKwkJICogc2hhcmVkIG9yIGJhY2ssIHNvIHdlIHJlZnJlc2ggaXQgb24gZXZlcnkgY2Fs bC4KKwkJICovCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKKwkJ CVdhaXRFdmVudEFkanVzdFdpbjMyKHNldCwgY3VyX2V2ZW50KTsKKwogCQkvKgogCQkgKiBX ZSBhc3NvY2lhdGUgdGhlIHNvY2tldCB3aXRoIGEgbmV3IGV2ZW50IGhhbmRsZSBmb3IgZWFj aAogCQkgKiBXYWl0RXZlbnRTZXQuICBGRF9DTE9TRSBpcyBvbmx5IGdlbmVyYXRlZCBvbmNl IGlmIHRoZSBvdGhlciBlbmQKQEAgLTIxMDQsMTkgKzE5NDYsMTUgQEAgV2FpdEV2ZW50U2V0 V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3Vy cmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3Vy cmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0g V0xfTEFUQ0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBU KQogCQl7Ci0JCQkvKgotCQkJICogV2UgY2Fubm90IHVzZSBzZXQtPmxhdGNoLT5ldmVudCB0 byByZXNldCB0aGUgZmlyZWQgZXZlbnQgaWYgd2UKLQkJCSAqIGFyZW4ndCB3YWl0aW5nIG9u IHRoaXMgbGF0Y2ggbm93LgotCQkJICovCiAJCQlpZiAoIVJlc2V0RXZlbnQoc2V0LT5oYW5k bGVzW2N1cl9ldmVudC0+cG9zICsgMV0pKQogCQkJCWVsb2coRVJST1IsICJSZXNldEV2ZW50 IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7CiAKLQkJCWlmIChz ZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVycnVw dF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRz KSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZl bnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVu dHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9J TlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRz Kys7CiAJCQl9CkBAIC0yMTYxLDcgKzE5OTksNyBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2so V2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAogCQkJCS8qLS0tLS0tCiAJ CQkJICogV2FpdEZvck11bHRpcGxlT2JqZWN0cyBkb2Vzbid0IGd1YXJhbnRlZSB0aGF0IGEg cmVhZCBldmVudAotCQkJCSAqIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGxhdGNoIGlzIHNl dCBhdCB0aGUgc2FtZSB0aW1lLiAgRXZlbgorCQkJCSAqIHdpbGwgYmUgcmV0dXJuZWQgaWYg dGhlIGludGVycnVwdCBpcyBzZXQgYXQgdGhlIHNhbWUgdGltZS4gIEV2ZW4KIAkJCQkgKiBp ZiBpdCBkaWQsIHRoZSBjYWxsZXIgbWlnaHQgZHJvcCB0aGF0IGV2ZW50IGV4cGVjdGluZyBp dCB0bwogCQkJCSAqIHJlb2NjdXIgb24gbmV4dCBjYWxsLiAgU28sIHdlIG11c3QgZm9yY2Ug dGhlIGV2ZW50IHRvIGJlCiAJCQkJICogcmVzZXQgaWYgdGhpcyBXYWl0RXZlbnRTZXQgaXMg dXNlZCBhZ2FpbiBpbiBvcmRlciB0byBhdm9pZApAQCAtMjI2Nyw5ICsyMTA1LDggQEAgR2V0 TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpCiAjaWYgZGVmaW5l ZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAKIC8qCi0gKiBTZXRMYXRjaCB1c2VzIFNJR1VSRyB0 byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcgb24gdGhlIGxhdGNoLgotICoKLSAqIFdh a2UgdXAgV2FpdExhdGNoLCBpZiB3ZSdyZSB3YWl0aW5nLgorICogV2FrZXVwT3RoZXJQcm9j IGFuZCBXYWt1cE15UHJvYyB1c2UgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2Fp dGluZworICogb24gdGhlIGxhdGNoLgogICovCiBzdGF0aWMgdm9pZAogbGF0Y2hfc2lndXJn X2hhbmRsZXIoU0lHTkFMX0FSR1MpCkBAIC0yMjc4LDcgKzIxMTUsNyBAQCBsYXRjaF9zaWd1 cmdfaGFuZGxlcihTSUdOQUxfQVJHUykKIAkJc2VuZFNlbGZQaXBlQnl0ZSgpOwogfQogCi0v KiBTZW5kIG9uZSBieXRlIHRvIHRoZSBzZWxmLXBpcGUsIHRvIHdha2UgdXAgV2FpdExhdGNo ICovCisvKiBTZW5kIG9uZSBieXRlIHRvIHRoZSBzZWxmLXBpcGUsIHRvIHdha2UgdXAgV2Fp dEludGVycnVwdCAqLwogc3RhdGljIHZvaWQKIHNlbmRTZWxmUGlwZUJ5dGUodm9pZCkKIHsK QEAgLTIyOTUsNyArMjEzMiw3IEBAIHJldHJ5OgogCiAJCS8qCiAJCSAqIElmIHRoZSBwaXBl IGlzIGZ1bGwsIHdlIGRvbid0IG5lZWQgdG8gcmV0cnksIHRoZSBkYXRhIHRoYXQncyB0aGVy ZQotCQkgKiBhbHJlYWR5IGlzIGVub3VnaCB0byB3YWtlIHVwIFdhaXRMYXRjaC4KKwkJICog YWxyZWFkeSBpcyBlbm91Z2ggdG8gd2FrZSB1cCBXYWl0SW50ZXJydXB0LgogCQkgKi8KIAkJ aWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykKIAkJCXJldHVy bjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFy aWFibGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUu YwppbmRleCAxMTJhNTE4YmFlLi5kNWZhYmVmMTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCkBAIC0yNjgsNyArMjY4LDcgQEAg Q29uZGl0aW9uVmFyaWFibGVTaWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCiAJLyog SWYgd2UgZm91bmQgc29tZW9uZSBzbGVlcGluZywgc2V0IHRoZWlyIGxhdGNoIHRvIHdha2Ug dGhlbSB1cC4gKi8KIAlpZiAocHJvYyAhPSBOVUxMKQotCQlTZXRMYXRjaCgmcHJvYy0+cHJv Y0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdl dE51bWJlckZyb21QR1Byb2MocHJvYykpOwogfQogCiAvKgpAQCAtMzMxLDcgKzMzMSw3IEBA IENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KENvbmRpdGlvblZhcmlhYmxlICpjdikKIAog CS8qIEF3YWtlbiBmaXJzdCB3YWl0ZXIsIGlmIHRoZXJlIHdhcyBvbmUuICovCiAJaWYgKHBy b2MgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHBy b2MpKTsKIAogCXdoaWxlIChoYXZlX3NlbnRpbmVsKQogCXsKQEAgLTM1NSw2ICszNTUsNiBA QCBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJ CVNwaW5Mb2NrUmVsZWFzZSgmY3YtPm11dGV4KTsKIAogCQlpZiAocHJvYyAhPSBOVUxMICYm IHByb2MgIT0gTXlQcm9jKQotCQkJU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBH UHJvYyhwcm9jKSk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNTZj NjA3MDRmNS4uMGMxYjIzOGUwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC00 Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpAQCAtMjI0LDggKzIyNSwyMiBAQCBJbml0UHJvY0ds b2JhbCh2b2lkKQogCQkgKi8KIAkJaWYgKGkgPCBNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElB UllfUFJPQ1MpCiAJCXsKKyNpZmRlZiBXSU4zMgorCQkJU0VDVVJJVFlfQVRUUklCVVRFUyBz YTsKKworCQkJLyoKKwkJCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNp ZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQorCQkJICogaW5oZXJpdGVkLgorCQkJICovCisJCQla ZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7CisJCQlzYS5uTGVuZ3RoID0gc2l6ZW9mKHNh KTsKKwkJCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsKKworCQkJcHJvYy0+aW50ZXJydXB0 V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVudCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKwkJ CWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQkJCWVsb2coRVJS T1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9y KCkpOworI2VuZGlmCiAJCQlwcm9jLT5zZW0gPSBQR1NlbWFwaG9yZUNyZWF0ZSgpOwotCQkJ SW5pdFNoYXJlZExhdGNoKCYocHJvYy0+cHJvY0xhdGNoKSk7CiAJCQlMV0xvY2tJbml0aWFs aXplKCYocHJvYy0+ZnBJbmZvTG9jayksIExXVFJBTkNIRV9MT0NLX0ZBU1RQQVRIKTsKIAkJ fQogCkBAIC00MzcsMTMgKzQ1Miw4IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5j bG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlBc3NlcnQocGdfYXRv bWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91cE5leHQpID09IElOVkFMSURfUFJPQ19O VU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9DJ3Mg bGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRoYXQg YWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZhcgot CSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUuCi0J ICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJlZExh dGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBwcm9j ZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0aGF0 IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9yeSAq LwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZlbnRf aW5mbyk7CkBAIC02MDQsMTMgKzYxNCw4IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQp CiAJfQogI2VuZGlmCiAKLQkvKgotCSAqIEFjcXVpcmUgb3duZXJzaGlwIG9mIHRoZSBQR1BS T0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRMYXRjaAotCSAqIG9uIGl0LiAg VGhhdCBhbGxvd3MgdXMgdG8gcmVwb2ludCB0aGUgcHJvY2VzcyBsYXRjaCwgd2hpY2ggc28g ZmFyCi0JICogcG9pbnRzIHRvIHByb2Nlc3MgbG9jYWwgb25lLCB0byB0aGUgc2hhcmVkIG9u ZS4KLQkgKi8KLQlPd25MYXRjaCgmTXlQcm9jLT5wcm9jTGF0Y2gpOwotCVN3aXRjaFRvU2hh cmVkTGF0Y2goKTsKKwkvKiBTdGFydCBhY2NlcHRpbmcgaW50ZXJydXB0cyBmcm9tIG90aGVy IHByb2Nlc3NlcyAqLworCVN3aXRjaFRvU2hhcmVkSW50ZXJydXB0cygpOwogCiAJLyogbm93 IHRoYXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3YWl0IGV2ZW50cyB0byBzaGFyZWQgbWVt b3J5ICovCiAJcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UoJk15UHJvYy0+d2FpdF9l dmVudF9pbmZvKTsKQEAgLTkwNCwyMSArOTA5LDIwIEBAIFByb2NLaWxsKGludCBjb2RlLCBE YXR1bSBhcmcpCiAJfQogCiAJLyoKLQkgKiBSZXNldCBNeUxhdGNoIHRvIHRoZSBwcm9jZXNz IGxvY2FsIG9uZS4gIFRoaXMgaXMgc28gdGhhdCBzaWduYWwKLQkgKiBoYW5kbGVycyBldCBh bCBjYW4gY29udGludWUgdXNpbmcgdGhlIGxhdGNoIGFmdGVyIHRoZSBzaGFyZWQgbGF0Y2gK LQkgKiBpc24ndCBvdXJzIGFueW1vcmUuCisJICogUmVzZXQgaW50ZXJydXB0IHZlY3RvciB0 byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUuICBUaGlzIGlzIHNvIHRoYXQKKwkgKiBzaWduYWwg aGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRpbnVlIHVzaW5nIGludGVycnVwdHMgYWZ0ZXIgdGhl IFBHUFJPQworCSAqIGVudHJ5IGlzbid0IG91cnMgYW55bW9yZS4KIAkgKgogCSAqIFNpbWls YXJseSwgc3RvcCByZXBvcnRpbmcgd2FpdCBldmVudHMgdG8gTXlQcm9jLT53YWl0X2V2ZW50 X2luZm8uCiAJICoKLQkgKiBBZnRlciB0aGF0IGNsZWFyIE15UHJvYyBhbmQgZGlzb3duIHRo ZSBzaGFyZWQgbGF0Y2guCisJICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2MuCiAJICovCi0J U3dpdGNoQmFja1RvTG9jYWxMYXRjaCgpOworCVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKCk7 CiAJcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJcHJvYyA9IE15UHJv YzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1C RVI7Ci0JRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAkvKiBNYXJrIHRoZSBw cm9jIG5vIGxvbmdlciBpbiB1c2UgKi8KIAlwcm9jLT5waWQgPSAwOwpAQCAtOTkzLDEzICs5 OTcsMTIgQEAgQXV4aWxpYXJ5UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlDb25k aXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CiAKIAkvKiBsb29rIGF0IHRoZSBlcXVpdmFs ZW50IFByb2NLaWxsKCkgY29kZSBmb3IgY29tbWVudHMgKi8KLQlTd2l0Y2hCYWNrVG9Mb2Nh bExhdGNoKCk7CisJU3dpdGNoVG9Mb2NhbEludGVycnVwdHMoKTsKIAlwZ3N0YXRfcmVzZXRf d2FpdF9ldmVudF9zdG9yYWdlKCk7CiAKIAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5V TEw7CiAJTXlQcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKLQlEaXNvd25MYXRj aCgmcHJvYy0+cHJvY0xhdGNoKTsKIAogCVNwaW5Mb2NrQWNxdWlyZShQcm9jU3RydWN0TG9j ayk7CiAKQEAgLTEzMDEsMTggKzEzMDQsMTggQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9j YWxsb2NrLCBMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwgYm9vbCBkb250V2FpdCkKIAl9 CiAKIAkvKgotCSAqIElmIHNvbWVib2R5IHdha2VzIHVzIGJldHdlZW4gTFdMb2NrUmVsZWFz ZSBhbmQgV2FpdExhdGNoLCB0aGUgbGF0Y2gKLQkgKiB3aWxsIG5vdCB3YWl0LiBCdXQgYSBz ZXQgbGF0Y2ggZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IHRoZSBsb2NrCi0JICog aXMgZnJlZSBub3csIGFzIHRoZXJlIGFyZSBtYW55IG90aGVyIHNvdXJjZXMgZm9yIGxhdGNo IHNldHMgdGhhbgotCSAqIHNvbWVib2R5IHJlbGVhc2luZyB0aGUgbG9jay4KKwkgKiBJZiBz b21lYm9keSB3YWtlcyB1cyBiZXR3ZWVuIExXTG9ja1JlbGVhc2UgYW5kIFdhaXRJbnRlcnJ1 cHQsCisJICogV2FpdEludGVycnVwdCB3aWxsIG5vdCB3YWl0LiBCdXQgYW4gaW50ZXJydXB0 IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4KKwkgKiB0aGF0IHRoZSBsb2NrIGlzIGZyZWUg bm93LCBhcyB0aGVyZSBhcmUgbWFueSBvdGhlciBzb3VyY2VzIGZvciB0aGUKKwkgKiBpbnRl cnJ1cHQgdGhhbiBzb21lYm9keSByZWxlYXNpbmcgdGhlIGxvY2suCiAJICoKLQkgKiBXZSBw cm9jZXNzIGludGVycnVwdHMgd2hlbmV2ZXIgdGhlIGxhdGNoIGhhcyBiZWVuIHNldCwgc28g Y2FuY2VsL2RpZQotCSAqIGludGVycnVwdHMgYXJlIHByb2Nlc3NlZCBxdWlja2x5LiBUaGlz IG1lYW5zIHdlIG11c3Qgbm90IG1pbmQgbG9zaW5nCi0JICogY29udHJvbCB0byBhIGNhbmNl bC9kaWUgaW50ZXJydXB0IGhlcmUuICBXZSBkb24ndCwgYmVjYXVzZSB3ZSBoYXZlIG5vCi0J ICogc2hhcmVkLXN0YXRlLWNoYW5nZSB3b3JrIHRvIGRvIGFmdGVyIGJlaW5nIGdyYW50ZWQg dGhlIGxvY2sgKHRoZQotCSAqIGdyYW50b3IgZGlkIGl0IGFsbCkuICBXZSBkbyBoYXZlIHRv IHdvcnJ5IGFib3V0IGNhbmNlbGluZyB0aGUgZGVhZGxvY2sKLQkgKiB0aW1lb3V0IGFuZCB1 cGRhdGluZyB0aGUgbG9jYWxsb2NrIHRhYmxlLCBidXQgaWYgd2UgbG9zZSBjb250cm9sIHRv IGFuCi0JICogZXJyb3IsIExvY2tFcnJvckNsZWFudXAgd2lsbCBmaXggdGhhdCB1cC4KKwkg KiBXZSBwcm9jZXNzIGludGVycnVwdHMgd2hlbmV2ZXIgdGhlIGludGVycnVwdCBoYXMgYmVl biBzZXQsIHNvCisJICogY2FuY2VsL2RpZSBpbnRlcnJ1cHRzIGFyZSBwcm9jZXNzZWQgcXVp Y2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdAorCSAqIG1pbmQgbG9zaW5nIGNvbnRyb2wg dG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAgV2UgZG9uJ3QsIGJlY2F1c2UKKwkg KiB3ZSBoYXZlIG5vIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ugd29yayB0byBkbyBhZnRlciBiZWlu ZyBncmFudGVkIHRoZSBsb2NrCisJICogKHRoZSBncmFudG9yIGRpZCBpdCBhbGwpLiAgV2Ug ZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcgdGhlCisJICogZGVhZGxvY2sgdGlt ZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0YWJsZSwgYnV0IGlmIHdlIGxvc2UK KwkgKiBjb250cm9sIHRvIGFuIGVycm9yLCBMb2NrRXJyb3JDbGVhbnVwIHdpbGwgZml4IHRo YXQgdXAuCiAJICovCiAJZG8KIAl7CkBAIC0xMzU4LDkgKzEzNjEsOSBAQCBQcm9jU2xlZXAo TE9DQUxMT0NLICpsb2NhbGxvY2ssIExvY2tNZXRob2QgbG9ja01ldGhvZFRhYmxlLCBib29s IGRvbnRXYWl0KQogCQl9CiAJCWVsc2UKIAkJewotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSBQ R19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5sb2NrLmxvY2t0YWdfdHlwZSk7Ci0JCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsIDAsCisJCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5sb2NrLmxv Y2t0YWdfdHlwZSk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVApOwogCQkJLyogY2hlY2sgZm9yIGRlYWRsb2NrcyBmaXJzdCwgYXMgdGhhdCdzIHByb2Jh Ymx5IGxvZy13b3J0aHkgKi8KIAkJCWlmIChnb3RfZGVhZGxvY2tfdGltZW91dCkKIAkJCXsK QEAgLTE2NjksNyArMTY3Miw3IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywg TG9ja01ldGhvZCBsb2NrTWV0aG9kVGFibGUsIGJvb2wgZG9udFdhaXQpCiAKIAogLyoKLSAq IFByb2NXYWtldXAgLS0gd2FrZSB1cCBhIHByb2Nlc3MgYnkgc2V0dGluZyBpdHMgbGF0Y2gu CisgKiBQcm9jV2FrZXVwIC0tIHdha2UgdXAgYSBwcm9jZXNzIGJ5IHNlbmRpbmcgaXQgYW4g aW50ZXJydXB0LgogICoKICAqCSBBbHNvIHJlbW92ZSB0aGUgcHJvY2VzcyBmcm9tIHRoZSB3 YWl0IHF1ZXVlIGFuZCBzZXQgaXRzIGxpbmtzIGludmFsaWQuCiAgKgpAQCAtMTY5OCw3ICsx NzAxLDcgQEAgUHJvY1dha2V1cChQR1BST0MgKnByb2MsIFByb2NXYWl0U3RhdHVzIHdhaXRT dGF0dXMpCiAJcGdfYXRvbWljX3dyaXRlX3U2NCgmTXlQcm9jLT53YWl0U3RhcnQsIDApOwog CiAJLyogQW5kIGF3YWtlbiBpdCAqLwotCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwor CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBHZXROdW1iZXJGcm9t UEdQcm9jKHByb2MpKTsKIH0KIAogLyoKQEAgLTE4NTAsMzUgKzE4NTMsMzcgQEAgQ2hlY2tE ZWFkTG9ja0FsZXJ0KHZvaWQpCiAJZ290X2RlYWRsb2NrX3RpbWVvdXQgPSB0cnVlOwogCiAJ LyoKLQkgKiBIYXZlIHRvIHNldCB0aGUgbGF0Y2ggYWdhaW4sIGV2ZW4gaWYgaGFuZGxlX3Np Z19hbGFybSBhbHJlYWR5IGRpZC4gQmFjawotCSAqIHRoZW4gZ290X2RlYWRsb2NrX3RpbWVv dXQgd2Fzbid0IHlldCBzZXQuLi4gSXQncyB1bmxpa2VseSB0aGF0IHRoaXMKLQkgKiBldmVy IHdvdWxkIGJlIGEgcHJvYmxlbSwgYnV0IHNldHRpbmcgYSBzZXQgbGF0Y2ggYWdhaW4gaXMg Y2hlYXAuCisJICogSGF2ZSB0byByYWlzZSB0aGUgaW50ZXJydXB0IGFnYWluLCBldmVuIGlm IGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeQorCSAqIGRpZC4gQmFjayB0aGVuIGdvdF9kZWFk bG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5saWtlbHkKKwkgKiB0aGF0 IHRoaXMgZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCByYWlzaW5nIGFuIGludGVycnVw dCBhZ2FpbiBpcworCSAqIGNoZWFwLgogCSAqCiAJICogTm90ZSB0aGF0LCB3aGVuIHRoaXMg ZnVuY3Rpb24gcnVucyBpbnNpZGUgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoKSwKLQkg KiB0aGUgaGFuZGxlciBmdW5jdGlvbiBzZXRzIHRoZSBsYXRjaCBhZ2FpbiBhZnRlciB0aGUg bGF0Y2ggaXMgc2V0IGhlcmUuCisJICogdGhlIGhhbmRsZXIgZnVuY3Rpb24gcmFpc2VzIHRo ZSBpbnRlcnJ1cHQgYWdhaW4gYWZ0ZXIgdGhlIGludGVycnVwdCBpcworCSAqIHJhaXNlZCBo ZXJlLgogCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJZXJybm8gPSBzYXZlX2Vycm5vOwogfQogCiAvKgog ICogUHJvY1dhaXRGb3JTaWduYWwgLSB3YWl0IGZvciBhIHNpZ25hbCBmcm9tIGFub3RoZXIg YmFja2VuZC4KICAqCi0gKiBBcyB0aGlzIHVzZXMgdGhlIGdlbmVyaWMgcHJvY2VzcyBsYXRj aCB0aGUgY2FsbGVyIGhhcyB0byBiZSByb2J1c3QgYWdhaW5zdAorICogQXMgdGhpcyB1c2Vz IHRoZSBnZW5lcmljIHByb2Nlc3MgaW50ZXJ1cnB0IHRoZSBjYWxsZXIgaGFzIHRvIGJlIHJv YnVzdCBhZ2FpbnN0CiAgKiB1bnJlbGF0ZWQgd2FrZXVwczogQWx3YXlzIGNoZWNrIHRoYXQg dGhlIGRlc2lyZWQgc3RhdGUgaGFzIG9jY3VycmVkLCBhbmQKICAqIHdhaXQgYWdhaW4gaWYg bm90LgogICovCiB2b2lkCiBQcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVudF9p bmZvKQogewotCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJIHdhaXRfZXZlbnRfaW5mbyk7Ci0JUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwK KwkJCQkJCSB3YWl0X2V2ZW50X2luZm8pOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCk7CiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIH0KIAogLyoKLSAq IFByb2NTZW5kU2lnbmFsIC0gc2V0IHRoZSBsYXRjaCBvZiBhIGJhY2tlbmQgaWRlbnRpZmll ZCBieSBQcm9jTnVtYmVyCisgKiBQcm9jU2VuZFNpZ25hbCAtIHNlbmQgdGhlIGludGVycnVw dCBvZiBhIGJhY2tlbmQgaWRlbnRpZmllZCBieSBQcm9jTnVtYmVyCiAgKi8KIHZvaWQKIFBy b2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051bWJlcikKQEAgLTE4ODYsNyArMTg5MSw3 IEBAIFByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051bWJlcikKIAlpZiAocHJvY051 bWJlciA8IDAgfHwgcHJvY051bWJlciA+PSBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQpCiAJ CWVsb2coRVJST1IsICJwcm9jTnVtYmVyIG91dCBvZiByYW5nZSIpOwogCi0JU2V0TGF0Y2go JlByb2NHbG9iYWwtPmFsbFByb2NzW3Byb2NOdW1iZXJdLnByb2NMYXRjaCk7CisJU2VuZElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIHByb2NOdW1iZXIpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKaW5kZXggYWI3MTM3ZDBmZi4uY2Q1ZDE0MzZh YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCkBAIC02MTEsOCArNjExLDggQEAgUmVn aXN0ZXJTeW5jUmVxdWVzdChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUg dHlwZSwKIAkJaWYgKHJldCB8fCAoIXJldCAmJiAhcmV0cnlPbkVycm9yKSkKIAkJCWJyZWFr OwogCi0JCVdhaXRMYXRjaChOVUxMLCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9V VCwgMTAsCi0JCQkJICBXQUlUX0VWRU5UX1JFR0lTVEVSX1NZTkNfUkVRVUVTVCk7CisJCVdh aXRJbnRlcnJ1cHQoMCwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsIDEwLAor CQkJCQkgIFdBSVRfRVZFTlRfUkVHSVNURVJfU1lOQ19SRVFVRVNUKTsKIAl9CiAKIAlyZXR1 cm4gcmV0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAwM2E1NDQ1MWFjLi5j YjUzNDNkMjhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtNTIsMTUgKzUy LDYgQEAgYm9vbAkJTXlDYW5jZWxLZXlWYWxpZCA9IGZhbHNlOwogaW50MzIJCU15Q2FuY2Vs S2V5ID0gMDsKIGludAkJCU15UE1DaGlsZFNsb3Q7CiAKLS8qCi0gKiBNeUxhdGNoIHBvaW50 cyB0byB0aGUgbGF0Y2ggdGhhdCBzaG91bGQgYmUgdXNlZCBmb3Igc2lnbmFsIGhhbmRsaW5n IGJ5IHRoZQotICogY3VycmVudCBwcm9jZXNzLiBJdCB3aWxsIGVpdGhlciBwb2ludCB0byBh IHByb2Nlc3MgbG9jYWwgbGF0Y2ggaWYgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MgZG9lcyBu b3QgaGF2ZSBhIFBHUFJPQyBlbnRyeSBpbiB0aGF0IG1vbWVudCwgb3IgdG8KLSAqIFBHUFJP Qy0+cHJvY0xhdGNoIGlmIGl0IGhhcy4gVGh1cyBpdCBjYW4gYWx3YXlzIGJlIHVzZWQgaW4g c2lnbmFsIGhhbmRsZXJzLAotICogd2l0aG91dCBjaGVja2luZyBmb3IgaXRzIGV4aXN0ZW5j ZS4KLSAqLwotc3RydWN0IExhdGNoICpNeUxhdGNoOwotCiAvKgogICogRGF0YURpciBpcyB0 aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIGxldmVsIG9mIHRoZSBQR0RBVEEgZGlyZWN0 b3J5IHRyZWUuCiAgKiBFeGNlcHQgZHVyaW5nIGVhcmx5IHN0YXJ0dXAsIHRoaXMgaXMgYWxz byB0aGUgc2VydmVyJ3Mgd29ya2luZyBkaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21p c2Npbml0LmMKaW5kZXggNTM3ZDkyYzBjZi4uN2UwZjBhODdmMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2luaXQvbWlzY2luaXQuYwpAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1z aWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTY1LDggKzY1LDYgQEAg QmFja2VuZFR5cGUgTXlCYWNrZW5kVHlwZTsKIC8qIExpc3Qgb2YgbG9jayBmaWxlcyB0byBi ZSByZW1vdmVkIGF0IHByb2MgZXhpdCAqLwogc3RhdGljIExpc3QgKmxvY2tfZmlsZXMgPSBO SUw7CiAKLXN0YXRpYyBMYXRjaCBMb2NhbExhdGNoRGF0YTsKLQogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICoJCWlnbm9yaW5nIHN5c3RlbSBpbmRleGVzIHN1cHBvcnQgc3R1ZmYKICAqCkBAIC0xMzMs OSArMTMxLDggQEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogI2VuZGlmCiAKIAkvKiBJ bml0aWFsaXplIHByb2Nlc3MtbG9jYWwgbGF0Y2ggc3VwcG9ydCAqLwotCUluaXRpYWxpemVM YXRjaFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXpl TGF0Y2hXYWl0U2V0KCk7CisJSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKKwlJbml0 aWFsaXplSW50ZXJydXB0V2FpdFNldCgpOwogCiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgbWFr ZSB0aGlzIHByb2Nlc3MgYSBncm91cCBsZWFkZXIsIHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIK QEAgLTE5NCw5ICsxOTEsOCBAQCBJbml0U3RhbmRhbG9uZVByb2Nlc3MoY29uc3QgY2hhciAq YXJndjApCiAJSW5pdFByb2Nlc3NHbG9iYWxzKCk7CiAKIAkvKiBJbml0aWFsaXplIHByb2Nl c3MtbG9jYWwgbGF0Y2ggc3VwcG9ydCAqLwotCUluaXRpYWxpemVMYXRjaFN1cHBvcnQoKTsK LQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFsaXplTGF0Y2hXYWl0U2V0KCk7 CisJSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0 V2FpdFNldCgpOwogCiAJLyoKIAkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBJbml0UG9zdG1h c3RlckNoaWxkLCBpbml0aWFsaXplIHNpZ25hbCBtYXNrIGhlcmUuCkBAIC0yMTcsNDggKzIx Myw2IEBAIEluaXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAkJZ2V0 X3BrZ2xpYl9wYXRoKG15X2V4ZWNfcGF0aCwgcGtnbGliX3BhdGgpOwogfQogCi12b2lkCi1T d2l0Y2hUb1NoYXJlZExhdGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggPT0gJkxvY2Fs TGF0Y2hEYXRhKTsKLQlBc3NlcnQoTXlQcm9jICE9IE5VTEwpOwotCi0JTXlMYXRjaCA9ICZN eVByb2MtPnByb2NMYXRjaDsKLQotCWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2 ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0J CQkJCQlNeUxhdGNoKTsKLQotCS8qCi0JICogU2V0IHRoZSBzaGFyZWQgbGF0Y2ggYXMgdGhl IGxvY2FsIG9uZSBtaWdodCBoYXZlIGJlZW4gc2V0LiBUaGlzCi0JICogc2hvdWxkbid0IG5v cm1hbGx5IGJlIG5lY2Vzc2FyeSBhcyBjb2RlIGlzIHN1cHBvc2VkIHRvIGNoZWNrIHRoZQot CSAqIGNvbmRpdGlvbiBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIGxhdGNoLCBidXQgYSBiaXQg Y2FyZSBjYW4ndCBodXJ0LgotCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lk Ci1Jbml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCkKLXsKLQlNeUxhdGNoID0gJkxvY2FsTGF0 Y2hEYXRhOwotCUluaXRMYXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotU3dpdGNoQmFja1Rv TG9jYWxMYXRjaCh2b2lkKQotewotCUFzc2VydChNeUxhdGNoICE9ICZMb2NhbExhdGNoRGF0 YSk7Ci0JQXNzZXJ0KE15UHJvYyAhPSBOVUxMICYmIE15TGF0Y2ggPT0gJk15UHJvYy0+cHJv Y0xhdGNoKTsKLQotCU15TGF0Y2ggPSAmTG9jYWxMYXRjaERhdGE7Ci0KLQlpZiAoRmVCZVdh aXRTZXQpCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRMYXRj aFBvcywgV0xfTEFUQ0hfU0VULAotCQkJCQkJTXlMYXRjaCk7Ci0KLQlTZXRMYXRjaChNeUxh dGNoKTsKLX0KLQogY29uc3QgY2hhciAqCiBHZXRCYWNrZW5kVHlwZURlc2MoQmFja2VuZFR5 cGUgYmFja2VuZFR5cGUpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFy YWxsZWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IDY5ZmZlNTQ5 OGYuLjdkYWVjN2VmODMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxl bC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC0xNCw2ICsxNCw4 IEBACiAjaWZuZGVmIFBBUkFMTEVMX0gKICNkZWZpbmUgUEFSQUxMRUxfSAogCisjaW5jbHVk ZSA8c2lnbmFsLmg+CisKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRl ICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0bHNuLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy93YWl0bHNuLmgKaW5kZXggODFmY2I5YzIzMi4uOTRlZjc4NzYxOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdGxzbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3dhaXRsc24uaApAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgImxpYi9w YWlyaW5naGVhcC5oIgogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAjaW5jbHVkZSAicG9ydC9h dG9taWNzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY251bWJlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUg InRjb3AvZGVzdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaCBi L3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKaW5kZXggMTQyYzk4NDYyZS4uZmU4OTEwMWJl NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAorKysgYi9zcmMvaW5j bHVkZS9saWJwcS9saWJwcS5oCkBAIC0xOCw3ICsxOCw3IEBACiAKICNpbmNsdWRlICJsaWIv c3RyaW5naW5mby5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWJlLmgiCi0jaW5jbHVkZSAi c3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAK IAogLyoKQEAgLTYxLDcgKzYxLDcgQEAgZXh0ZXJuIGNvbnN0IFBHRExMSU1QT1JUIFBRY29t bU1ldGhvZHMgKlBxQ29tbU1ldGhvZHM7CiBleHRlcm4gUEdETExJTVBPUlQgV2FpdEV2ZW50 U2V0ICpGZUJlV2FpdFNldDsKIAogI2RlZmluZSBGZUJlV2FpdFNldFNvY2tldFBvcyAwCi0j ZGVmaW5lIEZlQmVXYWl0U2V0TGF0Y2hQb3MgMQorI2RlZmluZSBGZUJlV2FpdFNldEludGVy cnVwdFBvcyAxCiAjZGVmaW5lIEZlQmVXYWl0U2V0TkV2ZW50cyAzCiAKIGV4dGVybiBpbnQJ TGlzdGVuU2VydmVyUG9ydChpbnQgZmFtaWx5LCBjb25zdCBjaGFyICpob3N0TmFtZSwKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2Fk bWluLmgKaW5kZXggMjUzNDhlNzFlYi4uOTc5N2Q2MDAzOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE5 MCw3ICsxOTAsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IE15UHJvY1BpZDsKIGV4dGVy biBQR0RMTElNUE9SVCBwZ190aW1lX3QgTXlTdGFydFRpbWU7CiBleHRlcm4gUEdETExJTVBP UlQgVGltZXN0YW1wVHogTXlTdGFydFRpbWVzdGFtcDsKIGV4dGVybiBQR0RMTElNUE9SVCBz dHJ1Y3QgUG9ydCAqTXlQcm9jUG9ydDsKLWV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgTGF0 Y2ggKk15TGF0Y2g7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBNeUNhbmNlbEtleVZhbGlk OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludDMyIE15Q2FuY2VsS2V5OwogZXh0ZXJuIFBHRExM SU1QT1JUIGludCBNeVBNQ2hpbGRTbG90OwpAQCAtMzE3LDkgKzMxNiw2IEBAIGV4dGVybiBQ R0RMTElNUE9SVCBjaGFyICpEYXRhYmFzZVBhdGg7CiAvKiBub3cgaW4gdXRpbHMvaW5pdC9t aXNjaW5pdC5jICovCiBleHRlcm4gdm9pZCBJbml0UG9zdG1hc3RlckNoaWxkKHZvaWQpOwog ZXh0ZXJuIHZvaWQgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNoYXIgKmFyZ3YwKTsK LWV4dGVybiB2b2lkIEluaXRQcm9jZXNzTG9jYWxMYXRjaCh2b2lkKTsKLWV4dGVybiB2b2lk IFN3aXRjaFRvU2hhcmVkTGF0Y2godm9pZCk7Ci1leHRlcm4gdm9pZCBTd2l0Y2hCYWNrVG9M b2NhbExhdGNoKHZvaWQpOwogCiAvKgogICogTXlCYWNrZW5kVHlwZSBpbmRpY2F0ZXMgd2hh dCBraW5kIG9mIGEgYmFja2VuZCB0aGlzIGlzLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWRjODUzMzlhOQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaW50ZXJydXB0LmgKQEAgLTAs MCArMSwxNTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGludGVycnVwdC5o CisgKgkgIEludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcy4KKyAqCisgKiAiSW50ZXJydXB0 cyIgYXJlIGEgc2V0IG9mIGZsYWdzIHRoYXQgcmVwcmVzZW50IGNvbmRpdGlvbnMgdGhhdCBz aG91bGQgYmUKKyAqIGhhbmRsZWQgYXQgYSBsYXRlciB0aW1lLiAgVGhleSBhcmUgcm91Z2hs eSBhbmFsb2dvdXMgdG8gVW5peCBzaWduYWxzLAorICogZXhjZXB0IHRoYXQgdGhleSBhcmUg aGFuZGxlZCBjb29wZXJhdGl2ZWx5IGJ5IGNoZWNraW5nIGZvciB0aGVtIGF0IG1hbnkKKyAq IHBvaW50cyBpbiB0aGUgY29kZS4KKyAqCisgKiBJbnRlcnJ1cHQgZmxhZ3MgY2FuIGJlICJy YWlzZWQiIHN5bmNocm9ub3VzbHkgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGRlZmVyCisgKiBh biBhY3Rpb24sIG9yIGFzeW5jaHJvbm91c2x5IGJ5IHRpbWVyIHNpZ25hbCBoYW5kbGVycywg b3RoZXIgc2lnbmFsCisgKiBoYW5kbGVycyBvciAic2VudCIgYnkgb3RoZXIgYmFja2VuZHMg c2V0dGluZyB0aGVtIGRpcmVjdGx5LgorICoKKyAqIE1vc3QgY29kZSBjdXJyZW50bHkgZGVh bHMgd2l0aCB0aGUgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQIGludGVycnVwdC4gSXQKKyAq IGlzIHJhaXNlZCBieSBhbnkgb2YgdGhlIGV2ZW50cyBjaGVja2VkIGJ5IENIRUNLX0ZPUl9J TlRFUlJVUFRTKSwgbGlrZSBxdWVyeQorICogY2FuY2VsbGF0aW9uIG9yIGlkbGUgc2Vzc2lv biB0aW1lb3V0LiBXZWxsIGJlaGF2ZWQgYmFja2VuZCBjb2RlIHBlcmZvcm1zCisgKiBDSEVD S19GT1JfSU5URVJSVVBUUygpIHBlcmlvZGljYWxseSBpbiBsb25nIGNvbXB1dGF0aW9ucywg YW5kIHNob3VsZCBuZXZlcgorICogc2xlZXAgdXNpbmcgbWVjaGFuaXNtcyBvdGhlciB0aGFu IHRoZSBXYWl0RXZlbnRTZXQgbWVjaGFuaXNtIG9yIHRoZSBtb3JlCisgKiBjb252ZW5pZW50 IFdhaXRJbnRlcnJ1cHQvV2FpdFNvY2tlck9ySW50ZXJydXB0IGZ1bmN0aW9ucyAoZXhjZXB0 IGZvcgorICogYm91bmRlZCBzaG9ydCBwZXJpb2RzLCBlZyBMV0xvY2sgd2FpdHMpLCBzbyB0 aGV5IHNob3VsZCByZWFjdCBpbiBnb29kIHRpbWUuCisgKgorICogVGhlICJzdGFuZGFyZCIg c2V0IG9mIGludGVycnVwdHMgaXMgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygp LCBhbmQKKyAqIGNvbnNpc3RzIG9mIHRhc2tzIHRoYXQgYXJlIHNhZmUgdG8gcGVyZm9ybSBh dCBtb3N0IHRpbWVzLiAgVGhleSBjYW4gYmUKKyAqIHN1cHByZXNzZWQgYnkgSE9MRF9JTlRF UlJVUFRTKCkvUkVTVU1FX0lOVEVSUlVQVFMoKS4KKyAqCisgKgorICogVGhlIGNvcnJlY3Qg cGF0dGVybiB0byB3YWl0IGZvciBldmVudChzKSB1c2luZyBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAgaXM6CisgKgorICogZm9yICg7OykKKyAqIHsKKyAqCSAgIENsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CisgKgkgICBpZiAod29yayB0byBkbykKKyAq CQkgICBEbyBTdHVmZigpOworICoJICAgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCwgLi4uKTsKKyAqIH0KKyAqCisgKiBJdCdzIGltcG9ydGFudCB0byBy ZXNldCB0aGUgbGF0Y2ggKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlcmUncyB3b3JrIHRvCisg KiBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGxhdGNoIGJldHdlZW4gdGhl IGNoZWNrIGFuZCB0aGUKKyAqIFJlc2V0TGF0Y2ggY2FsbCwgeW91IHdpbGwgbWlzcyBpdCBh bmQgV2FpdCB3aWxsIGluY29ycmVjdGx5IGJsb2NrLgorICoKKyAqIEFub3RoZXIgdmFsaWQg Y29kaW5nIHBhdHRlcm4gbG9va3MgbGlrZToKKyAqCisgKiBmb3IgKDs7KQorICogeworICoJ ICAgaWYgKHdvcmsgdG8gZG8pCisgKgkJICAgRG8gU3R1ZmYoKTsgLy8gaW4gcGFydGljdWxh ciwgZXhpdCBsb29wIGlmIHNvbWUgY29uZGl0aW9uIHNhdGlzZmllZAorICoJICAgV2FpdElu dGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgLi4uKTsKKyAqCSAgIENs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CisgKiB9CisgKgorICog VGhpcyBpcyB1c2VmdWwgdG8gcmVkdWNlIGludGVycnVwdCB0cmFmZmljIGlmIGl0J3MgZXhw ZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCisgKiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBv ZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbjsKKyAqIHRoZSBjb3N0 IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlz IG5vdC4KKyAqIFdoYXQgbXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBm b3IgYXN5bmNocm9ub3VzIGV2ZW50cyBhZnRlcgorICogV2FpdEludGVycnVwdCBhbmQgYmVm b3JlIENsZWFySW50ZXJydXB0LCBhcyB0aGF0IGNyZWF0ZXMgYSByYWNlIGNvbmRpdGlvbi4K KyAqCisgKiBUbyB3YWtlIHVwIHRoZSB3YWl0ZXIsIHlvdSBtdXN0IGZpcnN0IHNldCBhIGds b2JhbCBmbGFnIG9yIHNvbWV0aGluZyBlbHNlCisgKiB0aGF0IHRoZSB3YWl0IGxvb3AgdGVz dHMgaW4gdGhlICJpZiAod29yayB0byBkbykiIHBhcnQsIGFuZCBjYWxsCisgKiBTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VQKSAqYWZ0ZXIqIHRoYXQuIFNlbmRJbnRl cnJ1cHQgaXMKKyAqIGRlc2lnbmVkIHRvIHJldHVybiBxdWlja2x5IGlmIHRoZSBsYXRjaCBp cyBhbHJlYWR5IHNldC4gSW4gbW9yZSBjb21wbGV4CisgKiBzY2VuYXJpb3Mgd2l0aCBuZXN0 ZWQgbG9vcHMgdGhhdCBjYW4gY29uc3VtZSBkaWZmZXJlbnQgZXZlbnRzLCB5b3UgY2FuCisg KiBkZWZpbmUgeW91ciBvd24gSU5URVJSVVBUXyogZmxhZyBpbnN0ZWFkIG9mIHJlbHlpbmcg b24KKyAqIElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3Jj L2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKKyNpZm5kZWYgU1RPUkFHRV9JTlRFUlJVUFRfSAorI2RlZmluZSBTVE9SQUdF X0lOVEVSUlVQVF9ICisKKyNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NudW1iZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5o IgorCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK2V4dGVybiBQR0RMTElNUE9SVCBwZ19hdG9t aWNfdWludDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRzOworZXh0ZXJuIFBHRExMSU1QT1JUIHBn X2F0b21pY191aW50MzIgKk15TWF5YmVTbGVlcGluZ09uSW50ZXJydXB0czsKKwordHlwZWRl ZiBlbnVtCit7CisJLyoKKwkgKiBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgaXMgbXVsdGlw bGV4ZWQgZm9yIG1hbnkgcmVhc29ucywgbGlrZSBxdWVyeQorCSAqIGNhbmNlbGxhdGlvbiB0 ZXJtaW5hdGlvbiByZXF1ZXN0cywgcmVjb3ZlcnkgY29uZmxpY3RzLCBhbmQgY29uZmlnCisJ ICogcmVsb2FkIHJlcXVlc3RzLiAgVXBvbiByZWNlaXZpbmcgSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQLCB5b3Ugc2hvdWxkCisJICogY2FsbCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRv IHByb2Nlc3MgdGhvc2UgcmVxdWVzdHMuICBJdCBpcyBhbHNvIHVzZWQKKwkgKiBmb3IgdmFy aW91cyBvdGhlciBjb250ZXh0LWRlcGVuZGVudCBwdXJwb3NlcywgYnV0IG5vdGUgdGhhdCBp ZiBpdCdzCisJICogdXNlZCB0byB3YWtlIHVwIGZvciBvdGhlciByZWFzb25zLCB5b3UgbXVz dCBzdGlsbCBjYWxsCisJICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBvbmNlIHBlciBpdGVy YXRpb24uCisJICovCisJSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCisJLyoKKwkgKiBJ TlRFUlJVUFRfUkVDT1ZFUllfV0FLRVVQIGlzIHVzZWQgdG8gd2FrZSB1cCBzdGFydHVwIHBy b2Nlc3MsIHRvIHRlbGwKKwkgKiBpdCB0aGF0IGl0IHNob3VsZCBjb250aW51ZSBXQUwgcmVw bGF5LiBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyIHdoZW4KKwkgKiBtb3JlIFdBTCBhcnJp dmVzLCBvciB3aGVuIHByb21vdGlvbiBpcyByZXF1ZXN0ZWQuCisJICovCisJSU5URVJSVVBU X1JFQ09WRVJZX0NPTlRJTlVFLAorfSBJbnRlcnJ1cHRUeXBlOworCisvKgorICogVGVzdCBh biBpbnRlcnJ1cHQgZmxhZy4KKyAqLworc3RhdGljIGlubGluZSBib29sCitJbnRlcnJ1cHRJ c1BlbmRpbmcoSW50ZXJydXB0VHlwZSByZWFzb24pCit7CisJcmV0dXJuIChwZ19hdG9taWNf cmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiAoMSA8PCByZWFzb24pKSAhPSAwOwor fQorCisvKgorICogVGVzdCBhbiBpbnRlcnJ1cHQgZmxhZy4KKyAqLworc3RhdGljIGlubGlu ZSBib29sCitJbnRlcnJ1cHRzUGVuZGluZyh1aW50MzIgbWFzaykKK3sKKwlyZXR1cm4gKHBn X2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIChtYXNrKSkgIT0gMDsK K30KKworLyoKKyAqIENsZWFyIGFuIGludGVycnVwdCBmbGFnLgorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK0NsZWFySW50ZXJydXB0KEludGVycnVwdFR5cGUgcmVhc29uKQoreworCXBn X2F0b21pY19mZXRjaF9hbmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oMSA8PCByZWFz b24pKTsKK30KKworLyoKKyAqIFRlc3QgYW5kIGNsZWFyIGFuIGludGVycnVwdCBmbGFnLgor ICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NvbnN1bWVJbnRlcnJ1cHQoSW50ZXJydXB0VHlw ZSByZWFzb24pCit7CisJaWYgKGxpa2VseSghSW50ZXJydXB0SXNQZW5kaW5nKHJlYXNvbikp KQorCQlyZXR1cm4gZmFsc2U7CisKKwlDbGVhckludGVycnVwdChyZWFzb24pOworCisJcmV0 dXJuIHRydWU7Cit9CisKK2V4dGVybiB2b2lkIFJhaXNlSW50ZXJydXB0KEludGVycnVwdFR5 cGUgcmVhc29uKTsKK2V4dGVybiB2b2lkIFNlbmRJbnRlcnJ1cHQoSW50ZXJydXB0VHlwZSBy ZWFzb24sIFByb2NOdW1iZXIgcGdwcm9jbm8pOworZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0 KHVpbnQzMiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAor CQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKK2V4dGVybiBpbnQJV2FpdEludGVy cnVwdE9yU29ja2V0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdz b2NrZXQgc29jaywKKwkJCQkJCQkJICBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pOworZXh0ZXJuIHZvaWQgU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCk7Citl eHRlcm4gdm9pZCBTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9p ZCBJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKTsKKworI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L2xhdGNoLmgKaW5kZXggN2UxOTRkNTM2Zi4uMDg0ZDY0YTE5YiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0 Y2guaApAQCAtMSw5NCArMSwxNyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICog bGF0Y2guaAotICoJICBSb3V0aW5lcyBmb3IgaW50ZXJwcm9jZXNzIGxhdGNoZXMKKyAqCSAg QmFja3dhcmRzLWNvbXBhdGliaWxpdHkgbWFjcm9zIGZvciB0aGUgb2xkIExhdGNoIGludGVy ZmFjZQogICoKLSAqIEEgbGF0Y2ggaXMgYSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJh dGlvbnMgdGhhdCBsZXQgcHJvY2Vzc2VzIHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEg bGF0Y2ggY2FuIGJlIHNldCBmcm9tIGFub3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAq IGhhbmRsZXIgd2l0aGluIHRoZSBzYW1lIHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGlu dGVyZmFjZSBpcyBhIHJlbGlhYmxlIHJlcGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRl cm4gb2YKLSAqIHVzaW5nIHBnX3VzbGVlcCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwg YSBzaWduYWwgYXJyaXZlcywgd2hlcmUgdGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEg ZmxhZyB2YXJpYWJsZS4gQmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21p bmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9y bXMgd2hlcmUgaXQKLSAqIGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUg c2lnbmFsIGFycml2ZXMganVzdCBiZWZvcmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhl IGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xs IHRoZSBmbGFnIHZhcmlhYmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZl bnRlZCB0byBzb2x2ZQotICogdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxl IGVub3VnaC4gTGF0Y2hlcyBhcmUgZGVzaWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxp bWl0YXRpb25zLCBhbGxvd2luZyB5b3UgdG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAot ICogZW5zdXJpbmcgcXVpY2sgcmVzcG9uc2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nl c3Nlcy4KLSAqCi0gKiBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFu ZCBzaGFyZWQuIEEgbG9jYWwgbGF0Y2ggaXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRj aCwgYW5kIGNhbiBvbmx5IGJlIHNldCBmcm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxv Y2FsIGxhdGNoIGNhbiBiZSB1c2VkIHRvIHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwg YnkgY2FsbGluZwotICogU2V0TGF0Y2ggaW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJl ZCBsYXRjaCByZXNpZGVzIGluIHNoYXJlZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0 aWFsaXplZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZv cmUKLSAqIGEgc2hhcmVkIGxhdGNoIGNhbiBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNz b2NpYXRlZCB3aXRoIGEgcHJvY2VzcwotICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJv Y2VzcyBvd25pbmcgdGhlIGxhdGNoIGNhbiB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9j ZXNzIGNhbiBzZXQgaXQuCi0gKgotICogVGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlv bnMgb24gYSBsYXRjaDoKLSAqCi0gKiBTZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICog UmVzZXRMYXRjaAktIENsZWFycyB0aGUgbGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBh Z2FpbgotICogV2FpdExhdGNoCS0gV2FpdHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0 Ci0gKgotICogV2FpdExhdGNoIGluY2x1ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAo d2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQKLSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5j dXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBhIHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIg Y2hpbGQgcHJvY2Vzc2VzIHRvIHdha2UgdXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBk ZWF0aC4KLSAqIFNlZSBsYXRjaC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3Ig dGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4KLSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRv IHdhaXQgZm9yIGV2ZW50KHMpIGlzOgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBS ZXNldExhdGNoKCk7Ci0gKgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigp OwotICoJICAgV2FpdExhdGNoKCk7Ci0gKiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8g cmVzZXQgdGhlIGxhdGNoICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwot ICogZG8uIE90aGVyd2lzZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRo ZSBjaGVjayBhbmQgdGhlCi0gKiBSZXNldExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQg YW5kIFdhaXQgd2lsbCBpbmNvcnJlY3RseSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlk IGNvZGluZyBwYXR0ZXJuIGxvb2tzIGxpa2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAq CSAgIGlmICh3b3JrIHRvIGRvKQotICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3Vs YXIsIGV4aXQgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRM YXRjaCgpOwotICoJICAgUmVzZXRMYXRjaCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNl ZnVsIHRvIHJlZHVjZSBsYXRjaCB0cmFmZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUg bG9vcCdzCi0gKiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2Zp ZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxv b3AgaXRlcmF0aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQg bXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3Vz IGV2ZW50cyBhZnRlcgotICogV2FpdExhdGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMg dGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUg d2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcK LSAqIGVsc2UgdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8g ZG8pIiBwYXJ0LCBhbmQgY2FsbAotICogU2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRj aCBpcyBkZXNpZ25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFs cmVhZHkgc2V0LgotICoKLSAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90 IGludGVycnVwdCB0aGUgbGF0Y2ggd2FpdCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMu ICBUaGVyZWZvcmUsIGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRo YXQKLSAqIGlzIG1lYW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNl dExhdGNoLgotICoKLSAqIE5vdGUgdGhhdCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBH UFJPQy5wcm9jTGF0Y2gpIGlzIGdlbmVyYWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9j IHNoYXJlZCBsYXRjaCBmb3Igc2lnbmFsaW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlz IGlzCi0gKiBiZWNhdXNlIGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRM YXRjaCBvbiB0aGUgcHJvY2VzcyBsYXRjaAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNo IG90aGVyIHRoYW4gdGhlIHByb2Nlc3MgbGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0g KiB1c2Ugb2YgYW55IGdlbmVyaWMgaGFuZGxlci4KLSAqCi0gKgotICogV2FpdEV2ZW50U2V0 cyBhbGxvdyB0byB3YWl0IGZvciBsYXRjaGVzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBl dmVudHMgLQotICogcG9zdG1hc3RlciBkeWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBz ZXZlcmFsIHNvY2tldHMgY3VycmVudGx5IC0gYXQgdGhlCi0gKiBzYW1lIHRpbWUuICBPbiBt YW55IHBsYXRmb3JtcyB1c2luZyBhIGxvbmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAq IGVmZmljaWVudCB0aGFuIHVzaW5nIFdhaXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4K KyAqIExhdGNoZXMgd2VyZSBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxpbmcgbWVjaGFuaXNt IHRoYXQgd2FzIHJlcGxhY2VkCisgKiBpbiBQb3N0Z3JlU1FMIHZlcnNvbiAxOCB3aXRoIElu dGVycnVwdHMsIHNlZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIuCisgKiBUaGlzIGZpbGUgY29u dGFpbnMgbWFjcm9zIHRoYXQgbWFwIG9sZCBMYXRjaCBjYWxscyB0byB0aGUgbmV3IGludGVy ZmFjZS4KKyAqIFRoZSBtYXBwaW5nIGlzIG5vdCBwZXJmZWN0LCBpdCBvbmx5IGNvdmVycyB0 aGUgYmFzaWMgdXNhZ2Ugb2Ygc2V0dGluZworICogYW5kIHdhaXRpbmcgZm9yIHRoZSBjdXJy ZW50IHByb2Nlc3MncyBvd24gbGF0Y2ggKE15TGF0Y2gpLCB3aGljaCBpcworICogbWFwcGVk IHRvIHJhaXNpbmcgb3Igd2FpdGluZyBmb3IgSU5URVJSVVBUX0dFTkVSQUxfV0FLVVAuCiAg KgorICogVGhlIFdhaXRFdmVudFNldCBmdW5jdGlvbnMgdGhhdCB1c2VkIHRvIGJlIGhlcmUg YXJlIG5vdyBpbgorICogInN0b3JhZ2Uvd2FpdGV2ZW50cy5oIi4KICAqCiAgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0 aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCkBAIC05NywxMDAgKzIwLDYwIEBACiAgKgog ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KKwogI2lmbmRlZiBMQVRDSF9ICiAjZGVmaW5l IExBVENIX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAKLSNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgorI2RlZmluZSBXTF9M QVRDSF9TRVQgV0xfSU5URVJSVVBUCiAKIC8qCi0gKiBMYXRjaCBzdHJ1Y3R1cmUgc2hvdWxk IGJlIHRyZWF0ZWQgYXMgb3BhcXVlIGFuZCBvbmx5IGFjY2Vzc2VkIHRocm91Z2gKLSAqIHRo ZSBwdWJsaWMgZnVuY3Rpb25zLiBJdCBpcyBkZWZpbmVkIGhlcmUgdG8gYWxsb3cgZW1iZWRk aW5nIExhdGNoZXMgYXMKLSAqIHBhcnQgb2YgYmlnZ2VyIHN0cnVjdHMuCisgKiBUaGVzZSBj b21wYXRpYmlsaXR5IG1hY3JvcyBvbmx5IHN1cHBvcnQgb3BlcmF0aW5nIG9uIE15TGF0Y2gu IEl0IHVzZWQgdG8KKyAqIGJlIGEgcG9pbnRlciB0byBhIExhdGNoIHN0cnVjdCwgYnV0IG5v dyBpdCdzIGp1c3QgYSBkdW1teSBpbnQgdmFyaWFibGUuCiAgKi8KLXR5cGVkZWYgc3RydWN0 IExhdGNoCisKKyNkZWZpbmUgTXlMYXRjaCAoKHZvaWQgKikgMHhBQUFBKQorCitzdGF0aWMg aW5saW5lIHZvaWQKK1NldExhdGNoKHZvaWQgKmR1bW15KQogewotCXNpZ19hdG9taWNfdCBp c19zZXQ7Ci0Jc2lnX2F0b21pY190IG1heWJlX3NsZWVwaW5nOwotCWJvb2wJCWlzX3NoYXJl ZDsKLQlpbnQJCQlvd25lcl9waWQ7Ci0jaWZkZWYgV0lOMzIKLQlIQU5ETEUJCWV2ZW50Owot I2VuZGlmCi19IExhdGNoOworCUFzc2VydChkdW1teSA9PSBNeUxhdGNoKTsKKwlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOworfQogCi0vKgotICogQml0bWFz a3MgZm9yIGV2ZW50cyB0aGF0IG1heSB3YWtlLXVwIFdhaXRMYXRjaCgpLCBXYWl0TGF0Y2hP clNvY2tldCgpLCBvcgotICogV2FpdEV2ZW50U2V0V2FpdCgpLgotICovCi0jZGVmaW5lIFdM X0xBVENIX1NFVAkJICgxIDw8IDApCi0jZGVmaW5lIFdMX1NPQ0tFVF9SRUFEQUJMRQkgKDEg PDwgMSkKLSNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAgKDEgPDwgMikKLSNkZWZpbmUg V0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdhaXRFdmVudFNldFdhaXQoKSAq LwotI2RlZmluZSBXTF9QT1NUTUFTVEVSX0RFQVRIICAoMSA8PCA0KQotI2RlZmluZSBXTF9F WElUX09OX1BNX0RFQVRICSAoMSA8PCA1KQotI2lmZGVmIFdJTjMyCi0jZGVmaW5lIFdMX1NP Q0tFVF9DT05ORUNURUQgICgxIDw8IDYpCi0jZWxzZQotLyogYXZvaWQgaGF2aW5nIHRvIGRl YWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVxdWlyaW5nIGl0ICovCi0jZGVmaW5l IFdMX1NPQ0tFVF9DT05ORUNURUQgIFdMX1NPQ0tFVF9XUklURUFCTEUKLSNlbmRpZgotI2Rl ZmluZSBXTF9TT0NLRVRfQ0xPU0VEIAkgKDEgPDwgNykKLSNpZmRlZiBXSU4zMgotI2RlZmlu ZSBXTF9TT0NLRVRfQUNDRVBUCSAoMSA8PCA4KQotI2Vsc2UKLS8qIGF2b2lkIGhhdmluZyB0 byBkZWFsIHdpdGggY2FzZSBvbiBwbGF0Zm9ybXMgbm90IHJlcXVpcmluZyBpdCAqLwotI2Rl ZmluZSBXTF9TT0NLRVRfQUNDRVBUCVdMX1NPQ0tFVF9SRUFEQUJMRQotI2VuZGlmCi0jZGVm aW5lIFdMX1NPQ0tFVF9NQVNLCQkoV0xfU09DS0VUX1JFQURBQkxFIHwgXAotCQkJCQkJCSBX TF9TT0NLRVRfV1JJVEVBQkxFIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQ09OTkVDVEVEIHwg XAotCQkJCQkJCSBXTF9TT0NLRVRfQUNDRVBUIHwgXAotCQkJCQkJCSBXTF9TT0NLRVRfQ0xP U0VEKQorc3RhdGljIGlubGluZSB2b2lkCitSZXNldExhdGNoKHZvaWQgKmR1bW15KQorewor CUFzc2VydChkdW1teSA9PSBNeUxhdGNoKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOworfQogCi10eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKK3N0YXRp YyBpbmxpbmUgaW50CitXYWl0TGF0Y2godm9pZCAqZHVtbXksIGludCB3YWtlRXZlbnRzLCBs b25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7Ci0JaW50CQkJcG9zOwkJ CS8qIHBvc2l0aW9uIGluIHRoZSBldmVudCBkYXRhIHN0cnVjdHVyZSAqLwotCXVpbnQzMgkJ ZXZlbnRzOwkJCS8qIHRyaWdnZXJlZCBldmVudHMgKi8KLQlwZ3NvY2tldAlmZDsJCQkJLyog c29ja2V0IGZkIGFzc29jaWF0ZWQgd2l0aCBldmVudCAqLwotCXZvaWQJICAgKnVzZXJfZGF0 YTsJCS8qIHBvaW50ZXIgcHJvdmlkZWQgaW4gQWRkV2FpdEV2ZW50VG9TZXQgKi8KLSNpZmRl ZiBXSU4zMgotCWJvb2wJCXJlc2V0OwkJCS8qIElzIHJlc2V0IG9mIHRoZSBldmVudCByZXF1 aXJlZD8gKi8KLSNlbmRpZgotfSBXYWl0RXZlbnQ7CisJdWludDMyCQlpbnRlcnJ1cHRfbWFz ayA9IDA7CiAKLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gdG8gYXZvaWQgZXhwb3NpbmcgbGF0 Y2guYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzICovCi10eXBlZGVmIHN0cnVjdCBXYWl0RXZl bnRTZXQgV2FpdEV2ZW50U2V0OworCUFzc2VydChkdW1teSA9PSBNeUxhdGNoIHx8IGR1bW15 ID09IE5VTEwpOwogCi0vKgotICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGxhdGNo LmMKLSAqLwotZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCh2b2lkKTsKLWV4 dGVybiB2b2lkIEluaXRMYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgSW5pdFNo YXJlZExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBPd25MYXRjaChMYXRjaCAq bGF0Y2gpOwotZXh0ZXJuIHZvaWQgRGlzb3duTGF0Y2goTGF0Y2ggKmxhdGNoKTsKLWV4dGVy biB2b2lkIFNldExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBSZXNldExhdGNo KExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBTaHV0ZG93bkxhdGNoU3VwcG9ydCh2b2lk KTsKKwlpZiAoKHdha2VFdmVudHMgJiBXTF9MQVRDSF9TRVQpICYmIGR1bW15ID09IE15TGF0 Y2gpCisJCWludGVycnVwdF9tYXNrID0gMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVA7 CisJcmV0dXJuIFdhaXRJbnRlcnJ1cHQoaW50ZXJydXB0X21hc2ssIHdha2VFdmVudHMsCisJ CQkJCQkgdGltZW91dCwgd2FpdF9ldmVudF9pbmZvKTsKK30KIAotZXh0ZXJuIFdhaXRFdmVu dFNldCAqQ3JlYXRlV2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgcmVzb3duZXIsIGludCBu ZXZlbnRzKTsKLWV4dGVybiB2b2lkIEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpz ZXQpOwotZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRT ZXQgKnNldCk7Ci1leHRlcm4gaW50CUFkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAq c2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBmZCwKLQkJCQkJCQkgIExhdGNoICpsYXRj aCwgdm9pZCAqdXNlcl9kYXRhKTsKLWV4dGVybiB2b2lkIE1vZGlmeVdhaXRFdmVudChXYWl0 RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywgTGF0Y2ggKmxhdGNoKTsK K3N0YXRpYyBpbmxpbmUgaW50CitXYWl0TGF0Y2hPclNvY2tldCh2b2lkICpkdW1teSwgaW50 IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ssIGxvbmcgdGltZW91dCwKKwkJCQkgIHVpbnQz MiB3YWl0X2V2ZW50X2luZm8pCit7CisJdWludDMyCQlpbnRlcnJ1cHRfbWFzayA9IDA7CisK KwlBc3NlcnQoZHVtbXkgPT0gTXlMYXRjaCB8fCBkdW1teSA9PSBOVUxMKTsKIAotZXh0ZXJu IGludAlXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQs Ci0JCQkJCQkJIFdhaXRFdmVudCAqb2NjdXJyZWRfZXZlbnRzLCBpbnQgbmV2ZW50cywKLQkJ CQkJCQkgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gaW50CVdhaXRMYXRjaChM YXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCi0JCQkJCSAgdWlu dDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gaW50CVdhaXRMYXRjaE9yU29ja2V0KExh dGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsCi0JCQkJCQkJICBwZ3NvY2tldCBzb2NrLCBs b25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwotZXh0ZXJuIHZvaWQgSW5p dGlhbGl6ZUxhdGNoV2FpdFNldCh2b2lkKTsKLWV4dGVybiBpbnQJR2V0TnVtUmVnaXN0ZXJl ZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpOwotZXh0ZXJuIGJvb2wgV2FpdEV2ZW50 U2V0Q2FuUmVwb3J0Q2xvc2VkKHZvaWQpOworCWlmICgod2FrZUV2ZW50cyAmIFdMX0xBVENI X1NFVCkgJiYgZHVtbXkgPT0gTXlMYXRjaCkKKwkJaW50ZXJydXB0X21hc2sgPSAxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUDsKKwlyZXR1cm4gV2FpdEludGVycnVwdE9yU29ja2V0 KGludGVycnVwdF9tYXNrLCB3YWtlRXZlbnRzLAorCQkJCQkJCQkgc29jaywgdGltZW91dCwg d2FpdF9ldmVudF9pbmZvKTsKK30KIAotI2VuZGlmCQkJCQkJCS8qIExBVENIX0ggKi8KKyNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCA5NTcxMGU0MTZmLi4xNWIzYzdkMGUyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2MuaApAQCAtMTY3LDkgKzE2Nyw2IEBAIHN0cnVjdCBQR1BST0MKIAlQR1Nl bWFwaG9yZSBzZW07CQkJLyogT05FIHNlbWFwaG9yZSB0byBzbGVlcCBvbiAqLwogCVByb2NX YWl0U3RhdHVzIHdhaXRTdGF0dXM7CiAKLQlMYXRjaAkJcHJvY0xhdGNoOwkJLyogZ2VuZXJp YyBsYXRjaCBmb3IgcHJvY2VzcyAqLwotCi0KIAlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBp ZCBvZiB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gY3VycmVudGx5IGJlaW5nCiAJCQkJCQkJCSAq IGV4ZWN1dGVkIGJ5IHRoaXMgcHJvYywgaWYgcnVubmluZyBhbmQgWElECiAJCQkJCQkJCSAq IGlzIGFzc2lnbmVkOyBlbHNlIEludmFsaWRUcmFuc2FjdGlvbklkLgpAQCAtMzA1LDYgKzMw MiwxNCBAQCBzdHJ1Y3QgUEdQUk9DCiAJUEdQUk9DCSAgICpsb2NrR3JvdXBMZWFkZXI7CS8q IGxvY2sgZ3JvdXAgbGVhZGVyLCBpZiBJJ20gYSBtZW1iZXIgKi8KIAlkbGlzdF9oZWFkCWxv Y2tHcm91cE1lbWJlcnM7CS8qIGxpc3Qgb2YgbWVtYmVycywgaWYgSSdtIGEgbGVhZGVyICov CiAJZGxpc3Rfbm9kZQlsb2NrR3JvdXBMaW5rOwkvKiBteSBtZW1iZXIgbGluaywgaWYgSSdt IGEgbWVtYmVyICovCisKKwlwZ19hdG9taWNfdWludDMyIHBlbmRpbmdJbnRlcnJ1cHRzOwor CXBnX2F0b21pY191aW50MzIgbWF5YmVTbGVlcGluZ09uSW50ZXJydXB0czsKKworI2lmZGVm IFdJTjMyCisJLyogRXZlbnQgaGFuZGxlIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2hlbiBz ZW5kaW5nIGFuIGludGVycnVwdCAqLworCUhBTkRMRQkJaW50ZXJydXB0V2FrZXVwRXZlbnQ7 CisjZW5kaWYKIH07CiAKIC8qIE5PVEU6ICJ0eXBlZGVmIHN0cnVjdCBQR1BST0MgUEdQUk9D IiBhcHBlYXJzIGluIHN0b3JhZ2UvbG9jay5oLiAqLwpAQCAtNDIwLDYgKzQyNSwyNCBAQCB0 eXBlZGVmIHN0cnVjdCBQUk9DX0hEUgogCSAqLwogCVByb2NOdW1iZXIJd2Fsd3JpdGVyUHJv YzsKIAlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclByb2M7CisJUHJvY051bWJlcgl3YWxyZWNl aXZlclByb2M7CisKKwkvKgorCSAqIHJlY292ZXJ5V2FrZXVwTGF0Y2ggaXMgdXNlZCB0byB3 YWtlIHVwIHRoZSBzdGFydHVwIHByb2Nlc3MgdG8gY29udGludWUKKwkgKiBXQUwgcmVwbGF5 LCBpZiBpdCBpcyB3YWl0aW5nIGZvciBXQUwgdG8gYXJyaXZlIG9yIHByb21vdGlvbiB0byBi ZQorCSAqIHJlcXVlc3RlZC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgc3RhcnR1cCBwcm9j ZXNzIGFsc28gdXNlcyBhbm90aGVyIGxhdGNoLCBpdHMgcHJvY0xhdGNoLAorCSAqIHRvIHdh aXQgZm9yIHJlY292ZXJ5IGNvbmZsaWN0LiBJZiB3ZSBnZXQgcmlkIG9mIHJlY292ZXJ5V2Fr ZXVwTGF0Y2ggZm9yCisJICogc2lnbmFsaW5nIHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gZmF2 b3Igb2YgdXNpbmcgaXRzIHByb2NMYXRjaCwgd2hpY2gKKwkgKiBjb21wb3J0cyBiZXR0ZXIg d2l0aCBwb3NzaWJsZSBnZW5lcmljIHNpZ25hbCBoYW5kbGVycyB1c2luZyB0aGF0IGxhdGNo LgorCSAqIEJ1dCB3ZSBzaG91bGQgbm90IGRvIHRoYXQgYmVjYXVzZSB0aGUgc3RhcnR1cCBw cm9jZXNzIGRvZXNuJ3QgYXNzdW1lCisJICogdGhhdCBpdCdzIHdha2VuIHVwIGJ5IHdhbHJl Y2VpdmVyIHByb2Nlc3Mgb3IgU0lHSFVQIHNpZ25hbCBoYW5kbGVyCisJICogd2hpbGUgaXQn cyB3YWl0aW5nIGZvciByZWNvdmVyeSBjb25mbGljdC4gVGhlIHNlcGFyYXRlIGxhdGNoZXMs CisJICogcmVjb3ZlcnlXYWtldXBMYXRjaCBhbmQgcHJvY0xhdGNoLCBzaG91bGQgYmUgdXNl ZCBmb3IgaW50ZXItcHJvY2VzcworCSAqIGNvbW11bmljYXRpb24gZm9yIFdBTCByZXBsYXkg YW5kIHJlY292ZXJ5IGNvbmZsaWN0LCByZXNwZWN0aXZlbHkuIFhYWAorCSAqLworCVByb2NO dW1iZXIJc3RhcnR1cFByb2M7CiAKIAkvKiBDdXJyZW50IHNoYXJlZCBlc3RpbWF0ZSBvZiBh cHByb3ByaWF0ZSBzcGluc19wZXJfZGVsYXkgdmFsdWUgKi8KIAlpbnQJCQlzcGluc19wZXJf ZGVsYXk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNzc4MGI3YmViCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaApAQCAtMCwwICsxLDExOSBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdGV2ZW50c2V0LmgKKyAqCSAgcHBv bGwoKSAvIHBzZWxlY3QoKSBsaWtlIGludGVyZmFjZSBmb3Igd2FpdGluZyBmb3IgZXZlbnRz CisgKgorICogVGhpcyBpcyBhIHJlbGlhYmxlIHJlcGxhY2VtZW50IGZvciB0aGUgY29tbW9u IHBhdHRlcm4gb2YgdXNpbmcgcGdfdXNsZWVwKCkKKyAqIG9yIHNlbGVjdCgpIHRvIHdhaXQg dW50aWwgYSBzaWduYWwgYXJyaXZlcywgd2hlcmUgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNl cworICogYW4gaW50ZXJydXB0IChzZWUgc3RvcmFnZS9pbnRlcnJ1cHQuaCkuIEJlY2F1c2Ug b24gc29tZSBwbGF0Zm9ybXMgYW4KKyAqIGluY29taW5nIHNpZ25hbCBkb2Vzbid0IGludGVy cnVwdCBzbGVlcCwgYW5kIGV2ZW4gb24gcGxhdGZvcm1zIHdoZXJlIGl0CisgKiBkb2VzIHRo ZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaWYgdGhlIHNpZ25hbCBhcnJpdmVzIGp1c3QgYmVm b3JlIGVudGVyaW5nCisgKiB0aGUgc2xlZXAsIHRoZSBjb21tb24gcGF0dGVybiBtdXN0IHBl cmlvZGljYWxseSB3YWtlIHVwIGFuZCBwb2xsIHRoZSBmbGFnCisgKiB2YXJpYWJsZS4gVGhl IHBzZWxlY3QoKSBzeXN0ZW0gY2FsbCB3YXMgaW52ZW50ZWQgdG8gc29sdmUgdGhpcyBwcm9i bGVtLCBidXQKKyAqIGl0IGlzIG5vdCBwb3J0YWJsZSBlbm91Z2guIFdhaXRFdmVudFNldHMg YW5kIEludGVycnVwdHMgYXJlIGRlc2lnbmVkIHRvCisgKiBvdmVyY29tZSB0aGVzZSBsaW1p dGF0aW9ucywgYWxsb3dpbmcgeW91IHRvIHNsZWVwIHdpdGhvdXQgcG9sbGluZyBhbmQKKyAq IGVuc3VyaW5nIHF1aWNrIHJlc3BvbnNlIHRvIHNpZ25hbHMgZnJvbSBvdGhlciBwcm9jZXNz ZXMuCisgKgorICogV2FpdEludGVycnVwdCBpbmNsdWRlcyBhIHByb3Zpc2lvbiBmb3IgdGlt ZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCisgKiB3aGVuIHBvc3NpYmxlLCBhcyB0 aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBwcm92aXNpb24gZm9yIHBvc3RtYXN0 ZXIKKyAqIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVwIGltbWVkaWF0ZWx5IG9uIHBvc3Rt YXN0ZXIgZGVhdGguICBTZWUKKyAqIGludGVycnVwdC5jIGZvciBkZXRhaWxlZCBzcGVjaWZp Y2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4KKyAqCisgKiBPbiBzb21lIHBs YXRmb3Jtcywgc2lnbmFscyB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIHdhaXQgcHJpbWl0aXZl IGJ5CisgKiB0aGVtc2VsdmVzLiAgVGhlcmVmb3JlLCBpdCBpcyBjcml0aWNhbCB0aGF0IGFu eSBzaWduYWwgaGFuZGxlciB0aGF0IGlzCisgKiBtZWFudCB0byB0ZXJtaW5hdGUgYSBXYWl0 SW50ZXJydXB0IHdhaXQgY2FsbHMgUmFpc2VJbnRlcnJ1cHQuCisgKgorICogV2FpdEV2ZW50 U2V0cyBhbGxvdyB0byB3YWl0IGZvciBpbnRlcnJ1cHRzIGJlaW5nIHNldCBhbmQgYWRkaXRp b25hbCBldmVudHMgLQorICogcG9zdG1hc3RlciBkeWluZyBhbmQgc29ja2V0IHJlYWRpbmVz cyBvZiBzZXZlcmFsIHNvY2tldHMgY3VycmVudGx5IC0gYXQgdGhlCisgKiBzYW1lIHRpbWUu ICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBhIGxvbmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1v cmUKKyAqIGVmZmljaWVudCB0aGFuIHVzaW5nIFdhaXRJbnRlcnJ1cHQgb3IgV2FpdEludGVy cnVwdE9yU29ja2V0LgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaAorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFdBSVRFVkVOVFNFVF9ICisj ZGVmaW5lIFdBSVRFVkVOVFNFVF9ICisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgi CisKKy8qCisgKiBCaXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQgbWF5IHdha2UtdXAgV2FpdExh dGNoKCksIFdhaXRMYXRjaE9yU29ja2V0KCksIG9yCisgKiBXYWl0RXZlbnRTZXRXYWl0KCku CisgKi8KKyNkZWZpbmUgV0xfSU5URVJSVVBUCQkgKDEgPDwgMCkKKyNkZWZpbmUgV0xfU09D S0VUX1JFQURBQkxFCSAoMSA8PCAxKQorI2RlZmluZSBXTF9TT0NLRVRfV1JJVEVBQkxFICAo MSA8PCAyKQorI2RlZmluZSBXTF9USU1FT1VUCQkJICgxIDw8IDMpCS8qIG5vdCBmb3IgV2Fp dEV2ZW50U2V0V2FpdCgpICovCisjZGVmaW5lIFdMX1BPU1RNQVNURVJfREVBVEggICgxIDw8 IDQpCisjZGVmaW5lIFdMX0VYSVRfT05fUE1fREVBVEgJICgxIDw8IDUpCisjaWZkZWYgV0lO MzIKKyNkZWZpbmUgV0xfU09DS0VUX0NPTk5FQ1RFRCAgKDEgPDwgNikKKyNlbHNlCisvKiBh dm9pZCBoYXZpbmcgdG8gZGVhbCB3aXRoIGNhc2Ugb24gcGxhdGZvcm1zIG5vdCByZXF1aXJp bmcgaXQgKi8KKyNkZWZpbmUgV0xfU09DS0VUX0NPTk5FQ1RFRCAgV0xfU09DS0VUX1dSSVRF QUJMRQorI2VuZGlmCisjZGVmaW5lIFdMX1NPQ0tFVF9DTE9TRUQgCSAoMSA8PCA3KQorI2lm ZGVmIFdJTjMyCisjZGVmaW5lIFdMX1NPQ0tFVF9BQ0NFUFQJICgxIDw8IDgpCisjZWxzZQor LyogYXZvaWQgaGF2aW5nIHRvIGRlYWwgd2l0aCBjYXNlIG9uIHBsYXRmb3JtcyBub3QgcmVx dWlyaW5nIGl0ICovCisjZGVmaW5lIFdMX1NPQ0tFVF9BQ0NFUFQJV0xfU09DS0VUX1JFQURB QkxFCisjZW5kaWYKKyNkZWZpbmUgV0xfU09DS0VUX01BU0sJCShXTF9TT0NLRVRfUkVBREFC TEUgfCBcCisJCQkJCQkJIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBcCisJCQkJCQkJIFdMX1NP Q0tFVF9DT05ORUNURUQgfCBcCisJCQkJCQkJIFdMX1NPQ0tFVF9BQ0NFUFQgfCBcCisJCQkJ CQkJIFdMX1NPQ0tFVF9DTE9TRUQpCisKK3R5cGVkZWYgc3RydWN0IFdhaXRFdmVudAorewor CWludAkJCXBvczsJCQkvKiBwb3NpdGlvbiBpbiB0aGUgZXZlbnQgZGF0YSBzdHJ1Y3R1cmUg Ki8KKwl1aW50MzIJCWV2ZW50czsJCQkvKiB0cmlnZ2VyZWQgZXZlbnRzICovCisJcGdzb2Nr ZXQJZmQ7CQkJCS8qIHNvY2tldCBmZCBhc3NvY2lhdGVkIHdpdGggZXZlbnQgKi8KKwl2b2lk CSAgICp1c2VyX2RhdGE7CQkvKiBwb2ludGVyIHByb3ZpZGVkIGluIEFkZFdhaXRFdmVudFRv U2V0ICovCisjaWZkZWYgV0lOMzIKKwlib29sCQlyZXNldDsJCQkvKiBJcyByZXNldCBvZiB0 aGUgZXZlbnQgcmVxdWlyZWQ/ICovCisjZW5kaWYKK30gV2FpdEV2ZW50OworCisvKiBmb3J3 YXJkIGRlY2xhcmF0aW9uIHRvIGF2b2lkIGV4cG9zaW5nIGxhdGNoLmMgaW1wbGVtZW50YXRp b24gZGV0YWlscyAqLwordHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50U2V0IFdhaXRFdmVudFNl dDsKKworc3RydWN0IFBHUFJPQzsKKworLyoKKyAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9u cyBpbiB3YWl0ZXZlbnRzZXQuYworICovCitleHRlcm4gdm9pZCBJbml0aWFsaXplV2FpdEV2 ZW50U3VwcG9ydCh2b2lkKTsKK2V4dGVybiB2b2lkIFNodXRkb3duV2FpdEV2ZW50U3VwcG9y dCh2b2lkKTsKKyNpZmRlZiBXSU4zMgorZXh0ZXJuIEhBTkRMRSBDcmVhdGVTaGFyZWRXYWtl dXBIYW5kbGUodm9pZCk7CisjZW5kaWYKKworZXh0ZXJuIFdhaXRFdmVudFNldCAqQ3JlYXRl V2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgcmVzb3duZXIsIGludCBuZXZlbnRzKTsKK2V4 dGVybiB2b2lkIEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpOworZXh0ZXJu IHZvaWQgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCk7Citl eHRlcm4gaW50CUFkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIg ZXZlbnRzLCBwZ3NvY2tldCBmZCwKKwkJCQkJCQkgIHVpbnQzMiBpbnRlcnJ1cHRNYXNrLCB2 b2lkICp1c2VyX2RhdGEpOworZXh0ZXJuIHZvaWQgTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVu dFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCB1aW50MzIgaW50ZXJydXB0TWFz ayk7CisKK2V4dGVybiBpbnQJV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwg bG9uZyB0aW1lb3V0LAorCQkJCQkJCSBXYWl0RXZlbnQgKm9jY3VycmVkX2V2ZW50cywgaW50 IG5ldmVudHMsCisJCQkJCQkJIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIHZv aWQgSW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQodm9pZCk7CitleHRlcm4gaW50CUdldE51 bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKFdhaXRFdmVudFNldCAqc2V0KTsKK2V4dGVybiBib29s IFdhaXRFdmVudFNldENhblJlcG9ydENsb3NlZCh2b2lkKTsKKworLyogbG93IGxldmVsIGZ1 bmN0aW9ucyB1c2VkIHRvIGltcGxlbWVudCBTZW5kSW50ZXJydXB0ICovCitleHRlcm4gdm9p ZCBXYWtldXBNeVByb2Modm9pZCk7CitleHRlcm4gdm9pZCBXYWtldXBPdGhlclByb2Moc3Ry dWN0IFBHUFJPQyAqcHJvYyk7CisKKyNlbmRpZgkJCQkJCQkvKiBXQUlURVZFTlRTRVRfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IGIzZGFjNDRkOTcu LmZlNjJhNGE0MjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEv c2V0dXAuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKQEAg LTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJ0ZXN0X3NobV9tcS5oIgpA QCAtMjg2LDExICsyODcsMTEgQEAgd2FpdF9mb3Jfd29ya2Vyc190b19iZWNvbWVfcmVhZHko d29ya2VyX3N0YXRlICp3c3RhdGUsCiAJCQl3ZV9iZ3dvcmtlcl9zdGFydHVwID0gV2FpdEV2 ZW50RXh0ZW5zaW9uTmV3KCJUZXN0U2htTXFCZ1dvcmtlclN0YXJ0dXAiKTsKIAogCQkvKiBX YWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdM X0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgd2VfYmd3b3Jr ZXJfc3RhcnR1cCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dF TkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAor CQkJCQkJCSB3ZV9iZ3dvcmtlcl9zdGFydHVwKTsKIAogCQkvKiBSZXNldCB0aGUgbGF0Y2gg c28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQkvKiBBbiBpbnRlcnJ1 cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NobV9tcS90ZXN0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwpp bmRleCAzZDIzNTU2OGI4Li4yMTJlNTYyZDJkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3Rlc3QuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCiAjaW5jbHVkZSAidGVz dF9zaG1fbXEuaCIKQEAgLTIzOCw5ICsyMzksOSBAQCB0ZXN0X3NobV9tcV9waXBlbGluZWQo UEdfRlVOQ1RJT05fQVJHUykKIAkJCSAqIGhhdmUgcmVhZCBvciB3cml0dGVuIGRhdGEgYW5k IHRoZXJlZm9yZSB0aGVyZSBtYXkgbm93IGJlIHdvcmsKIAkJCSAqIGZvciB1cyB0byBkby4K IAkJCSAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKLQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKKwkJCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOworCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21x L3dvcmtlci5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwppbmRl eCA2YzRmYmM3ODI3Li42ZmU5ZjllNGViIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htX21xL3dvcmtlci5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1f bXEvd29ya2VyLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2Fy cmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKQEAgLTEyOCw3ICsxMjksNyBA QCB0ZXN0X3NobV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQogCQllbG9nKERFQlVHMSwgInJl Z2lzdHJhbnQgYmFja2VuZCBoYXMgZXhpdGVkIHByZW1hdHVyZWx5Iik7CiAJCXByb2NfZXhp dCgxKTsKIAl9Ci0JU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisJU2VuZElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Mo cmVnaXN0cmFudCkpOwogCiAJLyogRG8gdGhlIHdvcmsuICovCiAJY29weV9tZXNzYWdlcyhp bnFoLCBvdXRxaCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDllOTUxYTll NmYuLjJhZTRiZTYwNmYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjUy LDYgKzEyNTIsNyBAQCBJbnRlZ2VyCiBJbnRlZ2VyU2V0CiBJbnRlcm5hbERlZmF1bHRBQ0wK IEludGVybmFsR3JhbnQKK0ludGVycnVwdFR5cGUKIEludGVydmFsCiBJbnRlcnZhbEFnZ1N0 YXRlCiBJbnRvQ2xhdXNlCkBAIC0xNDg5LDcgKzE0OTAsNiBAQCBMWjRTdGF0ZQogTGFiZWxQ cm92aWRlcgogTGFnVHJhY2tlcgogTGFyZ2VPYmplY3REZXNjCi1MYXRjaAogTGF1bmNoZXJM YXN0U3RhcnRUaW1lc0VudHJ5CiBMZXJwRnVuYwogTGV4RGVzY3IKLS0gCjIuMzkuMgoK --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0009-Replace-ProcSendSignal-ProcWaitForSignal-with-new.patch" Content-Disposition: attachment; filename*0="v2-0009-Replace-ProcSendSignal-ProcWaitForSignal-with-new.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzY2YwMjNjMGRlZmQ5MzVlYzcwMDk2M2VmYmEyYjYwYTYyYWEwNDUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjQgQXVnIDIwMjQgMDA6NTg6MDUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDA5LzEyXSBSZXBsYWNlIFByb2NTZW5kU2lnbmFsL1Byb2NX YWl0Rm9yU2lnbmFsIHdpdGggbmV3CiBpbnRlcnJ1cHQgZnVuY3Rpb25zCgotLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICB8ICA5ICsrKysrKystLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgIHwgMTUgKysrKysrKysrKysrLS0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgfCAgNyArKysrKy0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgfCAyOCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgfCAg MyAtLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCA1Y2RkMmYxMGZj Li40MzI1MGVjMjJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAt Mjg5MSw3ICsyODkxLDcgQEAgVW5waW5CdWZmZXJOb093bmVyKEJ1ZmZlckRlc2MgKmJ1ZikK IAogCQkJCWJ1Zl9zdGF0ZSAmPSB+Qk1fUElOX0NPVU5UX1dBSVRFUjsKIAkJCQlVbmxvY2tC dWZIZHIoYnVmLCBidWZfc3RhdGUpOwotCQkJCVByb2NTZW5kU2lnbmFsKHdhaXRfYmFja2Vu ZF9wZ3Byb2Nubyk7CisJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVAsIHdhaXRfYmFja2VuZF9wZ3Byb2Nubyk7CiAJCQl9CiAJCQllbHNlCiAJCQkJVW5sb2Nr QnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsKQEAgLTUzNTMsNyArNTM1MywxMiBAQCBMb2NrQnVm ZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldh aXRCdWZJZCgtMSk7CiAJCX0KIAkJZWxzZQotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9F VkVOVF9CVUZGRVJfUElOKTsKKwkJeworCQkJV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCQl9CiAKIAkJLyoKIAkJICogUmVtb3ZlIGZsYWcgbWFya2luZyB1cyBhcyB3YWl0ZXIu IE5vcm1hbGx5IHRoaXMgd2lsbCBub3QgYmUgc2V0CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKaW5kZXggODcyNjc5Y2E0NC4uOGQ4NDNhMjAwZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwpAQCAtNjk2LDcgKzY5NiwxMCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQog CX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgdGhlIHJlbGVhc2Ugb2YgdGhlIFJl bGF0aW9uIExvY2sgKi8KLQlQcm9jV2FpdEZvclNpZ25hbChQR19XQUlUX0xPQ0sgfCBsb2Nr dGFnLmxvY2t0YWdfdHlwZSk7CisJV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5F UkFMX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOworCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKIAkvKgogCSAqIEV4aXQgaWYgbHRpbWUgaXMgcmVhY2hlZC4gVGhlbiBhbGwgdGhl IGJhY2tlbmRzIGhvbGRpbmcgY29uZmxpY3RpbmcKQEAgLTc0NSw3ICs3NDgsMTAgQEAgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0YWcsIGJvb2wgbG9n Z2luZ19jb25mbGljdCkKIAkJICogdW50aWwgdGhlIHJlbGF0aW9uIGxvY2tzIGFyZSByZWxl YXNlZCBvciBsdGltZSBpcyByZWFjaGVkLgogCQkgKi8KIAkJZ290X3N0YW5kYnlfZGVhZGxv Y2tfdGltZW91dCA9IGZhbHNlOwotCQlQcm9jV2FpdEZvclNpZ25hbChQR19XQUlUX0xPQ0sg fCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCisJCQkJCSAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOworCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCX0KIAogY2xlYW51cDoKQEAgLTgzOSw3ICs4NDUsMTAgQEAgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCiAJICogU0lHSFVQIHNp Z25hbCBoYW5kbGVyLCBldGMgY2Fubm90IGRvIHRoYXQgYmVjYXVzZSBpdCB1c2VzIHRoZSBk aWZmZXJlbnQKIAkgKiBsYXRjaCBmcm9tIHRoYXQgUHJvY1dhaXRGb3JTaWduYWwoKSB3YWl0 cyBvbi4KIAkgKi8KLQlQcm9jV2FpdEZvclNpZ25hbChXQUlUX0VWRU5UX0JVRkZFUl9QSU4p OworCVdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lO VEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJICBXQUlUX0VWRU5UX0JV RkZFUl9QSU4pOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7 CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCWlmIChnb3Rfc3RhbmRieV9kZWxheV90 aW1lb3V0KQogCQlTZW5kUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4oUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By ZWRpY2F0ZS5jCmluZGV4IGUyNGEwZjJmZGIuLjkzNzE1YjliZGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE1NzEsNyArMTU3MSwxMCBAQCBHZXRTYWZl U25hcHNob3QoU25hcHNob3Qgb3JpZ1NuYXBzaG90KQogCQkJCSBTeGFjdElzUk9VbnNhZmUo TXlTZXJpYWxpemFibGVYYWN0KSkpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoU2VyaWFsaXph YmxlWGFjdEhhc2hMb2NrKTsKLQkJCVByb2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRfU0FG RV9TTkFQU0hPVCk7CisJCQlXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJ ICBXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1QpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQlM V0xvY2tBY3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhDTFVTSVZFKTsK IAkJfQogCQlNeVNlcmlhbGl6YWJsZVhhY3QtPmZsYWdzICY9IH5TWEFDVF9GTEFHX0RFRkVS UkFCTEVfV0FJVElORzsKQEAgLTM2MDQsNyArMzYwNyw3IEBAIFJlbGVhc2VQcmVkaWNhdGVM b2Nrcyhib29sIGlzQ29tbWl0LCBib29sIGlzUmVhZE9ubHlTYWZlKQogCQkJICovCiAJCQlp ZiAoU3hhY3RJc0RlZmVycmFibGVXYWl0aW5nKHJvWGFjdCkgJiYKIAkJCQkoU3hhY3RJc1JP VW5zYWZlKHJvWGFjdCkgfHwgU3hhY3RJc1JPU2FmZShyb1hhY3QpKSkKLQkJCQlQcm9jU2Vu ZFNpZ25hbChyb1hhY3QtPnBncHJvY25vKTsKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCwgcm9YYWN0LT5wZ3Byb2Nubyk7CiAJCX0KIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDBjMWIyMzhlMGUuLmI2ZWY0MTg2MTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTg2NiwzNCArMTg2Niw2IEBAIENoZWNrRGVh ZExvY2tBbGVydCh2b2lkKQogCWVycm5vID0gc2F2ZV9lcnJubzsKIH0KIAotLyoKLSAqIFBy b2NXYWl0Rm9yU2lnbmFsIC0gd2FpdCBmb3IgYSBzaWduYWwgZnJvbSBhbm90aGVyIGJhY2tl bmQuCi0gKgotICogQXMgdGhpcyB1c2VzIHRoZSBnZW5lcmljIHByb2Nlc3MgaW50ZXJ1cnB0 IHRoZSBjYWxsZXIgaGFzIHRvIGJlIHJvYnVzdCBhZ2FpbnN0Ci0gKiB1bnJlbGF0ZWQgd2Fr ZXVwczogQWx3YXlzIGNoZWNrIHRoYXQgdGhlIGRlc2lyZWQgc3RhdGUgaGFzIG9jY3VycmVk LCBhbmQKLSAqIHdhaXQgYWdhaW4gaWYgbm90LgotICovCi12b2lkCi1Qcm9jV2FpdEZvclNp Z25hbCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCSh2b2lkKSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElU X09OX1BNX0RFQVRILCAwLAotCQkJCQkJIHdhaXRfZXZlbnRfaW5mbyk7Ci0JQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKLQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwotfQotCi0vKgotICogUHJvY1NlbmRTaWduYWwgLSBzZW5kIHRoZSBpbnRlcnJ1cHQg b2YgYSBiYWNrZW5kIGlkZW50aWZpZWQgYnkgUHJvY051bWJlcgotICovCi12b2lkCi1Qcm9j U2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpCi17Ci0JaWYgKHByb2NOdW1iZXIg PCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KQotCQllbG9n KEVSUk9SLCAicHJvY051bWJlciBvdXQgb2YgcmFuZ2UiKTsKLQotCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBwcm9jTnVtYmVyKTsKLX0KLQogLyoKICAqIEJl Y29tZUxvY2tHcm91cExlYWRlciAtIGRlc2lnbmF0ZSBwcm9jZXNzIGFzIGxvY2sgZ3JvdXAg bGVhZGVyCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAxNWIzYzdkMGUyLi44M2JiZmUzYzNi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNTExLDkgKzUxMSw2IEBAIGV4dGVybiB2b2lkIENo ZWNrRGVhZExvY2tBbGVydCh2b2lkKTsKIGV4dGVybiBib29sIElzV2FpdGluZ0ZvckxvY2so dm9pZCk7CiBleHRlcm4gdm9pZCBMb2NrRXJyb3JDbGVhbnVwKHZvaWQpOwogCi1leHRlcm4g dm9pZCBQcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVy biB2b2lkIFByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051bWJlcik7Ci0KIGV4dGVy biBQR1BST0MgKkF1eGlsaWFyeVBpZEdldFByb2MoaW50IHBpZCk7CiAKIGV4dGVybiB2b2lk IEJlY29tZUxvY2tHcm91cExlYWRlcih2b2lkKTsKLS0gCjIuMzkuMgoK --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0010-Replace-all-remaining-Latch-calls-with-new-Interr.patch" Content-Disposition: attachment; filename*0="v2-0010-Replace-all-remaining-Latch-calls-with-new-Interr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5OTRkYTZmMGM3ZmI3YjQ1ZTUyNzI5ZGI5MWZjMGI1NTg1MDgwNGNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMzAgQXVnIDIwMjQgMTk6NDg6NTcgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDEwLzEyXSBSZXBsYWNlIGFsbCByZW1haW5pbmcgTGF0Y2gg Y2FsbHMgd2l0aCBuZXcgSW50ZXJydXB0CiBjYWxscwoKVGhpcyBpcyBhIG1lY2hhbmljYWwg cGF0Y2ggdGhhdCByZXBsYWNlcyBhbGwgcmVtYWluaW5nIExhdGNoIGNhbGxzLAphbmQgcmVt b3ZlcyB0aGUgImxhdGNoLmgiIGNvbXBhdGliaWxpdHkgbWFjcm9zLgoKWFhYOiBXZSBtaWdo dCB3YW50IHRvIGtlZXAgdGhlIGNvbXBhdGliaWxpdHkgbWFjcm9zIGZvciBleHRlbnNpb25z IHRob3VnaC4KLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAg ICAgICAgfCAyMCArKy0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAg ICAgICAgICAgIHwgMjIgKysrLS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgICAgIHwgMTEgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9w YXJhbGxlbC5jICAgICAgICAgfCAyMCArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9iYWNrdXAvYmFz ZWJhY2t1cF90aHJvdHRsZS5jICAgICAgfCAxNCArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICA4ICstCiBzcmMvYmFja2VuZC9saWJw cS9hdXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLQogc3JjL2JhY2tlbmQvbGli cHEvYmUtc2VjdXJlLWdzc2FwaS5jICAgICAgICAgIHwgMTcgKystLQogc3JjL2JhY2tlbmQv bGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2Vu ZC9saWJwcS9wcXNpZ25hbC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMjIgKysrLS0tCiBzcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAxOCArKy0tLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jICAgICAgICAgICAgIHwgMTcgKyst LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAgICAgICAgICAgIHwgMTYg KystLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwg MjQgKysrLS0tCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAg ICAgfCAzMiArKysrLS0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jIHwgMzcgKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMgICAgfCA0MyArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAyMyArKystLS0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDI5ICsrKy0tLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDE1ICsrLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyAgICAgICAgICAgICB8ICA3ICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAgICAgfCAyMyArKystLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyAgICB8ICAyICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jICAgICAgICAgfCAyNSAr KystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8 ICA0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAg fCAxMSArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jICAgICAgICAgICAg ICB8ICA0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAg ICAgfCAgNSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJs ZS5jIHwgIDkgKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAg ICAgICAgIHwgIDkgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAg ICAgICAgICAgfCAyNiArKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAu YyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMgICAgICAgICAgICAgfCAxMSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91 dC5jICAgICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1m ZS1oZWxwZXJzLmggICAgICAgfCA0NSArKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9sYXRjaC5oICAgICAgICAgICAgICAgICAgIHwgNzkgLS0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAgIHwgIDEgLQog c3JjL3BvcnQvcGdzbGVlcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0K IHNyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8IDEyICst LQogNDggZmlsZXMgY2hhbmdlZCwgMzMzIGluc2VydGlvbnMoKyksIDM5MCBkZWxldGlvbnMo LSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKCmRp ZmYgLS1naXQgYS9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyBiL2NvbnRyaWIv cGdfcHJld2FybS9hdXRvcHJld2FybS5jCmluZGV4IGQwNjE3MzE3MDYuLjRkYmNlNzY3M2Ig MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCisrKyBiL2Nv bnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCkBAIC0zOSw4ICszOSw4IEBACiAjaW5j bHVkZSAic3RvcmFnZS9kc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbV9yZWdpc3RyeS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0yMjMsMTAgKzIy MywxMCBAQCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCQlpZiAoYXV0b3By ZXdhcm1faW50ZXJ2YWwgPD0gMCkKIAkJewogCQkJLyogV2UncmUgb25seSBkdW1waW5nIGF0 IHNodXRkb3duLCBzbyBqdXN0IHdhaXQgZm9yZXZlci4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCQkgLTFMLAotCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9p ZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJ CQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAtMUws CisJCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0y NTAsMTQgKzI1MCwxNCBAQCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCQkJ fQogCiAJCQkvKiBTbGVlcCB1bnRpbCB0aGUgbmV4dCBkdW1wIHRpbWUuICovCi0JCQkodm9p ZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBkZWxheV9pbl9tcywKLQkJCQkJ CQkgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIGRlbGF5X2luX21zLAor CQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9CiAKIAkJLyogUmVzZXQgdGhlIGxh dGNoLCBsb29wLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9j b250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9jb25uZWN0aW9uLmMKaW5kZXggMTJkMWZlYzBlOC4uYzlhZGVjMTNmYyAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgInBn c3RhdC5oIgogI2luY2x1ZGUgInBvc3RncmVzX2Zkdy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgpAQCAtNzM1LDgg KzczNSw4IEBAIGRvX3NxbF9jb21tYW5kX2VuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIg KnNxbCwgYm9vbCBjb25zdW1lX2lucHV0KQogCS8qCiAJICogSWYgcmVxdWVzdGVkLCBjb25z dW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldC4gKE5vdGUK IAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhpcyBhbGxvd3MgcGdmZHdf Z2V0X3Jlc3VsdCB0byBjYWxsCi0JICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRo ZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwgd2hpY2gKLQkgKiB3b3VsZCBiZSBs YXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQorCSAq IFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVy cnVwdE9yU29ja2V0LAorCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRo ZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5w dXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQogCQlwZ2Zkd19yZXBvcnRfZXJyb3IoRVJS T1IsIE5VTEwsIGNvbm4sIGZhbHNlLCBzcWwpOwpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgcGdm ZHdfY2FuY2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUs IGJvb2wgY29uc3VtZV9pbnB1dCkKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29uc3VtZSB3 aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3RlCiAJICog dGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3X2dldF9j bGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5n IHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxsIFBRZ2V0UmVz dWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVycnVwdE9yU29j a2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVh ZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5wdXQgJiYgIVBR Y29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTQ2NSw3ICsxNDY1LDcgQEAgcGdmZHdfZXhlY19j bGVhbnVwX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5LAogCS8q CiAJICogSWYgcmVxdWVzdGVkLCBjb25zdW1lIHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxl IGZyb20gdGhlIHNvY2tldC4gKE5vdGUKIAkgKiB0aGF0IGlmIGFsbCBkYXRhIGlzIGF2YWls YWJsZSwgdGhpcyBhbGxvd3MgcGdmZHdfZ2V0X2NsZWFudXBfcmVzdWx0IHRvCi0JICogY2Fs bCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRj aE9yU29ja2V0LAorCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBv dmVyaGVhZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCiAJICogd2hpY2ggd291bGQgYmUg bGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkg Ki8KIAlpZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCkBAIC0x NTQ1LDEyICsxNTQ1LDEyIEBAIHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdChQR2Nvbm4gKmNv bm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUsIFBHcmVzdWx0ICoqcmVzdWx0LAogCQkJCQlwZ2Zk d193ZV9jbGVhbnVwX3Jlc3VsdCA9IFdhaXRFdmVudEV4dGVuc2lvbk5ldygiUG9zdGdyZXNG ZHdDbGVhbnVwUmVzdWx0Iik7CiAKIAkJCQkvKiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0 aGluZyB0byBkbyAqLwotCQkJCXdjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJ CQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8Ci0JCQkJCQkJ CQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAgIFBR c29ja2V0KGNvbm4pLAotCQkJCQkJCQkJICAgY3VyX3RpbWVvdXQsIHBnZmR3X3dlX2NsZWFu dXBfcmVzdWx0KTsKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCXdjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJ CQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8CisJCQkJCQkJCQkJ ICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkJICAgUFFz b2NrZXQoY29ubiksCisJCQkJCQkJCQkJICAgY3VyX3RpbWVvdXQsIHBnZmR3X3dlX2NsZWFu dXBfcmVzdWx0KTsKKwkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVApOwogCiAJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApkaWZmIC0tZ2l0IGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0NjUyODUxYjUwLi43NzFiNmU5ODQ2IDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1 ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIK ICNpbmNsdWRlICJwb3N0Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDgyYWEz ZDQ4OS4uMGYwMjI5ZmYyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mcmVl c3BhY2UuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCkBAIC0yNjA5LDExICsyNjEwLDExIEBAIGxhenlfdHJ1bmNh dGVfaGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCQkJcmV0dXJuOwogCQkJfQogCi0JCQko dm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBWQUNVVU1fVFJVTkNBVEVf TE9DS19XQUlUX0lOVEVSVkFMLAotCQkJCQkJCSBXQUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FU RSk7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo MSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIFZBQ1VVTV9U UlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUwsCisJCQkJCQkJCSBXQUlUX0VWRU5UX1ZBQ1VV TV9UUlVOQ0FURSk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtF VVApOwogCQl9CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5j CmluZGV4IDlhYmExN2JkNWUuLjQ5Y2QzNTcwMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vcGFyYWxsZWwuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NwaW4uaCIKQEAgLTc0MiwxMiArNzQzLDEyIEBAIFdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJICogbWlnaHQgYWxz byBnZXQgc2V0IGZvciBzb21lIG90aGVyIHJlYXNvbiwgYnV0IGlmIHNvIHdlJ2xsCiAJCQkJ ICoganVzdCBlbmQgdXAgd2FpdGluZyBmb3IgdGhlIHNhbWUgd29ya2VyIGFnYWluLgogCQkJ CSAqLwotCQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hf U0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgICAtMSwgV0FJVF9FVkVOVF9C R1dPUktFUl9TVEFSVFVQKTsKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJU VVApOwogCi0JCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCX0KIAkJfQogCkBAIC04NjIsOSAr ODYzLDEwIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRl eHQgKnBjeHQpCiAJCQl9CiAJCX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdM X0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAotCQkJCQkJIFdBSVRfRVZF TlRfUEFSQUxMRUxfRklOSVNIKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJ IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAorCQkJCQkJCSBXQUlU X0VWRU5UX1BBUkFMTEVMX0ZJTklTSCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJaWYgKHBjeHQtPnRvYyAhPSBOVUxMKQpAQCAtMTAx Nyw3ICsxMDE5LDcgQEAgSGFuZGxlUGFyYWxsZWxNZXNzYWdlSW50ZXJydXB0KHZvaWQpCiB7 CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9 IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ2Z1bmNzLmMKaW5kZXggYjBjNmQ3YzY4Ny4uNzdkMjU0NDdlOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5k YnkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCkBAIC03MTgsMTcgKzcxOCwxNyBAQCBwZ19wcm9tb3RlKFBHX0ZVTkNUSU9O X0FSR1MpCiAJewogCQlpbnQJCQlyYzsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkpCiAJCQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIAogCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJ CSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAot CQkJCQkgICAxMDAwTCAvIFdBSVRTX1BFUl9TRUNPTkQsCi0JCQkJCSAgIFdBSVRfRVZFTlRf UFJPTU9URSk7CisJCXJjID0gV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NU TUFTVEVSX0RFQVRILAorCQkJCQkJICAgMTAwMEwgLyBXQUlUU19QRVJfU0VDT05ELAorCQkJ CQkJICAgV0FJVF9FVkVOVF9QUk9NT1RFKTsKIAogCQkvKgogCQkgKiBFbWVyZ2VuY3kgYmFp bG91dCBpZiBwb3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0aGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgYi9z cmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jCmluZGV4IDQ0Nzc5NDVl NjEuLjE2YmM5M2RkYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFj a3VwX3Rocm90dGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhy b3R0bGUuYwpAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgImJhY2t1cC9iYXNlYmFja3Vw X3NpbmsuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg YmJzaW5rX3Rocm90dGxlCkBAIC0xNjMsNyArMTYzLDcgQEAgdGhyb3R0bGUoYmJzaW5rX3Ro cm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQlpZiAoc2xlZXAgPD0gMCkKIAkJ CWJyZWFrOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyogV2UncmUgZWF0aW5nIGEgcG90ZW50 aWFsbHkgc2V0IGxhdGNoLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwpAQCAtMTcyLDEyICsxNzIsMTIgQEAgdGhyb3R0bGUoYmJzaW5r X3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQkgKiAoVEFSX1NFTkRfU0la RSAvIHRocm90dGxpbmdfc2FtcGxlICogZWxhcHNlZF9taW5fdW5pdCkgc2hvdWxkIGJlCiAJ CSAqIHRoZSBtYXhpbXVtIHRpbWUgdG8gc2xlZXAuIFRodXMgdGhlIGNhc3QgdG8gbG9uZyBp cyBzYWZlLgogCQkgKi8KLQkJd2FpdF9yZXN1bHQgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCQkJV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkJCShsb25nKSAoc2xlZXAgLyAxMDAwKSwKLQkJCQkJCQkJV0FJVF9FVkVOVF9C QVNFX0JBQ0tVUF9USFJPVFRMRSk7CisJCXdhaXRfcmVzdWx0ID0gV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJCVdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJKGxvbmcpIChz bGVlcCAvIDEwMDApLAorCQkJCQkJCQkJV0FJVF9FVkVOVF9CQVNFX0JBQ0tVUF9USFJPVFRM RSk7CiAKLQkJaWYgKHdhaXRfcmVzdWx0ICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAod2FpdF9y ZXN1bHQgJiBXTF9JTlRFUlJVUFQpCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJ CS8qIERvbmUgd2FpdGluZz8gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDhlZDUwM2Ux YzEuLjBmZDMyM2ViMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtMTQwLDYgKzE0MCw3 IEBACiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1h dC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTE4MTIsNyArMTgx Myw3IEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKQogCW5vdGlmeUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwogCiAJLyogbWFrZSBzdXJlIHRoZSBldmVudCBpcyBwcm9jZXNzZWQg aW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bS5jCmluZGV4IDdkOGU5ZDIwNDUuLjRmZTM1NWRkYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bS5jCkBAIC0yMzg3LDggKzIzODcsOCBAQCB2YWN1dW1fZGVsYXlfcG9pbnQodm9pZCkKIAkJ LyoKIAkJICogV2UgZG9uJ3Qgd2FudCB0byBpZ25vcmUgcG9zdG1hc3RlciBkZWF0aCBkdXJp bmcgdmVyeSBsb25nIHZhY3V1bXMKIAkJICogd2l0aCB2YWN1dW1fY29zdF9kZWxheSBjb25m aWd1cmVkLiAgV2UgY2FuJ3QgdXNlIHRoZSB1c3VhbAotCQkgKiBXYWl0TGF0Y2goKSBhcHBy b2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBtaWNyb3NlY29uZC1iYXNlZCBzbGVlcAotCQkg KiBkdXJhdGlvbnMgYWJvdmUuCisJCSAqIFdhaXRJbnRlcnJ1cHQoKSBhcHByb2FjaCBoZXJl IGJlY2F1c2Ugd2Ugd2FudCBtaWNyb3NlY29uZC1iYXNlZAorCQkgKiBzbGVlcCBkdXJhdGlv bnMgYWJvdmUuCiAJCSAqLwogCQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIVBvc3RtYXN0 ZXJJc0FsaXZlKCkpCiAJCQlleGl0KDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5j CmluZGV4IDVkNGZmZTk4OWMuLjk3NTFkZmViMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R2F0aGVyLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlR2F0 aGVyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHF1ZXVlLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCkBA IC0zNzUsOSArMzc2LDEwIEBAIGdhdGhlcl9yZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVy c3RhdGUpCiAJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qIE5vdGhpbmcgdG8gZG8gZXhjZXB0 IHdhaXQgZm9yIGRldmVsb3BtZW50cy4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRj aCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJ VF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJ CQkgV0FJVF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7CisJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJbnZpc2l0ZWQgPSAwOwogCQl9CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tlbmQvbGlicHEv YXV0aC5jCmluZGV4IDJiNjA3YzUyNzAuLjA5MjlhOTg3NGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYnBxL2F1dGguYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKQEAg LTE2NjMsOCArMTY2Myw4IEBAIGludGVycHJldF9pZGVudF9yZXNwb25zZShjb25zdCBjaGFy ICppZGVudF9yZXNwb25zZSwKICAqCW93bnMgdGhlIHRjcCBjb25uZWN0aW9uIHRvICJsb2Nh bF9hZGRyIgogICoJSWYgdGhlIHVzZXJuYW1lIGlzIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQs IGNoZWNrIHRoZSB1c2VybWFwLgogICoKLSAqCVhYWDogVXNpbmcgV2FpdExhdGNoT3JTb2Nr ZXQoKSBhbmQgZG9pbmcgYSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlmIHRoZQotICoJbGF0 Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25zaXZlbmVzcyB0byB0aW1lb3V0 cy9jYW5jZWxsYXRpb25zLgorICoJWFhYOiBVc2luZyBXYWl0SW50ZXJydXB0T3JTb2NrZXQo KSBhbmQgZG9pbmcgYSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlmIHRoZQorICoJaW50ZXJy dXB0IHdhcyBwZW5kaW5nIHdvdWxkIGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvIHRp bWVvdXRzL2NhbmNlbGxhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKIGlkZW50X2luZXQoaGJh UG9ydCAqcG9ydCkKQEAgLTMwOTMsOCArMzA5Myw4IEBAIFBlcmZvcm1SYWRpdXNUcmFuc2Fj dGlvbihjb25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwgY29uc3QgY2hh ciAqcG9yCiAJICogcGFja2V0cyB0byBvdXIgcG9ydCB0aHVzIGNhdXNpbmcgdXMgdG8gcmV0 cnkgaW4gYSBsb29wIGFuZCBuZXZlciB0aW1lCiAJICogb3V0LgogCSAqCi0JICogWFhYOiBV c2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgaWYKLQkgKiB0aGUgbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRoZSByZXNw b25zaXZlbmVzcyB0bworCSAqIFhYWDogVXNpbmcgV2FpdEludGVycnVwdE9yU29ja2V0KCkg YW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIGlmIHRoZSBpbnRlcnJ1 cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KIAkg KiB0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgogCSAqLwogCWdldHRpbWVvZmRheSgmZW5kdGlt ZSwgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3Nz YXBpLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKaW5kZXggMmQz NmM3NjMyNC4uZGU2MDMwYjQwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLWdzc2FwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3Nh cGkuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC00MTQsNyArNDE1LDcgQEAg YmVfZ3NzYXBpX3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAv KgogICogUmVhZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBvZmYgdGhlIHdpcmUs IHdhaXRpbmcgdXNpbmcKLSAqIFdhaXRMYXRjaE9yU29ja2V0IGlmIHdlIHdvdWxkIGJsb2Nr LgorICogV2FpdEludGVycnVwdE9yU29ja2V0IGlmIHdlIHdvdWxkIGJsb2NrLgogICoKICAq IFJlc3VsdHMgYXJlIHJlYWQgaW50byBQcUdTU1JlY3ZCdWZmZXIuCiAgKgpAQCAtNDUwLDkg KzQ1MSw5IEBAIHJlYWRfb3Jfd2FpdChQb3J0ICpwb3J0LCBzc2l6ZV90IGxlbikKIAkJICov CiAJCWlmIChyZXQgPD0gMCkKIAkJewotCQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJ CQkJCQkgIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CisJCQlX YWl0SW50ZXJydXB0T3JTb2NrZXQoMCwKKwkJCQkJCQkJICBXTF9TT0NLRVRfUkVBREFCTEUg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgIHBvcnQtPnNvY2ssIDAsIFdBSVRf RVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKIAogCQkJLyoKIAkJCSAqIElmIHdlIGdvdCBiYWNr IHplcm8gYnl0ZXMsIGFuZCB0aGVuIHdhaXRlZCBvbiB0aGUgc29ja2V0IHRvIGJlCkBAIC00 ODksNyArNDkwLDcgQEAgcmVhZF9vcl93YWl0KFBvcnQgKnBvcnQsIHNzaXplX3QgbGVuKQog ICoKICAqIE5vdGUgdGhhdCB1bmxpa2UgdGhlIGJlX2dzc2FwaV9yZWFkL2JlX2dzc2FwaV93 cml0ZSBmdW5jdGlvbnMsIHRoaXMKICAqIGZ1bmN0aW9uIFdJTEwgYmxvY2sgb24gdGhlIHNv Y2tldCB0byBiZSByZWFkeSBmb3IgcmVhZC93cml0ZSAodXNpbmcKLSAqIFdhaXRMYXRjaE9y U29ja2V0KSBhcyBhcHByb3ByaWF0ZSB3aGlsZSBlc3RhYmxpc2hpbmcgdGhlIEdTU0FQSQor ICogV2FpdEludGVycnVwdE9yU29ja2V0KSBhcyBhcHByb3ByaWF0ZSB3aGlsZSBlc3RhYmxp c2hpbmcgdGhlIEdTU0FQSQogICogc2Vzc2lvbi4KICAqLwogc3NpemVfdApAQCAtNjY4LDkg KzY2OSw5IEBAIHNlY3VyZV9vcGVuX2dzc2FwaShQb3J0ICpwb3J0KQogCQkJCS8qIFdhaXQg YW5kIHJldHJ5IGlmIHdlIGNvdWxkbid0IHdyaXRlIHlldCAqLwogCQkJCWlmIChyZXQgPD0g MCkKIAkJCQl7Ci0JCQkJCVdhaXRMYXRjaE9yU29ja2V0KE5VTEwsCi0JCQkJCQkJCQkgIFdM X1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJICBw b3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CisJCQkJCVdhaXRJ bnRlcnJ1cHRPclNvY2tldCgwLAorCQkJCQkJCQkJCSAgV0xfU09DS0VUX1dSSVRFQUJMRSB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlU X0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CiAJCQkJCWNvbnRpbnVlOwogCQkJCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyBiL3NyYy9i YWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMKaW5kZXggMWIzNjA3Nzg5MS4uMzA5 ZjAzNjI3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5z c2wuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0z Miw3ICszMiw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2gu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCkBAIC01MTksOCArNTE5LDggQEAgYWxvb3A6CiAJCQkJZWxzZQogCQkJ CQl3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEg7 CiAKLQkJCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwgd2FpdGZvciwgcG9ydC0+ c29jaywgMCwKLQkJCQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BFTl9TRVJWRVIpOworCQkJ CSh2b2lkKSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMCwgd2FpdGZvciwgcG9ydC0+c29jaywg MCwKKwkJCQkJCQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKIAkJCQlnb3Rv IGFsb29wOwogCQkJY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKIAkJCQlpZiAociA8IDAgJiYg ZXJybm8gIT0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3Ny Yy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCBmZDczNWUyZmVhLi42NjA2MmM0ZDc1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tlbmQv bGlicHEvcHFtcS5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibGlicHEvcHFtcS5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgpAQCAtMTgxLDkgKzE4Miw5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBt c2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlpZiAocmVzdWx0ICE9IFNI TV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlM YXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSBX QUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UpOwotCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFM X1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJ CQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1BVVF9NRVNTQUdFKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMg Yi9zcmMvYmFja2VuZC9saWJwcS9wcXNpZ25hbC5jCmluZGV4IDIyYTE2YzUwYjIuLjJmNWVl YmRmZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bxc2lnbmFsLmMKKysrIGIv c3JjL2JhY2tlbmQvbGlicHEvcHFzaWduYWwuYwpAQCAtNDIsNyArNDIsNyBAQCBwcWluaXRt YXNrKHZvaWQpCiB7CiAJc2lnZW1wdHlzZXQoJlVuQmxvY2tTaWcpOwogCi0JLyogTm90ZTog SW5pdGlhbGl6ZUxhdGNoU3VwcG9ydCgpIG1vZGlmaWVzIFVuQmxvY2tTaWcuICovCisJLyog Tm90ZTogSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKSBtb2RpZmllcyBVbkJsb2NrU2ln LiAqLwogCiAJLyogRmlyc3Qgc2V0IGFsbCBzaWduYWxzLCB0aGVuIGNsZWFyIHNvbWUuICov CiAJc2lnZmlsbHNldCgmQmxvY2tTaWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYwppbmRleCA3ZDA4NzdjOTVlLi43ZWM5MWI2YWM4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYwpAQCAtODksOCArODksOCBAQAogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1z aWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTU3MCwxMCArNTcwLDEw IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAkJYm9vbAkJY2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBUaGlz IGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdExh dGNoLAorCQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1h bCB1c2Ugb2YgV2FpdEludGVycnVwdCwKIAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8gc2xl ZXAgYmVmb3JlIHRoZSBmaXJzdCBsYXVuY2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNzLiAg U28gaXQncyBXYWl0TGF0Y2gsIHRoZW4gUmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IKLQkJ ICogd2FrZW5pbmcgY29uZGl0aW9ucy4KKwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2FpdElu dGVycnVwdCwgdGhlbiBDbGVhckludGVycnVwdCwgdGhlbiBjaGVjaworCQkgKiBmb3Igd2Fr ZW5pbmcgY29uZGl0aW9ucy4KIAkJICovCiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVw KCFkbGlzdF9pc19lbXB0eSgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2VycyksCkBA IC01ODEsMTQgKzU4MSwxNCBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNoYXIgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyoKIAkJICogV2FpdCB1bnRp bCBuYXB0aW1lIGV4cGlyZXMgb3Igd2UgZ2V0IHNvbWUgdHlwZSBvZiBzaWduYWwgKGFsbCB0 aGUKLQkJICogc2lnbmFsIGhhbmRsZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFNldExh dGNoKS4KKwkJICogc2lnbmFsIGhhbmRsZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFJh aXNlSW50ZXJydXB0KS4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK LQkJCQkJCSAobmFwLnR2X3NlYyAqIDEwMDBMKSArIChuYXAudHZfdXNlYyAvIDEwMDBMKSwK LQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1fTUFJTik7CisJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRF UlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgKG5h cC50dl9zZWMgKiAxMDAwTCkgKyAobmFwLnR2X3VzZWMgLyAxMDAwTCksCisJCQkJCQkJIFdB SVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCUhhbmRs ZUF1dG9WYWNMYXVuY2hlckludGVycnVwdHMoKTsKIApAQCAtMTM0NSw3ICsxMzQ1LDcgQEAg c3RhdGljIHZvaWQKIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJZ290 X1NJR1VTUjIgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9i Z3dvcmtlci5jCmluZGV4IGI4Mzk2N2NkYTMuLjMyODg0ZWViY2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJwb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKQEAgLTEyMjYsOSArMTIyNiw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1 cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogCQlpZiAo c3RhdHVzICE9IEJHV0hfTk9UX1lFVF9TVEFSVEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBX YWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RF Ul9ERUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgMCwKKwkJCQkJCSAg IFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1B U1RFUl9ERUFUSCkKIAkJewpAQCAtMTIzNiw3ICsxMjM2LDcgQEAgV2FpdEZvckJhY2tncm91 bmRXb3JrZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3Qg KnBpZHApCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJu IHN0YXR1czsKQEAgLTEyNjksOSArMTI2OSw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2Vy U2h1dGRvd24oQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogCQlpZiAoc3RhdHVz ID09IEJHV0hfU1RPUFBFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0 Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCi0J CQkJCSAgIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRl cnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRF UlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9C R1dPUktFUl9TSFVURE9XTik7CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkK IAkJewpAQCAtMTI3OSw3ICsxMjc5LDcgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0 ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQog Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3cml0ZXIuYwppbmRleCAwZjc1NTQ4NzU5Li5hNTVjOTkxZGYzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dyaXRlci5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0yMjQsNyArMjI1 LDcgQEAgQmFja2dyb3VuZFdyaXRlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIAkJaW50CQkJcmM7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVh ZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJSGFuZGxlTWFpbkxv b3BJbnRlcnJ1cHRzKCk7CiAKQEAgLTMwMiw5ICszMDMsOSBAQCBCYWNrZ3JvdW5kV3JpdGVy TWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkg KiBkb3duIHdpdGggbGF0Y2ggZXZlbnRzIHRoYXQgYXJlIGxpa2VseSB0byBoYXBwZW4gZnJl cXVlbnRseSBkdXJpbmcKIAkJICogbm9ybWFsIG9wZXJhdGlvbi4KIAkJICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICBCZ1dyaXRlckRlbGF5IC8qIG1zICov ICwgV0FJVF9FVkVOVF9CR1dSSVRFUl9NQUlOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEg PDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICBCZ1dyaXRlckRl bGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dSSVRFUl9NQUlOKTsKIAogCQkvKgogCQkg KiBJZiBubyBsYXRjaCBldmVudCBhbmQgQmdCdWZmZXJTeW5jIHNheXMgbm90aGluZydzIGhh cHBlbmluZywgZXh0ZW5kCkBAIC0zMjksMTAgKzMzMCwxMCBAQCBCYWNrZ3JvdW5kV3JpdGVy TWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJ LyogQXNrIGZvciBub3RpZmljYXRpb24gYXQgbmV4dCBidWZmZXIgYWxsb2NhdGlvbiAqLwog CQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihNeVByb2NOdW1iZXIpOwogCQkJLyogU2xlZXAg Li4uICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENI X1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBCZ1dy aXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKLQkJCQkJCQkgV0FJVF9FVkVOVF9CR1dS SVRFUl9ISUJFUk5BVEUpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIEJnV3JpdGVyRGVsYXkgKiBISUJF Uk5BVEVfRkFDVE9SLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUp OwogCQkJLyogUmVzZXQgdGhlIG5vdGlmaWNhdGlvbiByZXF1ZXN0IGluIGNhc2Ugd2UgdGlt ZWQgb3V0ICovCiAJCQlTdHJhdGVneU5vdGlmeUJnV3JpdGVyKC0xKTsKIAkJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKaW5kZXggYjMzMDMzYjI5MC4uMjY0ZWYxYmM0MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC00NCw4ICs0NCw4IEBACiAj aW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Rz bS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9s YXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0zMjgsNyArMzI4LDcg QEAgU3lzTG9nZ2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2Rh dGFfbGVuKQogCXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CiAKIAkvKgotCSAqIFNl dCB1cCBhIHJldXNhYmxlIFdhaXRFdmVudFNldCBvYmplY3Qgd2UnbGwgdXNlIHRvIHdhaXQg Zm9yIG91ciBsYXRjaCwKKwkgKiBTZXQgdXAgYSByZXVzYWJsZSBXYWl0RXZlbnRTZXQgb2Jq ZWN0IHdlJ2xsIHVzZSB0byB3YWl0IGZvciBpbnRlcnJ1cHRzLAogCSAqIGFuZCAoZXhjZXB0 IG9uIFdpbmRvd3MpIG91ciBzb2NrZXQuCiAJICoKIAkgKiBVbmxpa2UgYWxsIG90aGVyIHBv c3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2VzLCB3ZSdsbCBpZ25vcmUgcG9zdG1hc3RlcgpAQCAt MzM4LDcgKzMzOCw3IEBAIFN5c0xvZ2dlck1haW4oY2hhciAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKiAoaW5jbHVkaW5nIHRoZSBwb3N0bWFzdGVyKS4K IAkgKi8KIAl3ZXMgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JQWRkV2FpdEV2 ZW50VG9TZXQod2VzLCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsIDEgPDwgSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRUb1NldCh3ZXMs IFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwgMSA8PCBJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVAsIE5VTEwpOwogI2lmbmRlZiBXSU4zMgogCUFkZFdhaXRFdmVudFRvU2V0KHdl cywgV0xfU09DS0VUX1JFQURBQkxFLCBzeXNsb2dQaXBlWzBdLCAwLCBOVUxMKTsKICNlbmRp ZgpAQCAtMzU2LDcgKzM1Niw3IEBAIFN5c0xvZ2dlck1haW4oY2hhciAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKICNlbmRpZgogCiAJCS8qIENsZWFyIGFueSBh bHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCS8qCiAJCSAq IFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCkBA IC0xMTg1LDcgKzExODUsNyBAQCBwaXBlVGhyZWFkKHZvaWQgKmFyZykKIAkJCWlmIChmdGVs bChzeXNsb2dGaWxlKSA+PSBMb2dfUm90YXRpb25TaXplICogMTAyNEwgfHwKIAkJCQkoY3N2 bG9nRmlsZSAhPSBOVUxMICYmIGZ0ZWxsKGNzdmxvZ0ZpbGUpID49IExvZ19Sb3RhdGlvblNp emUgKiAxMDI0TCkgfHwKIAkJCQkoanNvbmxvZ0ZpbGUgIT0gTlVMTCAmJiBmdGVsbChqc29u bG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAqIDEwMjRMKSkKLQkJCQlTZXRMYXRjaChN eUxhdGNoKTsKKwkJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAp OwogCQl9CiAJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzeXNsb2dnZXJTZWN0aW9uKTsKIAl9 CkBAIC0xMTk2LDggKzExOTYsOCBAQCBwaXBlVGhyZWFkKHZvaWQgKmFyZykKIAkvKiBpZiB0 aGVyZSdzIGFueSBkYXRhIGxlZnQgdGhlbiBmb3JjZSBpdCBvdXQgbm93ICovCiAJZmx1c2hf cGlwZV9pbnB1dChsb2didWZmZXIsICZieXRlc19pbl9sb2didWZmZXIpOwogCi0JLyogc2V0 IHRoZSBsYXRjaCB0byB3YWtlbiB0aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAq LwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIHNldCB0aGUgaW50ZXJydXB0IHRvIHdha2Vu IHRoZSBtYWluIHRocmVhZCwgd2hpY2ggd2lsbCBxdWl0ICovCisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZz eXNsb2dnZXJTZWN0aW9uKTsKIAlfZW5kdGhyZWFkKCk7CkBAIC0xNTkyLDUgKzE1OTIsNSBA QCBzdGF0aWMgdm9pZAogc2lnVXNyMUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJcm90YXRp b25fcmVxdWVzdGVkID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCAwOTZiMWMyZTAzLi42NzhkODZlMGQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtMzgsOCArMzgsOCBA QAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nz aWduYWwuaCIKQEAgLTMxNSwxMCArMzE1LDEwIEBAIFdhbFN1bW1hcml6ZXJNYWluKGNoYXIg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFNvIGEgcmVh bGx5IGZhc3QgcmV0cnkgdGltZSBkb2Vzbid0IHNlZW0gdG8gYmUgZXNwZWNpYWxseQogCQkg KiBiZW5lZmljaWFsLCBhbmQgaXQgd2lsbCBjbHV0dGVyIHRoZSBsb2dzLgogCQkgKi8KLQkJ KHZvaWQpIFdhaXRMYXRjaChOVUxMLAotCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAotCQkJCQkJIDEwMDAwLAotCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1B UklaRVJfRVJST1IpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgwLAorCQkJCQkJCSBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgMTAwMDAsCisJCQkJCQkJ IFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfRVJST1IpOwogCX0KIAogCS8qIFdlIGNhbiBu b3cgaGFuZGxlIGVyZXBvcnQoRVJST1IpICovCkBAIC02MzAsOCArNjMwLDggQEAgR2V0T2xk ZXN0VW5zdW1tYXJpemVkTFNOKFRpbWVMaW5lSUQgKnRsaSwgYm9vbCAqbHNuX2lzX2V4YWN0 KQogICoKICAqIFRoaXMgbWlnaHQgbm90IHdvcmssIGJlY2F1c2UgdGhlcmUncyBubyBndWFy YW50ZWUgdGhhdCB0aGUgV0FMIHN1bW1hcml6ZXIKICAqIHByb2Nlc3Mgd2FzIHN1Y2Nlc3Nm dWxseSBzdGFydGVkLCBhbmQgaXQgYWxzbyBtaWdodCBoYXZlIHN0YXJ0ZWQgYnV0Ci0gKiBz dWJzZXF1ZW50bHkgdGVybWluYXRlZC4gU28sIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2Vz LCB0aGlzIHdpbGwgZ2V0IHRoZQotICogbGF0Y2ggc2V0LCBidXQgdGhlcmUncyBubyBndWFy YW50ZWUuCisgKiBzdWJzZXF1ZW50bHkgdGVybWluYXRlZC4gU28sIHVuZGVyIG5vcm1hbCBj aXJjdW1zdGFuY2VzLCB0aGlzIHdpbGwgc2VuZAorICogdGhlIGludGVycnVwdCwgYnV0IHRo ZXJlJ3Mgbm8gZ3VhcmFudGVlLgogICovCiB2b2lkCiBXYWtldXBXYWxTdW1tYXJpemVyKHZv aWQpCkBAIC0xNjM3LDExICsxNjM3LDExIEBAIHN1bW1hcml6ZXJfd2FpdF9mb3Jfd2FsKHZv aWQpCiAJfQogCiAJLyogT0ssIG5vdyBzbGVlcC4gKi8KLQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJIHNsZWVwX3F1YW50YSAqIE1TX1BFUl9TTEVFUF9RVUFOVFVNLAot CQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9XQUwpOwotCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9X QUtFVVAsCisJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0s CisJCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9XQUwpOworCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkvKiBSZXNldCBjb3VudCBvZiBw YWdlcyByZWFkLiAqLwogCXBhZ2VzX3JlYWRfc2luY2VfbGFzdF9zbGVlcCA9IDA7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IGM3NDM2OTk1M2YuLjIyOTRkNWQ0MzcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19s c24uaCIKQEAgLTIzNywxNiArMjM3LDE2IEBAIGxpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hh ciAqY29ubmluZm8sIGJvb2wgcmVwbGljYXRpb24sIGJvb2wgbG9naWNhbCwKIAkJZWxzZQog CQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJcmMgPSBXYWl0TGF0Y2hP clNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9M QVRDSF9TRVQgfCBpb19mbGFnLAotCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNv bm4pLAotCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJ VkVSX0NPTk5FQ1QpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8 IFdMX0lOVEVSUlVQVCB8IGlvX2ZsYWcsCisJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0 cmVhbUNvbm4pLAorCQkJCQkJCQkgICAwLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xJQlBR V0FMUkVDRUlWRVJfQ09OTkVDVCk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChy YyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIAkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKCk7CiAJCX0KIApAQCAt ODQ4LDE3ICs4NDgsMTcgQEAgbGlicHFyY3ZfUFFnZXRSZXN1bHQoUEdjb25uICpzdHJlYW1D b25uKQogCQkgKiBzaW5jZSB3ZSdsbCBnZXQgaW50ZXJydXB0ZWQgYnkgc2lnbmFscyBhbmQg Y2FuIGhhbmRsZSBhbnkKIAkJICogaW50ZXJydXB0cyBoZXJlLgogCQkgKi8KLQkJcmMgPSBX YWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVB VEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAotCQkJCQkJCSAgIFdMX0xBVENIX1NFVCwKLQkJ CQkJCQkgICBQUXNvY2tldChzdHJlYW1Db25uKSwKLQkJCQkJCQkgICAwLAotCQkJCQkJCSAg IFdBSVRfRVZFTlRfTElCUFFXQUxSRUNFSVZFUl9SRUNFSVZFKTsKKwkJcmMgPSBXYWl0SW50 ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJ CSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJ CQkgICBXTF9JTlRFUlJVUFQsCisJCQkJCQkJCSAgIFBRc29ja2V0KHN0cmVhbUNvbm4pLAor CQkJCQkJCQkgICAwLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJf UkVDRUlWRSk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAkJCVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpp bmRleCBlN2Y3ZDRjNWU0Li4zMzRiNWFlMmY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTY1 LDYgKzE2NSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC04MDQsMTMgKzgwNSwxMyBAQCBMb2dpY2Fs UGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJCWludAkJCXJjOwog CiAJCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQkJCXJjID0gV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCi0JCQkJCQkJICAgMTAwMEwsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9M T0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCQkJCXJjID0gV2FpdEludGVycnVwdCgx IDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIDEwMDBM LAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7 CiAKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQorCQkJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJfQogCQl9CiAJCWVsc2UKQEAgLTk5MCw3 ICs5OTEsNyBAQCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQog ewogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVu ZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTExODIsMTQgKzExODMsMTQg QEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBu Ynl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dP VUxEX0JMT0NLKTsKIAogCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KLQkJcmMgPSBX YWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFM X01TLAotCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfU0VORF9EQVRBKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKKwkJCQkJCSAgIFdBSVRf RVZFTlRfTE9HSUNBTF9BUFBMWV9TRU5EX0RBVEEpOwogCi0JCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtMTI1NCwxMyArMTI1NSwx MyBAQCBwYV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywKIAkJCWJyZWFrOwogCiAJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLwotCQko dm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgMTBMLAotCQkJCQkJIFdBSVRf RVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCQkodm9pZCkg V2FpdEludGVycnVwdCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkJIDEwTCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NU QVRFX0NIQU5HRSk7CiAKIAkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4u ICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3Vy cmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRl eCA4NDA4MWRjZjgzLi43ODI0NGFmN2M5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAicmVw bGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBA IC0yMjEsMTMgKzIyMiwxMyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3 ZSBnZW5lcmFsbHkgZG9uJ3QgZ2V0IG5vdGlmaWVkIHZpYSBsYXRjaAogCQkgKiBhYm91dCB0 aGUgd29ya2VyIGF0dGFjaC4gIEJ1dCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0 IGxvbmcuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAg MTBMLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1 cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwg V0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAJfQpAQCAtNTUzLDEzICs1NTQsMTMg QEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsIGludCBzaWdubykKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7CiAKIAkJLyogV2FpdCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8g d2FpdCBsb25nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAg MTBMLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1 cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwg V0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTU5NCwxMyArNTk1LDEzIEBA IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLCBpbnQgc2lnbm8pCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OwogCiAJCS8qIFdhaXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdh aXQgbG9uZy4gKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFU Q0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEw TCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CisJCXJjID0gV2FpdEludGVycnVw dCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBMLCBX QUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dOKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTEyMjEsMTQgKzEyMjIsMTQg QEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRleHRE ZWxldGUoc3ViY3R4KTsKIAogCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICB3YWl0X3RpbWUsCi0JCQkJCSAgIFdB SVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0 KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICB3YWl0X3Rp bWUsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CiAKLQkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTF9XQUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggNTEw NzIyOTdmZC4uMzQzYmYzYTUyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2xvdHN5bmMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3NuYXBidWlsZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTEyNTQsMTMgKzEyNTUs MTMgQEAgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkKQog CQlzbGVlcF9tcyA9IE1JTl9TTE9UU1lOQ19XT1JLRVJfTkFQVElNRV9NUzsKIAl9CiAKLQly YyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCSAgIHNsZWVwX21zLAotCQkJCSAgIFdB SVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7CisJcmMgPSBXYWl0SW50ZXJy dXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgc2xlZXBf bXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7CiAK LQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJaWYg KHJjICYgV0xfSU5URVJSVVBUKQorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVApOwogfQogCiAvKgpAQCAtMTU5MiwxMyArMTU5MywxMyBAQCBTaHV0RG93blNs b3RTeW5jKHZvaWQpCiAJCWludAkJCXJjOwogCiAJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0 IGV4cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZyAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5D X1NIVVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQTElDQVRJT05f U0xPVFNZTkNfU0hVVERPV04pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYg KHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAkJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZTAzZTc2MTM5Mi4uYTU5YTg1OWY1YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMTEs NiArMTExLDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCkBAIC0yMTAsMTEgKzIxMSwxMSBAQCB3YWl0X2Zvcl9yZWxhdGlv bl9zdGF0ZV9jaGFuZ2UoT2lkIHJlbGlkLCBjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQlpZiAo IXdvcmtlcikKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK LQkJCQkJCSAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAs CisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAorCQkJCQkJCSAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hB TkdFKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTI2Mywx MiArMjY0LDEyIEBAIHdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9jaGFuZ2UoY2hhciBleHBlY3Rl ZF9zdGF0ZSkKIAkJICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQgYSBsYXRjaCBzaWduYWwg YmFjayBmcm9tIHRoZSBhcHBseSB3b3JrZXIsCiAJCSAqIGJ1dCB1c2UgYSB0aW1lb3V0IGlu IGNhc2UgaXQgZGllcyB3aXRob3V0IHNlbmRpbmcgb25lLgogCQkgKi8KLQkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxf U1lOQ19TVEFURV9DSEFOR0UpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xP R0lDQUxfU1lOQ19TVEFURV9DSEFOR0UpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJcmV0 dXJuIGZhbHNlOwpAQCAtNzczLDEyICs3NzQsMTIgQEAgY29weV9yZWFkX2RhdGEodm9pZCAq b3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCS8qCiAJCSAqIFdhaXQgZm9y IG1vcmUgZGF0YSBvciBsYXRjaC4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2hPclNvY2tl dChNeUxhdGNoLAotCQkJCQkJCQkgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfTEFUQ0hfU0VU IHwKLQkJCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJ CQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCwK KwkJCQkJCQkJCSBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9JTlRFUlJVUFQgfAorCQkJCQkJ CQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJIGZkLCAx MDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSk7CiAKLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsK IAl9CiAKIAlyZXR1cm4gYnl0ZXNyZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggMGZiNTc3ZDMyOC4uMDA1MDc3NjgyNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNzcsNiArMTc3LDcg QEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxl LmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKQEAgLTM3MzksMTUgKzM3NDAsMTUgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChY TG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCWVsc2UKIAkJCXdhaXRfdGltZSA9IE5BUFRJ TUVfUEVSX0NZQ0xFOwogCi0JCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJ CQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9MQVRDSF9TRVQgfAotCQkJCQkJCSAg IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAgIGZkLCB3YWl0 X3RpbWUsCi0JCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4pOworCQly YyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCwKKwkJCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfSU5URVJSVVBUIHwKKwkJ CQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAg IGZkLCB3YWl0X3RpbWUsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9N QUlOKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVS UlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwppbmRleCBkOGE1MjQwNWIw Li5lNzRjMTUzNDAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5j cmVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCkBAIC04MSw2 ICs4MSw3IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNl bmRlcl9wcml2YXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5j bHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCkBAIC0yMzAsNyArMjMxLDcgQEAgU3luY1JlcFdh aXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0KQogCQlpbnQJCQlyYzsKIAog CQkvKiBNdXN0IHJlc2V0IHRoZSBsYXRjaCBiZWZvcmUgdGVzdGluZyBzdGF0ZS4gKi8KLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIAogCQkvKgogCQkgKiBBY3F1aXJpbmcgdGhlIGxvY2sgaXMgbm90IG5l ZWRlZCwgdGhlIGxhdGNoIGVuc3VyZXMgcHJvcGVyCkBAIC0yODUsOCArMjg2LDggQEAgU3lu Y1JlcFdhaXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0KQogCQkgKiBXYWl0 IG9uIGxhdGNoLiAgQW55IGNvbmRpdGlvbiB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwg c2V0IHRoZQogCQkgKiBsYXRjaCwgc28gbm8gbmVlZCBmb3IgdGltZW91dC4KIAkJICovCi0J CXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJf REVBVEgsIC0xLAotCQkJCQkgICBXQUlUX0VWRU5UX1NZTkNfUkVQKTsKKwkJcmMgPSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCBXTF9JTlRFUlJVUFQg fCBXTF9QT1NUTUFTVEVSX0RFQVRILCAtMSwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19S RVApOwogCiAJCS8qCiAJCSAqIElmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIHdlJ2xsIHByb2Jh Ymx5IG5ldmVyIGdldCBhbiBhY2tub3dsZWRnbWVudCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jCmluZGV4IDQwZDFmYTQ5MzkuLjA0ZWIxZGI2Y2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNjcsNiArNjcsNyBAQAogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKQEAgLTU0NiwxNSArNTQ3LDE1IEBAIFdhbFJlY2VpdmVyTWFpbihjaGFyICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCSAqIGF2b2lkaW5nIHNv bWUgc3lzdGVtIGNhbGxzLgogCQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5W QUxJRF9TT0NLRVQpOwotCQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJ CQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAot CQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0xBVENIX1NFVCwKLQkJCQkJCQkJCSAgIHdh aXRfZmQsCi0JCQkJCQkJCQkgICBuYXAsCi0JCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9S RUNFSVZFUl9NQUlOKTsKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJcmMgPSBX YWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJ CQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8 CisJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQVCwKKwkJCQkJCQkJCQkg ICB3YWl0X2ZkLAorCQkJCQkJCQkJCSAgIG5hcCwKKwkJCQkJCQkJCQkgICBXQUlUX0VWRU5U X1dBTF9SRUNFSVZFUl9NQUlOKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCQkJ ewotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVApOwogCQkJCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygp OwogCiAJCQkJCWlmICh3YWxyY3YtPmZvcmNlX3JlcGx5KQpAQCAtNjkyLDcgKzY5Myw3IEBA IFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRp bWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJV2FrZXVwUmVjb3ZlcnkoKTsKIAlmb3IgKDs7 KQogCXsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUxfV0FLRVVQKTsKIAogCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwog CkBAIC03MjQsOCArNzI1LDggQEAgV2FsUmN2V2FpdEZvclN0YXJ0UG9zaXRpb24oWExvZ1Jl Y1B0ciAqc3RhcnRwb2ludCwgVGltZUxpbmVJRCAqc3RhcnRwb2ludFRMSSkKIAkJfQogCQlT cGluTG9ja1JlbGVhc2UoJndhbHJjdi0+bXV0ZXgpOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2go TXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJ CSBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1JFQ0VJ VkVSX1dBSVRfU1RBUlQpOwogCX0KIAogCWlmICh1cGRhdGVfcHJvY2Vzc190aXRsZSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRleCBkMDE1 ZjAzMjQ0Li42MjEyZTgyNTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlcmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXJmdW5jcy5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0u aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggNDMyNTBlYzIyZC4u Y2JiNmMyNWY2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTUx LDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwppbmRleCAzODNjNTk4YzVkLi41 NzczM2IwM2QyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVl bGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAg LTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAKICNkZWZpbmUgSU5UX0FDQ0VTU19PTkNFKHZhcikJKChpbnQpKCooKHZvbGF0aWxl IGludCAqKSYodmFyKSkpKQpAQCAtMjE5LDI1ICsyMjAsMjMgQEAgU3RyYXRlZ3lHZXRCdWZm ZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQzMiAqYnVmX3N0YXRlLCBi b29sICpmcm9tX3IKIAkvKgogCSAqIElmIGFza2VkLCB3ZSBuZWVkIHRvIHdha2VuIHRoZSBi Z3dyaXRlci4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byByZWx5IG9uCiAJICogYSBzcGlubG9j ayBmb3IgdGhpcyB3ZSBmb3JjZSBhIHJlYWQgZnJvbSBzaGFyZWQgbWVtb3J5IG9uY2UsIGFu ZCB0aGVuCi0JICogc2V0IHRoZSBsYXRjaCBiYXNlZCBvbiB0aGF0IHZhbHVlLiBXZSBuZWVk IHRvIGdvIHRocm91Z2ggdGhhdCBsZW5ndGgKLQkgKiBiZWNhdXNlIG90aGVyd2lzZSBiZ3dw cm9jbm8gbWlnaHQgYmUgcmVzZXQgd2hpbGUvYWZ0ZXIgd2UgY2hlY2sgYmVjYXVzZQotCSAq IHRoZSBjb21waWxlciBtaWdodCBqdXN0IHJlcmVhZCBmcm9tIG1lbW9yeS4KKwkgKiBzZW5k IHRoZSBpbnRlcnJ1cHQgYmFzZWQgb24gdGhhdCB2YWx1ZS4gV2UgbmVlZCB0byBnbyB0aHJv dWdoIHRoYXQKKwkgKiBsZW5ndGggYmVjYXVzZSBvdGhlcndpc2UgYmd3cHJvY25vIG1pZ2h0 IGJlIHJlc2V0IHdoaWxlL2FmdGVyIHdlIGNoZWNrCisJICogYmVjYXVzZSB0aGUgY29tcGls ZXIgbWlnaHQganVzdCByZXJlYWQgZnJvbSBtZW1vcnkuCiAJICoKLQkgKiBUaGlzIGNhbiBw b3NzaWJseSBzZXQgdGhlIGxhdGNoIG9mIHRoZSB3cm9uZyBwcm9jZXNzIGlmIHRoZSBiZ3dy aXRlcgotCSAqIGRpZXMgaW4gdGhlIHdyb25nIG1vbWVudC4gQnV0IHNpbmNlIFBHUFJPQy0+ cHJvY0xhdGNoIGlzIG5ldmVyCi0JICogZGVhbGxvY2F0ZWQgdGhlIHdvcnN0IGNvbnNlcXVl bmNlIG9mIHRoYXQgaXMgdGhhdCB3ZSBzZXQgdGhlIGxhdGNoIG9mCi0JICogc29tZSBhcmJp dHJhcnkgcHJvY2Vzcy4KKwkgKiBUaGlzIGNhbiBwb3NzaWJseSBzZW5kIHRoZSBpbnRlcnJ1 cHQgdG8gdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlCisJICogYmd3cml0ZXIgZGllcyBpbiB0 aGUgd3JvbmcgbW9tZW50LCBidXQgdGhhdCdzIGhhcm1sZXNzLgogCSAqLwogCWJnd3Byb2Nu byA9IElOVF9BQ0NFU1NfT05DRShTdHJhdGVneUNvbnRyb2wtPmJnd3Byb2Nubyk7CiAJaWYg KGJnd3Byb2NubyAhPSAtMSkKIAl7Ci0JCS8qIHJlc2V0IGJnd3Byb2NubyBmaXJzdCwgYmVm b3JlIHNldHRpbmcgdGhlIGxhdGNoICovCisJCS8qIHJlc2V0IGJnd3Byb2NubyBmaXJzdCwg YmVmb3JlIHNlbmRpbmcgdGhlIGludGVycnVwdCAqLwogCQlTdHJhdGVneUNvbnRyb2wtPmJn d3Byb2NubyA9IC0xOwogCiAJCS8qCi0JCSAqIE5vdCBhY3F1aXJpbmcgUHJvY0FycmF5TG9j ayBoZXJlIHdoaWNoIGlzIHNsaWdodGx5IGlja3kuIEl0J3MKLQkJICogYWN0dWFsbHkgZmlu ZSBiZWNhdXNlIHByb2NMYXRjaCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBqdXN0IGNhbgot CQkgKiBwb3RlbnRpYWxseSBzZXQgdGhlIHdyb25nIHByb2Nlc3MnIChvciBubyBwcm9jZXNz JykgbGF0Y2guCisJCSAqIE5vdCBhY3F1aXJpbmcgUHJvY0FycmF5TG9jayBoZXJlIHdoaWNo IGlzIHNsaWdodGx5IGlja3ksIGJlY2F1c2Ugd2UKKwkJICogY2FuIHBvdGVudGlhbGx5IHNl bmQgdGhlIGludGVycnVwdCB0byB0aGUgd3JvbmcgcHJvY2VzcyAob3Igbm8KKwkJICogcHJv Y2VzcyksIGJ1dCBpdCdzIGhhcm1sZXNzLgogCQkgKi8KIAkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTF9XQUtFVVAsIGJnd3Byb2Nubyk7CiAJfQpAQCAtNDIwLDEwICs0MTks MTAgQEAgU3RyYXRlZ3lTeW5jU3RhcnQodWludDMyICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQz MiAqbnVtX2J1Zl9hbGxvYykKIH0KIAogLyoKLSAqIFN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIg LS0gc2V0IG9yIGNsZWFyIGFsbG9jYXRpb24gbm90aWZpY2F0aW9uIGxhdGNoCisgKiBTdHJh dGVneU5vdGlmeUJnV3JpdGVyIC0tIHNldCBvciBjbGVhciBhbGxvY2F0aW9uIG5vdGlmaWNh dGlvbiBwcm9jZXNzCiAgKgogICogSWYgYmd3cHJvY25vIGlzbid0IC0xLCB0aGUgbmV4dCBp bnZvY2F0aW9uIG9mIFN0cmF0ZWd5R2V0QnVmZmVyIHdpbGwKLSAqIHNldCB0aGF0IGxhdGNo LiAgUGFzcyAtMSB0byBjbGVhciB0aGUgcGVuZGluZyBub3RpZmljYXRpb24gYmVmb3JlIGl0 CisgKiBpbnRlcnJ1cHQgdGhhdCBwcm9jZXNzLiAgUGFzcyAtMSB0byBjbGVhciB0aGUgcGVu ZGluZyBub3RpZmljYXRpb24gYmVmb3JlIGl0CiAgKiBoYXBwZW5zLiAgVGhpcyBmZWF0dXJl IGlzIHVzZWQgYnkgdGhlIGJnd3JpdGVyIHByb2Nlc3MgdG8gd2FrZSBpdHNlbGYgdXAKICAq IGZyb20gaGliZXJuYXRpb24sIGFuZCBpcyBub3QgbWVhbnQgZm9yIGFueWJvZHkgZWxzZSB0 byB1c2UuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA4 NzAyN2YyN2ViLi5mNTFmZTE4Y2M5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCkBAIC0yNSw4ICsyNSw4IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAgLTcxMiw3ICs3 MTIsNyBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAo Q2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKSkK IAkJSGFuZGxlUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0JVRkZFUlBJTik7CiAKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKaW5kZXggYWE3MjlhMzZlMy4uYTM1NGE3ZDA2NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCkBAIC0yMCw2ICsyMCw3 IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjA0LDEy ICsyMDUsMTIgQEAgcGdfd2FpdF91bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0 aW1lb3V0KQogCQkvKiBQcm9jZXNzIGludGVycnVwdHMsIGlmIGFueSwgYmVmb3JlIHdhaXRp bmcgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCi0JCQkJCQkgd2FpdHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVOVF9CQUNL RU5EX1RFUk1JTkFUSU9OKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJTlRFUlJV UFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSB3YWl0dGltZSwKKwkJCQkJCQkgV0FJ VF9FVkVOVF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJCXJl bWFpbmluZ3RpbWUgLT0gd2FpdHRpbWU7CiAJfSB3aGlsZSAocmVtYWluaW5ndGltZSA+IDAp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYwppbmRleCBkOWIxNmY4NGQxLi5jMjkyMzY5 ZmY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYwpAQCAtMTYsNyArMTYsNyBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBIYW5kbGVDYXRjaHVwSW50ZXJydXB0KHZv aWQpCiAJY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCiAJLyogbWFrZSBzdXJl IHRoZSBldmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15 TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXggOGQ4NDNhMjAwZS4u MGYyNTcwYjIzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMjYsNiAr MjYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Ns b3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgpAQCAt NTk0LDcgKzU5NSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9p ZCBkYmlkKQogICogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayBpcyBjYWxsZWQg ZnJvbSBQcm9jU2xlZXAoKQogICogdG8gcmVzb2x2ZSBjb25mbGljdHMgd2l0aCBvdGhlciBi YWNrZW5kcyBob2xkaW5nIHJlbGF0aW9uIGxvY2tzLgogICoKLSAqIFRoZSBXYWl0TGF0Y2gg c2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQorICogVGhlIFdhaXRJbnRlcnJ1 cHQgc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQogICogKHdoZW4gbm90IElu SG90U3RhbmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBjb2RlIGNsYXJpdHkuCiAgKgog ICogV2UgZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNldCBhIHRp bWVvdXQgdG8gd2FrZSB1cyBhdApAQCAtODQzLDcgKzg0NCw3IEBAIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3VtZSB0aGF0IG9ubHkg VW5waW5CdWZmZXIoKSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0YWJsaXNoZWQKIAkg KiBhYm92ZSBjYW4gd2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVyeSgpIGNhbGxlZCBi eSB3YWxyZWNlaXZlciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxlciwgZXRjIGNhbm5v dCBkbyB0aGF0IGJlY2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0JICogbGF0Y2ggZnJv bSB0aGF0IFByb2NXYWl0Rm9yU2lnbmFsKCkgd2FpdHMgb24uCisJICogaW50ZXJydXB0IGZy b20gdGhhdCBQcm9jV2FpdEZvclNpZ25hbCgpIHdhaXRzIG9uLgogCSAqLwogCVdhaXRJbnRl cnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsIFdMX0lOVEVSUlVQVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJICBXQUlUX0VWRU5UX0JVRkZFUl9QSU4pOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJs ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCmlu ZGV4IGQ1ZmFiZWYxNzEuLjUyNDhhMzU1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY2xpc3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKQEAg LTE0NywxMCArMTQ4LDEwIEBAIENvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVlcChDb25kaXRp b25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91dCwKIAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVO VChzdGFydF90aW1lKTsKIAkJQXNzZXJ0KHRpbWVvdXQgPj0gMCAmJiB0aW1lb3V0IDw9IElO VF9NQVgpOwogCQljdXJfdGltZW91dCA9IHRpbWVvdXQ7Ci0JCXdhaXRfZXZlbnRzID0gV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCXdhaXRf ZXZlbnRzID0gV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEg7CiAJfQogCWVsc2UKLQkJd2FpdF9ldmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9FWElU X09OX1BNX0RFQVRIOworCQl3YWl0X2V2ZW50cyA9IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEg7CiAKIAl3aGlsZSAodHJ1ZSkKIAl7CkBAIC0xNjAsMTAgKzE2MSwxMCBA QCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBs b25nIHRpbWVvdXQsCiAJCSAqIFdhaXQgZm9yIGxhdGNoIHRvIGJlIHNldC4gIChJZiB3ZSdy ZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhlcgogCQkgKiByZWFzb24sIHRoZSBjb2RlIGJlbG93 IHdpbGwgY29wZSBhbnl3YXkuKQogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LCB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CisJCSh2b2lk KSBXYWl0SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLCB3YWl0X2V2 ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJLyogUmVzZXQgbGF0 Y2ggYmVmb3JlIGV4YW1pbmluZyB0aGUgc3RhdGUgb2YgdGhlIHdhaXQgbGlzdC4gKi8KLQkJ UmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUxfV0FLRVVQKTsKIAogCQkvKgogCQkgKiBJZiB0aGlzIHByb2Nlc3MgaGFzIGJlZW4gdGFr ZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4gd2Uga25vdwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDkzNzE1YjliZGYuLmI4NzA1MDU3NjggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIwNyw2ICsyMDcsNyBAQAog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUg InBvcnQvcGdfbGZpbmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNh dGVfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zeW5jL3N5bmMuYwppbmRleCBjZDVkMTQzNmFiLi5iZWM0MmY0MDYwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc3luYy9zeW5jLmMKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJwb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisj aW5jbHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL21kLmgi CiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOGJjNmJlYTExMy4uZjJkNmMzMzRkNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYwpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Bt c2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC01NDAsNyArNTQxLDcg QEAgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQlpZiAoYmxv Y2tlZCkKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCWVsc2UKLQkJCVNldExhdGNo KE15TGF0Y2gpOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIAl9CiAKIAllcnJubyA9IHNhdmVfZXJybm87CkBAIC01OTIsNyArNTkzLDcgQEAgUHJv Y2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKIAkJCX0KIAkJfQogCQll bHNlCi0JCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJZXJybm8gPSBzYXZlX2Vycm5vOwpAQCAtMjk5 MSw3ICsyOTkyLDcgQEAgZGllKFNJR05BTF9BUkdTKQogCXBnU3RhdFNlc3Npb25FbmRDYXVz ZSA9IERJU0NPTk5FQ1RfS0lMTEVEOwogCiAJLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2Fr ZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0aGUgcHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNo KE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VVUCk7 CiAKIAkvKgogCSAqIElmIHdlJ3JlIGluIHNpbmdsZSB1c2VyIG1vZGUsIHdlIHdhbnQgdG8g cXVpdCBpbW1lZGlhdGVseSAtIHdlIGNhbid0CkBAIC0zMDIwLDcgKzMwMjEsNyBAQCBTdGF0 ZW1lbnRDYW5jZWxIYW5kbGVyKFNJR05BTF9BUkdTKQogCX0KIAogCS8qIElmIHdlJ3JlIHN0 aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MgbGF0Y2gg Ki8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOwogfQogCiAvKiBzaWduYWwgaGFuZGxlciBmb3IgZmxvYXRpbmcgcG9p bnQgZXhjZXB0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlz Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYwppbmRleCAwZTZjNDU4MDdhLi5i YzYzYWQ0ZjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTM4LDcgKzM4LDcgQEAKICNp bmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTM3MywxNiArMzczLDE2IEBAIHBnX3NsZWVw KFBHX0ZVTkNUSU9OX0FSR1MpCiAJZmxvYXQ4CQllbmR0aW1lOwogCiAJLyoKLQkgKiBXZSBz bGVlcCB1c2luZyBXYWl0TGF0Y2gsIHRvIGVuc3VyZSB0aGF0IHdlJ2xsIHdha2UgdXAgcHJv bXB0bHkgaWYgYW4KLQkgKiBpbXBvcnRhbnQgc2lnbmFsIChzdWNoIGFzIFNJR0FMUk0gb3Ig U0lHSU5UKSBhcnJpdmVzLiAgQmVjYXVzZQotCSAqIFdhaXRMYXRjaCdzIHVwcGVyIGxpbWl0 IG9mIGRlbGF5IGlzIElOVF9NQVggbWlsbGlzZWNvbmRzLCBhbmQgdGhlIHVzZXIKLQkgKiBt aWdodCBhc2sgZm9yIG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVlcCBmb3IgYXQgbW9zdCAxMCBt aW51dGVzIGFuZCB0aGVuCi0JICogbG9vcC4KKwkgKiBXZSBzbGVlcCB1c2luZyBXYWl0SW50 ZXJydXB0LCB0byBlbnN1cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmCisJICog YW4gaW1wb3J0YW50IHNpZ25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZl cy4gIEJlY2F1c2UKKwkgKiBXYWl0SW50ZXJydXB0J3MgdXBwZXIgbGltaXQgb2YgZGVsYXkg aXMgSU5UX01BWCBtaWxsaXNlY29uZHMsIGFuZCB0aGUKKwkgKiB1c2VyIG1pZ2h0IGFzayBm b3IgbW9yZSB0aGFuIHRoYXQsIHdlIHNsZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5k CisJICogdGhlbiBsb29wLgogCSAqCiAJICogQnkgY29tcHV0aW5nIHRoZSBpbnRlbmRlZCBz dG9wIHRpbWUgaW5pdGlhbGx5LCB3ZSBhdm9pZCBhY2N1bXVsYXRpb24gb2YKIAkgKiBleHRy YSBkZWxheSBhY3Jvc3MgbXVsdGlwbGUgc2xlZXBzLiAgVGhpcyBhbHNvIGVuc3VyZXMgd2Ug d29uJ3QgZGVsYXkKLQkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2Fp dExhdGNoIGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkgYQotCSAqIG5vbi1xdWVyeS1jYW5jZWxp bmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgorCSAqIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVk IHRpbWUgd2hlbiBXYWl0SW50ZXJydXB0IGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkKKwkgKiBh IG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwogI2Rl ZmluZSBHZXROb3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAx MDAwMDAwLjApCiAKQEAgLTQwMywxMSArNDAzLDExIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWVsc2UKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRj aCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCSBkZWxheV9tcywKLQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsK LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoMSA8PCBJ TlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBkZWxheV9tcywKKwkJCQkJ CQkgV0FJVF9FVkVOVF9QR19TTEVFUCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMX1dBS0VVUCk7CiAJfQogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC90aW1lc3RhbXAuYwppbmRleCBkYjllZWE5MDk4Li4yMmNhYmZiOTVkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCkBAIC0xNzM4LDEwICsxNzM4LDEwIEBAIFRpbWVz dGFtcERpZmZlcmVuY2UoVGltZXN0YW1wVHogc3RhcnRfdGltZSwgVGltZXN0YW1wVHogc3Rv cF90aW1lLAogICogVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyAtLSBjb252ZXJ0 IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvCiAgKiAJCXRpbWVzdGFtcHMgaW50byBpbnRl Z2VyIG1pbGxpc2Vjb25kcwogICoKLSAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2Fs Y3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZvciBXYWl0TGF0Y2goKQorICogVGhpcyBpcyB0eXBp Y2FsbHkgdXNlZCB0byBjYWxjdWxhdGUgYSB3YWl0IHRpbWVvdXQgZm9yIFdhaXRJbnRlcnJ1 cHQoKQogICogb3IgYSByZWxhdGVkIGZ1bmN0aW9uLiAgVGhlIGNob2ljZSBvZiAibG9uZyIg YXMgdGhlIHJlc3VsdCB0eXBlCiAgKiBpcyB0byBoYXJtb25pemUgd2l0aCB0aGF0OyBmdXJ0 aGVybW9yZSwgd2UgY2xhbXAgdGhlIHJlc3VsdCB0byBhdCBtb3N0Ci0gKiBJTlRfTUFYIG1p bGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0J3MgYWxsIHRoYXQgV2FpdExhdGNoKCkgYWxsb3dz LgorICogSU5UX01BWCBtaWxsaXNlY29uZHMsIGJlY2F1c2UgdGhhdCdzIGFsbCB0aGF0IFdh aXRJbnRlcnJ1cHQoKSBhbGxvd3MuCiAgKgogICogV2UgZXhwZWN0IHN0YXJ0X3RpbWUgPD0g c3RvcF90aW1lLiAgSWYgbm90LCB3ZSByZXR1cm4gemVybywKICAqIHNpbmNlIHRoZW4gd2Un cmUgYWxyZWFkeSBwYXN0IHRoZSBwcmV2aW91c2x5IGRldGVybWluZWQgc3RvcF90aW1lLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDNiNTBjZTE5YTIuLjEzNTA0Njcy NjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTQ1LDYgKzQ1LDcgQEAK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0xMzM3LDcgKzEz MzgsNyBAQCBUcmFuc2FjdGlvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJVHJhbnNhY3Rp b25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0J U2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzNDUsNyArMTM0Niw3IEBAIElkbGVJ blRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRsZUluVHJh bnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzUzLDcgKzEz NTQsNyBAQCBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRsZVNlc3Np b25UaW1lb3V0UGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0J U2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxf V0FLRVVQKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzNjEsNyArMTM2Miw3IEBAIElkbGVT dGF0c1VwZGF0ZVRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRsZVN0YXRzVXBkYXRlVGlt ZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExh dGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dBS0VV UCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzY5LDcgKzEzNzAsNyBAQCBDbGllbnRDaGVj a1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGlu ZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRj aCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKaW5kZXggZWM3ZTU3MDkyMC4uYzQ1NzY1 YzNkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKQEAgLTE3LDcgKzE3LDcgQEAK ICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFt cC5oIgogCkBAIC0zNzQsNyArMzc0LDcgQEAgaGFuZGxlX3NpZ19hbGFybShTSUdOQUxfQVJH UykKIAkgKiBTSUdBTFJNIGlzIGFsd2F5cyBjYXVzZSBmb3Igd2FraW5nIGFueXRoaW5nIHdh aXRpbmcgb24gdGhlIHByb2Nlc3MKIAkgKiBsYXRjaC4KIAkgKi8KLQlTZXRMYXRjaChNeUxh dGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVApOwogCiAJ LyoKIAkgKiBBbHdheXMgcmVzZXQgc2lnbmFsX3BlbmRpbmcsIGV2ZW4gaWYgIWFsYXJtX2Vu YWJsZWQsIHNpbmNlIGluZGVlZCBubwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEv bGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUt aGVscGVycy5oCmluZGV4IGZlNTA4MjkyNzQuLmQxNTEwZGFjNDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaAorKysgYi9zcmMvaW5jbHVk ZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNs dWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNs dWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTE3Nyw4ICsxNzcsOCBAQCBsaWJwcXNy dl9jb25uZWN0X2ludGVybmFsKFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZlbnRfaW5m bykKIAkJcmV0dXJuOwogCiAJLyoKLQkgKiBXYWl0TGF0Y2hPclNvY2tldCgpIGNhbiBjb25j ZWl2YWJseSBmYWlsLCBoYW5kbGUgdGhhdCBjYXNlIGhlcmUgaW5zdGVhZAotCSAqIG9mIHJl cXVpcmluZyBhbGwgY2FsbGVycyB0byBkbyBzby4KKwkgKiBXYWl0SW50ZXJydXB0T3JTb2Nr ZXQoKSBjYW4gY29uY2VpdmFibHkgZmFpbCwgaGFuZGxlIHRoYXQgY2FzZSBoZXJlCisJICog aW5zdGVhZCBvZiByZXF1aXJpbmcgYWxsIGNhbGxlcnMgdG8gZG8gc28uCiAJICovCiAJUEdf VFJZKCk7CiAJewpAQCAtMjA5LDE2ICsyMDksMTYgQEAgbGlicHFzcnZfY29ubmVjdF9pbnRl cm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCQllbHNlCiAJ CQkJaW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJCXJjID0gV2FpdExhdGNo T3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdM X0xBVENIX1NFVCB8IGlvX2ZsYWcsCi0JCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJ CQkJCQkgICAwLAotCQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOworCQkJcmMgPSBXYWl0 SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAsCisJCQkJ CQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywK KwkJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAorCQkJCQkJCQkJICAgMCwKKwkJCQkJCQkJ CSAgIHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwotCQkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJewot CQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUxfV0FLRVVQKTsKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJfQog CkBAIC0zNDEsMTcgKzM0MSwxNyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29u biwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAl7CiAJCWludAkJCXJjOwogCi0JCXJjID0g V2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RF QVRIIHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCi0J CQkJCQkJICAgUFFzb2NrZXQoY29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICB3YWl0 X2V2ZW50X2luZm8pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgxIDw8IElOVEVS UlVQVF9HRU5FUkFMX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8 IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKKwkJCQkJ CQkJICAgUFFzb2NrZXQoY29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIHdhaXRf ZXZlbnRfaW5mbyk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xB VENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQ KTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNDA3LDcgKzQwNyw3 IEBAIGxpYnBxc3J2X2NhbmNlbChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUp CiAJCQlQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHBvbGxyZXM7CiAJCQlUaW1lc3RhbXBU eiBub3c7CiAJCQlsb25nCQljdXJfdGltZW91dDsKLQkJCWludAkJCXdhaXRFdmVudHMgPSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJCWlu dAkJCXdhaXRFdmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSDsKIAogCQkJcG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxfY29ubik7 CiAJCQlpZiAocG9sbHJlcyA9PSBQR1JFU19QT0xMSU5HX09LKQpAQCAtNDM2LDEwICs0MzYs MTEgQEAgbGlicHFzcnZfY2FuY2VsKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGlt ZSkKIAkJCX0KIAogCQkJLyogU2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8g Ki8KLQkJCVdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2Vs U29ja2V0KGNhbmNlbF9jb25uKSwKLQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NM SUVOVCk7CisJCQlXYWl0SW50ZXJydXB0T3JTb2NrZXQoMSA8PCBJTlRFUlJVUFRfR0VORVJB TF9XQUtFVVAsIHdhaXRFdmVudHMsCisJCQkJCQkJCSAgUFFjYW5jZWxTb2NrZXQoY2FuY2Vs X2Nvbm4pLAorCQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7CiAKLQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTF9XQUtFVVApOwogCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2xhdGNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NGQ2NGExOWIu LjAwMDAwMDAwMDAKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oCisrKyAvZGV2 L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICog bGF0Y2guaAotICoJICBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBtYWNyb3MgZm9yIHRoZSBv bGQgTGF0Y2ggaW50ZXJmYWNlCi0gKgotICogTGF0Y2hlcyB3ZXJlIGFuIGludGVyLXByb2Nl c3Mgc2lnbmFsbGluZyBtZWNoYW5pc20gdGhhdCB3YXMgcmVwbGFjZWQKLSAqIGluIFBvc3Rn cmVTUUwgdmVyc29uIDE4IHdpdGggSW50ZXJydXB0cywgc2VlICJzdG9yYWdlL2ludGVycnVw dC5oIi4KLSAqIFRoaXMgZmlsZSBjb250YWlucyBtYWNyb3MgdGhhdCBtYXAgb2xkIExhdGNo IGNhbGxzIHRvIHRoZSBuZXcgaW50ZXJmYWNlLgotICogVGhlIG1hcHBpbmcgaXMgbm90IHBl cmZlY3QsIGl0IG9ubHkgY292ZXJzIHRoZSBiYXNpYyB1c2FnZSBvZiBzZXR0aW5nCi0gKiBh bmQgd2FpdGluZyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcydzIG93biBsYXRjaCAoTXlMYXRj aCksIHdoaWNoIGlzCi0gKiBtYXBwZWQgdG8gcmFpc2luZyBvciB3YWl0aW5nIGZvciBJTlRF UlJVUFRfR0VORVJBTF9XQUtVUC4KLSAqCi0gKiBUaGUgV2FpdEV2ZW50U2V0IGZ1bmN0aW9u cyB0aGF0IHVzZWQgdG8gYmUgaGVyZSBhcmUgbm93IGluCi0gKiAic3RvcmFnZS93YWl0ZXZl bnRzLmgiLgotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAq Ci0gKiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKLSAqCi0gKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSAqLwotCi0jaWZuZGVmIExBVENIX0gKLSNkZWZpbmUgTEFUQ0hfSAotCi0jaW5j bHVkZSAic3RvcmFnZS9pbnRlcnJ1cHQuaCIKLQotI2RlZmluZSBXTF9MQVRDSF9TRVQgV0xf SU5URVJSVVBUCi0KLS8qCi0gKiBUaGVzZSBjb21wYXRpYmlsaXR5IG1hY3JvcyBvbmx5IHN1 cHBvcnQgb3BlcmF0aW5nIG9uIE15TGF0Y2guIEl0IHVzZWQgdG8KLSAqIGJlIGEgcG9pbnRl ciB0byBhIExhdGNoIHN0cnVjdCwgYnV0IG5vdyBpdCdzIGp1c3QgYSBkdW1teSBpbnQgdmFy aWFibGUuCi0gKi8KLQotI2RlZmluZSBNeUxhdGNoICgodm9pZCAqKSAweEFBQUEpCi0KLXN0 YXRpYyBpbmxpbmUgdm9pZAotU2V0TGF0Y2godm9pZCAqZHVtbXkpCi17Ci0JQXNzZXJ0KGR1 bW15ID09IE15TGF0Y2gpOwotCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMX1dB S0VVUCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZAotUmVzZXRMYXRjaCh2b2lkICpkdW1t eSkKLXsKLQlBc3NlcnQoZHVtbXkgPT0gTXlMYXRjaCk7Ci0JQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKLX0KLQotc3RhdGljIGlubGluZSBpbnQKLVdhaXRM YXRjaCh2b2lkICpkdW1teSwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwgdWludDMy IHdhaXRfZXZlbnRfaW5mbykKLXsKLQl1aW50MzIJCWludGVycnVwdF9tYXNrID0gMDsKLQot CUFzc2VydChkdW1teSA9PSBNeUxhdGNoIHx8IGR1bW15ID09IE5VTEwpOwotCi0JaWYgKCh3 YWtlRXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAmJiBkdW1teSA9PSBNeUxhdGNoKQotCQlpbnRl cnJ1cHRfbWFzayA9IDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQOwotCXJldHVybiBX YWl0SW50ZXJydXB0KGludGVycnVwdF9tYXNrLCB3YWtlRXZlbnRzLAotCQkJCQkJIHRpbWVv dXQsIHdhaXRfZXZlbnRfaW5mbyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50Ci1XYWl0TGF0 Y2hPclNvY2tldCh2b2lkICpkdW1teSwgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ss IGxvbmcgdGltZW91dCwKLQkJCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCi17Ci0JdWlu dDMyCQlpbnRlcnJ1cHRfbWFzayA9IDA7Ci0KLQlBc3NlcnQoZHVtbXkgPT0gTXlMYXRjaCB8 fCBkdW1teSA9PSBOVUxMKTsKLQotCWlmICgod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkg JiYgZHVtbXkgPT0gTXlMYXRjaCkKLQkJaW50ZXJydXB0X21hc2sgPSAxIDw8IElOVEVSUlVQ VF9HRU5FUkFMX1dBS0VVUDsKLQlyZXR1cm4gV2FpdEludGVycnVwdE9yU29ja2V0KGludGVy cnVwdF9tYXNrLCB3YWtlRXZlbnRzLAotCQkJCQkJCQkgc29jaywgdGltZW91dCwgd2FpdF9l dmVudF9pbmZvKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDgzYmJmZTNj M2IuLjE1Y2U0ZjA0NjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xNyw3ICsxNyw2IEBACiAj aW5jbHVkZSAiYWNjZXNzL2Nsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIK ICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zZW1hLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jbGlzdF90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvc3Jj L3BvcnQvcGdzbGVlcC5jIGIvc3JjL3BvcnQvcGdzbGVlcC5jCmluZGV4IDEyODQ0NThiZmMu LjM0ZWNlMjBkNjYgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3Bnc2xlZXAuYworKysgYi9zcmMv cG9ydC9wZ3NsZWVwLmMKQEAgLTMyLDEwICszMiwxMCBAQAogICoKICAqIENBVVRJT046IEl0 J3Mgbm90IGEgZ29vZCBpZGVhIHRvIHVzZSBsb25nIHNsZWVwcyBpbiB0aGUgYmFja2VuZC4g IFRoZXkgd2lsbAogICogc2lsZW50bHkgcmV0dXJuIGVhcmx5IGlmIGEgc2lnbmFsIGlzIGNh dWdodCwgYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRlCi0gKiBsYXRjaGVzIGJlaW5nIHNldCBv biBtb3N0IE9TZXMsIGFuZCBldmVuIHNpZ25hbCBoYW5kbGVycyB0aGF0IHNldCBNeUxhdGNo CisgKiBpbnRlcnJ1cHRzIGJlaW5nIHNldCBvbiBtb3N0IE9TZXMsIGFuZCBldmVuIHNpZ25h bCBoYW5kbGVycyB0aGF0IHJhaXNlIGFuIGludGVycnVwdAogICogbWlnaHQgaGFwcGVuIHRv IHJ1biBiZWZvcmUgdGhlIHNsZWVwIGJlZ2lucywgYWxsb3dpbmcgdGhlIGZ1bGwgZGVsYXku Ci0gKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdhaXRMYXRjaCgpIHdpdGggYSB0aW1l b3V0LCBzbyB0aGF0IGJhY2tlbmRzCi0gKiByZXNwb25kIHRvIGxhdGNoZXMgYW5kIHNpZ25h bHMgcHJvbXB0bHkuCisgKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdhaXRJbnRlcnJ1 cHQoKSB3aXRoIGEgdGltZW91dCwgc28gdGhhdCBiYWNrZW5kcworICogcmVzcG9uZCB0byBp bnRlcnJ1cHRzIGFuZCBzaWduYWxzIHByb21wdGx5LgogICovCiB2b2lkCiBwZ191c2xlZXAo bG9uZyBtaWNyb3NlYykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3Nw aS93b3JrZXJfc3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3Nw aS5jCmluZGV4IGRlOGY0NjkwMmIuLjFlNDg0NDU1ZmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xh dGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCkBAIC0yMzEsMTEgKzIzMSwx MSBAQCB3b3JrZXJfc3BpX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJCSAqIG5lY2Vzc2FyeSwg YnV0IGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4gIFRoYXQgd2F5IHRoZQogCQkg KiBiYWNrZ3JvdW5kIHByb2Nlc3MgZ29lcyBhd2F5IGltbWVkaWF0ZWx5IGluIGFuIGVtZXJn ZW5jeS4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSB3 b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwKLQkJCQkJCSB3b3JrZXJfc3BpX3dhaXRfZXZl bnRfbWFpbik7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBXYWl0SW50ZXJy dXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgd29ya2Vy X3NwaV9uYXB0aW1lICogMTAwMEwsCisJCQkJCQkJIHdvcmtlcl9zcGlfd2FpdF9ldmVudF9t YWluKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQKTsKIAog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0tIAoyLjM5LjIKCg== --------------AZiMqnU9Aq4oPSw1HqIDr3h2 Content-Type: text/x-patch; charset=UTF-8; name="v2-0011-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v2-0011-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwN2Y4NmE2ZTY5M2M4YWUxZDA5M2E2N2M1MTkxOWI5MmM4YWQ5NDY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjQgQXVnIDIwMjQgMjA6MTI6MDggKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDExLzEyXSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9n aWNhbCByZXBsaWNhdGlvbgogbGF1bmNoZXIKCmJ5IHVzaW5nIGEgZGlmZmVyZW50IGludGVy cnVwdCByZWFzb24gZm9yIHN1YnNjcmlwdGlvbiBjaGFuZ2VzCgpodHRwczovL3d3dy5wb3N0 Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvZmYwNjYzZDktODAxMS00MjBmLWExNjktZWZi ZjU3MzI3Y2I1JTQwaWtpLmZpI2JlZjk4NGY4YzQzZDZiOGE5NDI4ZDJjNTU0N2ZlNzJiCi0t LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwgMjMgKysr KysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCAg ICAgICAgICAgIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygr KSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKaW5kZXggNzgyNDRhZjdjOS4uMjA2NzMzNjgxYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTcsNyArNTcsNyBA QCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcEN0eFN0cnVjdAogewogCS8qIFN1cGVydmlzb3IgcHJvY2Vz cy4gKi8KLQlwaWRfdAkJbGF1bmNoZXJfcGlkOworCVByb2NOdW1iZXIJbGF1bmNoZXJfcHJv Y25vOwogCiAJLyogSGFzaCB0YWJsZSBob2xkaW5nIGxhc3Qgc3RhcnQgdGltZXMgb2Ygc3Vi c2NyaXB0aW9ucycgYXBwbHkgd29ya2Vycy4gKi8KIAlkc2FfaGFuZGxlCWxhc3Rfc3RhcnRf ZHNhOwpAQCAtODEzLDcgKzgxMyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfbGF1bmNo ZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcGlkID0gMDsKKwlMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPSBJTlZB TElEX1BST0NfTlVNQkVSOwogfQogCiAvKgpAQCAtOTczLDYgKzk3Myw3IEBAIEFwcGx5TGF1 bmNoZXJTaG1lbUluaXQodm9pZCkKIAogCQltZW1zZXQoTG9naWNhbFJlcEN0eCwgMCwgQXBw bHlMYXVuY2hlclNobWVtU2l6ZSgpKTsKIAorCQlMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9w cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlMb2dpY2FsUmVwQ3R4LT5sYXN0X3N0 YXJ0X2RzYSA9IERTQV9IQU5ETEVfSU5WQUxJRDsKIAkJTG9naWNhbFJlcEN0eC0+bGFzdF9z dGFydF9kc2ggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7CiAKQEAgLTExMTgsOCArMTExOSwx MiBAQCBBcHBseUxhdW5jaGVyV2FrZXVwQXRDb21taXQodm9pZCkKIHN0YXRpYyB2b2lkCiBB cHBseUxhdW5jaGVyV2FrZXVwKHZvaWQpCiB7Ci0JaWYgKExvZ2ljYWxSZXBDdHgtPmxhdW5j aGVyX3BpZCAhPSAwKQotCQlraWxsKExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCwgU0lH VVNSMSk7CisJdm9sYXRpbGUgTG9naWNhbFJlcEN0eFN0cnVjdCAqcmVwY3R4ID0gTG9naWNh bFJlcEN0eDsKKwlQcm9jTnVtYmVyIGxhdW5jaGVyX3Byb2NubzsKKworCWxhdW5jaGVyX3By b2NubyA9IHJlcGN0eC0+bGF1bmNoZXJfcHJvY25vOworCWlmIChsYXVuY2hlcl9wcm9jbm8g IT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfU1VC U0NSSVBUSU9OX0NIQU5HRSwgbGF1bmNoZXJfcHJvY25vKTsKIH0KIAogLyoKQEAgLTExMzMs OCArMTEzOCw4IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJYmVm b3JlX3NobWVtX2V4aXQobG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQsIChEYXR1bSkgMCk7 CiAKLQlBc3NlcnQoTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID09IDApOwotCUxvZ2lj YWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9IE15UHJvY1BpZDsKKwlBc3NlcnQoTG9naWNhbFJl cEN0eC0+bGF1bmNoZXJfcHJvY25vID09IElOVkFMSURfUFJPQ19OVU1CRVIpOworCUxvZ2lj YWxSZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9IE15UHJvY051bWJlcjsKIAogCS8qIEVzdGFi bGlzaCBzaWduYWwgaGFuZGxlcnMuICovCiAJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKQEAgLTExNjYsNiArMTE3MSw3IEBAIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oc3ViY3R4KTsKIAogCQkvKiBTdGFydCBhbnkgbWlzc2luZyB3b3JrZXJzIGZvciBlbmFi bGVkIHN1YnNjcmlwdGlvbnMuICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9TVUJT Q1JJUFRJT05fQ0hBTkdFKTsKIAkJc3VibGlzdCA9IGdldF9zdWJzY3JpcHRpb25fbGlzdCgp OwogCQlmb3JlYWNoKGxjLCBzdWJsaXN0KQogCQl7CkBAIC0xMjIyLDcgKzEyMjgsOCBAQCBB cHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJTWVtb3J5Q29udGV4dERlbGV0 ZShzdWJjdHgpOwogCiAJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KLQkJcmMgPSBXYWl0 SW50ZXJydXB0KDEgPDwgSU5URVJSVVBUX0dFTkVSQUxfV0FLRVVQLAorCQlyYyA9IFdhaXRJ bnRlcnJ1cHQoMSA8PCBJTlRFUlJVUFRfR0VORVJBTF9XQUtFVVAgfAorCQkJCQkJICAgMSA8 PCBJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRSwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgd2FpdF90 aW1lLAogCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4pOwpAQCAt MTI0OSw3ICsxMjU2LDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiBi b29sCiBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogewotCXJldHVybiBMb2dpY2FsUmVwQ3R4 LT5sYXVuY2hlcl9waWQgPT0gTXlQcm9jUGlkOworCXJldHVybiBMb2dpY2FsUmVwQ3R4LT5s YXVuY2hlcl9wcm9jbm8gPT0gTXlQcm9jTnVtYmVyOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv aW50ZXJydXB0LmgKaW5kZXggMWRjODUzMzlhOS4uYjFhM2Y3YTk3NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL2ludGVycnVwdC5oCkBAIC05OCwxMSArOTgsMTQgQEAgdHlwZWRlZiBlbnVtCiAJSU5U RVJSVVBUX0dFTkVSQUxfV0FLRVVQLAogCiAJLyoKLQkgKiBJTlRFUlJVUFRfUkVDT1ZFUllf V0FLRVVQIGlzIHVzZWQgdG8gd2FrZSB1cCBzdGFydHVwIHByb2Nlc3MsIHRvIHRlbGwKKwkg KiBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgaXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0 dXAgcHJvY2VzcywgdG8gdGVsbAogCSAqIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdB TCByZXBsYXkuIEl0J3Mgc2VudCBieSBXQUwgcmVjZWl2ZXIgd2hlbgogCSAqIG1vcmUgV0FM IGFycml2ZXMsIG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KIAkgKi8KIAlJTlRF UlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsCisKKwkvKiBzZW50IHRvIGxvZ2ljYWwgcmVwbGlj YXRpb24gbGF1bmNoZXIsIHdoZW4gYSBzdWJzY3JpcHRpb24gY2hhbmdlcyAqLworCUlOVEVS UlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAogfSBJbnRlcnJ1cHRUeXBlOwogCiAvKgotLSAK Mi4zOS4yCgo= --------------AZiMqnU9Aq4oPSw1HqIDr3h2--