Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jul 2013 00:56:10 +0900
From:      Takuya ASADA <syuu@dokukino.com>
To:        Luigi Rizzo <rizzo@iet.unipi.it>
Cc:        FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: Multiqueue support for bpf
Message-ID:  <CALG4x-UYBFsMttpZx1-c_wtVf5MST8%2B_t1psY2HQskTiOZDFLA@mail.gmail.com>
In-Reply-To: <CA%2BhQ2%2BgwW6FOQS79xmWVLSWWHrZMFnhaUM98Kp6aDVaUePNfTA@mail.gmail.com>
References:  <CALG4x-V-OLoqMXQarSNy5Lv3kNVu01AiN4A49Nv7t-Ysfr1DBg@mail.gmail.com> <CA%2BhQ2%2BgwW6FOQS79xmWVLSWWHrZMFnhaUM98Kp6aDVaUePNfTA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--bcaec518248ea5c9a804e089646d
Content-Type: text/plain; charset=UTF-8

Hi,

Do you have an updated URL for the diffs ? The link below from your
> original message
> seems not working now (NXDOMAIN)
>
> http://www.dokukino.com/mq_bpf_20110813.diff
>

Changes with recent head is on my repository:
http://svnweb.freebsd.org/base/user/syuu/mq_bpf/
And I attached a diff file on this mail.

--bcaec518248ea5c9a804e089646d
Content-Type: application/octet-stream; name="mq_bpf_20130703.diff"
Content-Disposition: attachment; filename="mq_bpf_20130703.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hin9onwa0

SW5kZXg6IGlmbmV0LjkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaWZuZXQuOQkoLi4uL2hlYWQvc2hhcmUvbWFu
L21hbjkvaWZuZXQuOSkJKHJldmlzaW9uIDI1MjUwOSkKKysrIGlmbmV0LjkJKC4uLi91c2VyL3N5
dXUvbXFfYnBmL3NoYXJlL21hbi9tYW45L2lmbmV0LjkpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0x
MTksNiArMTE5LDE0IEBACiAuRm8gXCoobHAqaWZfcmVzb2x2ZW11bHRpXCoocnAKIC5GYSAic3Ry
dWN0IGlmbmV0ICppZnAiICJzdHJ1Y3Qgc29ja2FkZHIgKipyZXRzYSIgInN0cnVjdCBzb2NrYWRk
ciAqYWRkciIKIC5GYworLkZ0IGludAorLkZuIFwqKGxwKmlmX2dldF9yeHF1ZXVlX2xlblwqKHJw
ICJzdHJ1Y3QgaWZuZXQgKmlmcCIKKy5GdCBpbnQKKy5GbiBcKihscCppZl9nZXRfdHhxdWV1ZV9s
ZW5cKihycCAic3RydWN0IGlmbmV0ICppZnAiCisuRnQgaW50CisuRm4gXCoobHAqaWZfZ2V0X3J4
cXVldWVfYWZmaW5pdHlcKihycCAic3RydWN0IGlmbmV0ICppZnAiICJpbnQgcXVlaWQiCisuRnQg
aW50CisuRm4gXCoobHAqaWZfZ2V0X3R4cXVldWVfYWZmaW5pdHlcKihycCAic3RydWN0IGlmbmV0
ICppZnAiICJpbnQgcXVlaWQiCiAuU3MgInN0cnVjdCBpZmFkZHIgbWVtYmVyIGZ1bmN0aW9uIgog
LkZ0IHZvaWQKIC5GbyBcKihscCppZmFfcnRyZXF1ZXN0XCoocnAKQEAgLTUzNyw2ICs1NDUsMTQg
QEAKIGNvcnJlc3BvbmRzIHRvIHRoYXQgYWRkcmVzcyB3aGljaCBpcyByZXR1cm5lZCBpbgogLkZh
ICpyZXRzYSAuCiBSZXR1cm5zIHplcm8gb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgY29kZSBvbiBm
YWlsdXJlLgorLkl0IEZuIGlmX2dldF9yeHF1ZXVlX2xlbgorR2V0IFJYIHF1ZXVlIGxlbmd0aCwg
b25seSByZXF1aXJlZCBmb3IgbXVsdGlxdWV1ZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcy4KKy5JdCBG
biBpZl9nZXRfdHhxdWV1ZV9sZW4KK0dldCBUWCBxdWV1ZSBsZW5ndGgsIG9ubHkgcmVxdWlyZWQg
Zm9yIG11bHRpcXVldWUgc3VwcG9ydGVkIGludGVyZmFjZXMuCisuSXQgRm4gaWZfZ2V0X3J4cXVl
dWVfYWZmaW5pdHkKK0dldCBSWCBxdWV1ZSBhZmZpbml0eSwgb25seSByZXF1aXJlZCBmb3IgbXVs
dGlxdWV1ZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcy4KKy5JdCBGbiBpZl9nZXRfdHhxdWV1ZV9hZmZp
bml0eQorR2V0IFRYIHF1ZXVlIGFmZmluaXR5LCBvbmx5IHJlcXVpcmVkIGZvciBtdWx0aXF1ZXVl
IHN1cHBvcnRlZCBpbnRlcmZhY2VzLgogLkVsCiAuU3MgIkludGVyZmFjZSBGbGFncyIKIEludGVy
ZmFjZSBmbGFncyBhcmUgdXNlZCBmb3IgYSBudW1iZXIgb2YgZGlmZmVyZW50IHB1cnBvc2VzLgpJ
bmRleDogYnBmLjQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYnBmLjQJKC4uLi9oZWFkL3NoYXJlL21hbi9tYW40
L2JwZi40KQkocmV2aXNpb24gMjUyNTA5KQorKysgYnBmLjQJKC4uLi91c2VyL3N5dXUvbXFfYnBm
L3NoYXJlL21hbi9tYW40L2JwZi40KQkocmV2aXNpb24gMjUyNTA5KQpAQCAtNjMxLDYgKzYzMSw0
NiBAQAogLlZ0IGJ6aF9rZXJuZWxfZ2VuCiBhZ2FpbnN0CiAuVnQgYnpoX3VzZXJfZ2VuIC4KKy5J
dCBEdiBCSU9DRU5BUU1BU0sKK0VuYWJsZXMgbXVsdGlxdWV1ZSBmaWx0ZXIgb24gdGhlIGRlc2Ny
aXB0b3IuCisKKy5JdCBEdiBCSU9DRElTUU1BU0sKK0Rpc2FibGVzIG11bHRpcXVldWUgZmlsdGVy
IG9uIHRoZSBkZXNjcmlwdG9yLgorCisuSXQgRHYgQklPQ1NUUlhRTUFTSworLlBxIExpIHVpbnQz
Ml90CitTZXQgbWFzayBiaXQgb24gc3BlY2lmaWVkIFJYIHF1ZXVlLgorCisuSXQgRHYgQklPQ0NS
UlhRTUFTSworLlBxIExpIHVpbnQzMl90CitDbGVhciBtYXNrIGJpdCBvbiBzcGVjaWZpZWQgUlgg
cXVldWUuCisKKy5JdCBEdiBCSU9DR1RSWFFNQVNLCisuUHEgTGkgdWludDMyX3QKK0dldCBtYXNr
IGJpdCBvbiBzcGVjaWZpZWQgUlggcXVldWUuCisKKy5JdCBEdiBCSU9DU1RUWFFNQVNLCisuUHEg
TGkgdWludDMyX3QKK1NldCBtYXNrIGJpdCBvbiBzcGVjaWZpZWQgVFggcXVldWUuCisKKy5JdCBE
diBCSU9DQ1JUWFFNQVNLCisuUHEgTGkgdWludDMyX3QKK0NsZWFyIG1hc2sgYml0IG9uIHNwZWNp
ZmllZCBUWCBxdWV1ZS4KKworLkl0IER2IEJJT0NHVFRYUU1BU0sKKy5QcSBMaSB1aW50MzJfdAor
R2V0IG1hc2sgYml0IG9uIHNwZWNpZmllZCBUWCBxdWV1ZS4KKworLkl0IER2IEJJT0NTVE9USEVS
TUFTSworU2V0IG1hc2sgYml0IGZvciB0aGUgcGFja2V0cyB3aGljaCBub3QgdGllZCB3aXRoIGFu
eSBxdWV1ZXMuCisKKy5JdCBEdiBCSU9DQ1JPVEhFUk1BU0sKK0NsZWFyIG1hc2sgYml0IGZvciB0
aGUgcGFja2V0cyB3aGljaCBub3QgdGllZCB3aXRoIGFueSBxdWV1ZXMuCisKKy5JdCBEdiBCSU9D
R1RPVEhFUk1BU0sKKy5QcSBMaSB1aW50MzJfdAorR2V0IG1hc2sgYml0IGZvciB0aGUgcGFja2V0
cyB3aGljaCBub3QgdGllZCB3aXRoIGFueSBxdWV1ZXMuCisKIC5FbAogLlNoIEJQRiBIRUFERVIK
IE9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZXMgaXMgcHJlcGVuZGVkIHRvIGVhY2ggcGFj
a2V0IHJldHVybmVkIGJ5CkBAIC0xMDM3LDYgKzEwNzcsMjQgQEAKIAlCUEZfU1RNVChCUEZfUkVU
K0JQRl9LLCAwKSwKIH07CiAuRWQKKy5TaCBNVUxUSVFVRVVFIFNVUFBPUlQKK011bHRpcXVldWUg
bmV0d29yayBpbnRlcmZhY2Ugc3VwcG9ydCBmdW5jdGlvbiBwcm92aWRlcyBpbnRlcmZhY2VzIGZv
ciAKK211bHRpdGhyZWFkZWQgcGFja2V0IHByb2Nlc3NpbmcgdXNpbmcgYnBmLgorCitOb3JtYWwg
YnBmIGNhbiByZWNlaXZlIHBhY2tldHMgZnJvbSBzcGVjaWZpZWQgaW50ZXJmYWNlLCBtdWx0aXF1
ZXVlIHN1cHBvcnQgCitmdW5jdGlvbiBjYW4gcmVjZWl2ZSBwYWNrZXRzIGZyb20gc3BlY2lmaWVk
IGhhcmR3YXJlIHF1ZXVlLgorCitUaGlzIGRpc3RyaWJ1dGVzIGJwZiB3b3JrbG9hZCBvbiBtdWx0
aXBsZSB0aHJlYWRzLCBhbHNvIHJlZHVjZXMgbG9jayAKK2NvbnRlbnRpb24gb24gYnBmLgorCitU
byBtYWtlIHlvdXIgcHJvZ3JhbSBtdWx0aXRocmVhZGVkLCB5b3UnbGwgbmVlZCB0byBvcGVuIGJw
ZiBkZXNjcmlwdG9yIG9uIGVhY2ggCit0aHJlYWQsIGVuYWJsZSBtdWx0aXF1ZXVlIHN1cHBvcnQg
YnkgQklPQ0VOQVFNQVNLIGlvY3RsLCBhbmQgc2V0IHF1ZXVlIG1hc2sgYnkgCitCSU9DU1RSWFFN
QVNLIC8gQklPQ1NUVFhRTUFTSyAvIEJJT0NTVE9USEVSTUFTSyBpb2N0bHMuCisKK1F1ZXVlIGxl
bmd0aCBhbmQgcXVldWUgYWZmaW5pdHkgaW5mb3JtYXRpb24gbWF5IHVzZWZ1bCB0byBvcHRpbWl6
ZSBzZXR0aW5nIAorcXVldWUgbWFzayBvbiBicGYgZGVzY3JpcHRvciwgc2VlCisuWHIgbmV0aW50
cm8gNCAuCisKIC5TaCBTRUUgQUxTTwogLlhyIHRjcGR1bXAgMSAsCiAuWHIgaW9jdGwgMiAsCklu
ZGV4OiBpZmNvbmZpZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlmY29uZmlnLmMJKC4uLi9oZWFkL3NiaW4v
aWZjb25maWcvaWZjb25maWcuYykJKHJldmlzaW9uIDI1MjUwOSkKKysrIGlmY29uZmlnLmMJKC4u
Li91c2VyL3N5dXUvbXFfYnBmL3NiaW4vaWZjb25maWcvaWZjb25maWcuYykJKHJldmlzaW9uIDI1
MjUwOSkKQEAgLTkxNyw3ICs5MTcsNyBAQAogIlwwMjBcMVJYQ1NVTVwyVFhDU1VNXDNORVRDT05T
XDRWTEFOX01UVVw1VkxBTl9IV1RBR0dJTkdcNkpVTUJPX01UVVw3UE9MTElORyIgXAogIlwxMFZM
QU5fSFdDU1VNXDExVFNPNFwxMlRTTzZcMTNMUk9cMTRXT0xfVUNBU1RcMTVXT0xfTUNBU1RcMTZX
T0xfTUFHSUMiIFwKICJcMTdUT0U0XDIwVE9FNlwyMVZMQU5fSFdGSUxURVJcMjNWTEFOX0hXVFNP
XDI0TElOS1NUQVRFXDI1TkVUTUFQIiBcCi0iXDI2UlhDU1VNX0lQVjZcMjdUWENTVU1fSVBWNiIK
KyJcMjZSWENTVU1fSVBWNlwyN1RYQ1NVTV9JUFY2XDMwTVVMVElRVUVVRSIKIAogLyoKICAqIFBy
aW50IHRoZSBzdGF0dXMgb2YgdGhlIGludGVyZmFjZS4gIElmIGFuIGFkZHJlc3MgZmFtaWx5IHdh
cwpAQCAtOTg0LDYgKzk4NCwzOCBAQAogCQl9CiAJfQogCisJaWYgKChpZnIuaWZyX3JlcWNhcCAm
IElGQ0FQX01VTFRJUVVFVUUpKSB7CisJCWludCBpLCByeHFsZW4gPSAwLCB0eHFsZW4gPSAwOwor
CisJCWlmIChpb2N0bChzLCBTSU9DR0lGUUxFTiwgJmlmcikgPT0gMCkgeworCQkJcnhxbGVuID0g
aWZyLmlmcl9yeHF1ZXVlX2xlbjsKKwkJCXR4cWxlbiA9IGlmci5pZnJfdHhxdWV1ZV9sZW47CisJ
CX1lbHNlCisJCQlwZXJyb3IoImlvY3RsIik7CisKKwkJcHJpbnRmKCJcdHJ4cXVldWUgbGVuPSVk
IGFmZmluaXR5PVsiLCByeHFsZW4pOworCQlmb3IgKGkgPSAwOyBpIDwgcnhxbGVuOyBpKyspIHsK
KwkJCWlmci5pZnJfcXVldWVfYWZmaW5pdHlfaW5kZXggPSBpOworCQkJaWYgKGlvY3RsKHMsIFNJ
T0NHSUZSWFFBRkZJTklUWSwgJmlmcikgPT0gMCkKKwkJCQlwcmludGYoIiAlZDolZCIsIGlmci5p
ZnJfcXVldWVfYWZmaW5pdHlfaW5kZXgsCisJCQkJCWlmci5pZnJfcXVldWVfYWZmaW5pdHlfY3B1
KTsKKwkJCWVsc2UKKwkJCQlwZXJyb3IoImlvY3RsIik7CisJCX0KKwkJcHJpbnRmKCIgXVxuIik7
CisKKwkJcHJpbnRmKCJcdHR4cXVldWUgbGVuPSVkIGFmZmluaXR5PVsiLCB0eHFsZW4pOworCQlm
b3IgKGkgPSAwOyBpIDwgdHhxbGVuOyBpKyspIHsKKwkJCWlmci5pZnJfcXVldWVfYWZmaW5pdHlf
aW5kZXggPSBpOworCQkJaWYgKGlvY3RsKHMsIFNJT0NHSUZUWFFBRkZJTklUWSwgJmlmcikgPT0g
MCkKKwkJCQlwcmludGYoIiAlZDolZCIsIGlmci5pZnJfcXVldWVfYWZmaW5pdHlfaW5kZXgsCisJ
CQkJCWlmci5pZnJfcXVldWVfYWZmaW5pdHlfY3B1KTsKKwkJCWVsc2UKKwkJCQlwZXJyb3IoImlv
Y3RsIik7CisJCX0KKwkJcHJpbnRmKCIgXVxuIik7CisJfQorCiAJdHVubmVsX3N0YXR1cyhzKTsK
IAogCWZvciAoaWZ0ID0gaWZhOyBpZnQgIT0gTlVMTDsgaWZ0ID0gaWZ0LT5pZmFfbmV4dCkgewpJ
bmRleDogdGNwZHVtcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRjcGR1bXAuYwkoLi4uL2hlYWQvY29udHJp
Yi90Y3BkdW1wL3RjcGR1bXAuYykJKHJldmlzaW9uIDI1MjUwOSkKKysrIHRjcGR1bXAuYwkoLi4u
L3VzZXIvc3l1dS9tcV9icGYvY29udHJpYi90Y3BkdW1wL3RjcGR1bXAuYykJKHJldmlzaW9uIDI1
MjUwOSkKQEAgLTcwMiw2ICs3MDIsNyBAQAogI2VuZGlmCiAJaW50IHN0YXR1czsKIAlGSUxFICpW
RmlsZTsKKwl1aW50MzJfdCByeHEgPSAodWludDMyX3QpLTEsIHR4cSA9ICh1aW50MzJfdCktMSwg
b3RoZXIgPSAodWludDMyX3QpLTE7CiAjaWZkZWYgV0lOMzIKIAlpZih3c29ja2luaXQoKSAhPSAw
KSByZXR1cm4gMTsKICNlbmRpZiAvKiBXSU4zMiAqLwpAQCAtNzM3LDcgKzczOCw3IEBACiAjZW5k
aWYKIAogCXdoaWxlICgKLQkgICAgKG9wID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJhQWIiIEJfRkxB
RyAiYzpDOmQiIERfRkxBRyAiZUU6ZkY6RzpoSGk6IiBJX0ZMQUcgal9GTEFHIEpfRkxBRyAiS2xM
bTpNOm5OT3BxcjpSczpTdFQ6dSIgVV9GTEFHICJWOnZ3Olc6eFh5Oll6Olo6IikpICE9IC0xKQor
CSAgICAob3AgPSBnZXRvcHQoYXJnYywgYXJndiwgImFBYiIgQl9GTEFHICJjOkM6ZCIgRF9GTEFH
ICJlRTpmRjpHOmhIaToiIElfRkxBRyBqX0ZMQUcgSl9GTEFHICJLbExtOk06bk5PcHFyOlJzOlN0
VDp1IiBVX0ZMQUcgIlY6dnc6Vzp4WHk6WXo6WjpROmc6ayIpKSAhPSAtMSkKIAkJc3dpdGNoIChv
cCkgewogCiAJCWNhc2UgJ2EnOgpAQCAtODE1LDYgKzgxNiwxMCBAQAogCQkJaW5maWxlID0gb3B0
YXJnOwogCQkJYnJlYWs7CiAKKwkJY2FzZSAnZyc6CisJCQl0eHEgPSBhdG9pKG9wdGFyZyk7CisJ
CQlicmVhazsKKwogCQljYXNlICdHJzoKIAkJCUdmbGFnID0gYXRvaShvcHRhcmcpOwogCQkJaWYg
KEdmbGFnIDwgMCkKQEAgLTkxOSw2ICs5MjQsMTIgQEAKICNlbmRpZiAvKiBXSU4zMiAqLwogCQkJ
YnJlYWs7CiAKKwkJY2FzZSAnayc6CisJCQlvdGhlciA9IGF0b2kob3B0YXJnKTsKKwkJCWlmIChv
dGhlciAhPSAwIHx8IG90aGVyICE9IDEpCisJCQkJdXNhZ2UoKTsKKwkJCWJyZWFrOworCiAJCWNh
c2UgJ0snOgogCQkJKytLZmxhZzsKIAkJCWJyZWFrOwpAQCAtOTY1LDYgKzk3NiwxMCBAQAogCQkJ
KytzdXBwcmVzc19kZWZhdWx0X3ByaW50OwogCQkJYnJlYWs7CiAKKwkJY2FzZSAnUSc6CisJCQly
eHEgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwogCQljYXNlICdyJzoKIAkJCVJGaWxlTmFt
ZSA9IG9wdGFyZzsKIAkJCWJyZWFrOwpAQCAtMTI3NCw2ICsxMjg5LDEzIEBACiAJCQkgICAgCSAg
ICBkZXZpY2UsIHBjYXBfc3RhdHVzdG9zdHIoc3RhdHVzKSk7CiAJCX0KICNlbmRpZgorIAkJaWYg
KHJ4cSAhPSAodWludDMyX3QpLTEpCisgCQkJcGNhcF9zZXRfcnhxX21hc2socGQsIHJ4cSk7Cisg
CQlpZiAodHhxICE9ICh1aW50MzJfdCktMSkKKyAJCQlwY2FwX3NldF90eHFfbWFzayhwZCwgdHhx
KTsKKyAJCWlmIChvdGhlciAhPSAodWludDMyX3QpLTEpCisgCQkJcGNhcF9zZXRfb3RoZXJfbWFz
ayhwZCwgb3RoZXIpOworCiAJCXN0YXR1cyA9IHBjYXBfYWN0aXZhdGUocGQpOwogCQlpZiAoc3Rh
dHVzIDwgMCkgewogCQkJLyoKQEAgLTIwNzgsNyArMjEwMCw3IEBACiAjZW5kaWYgLyogV0lOMzIg
Ki8KICNlbmRpZiAvKiBIQVZFX1BDQVBfTElCX1ZFUlNJT04gKi8KIAkodm9pZClmcHJpbnRmKHN0
ZGVyciwKLSJVc2FnZTogJXMgWy1hQWJkIiBEX0ZMQUcgImVmaEgiIElfRkxBRyBKX0ZMQUcgIkts
TG5OT3BxUlN0dSIgVV9GTEFHICJ2eFhdIiBCX0ZMQUdfVVNBR0UgIiBbIC1jIGNvdW50IF1cbiIs
IHByb2dyYW1fbmFtZSk7CisiVXNhZ2U6ICVzIFstYUFiZCIgRF9GTEFHICJlZmdoSCIgSV9GTEFH
IEpfRkxBRyAia0tsTG5OT3BxUVJTdHUiIFVfRkxBRyAidnhYXSIgQl9GTEFHX1VTQUdFICIgWyAt
YyBjb3VudCBdXG4iLCBwcm9ncmFtX25hbWUpOwogCSh2b2lkKWZwcmludGYoc3RkZXJyLAogIlx0
XHRbIC1DIGZpbGVfc2l6ZSBdIFsgLUUgYWxnbzpzZWNyZXQgXSBbIC1GIGZpbGUgXSBbIC1HIHNl
Y29uZHMgXVxuIik7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCkluZGV4OiBwY2FwLWludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBjYXAtaW50LmgJKC4uLi9oZWFkL2NvbnRyaWIvbGlicGNhcC9wY2FwLWlu
dC5oKQkocmV2aXNpb24gMjUyNTA5KQorKysgcGNhcC1pbnQuaAkoLi4uL3VzZXIvc3l1dS9tcV9i
cGYvY29udHJpYi9saWJwY2FwL3BjYXAtaW50LmgpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0zMzcs
NiArMzM3LDkgQEAKIAl1X2ludCAqdHN0YW1wX3R5cGVfbGlzdDsKIAogCXN0cnVjdCBwY2FwX3Br
dGhkciBwY2FwX2hlYWRlcjsJLyogVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwY2FwX25leHRfZXgo
KSB0byB3b3JrICovCisKKwl1aW50MzJfdCByeHFfbnVtLCB0eHFfbnVtOworCXVpbnQzMl90IG90
aGVyX21hc2s7CiB9OwogCiAvKgpJbmRleDogcGNhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBjYXAuaAko
Li4uL2hlYWQvY29udHJpYi9saWJwY2FwL3BjYXAvcGNhcC5oKQkocmV2aXNpb24gMjUyNTA5KQor
KysgcGNhcC5oCSguLi4vdXNlci9zeXV1L21xX2JwZi9jb250cmliL2xpYnBjYXAvcGNhcC9wY2Fw
LmgpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0zMzEsNiArMzMxLDEwIEBACiAjZGVmaW5lIFBDQVBf
VFNUQU1QX0FEQVBURVIJCTMJLyogZGV2aWNlLXByb3ZpZGVkLCBzeW5jZWQgd2l0aCB0aGUgc3lz
dGVtIGNsb2NrICovCiAjZGVmaW5lIFBDQVBfVFNUQU1QX0FEQVBURVJfVU5TWU5DRUQJNAkvKiBk
ZXZpY2UtcHJvdmlkZWQsIG5vdCBzeW5jZWQgd2l0aCB0aGUgc3lzdGVtIGNsb2NrICovCiAKK2lu
dAlwY2FwX3NldF9yeHFfbWFzayhwY2FwX3QgKiwgdWludDMyX3QpOworaW50CXBjYXBfc2V0X3R4
cV9tYXNrKHBjYXBfdCAqLCB1aW50MzJfdCk7CitpbnQJcGNhcF9zZXRfb3RoZXJfbWFzayhwY2Fw
X3QgKiwgdWludDMyX3QpOworCiBwY2FwX3QJKnBjYXBfb3Blbl9saXZlKGNvbnN0IGNoYXIgKiwg
aW50LCBpbnQsIGludCwgY2hhciAqKTsKIHBjYXBfdAkqcGNhcF9vcGVuX2RlYWQoaW50LCBpbnQp
OwogcGNhcF90CSpwY2FwX29wZW5fb2ZmbGluZShjb25zdCBjaGFyICosIGNoYXIgKik7CkluZGV4
OiBwY2FwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGNhcC5jCSguLi4vaGVhZC9jb250cmliL2xpYnBjYXAv
cGNhcC5jKQkocmV2aXNpb24gMjUyNTA5KQorKysgcGNhcC5jCSguLi4vdXNlci9zeXV1L21xX2Jw
Zi9jb250cmliL2xpYnBjYXAvcGNhcC5jKQkocmV2aXNpb24gMjUyNTA5KQpAQCAtNTA1LDYgKzUw
NSw5IEBACiAJcC0+b3B0LnByb21pc2MgPSAwOwogCXAtPm9wdC5idWZmZXJfc2l6ZSA9IDA7CiAJ
cC0+b3B0LnRzdGFtcF90eXBlID0gLTE7CS8qIGRlZmF1bHQgdG8gbm90IHNldHRpbmcgdGltZSBz
dGFtcCB0eXBlICovCisgCXAtPnJ4cV9udW0gPSAodWludDMyX3QpLTE7CisgCXAtPnR4cV9udW0g
PSAodWludDMyX3QpLTE7CisgCXAtPm90aGVyX21hc2sgPSAodWludDMyX3QpLTE7CiAJcmV0dXJu
IChwKTsKIH0KIApAQCAtNjM3LDYgKzY0MCwzMyBAQAogCXJldHVybiAoc3RhdHVzKTsKIH0KIAor
aW50CitwY2FwX3NldF9yeHFfbWFzayhwY2FwX3QgKnAsIHVpbnQzMl90IG51bSkKK3sKKwlpZiAo
cGNhcF9jaGVja19hY3RpdmF0ZWQocCkpCisJCXJldHVybiBQQ0FQX0VSUk9SX0FDVElWQVRFRDsK
KwlwLT5yeHFfbnVtID0gbnVtOworCXJldHVybiAwOworfQorCitpbnQKK3BjYXBfc2V0X3R4cV9t
YXNrKHBjYXBfdCAqcCwgdWludDMyX3QgbnVtKQoreworCWlmIChwY2FwX2NoZWNrX2FjdGl2YXRl
ZChwKSkKKwkJcmV0dXJuIFBDQVBfRVJST1JfQUNUSVZBVEVEOworCXAtPnR4cV9udW0gPSBudW07
CisJcmV0dXJuIDA7Cit9CisKK2ludAorcGNhcF9zZXRfb3RoZXJfbWFzayhwY2FwX3QgKnAsIHVp
bnQzMl90IG1hc2spCit7CisJaWYgKHBjYXBfY2hlY2tfYWN0aXZhdGVkKHApKQorCQlyZXR1cm4g
UENBUF9FUlJPUl9BQ1RJVkFURUQ7CisJcC0+b3RoZXJfbWFzayA9IG1hc2s7CisJcmV0dXJuIDA7
Cit9CisKIHBjYXBfdCAqCiBwY2FwX29wZW5fbGl2ZShjb25zdCBjaGFyICpzb3VyY2UsIGludCBz
bmFwbGVuLCBpbnQgcHJvbWlzYywgaW50IHRvX21zLCBjaGFyICplcnJidWYpCiB7CkluZGV4OiBw
Y2FwLWJwZi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHBjYXAtYnBmLmMJKC4uLi9oZWFkL2NvbnRyaWIvbGli
cGNhcC9wY2FwLWJwZi5jKQkocmV2aXNpb24gMjUyNTA5KQorKysgcGNhcC1icGYuYwkoLi4uL3Vz
ZXIvc3l1dS9tcV9icGYvY29udHJpYi9saWJwY2FwL3BjYXAtYnBmLmMpCShyZXZpc2lvbiAyNTI1
MDkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx0
aW1lLmg+CiAvKgogICogPG5ldC9icGYuaD4gZGVmaW5lcyBpb2N0bHMsIGJ1dCBkb2Vzbid0IGlu
Y2x1ZGUgPHN5cy9pb2Njb20uaD4uCkBAIC0yMTg3LDYgKzIxODgsNDAgQEAKIAl9CiAjZW5kaWYK
IAorCWlmIChwLT5yeHFfbnVtICE9ICh1aW50MzJfdCktMSB8fCBwLT50eHFfbnVtICE9ICh1aW50
MzJfdCktMSB8fAorCQlwLT5vdGhlcl9tYXNrICE9ICh1aW50MzJfdCktMSkgeworCQlpZiAoaW9j
dGwoZmQsIEJJT0NFTkFRTUFTSywgTlVMTCkgPCAwKSB7CisJCQlzbnByaW50ZihwLT5lcnJidWYs
IFBDQVBfRVJSQlVGX1NJWkUsICJCSU9DRU5BUU1BU0s6ICVzIiwKKwkJCSAgICBwY2FwX3N0cmVy
cm9yKGVycm5vKSk7CisJCQlzdGF0dXMgPSBQQ0FQX0VSUk9SOworCQkJZ290byBiYWQ7CisJCX0K
KwkJaWYgKHAtPnJ4cV9udW0gIT0gKHVpbnQzMl90KS0xKSB7CisJCQlpZiAoaW9jdGwoZmQsIEJJ
T0NTVFJYUU1BU0ssICZwLT5yeHFfbnVtKSA8IDApIHsKKwkJCQlzbnByaW50ZihwLT5lcnJidWYs
IFBDQVBfRVJSQlVGX1NJWkUsICJCSU9DU1RSWFFNQVNLOiAlcyIsCisJCQkJICAgIHBjYXBfc3Ry
ZXJyb3IoZXJybm8pKTsKKwkJCQlzdGF0dXMgPSBQQ0FQX0VSUk9SOworCQkJCWdvdG8gYmFkOwor
CQkJfQorCQl9CisJCWlmIChwLT50eHFfbnVtICE9ICh1aW50MzJfdCktMSkgeworCQkJaWYgKGlv
Y3RsKGZkLCBCSU9DU1RUWFFNQVNLLCAmcC0+dHhxX251bSkgPCAwKSB7CisJCQkJc25wcmludGYo
cC0+ZXJyYnVmLCBQQ0FQX0VSUkJVRl9TSVpFLCAiQklPQ1NUVFhRTUFTSzogJXMiLAorCQkJCSAg
ICBwY2FwX3N0cmVycm9yKGVycm5vKSk7CisJCQkJc3RhdHVzID0gUENBUF9FUlJPUjsKKwkJCQln
b3RvIGJhZDsKKwkJCX0KKwkJfQorCQlpZiAocC0+b3RoZXJfbWFzayAhPSAodWludDMyX3QpLTEp
IHsKKwkJCWlmIChpb2N0bChmZCwgQklPQ1NUT1RIRVJNQVNLLCAmcC0+b3RoZXJfbWFzaykgPCAw
KSB7CisJCQkJc25wcmludGYocC0+ZXJyYnVmLCBQQ0FQX0VSUkJVRl9TSVpFLCAiQklPQ1NUT1RI
RVJRTUFTSzogJXMiLAorCQkJCSAgICBwY2FwX3N0cmVycm9yKGVycm5vKSk7CisJCQkJc3RhdHVz
ID0gUENBUF9FUlJPUjsKKwkJCQlnb3RvIGJhZDsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJICog
SWYgdGhlcmUncyBubyBmaWx0ZXIgcHJvZ3JhbSBpbnN0YWxsZWQsIHRoZXJlJ3MKIAkgKiBubyBp
bmRpY2F0aW9uIHRvIHRoZSBrZXJuZWwgb2Ygd2hhdCB0aGUgc25hcHNob3QKSW5kZXg6IGlmbmV0
LjkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gaWZuZXQuOQkoLi4uL2hlYWQvc2hhcmUvbWFuL21hbjkvaWZuZXQu
OSkJKHJldmlzaW9uIDI1MjUwOSkKKysrIGlmbmV0LjkJKC4uLi91c2VyL3N5dXUvbXFfYnBmL3No
YXJlL21hbi9tYW45L2lmbmV0LjkpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0xMTksNiArMTE5LDE0
IEBACiAuRm8gXCoobHAqaWZfcmVzb2x2ZW11bHRpXCoocnAKIC5GYSAic3RydWN0IGlmbmV0ICpp
ZnAiICJzdHJ1Y3Qgc29ja2FkZHIgKipyZXRzYSIgInN0cnVjdCBzb2NrYWRkciAqYWRkciIKIC5G
YworLkZ0IGludAorLkZuIFwqKGxwKmlmX2dldF9yeHF1ZXVlX2xlblwqKHJwICJzdHJ1Y3QgaWZu
ZXQgKmlmcCIKKy5GdCBpbnQKKy5GbiBcKihscCppZl9nZXRfdHhxdWV1ZV9sZW5cKihycCAic3Ry
dWN0IGlmbmV0ICppZnAiCisuRnQgaW50CisuRm4gXCoobHAqaWZfZ2V0X3J4cXVldWVfYWZmaW5p
dHlcKihycCAic3RydWN0IGlmbmV0ICppZnAiICJpbnQgcXVlaWQiCisuRnQgaW50CisuRm4gXCoo
bHAqaWZfZ2V0X3R4cXVldWVfYWZmaW5pdHlcKihycCAic3RydWN0IGlmbmV0ICppZnAiICJpbnQg
cXVlaWQiCiAuU3MgInN0cnVjdCBpZmFkZHIgbWVtYmVyIGZ1bmN0aW9uIgogLkZ0IHZvaWQKIC5G
byBcKihscCppZmFfcnRyZXF1ZXN0XCoocnAKQEAgLTUzNyw2ICs1NDUsMTQgQEAKIGNvcnJlc3Bv
bmRzIHRvIHRoYXQgYWRkcmVzcyB3aGljaCBpcyByZXR1cm5lZCBpbgogLkZhICpyZXRzYSAuCiBS
ZXR1cm5zIHplcm8gb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorLkl0
IEZuIGlmX2dldF9yeHF1ZXVlX2xlbgorR2V0IFJYIHF1ZXVlIGxlbmd0aCwgb25seSByZXF1aXJl
ZCBmb3IgbXVsdGlxdWV1ZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcy4KKy5JdCBGbiBpZl9nZXRfdHhx
dWV1ZV9sZW4KK0dldCBUWCBxdWV1ZSBsZW5ndGgsIG9ubHkgcmVxdWlyZWQgZm9yIG11bHRpcXVl
dWUgc3VwcG9ydGVkIGludGVyZmFjZXMuCisuSXQgRm4gaWZfZ2V0X3J4cXVldWVfYWZmaW5pdHkK
K0dldCBSWCBxdWV1ZSBhZmZpbml0eSwgb25seSByZXF1aXJlZCBmb3IgbXVsdGlxdWV1ZSBzdXBw
b3J0ZWQgaW50ZXJmYWNlcy4KKy5JdCBGbiBpZl9nZXRfdHhxdWV1ZV9hZmZpbml0eQorR2V0IFRY
IHF1ZXVlIGFmZmluaXR5LCBvbmx5IHJlcXVpcmVkIGZvciBtdWx0aXF1ZXVlIHN1cHBvcnRlZCBp
bnRlcmZhY2VzLgogLkVsCiAuU3MgIkludGVyZmFjZSBGbGFncyIKIEludGVyZmFjZSBmbGFncyBh
cmUgdXNlZCBmb3IgYSBudW1iZXIgb2YgZGlmZmVyZW50IHB1cnBvc2VzLgpJbmRleDogbmV0aW50
cm8uNAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBuZXRpbnRyby40CSguLi4vaGVhZC9zaGFyZS9tYW4vbWFuNC9u
ZXRpbnRyby40KQkocmV2aXNpb24gMjUyNTA5KQorKysgbmV0aW50cm8uNAkoLi4uL3VzZXIvc3l1
dS9tcV9icGYvc2hhcmUvbWFuL21hbjQvbmV0aW50cm8uNCkJKHJldmlzaW9uIDI1MjUwOSkKQEAg
LTIxMyw2ICsyMTMsOCBAQAogICAgICAgICBpbnQgICAgICAgaWZydV9tZWRpYTsKICAgICAgICAg
Y2FkZHJfdCAgIGlmcnVfZGF0YTsKICAgICAgICAgaW50ICAgICAgIGlmcnVfY2FwWzJdOworICAg
ICAgICBpbnQgICAgICAgaWZydV9xdWV1ZV9sZW5bMl07CisgICAgICAgIGludCAgICAgICBpZnJ1
X3F1ZXVlX2FmZmluaXR5WzJdOwogICAgIH0gaWZyX2lmcnU7CiAjZGVmaW5lIGlmcl9hZGRyICAg
ICAgaWZyX2lmcnUuaWZydV9hZGRyICAgICAgLyogYWRkcmVzcyAqLwogI2RlZmluZSBpZnJfZHN0
YWRkciAgIGlmcl9pZnJ1LmlmcnVfZHN0YWRkciAgIC8qIG90aGVyIGVuZCBvZiBwLXRvLXAgbGlu
ayAqLwpAQCAtMjI4LDYgKzIzMCwxMCBAQAogI2RlZmluZSBpZnJfcmVxY2FwICAgIGlmcl9pZnJ1
LmlmcnVfY2FwWzBdICAgIC8qIHJlcXVlc3RlZCBjYXBhYmlsaXRpZXMgKi8KICNkZWZpbmUgaWZy
X2N1cmNhcCAgICBpZnJfaWZydS5pZnJ1X2NhcFsxXSAgICAvKiBjdXJyZW50IGNhcGFiaWxpdGll
cyAqLwogI2RlZmluZSBpZnJfaW5kZXggICAgIGlmcl9pZnJ1LmlmcnVfaW5kZXggICAgIC8qIGlu
dGVyZmFjZSBpbmRleCAqLworI2RlZmluZSBpZnJfcnhxdWV1ZV9sZW4JaWZyX2lmcnUuaWZydV9x
dWV1ZV9sZW5bMF0gLyogcnhxdWV1ZSBsZW4gKi8KKyNkZWZpbmUgaWZyX3R4cXVldWVfbGVuCWlm
cl9pZnJ1LmlmcnVfcXVldWVfbGVuWzFdIC8qIHR4cXVldWUgbGVuICovCisjZGVmaW5lIGlmcl9x
dWV1ZV9hZmZpbml0eV9pbmRleCBpZnJfaWZydS5pZnJ1X3F1ZXVlX2FmZmluaXR5WzBdIC8qIHF1
ZXVlIGlkICovCisjZGVmaW5lIGlmcl9xdWV1ZV9hZmZpbml0eV9jcHUgaWZyX2lmcnUuaWZydV9x
dWV1ZV9hZmZpbml0eVsxXSAvKiBjcHUgaWQgKi8KIH07CiAuRWQKIC5QcApAQCAtMzE5LDYgKzMy
NSwxMiBAQAogZmllbGQgd2lsbCBjb250YWluIHRoZSBuZXcgaW50ZXJmYWNlIG5hbWUuCiAuSXQg
RHYgU0lPQ0lGREVTVFJPWQogQXR0ZW1wdCB0byBkZXN0cm95IHRoZSBzcGVjaWZpZWQgaW50ZXJm
YWNlLgorLkl0IER2IFNJT0NHSUZRTEVOCitHZXQgaW50ZXJmYWNlIFJYL1RYIHF1ZXVlIGxlbmd0
aC4KKy5JdCBEdiBTSU9DR0lGUlhRQUZGSU5JVFkKK0dldCBpbnRlcmZhY2UgUlggcXVldWUgYWZm
aW5pdHkuCisuSXQgRHYgU0lPQ0dJRlRYUUFGRklOSVRZCitHZXQgaW50ZXJmYWNlIFRYIHF1ZXVl
IGFmZmluaXR5LgogLkVsCiAuUHAKIFRoZXJlIGFyZSB0d28gcmVxdWVzdHMgdGhhdCBtYWtlIHVz
ZSBvZiBhIG5ldyBzdHJ1Y3R1cmU6CkluZGV4OiBicGYuNAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicGYuNAko
Li4uL2hlYWQvc2hhcmUvbWFuL21hbjQvYnBmLjQpCShyZXZpc2lvbiAyNTI1MDkpCisrKyBicGYu
NAkoLi4uL3VzZXIvc3l1dS9tcV9icGYvc2hhcmUvbWFuL21hbjQvYnBmLjQpCShyZXZpc2lvbiAy
NTI1MDkpCkBAIC02MzEsNiArNjMxLDQ2IEBACiAuVnQgYnpoX2tlcm5lbF9nZW4KIGFnYWluc3QK
IC5WdCBiemhfdXNlcl9nZW4gLgorLkl0IER2IEJJT0NFTkFRTUFTSworRW5hYmxlcyBtdWx0aXF1
ZXVlIGZpbHRlciBvbiB0aGUgZGVzY3JpcHRvci4KKworLkl0IER2IEJJT0NESVNRTUFTSworRGlz
YWJsZXMgbXVsdGlxdWV1ZSBmaWx0ZXIgb24gdGhlIGRlc2NyaXB0b3IuCisKKy5JdCBEdiBCSU9D
U1RSWFFNQVNLCisuUHEgTGkgdWludDMyX3QKK1NldCBtYXNrIGJpdCBvbiBzcGVjaWZpZWQgUlgg
cXVldWUuCisKKy5JdCBEdiBCSU9DQ1JSWFFNQVNLCisuUHEgTGkgdWludDMyX3QKK0NsZWFyIG1h
c2sgYml0IG9uIHNwZWNpZmllZCBSWCBxdWV1ZS4KKworLkl0IER2IEJJT0NHVFJYUU1BU0sKKy5Q
cSBMaSB1aW50MzJfdAorR2V0IG1hc2sgYml0IG9uIHNwZWNpZmllZCBSWCBxdWV1ZS4KKworLkl0
IER2IEJJT0NTVFRYUU1BU0sKKy5QcSBMaSB1aW50MzJfdAorU2V0IG1hc2sgYml0IG9uIHNwZWNp
ZmllZCBUWCBxdWV1ZS4KKworLkl0IER2IEJJT0NDUlRYUU1BU0sKKy5QcSBMaSB1aW50MzJfdAor
Q2xlYXIgbWFzayBiaXQgb24gc3BlY2lmaWVkIFRYIHF1ZXVlLgorCisuSXQgRHYgQklPQ0dUVFhR
TUFTSworLlBxIExpIHVpbnQzMl90CitHZXQgbWFzayBiaXQgb24gc3BlY2lmaWVkIFRYIHF1ZXVl
LgorCisuSXQgRHYgQklPQ1NUT1RIRVJNQVNLCitTZXQgbWFzayBiaXQgZm9yIHRoZSBwYWNrZXRz
IHdoaWNoIG5vdCB0aWVkIHdpdGggYW55IHF1ZXVlcy4KKworLkl0IER2IEJJT0NDUk9USEVSTUFT
SworQ2xlYXIgbWFzayBiaXQgZm9yIHRoZSBwYWNrZXRzIHdoaWNoIG5vdCB0aWVkIHdpdGggYW55
IHF1ZXVlcy4KKworLkl0IER2IEJJT0NHVE9USEVSTUFTSworLlBxIExpIHVpbnQzMl90CitHZXQg
bWFzayBiaXQgZm9yIHRoZSBwYWNrZXRzIHdoaWNoIG5vdCB0aWVkIHdpdGggYW55IHF1ZXVlcy4K
KwogLkVsCiAuU2ggQlBGIEhFQURFUgogT25lIG9mIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlcyBp
cyBwcmVwZW5kZWQgdG8gZWFjaCBwYWNrZXQgcmV0dXJuZWQgYnkKQEAgLTEwMzcsNiArMTA3Nywy
NCBAQAogCUJQRl9TVE1UKEJQRl9SRVQrQlBGX0ssIDApLAogfTsKIC5FZAorLlNoIE1VTFRJUVVF
VUUgU1VQUE9SVAorTXVsdGlxdWV1ZSBuZXR3b3JrIGludGVyZmFjZSBzdXBwb3J0IGZ1bmN0aW9u
IHByb3ZpZGVzIGludGVyZmFjZXMgZm9yIAorbXVsdGl0aHJlYWRlZCBwYWNrZXQgcHJvY2Vzc2lu
ZyB1c2luZyBicGYuCisKK05vcm1hbCBicGYgY2FuIHJlY2VpdmUgcGFja2V0cyBmcm9tIHNwZWNp
ZmllZCBpbnRlcmZhY2UsIG11bHRpcXVldWUgc3VwcG9ydCAKK2Z1bmN0aW9uIGNhbiByZWNlaXZl
IHBhY2tldHMgZnJvbSBzcGVjaWZpZWQgaGFyZHdhcmUgcXVldWUuCisKK1RoaXMgZGlzdHJpYnV0
ZXMgYnBmIHdvcmtsb2FkIG9uIG11bHRpcGxlIHRocmVhZHMsIGFsc28gcmVkdWNlcyBsb2NrIAor
Y29udGVudGlvbiBvbiBicGYuCisKK1RvIG1ha2UgeW91ciBwcm9ncmFtIG11bHRpdGhyZWFkZWQs
IHlvdSdsbCBuZWVkIHRvIG9wZW4gYnBmIGRlc2NyaXB0b3Igb24gZWFjaCAKK3RocmVhZCwgZW5h
YmxlIG11bHRpcXVldWUgc3VwcG9ydCBieSBCSU9DRU5BUU1BU0sgaW9jdGwsIGFuZCBzZXQgcXVl
dWUgbWFzayBieSAKK0JJT0NTVFJYUU1BU0sgLyBCSU9DU1RUWFFNQVNLIC8gQklPQ1NUT1RIRVJN
QVNLIGlvY3Rscy4KKworUXVldWUgbGVuZ3RoIGFuZCBxdWV1ZSBhZmZpbml0eSBpbmZvcm1hdGlv
biBtYXkgdXNlZnVsIHRvIG9wdGltaXplIHNldHRpbmcgCitxdWV1ZSBtYXNrIG9uIGJwZiBkZXNj
cmlwdG9yLCBzZWUKKy5YciBuZXRpbnRybyA0IC4KKwogLlNoIFNFRSBBTFNPCiAuWHIgdGNwZHVt
cCAxICwKIC5YciBpb2N0bCAyICwKSW5kZXg6IGlmX214Z2UuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpZl9t
eGdlLmMJKC4uLi9oZWFkL3N5cy9kZXYvbXhnZS9pZl9teGdlLmMpCShyZXZpc2lvbiAyNTI1MDkp
CisrKyBpZl9teGdlLmMJKC4uLi91c2VyL3N5dXUvbXFfYnBmL3N5cy9kZXYvbXhnZS9pZl9teGdl
LmMpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0xMjAsNiArMTIwLDExIEBACiBzdGF0aWMgaW50IG14
Z2Vfc2h1dGRvd24oZGV2aWNlX3QgZGV2KTsKIHN0YXRpYyB2b2lkIG14Z2VfaW50cih2b2lkICph
cmcpOwogCitzdGF0aWMgaW50IG14Z2VfZ2V0X3J4cXVldWVfbGVuKHN0cnVjdCBpZm5ldCAqKTsK
K3N0YXRpYyBpbnQgbXhnZV9nZXRfdHhxdWV1ZV9sZW4oc3RydWN0IGlmbmV0ICopOworc3RhdGlj
IGludCBteGdlX2dldF9yeHF1ZXVlX2FmZmluaXR5KHN0cnVjdCBpZm5ldCAqLCBpbnQpOworc3Rh
dGljIGludCBteGdlX2dldF90eHF1ZXVlX2FmZmluaXR5KHN0cnVjdCBpZm5ldCAqLCBpbnQpOwor
CiBzdGF0aWMgZGV2aWNlX21ldGhvZF90IG14Z2VfbWV0aG9kc1tdID0KIHsKICAgLyogRGV2aWNl
IGludGVyZmFjZSAqLwpAQCAtMjI3Miw2ICsyMjc3LDkgQEAKIAkJaWYgKG0gPT0gTlVMTCkgewog
CQkJcmV0dXJuOwogCQl9CisJCW0tPm1fcGt0aGRyLnJ4cXVldWUgPSAodWludDMyX3QpLTE7CisJ
CW0tPm1fcGt0aGRyLnR4cXVldWUgPSAoc3MgLSBzYy0+c3MpOworCiAJCS8qIGxldCBCUEYgc2Vl
IGl0ICovCiAJCUJQRl9NVEFQKGlmcCwgbSk7CiAKQEAgLTIzMDYsNiArMjMxNCw5IEBACiAKIAlp
ZiAoIWRyYnJfbmVlZHNfZW5xdWV1ZShpZnAsIHR4LT5icikgJiYKIAkgICAgKCh0eC0+bWFzayAt
ICh0eC0+cmVxIC0gdHgtPmRvbmUpKSA+IHR4LT5tYXhfZGVzYykpIHsKKwkJbS0+bV9wa3RoZHIu
cnhxdWV1ZSA9ICh1aW50MzJfdCktMTsKKwkJbS0+bV9wa3RoZHIudHhxdWV1ZSA9IChzcyAtIHNj
LT5zcyk7CisKIAkJLyogbGV0IEJQRiBzZWUgaXQgKi8KIAkJQlBGX01UQVAoaWZwLCBtKTsKIAkJ
LyogZ2l2ZSBpdCB0byB0aGUgbmljICovCkBAIC0yNzE5LDYgKzI3MzAsOCBAQAogCWlmIChzYy0+
bnVtX3NsaWNlcyA+IDEpIHsKIAkJbS0+bV9wa3RoZHIuZmxvd2lkID0gKHNzIC0gc2MtPnNzKTsK
IAkJbS0+bV9mbGFncyB8PSBNX0ZMT1dJRDsKKwkJbS0+bV9wa3RoZHIucnhxdWV1ZSA9IChzcyAt
IHNjLT5zcyk7CisJCW0tPm1fcGt0aGRyLnR4cXVldWUgPSAodWludDMyX3QpLTE7CiAJfQogCS8q
IHBhc3MgdGhlIGZyYW1lIHVwIHRoZSBzdGFjayAqLwogCSgqaWZwLT5pZl9pbnB1dCkoaWZwLCBt
KTsKQEAgLTQ4OTYsNiArNDkwOSw3IEBACiAjaWYgZGVmaW5lZChJTkVUKSB8fCBkZWZpbmVkKElO
RVQ2KQogCWlmcC0+aWZfY2FwYWJpbGl0aWVzIHw9IElGQ0FQX0xSTzsKICNlbmRpZgorCWlmcC0+
aWZfY2FwYWJpbGl0aWVzIHw9IElGQ0FQX01VTFRJUVVFVUU7CiAKICNpZmRlZiBNWEdFX05FV19W
TEFOX0FQSQogCWlmcC0+aWZfY2FwYWJpbGl0aWVzIHw9IElGQ0FQX1ZMQU5fSFdUQUdHSU5HIHwg
SUZDQVBfVkxBTl9IV0NTVU07CkBAIC00OTI5LDYgKzQ5NDMsMTEgQEAKICAgICAgICAgaWZwLT5p
Zl9mbGFncyA9IElGRl9CUk9BRENBU1QgfCBJRkZfU0lNUExFWCB8IElGRl9NVUxUSUNBU1Q7CiAg
ICAgICAgIGlmcC0+aWZfaW9jdGwgPSBteGdlX2lvY3RsOwogICAgICAgICBpZnAtPmlmX3N0YXJ0
ID0gbXhnZV9zdGFydDsKKwlpZnAtPmlmX2dldF9yeHF1ZXVlX2xlbiA9IG14Z2VfZ2V0X3J4cXVl
dWVfbGVuOworCWlmcC0+aWZfZ2V0X3R4cXVldWVfbGVuID0gbXhnZV9nZXRfdHhxdWV1ZV9sZW47
CisJaWZwLT5pZl9nZXRfcnhxdWV1ZV9hZmZpbml0eSA9IG14Z2VfZ2V0X3J4cXVldWVfYWZmaW5p
dHk7CisJaWZwLT5pZl9nZXRfdHhxdWV1ZV9hZmZpbml0eSA9IG14Z2VfZ2V0X3R4cXVldWVfYWZm
aW5pdHk7CisKIAkvKiBJbml0aWFsaXNlIHRoZSBpZm1lZGlhIHN0cnVjdHVyZSAqLwogCWlmbWVk
aWFfaW5pdCgmc2MtPm1lZGlhLCAwLCBteGdlX21lZGlhX2NoYW5nZSwgCiAJCSAgICAgbXhnZV9t
ZWRpYV9zdGF0dXMpOwpAQCAtNTAyNSw2ICs1MDQ0LDMzIEBACiAJcmV0dXJuIDA7CiB9CiAKKwor
c3RhdGljIGludAorbXhnZV9nZXRfcnhxdWV1ZV9sZW4oc3RydWN0IGlmbmV0ICppZnApCit7CisJ
bXhnZV9zb2Z0Y190ICpzYyA9IGlmcC0+aWZfc29mdGM7CisJcmV0dXJuIChzYy0+bnVtX3NsaWNl
cyk7Cit9CisKK3N0YXRpYyBpbnQKK214Z2VfZ2V0X3R4cXVldWVfbGVuKHN0cnVjdCBpZm5ldCAq
aWZwKQoreworCW14Z2Vfc29mdGNfdCAqc2MgPSBpZnAtPmlmX3NvZnRjOworCXJldHVybiAoc2Mt
Pm51bV9zbGljZXMpOworfQorCitzdGF0aWMgaW50CitteGdlX2dldF9yeHF1ZXVlX2FmZmluaXR5
KHN0cnVjdCBpZm5ldCAqaWZwLCBpbnQgcXVlaWQpCit7CisJcmV0dXJuIChxdWVpZCk7Cit9CisK
K3N0YXRpYyBpbnQKK214Z2VfZ2V0X3R4cXVldWVfYWZmaW5pdHkoc3RydWN0IGlmbmV0ICppZnAs
IGludCBxdWVpZCkKK3sKKwlyZXR1cm4gKHF1ZWlkKTsKK30KKwogLyoKICAgVGhpcyBmaWxlIHVz
ZXMgTXlyaTEwR0UgZHJpdmVyIGluZGVudGF0aW9uLgogCkluZGV4OiBpeGdiZS5jCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGl4Z2JlLmMJKC4uLi9oZWFkL3N5cy9kZXYvaXhnYmUvaXhnYmUuYykJKHJldmlzaW9u
IDI1MjUwOSkKKysrIGl4Z2JlLmMJKC4uLi91c2VyL3N5dXUvbXFfYnBmL3N5cy9kZXYvaXhnYmUv
aXhnYmUuYykJKHJldmlzaW9uIDI1MjUwOSkKQEAgLTIxMCw2ICsyMTAsMTIgQEAKIC8qIE1pc3Np
bmcgc2hhcmVkIGNvZGUgcHJvdG90eXBlICovCiBleHRlcm4gdm9pZCBpeGdiZV9zdG9wX21hY19s
aW5rX29uX2QzXzgyNTk5KHN0cnVjdCBpeGdiZV9odyAqaHcpOwogCitzdGF0aWMgaW50CWl4Z2Jl
X2dldF9yeHF1ZXVlX2xlbihzdHJ1Y3QgaWZuZXQgKik7CitzdGF0aWMgaW50CWl4Z2JlX2dldF90
eHF1ZXVlX2xlbihzdHJ1Y3QgaWZuZXQgKik7CitzdGF0aWMgaW50CWl4Z2JlX2dldF9yeHF1ZXVl
X2FmZmluaXR5KHN0cnVjdCBpZm5ldCAqLCBpbnQpOworc3RhdGljIGludAlpeGdiZV9nZXRfdHhx
dWV1ZV9hZmZpbml0eShzdHJ1Y3QgaWZuZXQgKiwgaW50KTsKKworCiAvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg
KiAgRnJlZUJTRCBEZXZpY2UgSW50ZXJmYWNlIEVudHJ5IFBvaW50cwogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
QEAgLTc1Myw2ICs3NTksMTAgQEAKIAkJCQlJRlFfRFJWX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBt
X2hlYWQpOwogCQkJYnJlYWs7CiAJCX0KKworCQltX2hlYWQtPm1fcGt0aGRyLnJ4cXVldWUgPSAo
dWludDMyX3QpLTE7CisJCW1faGVhZC0+bV9wa3RoZHIudHhxdWV1ZSA9IHR4ci0+bWU7CisKIAkJ
LyogU2VuZCBhIGNvcHkgb2YgdGhlIGZyYW1lIHRvIHRoZSBCUEYgbGlzdGVuZXIgKi8KIAkJRVRI
RVJfQlBGX01UQVAoaWZwLCBtX2hlYWQpOwogCkBAIC04NTEsNiArODYxLDEwIEBACiAJCWRyYnJf
YWR2YW5jZShpZnAsIHR4ci0+YnIpOwogI2VuZGlmCiAJCWVucXVldWVkKys7CisgCisgCQluZXh0
LT5tX3BrdGhkci5yeHF1ZXVlID0gKHVpbnQzMl90KS0xOworIAkJbmV4dC0+bV9wa3RoZHIudHhx
dWV1ZSA9IHR4ci0+bWU7CisKIAkJLyogU2VuZCBhIGNvcHkgb2YgdGhlIGZyYW1lIHRvIHRoZSBC
UEYgbGlzdGVuZXIgKi8KIAkJRVRIRVJfQlBGX01UQVAoaWZwLCBuZXh0KTsKIAkJaWYgKChpZnAt
PmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVOTklORykgPT0gMCkKQEAgLTI2MTgsNiArMjYzMiwx
MCBAQAogCWlmcC0+aWZfc29mdGMgPSBhZGFwdGVyOwogCWlmcC0+aWZfZmxhZ3MgPSBJRkZfQlJP
QURDQVNUIHwgSUZGX1NJTVBMRVggfCBJRkZfTVVMVElDQVNUOwogCWlmcC0+aWZfaW9jdGwgPSBp
eGdiZV9pb2N0bDsKKyAJaWZwLT5pZl9nZXRfcnhxdWV1ZV9sZW4gPSBpeGdiZV9nZXRfcnhxdWV1
ZV9sZW47CisgCWlmcC0+aWZfZ2V0X3R4cXVldWVfbGVuID0gaXhnYmVfZ2V0X3R4cXVldWVfbGVu
OworIAlpZnAtPmlmX2dldF9yeHF1ZXVlX2FmZmluaXR5ID0gaXhnYmVfZ2V0X3J4cXVldWVfYWZm
aW5pdHk7CisgCWlmcC0+aWZfZ2V0X3R4cXVldWVfYWZmaW5pdHkgPSBpeGdiZV9nZXRfdHhxdWV1
ZV9hZmZpbml0eTsKICNpZm5kZWYgSVhHQkVfTEVHQUNZX1RYCiAJaWZwLT5pZl90cmFuc21pdCA9
IGl4Z2JlX21xX3N0YXJ0OwogCWlmcC0+aWZfcWZsdXNoID0gaXhnYmVfcWZsdXNoOwpAQCAtMjY0
NCw2ICsyNjYyLDcgQEAKIAlpZnAtPmlmX2NhcGFiaWxpdGllcyB8PSBJRkNBUF9WTEFOX0hXVEFH
R0lORwogCQkJICAgICB8ICBJRkNBUF9WTEFOX0hXVFNPCiAJCQkgICAgIHwgIElGQ0FQX1ZMQU5f
TVRVOworCWlmcC0+aWZfY2FwYWJpbGl0aWVzIHw9IElGQ0FQX01VTFRJUVVFVUU7CiAJaWZwLT5p
Zl9jYXBlbmFibGUgPSBpZnAtPmlmX2NhcGFiaWxpdGllczsKIAogCS8qCkBAIC00NTQ3LDYgKzQ1
NjYsOCBAQAogCQkJc2VuZG1wLT5tX3BrdGhkci5mbG93aWQgPSBxdWUtPm1zaXg7CiAJCQlzZW5k
bXAtPm1fZmxhZ3MgfD0gTV9GTE9XSUQ7CiAjZW5kaWYKKwkJCXNlbmRtcC0+bV9wa3RoZHIucnhx
dWV1ZSA9IHF1ZS0+bXNpeDsKKwkJCXNlbmRtcC0+bV9wa3RoZHIudHhxdWV1ZSA9ICh1aW50MzJf
dCktMTsKIAkJfQogbmV4dF9kZXNjOgogCQlidXNfZG1hbWFwX3N5bmMocnhyLT5yeGRtYS5kbWFf
dGFnLCByeHItPnJ4ZG1hLmRtYV9tYXAsCkBAIC01NzQzLDYgKzU3NjQsMzIgQEAKIAlyZXR1cm4g
KGVycm9yKTsKIH0KIAorc3RhdGljIGludAoraXhnYmVfZ2V0X3J4cXVldWVfbGVuKHN0cnVjdCBp
Zm5ldCAqaWZwKQoreworCXN0cnVjdCBhZGFwdGVyCSphZGFwdGVyID0gaWZwLT5pZl9zb2Z0YzsK
KwlyZXR1cm4gKGFkYXB0ZXItPm51bV9xdWV1ZXMpOworfQorCitzdGF0aWMgaW50CitpeGdiZV9n
ZXRfdHhxdWV1ZV9sZW4oc3RydWN0IGlmbmV0ICppZnApCit7CisJc3RydWN0IGFkYXB0ZXIJKmFk
YXB0ZXIgPSBpZnAtPmlmX3NvZnRjOworCXJldHVybiAoYWRhcHRlci0+bnVtX3F1ZXVlcyk7Cit9
CisKK3N0YXRpYyBpbnQKK2l4Z2JlX2dldF9yeHF1ZXVlX2FmZmluaXR5KHN0cnVjdCBpZm5ldCAq
aWZwLCBpbnQgcXVlaWQpCit7CisJcmV0dXJuIChxdWVpZCk7Cit9CisKK3N0YXRpYyBpbnQKK2l4
Z2JlX2dldF90eHF1ZXVlX2FmZmluaXR5KHN0cnVjdCBpZm5ldCAqaWZwLCBpbnQgcXVlaWQpCit7
CisJcmV0dXJuIChxdWVpZCk7Cit9CisKIC8qCiAqKiBUaGVybWFsIFNodXRkb3duIFRyaWdnZXIK
ICoqICAgLSBjYXVzZSBhIFRoZXJtYWwgT3ZlcnRlbXAgSVJRCkluZGV4OiBpZl9pZ2IuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBpZl9pZ2IuYwkoLi4uL2hlYWQvc3lzL2Rldi9lMTAwMC9pZl9pZ2IuYykJKHJl
dmlzaW9uIDI1MjUwOSkKKysrIGlmX2lnYi5jCSguLi4vdXNlci9zeXV1L21xX2JwZi9zeXMvZGV2
L2UxMDAwL2lmX2lnYi5jKQkocmV2aXNpb24gMjUyNTA5KQpAQCAtMjc4LDYgKzI3OCwxMSBAQAog
c3RhdGljIGludAlpZ2Jfc3lzY3RsX2RtYWMoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMg
aW50CWlnYl9zeXNjdGxfZWVlKFNZU0NUTF9IQU5ETEVSX0FSR1MpOwogCitzdGF0aWMgaW50CWln
Yl9nZXRfcnhxdWV1ZV9sZW4oc3RydWN0IGlmbmV0ICopOworc3RhdGljIGludAlpZ2JfZ2V0X3R4
cXVldWVfbGVuKHN0cnVjdCBpZm5ldCAqKTsKK3N0YXRpYyBpbnQJaWdiX2dldF9yeHF1ZXVlX2Fm
ZmluaXR5KHN0cnVjdCBpZm5ldCAqLCBpbnQpOworc3RhdGljIGludAlpZ2JfZ2V0X3R4cXVldWVf
YWZmaW5pdHkoc3RydWN0IGlmbmV0ICosIGludCk7CisKICNpZmRlZiBERVZJQ0VfUE9MTElORwog
c3RhdGljIHBvbGxfaGFuZGxlcl90IGlnYl9wb2xsOwogI2VuZGlmIC8qIFBPTExJTkcgKi8KQEAg
LTkxOSw2ICs5MjQsOSBAQAogCQkJYnJlYWs7CiAJCX0KIAorCQltX2hlYWQtPm1fcGt0aGRyLnJ4
cXVldWUgPSAodWludDMyX3QpLTE7CisJCW1faGVhZC0+bV9wa3RoZHIudHhxdWV1ZSA9IHR4ci0+
bWU7CisKIAkJLyogU2VuZCBhIGNvcHkgb2YgdGhlIGZyYW1lIHRvIHRoZSBCUEYgbGlzdGVuZXIg
Ki8KIAkJRVRIRVJfQlBGX01UQVAoaWZwLCBtX2hlYWQpOwogCkBAIC0xMDEyLDYgKzEwMjAsOCBA
QAogCQlpZnAtPmlmX29ieXRlcyArPSBuZXh0LT5tX3BrdGhkci5sZW47CiAJCWlmIChuZXh0LT5t
X2ZsYWdzICYgTV9NQ0FTVCkKIAkJCWlmcC0+aWZfb21jYXN0cysrOworCQluZXh0LT5tX3BrdGhk
ci5yeHF1ZXVlID0gKHVpbnQzMl90KS0xOworCQluZXh0LT5tX3BrdGhkci50eHF1ZXVlID0gdHhy
LT5tZTsKIAkJRVRIRVJfQlBGX01UQVAoaWZwLCBuZXh0KTsKIAkJaWYgKChpZnAtPmlmX2Rydl9m
bGFncyAmIElGRl9EUlZfUlVOTklORykgPT0gMCkKIAkJCWJyZWFrOwpAQCAtMzExMiw2ICszMTIy
LDEwIEBACiAJaWZwLT5pZl9zb2Z0YyA9IGFkYXB0ZXI7CiAJaWZwLT5pZl9mbGFncyA9IElGRl9C
Uk9BRENBU1QgfCBJRkZfU0lNUExFWCB8IElGRl9NVUxUSUNBU1Q7CiAJaWZwLT5pZl9pb2N0bCA9
IGlnYl9pb2N0bDsKKyAJaWZwLT5pZl9nZXRfcnhxdWV1ZV9sZW4gPSBpZ2JfZ2V0X3J4cXVldWVf
bGVuOworIAlpZnAtPmlmX2dldF90eHF1ZXVlX2xlbiA9IGlnYl9nZXRfdHhxdWV1ZV9sZW47Cisg
CWlmcC0+aWZfZ2V0X3J4cXVldWVfYWZmaW5pdHkgPSBpZ2JfZ2V0X3J4cXVldWVfYWZmaW5pdHk7
CisgCWlmcC0+aWZfZ2V0X3R4cXVldWVfYWZmaW5pdHkgPSBpZ2JfZ2V0X3R4cXVldWVfYWZmaW5p
dHk7CiAjaWZuZGVmIElHQl9MRUdBQ1lfVFgKIAlpZnAtPmlmX3RyYW5zbWl0ID0gaWdiX21xX3N0
YXJ0OwogCWlmcC0+aWZfcWZsdXNoID0gaWdiX3FmbHVzaDsKQEAgLTMxNTksNiArMzE3Myw3IEBA
CiAJKiogZW5hYmxlIHRoaXMgYW5kIGdldCBmdWxsIGhhcmR3YXJlIHRhZyBmaWx0ZXJpbmcuCiAJ
Ki8KIAlpZnAtPmlmX2NhcGFiaWxpdGllcyB8PSBJRkNBUF9WTEFOX0hXRklMVEVSOworCWlmcC0+
aWZfY2FwYWJpbGl0aWVzIHw9IElGQ0FQX01VTFRJUVVFVUU7CiAKIAkvKgogCSAqIFNwZWNpZnkg
dGhlIG1lZGlhIHR5cGVzIHN1cHBvcnRlZCBieSB0aGlzIGFkYXB0ZXIgYW5kIHJlZ2lzdGVyCkBA
IC00ODgzLDYgKzQ4OTgsOSBAQAogCQkJcnhyLT5mbXAtPm1fcGt0aGRyLmZsb3dpZCA9IHF1ZS0+
bXNpeDsKIAkJCXJ4ci0+Zm1wLT5tX2ZsYWdzIHw9IE1fRkxPV0lEOwogI2VuZGlmCisJCQlyeHIt
PmZtcC0+bV9wa3RoZHIucnhxdWV1ZSA9IHF1ZS0+bXNpeDsKKwkJCXJ4ci0+Zm1wLT5tX3BrdGhk
ci50eHF1ZXVlID0gKHVpbnQzMl90KS0xOworCiAJCQlzZW5kbXAgPSByeHItPmZtcDsKIAkJCS8q
IE1ha2Ugc3VyZSB0byBzZXQgTV9QS1RIRFIuICovCiAJCQlzZW5kbXAtPm1fZmxhZ3MgfD0gTV9Q
S1RIRFI7CkBAIC02MDQ3LDMgKzYwNjUsMjkgQEAKIAlJR0JfQ09SRV9VTkxPQ0soYWRhcHRlcik7
CiAJcmV0dXJuICgwKTsKIH0KKworc3RhdGljIGludAoraWdiX2dldF9yeHF1ZXVlX2xlbihzdHJ1
Y3QgaWZuZXQgKmlmcCkKK3sKKwlzdHJ1Y3QgYWRhcHRlcgkqYWRhcHRlciA9IGlmcC0+aWZfc29m
dGM7CisJcmV0dXJuIChhZGFwdGVyLT5udW1fcXVldWVzKTsKK30KKworc3RhdGljIGludAoraWdi
X2dldF90eHF1ZXVlX2xlbihzdHJ1Y3QgaWZuZXQgKmlmcCkKK3sKKwlzdHJ1Y3QgYWRhcHRlcgkq
YWRhcHRlciA9IGlmcC0+aWZfc29mdGM7CisJcmV0dXJuIChhZGFwdGVyLT5udW1fcXVldWVzKTsK
K30KKworc3RhdGljIGludAoraWdiX2dldF9yeHF1ZXVlX2FmZmluaXR5KHN0cnVjdCBpZm5ldCAq
aWZwLCBpbnQgcXVlaWQpCit7CisJcmV0dXJuIChxdWVpZCk7Cit9CisKK3N0YXRpYyBpbnQKK2ln
Yl9nZXRfdHhxdWV1ZV9hZmZpbml0eShzdHJ1Y3QgaWZuZXQgKmlmcCwgaW50IHF1ZWlkKQorewor
CXJldHVybiAocXVlaWQpOworfQpJbmRleDogYnBmZGVzYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJwZmRl
c2MuaAkoLi4uL2hlYWQvc3lzL25ldC9icGZkZXNjLmgpCShyZXZpc2lvbiAyNTI1MDkpCisrKyBi
cGZkZXNjLmgJKC4uLi91c2VyL3N5dXUvbXFfYnBmL3N5cy9uZXQvYnBmZGVzYy5oKQkocmV2aXNp
b24gMjUyNTA5KQpAQCAtNDUsNiArNDUsMjAgQEAKICNpbmNsdWRlIDxzeXMvY29uZi5oPgogI2lu
Y2x1ZGUgPG5ldC9pZi5oPgogCitzdHJ1Y3QgYnBmX3FtYXNrIHsKKwlib29sZWFuX3QJcW1fZW5h
YmxlZDsKKwlib29sZWFuX3QgKglxbV9yeHFfbWFzazsKKwlib29sZWFuX3QgKglxbV90eHFfbWFz
azsKKwlib29sZWFuX3QJcW1fb3RoZXJfbWFzazsKKwlzdHJ1Y3Qgcndsb2NrCXFtX2xvY2s7Cit9
OworCisjZGVmaW5lIEJQRlFfTE9DS19ERVNUUk9ZKHFtKQkJcndfZGVzdHJveSgmKHFtKS0+cW1f
bG9jaykKKyNkZWZpbmUgQlBGUV9STE9DSyhxbSkJCQlyd19ybG9jaygmKHFtKS0+cW1fbG9jaykK
KyNkZWZpbmUgQlBGUV9SVU5MT0NLKHFtKQkJcndfcnVubG9jaygmKHFtKS0+cW1fbG9jaykKKyNk
ZWZpbmUgQlBGUV9XTE9DSyhxbSkJCQlyd193bG9jaygmKHFtKS0+cW1fbG9jaykKKyNkZWZpbmUg
QlBGUV9XVU5MT0NLKHFtKQkJcndfd3VubG9jaygmKHFtKS0+cW1fbG9jaykKKwogLyoKICAqIERl
c2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3BlbiBicGYgZmlsZS4KICAqLwpAQCAtMTAx
LDYgKzExNSw3IEBACiAJdV9pbnQ2NF90CWJkX3dkY291bnQ7CS8qIG51bWJlciBvZiBwYWNrZXRz
IGRyb3BwZWQgZHVyaW5nIGEgd3JpdGUgKi8KIAl1X2ludDY0X3QJYmRfemNvcHk7CS8qIG51bWJl
ciBvZiB6ZXJvIGNvcHkgb3BlcmF0aW9ucyAqLwogCXVfY2hhcgkJYmRfY29tcGF0MzI7CS8qIDMy
LWJpdCBzdHJlYW0gb24gTFA2NCBzeXN0ZW0gKi8KKwlzdHJ1Y3QgYnBmX3FtYXNrIGJkX3FtYXNr
OwogfTsKIAogLyogVmFsdWVzIGZvciBiZF9zdGF0ZSAqLwpJbmRleDogaWZfdmFyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gaWZfdmFyLmgJKC4uLi9oZWFkL3N5cy9uZXQvaWZfdmFyLmgpCShyZXZpc2lvbiAy
NTI1MDkpCisrKyBpZl92YXIuaAkoLi4uL3VzZXIvc3l1dS9tcV9icGYvc3lzL25ldC9pZl92YXIu
aCkJKHJldmlzaW9uIDI1MjUwOSkKQEAgLTE3Niw2ICsxNzYsMTUgQEAKIAkJKHN0cnVjdCBpZm5l
dCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKIAl2b2lkCSgqaWZfcmVhc3NpZ24pCQkvKiByZWFzc2lnbiB0
byB2bmV0IHJvdXRpbmUgKi8KIAkJKHN0cnVjdCBpZm5ldCAqLCBzdHJ1Y3Qgdm5ldCAqLCBjaGFy
ICopOworCWludAkoKmlmX2dldF9yeHF1ZXVlX2xlbikKKwkJKHN0cnVjdCBpZm5ldCAqKTsKKwlp
bnQJKCppZl9nZXRfdHhxdWV1ZV9sZW4pCisJCShzdHJ1Y3QgaWZuZXQgKik7CisJaW50CSgqaWZf
Z2V0X3J4cXVldWVfYWZmaW5pdHkpCisJCShzdHJ1Y3QgaWZuZXQgKiwgaW50KTsKKwlpbnQJKCpp
Zl9nZXRfdHhxdWV1ZV9hZmZpbml0eSkKKwkJKHN0cnVjdCBpZm5ldCAqLCBpbnQpOworCiAJc3Ry
dWN0CXZuZXQgKmlmX2hvbWVfdm5ldDsJLyogd2hlcmUgdGhpcyBpZm5ldCBvcmlnaW5hdGVzIGZy
b20gKi8KIAlzdHJ1Y3QJaWZhZGRyCSppZl9hZGRyOwkvKiBwb2ludGVyIHRvIGxpbmstbGV2ZWwg
YWRkcmVzcyAqLwogCXZvaWQJKmlmX2xsc29mdGM7CQkvKiBsaW5rIGxheWVyIHNvZnRjICovCklu
ZGV4OiBicGYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicGYuaAkoLi4uL2hlYWQvc3lzL25ldC9icGYuaCkJ
KHJldmlzaW9uIDI1MjUwOSkKKysrIGJwZi5oCSguLi4vdXNlci9zeXV1L21xX2JwZi9zeXMvbmV0
L2JwZi5oKQkocmV2aXNpb24gMjUyNTA5KQpAQCAtMTQ3LDYgKzE0NywxNyBAQAogI2RlZmluZQlC
SU9DU0VURk5SCV9JT1coJ0InLCAxMzAsIHN0cnVjdCBicGZfcHJvZ3JhbSkKICNkZWZpbmUJQklP
Q0dUU1RBTVAJX0lPUignQicsIDEzMSwgdV9pbnQpCiAjZGVmaW5lCUJJT0NTVFNUQU1QCV9JT1co
J0InLCAxMzIsIHVfaW50KQorI2RlZmluZQlCSU9DRU5BUU1BU0sJX0lPKCdCJywgMTMzKQorI2Rl
ZmluZQlCSU9DRElTUU1BU0sJX0lPKCdCJywgMTM0KQorI2RlZmluZQlCSU9DU1RSWFFNQVNLCV9J
T1dSKCdCJywgMTM1LCB1aW50MzJfdCkKKyNkZWZpbmUJQklPQ0NSUlhRTUFTSwlfSU9XUignQics
IDEzNiwgdWludDMyX3QpCisjZGVmaW5lCUJJT0NHVFJYUU1BU0sJX0lPUignQicsIDEzNywgdWlu
dDMyX3QpCisjZGVmaW5lCUJJT0NTVFRYUU1BU0sJX0lPV1IoJ0InLCAxMzgsIHVpbnQzMl90KQor
I2RlZmluZQlCSU9DQ1JUWFFNQVNLCV9JT1dSKCdCJywgMTM5LCB1aW50MzJfdCkKKyNkZWZpbmUJ
QklPQ0dUVFhRTUFTSwlfSU9SKCdCJywgMTQwLCB1aW50MzJfdCkKKyNkZWZpbmUJQklPQ1NUT1RI
RVJNQVNLCV9JTygnQicsIDE0MSkKKyNkZWZpbmUJQklPQ0NST1RIRVJNQVNLCV9JTygnQicsIDE0
MikKKyNkZWZpbmUJQklPQ0dUT1RIRVJNQVNLCV9JT1IoJ0InLCAxNDMsIHVpbnQzMl90KQogCiAv
KiBPYnNvbGV0ZSAqLwogI2RlZmluZQlCSU9DR1NFRVNFTlQJQklPQ0dESVJFQ1RJT04KSW5kZXg6
IGlmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaWYuYwkoLi4uL2hlYWQvc3lzL25ldC9pZi5jKQkocmV2aXNp
b24gMjUyNTA5KQorKysgaWYuYwkoLi4uL3VzZXIvc3l1dS9tcV9icGYvc3lzL25ldC9pZi5jKQko
cmV2aXNpb24gMjUyNTA5KQpAQCAtMjQyOCw2ICsyNDI4LDMxIEBACiAJCWJyZWFrOwogCX0KIAor
CWNhc2UgU0lPQ0dJRlFMRU46CisJCWlmICghKGlmcC0+aWZfY2FwYWJpbGl0aWVzICYgSUZDQVBf
TVVMVElRVUVVRSkpCisJCQlyZXR1cm4gKEVPUE5PVFNVUFApOworCQlLQVNTRVJUKGlmcC0+aWZf
Z2V0X3J4cXVldWVfbGVuLCAoImlmX2dldF9yeHF1ZXVlX2xlbiBub3Qgc2V0IikpOworCQlLQVNT
RVJUKGlmcC0+aWZfZ2V0X3R4cXVldWVfbGVuLCAoImlmX2dldF90eHF1ZXVlX2xlbiBub3Qgc2V0
IikpOworCQlpZnItPmlmcl9yeHF1ZXVlX2xlbiA9IGlmcC0+aWZfZ2V0X3J4cXVldWVfbGVuKGlm
cCk7CisJCWlmci0+aWZyX3R4cXVldWVfbGVuID0gaWZwLT5pZl9nZXRfdHhxdWV1ZV9sZW4oaWZw
KTsKKwkJYnJlYWs7CisKKwljYXNlIFNJT0NHSUZSWFFBRkZJTklUWToKKwkJaWYgKCEoaWZwLT5p
Zl9jYXBhYmlsaXRpZXMgJiBJRkNBUF9NVUxUSVFVRVVFKSkKKwkJCXJldHVybiAoRU9QTk9UU1VQ
UCk7CisJCUtBU1NFUlQoaWZwLT5pZl9nZXRfcnhxdWV1ZV9hZmZpbml0eSwgKCJpZl9nZXRfcnhx
dWV1ZV9hZmZpbml0eSBub3Qgc2V0IikpOworCQlpZnItPmlmcl9xdWV1ZV9hZmZpbml0eV9jcHUg
PQorCQkJaWZwLT5pZl9nZXRfcnhxdWV1ZV9hZmZpbml0eShpZnAsIGlmci0+aWZyX3F1ZXVlX2Fm
ZmluaXR5X2luZGV4KTsKKwkJYnJlYWs7CisKKwljYXNlIFNJT0NHSUZUWFFBRkZJTklUWToKKwkJ
aWYgKCEoaWZwLT5pZl9jYXBhYmlsaXRpZXMgJiBJRkNBUF9NVUxUSVFVRVVFKSkKKwkJCXJldHVy
biAoRU9QTk9UU1VQUCk7CisJCUtBU1NFUlQoaWZwLT5pZl9nZXRfcnhxdWV1ZV9hZmZpbml0eSwg
KCJpZl9nZXRfcnhxdWV1ZV9hZmZpbml0eSBub3Qgc2V0IikpOworCQlpZnItPmlmcl9xdWV1ZV9h
ZmZpbml0eV9jcHUgPSAKKwkJCWlmcC0+aWZfZ2V0X3J4cXVldWVfYWZmaW5pdHkoaWZwLCBpZnIt
Pmlmcl9xdWV1ZV9hZmZpbml0eV9pbmRleCk7CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJZXJy
b3IgPSBFTk9JT0NUTDsKIAkJYnJlYWs7CkluZGV4OiBpZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlmLmgJ
KC4uLi9oZWFkL3N5cy9uZXQvaWYuaCkJKHJldmlzaW9uIDI1MjUwOSkKKysrIGlmLmgJKC4uLi91
c2VyL3N5dXUvbXFfYnBmL3N5cy9uZXQvaWYuaCkJKHJldmlzaW9uIDI1MjUwOSkKQEAgLTIzMSw2
ICsyMzEsNyBAQAogI2RlZmluZQlJRkNBUF9ORVRNQVAJCTB4MTAwMDAwIC8qIG5ldG1hcCBtb2Rl
IHN1cHBvcnRlZC9lbmFibGVkICovCiAjZGVmaW5lCUlGQ0FQX1JYQ1NVTV9JUFY2CTB4MjAwMDAw
ICAvKiBjYW4gb2ZmbG9hZCBjaGVja3N1bSBvbiBJUHY2IFJYICovCiAjZGVmaW5lCUlGQ0FQX1RY
Q1NVTV9JUFY2CTB4NDAwMDAwICAvKiBjYW4gb2ZmbG9hZCBjaGVja3N1bSBvbiBJUHY2IFRYICov
CisjZGVmaW5lCUlGQ0FQX01VTFRJUVVFVUUJMHg4MDAwMDAKIAogI2RlZmluZSBJRkNBUF9IV0NT
VU1fSVBWNgkoSUZDQVBfUlhDU1VNX0lQVjYgfCBJRkNBUF9UWENTVU1fSVBWNikKIApAQCAtMzg1
LDYgKzM4Niw4IEBACiAJCWNhZGRyX3QJaWZydV9kYXRhOwogCQlpbnQJaWZydV9jYXBbMl07CiAJ
CXVfaW50CWlmcnVfZmliOworCQlpbnQJaWZydV9xdWV1ZV9sZW5bMl07CisJCWludAlpZnJ1X3F1
ZXVlX2FmZmluaXR5WzJdOwogCX0gaWZyX2lmcnU7CiAjZGVmaW5lCWlmcl9hZGRyCWlmcl9pZnJ1
LmlmcnVfYWRkcgkvKiBhZGRyZXNzICovCiAjZGVmaW5lCWlmcl9kc3RhZGRyCWlmcl9pZnJ1Lmlm
cnVfZHN0YWRkcgkvKiBvdGhlciBlbmQgb2YgcC10by1wIGxpbmsgKi8KQEAgLTQwMiw2ICs0MDUs
MTEgQEAKICNkZWZpbmUJaWZyX2N1cmNhcAlpZnJfaWZydS5pZnJ1X2NhcFsxXQkvKiBjdXJyZW50
IGNhcGFiaWxpdGllcyAqLwogI2RlZmluZQlpZnJfaW5kZXgJaWZyX2lmcnUuaWZydV9pbmRleAkv
KiBpbnRlcmZhY2UgaW5kZXggKi8KICNkZWZpbmUJaWZyX2ZpYgkJaWZyX2lmcnUuaWZydV9maWIJ
LyogaW50ZXJmYWNlIGZpYiAqLworI2RlZmluZSBpZnJfcnhxdWV1ZV9sZW4JaWZyX2lmcnUuaWZy
dV9xdWV1ZV9sZW5bMF0gLyogcnhxdWV1ZSBsZW4gKi8KKyNkZWZpbmUgaWZyX3R4cXVldWVfbGVu
CWlmcl9pZnJ1LmlmcnVfcXVldWVfbGVuWzFdIC8qIHR4cXVldWUgbGVuICovCisjZGVmaW5lIGlm
cl9xdWV1ZV9hZmZpbml0eV9pbmRleCBpZnJfaWZydS5pZnJ1X3F1ZXVlX2FmZmluaXR5WzBdIC8q
IHF1ZXVlIGlkICovCisjZGVmaW5lIGlmcl9xdWV1ZV9hZmZpbml0eV9jcHUgaWZyX2lmcnUuaWZy
dV9xdWV1ZV9hZmZpbml0eVsxXSAvKiBjcHUgaWQgKi8KKwogfTsKIAogI2RlZmluZQlfU0laRU9G
X0FERFJfSUZSRVEoaWZyKSBcCkluZGV4OiBicGYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicGYuYwkoLi4u
L2hlYWQvc3lzL25ldC9icGYuYykJKHJldmlzaW9uIDI1MjUwOSkKKysrIGJwZi5jCSguLi4vdXNl
ci9zeXV1L21xX2JwZi9zeXMvbmV0L2JwZi5jKQkocmV2aXNpb24gMjUyNTA5KQpAQCAtODE5LDYg
KzgxOSwxMiBAQAogCXNpemUgPSBkLT5iZF9idWZzaXplOwogCWJwZl9idWZmZXJfaW9jdGxfc2Js
ZW4oZCwgJnNpemUpOwogCisgCWQtPmJkX3FtYXNrLnFtX2VuYWJsZWQgPSBGQUxTRTsKKyAJZC0+
YmRfcW1hc2sucW1fcnhxX21hc2sgPSBOVUxMOworIAlkLT5iZF9xbWFzay5xbV90eHFfbWFzayA9
IE5VTEw7CisgCWQtPmJkX3FtYXNrLnFtX290aGVyX21hc2sgPSBGQUxTRTsKKyAJcndfaW5pdCgm
ZC0+YmRfcW1hc2sucW1fbG9jaywgInFtYXNrIGxvY2siKTsKKwogCXJldHVybiAoMCk7CiB9CiAK
QEAgLTE2OTcsNiArMTcwMywyNjYgQEAKIAljYXNlIEJJT0NST1RaQlVGOgogCQllcnJvciA9IGJw
Zl9pb2N0bF9yb3R6YnVmKHRkLCBkLCAoc3RydWN0IGJwZl96YnVmICopYWRkcik7CiAJCWJyZWFr
OworCisJY2FzZSBCSU9DRU5BUU1BU0s6CisJCXsKKwkJCXN0cnVjdCBpZm5ldCAqaWZwOworCisJ
CQlpZiAoZC0+YmRfYmlmID09IE5VTEwpIHsKKwkJCQkvKgorCQkJCSAqIE5vIGludGVyZmFjZSBh
dHRhY2hlZCB5ZXQuCisJCQkJICovCisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJYnJlYWs7CisJ
CQl9CisJCQlCUEZRX1dMT0NLKCZkLT5iZF9xbWFzayk7CisJCQlpZiAoZC0+YmRfcW1hc2sucW1f
ZW5hYmxlZCkgeworCQkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0g
RUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJaWZwID0gZC0+YmRfYmlmLT5iaWZfaWZwOwor
CQkJaWYgKCEoaWZwLT5pZl9jYXBhYmlsaXRpZXMgJiBJRkNBUF9NVUxUSVFVRVVFKSkgeworCQkJ
CUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCWJy
ZWFrOworCQkJfQorCQkJS0FTU0VSVChpZnAtPmlmX2dldF9yeHF1ZXVlX2xlbiwgKCJpZnAtPmlm
X2dldF9yeHF1ZXVlX2xlbiBub3Qgc2V0XG4iKSk7CisJCQlLQVNTRVJUKGlmcC0+aWZfZ2V0X3R4
cXVldWVfbGVuLCAoImlmcC0+aWZfZ2V0X3J4cXVldWVfbGVuIG5vdCBzZXRcbiIpKTsKKwkJCWQt
PmJkX3FtYXNrLnFtX2VuYWJsZWQgPSBUUlVFOworCQkJZC0+YmRfcW1hc2sucW1fcnhxX21hc2sg
PQorCQkJCW1hbGxvYyhpZnAtPmlmX2dldF9yeHF1ZXVlX2xlbihpZnApICogc2l6ZW9mKGJvb2xl
YW5fdCksIE1fQlBGLCAKKwkJCQkJTV9XQUlUT0sgfCBNX1pFUk8pOworCQkJZC0+YmRfcW1hc2su
cW1fdHhxX21hc2sgPQorCQkJCW1hbGxvYyhpZnAtPmlmX2dldF90eHF1ZXVlX2xlbihpZnApICog
c2l6ZW9mKGJvb2xlYW5fdCksIE1fQlBGLCAKKwkJCQkJTV9XQUlUT0sgfCBNX1pFUk8pOworCQkJ
ZC0+YmRfcW1hc2sucW1fb3RoZXJfbWFzayA9IEZBTFNFOworCQkJQlBGUV9XVU5MT0NLKCZkLT5i
ZF9xbWFzayk7CisJCQlicmVhazsKKwkJfQorCisJY2FzZSBCSU9DRElTUU1BU0s6CisJCXsKKwkJ
CWlmIChkLT5iZF9iaWYgPT0gTlVMTCkgeworCQkJCS8qCisJCQkJICogTm8gaW50ZXJmYWNlIGF0
dGFjaGVkIHlldC4KKwkJCQkgKi8KKwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlicmVhazsKKwkJ
CX0KKwkJCUJQRlFfV0xPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCWlmICghZC0+YmRfcW1hc2sucW1f
ZW5hYmxlZCkgeworCQkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0g
RUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJZC0+YmRfcW1hc2sucW1fZW5hYmxlZCA9IEZB
TFNFOworCQkJCisJCQlmcmVlKGQtPmJkX3FtYXNrLnFtX3J4cV9tYXNrLCBNX0JQRik7CisJCQlm
cmVlKGQtPmJkX3FtYXNrLnFtX3R4cV9tYXNrLCBNX0JQRik7CisJCQlCUEZRX1dVTkxPQ0soJmQt
PmJkX3FtYXNrKTsKKwkJCWJyZWFrOworCQl9CisKKwljYXNlIEJJT0NTVFJYUU1BU0s6CisJCXsK
KwkJCXN0cnVjdCBpZm5ldCAqaWZwOworCQkJaW50IGluZGV4OworCisJCQlpZiAoZC0+YmRfYmlm
ID09IE5VTEwpIHsKKwkJCQkvKgorCQkJCSAqIE5vIGludGVyZmFjZSBhdHRhY2hlZCB5ZXQuCisJ
CQkJICovCisJCQkJZXJyb3IgPSBFSU5WQUw7CQorCQkJCWJyZWFrOworCQkJfQorCQkJQlBGUV9X
TE9DSygmZC0+YmRfcW1hc2spOworCQkJaWYgKCFkLT5iZF9xbWFzay5xbV9lbmFibGVkKSB7CisJ
CQkJQlBGUV9XVU5MT0NLKCZkLT5iZF9xbWFzayk7CisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJ
YnJlYWs7CisJCQl9CisJCQlpZnAgPSBkLT5iZF9iaWYtPmJpZl9pZnA7CisJCQlpbmRleCA9ICoo
dWludDMyX3QgKilhZGRyOworCQkJaWYgKGluZGV4ID4gaWZwLT5pZl9nZXRfcnhxdWV1ZV9sZW4o
aWZwKSkgeworCQkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0gRUlO
VkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJZC0+YmRfcW1hc2sucW1fcnhxX21hc2tbaW5kZXhd
ID0gVFJVRTsKKwkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJYnJlYWs7CisJCX0K
KworCWNhc2UgQklPQ0NSUlhRTUFTSzoKKwkJeworCQkJaW50IGluZGV4OworCQkJc3RydWN0IGlm
bmV0ICppZnA7CisKKwkJCWlmIChkLT5iZF9iaWYgPT0gTlVMTCkgeworCQkJCS8qCisJCQkJICog
Tm8gaW50ZXJmYWNlIGF0dGFjaGVkIHlldC4KKwkJCQkgKi8KKwkJCQllcnJvciA9IEVJTlZBTDsK
KwkJCQlicmVhazsKKwkJCX0KKwkJCUJQRlFfV0xPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCWlmICgh
ZC0+YmRfcW1hc2sucW1fZW5hYmxlZCkgeworCQkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2sp
OworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJaWZwID0gZC0+YmRf
YmlmLT5iaWZfaWZwOworCQkJaW5kZXggPSAqKHVpbnQzMl90ICopYWRkcjsKKwkJCWlmIChpbmRl
eCA+IGlmcC0+aWZfZ2V0X3J4cXVldWVfbGVuKGlmcCkpIHsKKwkJCQlCUEZRX1dVTkxPQ0soJmQt
PmJkX3FtYXNrKTsKKwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWQt
PmJkX3FtYXNrLnFtX3J4cV9tYXNrW2luZGV4XSA9IEZBTFNFOworCQkJQlBGUV9XVU5MT0NLKCZk
LT5iZF9xbWFzayk7CisJCQlicmVhazsKKwkJfQorCisJY2FzZSBCSU9DR1RSWFFNQVNLOgorCQl7
CisJCQlpbnQgaW5kZXg7CisJCQlzdHJ1Y3QgaWZuZXQgKmlmcDsKKworCQkJaWYgKGQtPmJkX2Jp
ZiA9PSBOVUxMKSB7CisJCQkJLyoKKwkJCQkgKiBObyBpbnRlcmZhY2UgYXR0YWNoZWQgeWV0Lgor
CQkJCSAqLworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJQlBGUV9X
TE9DSygmZC0+YmRfcW1hc2spOworCQkJaWYgKCFkLT5iZF9xbWFzay5xbV9lbmFibGVkKSB7CisJ
CQkJQlBGUV9XVU5MT0NLKCZkLT5iZF9xbWFzayk7CisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJ
YnJlYWs7CisJCQl9CisJCQlpZnAgPSBkLT5iZF9iaWYtPmJpZl9pZnA7CisJCQlpbmRleCA9ICoo
dWludDMyX3QgKilhZGRyOworCQkJaWYgKGluZGV4ID4gaWZwLT5pZl9nZXRfcnhxdWV1ZV9sZW4o
aWZwKSkgeworCQkJCUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0gRUlO
VkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJKih1aW50MzJfdCAqKWFkZHIgPSBkLT5iZF9xbWFz
ay5xbV9yeHFfbWFza1tpbmRleF07CisJCQlCUEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJ
CWJyZWFrOworCQl9CisKKwljYXNlIEJJT0NTVFRYUU1BU0s6CisJCXsKKwkJCXN0cnVjdCBpZm5l
dCAqaWZwOworCQkJaW50IGluZGV4OworCisJCQlpZiAoZC0+YmRfYmlmID09IE5VTEwpIHsKKwkJ
CQkvKgorCQkJCSAqIE5vIGludGVyZmFjZSBhdHRhY2hlZCB5ZXQuCisJCQkJICovCisJCQkJZXJy
b3IgPSBFSU5WQUw7CisJCQkJYnJlYWs7CisJCQl9CisJCQlCUEZRX1dMT0NLKCZkLT5iZF9xbWFz
ayk7CisJCQlpZiAoIWQtPmJkX3FtYXNrLnFtX2VuYWJsZWQpIHsKKwkJCQlCUEZRX1dVTkxPQ0so
JmQtPmJkX3FtYXNrKTsKKwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlicmVhazsKKwkJCX0KKwor
CQkJaWZwID0gZC0+YmRfYmlmLT5iaWZfaWZwOworCQkJaW5kZXggPSAqKHVpbnQzMl90ICopYWRk
cjsKKwkJCWlmIChpbmRleCA+IGlmcC0+aWZfZ2V0X3R4cXVldWVfbGVuKGlmcCkpIHsKKwkJCQlC
UEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlicmVh
azsKKwkJCX0KKwkJCWQtPmJkX3FtYXNrLnFtX3R4cV9tYXNrW2luZGV4XSA9IFRSVUU7CisJCQlC
UEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCWJyZWFrOworCQl9CisKKwljYXNlIEJJT0ND
UlRYUU1BU0s6CisJCXsKKwkJCXN0cnVjdCBpZm5ldCAqaWZwOworCQkJaW50IGluZGV4OworCisJ
CQlpZiAoZC0+YmRfYmlmID09IE5VTEwpIHsKKwkJCQkvKgorCQkJCSAqIE5vIGludGVyZmFjZSBh
dHRhY2hlZCB5ZXQuCisJCQkJICovCisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJYnJlYWs7CisJ
CQl9CisJCQlCUEZRX1dMT0NLKCZkLT5iZF9xbWFzayk7CisJCQlpZiAoIWQtPmJkX3FtYXNrLnFt
X2VuYWJsZWQpIHsKKwkJCQlCUEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCQllcnJvciA9
IEVJTlZBTDsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJaWZwID0gZC0+YmRfYmlmLT5iaWZfaWZw
OworCQkJaW5kZXggPSAqKHVpbnQzMl90ICopYWRkcjsKKwkJCWlmIChpbmRleCA+IGlmcC0+aWZf
Z2V0X3R4cXVldWVfbGVuKGlmcCkpIHsKKwkJCQlCUEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsK
KwkJCQllcnJvciA9IEVJTlZBTDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWQtPmJkX3FtYXNrLnFt
X3R4cV9tYXNrW2luZGV4XSA9IEZBTFNFOworCQkJQlBGUV9XVU5MT0NLKCZkLT5iZF9xbWFzayk7
CisJCQlicmVhazsKKwkJfQorCisJY2FzZSBCSU9DR1RUWFFNQVNLOgorCQl7CisJCQlpbnQgaW5k
ZXg7CisJCQlzdHJ1Y3QgaWZuZXQgKmlmcDsKKworCQkJaWYgKGQtPmJkX2JpZiA9PSBOVUxMKSB7
CisJCQkJLyoKKwkJCQkgKiBObyBpbnRlcmZhY2UgYXR0YWNoZWQgeWV0LgorCQkJCSAqLworCQkJ
CWVycm9yID0gRUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQkJQlBGUV9XTE9DSygmZC0+YmRf
cW1hc2spOworCQkJaWYgKCFkLT5iZF9xbWFzay5xbV9lbmFibGVkKSB7CisJCQkJQlBGUV9XVU5M
T0NLKCZkLT5iZF9xbWFzayk7CisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJYnJlYWs7CisJCQl9
CisJCQlpZnAgPSBkLT5iZF9iaWYtPmJpZl9pZnA7CisJCQlpbmRleCA9ICoodWludDMyX3QgKilh
ZGRyOworCQkJaWYgKGluZGV4ID4gaWZwLT5pZl9nZXRfdHhxdWV1ZV9sZW4oaWZwKSkgeworCQkJ
CUJQRlFfV1VOTE9DSygmZC0+YmRfcW1hc2spOworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCWJy
ZWFrOworCQkJfQorCQkJKih1aW50MzJfdCAqKWFkZHIgPSBkLT5iZF9xbWFzay5xbV90eHFfbWFz
a1tpbmRleF07CisJCQlCUEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJCWJyZWFrOworCQl9
CisKKwljYXNlIEJJT0NTVE9USEVSTUFTSzoKKwkJQlBGUV9XTE9DSygmZC0+YmRfcW1hc2spOwor
CQlkLT5iZF9xbWFzay5xbV9vdGhlcl9tYXNrID0gVFJVRTsKKwkJQlBGUV9XVU5MT0NLKCZkLT5i
ZF9xbWFzayk7CisJCWJyZWFrOworCisJY2FzZSBCSU9DQ1JPVEhFUk1BU0s6CisJCUJQRlFfV0xP
Q0soJmQtPmJkX3FtYXNrKTsKKwkJZC0+YmRfcW1hc2sucW1fb3RoZXJfbWFzayA9IEZBTFNFOwor
CQlCUEZRX1dVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKwkJYnJlYWs7CisKKwljYXNlIEJJT0NHVE9U
SEVSTUFTSzoKKwkJQlBGUV9XTE9DSygmZC0+YmRfcW1hc2spOworCQkqKHVpbnQzMl90ICopYWRk
ciA9ICh1aW50MzJfdClkLT5iZF9xbWFzay5xbV9vdGhlcl9tYXNrOworCQlCUEZRX1dVTkxPQ0so
JmQtPmJkX3FtYXNrKTsKKwkJYnJlYWs7CiAJfQogCUNVUlZORVRfUkVTVE9SRSgpOwogCXJldHVy
biAoZXJyb3IpOwpAQCAtMjA1MCw2ICsyMzE2LDE0IEBACiAJCSAqIDIpIGRlc3Ryb3lpbmcvZGV0
YWNoaW5nIGQgaXMgcHJvdGVjdGVkIGJ5IGludGVyZmFjZQogCQkgKiB3cml0ZSBsb2NrLCB0b28K
IAkJICovCisgCQlCUEZRX1JMT0NLKCZkLT5iZF9xbWFzayk7CisgCQlpZiAoZC0+YmRfcW1hc2su
cW1fZW5hYmxlZCkgeworIAkJCWlmICghZC0+YmRfcW1hc2sucW1fb3RoZXJfbWFzaykgeworCQkJ
CUJQRlFfUlVOTE9DSygmZC0+YmRfcW1hc2spOworIAkJCQljb250aW51ZTsKKyAJCQl9CisgCQl9
CisJCUJQRlFfUlVOTE9DSygmZC0+YmRfcW1hc2spOwogCiAJCS8qIFhYWDogRG8gbm90IHByb3Rl
Y3QgY291bnRlciBmb3IgdGhlIHNha2Ugb2YgcGVyZm9ybWFuY2UuICovCiAJCSsrZC0+YmRfcmNv
dW50OwpAQCAtMjExNyw2ICsyMzkxLDQyIEBACiAJQlBGSUZfUkxPQ0soYnApOwogCiAJTElTVF9G
T1JFQUNIKGQsICZicC0+YmlmX2RsaXN0LCBiZF9uZXh0KSB7CisgCQlCUEZRX1JMT0NLKCZkLT5i
ZF9xbWFzayk7CisgCQlpZiAoZC0+YmRfcW1hc2sucW1fZW5hYmxlZCkgeworIAkJCU1fQVNTRVJU
UEtUSERSKG0pOworIAkJCWlmICghKG0tPm1fZmxhZ3MgJiBNX0ZMT1dJRCkpIHsKKyAJCQkJaWYg
KCFkLT5iZF9xbWFzay5xbV9vdGhlcl9tYXNrKSB7CisgCQkJCQlCUEZRX1JVTkxPQ0soJmQtPmJk
X3FtYXNrKTsKKyAJCQkJCWNvbnRpbnVlOworIAkJCQl9CisgCQkJfSBlbHNlIHsKKyAJCQkJc3Ry
dWN0IGlmbmV0ICppZnAgPSBicC0+YmlmX2lmcDsKKyAJCQkJaWYgKG0tPm1fcGt0aGRyLnJ4cXVl
dWUgIT0gKHVpbnQzMl90KS0xKSB7CisgCQkJCQlpZiAobS0+bV9wa3RoZHIucnhxdWV1ZSA+PSBp
ZnAtPmlmX2dldF9yeHF1ZXVlX2xlbihpZnApKSB7CisgCQkJCQkJQlBGUV9SVU5MT0NLKCZkLT5i
ZF9xbWFzayk7CisgCQkJCQkJQlBGSUZfUlVOTE9DSyhicCk7CisgCQkJCQkJcmV0dXJuOworCQkJ
CQl9CisgCQkJCQlpZiAoIWQtPmJkX3FtYXNrLnFtX3J4cV9tYXNrW20tPm1fcGt0aGRyLnJ4cXVl
dWVdKSB7CisgCQkJCQkJQlBGUV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7CisgCQkJCQkJY29udGlu
dWU7CisgCQkJCQl9CisgCQkJCX0KKyAJCQkJaWYgKG0tPm1fcGt0aGRyLnR4cXVldWUgIT0gKHVp
bnQzMl90KS0xKSB7CisgCQkJCQlpZiAobS0+bV9wa3RoZHIudHhxdWV1ZSA+PSBpZnAtPmlmX2dl
dF90eHF1ZXVlX2xlbihpZnApKSB7CisgCQkJCQkJQlBGUV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7
CisgCQkJCQkJQlBGSUZfUlVOTE9DSyhicCk7CisgCQkJCQkJcmV0dXJuOworIAkJCQkJfQorIAkJ
CQkJaWYgKCFkLT5iZF9xbWFzay5xbV90eHFfbWFza1ttLT5tX3BrdGhkci50eHF1ZXVlXSkgewor
IAkJCQkJCUJQRlFfUlVOTE9DSygmZC0+YmRfcW1hc2spOworIAkJCQkJCWNvbnRpbnVlOworIAkJ
CQkJfQorIAkJCQl9CisgCQkJfQorIAkJfQorIAkJQlBGUV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7
CisgCiAJCWlmIChCUEZfQ0hFQ0tfRElSRUNUSU9OKGQsIG0tPm1fcGt0aGRyLnJjdmlmLCBicC0+
YmlmX2lmcCkpCiAJCQljb250aW51ZTsKIAkJKytkLT5iZF9yY291bnQ7CkBAIC0yMTgwLDYgKzI0
OTAsNDIgQEAKIAlCUEZJRl9STE9DSyhicCk7CiAKIAlMSVNUX0ZPUkVBQ0goZCwgJmJwLT5iaWZf
ZGxpc3QsIGJkX25leHQpIHsKKyAJCUJQRlFfUkxPQ0soJmQtPmJkX3FtYXNrKTsKKyAJCWlmIChk
LT5iZF9xbWFzay5xbV9lbmFibGVkKSB7CisgCQkJTV9BU1NFUlRQS1RIRFIobSk7CisgCQkJaWYg
KCEobS0+bV9mbGFncyAmIE1fRkxPV0lEKSkgeworIAkJCQlpZiAoIWQtPmJkX3FtYXNrLnFtX290
aGVyX21hc2spIHsKKyAJCQkJCUJQRlFfUlVOTE9DSygmZC0+YmRfcW1hc2spOworIAkJCQkJY29u
dGludWU7CisgCQkJCX0KKyAJCQl9IGVsc2UgeworIAkJCQlzdHJ1Y3QgaWZuZXQgKmlmcCA9IGJw
LT5iaWZfaWZwOworIAkJCQlpZiAobS0+bV9wa3RoZHIucnhxdWV1ZSAhPSAodWludDMyX3QpLTEp
IHsKKyAJCQkJCWlmIChtLT5tX3BrdGhkci5yeHF1ZXVlID49IGlmcC0+aWZfZ2V0X3J4cXVldWVf
bGVuKGlmcCkpIHsKKyAJCQkJCQlCUEZRX1JVTkxPQ0soJmQtPmJkX3FtYXNrKTsKKyAJCQkJCQlC
UEZJRl9SVU5MT0NLKGJwKTsKKyAJCQkJCQlyZXR1cm47CisgCQkJCQl9CisgCQkJCQlpZiAoIWQt
PmJkX3FtYXNrLnFtX3J4cV9tYXNrW20tPm1fcGt0aGRyLnJ4cXVldWVdKSB7CisgCQkJCQkJQlBG
UV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7CisgCQkJCQkJY29udGludWU7CisgCQkJCQl9CisgCQkJ
CX0KKyAJCQkJaWYgKG0tPm1fcGt0aGRyLnR4cXVldWUgIT0gKHVpbnQzMl90KS0xKSB7CisgCQkJ
CQlpZiAobS0+bV9wa3RoZHIudHhxdWV1ZSA+PSBpZnAtPmlmX2dldF90eHF1ZXVlX2xlbihpZnAp
KSB7CisgCQkJCQkJQlBGUV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7CisgCQkJCQkJQlBGSUZfUlVO
TE9DSyhicCk7CisgCQkJCQkJcmV0dXJuOworIAkJCQkJfQorIAkJCQkJaWYgKCFkLT5iZF9xbWFz
ay5xbV90eHFfbWFza1ttLT5tX3BrdGhkci50eHF1ZXVlXSkgeworIAkJCQkJCUJQRlFfUlVOTE9D
SygmZC0+YmRfcW1hc2spOworIAkJCQkJCWNvbnRpbnVlOworIAkJCQkJfQorIAkJCQl9CisgCQkJ
fQorIAkJfQorIAkJQlBGUV9SVU5MT0NLKCZkLT5iZF9xbWFzayk7CisgCiAJCWlmIChCUEZfQ0hF
Q0tfRElSRUNUSU9OKGQsIG0tPm1fcGt0aGRyLnJjdmlmLCBicC0+YmlmX2lmcCkpCiAJCQljb250
aW51ZTsKIAkJKytkLT5iZF9yY291bnQ7CkBAIC0yNDQzLDYgKzI3ODksMTIgQEAKIAl9CiAJaWYg
KGQtPmJkX3dmaWx0ZXIgIT0gTlVMTCkKIAkJZnJlZSgoY2FkZHJfdClkLT5iZF93ZmlsdGVyLCBN
X0JQRik7CisgCisgCWlmIChkLT5iZF9xbWFzay5xbV9lbmFibGVkKSB7CisgCQlmcmVlKGQtPmJk
X3FtYXNrLnFtX3J4cV9tYXNrLCBNX0JQRik7CisgCQlmcmVlKGQtPmJkX3FtYXNrLnFtX3R4cV9t
YXNrLCBNX0JQRik7CisgCX0KKyAKIAltdHhfZGVzdHJveSgmZC0+YmRfbG9jayk7CiB9CiAKSW5k
ZXg6IHNvY2tpby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNvY2tpby5oCSguLi4vaGVhZC9zeXMvc3lzL3Nv
Y2tpby5oKQkocmV2aXNpb24gMjUyNTA5KQorKysgc29ja2lvLmgJKC4uLi91c2VyL3N5dXUvbXFf
YnBmL3N5cy9zeXMvc29ja2lvLmgpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC04Miw2ICs4MiwxMCBA
QAogI2RlZmluZQlTSU9DR0lGREVTQ1IJX0lPV1IoJ2knLCA0Miwgc3RydWN0IGlmcmVxKQkvKiBn
ZXQgaWZuZXQgZGVzY3IgKi8gCiAjZGVmaW5lCVNJT0NBSUZBRERSCSBfSU9XKCdpJywgNDMsIHN0
cnVjdCBpZmFsaWFzcmVxKS8qIGFkZC9jaGcgSUYgYWxpYXMgKi8KIAorI2RlZmluZQlTSU9DR0lG
UUxFTiAJX0lPV1IoJ2knLCA0NSwgc3RydWN0IGlmcmVxKQkvKiBnZXQgSUYgcXVldWUgbGVuICov
CisjZGVmaW5lCVNJT0NHSUZSWFFBRkZJTklUWSBfSU9XUignaScsIDQ2LCBzdHJ1Y3QgaWZyZXEp
CS8qIGdldCBJRiByeCBxdWV1ZSBhZmZpbml0eSAqLworI2RlZmluZQlTSU9DR0lGVFhRQUZGSU5J
VFkgX0lPV1IoJ2knLCA0Nywgc3RydWN0IGlmcmVxKQkvKiBnZXQgSUYgdHggcXVldWUgYWZmaW5p
dHkgKi8KKwogI2RlZmluZQlTSU9DQURETVVMVEkJIF9JT1coJ2knLCA0OSwgc3RydWN0IGlmcmVx
KQkvKiBhZGQgbSdjYXN0IGFkZHIgKi8KICNkZWZpbmUJU0lPQ0RFTE1VTFRJCSBfSU9XKCdpJywg
NTAsIHN0cnVjdCBpZnJlcSkJLyogZGVsIG0nY2FzdCBhZGRyICovCiAjZGVmaW5lCVNJT0NHSUZN
VFUJX0lPV1IoJ2knLCA1MSwgc3RydWN0IGlmcmVxKQkvKiBnZXQgSUYgbXR1ICovCkluZGV4OiBt
YnVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gbWJ1Zi5oCSguLi4vaGVhZC9zeXMvc3lzL21idWYuaCkJKHJl
dmlzaW9uIDI1MjUwOSkKKysrIG1idWYuaAkoLi4uL3VzZXIvc3l1dS9tcV9icGYvc3lzL3N5cy9t
YnVmLmgpCShyZXZpc2lvbiAyNTI1MDkpCkBAIC0xMjEsNiArMTIxLDggQEAKIAl1aW50MzJfdAkg
Zmxvd2lkOwkvKiBwYWNrZXQncyA0LXR1cGxlIHN5c3RlbQogCQkJCQkgKiBmbG93IGlkZW50aWZp
ZXIKIAkJCQkJICovCisJdWludDMyX3QJcnhxdWV1ZTsKKwl1aW50MzJfdAl0eHF1ZXVlOwogCS8q
IHZhcmlhYmxlcyBmb3IgaGFyZHdhcmUgY2hlY2tzdW0gKi8KIAlpbnQJCSBjc3VtX2ZsYWdzOwkv
KiBmbGFncyByZWdhcmRpbmcgY2hlY2tzdW0gKi8KIAlpbnQJCSBjc3VtX2RhdGE7CS8qIGRhdGEg
ZmllbGQgdXNlZCBieSBjc3VtIHJvdXRpbmVzICovCg==
--bcaec518248ea5c9a804e089646d--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALG4x-UYBFsMttpZx1-c_wtVf5MST8%2B_t1psY2HQskTiOZDFLA>