ports/151744: New port net/appkonference, a high-performance Asterisk voice/video conferencing plugin
Alex Deiter
alex.deiter at gmail.com
Mon Nov 1 15:10:09 UTC 2010
The following reply was made to PR ports/151744; it has been noted by GNATS.
From: Alex Deiter <alex.deiter at gmail.com>
To: bug-followup at FreeBSD.org, alex.deiter at gmail.com
Cc:
Subject: Re: ports/151744: New port net/appkonference, a high-performance
Asterisk voice/video conferencing plugin
Date: Mon, 1 Nov 2010 17:35:15 +0300
--20cf30549daf7a8c210493feb76d
Content-Type: text/plain; charset=UTF-8
Hi,
New version for net/appkonference.
Changes:
- sync with GIT version
- new patch for BigBlueButton compability
--
Alex Deiter
--20cf30549daf7a8c210493feb76d
Content-Type: text/plain; charset=US-ASCII; name="appkonference.shar.txt"
Content-Disposition: attachment; filename="appkonference.shar.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gfzg1qyg0
IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUgYW55
dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50ZXJpbmcg
InNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQg
ZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBlcm1p
c3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJYXBwa29uZmVyZW5jZQojCWFw
cGtvbmZlcmVuY2UvZmlsZXMKIwlhcHBrb25mZXJlbmNlL2ZpbGVzL3BhdGNoLWJpZ2JsdWVidXR0
b24KIwlhcHBrb25mZXJlbmNlL3BrZy1kZXNjcgojCWFwcGtvbmZlcmVuY2UvZGlzdGluZm8KIwlh
cHBrb25mZXJlbmNlL01ha2VmaWxlCiMKZWNobyBjIC0gYXBwa29uZmVyZW5jZQpta2RpciAtcCBh
cHBrb25mZXJlbmNlID4gL2Rldi9udWxsIDI+JjEKZWNobyBjIC0gYXBwa29uZmVyZW5jZS9maWxl
cwpta2RpciAtcCBhcHBrb25mZXJlbmNlL2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4IC0g
YXBwa29uZmVyZW5jZS9maWxlcy9wYXRjaC1iaWdibHVlYnV0dG9uCnNlZCAncy9eWC8vJyA+YXBw
a29uZmVyZW5jZS9maWxlcy9wYXRjaC1iaWdibHVlYnV0dG9uIDw8ICcxMGQwNTY0MDY5ODkzYzdl
NTBiNGQ2Y2EzM2JhMTY5NCcKWC0tLSAuL0NIQU5HRVMub3JpZwkyMDEwLTA4LTE4IDE0OjU2OjIz
LjAwMDAwMDAwMCArMDAwMApYKysrIC4vQ0hBTkdFUwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAw
MDAwMCArMDAwMApYQEAgLTE1NSwyNCArMTU1LDMgQEAKWCBDaGFuZ2VkIHByZXByb2Nlc3NvciBm
bGFnLCBBUFBfS09ORkVSRU5DRV9ERUJVRywgc28gdGhhdCBkZWJ1ZyBsb2dnaW5nIGlzClggZW5h
YmxlZCBvbmx5IGlmIGl0J3MgZGVmaW5lZC4gVG8gZW5hYmxlIGRlYnVnIGxvZ2dpbmc6IGVkaXQg
dGhlIE1ha2VmaWxlIG9yClggc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmU6IG1ha2UgQVBQX0tP
TkZFUkVOQ0VfREVCVUc9MS4KWC0KWC1SZW1vdmVkIGNoYW5uZWwgYW5kIGNvbmZlcmVuY2UgbmFt
ZSBzdHJpbmdzIGZyb20gdGhlIG1lbWJlciBjb250cm9sIGJsb2NrLiBUaGUKWC1mb3JtZXIgY2Fu
IGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBjaGFubmVsIHBvaW50ZXIgaW4gdGhlIG1lbWJlciBjb250
cm9sIGJsb2NrLgpYLVRoZSBsYXR0ZXIgY2FuIGJlIHJlZmVyZW5jZWQgdmlhIGEgcG9pbnRlciB0
byBjb25mZXJlbmNlIGNvbnRyb2wgYmxvY2sgd2hpY2gKWC13YXMgYWRkZWQgdG8gdGhlIG1lbWJl
ciBjb250b2wgYmxvY2sgZm9yIHRoaXMgcHVycG9zZS4KWC0KWC1DaGFuZ2VkIHRoZSBjb25mZXJl
bmNlIHN0YXRlIGV2ZW50IGltcGxlbWVudGF0aW9uIHNvIHRoYXQgc3BlYWtpbmcvc2lsZW50Clgt
bm90aWZpY2F0aW9ucyBhcmUgZ2VuZXJhdGVkIGluIHRoZSBtZW1iZXIgdGhyZWFkLiBUaGUgYWR2
YW50YWdlIG9mIHRoaXMKWC1hcHByb2FjaCBpcyB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSB0aGUg
Y29uZmVyZW5jZSB0aHJlYWQgdG8gcGVyaW9kaWNhbGx5Clgtc2NhbiB0aGUgbWVtYmVyIGxpc3Qg
Zm9yIG1lbWJlciBzdGF0ZSBjaGFuZ2VzLgpYLQpYLUNoYW5nZWQgIngiIG9wdGlvbiBzbyB0aGF0
IGFsbCBtZW1iZXJzIGFyZSBraWNrZWQgYW5kIHRoZSBjb25mZXJlbmNlIGVuZHMgd2hlbgpYLXRo
ZSBsYXN0IG1vZGVyYXRvciBsZWF2ZXMgdGhlIGNvbmZlcmVuY2UuClgtClgtQWRkZWQgYSBNYWtl
ZmlsZSB2YXJpYWJsZSBBQ19VU0VfU1BFRVguIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHVuZGVmaW5l
ZCwgdGhhdApYLWlzLCB0aGUgU1BFRVggY29kZWMgaXMgbm90IGF2YWlsYWJsZS4KWC0KWC1DaGFu
Z2VkIHRoZSBmb3JtYXQgb2YgdGhlIGNvbmZlcmVuY2UgbGlzdCBjb21tYW5kLiBTcGVjaWZpY2Fs
bHksIHJlbW92ZWQgdGhlClgtYnVja2V0IGZpZWxkIGFuZCBhZGRlZCBhIGR1cmF0aW9uIGZpZWxk
LiBUaGUgZHVyYXRpb24gZmllbGQgaW5kaWNhdGVzIGVpdGhlcgpYLXRoZSBjb25mZXJlbmNlIGVs
YXBzZWQgdGltZSB3aGVuIGNvbmZlcmVuY2VzIGFyZSBsaXN0ZWQgb3IgdGhlIG1lbWJlciBlbGFw
c2VkClgtdGltZSB3aGVuIG1lbWJlcnMgYXJlIGxpc3RlZC4KWC0tLSAuL0RpYWxwbGFuLnR4dC5v
cmlnCTIwMTAtMDgtMTAgMjA6MDM6NTQuMDAwMDAwMDAwICswMDAwClgrKysgLi9EaWFscGxhbi50
eHQJMjAxMC0xMS0wMSAxNzowNzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0xOSw5ICsxOSwxMCBA
QApYIAknVicgOiBlbmFibGUgc3BlZXggcHJlcHJvY2Vzc2luZyBWb2ljZSBBY3Rpdml0eSBEZXRl
Y3Rpb24gClggCSdEJyA6IGVuYWJsZSBzcGVleCBwcmVwcm9jZXNzaW5nIERlLW5vaXNlClggCSdB
JyA6IGVuYWJsZSBzcGVleCBwcmVwcm9jZXNzaW5nIEF1dG9tYXRpYyBHYWluIENvbnRyb2wKWC0J
J1QnIDogdGVsZXBob25lLCBzbyBzcGVleCBwcmVwcm9jZXNzaW5nIHNob3VsZCBiZSBlbmFibGVk
ClgrCSdUJyA6IG1lbWJlciBjb25uZWN0cyB0aHJvdWdoIFphcHRlbCwgc28gc3BlZXggcHJlcHJv
Y2Vzc2luZyBzaG91bGQgYmUgZW5hYmxlZApYIApYIAlEVE1GIG9wdGlvbnM6ClgrCSdzJyA6IGFs
bG93cyBEVE1GIGZ1bmN0aW9ucyBsaWtlIG11dGluZywgZXRjIChzYW1lIGFzIE1lZXRNZSBtZW51
OiAqMSA9IG11dGUvdW5tdXRlLCBldGMpClggCSdYJyA6IGVuYWJsZSBEVE1GIHN3aXRjaDogdmlk
ZW8gY2FuIGJlIHN3aXRjaGVkIGJ5IHVzZXJzIHVzaW5nIERUTUYuIERvIG5vdCB1c2Ugd2l0aCAn
UycuClggCSdSJyA6IGVuYWJsZSBEVE1GIHJlbGF5OiBEVE1GIHRvbmVzIGdlbmVyYXRlIGEgbWFu
YWdlciBldmVudApYIAlJZiBuZWl0aGVyICdYJyBub3IgJ1InIGFyZSBwcmVzZW50LCBEVE1GIHRv
bmVzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCBtZW1iZXJzIGluIHRoZSBjb25mZXJlbmNlClhA
QCAtMzcsOSArMzgsMTUgQEAKWCAJTWlzY2VsbGFuZW91czoKWCAJJ3QnIDogbWVtYmVyIGFjY2Vw
dHMgdGV4dCBiYXNlZCBjb250cm9sIG1lc3NhZ2VzLiAgVGhlIG1lc3NhZ2VzIGFyZSBkZXNjcmli
ZWQgaW4gYSBzZXBhcmF0ZSBkb2N1bWVudApYIAknTicgOiBBc3N1bWUgdGhhdCB0aGUgbWVtYmVy
IHN0YXJ0cyBvZmYgd2l0aCBjYW1lcmEgZGlzYWJsZWQuClgtCSd4JyA6IHdoZW4gdGhlIGxhc3Qg
bW9kZXJhdG9yIGxlYXZlcywgYWxsIGNvbmZlcmVlcyBhcmUga2lja2VkIGFuZCBjb25mZXJlbmNl
IGVuZHMuClgrCSd4JyA6IGlmIGEgbW9kZXJhdG9yIGxlYXZlcywgYWxsIGNvbmZlcmVlcyBhcmUg
a2lja2VkIGFuZCBjb25mZXJlbmNlIGVuZHMuClggCSdhJyA6IFYgKyBUClggCSdIJyA6IHBsYXkg
bXVzaWMgb24gaG9sZCBpZiBvbmx5IG9uZSBtZW1iZXIgaW4gY29uZmVyZW5jZQpYKwkndycgOiBw
bGF5IG11c2ljIG9uIGhvbGQgZm9yIGFsbCBtZW1iZXJzIG9mIHRoZSBjb25mZXJlbmNlIHVudGls
IGEgbWFya2VkIG1vZGVyYXRvciAobWFya2VkIHdpdGggJ00nIGZsYWcpIGpvaW5zClgrCSdyJyA6
IHJlY29yZCB0aGUgY29uZmVyZW5jZS4gIGl0IHdpbGwgYmUgcmVjb3JkZWQgdG8gS09ORkVSRU5D
RV9SRUNPUkRJTkdGSUxFIHdpdGggdGhlIGZvcm1hdCBLT05GRVJFTkNFX1JFQ09SRElOR0ZPUk1B
VApYKwkJZGVmYXVsdCBmb3IgS09ORkVSRU5DRV9SRUNPUkRJTkdGSUxFIGlzOiBrb25mZXJlbmNl
LXtjb25mZXJlbmNlLW5hbWV9LXttZW1iZXItdW5pcXVlaWR9ClgrCQlkZWZhdWx0IGZvciBLT05G
RVJFTkNFX1JFQ09SRElOR0ZPUk1BVCBpczogd2F2ClgrCSduJyA6IGRvIG5vdCBjcmVhdGUgbmV3
IGNvbmZlcmVuY2UsIG9ubHkgam9pbiBleGlzdGluZyBvbmVzLgpYKwkJaWYgY29uZmVyZW5jZSBk
b2VzIG5vdCBleGlzdCBLT05GRVJFTkNFIGlzIHNldCB0byBOT1RGT1VORApYIApYIAlGdXR1cmUg
ZGV2ZWxvcG1lbnQgKHRoZXNlIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0KToKWCAJPwpYQEAgLTU3
LDYgKzY0LDcgQEAKWCAJbWF4X3VzZXJzPTxpbnQ+IDogTGltaXQgY29uZmVyZW5jZSBwYXJ0aWNp
cGFudHMgdG8gbWF4X3VzZXJzClggCXR5cGU9PHN0cmluZz46IFR5cGUgaWRlbnRpZmllcgpYIAlz
cHk9PHN0cmluZz46IENoYW5uZWwgbmFtZSB0byBzcHkKWCsJd2VsY29tZV9wcm9tcHQ9PHN0cmlu
Zz46IEZpbGUgdG8gcGxheWJhY2sgYWZ0ZXIgYSBzdWNjZXNzZnVsIGpvaW4gKFBJTiB2ZXJpZmll
ZCksIGJ1dCBiZWZvcmUgY29ubmVjdGluZyBjb25mZXJlbmNlIGF1ZGlvClggClggCTMuIEV4YW1w
bGVzClggClgtLS0gLi9jbGkuYy5vcmlnCTIwMTAtMDgtMTggMTY6MTI6NDEuMDAwMDAwMDAwICsw
MDAwClgrKysgLi9jbGkuYwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAg
LTkxLDcgKzkxLDcgQEAKWCAJaWYgKCBhcmdjIDwgMiApClggCQlyZXR1cm4gU0hPV1VTQUdFIDsK
WCAKWC0JYXN0X2NsaSggZmQsICJhcHBfa29uZmVyZW5jZSByZWxlYXNlICVzXG4iLCBSRUxFQVNF
KSA7ClgrCWFzdF9jbGkoIGZkLCAiYXBwX2tvbmZlcmVuY2UgcmV2aXNpb24gJXNcbiIsIFJFVklT
SU9OKSA7ClggClggCXJldHVybiBTVUNDRVNTIDsKWCB9ClhAQCAtNTMyLDcgKzUzMiw3IEBAClgg
CSAgICByZXR1cm4gRkFJTFVSRTsKWCAJfQpYIApYLQltZW1iZXItPm11dGVfYXVkaW8gPSAxOwpY
KwltZW1iZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCAKWCAJaWYgKCAhLS1t
ZW1iZXItPnVzZV9jb3VudCAmJiBtZW1iZXItPmRlbGV0ZV9mbGFnICkKWCAJCWFzdF9jb25kX3Np
Z25hbCAoICZtZW1iZXItPmRlbGV0ZV92YXIgKSA7ClhAQCAtNTQxLDcgKzU0MSwxMSBAQApYIAlt
YW5hZ2VyX2V2ZW50KApYIAkJRVZFTlRfRkxBR19DQUxMLApYIAkJIkNvbmZlcmVuY2VNZW1iZXJN
dXRlIiwKWCsJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJIk1lbWJlcklkOiAlZFxyXG4i
ClggCQkiQ2hhbm5lbDogJXNcclxuIiwKWCsJCW1lbWJlci0+Y29uZl9uYW1lLApYKwkJbWVtYmVy
LT5pZCwKWCAJCWNoYW5uZWwKWCAJKSA7ClggClhAQCAtNzQ1LDcgKzc0OSw3IEBAClggCSAgICBy
ZXR1cm4gRkFJTFVSRTsKWCAJfQpYIApYLQltZW1iZXItPm11dGVfYXVkaW8gPSAwOwpYKwltZW1i
ZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCAKWCAJaWYgKCAhLS1tZW1iZXIt
PnVzZV9jb3VudCAmJiBtZW1iZXItPmRlbGV0ZV9mbGFnICkKWCAJCWFzdF9jb25kX3NpZ25hbCAo
ICZtZW1iZXItPmRlbGV0ZV92YXIgKSA7ClhAQCAtNzUzLDggKzc1NywxMiBAQApYIApYIAltYW5h
Z2VyX2V2ZW50KApYIAkJRVZFTlRfRkxBR19DQUxMLApYLQkJIkNvbmZlcmVuY2VNZW1iZXJVbm11
dGUiLApYKwkJIkNvbmZlcmVuY2VNZW1iZXJVbm11dGUiClgrCQkiQ29uZmVyZW5jZU5hbWU6ICVz
XHJcbiIKWCsJCSJNZW1iZXJJZDogJWRcclxuIgpYIAkJIkNoYW5uZWw6ICVzXHJcbiIsClgrCQlt
ZW1iZXItPmNvbmZfbmFtZSwKWCsJCW1lbWJlci0+aWQsClggCQljaGFubmVsClggCSkgOwpYIApY
LS0tIC4vTWFrZWZpbGUub3JpZwkyMDEwLTA4LTE4IDE2OjAyOjM4LjAwMDAwMDAwMCArMDAwMApY
KysrIC4vTWFrZWZpbGUJMjAxMC0xMS0wMSAxNzoxMDoxNS4wMDAwMDAwMDAgKzAwMDAKWEBAIC0x
OCwxMSArMTgsMTEgQEAKWCAjClggClggSU5TVEFMTF9QUkVGSVggOj0KWC1JTlNUQUxMX01PRFVM
RVNfRElSIDo9ICQoSU5TVEFMTF9QUkVGSVgpL3Vzci9saWIvYXN0ZXJpc2svbW9kdWxlcwpYK0lO
U1RBTExfTU9EVUxFU19ESVIgOj0gJChJTlNUQUxMX1BSRUZJWCkvJHtMT0NBTEJBU0V9L2xpYi9h
c3Rlcmlzay9tb2R1bGVzClggClgtQVNURVJJU0tfSU5DTFVERV9ESVIgPz0gLi4vYXN0ZXJpc2sv
aW5jbHVkZQpYK0FTVEVSSVNLX0lOQ0xVREVfRElSID89ICR7TE9DQUxCQVNFfS9pbmNsdWRlClgg
ClgtUkVMRUFTRSA9IDEuNQpYK1JFVklTSU9OID0gMDEuMTEuMjAxMApYIApYICMgdHVybiBhcHBf
a29uZmVyZW5jZSBkZWJ1Z2dpbmcgb24gb3Igb2ZmICggMCA9PSBPRkYsIDEgPT0gT04gKQpYIEFQ
UF9LT05GRVJFTkNFX0RFQlVHID89IDAKWEBAIC02Nyw3ICs2Nyw3IEBAClggREVCVUcgOj0gLWcK
WCAKWCBDRkxBR1MgPSAtcGlwZSAtV2FsbCAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3Npbmct
ZGVjbGFyYXRpb25zIC1NRCAtTVAgJChERUJVRykKWC1DUFBGTEFHUyA9ICQoSU5DTFVERSkgLURf
UkVFTlRSQU5UIC1EX0dOVV9TT1VSQ0UgLURSRUxFQVNFPVwiJChSRUxFQVNFKVwiClgrQ1BQRkxB
R1MgPSAkKElOQ0xVREUpIC1EX1JFRU5UUkFOVCAtRF9HTlVfU09VUkNFIC1EUkVWSVNJT049XCIk
KFJFVklTSU9OKVwiClggI0NGTEFHUyArPSAtTzIKWCAjQ0ZMQUdTICs9IC1PMyAtbWFyY2g9cGVu
dGl1bTMgLW1zc2UgLW1mcG1hdGg9c3NlLDM4NyAtZmZhc3QtbWF0aApYICMgUEVSRjogYmVsb3cg
aXMgMTAlIGZhc3RlciB0aGFuIC1PMiBvciAtTzMgYWxvbmUuClhAQCAtODMsMTAgKzgzLDE2IEBA
ClggQ1BQRkxBR1MgKz0gLURDUllQVE8KWCBDUFBGTEFHUyArPSAtRENIQU5ORUxfVEFCTEVfU0la
RT0kKENIQU5ORUxfVEFCTEVfU0laRSkKWCBDUFBGTEFHUyArPSAtRENPTkZFUkVOQ0VfVEFCTEVf
U0laRT0kKENPTkZFUkVOQ0VfVEFCTEVfU0laRSkKWC1DUFBGTEFHUyArPSAtRE9ORU1JWFRIUkVB
RApYKyMgTk9URTogSW4gQXN0ZXJpc2tBdWRpb0tvbmYsIHdlIGRpc2FibGUgdGhlIE9ORU1JWFRI
UkVBRCAiZmVhdHVyZSIKWCsjICAgSXQgY29uZmxpY3RzIHdpdGggdGhlIHJlY29yZGluZyBmZWF0
dXJlIHdlIGFkZGVkIHNpbmNlIHRoZSBmb3JrIG9mIGFwcF9rb25mZXJlbmNlClgrIyAgIElmIHlv
dSBoYXZlIHRoZSBzaW5nbGUgbWl4aW5nIHRocmVhZCBlbmFibGVkLCBzdGFydCBvbmUgY29uZmVy
ZW5jZSByZWNvcmRpbmcsIGFuZApYKyMgICBvbmUgbm90IHJlY29yZGluZywgQXN0ZXJpc2sgZGll
cy4gIFRoZSByZWNvcmRpbmcgZmVhdHVyZSBjb3VsZCBiZSB1cGRhdGVkIHRvIHdvcmsKWCsjICAg
d2l0aCB0aGUgc2luZ2xlIG1peGluZyB0aHJlYWQsIGJ1dCB3ZSB3YW50IHRvIHRha2UgYWR2YW50
YWdlIG9mIG11bHRpLWNvcmUKWCsjICAgcHJvY2Vzc29ycywgc28gd2UganVzdCBkaXNhYmxlIHRo
ZSBzaW5nbGUgdGhyZWFkIHNldHRpbmcgaGVyZToKWCsjQ1BQRkxBR1MgKz0gLURPTkVNSVhUSFJF
QUQKWCAKWCAjClgtIyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBHLjcyOUEgc3VwcG9ydCAo
bmVlZCB0byBoYXZlIHRoZSBhY3R1YWwgY29kZWMgaW5zdGFsbGVkKQpYKyMgVW5jb21tZW50IHRo
aXMgaWYgeW91IHdhbnQgRy43MjlBIHN1cHBvcnQgKG5lZWQgdG8gaGF2ZSB0aGUgYWN0dWFsIGNv
ZGVjIGluc3RhbGxlZApYICMKWCAjIENQUEZMQUdTICs9IC1EQUNfVVNFX0c3MjlBClggClhAQCAt
OTYsOSArMTAyLDkgQEAKWCAjIENQUEZMQUdTICs9IC1EQUNfVVNFX0c3MjIKWCAKWCAjClgtIyBV
bmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBTUEVFWCBzdXBwb3J0IChuZWVkIHRvIGhhdmUgdGhl
IGFjdHVhbCBjb2RlYyBpbnN0YWxsZWQpClgrIyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBT
cGVleCBXaWRlYmFuZCBzdXBwb3J0IChyZXF1aXJlcyBhc3RlcmlzayAxLjggb3IgYmFja3BvcnQg
cGF0Y2gpClggIwpYLSMgQ1BQRkxBR1MgKz0gLURBQ19VU0VfU1BFRVgKWCsjIENQUEZMQUdTICs9
IC1EQUNfVVNFX1NQRUVYMTYKWCAKWCBpZmVxICgkKEFQUF9LT05GRVJFTkNFX0RFQlVHKSwgMSkK
WCBDUFBGTEFHUyArPSAtREFQUF9LT05GRVJFTkNFX0RFQlVHClhAQCAtMTU3LDEyICsxNjMsMTMg
QEAKWCAJJChSTSkgJChUQVJHRVQpClggClggJChUQVJHRVQpOiAkKE9CSlMpClgtCSQoQ0MpIC1w
ZyAkKFNPTElOSykgLW8gJEAgJChPQkpTKQpYKwkkKENDKSAkKFNPTElOSykgLW8gJEAgJChPQkpT
KQpYIApYIHZhZF90ZXN0OiB2YWRfdGVzdC5vIGxpYnNwZWV4L3ByZXByb2Nlc3MubyBsaWJzcGVl
eC9taXNjLm8gbGlic3BlZXgvc21hbGxmdC5vClggCSQoQ0MpICQoUFJPRklMRSkgLW8gJEAgJF4g
LWxtClggClggaW5zdGFsbDoKWCsJJChJTlNUQUxMKSAtZCAkKElOU1RBTExfTU9EVUxFU19ESVIp
ClggCSQoSU5TVEFMTCkgLW0gNzU1ICQoVEFSR0VUKSAkKElOU1RBTExfTU9EVUxFU19ESVIpClgg
ClggClgtLS0gLi9hcHBfY29uZmVyZW5jZS5jLm9yaWcJMjAxMC0wOC0xOCAxNjoxNjo0Ni4wMDAw
MDAwMDAgKzAwMDAKWCsrKyAuL2FwcF9jb25mZXJlbmNlLmMJMjAxMC0xMS0wMSAxNzowNzo0NC4w
MDAwMDAwMDAgKzAwMDAKWEBAIC0yNywxNCArMjcsMTQgQEAKWCAKWCAjaW5jbHVkZSAiYXN0ZXJp
c2suaCIKWCAKWC0vLyBTVk4gcmVsZWFzZSBudW1iZXIsIHByb3ZpZGVkIGJ5IG1ha2UKWC0jaWZu
ZGVmIFJFTEVBU0UKWC0jZGVmaW5lIFJFTEVBU0UgInVua25vd24iClgrLy8gU1ZOIHJldmlzaW9u
IG51bWJlciwgcHJvdmlkZWQgYnkgbWFrZQpYKyNpZm5kZWYgUkVWSVNJT04KWCsjZGVmaW5lIFJF
VklTSU9OICJ1bmtub3duIgpYICNlbmRpZgpYIApYLXN0YXRpYyBjaGFyICpyZWxlYXNlID0gUkVM
RUFTRTsKWCtzdGF0aWMgY2hhciAqcmV2aXNpb24gPSBSRVZJU0lPTjsKWCAKWC1BU1RFUklTS19G
SUxFX1ZFUlNJT04oX19GSUxFX18sIFJFTEVBU0UpClgrQVNURVJJU0tfRklMRV9WRVJTSU9OKF9f
RklMRV9fLCBSRVZJU0lPTikKWCAKWCAjaW5jbHVkZSAiYXBwX2NvbmZlcmVuY2UuaCIKWCAjaW5j
bHVkZSAiY29tbW9uLmgiClhAQCAtNTksNyArNTksMTMgQEAKWCBzdGF0aWMgY2hhciAqc3lub3Bz
aXMyID0gIkNoYW5uZWwgSW5kZXBlbmRlbnQgQ29uZmVyZW5jZSBDb3VudCI7Clggc3RhdGljIGNo
YXIgKmRlc2NyaXAyID0gIkNoYW5uZWwgSW5kZXBlbmRlbnQgQ29uZmVyZW5jZSBDb3VudCBBcHBs
aWNhdGlvbiI7ClggClgtc3RhdGljIGludCBhcHBfa29uZmVyZW5jZV9tYWluKHN0cnVjdCBhc3Rf
Y2hhbm5lbCogY2hhbiwgdm9pZCogZGF0YSkKWCsjaWYgQVNURVJJU0tfVkVSU0lPTl9OVU0gPj0g
MTA4MDAKWCt0eXBlZGVmIGNvbnN0IGNoYXIgKmFzdF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXI7Clgr
I2Vsc2UKWCt0eXBlZGVmIHZvaWQgKmFzdF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXI7ClgrI2VuZGlm
ClgrClgrc3RhdGljIGludCBhcHBfa29uZmVyZW5jZV9tYWluKHN0cnVjdCBhc3RfY2hhbm5lbCog
Y2hhbiwgYXN0X2FwcGxpY2F0aW9uX3BhcmFtZXRlciBkYXRhKQpYIHsKWCAJaW50IHJlcyA7Clgg
CXN0cnVjdCBhc3RfbW9kdWxlX3VzZXIgKnUgOwpYQEAgLTY3LDE0ICs3MywxNCBAQApYIAl1ID0g
YXN0X21vZHVsZV91c2VyX2FkZChjaGFuKTsKWCAKWCAJLy8gY2FsbCBtZW1iZXIgdGhyZWFkIGZ1
bmN0aW9uClgtCXJlcyA9IG1lbWJlcl9leGVjKCBjaGFuLCBkYXRhICkgOwpYKwlyZXMgPSBtZW1i
ZXJfZXhlYyhjaGFuLCAoY29uc3QgY2hhciopIGRhdGEpOwpYIApYIAlhc3RfbW9kdWxlX3VzZXJf
cmVtb3ZlKHUpOwpYIApYIAlyZXR1cm4gcmVzIDsKWCB9ClggClgtc3RhdGljIGludCBhcHBfa29u
ZmVyZW5jZWNvdW50X21haW4oc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCB2b2lkKiBkYXRhKQpY
K3N0YXRpYyBpbnQgYXBwX2tvbmZlcmVuY2Vjb3VudF9tYWluKHN0cnVjdCBhc3RfY2hhbm5lbCog
Y2hhbiwgYXN0X2FwcGxpY2F0aW9uX3BhcmFtZXRlciBkYXRhKQpYIHsKWCAJaW50IHJlcyA7Clgg
CXN0cnVjdCBhc3RfbW9kdWxlX3VzZXIgKnUgOwpYQEAgLTgyLDcgKzg4LDcgQEAKWCAJdSA9IGFz
dF9tb2R1bGVfdXNlcl9hZGQoY2hhbik7ClggClggCS8vIGNhbGwgY291bnQgdGhyZWFkIGZ1bmN0
aW9uClgtCXJlcyA9IGNvdW50X2V4ZWMoIGNoYW4sIGRhdGEgKSA7ClgrCXJlcyA9IGNvdW50X2V4
ZWMoY2hhbiwgKGNvbnN0IGNoYXIgKikgZGF0YSk7ClggClggCWFzdF9tb2R1bGVfdXNlcl9yZW1v
dmUodSk7ClggClhAQCAtMTEyLDcgKzExOCw3IEBAClggewpYIAlpbnQgcmVzID0gMDsKWCAKWC0J
YXN0X2xvZyggTE9HX05PVElDRSwgIkxvYWRpbmcgYXBwX2tvbmZlcmVuY2UgbW9kdWxlLCByZWxl
YXNlPSVzXG4iLCByZWxlYXNlKSA7ClgrCWFzdF9sb2coIExPR19OT1RJQ0UsICJMb2FkaW5nIGFw
cF9rb25mZXJlbmNlIG1vZHVsZSwgcmV2aXNpb249JXNcbiIsIHJldmlzaW9uKSA7ClggClggCWlu
aXRfY29uZmVyZW5jZSgpIDsKWCAKWC0tLSAuL2FwcF9jb25mZXJlbmNlLmgub3JpZwkyMDEwLTA4
LTE3IDE4OjE2OjM1LjAwMDAwMDAwMCArMDAwMApYKysrIC4vYXBwX2NvbmZlcmVuY2UuaAkyMDEw
LTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAgLTk0LDUzICs5NCwyMSBAQApYIC8v
ICNkZWZpbmUgREVCVUdfT1VUUFVUX1BDTQpYIApYIC8vClgtLy8gISEhIFRIRVNFIENPTlNUQU5U
UyBTSE9VTEQgQkUgQ0xFQU5FRCBVUCBBTkQgQ0xBUklGSUVEICEhIQpYKy8vIERlZmluZXMgcmVs
YXRlZCB0byB0aGUgYXVkaW8gZm9ybWF0IGluIHdoaWNoIHRoZSBtaXhpbmcgaGFwcGVucy4KWCsv
LyAoU2lnbmVkLCAxNi1iaXQgbGluZWFyLCA4IGtIeiBvciAxNiBrSHopClggLy8KWC0KWC0vLwpY
LS8vIHNhbXBsZSBpbmZvcm1hdGlvbiBmb3IgQVNUX0ZPUk1BVF9TTElORUFSIGZvcm1hdApYLS8v
ClgtClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLSNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JBVEUg
ODAwMApYKyNpZiBkZWZpbmVkKEFDX1VTRV9HNzIyKSB8fCBkZWZpbmVkKEFDX1VTRV9TUEVFWDE2
KQpYKyNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JBVEUJCTE2MDAwCS8qIEh6ICovClgrI2RlZmlu
ZSBBU1RfQ09ORl9GT1JNQVQJCQlBU1RfRk9STUFUX1NMSU5FQVIxNgpYICNlbHNlClgtI2RlZmlu
ZSBBU1RfQ09ORl9TQU1QTEVfUkFURSAxNjAwMApYKyNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JB
VEUJCTgwMDAJLyogSHogKi8KWCsjZGVmaW5lIEFTVF9DT05GX0ZPUk1BVAkJCUFTVF9GT1JNQVRf
U0xJTkVBUgpYICNlbmRpZgpYLSNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1NJWkUgMTYKWC0jZGVm
aW5lIEFTVF9DT05GX0ZSQU1FX0lOVEVSVkFMIDIwClgtLy9uZWlscyNkZWZpbmUgQVNUX0NPTkZf
RlJBTUVfSU5URVJWQUwgMzAKWC0KWC0vLwpYLS8vIHNvLCBzaW5jZSB3ZSBjeWNsZSBhcHByb3hp
bWF0ZWx5IGV2ZXJ5IDIwbXMsClgtLy8gd2UgY2FuIGNvbXB1dGUgdGhlIGZvbGxvd2luZyB2YWx1
ZXM6ClgtLy8KWC0vLyAxNjAgc2FtcGxlcyBwZXIgMjAgbXMgZnJhbWUgLW9yLQpYLS8vICggODAw
MCBzYW1wbGVzLXBlci1zZWNvbmQgKiAoIDIwIG1zIC8gMTAwMCBtcy1wZXItc2Vjb25kICkgKSA9
IDE2MCBzYW1wbGVzClgtLy8KWC0vLyAzMjAgYnl0ZXMgKCAyNTYwIGJpdHMgKSBvZiBkYXRhICAy
MCBtcyBmcmFtZSAtb3ItClgtLy8gKCAxNjAgc2FtcGxlcyAqIDE2IGJpdHMtcGVyLXNhbXBsZSAv
IDggYml0cy1wZXItYnl0ZSApID0gMzIwIGJ5dGVzClgtLy8KWC0KWC0jaWZuZGVmCUFDX1VTRV9H
NzIyClgtLy8gMTYwIHNhbXBsZXMgMTYtYml0IHNpZ25lZCBsaW5lYXIKWC0jZGVmaW5lIEFTVF9D
T05GX0JMT0NLX1NBTVBMRVMgMTYwClgtI2Vsc2UKWC0jZGVmaW5lIEFTVF9DT05GX0JMT0NLX1NB
TVBMRVMgMzIwClgtI2VuZGlmClgtClgtLy8gMiBieXRlcyBwZXIgc2FtcGxlICggaS5lLiAxNi1i
aXQgKQpYLSNkZWZpbmUgQVNUX0NPTkZfQllURVNfUEVSX1NBTVBMRSAyClgtClgtI2lmbmRlZglB
Q19VU0VfRzcyMgpYLS8vIDMyMCBieXRlcyBmb3IgZWFjaCAxNjAgc2FtcGxlIGZyYW1lIG9mIDE2
LWJpdCBhdWRpbwpYLSNkZWZpbmUgQVNUX0NPTkZfRlJBTUVfREFUQV9TSVpFIDMyMApYLSNlbHNl
ClgtI2RlZmluZSBBU1RfQ09ORl9GUkFNRV9EQVRBX1NJWkUgNjQwClgtI2VuZGlmClgtClgtLy8g
MTAwMCBtcy1wZXItc2Vjb25kIC8gMjAgbXMtcGVyLWZyYW1lID0gNTAgZnJhbWVzLXBlci1zZWNv
bmQKWC0jZGVmaW5lIEFTVF9DT05GX0ZSQU1FU19QRVJfU0VDT05EICggMTAwMCAvIEFTVF9DT05G
X0ZSQU1FX0lOVEVSVkFMICkKWCsjZGVmaW5lIEFTVF9DT05GX0ZSQU1FX0lOVEVSVkFMCQkyMAkv
KiBtcyAqLwpYIApYKyNkZWZpbmUgQVNUX0NPTkZfQkxPQ0tfU0FNUExFUwkJKEFTVF9DT05GX1NB
TVBMRV9SQVRFICogQVNUX0NPTkZfRlJBTUVfSU5URVJWQUwgLyAxMDAwKQpYKyNkZWZpbmUgQVNU
X0NPTkZfRlJBTUVfREFUQV9TSVpFCShBU1RfQ09ORl9CTE9DS19TQU1QTEVTICogMikKWCsjZGVm
aW5lIEFTVF9DT05GX0ZSQU1FU19QRVJfU0VDT05ECSgxMDAwIC8gQVNUX0NPTkZfRlJBTUVfSU5U
RVJWQUwpClggClggLy8KWCAvLyBidWZmZXIgYW5kIHF1ZXVlIHZhbHVlcwpYQEAgLTIyOSwxNSAr
MTk3LDE2IEBAClggCQlBQ19VTEFXX0lOREVYLApYIAkJQUNfQUxBV19JTkRFWCwKWCAJCUFDX0dT
TV9JTkRFWCwKWC0jaWZkZWYJQUNfVVNFX1NQRUVYClggCQlBQ19TUEVFWF9JTkRFWCwKWC0jZW5k
aWYKWCAjaWZkZWYJQUNfVVNFX0c3MjlBClggCQlBQ19HNzI5QV9JTkRFWCwKWCAjZW5kaWYKWCAj
aWZkZWYJQUNfVVNFX0c3MjIKWCAJCUFDX0c3MjJfSU5ERVgsClggI2VuZGlmClgrI2lmZGVmCUFD
X1VTRV9TUEVFWDE2ClgrCQlBQ19TUEVFWDE2X0lOREVYLApYKyNlbmRpZgpYIAkJQUNfU1VQUE9S
VEVEX0ZPUk1BVFMKWCAJCX0gOwpYIApYLS0tIC4vY29tbW9uLmgub3JpZwkyMDA5LTA5LTE3IDE1
OjIxOjU5LjAwMDAwMDAwMCArMDAwMApYKysrIC4vY29tbW9uLmgJMjAxMC0xMS0wMSAxNzowNzo0
NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0zMiwxNiArMzIsMTEgQEAKWCAjZGVmaW5lIF9BUFBfQ09O
Rl9DT01NT05fSApYIApYICNpbmNsdWRlIDxhc3Rlcmlzay90aW1lLmg+ClgrI2luY2x1ZGUgPGFz
dGVyaXNrL3ZlcnNpb24uaD4KWCAKWCAvLyB0eXBlZGVmIGluY2x1ZGVzClggI2luY2x1ZGUgImNv
bmZfZnJhbWUuaCIKWCAKWC0vLyBmdW5jdGlvbiBpbmNsdWRlc2VlClgtLy8jaW5jbHVkZSAibWVt
YmVyLmgiClgtI2luY2x1ZGUgImNvbmZlcmVuY2UuaCIKWC0jaW5jbHVkZSAiZnJhbWUuaCIKWC0j
aW5jbHVkZSAiY2xpLmgiClgtClggLyogVXRpbGl0eSBmdW5jdGlvbnMgKi8KWCAKWCAvKiBMT0cg
dGhlIHRpbWUgdGFrZW4gdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIChsaWtlIGxvY2sgYWNxdWlzaXRp
b24gKi8KWEBAIC02NSw0ICs2MCw0NiBAQApYIApYIGNvbnN0IGNoYXIgKmFyZ3VtZW50X2RlbGlt
aXRlciA7ClggClgrLy8gaGVscGVyIG1hY3JvcyBhbmQgZnVuY3Rpb25zIHRvIG1ha2UgYnVpbGRp
bmcgZm9yIGRpZmZlcmVudCBhc3RlcmlzawpYKy8vIHZlcnNpb25zIGVhc2llcgpYKyNpZiBBU1RF
UklTS19WRVJTSU9OX05VTSA+PSAxMDgwMApYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNTX0lO
VChmKQkoKGYpLT5zdWJjbGFzcy5pbnRlZ2VyKQpYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNT
X0NPREVDKGYpCSgoZiktPnN1YmNsYXNzLmNvZGVjKQpYKyNkZWZpbmUgQVNUX0ZNVF9GT1JNQVRf
VAkJIiVsbHUiClgrClgrc3RhdGljIGlubGluZSBjb25zdCBjaGFyICphc3RfY2hhbm5lbF9jYWxs
ZXJpZF9udW1iZXIoc3RydWN0IGFzdF9jaGFubmVsICpjaGFuKQpYK3sKWCsJcmV0dXJuIFNfQ09S
KGNoYW4tPmNhbGxlci5pZC5udW1iZXIudmFsaWQsClgrCQkgICAgIGNoYW4tPmNhbGxlci5pZC5u
dW1iZXIuc3RyLCAiPHVua25vd24+Iik7ClgrfQpYKwpYK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hh
ciAqYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShzdHJ1Y3QgYXN0X2NoYW5uZWwgKmNoYW4pClgr
ewpYKwlyZXR1cm4gU19DT1IoY2hhbi0+Y2FsbGVyLmlkLm5hbWUudmFsaWQsClgrCQkgICAgIGNo
YW4tPmNhbGxlci5pZC5uYW1lLnN0ciwgIjx1bmtub3duPiIpOwpYK30KWCsjZWxzZQpYK3R5cGVk
ZWYgdW5zaWduZWQgaW50IGZvcm1hdF90OwpYKwpYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNT
X0lOVChmKQkoKGYpLT5zdWJjbGFzcykKWCsjZGVmaW5lIEFTVF9GUkFNRV9TVUJDTEFTU19DT0RF
QyhmKQkoKGYpLT5zdWJjbGFzcykKWCsjZGVmaW5lIEFTVF9GTVRfRk9STUFUX1QJCSIldSIKWCsK
WCtzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmFzdF9jaGFubmVsX2NhbGxlcmlkX251bWJlcihz
dHJ1Y3QgYXN0X2NoYW5uZWwgKmNoYW4pClgrewpYKwlyZXR1cm4gY2hhbi0+Y2lkLmNpZF9udW0g
PyBjaGFuLT5jaWQuY2lkX251bSA6ICJ1bmtub3duIjsKWCt9ClgrClgrc3RhdGljIGlubGluZSBj
b25zdCBjaGFyICphc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKHN0cnVjdCBhc3RfY2hhbm5lbCAq
Y2hhbikKWCt7ClgrCXJldHVybiBjaGFuLT5jaWQuY2lkX25hbWUgPyBjaGFuLT5jaWQuY2lkX25h
bWUgOiAidW5rbm93biI7ClgrfQpYKyNlbmRpZgpYKwpYKy8vIGZ1bmN0aW9uIGluY2x1ZGVzZWUK
WCsvLyNpbmNsdWRlICJtZW1iZXIuaCIKWCsjaW5jbHVkZSAiY29uZmVyZW5jZS5oIgpYKyNpbmNs
dWRlICJmcmFtZS5oIgpYKyNpbmNsdWRlICJjbGkuaCIKWCsKWCAjZW5kaWYKWC0tLSAuL2NvbmZf
ZnJhbWUuaC5vcmlnCTIwMTAtMDgtMTcgMTQ6NTg6MDcuMDAwMDAwMDAwICswMDAwClgrKysgLi9j
b25mX2ZyYW1lLmgJMjAxMC0xMS0wMSAxNzowNzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC01Myw2
ICs1Myw5IEBAClggCS8vIHBvaW50ZXIgdG8gdGhlIGZyYW1lJ3Mgb3duZXIKWCAJc3RydWN0IGFz
dF9jb25mX21lbWJlciogbWVtYmVyIDsgLy8gd2hvIHNlbnQgdGhpcyBmcmFtZQpYIApYKwkvLyBm
cmFtZSBvd25lcidzIHNweSBwYXJ0bmVyClgrCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIHNweV9w
YXJ0bmVyIDsgLy8gc3B5ZXIgKG9yIHNweWVlKSB0byByZWNlaXZlIGZyYW1lClgrClggCS8vIGZy
YW1lIG1ldGEgZGF0YQpYIC8vCXN0cnVjdCB0aW1ldmFsIHRpbWVzdGFtcCA7ClggLy8JdW5zaWdu
ZWQgbG9uZyBjeWNsZWlkIDsKWC0tLSAuL2NvbmZlcmVuY2UuYy5vcmlnCTIwMTAtMDgtMTggMTQ6
NTY6MjMuMDAwMDAwMDAwICswMDAwClgrKysgLi9jb25mZXJlbmNlLmMJMjAxMC0xMS0wMSAxNzow
Nzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0yOSwxNCArMjksMTcgQEAKWCAgKi8KWCAKWCAjaW5j
bHVkZSAiYXN0ZXJpc2svYXV0b2NvbmZpZy5oIgpYKyNpbmNsdWRlICJhc3Rlcmlzay92ZXJzaW9u
LmgiClggI2luY2x1ZGUgImNvbmZlcmVuY2UuaCIKWCAjaW5jbHVkZSAiYXN0ZXJpc2svdXRpbHMu
aCIKWCsjaW5jbHVkZSAiYXN0ZXJpc2svZmlsZS5oIgpYIApYICNpbmNsdWRlICJhc3Rlcmlzay9h
cHAuaCIKWCAjaW5jbHVkZSAiYXN0ZXJpc2svc2F5LmgiClggClggI2luY2x1ZGUgImFzdGVyaXNr
L211c2ljb25ob2xkLmgiClggClgrClggLy8KWCAvLyBzdGF0aWMgdmFyaWFibGVzClggLy8KWEBA
IC02NCw2ICs2Nyw3IEBAClggc3RhdGljIGludCB1cGRhdGVfbWVtYmVyX2Jyb2FkY2FzdGluZyhz
dHJ1Y3QgYXN0X2NvbmZlcmVuY2UgKmNvbmYsIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJl
ciwgc3RydWN0IGNvbmZfZnJhbWUgKmNmciwgc3RydWN0IHRpbWV2YWwgdGltZSk7ClggI2VuZGlm
ClggClgrClggLy8KWCAvLyBtYWluIGNvbmZlcmVuY2UgZnVuY3Rpb24KWCAvLwpYQEAgLTg2LDYg
KzkwLDggQEAKWCAJc3RydWN0IGFzdF9jb25mX21lbWJlciAqZHRtZl9zb3VyY2VfbWVtYmVyOwpY
ICNlbmRpZgpYIAlzdHJ1Y3QgY29uZl9mcmFtZSAqc3Bva2VuX2ZyYW1lcywgKnNlbmRfZnJhbWVz
OwpYKwlzdHJ1Y3QgYXN0X2ZpbGVzdHJlYW0gKnMgPSBOVUxMOwpYKwljb25zdCBjaGFyICpyZWNm
aWxlID0gTlVMTDsKWCAKWCAJLy8gY291bnQgbnVtYmVyIG9mIHNwZWFrZXJzLCBudW1iZXIgb2Yg
bGlzdGVuZXJzClggCWludCBzcGVha2VyX2NvdW50IDsKWEBAIC05NCwxMyArMTAwLDkgQEAKWCAJ
Ly9ERUJVRygiRW50ZXIgY29uZmVyZW5jZV9leGVjXG4iKSA7ClggClggCS8vIHRpbWVyIHRpbWVz
dGFtcHMKWC0jaWZkZWYJVklERU8KWCAJc3RydWN0IHRpbWV2YWwgYmFzZSwgY3Vyciwgbm90aWZ5
IDsKWCAJYmFzZSA9IG5vdGlmeSA9IGFzdF90dm5vdygpOwpYLSNlbHNlClgtCXN0cnVjdCB0aW1l
dmFsIGJhc2UsIGN1cnIgOwpYLQliYXNlID0gYXN0X3R2bm93KCk7ClgtI2VuZGlmClgrClggCS8v
IGhvbGRzIGRpZmZlcmVuY2VzIG9mIGN1cnIgYW5kIGJhc2UKWCAJbG9uZyB0aW1lX2RpZmYgPSAw
IDsKWCAJbG9uZyB0aW1lX3NsZWVwID0gMCA7ClhAQCAtMjg2LDYgKzI4OCwyMSBAQApYIAkJCXNw
ZWFrZXJfY291bnQgPSAwIDsKWCAJCQlsaXN0ZW5lcl9jb3VudCA9IDAgOwpYIApYKwkJCWlmIChj
b25mLT5yZWNmaWxlICE9IHJlY2ZpbGUpClgrCQkJewpYKwkJCQlyZWNmaWxlID0gY29uZi0+cmVj
ZmlsZTsKWCsJCQkJaWYgKHMpClgrCQkJCQlhc3RfY2xvc2VzdHJlYW0ocyk7ClgrCQkJCXMgPSBh
c3Rfd3JpdGVmaWxlKGNvbmYtPnJlY2ZpbGUsIGNvbmYtPnJlY2Zvcm1hdCwgTlVMTCwKWCsJCQkJ
CQkgIE9fQ1JFQVR8T19UUlVOQ3xPX1dST05MWSwgMCwgMDY0NCk7ClgrCQkJCWlmIChzKQpYKwkJ
CQkJYXN0X2xvZyhMT0dfTk9USUNFLCAiUmVjb3JkaW5nIGNvbmZlcmVuY2UgdG8gJXMgaW4gZm9y
bWF0ICVzXG4iLApYKwkJCQkJCWNvbmYtPnJlY2ZpbGUsIGNvbmYtPnJlY2Zvcm1hdCk7ClgrCQkJ
fQpYKwpYKwkJCWlmIChzKQpYKwkJCQlsaXN0ZW5lcl9jb3VudCsrOwpYKwpYIAkJCS8vIGdldCBs
aXN0IG9mIGNvbmZlcmVuY2UgbWVtYmVycwpYIAkJCW1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3Qg
OwpYIApYQEAgLTM0MSw2ICszNTgsMjIgQEAKWCAJCQl7ClggCQkJCW1lbWJlcl9wcm9jZXNzX291
dGdvaW5nX2ZyYW1lcyhjb25mLCBtZW1iZXIsIHNlbmRfZnJhbWVzKTsKWCAJCQl9ClgrClgrCQkJ
aWYgKHMpClgrCQkJewpYKwkJCQljb25mX2ZyYW1lICpmOwpYKwkJCQlpbnQgZm91bmQgPSAwOwpY
KwpYKwkJCQlmb3IgKGYgPSBzZW5kX2ZyYW1lczsgZiAhPSBOVUxMOyBmID0gZi0+bmV4dCkKWCsJ
CQkJewpYKwkJCQkJaWYgKGYtPm1lbWJlciAhPSBOVUxMKQpYKwkJCQkJCWNvbnRpbnVlOwpYKwkJ
CQkJYXN0X3dyaXRlc3RyZWFtKHMsIGYtPmZyKTsKWCsJCQkJCWZvdW5kID0gMTsKWCsJCQkJfQpY
KwkJCQlpZiAoKCFmb3VuZCkgJiYgKGYgPSBnZXRfc2lsZW50X2ZyYW1lKCkpICE9IE5VTEwpClgr
CQkJCQlhc3Rfd3JpdGVzdHJlYW0ocywgZi0+Y29udmVydGVkW0FDX1NMSU5FQVJfSU5ERVhdKTsK
WCsJCQl9ClggI2lmZGVmCVZJREVPClggCQkJLy8tLS0tLS0tLy8KWCAJCQkvLyBWSURFTyAvLwpY
QEAgLTUxNSwxNiArNTQ4LDI2IEBAClggCQkJCXNlbmRfZnJhbWVzID0gZGVsZXRlX2NvbmZfZnJh
bWUoIHNlbmRfZnJhbWVzICkgOwpYIAkJCX0KWCAKWC0jaWZkZWYJVklERU8KWCsJCQkvLwpYKwkJ
CS8vIG5vdGlmeSB0aGUgbWFuYWdlciBvZiBzdGF0ZSBjaGFuZ2VzIGV2ZXJ5IDEwMCBtaWxsaXNl
Y29uZHMKWCsJCQkvLyB3ZSBwaWdneWJhY2sgb24gdGhpcyBmb3IgVkFEIHN3aXRjaGluZyBsb2dp
YwpYKwkJCS8vClgrClggCQkJaWYgKCAoIGFzdF90dmRpZmZfbXMoY3Vyciwgbm90aWZ5KSAvIEFT
VF9DT05GX05PVElGSUNBVElPTl9TTEVFUCApID49IDEgKQpYIAkJCXsKWCsjaWZkZWYJVklERU8K
WCAJCQkJLy8gRG8gVkFEIHN3aXRjaGluZyBsb2dpYwpYKwkJCQkvLyBXZSBuZWVkIHRvIGRvIHRo
aXMgaGVyZSBzaW5jZSBzZW5kX3N0YXRlX2NoYW5nZV9ub3RpZmljYXRpb25zClgrCQkJCS8vIHJl
c2V0cyB0aGUgZmxhZ3MKWCAJCQkJaWYgKCAhY29uZi0+dmlkZW9fbG9ja2VkICkKWCAJCQkJCWRv
X1ZBRF9zd2l0Y2hpbmcoY29uZik7ClgrI2VuZGlmClgrCQkJCS8vIHNlbmQgdGhlIG5vdGlmaWNh
dGlvbnMKWCsJCQkJc2VuZF9zdGF0ZV9jaGFuZ2Vfbm90aWZpY2F0aW9ucyggY29uZi0+bWVtYmVy
bGlzdCApIDsKWCsKWCAJCQkJLy8gaW5jcmVtZW50IHRoZSBub3RpZmljYXRpb24gdGltZXIgYmFz
ZQpYIAkJCQlhZGRfbWlsbGlzZWNvbmRzKCAmbm90aWZ5LCBBU1RfQ09ORl9OT1RJRklDQVRJT05f
U0xFRVAgKSA7ClggCQkJfQpYLSNlbmRpZgpYIApYIAkJCS8vIHJlbGVhc2UgY29uZmVyZW5jZSBs
b2NrClggCQkJYXN0X3J3bG9ja191bmxvY2soICZjb25mLT5sb2NrICkgOwpYQEAgLTU0Niw2ICs1
ODksOSBAQApYIAkvLyBleGl0IHRoZSBjb25mZXJlbmNlIHRocmVhZApYIAkvLwpYIApYKwlpZiAo
cykKWCsJCWFzdF9jbG9zZXN0cmVhbShzKTsKWCsKWCAJREVCVUcoIkV4aXQgY29uZmVyZW5jZV9l
eGVjXG4iKSA7ClggClggCS8vIGV4aXQgdGhlIHRocmVhZApYQEAgLTU3NywzNCArNjIzLDM5IEBA
ClggCWFyZ3VtZW50X2RlbGltaXRlciA9ICggIXN0cmNtcChQQUNLQUdFX1ZFUlNJT04sIjEuNCIp
ID8gInwiIDogIiwiICkgOwpYIH0KWCAKWC1zdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGpvaW5fY29u
ZmVyZW5jZSggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjaGFyKiBjb25mX25hbWUs
IGNoYXIqIG1heF91c2Vyc19mbGFnICkKWCtzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGpvaW5fY29u
ZmVyZW5jZSggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjb25zdCBjaGFyKiByZWNm
aWxlLCBjb25zdCBjaGFyICpyZWNmb3JtYXQgKQpYIHsKWCAJc3RydWN0IGFzdF9jb25mZXJlbmNl
KiBjb25mID0gTlVMTCA7ClggClggCS8vIGFjcXVpcmUgdGhlIGNvbmZlcmVuY2UgbGlzdCBsb2Nr
ClggCWFzdF9tdXRleF9sb2NrKCZjb25mbGlzdF9sb2NrKTsKWCAKWC0KWC0KWCAJLy8gbG9vayBm
b3IgYW4gZXhpc3RpbmcgY29uZmVyZW5jZQpYIAlERUJVRygiYXR0ZW1wdGluZyB0byBmaW5kIHJl
cXVlc3RlZCBjb25mZXJlbmNlXG4iKSA7ClgtCWNvbmYgPSBmaW5kX2NvbmYoIGNvbmZfbmFtZSAp
IDsKWCsJY29uZiA9IGZpbmRfY29uZiggbWVtYmVyLT5jb25mX25hbWUgKSA7ClggClggCS8vIHVu
YWJsZSB0byBmaW5kIGFuIGV4aXN0aW5nIGNvbmZlcmVuY2UsIHRyeSB0byBjcmVhdGUgb25lClgg
CWlmICggY29uZiA9PSBOVUxMICkKWCAJewpYLQkJLy8gY3JlYXRlIGEgbmV3IGNvbmZlcmVuY2UK
WC0JCURFQlVHKCJhdHRlbXB0aW5nIHRvIGNyZWF0ZSByZXF1ZXN0ZWQgY29uZmVyZW5jZVxuIikg
OwpYKwkJaWYgKCBtZW1iZXItPm5vX2NyZWF0ZV9mbGFnICkKWCsJCXsKWCsJCQlERUJVRygiY29u
ZmVyZW5jZSBub3QgZm91bmQsIGFuZCBjcmVhdGUgb2YgbmV3IGNvbmZlcmVuY2Ugbm90IGFsbG93
ZWRcbiIpIDsKWCsJCQlwYnhfYnVpbHRpbl9zZXR2YXJfaGVscGVyKG1lbWJlci0+Y2hhbiwgIktP
TkZFUkVOQ0UiLCAiTk9URk9VTkQiKTsKWCsJCX0KWCsJCWVsc2UKWCsJCXsKWCsJCQkvLyBjcmVh
dGUgYSBuZXcgY29uZmVyZW5jZQpYKwkJCURFQlVHKCJhdHRlbXB0aW5nIHRvIGNyZWF0ZSByZXF1
ZXN0ZWQgY29uZmVyZW5jZVxuIikgOwpYIApYLQkJLy8gY3JlYXRlIHRoZSBuZXcgY29uZmVyZW5j
ZSB3aXRoIG9uZSBtZW1iZXIKWC0JCWNvbmYgPSBjcmVhdGVfY29uZiggY29uZl9uYW1lLCBtZW1i
ZXIgKSA7ClgrCQkJLy8gY3JlYXRlIHRoZSBuZXcgY29uZmVyZW5jZSB3aXRoIG9uZSBtZW1iZXIK
WCsJCQljb25mID0gY3JlYXRlX2NvbmYoIG1lbWJlci0+Y29uZl9uYW1lLCBtZW1iZXIgKSA7Clgg
ClgtCQkvLyByZXR1cm4gYW4gZXJyb3IgaWYgY3JlYXRlX2NvbmYoKSBmYWlsZWQKWC0JCS8vIG90
aGVyd2lzZSBzZXQgdGhlIG1lbWJlcidzIHBvaW50ZXIgdG8gaXRzIGNvbmZlcmVuY2UKWC0JCWlm
ICggY29uZiA9PSBOVUxMICkKWC0JCQlhc3RfbG9nKCBMT0dfRVJST1IsICJ1bmFibGUgdG8gZmlu
ZCBvciBjcmVhdGUgcmVxdWVzdGVkIGNvbmZlcmVuY2VcbiIgKSA7ClgtCQllbHNlClgtCQkJbWVt
YmVyLT5jb25mID0gY29uZiA7ClgrCQkJLy8gcmV0dXJuIGFuIGVycm9yIGlmIGNyZWF0ZV9jb25m
KCkgZmFpbGVkClgrCQkJaWYgKCBjb25mID09IE5VTEwgKSB7ClgrCQkJCWFzdF9sb2coIExPR19F
UlJPUiwgInVuYWJsZSB0byBmaW5kIG9yIGNyZWF0ZSByZXF1ZXN0ZWQgY29uZmVyZW5jZVxuIiAp
IDsKWCsJCQkJcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihtZW1iZXItPmNoYW4sICJLT05GRVJF
TkNFIiwgIk5PUkVTT1VSQ0VTIik7ClgrCQkJfQpYKwkJfQpYIAl9ClggCWVsc2UKWCAJewpYQEAg
LTYxOCwxMSArNjY5LDE2IEBAClggCQkJYWRkX21lbWJlciggbWVtYmVyLCBjb25mICkgOwpYIAkJ
fSBlbHNlIHsKWCAJCQlwYnhfYnVpbHRpbl9zZXR2YXJfaGVscGVyKG1lbWJlci0+Y2hhbiwgIktP
TkZFUkVOQ0UiLCAiTUFYVVNFUlMiKTsKWC0JCQkqbWF4X3VzZXJzX2ZsYWcgPSAxOwpYIAkJCWNv
bmYgPSBOVUxMOwpYIAkJfQpYIAl9ClggClgrCWlmIChjb25mICYmIHJlY2ZpbGUgJiYgIWNvbmYt
PnJlY2ZpbGUpClgrCXsKWCsJCWNvbmYtPnJlY2ZpbGUgPSBzdHJkdXAocmVjZmlsZSk7ClgrCQlj
b25mLT5yZWNmb3JtYXQgPSBzdHJkdXAocmVjZm9ybWF0KTsKWCsJfQpYKwpYIAkvLyByZWxlYXNl
IHRoZSBjb25mZXJlbmNlIGxpc3QgbG9jawpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZjb25mbGlzdF9s
b2NrKTsKWCAKWEBAIC02NjgsNiArNzI0LDggQEAKWCAJLy8gaW5pdGlhbGl6ZSBjb25mZXJlbmNl
ClggCS8vClggClgrCWNvbmYtPnJlY2ZpbGUgPSBOVUxMOwpYKwljb25mLT5yZWNmb3JtYXQgPSBO
VUxMOwpYIAljb25mLT5uZXh0ID0gTlVMTCA7ClggCWNvbmYtPnByZXYgPSBOVUxMIDsKWCAJY29u
Zi0+bWVtYmVybGlzdCA9IE5VTEwgOwpYQEAgLTcwOSwyOSArNzY3LDE4IEBAClggClggCS8vIGJ1
aWxkIHRyYW5zbGF0aW9uIHBhdGhzClggCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU0xJ
TkVBUl9JTkRFWCBdID0gTlVMTCA7ClgtI2lmbmRlZiBBQ19VU0VfRzcyMgpYLQljb25mLT5mcm9t
X3NsaW5lYXJfcGF0aHNbIEFDX1VMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3Bh
dGgoIEFTVF9GT1JNQVRfVUxBVywgQVNUX0ZPUk1BVF9TTElORUFSICkgOwpYLQljb25mLT5mcm9t
X3NsaW5lYXJfcGF0aHNbIEFDX0FMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3Bh
dGgoIEFTVF9GT1JNQVRfQUxBVywgQVNUX0ZPUk1BVF9TTElORUFSICkgOwpYLQljb25mLT5mcm9t
X3NsaW5lYXJfcGF0aHNbIEFDX0dTTV9JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3JfYnVpbGRfcGF0
aCggQVNUX0ZPUk1BVF9HU00sIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jaWZkZWYJQUNfVVNF
X1NQRUVYClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5ERVggXSA9IGFz
dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9GT1JNQVRfU0xJ
TkVBUiApIDsKWC0jZW5kaWYKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19VTEFXX0lO
REVYIF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX1VMQVcsIEFTVF9D
T05GX0ZPUk1BVCApIDsKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19BTEFXX0lOREVY
IF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX0FMQVcsIEFTVF9DT05G
X0ZPUk1BVCApIDsKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HU01fSU5ERVggXSA9
IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfR1NNLCBBU1RfQ09ORl9GT1JN
QVQgKSA7ClgrCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5ERVggXSA9IGFz
dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9DT05GX0ZPUk1B
VCApIDsKWCAjaWZkZWYgQUNfVVNFX0c3MjlBClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sg
QUNfRzcyOUFfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRf
RzcyOUEsIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jZW5kaWYKWC0jZWxzZQpYLQljb25mLT5m
cm9tX3NsaW5lYXJfcGF0aHNbIEFDX1VMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxk
X3BhdGgoIEFTVF9GT1JNQVRfVUxBVywgQVNUX0ZPUk1BVF9TTElORUFSMTYgKSA7ClgtCWNvbmYt
PmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfQUxBV19JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3JfYnVp
bGRfcGF0aCggQVNUX0ZPUk1BVF9BTEFXLCBBU1RfRk9STUFUX1NMSU5FQVIxNiApIDsKWC0JY29u
Zi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HU01fSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1
aWxkX3BhdGgoIEFTVF9GT1JNQVRfR1NNLCBBU1RfRk9STUFUX1NMSU5FQVIxNiApIDsKWC0jaWZk
ZWYJQUNfVVNFX1NQRUVYClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5E
RVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9G
T1JNQVRfU0xJTkVBUjE2ICkgOwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyOUEKWC0JY29u
Zi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HNzI5QV9JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3Jf
YnVpbGRfcGF0aCggQVNUX0ZPUk1BVF9HNzI5QSwgQVNUX0ZPUk1BVF9TTElORUFSMTYgKSA7Clgr
CWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfRzcyOUFfSU5ERVggXSA9IGFzdF90cmFuc2xh
dG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfRzcyOUEsIEFTVF9DT05GX0ZPUk1BVCApIDsKWCAj
ZW5kaWYKWCAjaWZkZWYgQUNfVVNFX0c3MjIKWC0JY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBB
Q19HNzIyX0lOREVYIF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX0c3
MjIsIEFTVF9GT1JNQVRfU0xJTkVBUjE2ICkgOwpYKwljb25mLT5mcm9tX3NsaW5lYXJfcGF0aHNb
IEFDX0c3MjJfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRf
RzcyMiwgQVNUX0NPTkZfRk9STUFUKSA7ClggI2VuZGlmClgrI2lmZGVmIEFDX1VTRV9TUEVFWDE2
ClgrCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVgxNl9JTkRFWCBdID0gYXN0X3Ry
YW5zbGF0b3JfYnVpbGRfcGF0aCggQVNUX0ZPUk1BVF9TUEVFWDE2LCBBU1RfQ09ORl9GT1JNQVQp
IDsKWCAjZW5kaWYKWCAKWCAJLy8KWEBAIC04NTMsNiArOTAwLDEyIEBAClggClggCWlmICggY29u
ZiA9PSBjb25mbGlzdCApClggCQljb25mbGlzdCA9IGNvbmZfdGVtcCA7ClgrCQkKWCsKWCsJaWYg
KGNvbmYtPnJlY2ZpbGUpClgrCQlmcmVlKGNvbmYtPnJlY2ZpbGUpOwpYKwlpZiAoY29uZi0+cmVj
Zm9ybWF0KQpYKwkJZnJlZShjb25mLT5yZWNmb3JtYXQpOwpYIApYIAlmcmVlKCBjb25mICkgOwpY
IApYQEAgLTk1Nyw2ICsxMDEwLDMzIEBAClggCS8vIHVwZGF0ZSBjb25mZXJlbmNlIHN0YXRzClgg
CWNvbmYtPm1lbWJlcmNvdW50Kys7ClggClgrCWlmICggbWVtYmVyLT53YWl0X2Zvcl9tb2RlcmF0
b3JfZmxhZyA9PSAxICkKWCsJewpYKwkJaWYgKCAhbWVtYmVyLT5pc21vZGVyYXRvciAmJiBjb25m
LT5zdGF0cy5tb2RlcmF0b3JzID09IDAgKQpYKwkJewpYKwkJCS8vIG5vIG1vZGVyYXRvciBpbiB0
aGUgY29uZmVyZW5jZSB5ZXQgLSBzdGFydCBtdXNpYyBvbiBob2xkClgrCQkJYXN0X2xvZyggTE9H
X05PVElDRSwgIm5vIG1vZGVyYXRvciBpbiB0aGUgY29uZmVyZW5jZSB5ZXQgLSBzdGFydCBtdXNp
YyBvbiBob2xkXG4iICkgOwpYKwkJCWFzdF9tdXRleF9sb2NrKCAmbWVtYmVyLT5sb2NrICkgOwpY
KwkJCW1lbWJlci0+bW9oX2ZsYWcgPSAxIDsKWCsJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVy
LT5sb2NrICkgOwpYKwkJfQpYKwkJZWxzZSBpZiAoIG1lbWJlci0+aXNtb2RlcmF0b3IgJiYgY29u
Zi0+bWVtYmVyY291bnQgPiAxICkKWCsJCXsKWCsJCQkvLyBtb2RlcmF0b3Igam9pbmluZyAtIHN0
b3AgbXVzaWMgb24gaG9sZApYKwkJCWFzdF9sb2coIExPR19OT1RJQ0UsICJtb2RlcmF0b3Igam9p
bmluZyAtIHN0b3AgbXVzaWMgb24gaG9sZFxuIiApOwpYKwkJCXN0cnVjdCBhc3RfY29uZl9tZW1i
ZXIgKmN1cnJtZW1iZXI7ClgrCQkJZm9yICggY3Vycm1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3Qg
OyBjdXJybWVtYmVyICE9IE5VTEwgOyBjdXJybWVtYmVyID0gY3Vycm1lbWJlci0+bmV4dCApClgr
CQkJewpYKwkJCQlhc3RfbG9nKCBMT0dfTk9USUNFLCAic3RvcCBNT0ggZm9yIGNoYW5uZWw6ICVz
XG4iLCBjdXJybWVtYmVyLT5jaGFuLT5uYW1lICk7ClgrCQkJCWFzdF9tdXRleF9sb2NrKCAmY3Vy
cm1lbWJlci0+bG9jayApIDsKWCsJCQkJY3Vycm1lbWJlci0+bW9oX2ZsYWcgPSAwIDsKWCsJCQkJ
Y3Vycm1lbWJlci0+cmVhZHlfZm9yX291dGdvaW5nID0gMTsKWCsJCQkJYXN0X21vaF9zdG9wKGN1
cnJtZW1iZXItPmNoYW4pOwpYKwkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmY3Vycm1lbWJlci0+bG9j
ayApIDsKWCsJCQl9ClgrCQl9ClgrCX0KWCsKWCAJaWYgKCBtZW1iZXItPmhvbGRfZmxhZyA9PSAx
ICkKWCAJewpYIAkJaWYgICggY29uZi0+bWVtYmVyY291bnQgPT0gMSApClhAQCAtOTcwLDcgKzEw
NTAsNyBAQApYIAkJCWFzdF9tdXRleF9sb2NrKCAmY29uZi0+bWVtYmVybGlzdC0+bG9jayApIDsK
WCAJCQljb25mLT5tZW1iZXJsaXN0LT5tb2hfZmxhZyA9IDAgOwpYIAkJCWNvbmYtPm1lbWJlcmxp
c3QtPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDE7ClgtCQkJY29uZi0+bWVtYmVybGlzdC0+bW9oX3N0
b3AgPSAxOwpYKwkJCWFzdF9tb2hfc3RvcChjb25mLT5tZW1iZXJsaXN0LT5jaGFuKTsKWCAJCQlh
c3RfbXV0ZXhfdW5sb2NrKCAmY29uZi0+bWVtYmVybGlzdC0+bG9jayApIDsKWCAJCX0KWCAJfQpY
QEAgLTEwNjEsNyArMTE0MSw3IEBAClggCXJldHVybiA7ClggfQpYIApYLXZvaWQgcmVtb3ZlX21l
bWJlciggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBzdHJ1Y3QgYXN0X2NvbmZlcmVu
Y2UqIGNvbmYsIGNoYXIqIGNvbmZfbmFtZSApClgrdm9pZCByZW1vdmVfbWVtYmVyKCBzdHJ1Y3Qg
YXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIHN0cnVjdCBhc3RfY29uZmVyZW5jZSogY29uZiApClgg
ewpYIAlpbnQgbWVtYmVyY291bnQgOwpYIAlzaG9ydCBtb2RlcmF0b3JzIDsKWEBAIC0xMDg4LDcg
KzExNjgsNyBAQApYIApYIAlhc3Rfcndsb2NrX3dybG9jayggJmNvbmYtPmxvY2sgKTsKWCAKWC0J
aWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYmIG1lbWJlci0+a2lja19jb25mZXJlZXMgJiYgY29u
Zi0+c3RhdHMubW9kZXJhdG9ycyA9PSAxICkKWCsJaWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYm
IG1lbWJlci0+a2lja19jb25mZXJlZXMgKQpYIAkJY29uZi0+a2lja19mbGFnID0gMSA7ClggClgg
I2lmZGVmCVZJREVPClhAQCAtMTEzOSw3ICsxMjE5LDcgQEAKWCAJCQkJLy8gbG9nIHNvbWUgYWNj
b3VudGluZyBpbmZvcm1hdGlvbgpYIAkJCQkvLwpYIApYLQkJCQlERUJVRygibWVtYmVyIGFjY291
bnRpbmcsIGNoYW5uZWwgPT4gJXMsIHRlID0+ICVsZCwgZmkgPT4gJWxkLCBmaWQgPT4gJWxkLCBm
byA9PiAlbGQsIGZvZCA9PiAlbGQsIHR0ID0+ICVsZFxuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBt
ZW1iZXItPnRpbWVfZW50ZXJlZC50dl9zZWMsIG1lbWJlci0+ZnJhbWVzX2luLCBtZW1iZXItPmZy
YW1lc19pbl9kcm9wcGVkLCBtZW1iZXItPmZyYW1lc19vdXQsIG1lbWJlci0+ZnJhbWVzX291dF9k
cm9wcGVkLCB0dCkgOwpYKwkJCQlERUJVRygibWVtYmVyIGFjY291bnRpbmcsIGNoYW5uZWwgPT4g
JXMsIHRlID0+ICVsZCwgZmkgPT4gJWxkLCBmaWQgPT4gJWxkLCBmbyA9PiAlbGQsIGZvZCA9PiAl
bGQsIHR0ID0+ICVsZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+dGltZV9lbnRl
cmVkLnR2X3NlYywgbWVtYmVyLT5mcmFtZXNfaW4sIG1lbWJlci0+ZnJhbWVzX2luX2Ryb3BwZWQs
IG1lbWJlci0+ZnJhbWVzX291dCwgbWVtYmVyLT5mcmFtZXNfb3V0X2Ryb3BwZWQsIHR0KSA7Clgg
CQkJfQpYICNlbmRpZgpYIAkJCS8vClhAQCAtMTE3MSw2ICsxMjUxLDIwIEBAClggClggCQkJLy8g
dXBkYXRlIG1vZGVyYXRvciBjb3VudApYIAkJCW1vZGVyYXRvcnMgPSAoIW1lbWJlci0+aXNtb2Rl
cmF0b3IgPyBjb25mLT5zdGF0cy5tb2RlcmF0b3JzIDogLS1jb25mLT5zdGF0cy5tb2RlcmF0b3Jz
ICk7ClgrClgrCQkJaWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYmIG1lbWJlci0+d2FpdF9mb3Jf
bW9kZXJhdG9yX2ZsYWcgPT0gMSAmJiBtb2RlcmF0b3JzID09IDAgJiYgbWVtYmVyY291bnQgPiAw
ICkKWCsJCQl7ClgrCQkJCWFzdF9sb2coIExPR19OT1RJQ0UsICJNb2RlcmF0b3IgbGVmdCAtIHBs
YXlpbmcgTU9IIHVudGlsIGhlIHJldHVybnNcbiIpOwpYKwkJCQlzdHJ1Y3QgYXN0X2NvbmZfbWVt
YmVyICpjdXJybWVtYmVyOwpYKwkJCQlmb3IgKCBjdXJybWVtYmVyID0gY29uZi0+bWVtYmVybGlz
dCA7IGN1cnJtZW1iZXIgIT0gTlVMTCA7IGN1cnJtZW1iZXIgPSBjdXJybWVtYmVyLT5uZXh0ICkK
WCsJCQkJewpYKwkJCQkJYXN0X2xvZyggTE9HX05PVElDRSwgInN0YXJ0IE1PSCBmb3IgY2hhbm5l
bDogJXNcbiIsIGN1cnJtZW1iZXItPmNoYW4tPm5hbWUgKTsKWCsJCQkJCWFzdF9tdXRleF9sb2Nr
KCAmY3Vycm1lbWJlci0+bG9jayApIDsKWCsJCQkJCWN1cnJtZW1iZXItPm1vaF9mbGFnID0gMTsK
WCsJCQkJCWN1cnJtZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDE7ClgrCQkJCQlhc3RfbXV0
ZXhfdW5sb2NrKCAmY3Vycm1lbWJlci0+bG9jayApIDsKWCsJCQkJfQpYKwkJCX0KWCAjaWZkZWYJ
VklERU8KWCAJCQkvLyBDaGVjayBpZiBtZW1iZXIgaXMgdGhlIGRlZmF1bHQgb3IgY3VycmVudCB2
aWRlbyBzb3VyY2UKWCAJCQlpZiAoIGNvbmYtPmN1cnJlbnRfdmlkZW9fc291cmNlX2lkID09IG1l
bWJlci0+aWQgKQpYQEAgLTExOTMsNyArMTI4Nyw3IEBAClggCQkJCQkiQ29uZmVyZW5jZVZpZGVv
QnJvYWRjYXN0T2ZmIiwKWCAJCQkJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNc
clxuIiwKWCAJCQkJCWNvbmYtPm5hbWUsClgtCQkJCQltZW1iZXItPmNoYW4tPm5hbWUKWCsJCQkJ
CW1lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJCQkpOwpYIAkJCX0KWCAKWEBAIC0xMjM5LDE0ICsx
MzMzLDE0IEBAClggCQkiRHVyYXRpb246ICVsZFxyXG4iClggCQkiTW9kZXJhdG9yczogJWRcclxu
IgpYIAkJIkNvdW50OiAlZFxyXG4iLApYLQkJY29uZl9uYW1lLApYKwkJbWVtYmVyLT5jb25mX25h
bWUsClggCQltZW1iZXItPnR5cGUsClgtCQltZW1iZXItPmNoYW4tPnVuaXF1ZWlkLApYKwkJbWVt
YmVyLT51bmlxdWVpZCwKWCAJCW1lbWJlci0+aWQsClggCQltZW1iZXItPmZsYWdzLApYLQkJbWVt
YmVyLT5jaGFuLT5uYW1lLApYLQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX251bSA/IG1lbWJlci0+
Y2hhbi0+Y2lkLmNpZF9udW0gOiAidW5rbm93biIsClgtCQltZW1iZXItPmNoYW4tPmNpZC5jaWRf
bmFtZSA/IG1lbWJlci0+Y2hhbi0+Y2lkLmNpZF9uYW1lOiAidW5rbm93biIsClgrCQltZW1iZXIt
PmNoYW5uZWxfbmFtZSwKWCsJCWFzdF9jaGFubmVsX2NhbGxlcmlkX251bWJlcihtZW1iZXItPmNo
YW4pLApYKwkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShtZW1iZXItPmNoYW4pLApYIAkJdHQs
ClggCQltb2RlcmF0b3JzLApYIAkJbWVtYmVyY291bnQKWEBAIC0xMjc2LDcgKzEzNzAsNyBAQApY
IAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJ
ewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgbmFtZSAp
ID09IDAgKQpYKwkJaWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSks
IG5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkJLy8gbG9jayBjb25mZXJlbmNlClggCQkJLy8g
YXN0X211dGV4X2xvY2soICYoY29uZi0+bG9jaykgKSA7ClhAQCAtMTMxMiw5ICsxNDA2LDYgQEAK
WCAKWCBpbnQgc2hvd19jb25mZXJlbmNlX3N0YXRzICggaW50IGZkICkKWCB7ClgtCWludCBkdXJh
dGlvbjsKWC0JY2hhciBkdXJhdGlvbl9zdHJbMTBdOwpYLQpYICAgICAgICAgLy8gbm8gY29uZmVy
ZW5jZXMgZXhpc3QKWCAJaWYgKCBjb25mbGlzdCA9PSBOVUxMICkKWCAJewpYQEAgLTEzMjcsMTQg
KzE0MTgsMTQgQEAKWCAKWCAJc3RydWN0IGFzdF9jb25mZXJlbmNlICpjb25mID0gY29uZmxpc3Qg
OwpYIApYLQlhc3RfY2xpKCBmZCwgIiUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBz
XG4iLCAiTmFtZSIsICJNZW1iZXJzIiwgIlZvbHVtZSIsICJEdXJhdGlvbiIgKSA7ClgrCWFzdF9j
bGkoIGZkLCAiJS0yMC4yMHMgJS0yMC4yMHMgJS0yMC4yMHMgJS0yMC4yMHNcbiIsICJOYW1lIiwg
Ik1lbWJlcnMiLCAiVm9sdW1lIiwgIkJ1Y2tldCIgKSA7ClggClggCS8vIGxvb3AgdGhyb3VnaCBj
b25mIGxpc3QKWCAJd2hpbGUgKCBjb25mICE9IE5VTEwgKQpYIAl7ClgtCQlkdXJhdGlvbiA9IChp
bnQpKGFzdF90dmRpZmZfbXMoYXN0X3R2bm93KCksY29uZi0+c3RhdHMudGltZV9lbnRlcmVkKSAv
IDEwMDApOwpYLQkJc25wcmludGYoZHVyYXRpb25fc3RyLCAxMCwgIiUwMmQ6JTAyZDolMDJkIiwg
IGR1cmF0aW9uIC8gMzYwMCwgKGR1cmF0aW9uICUgMzYwMCkgLyA2MCwgZHVyYXRpb24gJSA2MCk7
ClgtCQlhc3RfY2xpKCBmZCwgIiUtMjAuMjBzICUtMjBkICUtMjBkICUtMjAuMjBzXG4iLCBjb25m
LT5uYW1lLCBjb25mLT5tZW1iZXJjb3VudCwgY29uZi0+dm9sdW1lLCBkdXJhdGlvbl9zdHIgKSA7
ClgrCQlhc3RfY2xpKGZkLCAiJS0yMC4yMHMgJS0yMGQgJS0yMGQgJS0yMGRcbiIsClgrCQkJY29u
Zi0+bmFtZSwgY29uZi0+bWVtYmVyY291bnQsIGNvbmYtPnZvbHVtZSwKWCsJCQkoaW50KShjb25m
LT5idWNrZXQgLSBjb25mZXJlbmNlX3RhYmxlKSApIDsKWCAJCWNvbmYgPSBjb25mLT5uZXh0IDsK
WCAJfQpYIApYQEAgLTEzNDksOCArMTQ0MCw2IEBAClggCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIg
Km1lbWJlcjsKWCAJY2hhciB2b2x1bWVfc3RyWzEwXTsKWCAJY2hhciBzcHlfc3RyWzEwXTsKWC0J
aW50IGR1cmF0aW9uOwpYLQljaGFyIGR1cmF0aW9uX3N0clsxMF07ClggClggICAgICAgICAvLyBu
byBjb25mZXJlbmNlcyBleGlzdApYIAlpZiAoIGNvbmZsaXN0ID09IE5VTEwgKQpYQEAgLTEzNjcs
MTYgKzE0NTYsMTYgQEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNv
bmYgIT0gTlVMTCApClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29u
Zi0+bmFtZSksIG5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAoIChjb25zdCBjaGFy
KikmKGNvbmYtPm5hbWUpLCBuYW1lLCA4MCApID09IDAgKQpYIAkJewpYIAkJCS8vIGFjcXVpcmUg
Y29uZmVyZW5jZSBsb2NrClggCQkJYXN0X3J3bG9ja19yZGxvY2soJmNvbmYtPmxvY2spOwpYIApY
IAkJCS8vIGFzdF9jbGkoZmQsICJDaGF0IG1vZGUgaXMgJXNcbiIsIGNvbmYtPmNoYXRfbW9kZV9v
biA/ICJPTiIgOiAiT0ZGIik7ClggI2lmZGVmCVZJREVPClgtCQkJYXN0X2NsaSggZmQsICIlLTIw
LjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIw
cyAlLTgwLjIwc1xuIiwgIlVzZXIgIyIsICJGbGFncyIsICJBdWRpbyIsICJWb2x1bWUiLCAiRHJp
dmVyICMiLCAiRHVyYXRpb24iLCAiU3B5IiwgIkNoYW5uZWwiKTsKWCsJCQlhc3RfY2xpKCBmZCwg
IiUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUt
MjAuMjBzXG4iLCAiVXNlciAjIiwgIkNhbGxlcklETmFtZSIsICJDYWxsZXJJRCIsICJBdWRpbyIs
ICJVbmlxdWVJRCIsICJDb25mZXJlbmNlIE5hbWUiLCAiQ2hhbm5lbCIpOwpYICNlbHNlClgtCQkJ
YXN0X2NsaSggZmQsICIlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIw
cyAlLTIwLjIwcyAlLTgwLjIwc1xuIiwgIlVzZXIgIyIsICJGbGFncyIsICJBdWRpbyIsICJWb2x1
bWUiLCAiRHVyYXRpb24iLCAiU3B5IiwgIkNoYW5uZWwiKTsKWCsJCQlhc3RfY2xpKCBmZCwgIiUt
MjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAu
MjBzXG4iLCAiVXNlciAjIiwgIkNhbGxlcklETmFtZSIsICJDYWxsZXJJRCIsICJBdWRpbyIsICJV
bmlxdWVJRCIsICJDb25mZXJlbmNlIE5hbWUiLCAiQ2hhbm5lbCIpOwpYICNlbmRpZgpYIAkJCS8v
IGRvIHRoZSBiaXoKWCAJCQltZW1iZXIgPSBjb25mLT5tZW1iZXJsaXN0IDsKWEBAIC0xMzg3LDIw
ICsxNDc2LDM0IEBAClggCQkJCQlzbnByaW50ZihzcHlfc3RyLCAxMCwgIiVkIiwgbWVtYmVyLT5z
cHlfcGFydG5lci0+aWQpOwpYIAkJCQllbHNlClggCQkJCQlzdHJjcHkoc3B5X3N0ciAsICIqIik7
ClgtCQkJCWR1cmF0aW9uID0gKGludCkoYXN0X3R2ZGlmZl9tcyhhc3RfdHZub3coKSxtZW1iZXIt
PnRpbWVfZW50ZXJlZCkgLyAxMDAwKTsKWC0JCQkJc25wcmludGYoZHVyYXRpb25fc3RyLCAxMCwg
IiUwMmQ6JTAyZDolMDJkIiwgIGR1cmF0aW9uIC8gMzYwMCwgKGR1cmF0aW9uICUgMzYwMCkgLyA2
MCwgZHVyYXRpb24gJSA2MCk7ClggI2lmZGVmCVZJREVPClggCQkJCWlmICggbWVtYmVyLT5kcml2
ZW5fbWVtYmVyID09IE5VTEwgKQpYIAkJCQl7ClgtCQkJCQlhc3RfY2xpKCBmZCwgIiUtMjBkICUt
MjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtODBz
XG4iLApYLQkJCQkJbWVtYmVyLT5pZCwgbWVtYmVyLT5mbGFncywgKG1lbWJlci0+bXV0ZV9hdWRp
byA9PSAwID8gIlVubXV0ZWQiIDogIk11dGVkIiksIHZvbHVtZV9zdHIsICIqIiwgZHVyYXRpb25f
c3RyLCBzcHlfc3RyLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJYXN0X2NsaSggZmQsICJN
ZW1iZXJJZDogJS0yMGQgQ0lETmFtZTogJS0yMC4yMHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0y
MC4yMHMgVW5pcXVlSUQ6ICUtMjAuMjBzIENvbmZOYW1lOiAlLTIwLjIwcyBDaGFubmVsOiAlLTgw
c1xuIiwKWCsJCQkJCQltZW1iZXItPmlkLApYKwkJCQkJCWFzdF9jaGFubmVsX2NhbGxlcmlkX25h
bWUobWVtYmVyLT5jaGFuKSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVt
YmVyLT5jaGFuKSwKWCsJCQkJCQkobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAgPyAiRmFsc2UiIDog
IlRydWUiKSwKWCsJCQkJCQltZW1iZXItPnVuaXF1ZWlkLCBtZW1iZXItPmNvbmZfbmFtZSwgbWVt
YmVyLT5jaGFubmVsX25hbWUpOwpYIAkJCQl9IGVsc2UgewpYLQkJCQkJYXN0X2NsaSggZmQsICIl
LTIwZCAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwZCAgJS0yMC4yMHMgJS0yMC4yMHMg
JS04MHNcbiIsIG1lbWJlci0+aWQsIG1lbWJlci0+ZmxhZ3MsClgtCQkJCQkobWVtYmVyLT5tdXRl
X2F1ZGlvID09IDAgPyAiVW5tdXRlZCIgOiAiTXV0ZWQiKSwgdm9sdW1lX3N0ciwgbWVtYmVyLT5k
cml2ZW5fbWVtYmVyLT5pZCwgZHVyYXRpb25fc3RyLCBzcHlfc3RyLCBtZW1iZXItPmNoYW4tPm5h
bWUpOwpYKwkJCQkJYXN0X2NsaSggZmQsICJNZW1iZXJJZDogJS0yMGQgQ0lETmFtZTogJS0yMC4y
MHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0yMC4yMHMgVW5pcXVlSUQ6ICUtMjAuMjBzIENvbmZO
YW1lOiAlLTIwLjIwcyBTcGVha2luZzogJXMgQ2hhbm5lbDogJS04MHNcbiIsClgrCQkJCQkJbWVt
YmVyLT5pZCwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hhbiks
ClgrCQkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJlci0+Y2hhbiksClgrCQkJ
CQkJKG1lbWJlci0+bXV0ZV9hdWRpbyA9PSAwID8gIkZhbHNlIiA6ICJUcnVlIiksClgrCQkJCQkJ
bWVtYmVyLT51bmlxdWVpZCwgbWVtYmVyLT5jb25mX25hbWUsClgrCQkJCQkJKCggbWVtYmVyLT5z
cGVha2luZ19zdGF0ZSA9PSAxICkgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCsJCQkJCQltZW1iZXIt
PmNoYW5uZWxfbmFtZSk7ClggCQkJCX0KWCAjZWxzZQpYLQkJCQlhc3RfY2xpKCBmZCwgIiUtMjBk
ICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtODBzXG4iLApY
LQkJCQltZW1iZXItPmlkLCBtZW1iZXItPmZsYWdzLCAobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAg
PyAiVW5tdXRlZCIgOiAiTXV0ZWQiKSwgdm9sdW1lX3N0ciwgZHVyYXRpb25fc3RyICwgc3B5X3N0
ciwgbWVtYmVyLT5jaGFuLT5uYW1lKTsKWCsJCQkJYXN0X2NsaSggZmQsICJNZW1iZXJJZDogJS0y
MGQgQ0lETmFtZTogJS0yMC4yMHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0yMC4yMHMgVW5pcXVl
SUQ6ICUtMjAuMjBzIENvbmZOYW1lOiAlLTIwLjIwcyBTcGVha2luZzogJXMgQ2hhbm5lbDogJS04
MHNcbiIsClgrCQkJCQltZW1iZXItPmlkLApYKwkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFt
ZShtZW1iZXItPmNoYW4pLApYKwkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJl
ci0+Y2hhbiksClgrCQkJCQkobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAgPyAiRmFsc2UiIDogIlRy
dWUiKSwKWCsJCQkJCW1lbWJlci0+dW5pcXVlaWQsIG1lbWJlci0+Y29uZl9uYW1lLApYKwkJCQkJ
KCggbWVtYmVyLT5zcGVha2luZ19zdGF0ZSA9PSAxICkgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCsJ
CQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAjZW5kaWYKWCAJCQkJbWVtYmVyID0gbWVtYmVy
LT5uZXh0OwpYIAkJCX0KWEBAIC0xNDQ2LDcgKzE1NDksNyBAQApYIAkvLyBsb29wIHRocm91Z2gg
Y29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNl
Y21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgY29uZmZpbHRlciApID09IDAgKQpYKwkJ
aWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZmaWx0ZXIs
IDgwICkgPT0gMCApClggCQl7ClggCQkJLy8gZG8gdGhlIGJpegpYIAkJCW1lbWJlciA9IGNvbmYt
Pm1lbWJlcmxpc3QgOwpYQEAgLTE0NjgsOSArMTU3MSw5IEBAClggCQkJCQkJIlxyXG4iLApYIAkJ
CQkJCWNvbmYtPm5hbWUsClggCQkJCQkJbWVtYmVyLT5pZCwKWC0JCQkJCQltZW1iZXItPmNoYW4t
Pm5hbWUsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX251bSA/IG1lbWJlci0+Y2hhbi0+
Y2lkLmNpZF9udW0gOiAidW5rbm93biIsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX25h
bWUgPyBtZW1iZXItPmNoYW4tPmNpZC5jaWRfbmFtZSA6ICJ1bmtub3duIiwKWCsJCQkJCQltZW1i
ZXItPmNoYW5uZWxfbmFtZSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVt
YmVyLT5jaGFuKSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hh
biksClggCQkJCQkJbWVtYmVyLT5tdXRlX2F1ZGlvID8gIllFUyIgOiAiTk8iLApYICNpZmRlZglW
SURFTwpYIAkJCQkJCW1lbWJlci0+bXV0ZV92aWRlbyA/ICJZRVMiIDogIk5PIiwKWEBAIC0xNTQ0
LDcgKzE2NDcsNyBAQApYIAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29u
ZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hhciopJihjb25m
LT5uYW1lKSwgY29uZm5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAoIChjb25zdCBj
aGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSwgODAgKSA9PSAwICkKWCAJCXsKWCAJCSAgICAg
ICAgLy8gZG8gdGhlIGJpegpYIAkJCWFzdF9yd2xvY2tfcmRsb2NrKCAmY29uZi0+bG9jayApIDsK
WEBAIC0xNjM3LDcgKzE3NDAsNyBAQApYIAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdo
aWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hh
ciopJihjb25mLT5uYW1lKSwgY29uZm5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAo
IChjb25zdCBjaGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSwgODAgKSA9PSAwICkKWCAJCXsK
WCAJCSAgICAgICAgLy8gZG8gdGhlIGJpegpYIAkJCWFzdF9yd2xvY2tfcmRsb2NrKCAmY29uZi0+
bG9jayApIDsKWEBAIC0xNjQ3LDEzICsxNzUwLDE3IEBAClggCQkJICAgIGlmIChtZW1iZXItPmlk
ID09IHVzZXJfaWQpClggCQkJICAgICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jayggJm1l
bWJlci0+bG9jayApIDsKWC0JCQkJICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCsJCQkJ
ICAgICAgbWVtYmVyLT5tdXRlZCA9IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7ClggCQkJCSAgICAg
IGFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClggCQkJCQltYW5hZ2VyX2V2ZW50
KApYIAkJCQkJCUVWRU5UX0ZMQUdfQ0FMTCwKWCAJCQkJCQkiQ29uZmVyZW5jZU1lbWJlck11dGUi
LApYKwkJCQkJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJCQkJCSJNZW1iZXJJZDogJWRc
clxuIgpYIAkJCQkJCSJDaGFubmVsOiAlc1xyXG4iLApYLQkJCQkJCW1lbWJlci0+Y2hhbi0+bmFt
ZQpYKyAgICAgICAgICAgICAgICAJCQkJbWVtYmVyLT5jb25mX25hbWUsClgrICAgICAgICAgICAg
ICAgIAkJCQltZW1iZXItPmlkLApYKwkJCQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJCQkp
IDsKWCAJCQkJICAgICAgcmVzID0gMTsKWCAJCQkgICAgICB9ClhAQCAtMTY5Miw3ICsxNzk5LDcg
QEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNvbmYgIT0gTlVMTCAp
ClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNv
bmZuYW1lICkgPT0gMCApClgrCQlpZiAoIHN0cm5jYXNlY21wKCAoY29uc3QgY2hhciopJihjb25m
LT5uYW1lKSwgY29uZm5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkgICAgICAgIC8vIGRvIHRo
ZSBiaXoKWCAJCQlhc3Rfcndsb2NrX3JkbG9jayggJmNvbmYtPmxvY2sgKSA7ClhAQCAtMTcwMiw3
ICsxODA5LDcgQEAKWCAJCQkgICAgaWYgKCAhbWVtYmVyLT5pc21vZGVyYXRvciApClggCQkJICAg
ICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jayggJm1lbWJlci0+bG9jayApIDsKWC0JCQkJ
ICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCsJCQkJICAgICAgbWVtYmVyLT5tdXRlZCA9
IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7ClggCQkJCSAgICAgIGFzdF9tdXRleF91bmxvY2soICZt
ZW1iZXItPmxvY2sgKSA7ClggCQkJCSAgICAgIHJlcyA9IDE7ClggCQkJICAgICAgfQpYQEAgLTE3
NDgsNyArMTg1NSw3IEBAClggCS8vIGxvb3AgdGhyb3VnaCBjb25mIGxpc3QKWCAJd2hpbGUgKCBj
b25mICE9IE5VTEwgKQpYIAl7ClgtCQlpZiAoIHN0cmNhc2VjbXAoIChjb25zdCBjaGFyKikmKGNv
bmYtPm5hbWUpLCBjb25mbmFtZSApID09IDAgKQpYKwkJaWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0
IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lLCA4MCApID09IDAgKQpYIAkJewpYIAkJICAg
ICAgICAvLyBkbyB0aGUgYml6ClggCQkJYXN0X3J3bG9ja19yZGxvY2soICZjb25mLT5sb2NrICkg
OwpYQEAgLTE3NTgsMTMgKzE4NjUsMTcgQEAKWCAJCQkgICAgaWYgKG1lbWJlci0+aWQgPT0gdXNl
cl9pZCkKWCAJCQkgICAgICB7ClggCQkJCSAgICAgIGFzdF9tdXRleF9sb2NrKCAmbWVtYmVyLT5s
b2NrICkgOwpYLQkJCQkgICAgICBtZW1iZXItPm11dGVfYXVkaW8gPSAwOwpYKwkJCQkgICAgICBt
ZW1iZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCAJCQkJICAgICAgYXN0X211
dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApIDsKWCAJCQkJCW1hbmFnZXJfZXZlbnQoClggCQkJ
CQkJRVZFTlRfRkxBR19DQUxMLApYIAkJCQkJCSJDb25mZXJlbmNlTWVtYmVyVW5tdXRlIiwKWCsJ
CQkJCQkiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbiIKWCsJCQkJCQkiTWVtYmVySWQ6ICVkXHJcbiIK
WCAJCQkJCQkiQ2hhbm5lbDogJXNcclxuIiwKWC0JCQkJCQltZW1iZXItPmNoYW4tPm5hbWUKWCsJ
CQkJCQltZW1iZXItPmNvbmZfbmFtZSwKWCsJCQkJCQltZW1iZXItPmlkLApYKwkJCQkJCW1lbWJl
ci0+Y2hhbm5lbF9uYW1lClggCQkJCQkpIDsKWCAJCQkJICAgICAgcmVzID0gMTsKWCAJCQkgICAg
ICB9ClhAQCAtMTgwMyw3ICsxOTE0LDcgQEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApY
IAl3aGlsZSAoIGNvbmYgIT0gTlVMTCApClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0
IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lICkgPT0gMCApClgrCQlpZiAoIHN0cm5jYXNl
Y21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgY29uZm5hbWUsIDgwICkgPT0gMCApClgg
CQl7ClggCQkgICAgICAgIC8vIGRvIHRoZSBiaXoKWCAJCQlhc3Rfcndsb2NrX3JkbG9jayggJmNv
bmYtPmxvY2sgKSA7ClhAQCAtMTgxMyw3ICsxOTI0LDcgQEAKWCAJCQkgICAgaWYgKCAhbWVtYmVy
LT5pc21vZGVyYXRvciApClggCQkJICAgICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jaygg
Jm1lbWJlci0+bG9jayApIDsKWC0JCQkJICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCsJ
CQkJICAgICAgbWVtYmVyLT5tdXRlZCA9IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDA7ClggCQkJCSAg
ICAgIGFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClggCQkJCSAgICAgIHJlcyA9
IDE7ClggCQkJICAgICAgfQpYQEAgLTE4NTksNyArMTk3MCw3IEBAClggCS8vIGxvb3AgdGhyb3Vn
aCBjb25mIGxpc3QKWCAJd2hpbGUgKCBjb25mICE9IE5VTEwgKQpYIAl7ClgtCQlpZiAoIHN0cmNh
c2VjbXAoIChjb25zdCBjaGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSApID09IDAgKQpYKwkJ
aWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lLCA4
MCApID09IDAgKQpYIAkJewpYIAkJICAgICAgICAvLyBkbyB0aGUgYml6ClggCQkJYXN0X3J3bG9j
a19yZGxvY2soICZjb25mLT5sb2NrICkgOwpYQEAgLTE5MTMsMTQgKzIwMjQsMTQgQEAKWCAJLy8g
bG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNvbmYgIT0gTlVMTCApClggCXsKWC0J
CWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lICkg
PT0gMCApClgrCQlpZiAoIHN0cm5jYXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwg
Y29uZm5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkgICAgICAgIC8vIGRvIHRoZSBiaXoKWCAJ
CQlhc3Rfcndsb2NrX3JkbG9jayggJmNvbmYtPmxvY2sgKSA7ClggCQkgICAgICAgIG1lbWJlciA9
IGNvbmYtPm1lbWJlcmxpc3QgOwpYIAkJCXdoaWxlIChtZW1iZXIgIT0gTlVMTCkKWCAJCQl7Clgt
CQkJCWlmIChzdHJjYXNlY21wKCBtZW1iZXItPmNoYW4tPm5hbWUsIHN0cmVhbWNoYW4gKSA9PSAw
KQpYKwkJCQlpZiAoc3RybmNhc2VjbXAoIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBzdHJlYW1jaGFu
LCA4MCApID09IDApClggCQkJCXsKWCAJCQkJCXN0cmVhbV9pZCA9IG1lbWJlci0+aWQ7ClggCQkJ
CX0KWEBAIC0xOTM0LDcgKzIwNDUsNyBAQApYIAkJCQltZW1iZXIgPSBjb25mLT5tZW1iZXJsaXN0
IDsKWCAJCQkJd2hpbGUgKG1lbWJlciAhPSBOVUxMKQpYIAkJCQl7ClgtCQkJCQlpZiAoc3RyY2Fz
ZWNtcCggbWVtYmVyLT5jaGFuLT5uYW1lLCB1c2VyY2hhbiApID09IDApClgrCQkJCQlpZiAoc3Ry
bmNhc2VjbXAoIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCB1c2VyY2hhbiwgODAgKSA9PSAwKQpYIAkJ
CQkJewpYIAkJCQkJCS8vIHN3aXRjaCB0aGUgdmlkZW8KWCAJCQkJCQlhc3RfbXV0ZXhfbG9jaygg
Jm1lbWJlci0+bG9jayApIDsKWEBAIC0yMDE4LDcgKzIxMjksNyBAQApYIAkvLyBsb29wIHRocm91
Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJj
YXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgbmFtZSApID09IDAgKQpYKwkJaWYg
KCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIG5hbWUsIDgwICkgPT0g
MCApClggCQl7ClggCQkJLy8gY29weSBzdGF0cyBmb3IgZm91bmQgY29uZmVyZW5jZQpYIAkJCSpz
dGF0cyA9IGNvbmYtPnN0YXRzIDsKWEBAIC0yMDQyLDcgKzIxNTMsNyBAQApYIAlBU1RfTElTVF9M
T0NLICggYnVja2V0ICkgOwpYIApYIAlBU1RfTElTVF9UUkFWRVJTRSAoIGJ1Y2tldCwgbWVtYmVy
LCBoYXNoX2VudHJ5ICkKWC0JCWlmICghc3RyY21wIChtZW1iZXItPmNoYW4tPm5hbWUsIGNoYW4p
ICkgewpYKwkJaWYgKCFzdHJjbXAgKG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBjaGFuKSApIHsKWCAJ
CQlhc3RfbXV0ZXhfbG9jayAoJm1lbWJlci0+bG9jaykgOwpYIAkJCW1lbWJlci0+dXNlX2NvdW50
KysgOwpYIAkJCWJyZWFrIDsKWEBAIC0yMTk1LDcgKzIzMDYsNyBAQApYIAkJCQkJY29uZi0+dmlk
ZW9fbG9ja2VkID0gMTsKWCAJCQkJCXJlcyA9IDE7ClggClgtCQkJCQltYW5hZ2VyX2V2ZW50KEVW
RU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VMb2NrIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5D
aGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJ
bWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlTG9jayIsICJDb25mZXJl
bmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwgbWVtYmVyLT5jaGFu
bmVsX25hbWUpOwpYIAkJCQkJYnJlYWs7ClggCQkJCX0KWCAJCQl9ClhAQCAtMjIzNiwxMyArMjM0
NywxMyBAQApYIApYIAkJCWZvciAoIG1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3QgOyBtZW1iZXIg
IT0gTlVMTCA7IG1lbWJlciA9IG1lbWJlci0+bmV4dCApClggCQkJewpYLQkJCQlpZiAoIHN0cmNt
cChjaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09IDAgJiYgIW1lbWJlci0+bXV0ZV92aWRl
byApClgrCQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA9PSAw
ICYmICFtZW1iZXItPm11dGVfdmlkZW8gKQpYIAkJCQl7ClggCQkJCQlkb192aWRlb19zd2l0Y2hp
bmcoY29uZiwgbWVtYmVyLT5pZCwgMCk7ClggCQkJCQljb25mLT52aWRlb19sb2NrZWQgPSAxOwpY
IAkJCQkJcmVzID0gMTsKWCAKWC0JCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAi
Q29uZmVyZW5jZUxvY2siLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIs
IGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbi0+bmFtZSk7ClgrCQkJCQltYW5hZ2VyX2V2ZW50KEVW
RU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VMb2NrIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5D
aGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJ
CQlicmVhazsKWCAJCQkJfQpYIAkJCX0KWEBAIC0yMzMzLDcgKzI0NDQsNyBAQApYIAkJCQkJCWNv
bmYtPmRlZmF1bHRfdmlkZW9fc291cmNlX2lkID0gbWVtYmVyX2lkOwpYIAkJCQkJCXJlcyA9IDE7
ClggClgtCQkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlRGVm
YXVsdCIsICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFt
ZSwgbWVtYmVyLT5jaGFuLT5uYW1lKTsKWCsJCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdf
Q0FMTCwgIkNvbmZlcmVuY2VEZWZhdWx0IiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVs
OiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJCQkJYnJl
YWs7ClggCQkJCQl9ClggCQkJCX0KWEBAIC0yMzc4LDcgKzI0ODksNyBAQApYIAkJCXsKWCAJCQkJ
Ly8gV2UgZG8gbm90IGFsbG93IHZpZGVvIG11dGVkIG1lbWJlcnMgb3IgbWVtYmVycyB0aGF0IGRv
IG5vdCBzdXBwb3J0ClggCQkJCS8vIFZBRCBzd2l0Y2hpbmcgdG8gYmVjb21lIGRlZmF1bHRzClgt
CQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbi0+bmFtZSkgPT0gMCAmJgpYKwkJ
CQlpZiAoIHN0cmNtcChjaGFubmVsLCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgPT0gMCAmJgpYIAkJ
CQkgICAgICFtZW1iZXItPm11dGVfdmlkZW8gJiYKWCAJCQkJICAgICBtZW1iZXItPnZhZF9zd2l0
Y2gKWCAJCQkJICAgKQpYQEAgLTIzODYsNyArMjQ5Nyw3IEBAClggCQkJCQljb25mLT5kZWZhdWx0
X3ZpZGVvX3NvdXJjZV9pZCA9IG1lbWJlci0+aWQ7ClggCQkJCQlyZXMgPSAxOwpYIApYLQkJCQkJ
bWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlRGVmYXVsdCIsICJDb25m
ZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwgbWVtYmVyLT5j
aGFuLT5uYW1lKTsKWCsJCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAiQ29uZmVy
ZW5jZURlZmF1bHQiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNv
bmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAJCQkJCWJyZWFrOwpYIAkJCQl9Clgg
CQkJfQpYQEAgLTI0MzYsNyArMjU0Nyw3IEBAClggCQkJCQkvLyByZWxlYXNlIG1lbWJlciBtdXRl
eApYIAkJCQkJYXN0X211dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApOwpYIApYLQkJCQkJbWFu
YWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlVmlkZW9NdXRlIiwgIkNvbmZl
cmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNo
YW4tPm5hbWUpOwpYKwkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJl
bmNlVmlkZW9NdXRlIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBj
b25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggClggCQkJCQlpZiAoIG1lbWJlci0+
aWQgPT0gY29uZi0+Y3VycmVudF92aWRlb19zb3VyY2VfaWQgKQpYIAkJCQkJewpYQEAgLTI0OTQs
NyArMjYwNSw3IEBAClggCQkJCQkvLyByZWxlYXNlIG1lbWJlciBtdXRleApYIAkJCQkJYXN0X211
dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApOwpYIApYLQkJCQkJbWFuYWdlcl9ldmVudChFVkVO
VF9GTEFHX0NBTEwsICJDb25mZXJlbmNlVmlkZW9Vbm11dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVz
XHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbi0+bmFtZSk7Clgr
CQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VWaWRlb1VubXV0
ZSIsICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwg
bWVtYmVyLT5jaGFubmVsX25hbWUpOwpYIApYIAkJCQkJcmVzID0gMTsKWCAJCQkJCWJyZWFrOwpY
QEAgLTI1MzcsNyArMjY0OCw3IEBAClggClggCQkJZm9yICggbWVtYmVyID0gY29uZi0+bWVtYmVy
bGlzdCA7IG1lbWJlciAhPSBOVUxMIDsgbWVtYmVyID0gbWVtYmVyLT5uZXh0ICkKWCAJCQl7Clgt
CQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbi0+bmFtZSkgPT0gMCApClgrCQkJ
CWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA9PSAwICkKWCAJCQkJ
ewpYIAkJCQkJLy8gYWNxdWlyZSBtZW1iZXIgbXV0ZXgKWCAJCQkJCWFzdF9tdXRleF9sb2NrKCAm
bWVtYmVyLT5sb2NrICk7ClhAQCAtMjU0Nyw3ICsyNjU4LDcgQEAKWCAJCQkJCS8vIHJlbGVhc2Ug
bWVtYmVyIG11dGV4ClggCQkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVyLT5sb2NrICk7Clgg
ClgtCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VWaWRlb011
dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUs
IG1lbWJlci0+Y2hhbi0+bmFtZSk7ClgrCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FM
TCwgIkNvbmZlcmVuY2VWaWRlb011dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6
ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAKWCAJCQkJCWlm
ICggbWVtYmVyLT5pZCA9PSBjb25mLT5jdXJyZW50X3ZpZGVvX3NvdXJjZV9pZCApClggCQkJCQl7
ClhAQCAtMjU5NSw3ICsyNzA2LDcgQEAKWCAKWCAJCQlmb3IgKCBtZW1iZXIgPSBjb25mLT5tZW1i
ZXJsaXN0IDsgbWVtYmVyICE9IE5VTEwgOyBtZW1iZXIgPSBtZW1iZXItPm5leHQgKQpYIAkJCXsK
WC0JCQkJaWYgKCBzdHJjbXAoY2hhbm5lbCwgbWVtYmVyLT5jaGFuLT5uYW1lKSA9PSAwICkKWCsJ
CQkJaWYgKCBzdHJjbXAoY2hhbm5lbCwgbWVtYmVyLT5jaGFubmVsX25hbWUpID09IDAgKQpYIAkJ
CQl7ClggCQkJCQkvLyBhY3F1aXJlIG1lbWJlciBtdXRleApYIAkJCQkJYXN0X211dGV4X2xvY2so
ICZtZW1iZXItPmxvY2sgKTsKWEBAIC0yNjA1LDcgKzI3MTYsNyBAQApYIAkJCQkJLy8gcmVsZWFz
ZSBtZW1iZXIgbXV0ZXgKWCAJCQkJCWFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKTsK
WCAKWC0JCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAiQ29uZmVyZW5jZVZpZGVv
VW5tdXRlIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBjb25mLT5u
YW1lLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFH
X0NBTEwsICJDb25mZXJlbmNlVmlkZW9Vbm11dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNo
YW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAKWCAJ
CQkJCXJlcyA9IDE7ClggCQkJCQlicmVhazsKWEBAIC0yNjk0LDcgKzI4MDUsNyBAQApYIApYIAkJ
CWZvciAoIG1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3QgOyBtZW1iZXIgIT0gTlVMTCA7IG1lbWJl
ciA9IG1lbWJlci0+bmV4dCApClggCQkJewpYLQkJCQlpZiAoIHN0cmNtcChtZW1iZXItPmNoYW4t
Pm5hbWUsIGNoYW5uZWwpID09IDAgKQpYKwkJCQlpZiAoIHN0cmNtcChtZW1iZXItPmNoYW5uZWxf
bmFtZSwgY2hhbm5lbCkgPT0gMCApClggCQkJCXsKWCAJCQkJCXJlcyA9IHNlbmRfdGV4dF9tZXNz
YWdlX3RvX21lbWJlcihtZW1iZXIsIHRleHQpID09IDA7ClggCQkJCQlicmVhazsKWEBAIC0yODgx
LDkgKzI5OTIsOSBAQApYIAkJCWRzdCA9IE5VTEw7ClggCQkJZm9yICggbWVtYmVyID0gY29uZi0+
bWVtYmVybGlzdCA7IG1lbWJlciAhPSBOVUxMIDsgbWVtYmVyID0gbWVtYmVyLT5uZXh0ICkKWCAJ
CQl7ClgtCQkJCWlmICggc3RyY21wKHNyY19jaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09
IDAgKQpYKwkJCQlpZiAoIHN0cmNtcChzcmNfY2hhbm5lbCwgbWVtYmVyLT5jaGFubmVsX25hbWUp
ID09IDAgKQpYIAkJCQkJc3JjID0gbWVtYmVyOwpYLQkJCQlpZiAoIGRzdF9jaGFubmVsICE9IE5V
TEwgJiYgc3RyY21wKGRzdF9jaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09IDAgKQpYKwkJ
CQlpZiAoIGRzdF9jaGFubmVsICE9IE5VTEwgJiYgc3RyY21wKGRzdF9jaGFubmVsLCBtZW1iZXIt
PmNoYW5uZWxfbmFtZSkgPT0gMCApClggCQkJCQlkc3QgPSBtZW1iZXI7ClggCQkJfQpYIAkJCWlm
ICggc3JjICE9IE5VTEwgKQpYQEAgLTI5NjksNyArMzA4MCw3IEBAClggCQkJIkNvbmZlcmVuY2VW
aWRlb1N3aXRjaCIsClggCQkJIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4i
LApYIAkJCWNvbmYtPm5hbWUsClgtCQkJbmV3X21lbWJlciA9PSBOVUxMID8gImVtcHR5IiA6IG5l
d19tZW1iZXItPmNoYW4tPm5hbWUKWCsJCQluZXdfbWVtYmVyID09IE5VTEwgPyAiZW1wdHkiIDog
bmV3X21lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJKTsKWCAKWCAJCWNvbmYtPmN1cnJlbnRfdmlk
ZW9fc291cmNlX2lkID0gbmV3X2lkOwpYQEAgLTMwNDMsOSArMzE1NCw2IEBAClggCQlzb3VuZC0+
c3RvcHBlZCA9IDE7ClggCQlzb3VuZCA9IG5leHQ7ClggCX0KWC0KWC0JCW1lbWJlci0+bXV0ZWQg
PSAwOwpYLQpYIAlpZiAoICEtLW1lbWJlci0+dXNlX2NvdW50ICYmIG1lbWJlci0+ZGVsZXRlX2Zs
YWcgKQpYIAkJYXN0X2NvbmRfc2lnbmFsICggJm1lbWJlci0+ZGVsZXRlX3ZhciApIDsKWCAJYXN0
X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2NrKTsKWEBAIC0zMDY2LDcgKzMxNzQsNyBAQApYIAkJ
cmV0dXJuIDA7ClggCX0gZWxzZSBpZiAoIW1lbWJlci0+bm9yZWN2X2F1ZGlvICYmICFtZW1iZXIt
Pm1vaF9mbGFnKQpYIAl7ClgtCQltZW1iZXItPm1vaF9mbGFnID0gbWVtYmVyLT5tdXRlZCA9IDE7
ClgrCQltZW1iZXItPm1vaF9mbGFnID0gMTsKWCAJfQpYIApYIAlpZiAoICEtLW1lbWJlci0+dXNl
X2NvdW50ICYmIG1lbWJlci0+ZGVsZXRlX2ZsYWcgKQpYQEAgLTMwODksNyArMzE5Nyw3IEBAClgg
CQlyZXR1cm4gMDsKWCAJfSBlbHNlIGlmICghbWVtYmVyLT5ub3JlY3ZfYXVkaW8gJiYgbWVtYmVy
LT5tb2hfZmxhZykKWCAJewpYLQkJbWVtYmVyLT5tb2hfc3RvcCA9IDE7ClgrCQlhc3RfbW9oX3N0
b3AobWVtYmVyLT5jaGFuKTsKWCAKWCAJCW1lbWJlci0+bW9oX2ZsYWcgPSBtZW1iZXItPm11dGVk
ID0gMDsKWCAJCW1lbWJlci0+cmVhZHlfZm9yX291dGdvaW5nID0gMTsKWEBAIC0zMTkzLDcgKzMz
MDEsNyBAQApYIAkJCQkiQ29uZmVyZW5jZVZpZGVvQnJvYWRjYXN0T2ZmIiwKWCAJCQkJIkNvbmZl
cmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCQljb25mLT5uYW1lLApYLQkJ
CQltZW1iZXItPmNoYW4tPm5hbWUKWCsJCQkJbWVtYmVyLT5jaGFubmVsX25hbWUKWCAJCQkJKTsK
WCAJfSBlbHNlIGlmICggY2ZyICE9IE5VTEwgKQpYIAl7ClhAQCAtMzIwNSw3ICszMzEzLDcgQEAK
WCAJCQkJIkNvbmZlcmVuY2VWaWRlb0Jyb2FkY2FzdE9uIiwKWCAJCQkJIkNvbmZlcmVuY2VOYW1l
OiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCQljb25mLT5uYW1lLApYLQkJCQltZW1iZXIt
PmNoYW4tPm5hbWUKWCsJCQkJbWVtYmVyLT5jaGFubmVsX25hbWUKWCAJCQkJKTsKWCAJCX0KWCAJ
fQpYQEAgLTMyMjgsNyArMzMzNiw3IEBAClggCXJldHVybiBoOwpYIH0KWCAKWC1pbnQgY291bnRf
ZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCB2b2lkKiBkYXRhICkKWCtpbnQgY291bnRf
ZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkKWCB7Clgg
CWludCByZXMgPSAwOwpYIAlzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UgKmNvbmY7ClgtLS0gLi9jb25m
ZXJlbmNlLmgub3JpZwkyMDEwLTA3LTI4IDIwOjQ0OjQ5LjAwMDAwMDAwMCArMDAwMApYKysrIC4v
Y29uZmVyZW5jZS5oCTIwMTAtMTEtMDEgMTc6MDc6NDQuMDAwMDAwMDAwICswMDAwClhAQCAtMzks
MTIgKzM5LDYgQEAKWCAjaW5jbHVkZSAiY29tbW9uLmgiClggClggLy8KWC0vLyBkZWZpbmVzClgt
Ly8KWC0KWC0jZGVmaW5lIENPTkZfTkFNRV9MRU4gODAKWC0KWC0vLwpYIC8vIHN0cnVjdCBkZWNs
YXJhdGlvbnMKWCAvLwpYIApYQEAgLTU3LDcgKzUxLDcgQEAKWCB0eXBlZGVmIHN0cnVjdCBhc3Rf
Y29uZmVyZW5jZV9zdGF0cwpYIHsKWCAJLy8gY29uZmVyZW5jZSBuYW1lICggY29waWVkIGZvciBl
YXNlIG9mIHVzZSApClgtCWNoYXIgbmFtZVtDT05GX05BTUVfTEVOICsgMV0gOwpYKwljaGFyIG5h
bWVbMTI4XSA7ClggClggCS8vIHR5cGUgb2YgY29ubmVjdGlvbgpYIAl1bnNpZ25lZCBzaG9ydCBw
aG9uZSA7ClhAQCAtODEsNyArNzUsMTEgQEAKWCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UKWCB7Clgg
CS8vIGNvbmZlcmVuY2UgbmFtZQpYLQljaGFyIG5hbWVbQ09ORl9OQU1FX0xFTiArIDFdIDsKWCsJ
Y2hhciBuYW1lWzEyOF0gOwpYKwpYKwkvLyByZWNvcmRpbmcKWCsJY2hhciAqcmVjZmlsZTsKWCsJ
Y2hhciAqcmVjZm9ybWF0OwpYIApYIAkvLyBjb25mZXJlbmNlIHZvbHVtZQpYIAlpbnQgdm9sdW1l
OwpYQEAgLTE1Nyw5ICsxNTUsOSBAQApYIApYIGludCBoYXNoKCBjb25zdCBjaGFyICpjaGFubmVs
X25hbWUgKSA7ClggClgtaW50IGNvdW50X2V4ZWMoIHN0cnVjdCBhc3RfY2hhbm5lbCogY2hhbiwg
dm9pZCogZGF0YSApIDsKWCtpbnQgY291bnRfZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFu
LCBjb25zdCBjaGFyICpkYXRhICkgOwpYIApYLXN0cnVjdCBhc3RfY29uZmVyZW5jZSogam9pbl9j
b25mZXJlbmNlKCBzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIGNoYXIqIGNvbmZfbmFt
ZSwgY2hhciogbWF4X3VzZXJzX2ZsYWcgKSA7Clgrc3RydWN0IGFzdF9jb25mZXJlbmNlKiBqb2lu
X2NvbmZlcmVuY2UoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciwgY29uc3QgY2hhciog
cmVjZmlsZSwgY29uc3QgY2hhciogcmVjZm9ybWF0ICkgOwpYIApYIGludCBlbmRfY29uZmVyZW5j
ZSggY29uc3QgY2hhciAqbmFtZSwgaW50IGhhbmd1cCApIDsKWCAKWEBAIC0xNzAsNyArMTY4LDcg
QEAKWCBpbnQgcXVldWVfZnJhbWVfZm9yX3NwZWFrZXIoIHN0cnVjdCBhc3RfY29uZmVyZW5jZSog
Y29uZiwgc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjb25mX2ZyYW1lKiBmcmFtZSAp
IDsKWCBpbnQgcXVldWVfc2lsZW50X2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGNvbmYs
IHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciApIDsKWCAKWC12b2lkIHJlbW92ZV9tZW1i
ZXIoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciwgc3RydWN0IGFzdF9jb25mZXJlbmNl
KiBjb25mLCBjaGFyKiBjb25mX25hbWUgKSA7Clgrdm9pZCByZW1vdmVfbWVtYmVyKCBzdHJ1Y3Qg
YXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIHN0cnVjdCBhc3RfY29uZmVyZW5jZSogY29uZiApIDsK
WCAKWCAjaWZkZWYJVEVYVApYIGludCBzZW5kX3RleHRfbWVzc2FnZV90b19tZW1iZXIoc3RydWN0
IGFzdF9jb25mX21lbWJlciAqbWVtYmVyLCBjb25zdCBjaGFyICp0ZXh0KTsKWC0tLSAuL2ZyYW1l
LmMub3JpZwkyMDEwLTA4LTE3IDE0OjU4OjA3LjAwMDAwMDAwMCArMDAwMApYKysrIC4vZnJhbWUu
YwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAgLTEwMiw0MyArMTAyLDI2
IEBAClggCWZyYW1lc19pbi0+Y29udmVydGVkWyBmcmFtZXNfaW4tPm1lbWJlci0+cmVhZF9mb3Jt
YXRfaW5kZXggXSA9IGFzdF9mcmR1cCggZnJhbWVzX2luLT5mciApIDsKWCAKWCAJLy8gY29udmVy
dCBmcmFtZSB0byBzbGluZWFyLCBpZiB3ZSBoYXZlIGEgcGF0aApYLQlpZiAoIShmcmFtZXNfaW4t
PmZyID0gY29udmVydF9mcmFtZV90b19zbGluZWFyKCBmcmFtZXNfaW4tPm1lbWJlci0+dG9fc2xp
bmVhciwgZnJhbWVzX2luLT5mcikpKQpYLQl7ClgtCQlhc3RfbG9nKCBMT0dfV0FSTklORywgIm1p
eF9zaW5nbGVfc3BlYWtlcjogdW5hYmxlIHRvIGNvbnZlcnQgZnJhbWUgdG8gc2xpbmVhclxuIiAp
IDsKWC0JCXJldHVybiBmcmFtZXNfaW4gOwpYLQl9ClgrCWZyYW1lc19pbi0+ZnIgPSBjb252ZXJ0
X2ZyYW1lX3RvX3NsaW5lYXIoClgrCQlmcmFtZXNfaW4tPm1lbWJlci0+dG9fc2xpbmVhciwKWCsJ
CWZyYW1lc19pbi0+ZnIKWCsJKSA7ClggClggCWlmICggKGZyYW1lc19pbi0+bWVtYmVyLT50YWxr
X3ZvbHVtZSAhPSAwKSB8fCAodm9sdW1lICE9IDApICkKWCAJewpYIAkJYXN0X2ZyYW1lX2FkanVz
dF92b2x1bWUoZnJhbWVzX2luLT5mciwgZnJhbWVzX2luLT5tZW1iZXItPnRhbGtfdm9sdW1lICsg
dm9sdW1lKTsKWCAJfQpYIApYLQlpZiAoIWZyYW1lc19pbi0+bWVtYmVyLT5zcHlfcGFydG5lcikK
WCsJaWYgKCBmcmFtZXNfaW4tPm1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lID09IE5VTEwgKQpY
IAl7ClgtCQkvLyBzcGVha2VyIGlzIG5laXRoZXIgYSBzcHllZSBub3IgYSBzcHllcgpYKwkJLy8g
c2V0IGZyYW1lJ3Mgc3B5IHBhcnRuZXIKWCsJCWZyYW1lc19pbi0+c3B5X3BhcnRuZXIgPSBmcmFt
ZXNfaW4tPm1lbWJlci0+c3B5X3BhcnRuZXIgOwpYKwpYIAkJLy8gc2V0IHRoZSBmcmFtZSdzIG1l
bWJlciB0byBudWxsICggaS5lLiBhbGwgbGlzdGVuZXJzICkKWCAJCWZyYW1lc19pbi0+bWVtYmVy
ID0gTlVMTCA7ClggCX0KWCAJZWxzZQpYLQl7ClgtCQkvLyBzcGVha2VyIGlzIGVpdGhlciBhIHNw
eWVlIG9yIGEgc3B5ZXIKWC0JCWlmICggZnJhbWVzX2luLT5tZW1iZXItPnNweWVlX2NoYW5uZWxf
bmFtZSA9PSBOVUxMICkKWC0JCXsKWC0JCQljb25mX2ZyYW1lICpzcHlfZnJhbWUgPSBjb3B5X2Nv
bmZfZnJhbWUoZnJhbWVzX2luKTsKWC0KWC0JCQlpZiAoIHNweV9mcmFtZSAhPSAwICkKWC0JCQl7
ClgtCQkJCWZyYW1lc19pbi0+bmV4dCA9IHNweV9mcmFtZTsKWC0JCQkJc3B5X2ZyYW1lLT5wcmV2
ID0gZnJhbWVzX2luOwpYLQpYLQkJCQlzcHlfZnJhbWUtPm1lbWJlciA9IGZyYW1lc19pbi0+bWVt
YmVyLT5zcHlfcGFydG5lcjsKWC0JCQl9ClgtClgtCQkJZnJhbWVzX2luLT5tZW1iZXIgPSBOVUxM
IDsKWC0JCX0KWC0JCWVsc2UKWC0JCQlmcmFtZXNfaW4tPm1lbWJlciA9IGZyYW1lc19pbi0+bWVt
YmVyLT5zcHlfcGFydG5lciA7ClgtCX0KWCsJCWZyYW1lc19pbi0+bWVtYmVyID0gZnJhbWVzX2lu
LT5tZW1iZXItPnNweV9wYXJ0bmVyIDsKWCAKWCAJcmV0dXJuIGZyYW1lc19pbiA7ClggfQpYQEAg
LTI0NCwxOCArMjI3LDIxIEBAClggCQllbHNlClggCQl7ClggCQkJLy9ERUJVRygiY29udmVydGlu
ZyBmcmFtZSB0byBzbGluZWFyLCBjaGFubmVsID0+ICVzXG4iLCBjZl9zcG9rZW4tPm1lbWJlci0+
Y2hhbm5lbF9uYW1lKSA7ClgtCQkJaWYgKCAhKGNmX3Nwb2tlbi0+ZnIgPSBjb252ZXJ0X2ZyYW1l
X3RvX3NsaW5lYXIoIGNmX3Nwb2tlbi0+bWVtYmVyLT50b19zbGluZWFyLCBjZl9zcG9rZW4tPmZy
KSkgKQpYLQkJCXsKWC0JCQkJYXN0X2xvZyggTE9HX1dBUk5JTkcsICJtaXhfbXVsdGlwbGVfc3Bl
YWtlcnM6IHVuYWJsZSB0byBjb252ZXJ0IGZyYW1lIHRvIHNsaW5lYXJcbiIgKSA7ClgtCQkJCWNv
bnRpbnVlOwpYLQkJCX0KWCsJCQljZl9zcG9rZW4tPmZyID0gY29udmVydF9mcmFtZV90b19zbGlu
ZWFyKApYKwkJCQljZl9zcG9rZW4tPm1lbWJlci0+dG9fc2xpbmVhciwKWCsJCQkJY2Zfc3Bva2Vu
LT5mcgpYKwkJCSkgOwpYIApYIAkJCWlmICgoIGNmX3Nwb2tlbi0+bWVtYmVyLT50YWxrX3ZvbHVt
ZSAhPSAwICkgfHwgKHZvbHVtZSAhPSAwKSkKWCAJCQl7ClggCQkJCWFzdF9mcmFtZV9hZGp1c3Rf
dm9sdW1lKGNmX3Nwb2tlbi0+ZnIsIGNmX3Nwb2tlbi0+bWVtYmVyLT50YWxrX3ZvbHVtZSArIHZv
bHVtZSk7ClggCQkJfQpYIApYLQkJCWlmICggY2Zfc3Bva2VuLT5tZW1iZXItPnNweWVlX2NoYW5u
ZWxfbmFtZSA9PSBOVUxMICkKWCsJCQlpZiAoIGNmX3Nwb2tlbi0+ZnIgPT0gTlVMTCApClgrCQkJ
ewpYKwkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byBjb252ZXJ0IGZyYW1lIHRv
IHNsaW5lYXJcbiIgKSA7ClgrCQkJfQpYKwkJCWVsc2UgaWYgKCBjZl9zcG9rZW4tPm1lbWJlci0+
c3B5ZWVfY2hhbm5lbF9uYW1lID09IE5VTEwgKQpYIAkJCXsKWCAJCQkJLy8gY3JlYXRlIG5ldyBj
b25mIGZyYW1lIHdpdGggbGFzdCBmcmFtZSBhcyAnbmV4dCcKWCAJCQkJY2Zfc2VuZEZyYW1lcyA9
IGNyZWF0ZV9jb25mX2ZyYW1lKCBjZl9zcG9rZW4tPm1lbWJlciwgY2Zfc2VuZEZyYW1lcywgTlVM
TCApIDsKWEBAIC0zOTcsMTEgKzM4Myw3IEBAClggCS8vIHdlIGRvbid0IG5lZWQgdG8gZHVwbGlj
YXRlIHRoaXMgZnJhbWUgc2luY2UKWCAJLy8gdGhlIG5vcm1hbCB0cmFuc2xhdGlvbiB3b3VsZCBm
cmVlIGl0IGFueXdheSwgc28KWCAJLy8gd2UnbGwganVzdCBwcmV0ZW5kIHdlIGZyZWUnZCBhbmQg
bWFsbG9jJ2QgYSBuZXcgb25lLgpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JaWYgKCBmci0+c3Vi
Y2xhc3MgPT0gQVNUX0ZPUk1BVF9TTElORUFSICkKWC0jZWxzZQpYLQlpZiAoIGZyLT5zdWJjbGFz
cyA9PSBBU1RfRk9STUFUX1NMSU5FQVIxNiApClgtI2VuZGlmClgrCWlmICggQVNUX0ZSQU1FX1NV
QkNMQVNTX0NPREVDKGZyKSA9PSBBU1RfQ09ORl9GT1JNQVQgKQpYIAkJcmV0dXJuIGZyIDsKWCAK
WCAJLy8gY2hlY2sgZm9yIG51bGwgdHJhbnNsYXRvciAoIGFmdGVyIHdlJ3ZlIGNoZWNrZWQgdGhh
dCB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSApClhAQCAtNDMyLDExICs0MTQsNyBAQApYIAl9ClggClgg
CS8vIGlmIHRoZSBmcmFtZSBpcyBub3Qgc2xpbmVhciwgcmV0dXJuIGFuIGVycm9yClgtI2lmbmRl
ZglBQ19VU0VfRzcyMgpYLQlpZiAoIGZyLT5zdWJjbGFzcyAhPSBBU1RfRk9STUFUX1NMSU5FQVIg
KQpYLSNlbHNlClgtCWlmICggZnItPnN1YmNsYXNzICE9IEFTVF9GT1JNQVRfU0xJTkVBUjE2ICkK
WC0jZW5kaWYKWCsJaWYgKCBBU1RfRlJBTUVfU1VCQ0xBU1NfQ09ERUMoZnIpICE9IEFTVF9DT05G
X0ZPUk1BVCApClggCXsKWCAJCWFzdF9sb2coIExPR19FUlJPUiwgInVuYWJsZSB0byB0cmFuc2xh
dGUgbm9uLXNsaW5lYXIgZnJhbWVcbiIgKSA7ClggCQlyZXR1cm4gTlVMTCA7ClhAQCAtNTQwLDYg
KzUxOCw4IEBAClggCWNmLT5tZW1iZXIgPSBtZW1iZXIgOwpYIAkvLyBjZi0+cHJpb3JpdHkgPSAw
IDsKWCAKWCsJY2YtPnNweV9wYXJ0bmVyID0gTlVMTCA7ClgrClggCWNmLT5wcmV2ID0gTlVMTCA7
ClggCWNmLT5uZXh0ID0gbmV4dCA7ClggClhAQCAtNjQ2LDExICs2MjYsNyBAQApYIAl9ClggClgg
CWYtPmZyYW1ldHlwZSA9IEFTVF9GUkFNRV9WT0lDRSA7ClgtI2lmbmRlZglBQ19VU0VfRzcyMgpY
LQlmLT5zdWJjbGFzcyA9IEFTVF9GT1JNQVRfU0xJTkVBUiA7ClgtI2Vsc2UKWC0JZi0+c3ViY2xh
c3MgPSBBU1RfRk9STUFUX1NMSU5FQVIxNiA7ClgtI2VuZGlmClgrCUFTVF9GUkFNRV9TVUJDTEFT
U19DT0RFQyhmKSA9IEFTVF9DT05GX0ZPUk1BVCA7ClggCWYtPnNhbXBsZXMgPSBBU1RfQ09ORl9C
TE9DS19TQU1QTEVTIDsKWCAJZi0+b2Zmc2V0ID0gQVNUX0ZSSUVORExZX09GRlNFVCA7ClggCWYt
Pm1hbGxvY2QgPSBBU1RfTUFMTE9DRF9IRFIgfCBBU1RfTUFMTE9DRF9EQVRBIDsKWC0tLSAuL21l
bWJlci5jLm9yaWcJMjAxMC0wOC0xNyAxODoxNjozNS4wMDAwMDAwMDAgKzAwMDAKWCsrKyAuL21l
bWJlci5jCTIwMTAtMTEtMDEgMTc6MDc6NDQuMDAwMDAwMDAwICswMDAwClhAQCAtODcsNiArODcs
NzggQEAKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVyLT5sb2NrICkgOwpYIAkJfQpYICNl
bmRpZgpYKwpYKwkJaWYgKG1lbWJlci0+ZHRtZl9zdGFyX21lbnUpClgrCQl7ClgrCQkJYXN0X211
dGV4X2xvY2soICZtZW1iZXItPmxvY2sgKSA7ClgrCQkJaWYgKEFTVF9GUkFNRV9TVUJDTEFTU19J
TlQoZikgPT0gJyonKQpYKwkJCXsKWCsJCQkJbWVtYmVyLT5zdGFyX3ByZXNzZWQgPSAxOwpYKwkJ
CQlERUJVRyggInN0YXIgd2FzIHByZXNzZWRcbiIgKTsKWCsJCQl9ClgrCQkJZWxzZQpYKwkJCXsK
WCsJCQkJLy8gcmVzZXQgdGhpcyBpbW1lZGlhdGVseSBzbyB0aGF0IGZ1bmN0aW9ucyB0aGF0IGFs
bG93IHJlcGVhdCBwcmVzc2VzICg0LCA2LCBldGMpIGNhbiByZXNldCBpdCB0byBzdGFyX3ByZXNz
ZWQgPSAxClgrCQkJCXNob3J0IG1lbnUgPSBtZW1iZXItPnN0YXJfcHJlc3NlZDsKWCsJCQkJbWVt
YmVyLT5zdGFyX3ByZXNzZWQgPSAwOwpYKwkJCQlpZiAobWVudSkKWCsJCQkJewpYKwkJCQkJc3dp
dGNoIChBU1RfRlJBTUVfU1VCQ0xBU1NfSU5UKGYpKSB7ClgrCQkJCQljYXNlICcxJyA6ClgrCQkJ
CQkJaWYgKG1lbWJlci0+bXV0ZV9hdWRpbyA9PSAwKQpYKwkJCQkJCXsKWCsJCQkJCQkJREVCVUco
ICJtdXRpbmcgbWVtYmVyXG4iICk7ClgrCQkJCQkJCW1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7Clgr
CQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJCQkJCQkJYXN0X21vaF9zdG9wKG1lbWJl
ci0+Y2hhbik7ClgrCQkJCQkJCWlmICghYXN0X3N0cmVhbWZpbGUobWVtYmVyLT5jaGFuLCAiY29u
Zi1tdXRlZCIsIG1lbWJlci0+Y2hhbi0+bGFuZ3VhZ2UpKQpYKwkJCQkJCQkJYXN0X3dhaXRzdHJl
YW0obWVtYmVyLT5jaGFuLCAiIik7ClgrCQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJ
CQkJCQkJYXN0X21vaF9zdGFydChtZW1iZXItPmNoYW4sIE5VTEwsIE5VTEwpOwpYKwkJCQkJCX0K
WCsJCQkJCQllbHNlIGlmIChtZW1iZXItPm11dGVfYXVkaW8gPT0gMSkKWCsJCQkJCQl7ClgrCQkJ
CQkJCURFQlVHKCAidW5tdXRpbmcgbWVtYmVyXG4iICk7ClgrCQkJCQkJCW1lbWJlci0+bXV0ZV9h
dWRpbyA9IDA7ClgrCQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJCQkJCQkJYXN0X21v
aF9zdG9wKG1lbWJlci0+Y2hhbik7ClgrCQkJCQkJCWlmICghYXN0X3N0cmVhbWZpbGUobWVtYmVy
LT5jaGFuLCAiY29uZi11bm11dGVkIiwgbWVtYmVyLT5jaGFuLT5sYW5ndWFnZSkpClgrCQkJCQkJ
CQlhc3Rfd2FpdHN0cmVhbShtZW1iZXItPmNoYW4sICIiKTsKWCsJCQkJCQkJaWYgKG1lbWJlci0+
bW9oX2ZsYWcpClgrCQkJCQkJCQlhc3RfbW9oX3N0YXJ0KG1lbWJlci0+Y2hhbiwgTlVMTCwgTlVM
TCk7ClgrCQkJCQkJfQpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnMicgOgpYKwkJCQkJCURF
QlVHKCAibm90IGltcGxlbWVudGVkOiBsb2NrL3VubG9jayBjb25mZXJlbmNlXG4iICk7ClgrCQkJ
CQkJYnJlYWs7ClgrCQkJCQljYXNlICczJyA6ClgrCQkJCQkJREVCVUcoICJub3QgaW1wbGVtZW50
ZWQ6IGVqZWN0IGxhc3QgdXNlciB0aGF0IGpvaW5lZCBjb25mZXJlbmNlXG4iICk7ClgrCQkJCQkJ
YnJlYWs7ClgrCQkJCQljYXNlICc0JyA6ClgrCQkJCQkJREVCVUcoICJub3QgaW1wbGVtZW50ZWQ6
IGxvd2VyIHZvbHVtZVxuIiApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnNicgOgpYKwkJ
CQkJCURFQlVHKCAibm90IGltcGxlbWVudGVkOiByYWlzZSB2b2x1bWVcbiIgKTsKWCsJCQkJCQli
cmVhazsKWCsJCQkJCWNhc2UgJzgnIDoKWCsJCQkJCQkvLyB0aGlzIGlzIGEgbm8tb3AgLSBhbGxv
d3Mgc3Rhcl9wcmVzc2VkIHRvIGJlIHJlc2V0IHRvIHplcm8gdG8gc3RvcCB2b2x1bWUgYWRqdXN0
bWVudApYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnNycgOgpYKwkJCQkJCW1lbWJlci0+bGlz
dGVuX3ZvbHVtZS0tOwpYKwkJCQkJCW1lbWJlci0+c3Rhcl9wcmVzc2VkID0gMTsKWCsJCQkJCQlE
RUJVRyggImxvd2VyIG15IHZvbHVtZSAobm93OiAlZClcbiIsIG1lbWJlci0+bGlzdGVuX3ZvbHVt
ZSApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnOScgOgpYKwkJCQkJCW1lbWJlci0+bGlz
dGVuX3ZvbHVtZSsrOwpYKwkJCQkJCW1lbWJlci0+c3Rhcl9wcmVzc2VkID0gMTsKWCsJCQkJCQlE
RUJVRyggInJhaXNlIG15IHZvbHVtZSAobm93OiAlZClcbiIsIG1lbWJlci0+bGlzdGVuX3ZvbHVt
ZSApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJfQpYKwkJCQl9ClgrCQkJfQpYKwkJCWFzdF9tdXRl
eF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClgrCQl9ClgrClggCQlpZiAobWVtYmVyLT5kdG1m
X3JlbGF5KQpYIAkJewpYIAkJCS8vIG91dHB1dCB0byBtYW5hZ2VyLi4uClhAQCAtMTA1LDExICsx
NzcsMTEgQEAKWCAJCQkJIk11dGU6ICVkXHJcbiIsClggCQkJCWNvbmYtPm5hbWUsClggCQkJCW1l
bWJlci0+dHlwZSwKWC0JCQkJbWVtYmVyLT5jaGFuLT51bmlxdWVpZCwKWC0JCQkJbWVtYmVyLT5j
aGFuLT5uYW1lLApYLQkJCQltZW1iZXItPmNoYW4tPmNpZC5jaWRfbnVtID8gbWVtYmVyLT5jaGFu
LT5jaWQuY2lkX251bSA6ICJ1bmtub3duIiwKWC0JCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX25h
bWUgPyBtZW1iZXItPmNoYW4tPmNpZC5jaWRfbmFtZSA6ICJ1bmtub3duIiwKWC0JCQkJZi0+c3Vi
Y2xhc3MsClgrCQkJCW1lbWJlci0+dW5pcXVlaWQsClgrCQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1l
LApYKwkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVtYmVyLT5jaGFuKSwKWCsJCQkJ
YXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShtZW1iZXItPmNoYW4pLApYKwkJCQlBU1RfRlJBTUVf
U1VCQ0xBU1NfSU5UKGYpLApYIAkJCQljb25mLT5tZW1iZXJjb3VudCwKWCAJCQkJbWVtYmVyLT5m
bGFncywKWCAJCQkJbWVtYmVyLT5tdXRlX2F1ZGlvClhAQCAtMTc4LDcgKzI1MCw4IEBAClggI2Vu
ZGlmClggCWlmICgoZi0+ZnJhbWV0eXBlID09IEFTVF9GUkFNRV9WT0lDRQpYIAkJCSYmIChtZW1i
ZXItPm11dGVfYXVkaW8gPT0gMQpYLQkJCQl8fCBtZW1iZXItPm11dGVkID09IDEpClgrCQkJCXx8
IChtZW1iZXItPnNvdW5kcSAhPSBOVUxMICYmIG1lbWJlci0+bXV0ZWQgPT0gMSkKWCsJCQkJKQpY
IAkJCSkKWCAjaWZkZWYJVklERU8KWCAJCXx8IChmLT5mcmFtZXR5cGUgPT0gQVNUX0ZSQU1FX1ZJ
REVPClhAQCAtMjA2LDExICsyNzksNyBAQApYIAkJLy8KWCAJCWlmICgKWCAJCQltZW1iZXItPmRz
cCAhPSBOVUxMClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQkJCSYmIGYtPnN1YmNsYXNzID09IEFT
VF9GT1JNQVRfU0xJTkVBUgpYLSNlbHNlClgtCQkJJiYgZi0+c3ViY2xhc3MgPT0gQVNUX0ZPUk1B
VF9TTElORUFSMTYKWC0jZW5kaWYKWCsJCQkmJiBBU1RfRlJBTUVfU1VCQ0xBU1NfQ09ERUMoZikg
PT0gQVNUX0NPTkZfRk9STUFUClggCQkJJiYgZi0+ZGF0YWxlbiA9PSBBU1RfQ09ORl9GUkFNRV9E
QVRBX1NJWkUKWCAJCQkpClggCQl7ClhAQCAtMjI5LDE4ICsyOTgsNyBAQApYIAkJCQkJLy9ERUJV
RygiaWdub3JlX3NwZWV4X2NvdW50ID0+ICVkXG4iLCBtZW1iZXItPmlnbm9yZV9zcGVleF9jb3Vu
dCkgOwpYIApYIAkJCQkJLy8gc2tpcCBzcGVleF9wcmVwcm9jZXNzKCksIGFuZCBkZWNyZW1lbnQg
Y291bnRlcgpYLQkJCQkJaWYgKCEtLW1lbWJlci0+aWdub3JlX3NwZWV4X2NvdW50ICkgewpYLQkJ
CQkJCW1hbmFnZXJfZXZlbnQoClgtCQkJCQkJCUVWRU5UX0ZMQUdfQ0FMTCwKWC0JCQkJCQkJIkNv
bmZlcmVuY2VTdGF0ZSIsClgtCQkJCQkJCSJDaGFubmVsOiAlc1xyXG4iClgtCQkJCQkJCSJGbGFn
czogJXNcclxuIgpYLQkJCQkJCQkiU3RhdGU6ICVzXHJcbiIsClgtCQkJCQkJCW1lbWJlci0+Y2hh
bi0+bmFtZSwKWC0JCQkJCQkJbWVtYmVyLT5mbGFncywKWC0JCQkJCQkJInNpbGVudCIKWC0JCQkJ
CQkpIDsKWC0JCQkJCX0KWCsJCQkJCS0tbWVtYmVyLT5pZ25vcmVfc3BlZXhfY291bnQgOwpYIAkJ
CQl9ClggCQkJCWVsc2UKWCAJCQkJewpYQEAgLTI1MCwxOCArMzA4LDYgQEAKWCAJCQl9ClggCQkJ
ZWxzZQpYIAkJCXsKWC0JCQkJaWYgKCFtZW1iZXItPmlnbm9yZV9zcGVleF9jb3VudCkgewpYLQkJ
CQkJbWFuYWdlcl9ldmVudCgKWC0JCQkJCQlFVkVOVF9GTEFHX0NBTEwsClgtCQkJCQkJIkNvbmZl
cmVuY2VTdGF0ZSIsClgtCQkJCQkJIkNoYW5uZWw6ICVzXHJcbiIKWC0JCQkJCQkiRmxhZ3M6ICVz
XHJcbiIKWC0JCQkJCQkiU3RhdGU6ICVzXHJcbiIsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5uYW1l
LApYLQkJCQkJCW1lbWJlci0+ZmxhZ3MsClgtCQkJCQkJInNwZWFraW5nIgpYLQkJCQkJKSA7Clgt
CQkJCX0KWCAJCQkJLy8gdm9pY2UgZGV0ZWN0ZWQsIHJlc2V0IHNraXAgY291bnQKWCAJCQkJbWVt
YmVyLT5pZ25vcmVfc3BlZXhfY291bnQgPSBBU1RfQ09ORl9TS0lQX1NQRUVYX1BSRVBST0NFU1Mg
OwpYIAkJCX0KWEBAIC0yODgsNyArMzM0LDcgQEAKWCAjZW5kaWYKWCAJZWxzZSBpZiAoClggCQlm
LT5mcmFtZXR5cGUgPT0gQVNUX0ZSQU1FX0NPTlRST0wKWC0JCSYmIGYtPnN1YmNsYXNzID09IEFT
VF9DT05UUk9MX0hBTkdVUApYKwkJJiYgQVNUX0ZSQU1FX1NVQkNMQVNTX0lOVChmKSA9PSBBU1Rf
Q09OVFJPTF9IQU5HVVAKWCAJCSkKWCAJewpYIAkJLy8gaGFuZ3VwIHJlY2VpdmVkClhAQCAtMzI4
LDcgKzM3NCw3IEBAClggCQkJICAgICAgICAgICAgICAiQ29uZmVyZW5jZUNhbWVyYURpc2FibGVk
IiwKWCAJCQkgICAgICAgICAgICAgICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNc
clxuIiwKWCAJCQkgICAgICAgICAgICAgIGNvbmYtPm5hbWUsClgtCQkJICAgICAgICAgICAgICBt
ZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFubmVsX25h
bWUpOwpYIAkJCW1lbWJlci0+bm9fY2FtZXJhID0gMTsKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCZt
ZW1iZXItPmxvY2spOwpYIAkJfSBlbHNlIGlmICggc3RybmNtcChDQVNUREFUQTJQVFIoZi0+ZGF0
YSwgY2hhciksIEFTVF9DT05GX0NPTlRST0xfQ0FNRVJBX0VOQUJMRUQsIHN0cmxlbihBU1RfQ09O
Rl9DT05UUk9MX0NBTUVSQV9FTkFCTEVEKSkgPT0gMCApClhAQCAtMzM4LDcgKzM4NCw3IEBAClgg
CQkJICAgICAgICAgICAgICAiQ29uZmVyZW5jZUNhbWVyYUVuYWJsZWQiLApYIAkJCSAgICAgICAg
ICAgICAgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCSAgICAg
ICAgICAgICAgY29uZi0+bmFtZSwKWC0JCQkgICAgICAgICAgICAgIG1lbWJlci0+Y2hhbi0+bmFt
ZSk7ClgrCQkJICAgICAgICAgICAgICBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJbWVtYmVy
LT5ub19jYW1lcmEgPSAwOwpYIAkJCWFzdF9tdXRleF91bmxvY2soJm1lbWJlci0+bG9jayk7Clgg
CQl9IGVsc2UgaWYgKCBzdHJuY21wKENBU1REQVRBMlBUUihmLT5kYXRhLCBjaGFyKSwgQVNUX0NP
TkZfQ09OVFJPTF9TVE9QX1ZJREVPX1RSQU5TTUlULCBzdHJsZW4oQVNUX0NPTkZfQ09OVFJPTF9T
VE9QX1ZJREVPX1RSQU5TTUlUKSkgPT0gMCApClhAQCAtMzQ4LDcgKzM5NCw3IEBAClggCQkJICAg
ICAgICAgICAgICAiQ29uZmVyZW5jZVN0b3BWaWRlb1RyYW5zbWl0IiwKWCAJCQkgICAgICAgICAg
ICAgICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwKWCAJCQkgICAgICAg
ICAgICAgIGNvbmYtPm5hbWUsClgtCQkJICAgICAgICAgICAgICBtZW1iZXItPmNoYW4tPm5hbWUp
OwpYKwkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFubmVsX25hbWUpOwpYIAkJCW1lbWJlci0+
bm9yZWN2X3ZpZGVvID0gMTsKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpY
IAkJfSBlbHNlIGlmICggc3RybmNtcChDQVNUREFUQTJQVFIoZi0+ZGF0YSwgY2hhciksIEFTVF9D
T05GX0NPTlRST0xfU1RBUlRfVklERU9fVFJBTlNNSVQsIHN0cmxlbihBU1RfQ09ORl9DT05UUk9M
X1NUQVJUX1ZJREVPX1RSQU5TTUlUKSkgPT0gMCApClhAQCAtMzU4LDcgKzQwNCw3IEBAClggCQkJ
ICAgICAgICAgICAgICAiQ29uZmVyZW5jZVN0YXJ0VmlkZW9UcmFuc21pdCIsClggCQkJICAgICAg
ICAgICAgICAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsClggCQkJICAg
ICAgICAgICAgICBjb25mLT5uYW1lLApYLQkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFuLT5u
YW1lKTsKWCsJCQkgICAgICAgICAgICAgIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAJCQltZW1i
ZXItPm5vcmVjdl92aWRlbyA9IDA7ClggCQkJYXN0X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2Nr
KTsKWCAJCX0KWEBAIC00MDgsOSArNDU0LDEzIEBAClggCQltYW5hZ2VyX2V2ZW50KApYIAkJCUVW
RU5UX0ZMQUdfQ0FMTCwKWCAJCQkiQ29uZmVyZW5jZVNvdW5kQ29tcGxldGUiLApYKwkJCSJDb25m
ZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJCSJNZW1iZXJJZDogJWRcclxuIgpYIAkJCSJDaGFubmVs
OiAlc1xyXG4iClggCQkJIlNvdW5kOiAlc1xyXG4iLApYLQkJCW1lbWJlci0+Y2hhbi0+bmFtZSwK
WCsJCQltZW1iZXItPmNvbmZfbmFtZSwKWCsJCQltZW1iZXItPmlkLApYKwkJCW1lbWJlci0+Y2hh
bm5lbF9uYW1lLApYIAkJCXRvYm9vdC0+bmFtZQpYIAkJKTsKWCAJfQpYQEAgLTQyMSwxNCArNDcx
LDEyIEBAClggCWZyZWUodG9ib290KTsKWCAJaWYobWVtYmVyLT5zb3VuZHEpIGdvdG8gYWdhaW47
ClggClgtCW1lbWJlci0+bXV0ZWQgPSAwOwpYLQpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXIt
PmxvY2spOwpYIApYIAkvLyBpZiB3ZSBnZXQgaGVyZSwgd2UndmUgZ290dGVuIHRvIHRoZSBlbmQg
b2YgdGhlIHF1ZXVlOyByZXNldCB3cml0ZSBmb3JtYXQKWCAJaWYgKCBhc3Rfc2V0X3dyaXRlX2Zv
cm1hdCggbWVtYmVyLT5jaGFuLCBtZW1iZXItPndyaXRlX2Zvcm1hdCApIDwgMCApClggCXsKWC0J
CWFzdF9sb2coIExPR19FUlJPUiwgInVuYWJsZSB0byBzZXQgd3JpdGUgZm9ybWF0IHRvICVkXG4i
LApYKwkJYXN0X2xvZyggTE9HX0VSUk9SLCAidW5hYmxlIHRvIHNldCB3cml0ZSBmb3JtYXQgdG8g
IiBBU1RfRk1UX0ZPUk1BVF9UICJcbiIsClggCQkgICAgbWVtYmVyLT53cml0ZV9mb3JtYXQgKSA7
ClggCX0KWCAgICAgfSBlbHNlIHsKWEBAIC00NzQsNiArNTIyLDcgQEAKWCAJCQl9ClggCQl9IGVs
c2UgewpYIAkJCWlmIChtZW1iZXItPm1vaF9mbGFnKSB7ClgrCQkJCW1lbWJlci0+bXV0ZWQgPSAx
OwpYIAkJCQltZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDA7ClggCQkJCWRlbGV0ZV9jb25m
X2ZyYW1lKCBjZiApIDsKWCAJCQkJYXN0X21vaF9zdGFydChtZW1iZXItPmNoYW4sIE5VTEwsIE5V
TEwpOwpYQEAgLTUxMiw3ICs1NjEsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGUoIG1lbWJlci0+Y2hh
biwgZiApICE9IDAgKQpYIAkJewpYIAkJCS8vIGxvZyAnZHJvcHBlZCcgb3V0Z29pbmcgZnJhbWUK
WC0JCQlERUJVRygidW5hYmxlIHRvIHdyaXRlIHZvaWNlIGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5u
ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8g
d3JpdGUgdm9pY2UgZnJhbWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5j
aGFubmVsX25hbWUpIDsKWCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdv
aW5nIGZyYW1lcwpYIAkJCW1lbWJlci0+ZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTU0Nyw3
ICs1OTYsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGVfdmlkZW8oIG1lbWJlci0+Y2hhbiwgZiApICE9
IDEgKQpYIAkJewpYIAkJCS8vIGxvZyAnZHJvcHBlZCcgb3V0Z29pbmcgZnJhbWUKWC0JCQlERUJV
RygidW5hYmxlIHRvIHdyaXRlIHZpZGVvIGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNc
biIsIG1lbWJlci0+Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8gd3JpdGUgdmlk
ZW8gZnJhbWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25h
bWUpIDsKWCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1l
cwpYIAkJCW1lbWJlci0+dmlkZW9fZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTU3NSw3ICs2
MjQsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGUoIG1lbWJlci0+Y2hhbiwgY2YtPmZyICkgIT0gMCAp
ClggCQl7ClggCQkJLy8gbG9nICdkcm9wcGVkJyBvdXRnb2luZyBmcmFtZQpYLQkJCURFQlVHKCJ1
bmFibGUgdG8gd3JpdGUgZHRtZiBmcmFtZSB0byBjaGFubmVsLCBjaGFubmVsID0+ICVzXG4iLCBt
ZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJCQlERUJVRygidW5hYmxlIHRvIHdyaXRlIGR0bWYgZnJh
bWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsK
WCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJ
CW1lbWJlci0+ZHRtZl9mcmFtZXNfb3V0X2Ryb3BwZWQrKyA7ClhAQCAtNjAzLDcgKzY1Miw3IEBA
ClggCQlpZiAoIGFzdF93cml0ZSggbWVtYmVyLT5jaGFuLCBjZi0+ZnIgKSAhPSAwICkKWCAJCXsK
WCAJCQkvLyBsb2cgJ2Ryb3BwZWQnIG91dGdvaW5nIGZyYW1lClgtCQkJREVCVUcoInVuYWJsZSB0
byB3cml0ZSB0ZXh0IGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNcbiIsIG1lbWJlci0+
Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8gd3JpdGUgdGV4dCBmcmFtZSB0byBj
aGFubmVsLCBjaGFubmVsID0+ICVzXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgOwpYIApYIAkJ
CS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29pbmcgZnJhbWVzClggCQkJbWVtYmVy
LT50ZXh0X2ZyYW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC02MjUsMTQgKzY3NCwxNSBAQApYIC8v
IG1haW4gbWVtYmVyIHRocmVhZCBmdW5jdGlvbgpYIC8vClggClgtaW50IG1lbWJlcl9leGVjKCBz
dHJ1Y3QgYXN0X2NoYW5uZWwqIGNoYW4sIHZvaWQqIGRhdGEgKQpYK2ludCBtZW1iZXJfZXhlYygg
c3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkKWCB7ClggLy8Jc3Ry
dWN0IHRpbWV2YWwgc3RhcnQsIGVuZCA7ClggLy8Jc3RhcnQgPSBhc3RfdHZub3coKTsKWCAKWCAJ
c3RydWN0IGFzdF9jb25mZXJlbmNlICpjb25mIDsKWC0JY2hhciBjb25mX25hbWVbQ09ORl9OQU1F
X0xFTiArIDFdICA9IHsgMCB9OwpYIAlzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyICptZW1iZXIgOwpY
Kwljb25zdCBjaGFyICpyZWNmaWxlID0gTlVMTCwgKnJlY2Zvcm1hdCA9IE5VTEw7ClgrCWNoYXIg
cmVjZGVmYXVsdGZpbGVbQVNUX01BWF9FWFRFTlNJT05dOwpYIApYIAlzdHJ1Y3QgYXN0X2ZyYW1l
ICpmIDsgLy8gZnJhbWUgcmVjZWl2ZWQgZnJvbSBhc3RfcmVhZCgpClggClhAQCAtNjYxLDcgKzcx
MSw3IEBAClggClggCS8vREVCVUcoImNyZWF0aW5nIG5ldyBtZW1iZXIsIGlkID0+ICVzLCBmbGFn
cyA9PiAlcywgcCA9PiAlc1xuIiwgaWQsIGZsYWdzLCBwcmlvcml0eSkgOwpYIApYLQltZW1iZXIg
PSBjcmVhdGVfbWVtYmVyKCBjaGFuLCAoY29uc3QgY2hhciopKCBkYXRhICksIGNvbmZfbmFtZSAp
IDsgLy8gZmxhZ3MsIGF0b2koIHByaW9yaXR5ICkgKSA7ClgrCW1lbWJlciA9IGNyZWF0ZV9tZW1i
ZXIoIGNoYW4sIChjb25zdCBjaGFyKikoIGRhdGEgKSApIDsgLy8gZmxhZ3MsIGF0b2koIHByaW9y
aXR5ICkgKSA7ClggClggCS8vIHVuYWJsZSB0byBjcmVhdGUgbWVtYmVyLCByZXR1cm4gYW4gZXJy
b3IKWCAJaWYgKCBtZW1iZXIgPT0gTlVMTCApClhAQCAtNjkyLDE3ICs3NDIsMzIgQEAKWCAJfQpY
IApYIAkvLwpYLQkvLyBzZXR1cCBhIGNvbmZlcmVuY2UgZm9yIHRoZSBuZXcgbWVtYmVyClgrCS8v
IHJlY29yZGluZwpYIAkvLwpYKwlpZiAobWVtYmVyLT5yZWNvcmRfZmxhZykKWCsJewpYKwkJcmVj
ZmlsZSA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hhbiwgIktPTkZFUkVOQ0VfUkVDT1JE
SU5HRklMRSIpOwpYKwkJaWYgKCFyZWNmaWxlKSB7ClgrCQkJc25wcmludGYocmVjZGVmYXVsdGZp
bGUsIHNpemVvZihyZWNkZWZhdWx0ZmlsZSksClgrCQkJCSAia29uZmVyZW5jZS0lcy0lcyIsIG1l
bWJlci0+Y29uZl9uYW1lLCBtZW1iZXItPnVuaXF1ZWlkKTsKWCsJCQlyZWNmaWxlID0gcmVjZGVm
YXVsdGZpbGU7ClgrCQl9ClggClgtCWNoYXIgbWF4X3VzZXJzX2ZsYWcgPSAwIDsKWC0JY29uZiA9
IGpvaW5fY29uZmVyZW5jZSggbWVtYmVyLCBjb25mX25hbWUsICZtYXhfdXNlcnNfZmxhZyApIDsK
WCsJCXJlY2Zvcm1hdCA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hhbiwgIktPTkZFUkVO
Q0VfUkVDT1JESU5HRk9STUFUIik7ClgrCQlpZiAoIXJlY2Zvcm1hdCkKWCsJCQlyZWNmb3JtYXQg
PSAid2F2IjsKWCsJfQpYIApYKwkvLwpYKwkvLyBzZXR1cCBhIGNvbmZlcmVuY2UgZm9yIHRoZSBu
ZXcgbWVtYmVyClgrCS8vClgrClgrCWNvbmYgPSBqb2luX2NvbmZlcmVuY2UoIG1lbWJlciwgcmVj
ZmlsZSwgcmVjZm9ybWF0ICkgOwpYIAlpZiAoIGNvbmYgPT0gTlVMTCApClggCXsKWC0JCWFzdF9s
b2coIExPR19OT1RJQ0UsICJ1bmFibGUgdG8gc2V0dXAgbWVtYmVyIGNvbmZlcmVuY2UgJXM6IG1h
eF91c2Vyc19mbGFnIGlzICVkXG4iLCBjb25mX25hbWUsIG1heF91c2Vyc19mbGFnICkgOwpYKwkJ
YXN0X2xvZyggTE9HX05PVElDRSwgInVuYWJsZSB0byBzZXR1cCBtZW1iZXIgY29uZmVyZW5jZSAl
c1xuIiwgbWVtYmVyLT5jb25mX25hbWUpIDsKWCAJCWRlbGV0ZV9tZW1iZXIoIG1lbWJlcikgOwpY
LQkJcmV0dXJuIChtYXhfdXNlcnNfZmxhZyA/IDAgOiAtMSApIDsKWCsJCXJldHVybiAwOwpYIAl9
ClggClggCS8vClhAQCAtNzE4LDcgKzc4Myw3IEBAClggCQkJc3B5ZWUtPnNweV9wYXJ0bmVyID0g
bWVtYmVyOwpYIAkJCWFzdF9tdXRleF91bmxvY2soICZzcHllZS0+bG9jayApIDsKWCAKWC0JCQkv
L0RFQlVHKCJTdGFydCBzcHllciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFt
ZSwgbWVtYmVyLT5zcHllZV9jaGFubmVsX25hbWUpIDsKWCsJCQkvL0RFQlVHKCJTdGFydCBzcHll
ciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVl
X2NoYW5uZWxfbmFtZSkgOwpYIAkJfSBlbHNlClggCQl7ClggCQkJaWYgKCBzcHllZSAhPSBOVUxM
ICkgewpYQEAgLTcyNyw4ICs3OTIsOCBAQApYIAkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmc3B5ZWUt
PmxvY2sgKSA7ClggCQkJfQpYIAkJCXBieF9idWlsdGluX3NldHZhcl9oZWxwZXIobWVtYmVyLT5j
aGFuLCAiS09ORkVSRU5DRSIsICJTUFlGQUlMRUQiICk7ClgtCQkJLy9ERUJVRygiRmFpbGVkIHRv
IHN0YXJ0IHNweWVyICVzLCBzcHllZSBpcyAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBtZW1i
ZXItPnNweWVlX2NoYW5uZWxfbmFtZSkgOwpYLQkJCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29u
ZiwgY29uZl9uYW1lICkgOwpYKwkJCS8vREVCVUcoIkZhaWxlZCB0byBzdGFydCBzcHllciAlcywg
c3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVlX2NoYW5u
ZWxfbmFtZSkgOwpYKwkJCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29uZiApIDsKWCAJCQlyZXR1
cm4gMCA7ClggCQl9ClggCX0gClhAQCAtNzUzLDI2ICs4MTgsNDkgQEAKWCAJCSJDaGFubmVsOiAl
c1xyXG4iClggCQkiQ2FsbGVySUQ6ICVzXHJcbiIKWCAJCSJDYWxsZXJJRE5hbWU6ICVzXHJcbiIK
WCsJCSJNdXRlZDogJXNcclxuIgpYKwkJIlNwZWFraW5nOiAlc1xyXG4iClggCQkiTW9kZXJhdG9y
czogJWRcclxuIgpYIAkJIkNvdW50OiAlZFxyXG4iLApYIAkJY29uZi0+bmFtZSwKWCAJCW1lbWJl
ci0+dHlwZSwKWC0JCW1lbWJlci0+Y2hhbi0+dW5pcXVlaWQsClgrCQltZW1iZXItPnVuaXF1ZWlk
LApYIAkJbWVtYmVyLT5pZCwKWCAJCW1lbWJlci0+ZmxhZ3MsClgtCQltZW1iZXItPmNoYW4tPm5h
bWUsClgtCQltZW1iZXItPmNoYW4tPmNpZC5jaWRfbnVtID8gbWVtYmVyLT5jaGFuLT5jaWQuY2lk
X251bSA6ICJ1bmtub3duIiwKWC0JCW1lbWJlci0+Y2hhbi0+Y2lkLmNpZF9uYW1lID8gbWVtYmVy
LT5jaGFuLT5jaWQuY2lkX25hbWU6ICJ1bmtub3duIiwKWCsJCW1lbWJlci0+Y2hhbm5lbF9uYW1l
LApYKwkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJlci0+Y2hhbiksClgrCQlhc3Rf
Y2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hhbiksClgrCQkobWVtYmVyLT5tdXRlX2F1
ZGlvID09IDAgPyAiRmFsc2UiIDogIlRydWUiKSwKWCsJCShtZW1iZXItPnNwZWFraW5nX3N0YXRl
ID09IDEgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCAJCWNvbmYtPnN0YXRzLm1vZGVyYXRvcnMsClgg
CQljb25mLT5tZW1iZXJjb3VudApYIAkpIDsKWCAKWCAJLy8KWCsJLy8gcGxheSB3ZWxjb21lIHBy
b21wdApYKwkvLwpYKwlpZiAobWVtYmVyLT53ZWxjb21lX3Byb21wdCkgewpYKwkJYXN0X3N0b3Bz
dHJlYW0oY2hhbik7ClgrCQlyZXMgPSBhc3Rfc3RyZWFtZmlsZShjaGFuLCBtZW1iZXItPndlbGNv
bWVfcHJvbXB0LCBjaGFuLT5sYW5ndWFnZSk7ClgrCQlpZiAoIXJlcykgewpYKwkJCXJlcyA9IGFz
dF93YWl0c3RyZWFtKGNoYW4sICIiKTsKWCsJCQlhc3Rfc3RvcHN0cmVhbShjaGFuKTsKWCsJCX0g
ZWxzZSB7ClgrCQkJYXN0X2xvZyhMT0dfV0FSTklORywgIkZhaWxlZCB0byBwbGF5IHdlbGNvbWUg
cHJvbXB0ICclcycgb24gY2hhbm5lbCAnJXMnIiwKWCsJCQkJbWVtYmVyLT53ZWxjb21lX3Byb21w
dCwgY2hhbi0+bmFtZSk7ClgrCQl9ClgrCX0KWCsKWCsJLy8KWCAJLy8gcHJvY2VzcyBsb29wIGZv
ciBuZXcgbWVtYmVyICggdGhpcyBydW5zIGluIGl0J3Mgb3duIHRocmVhZCApClggCS8vClggClgg
CURFQlVHKCJiZWdpbiBtZW1iZXIgZXZlbnQgbG9vcCwgY2hhbm5lbCA9PiAlc1xuIiwgY2hhbi0+
bmFtZSkgOwpYIApYKwkvLyB0aW1lciB0aW1lc3RhbXBzClgrCXN0cnVjdCB0aW1ldmFsIGJhc2Us
IGN1cnIgOwpYKwliYXNlID0gYXN0X3R2bm93KCk7ClgrClggCS8vIHRlbGwgY29uZmVyZW5jZV9l
eGVjIHdlJ3JlIHJlYWR5IGZvciBmcmFtZXMKWCAJbWVtYmVyLT5yZWFkeV9mb3Jfb3V0Z29pbmcg
PSAxIDsKWCAJd2hpbGUgKCA0MiA9PSA0MiApClhAQCAtODA4LDcgKzg5Niw3IEBAClggCQkJLy8g
bm8gZnJhbWUgaGFzIGFycml2ZWQgeWV0ClggCQkJLy8gYXN0X2xvZyggTE9HX05PVElDRSwgIm5v
IGZyYW1lIGF2YWlsYWJsZSBmcm9tIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNcbiIsIGNoYW4tPm5h
bWUgKSA7ClggCQl9ClgtCQllbHNlIGlmICggbGVmdCA+IDAgKQpYKwkJZWxzZSBpZiAoIGxlZnQg
PiAwICYmIGNoYW4tPmZkbm8gIT0gQVNUX0dFTkVSQVRPUl9GRCApClggCQl7ClggCQkJLy8gYSBm
cmFtZSBoYXMgY29tZSBpbiBiZWZvcmUgdGhlIGxhdGVuY3kgdGltZW91dApYIAkJCS8vIHdhcyBy
ZWFjaGVkLCBzbyB3ZSBwcm9jZXNzIHRoZSBmcmFtZQpYQEAgLTgzNiwxNiArOTI0LDE0IEBAClgg
CQkJcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihtZW1iZXItPmNoYW4sICJLT05GRVJFTkNFIiwg
IktJQ0tFRCIgKTsKWCAJCQlicmVhazsKWCAJCX0KWC0JCQpYLQkJaWYgKCBtZW1iZXItPm1vaF9z
dG9wICkgewpYLQkJCWFzdF9tb2hfc3RvcChtZW1iZXItPmNoYW4pOwpYLQkJCW1lbWJlci0+bW9o
X3N0b3AgPSAwOwpYLQkJfQpYIApYIAkJLy8tLS0tLS0tLS0tLS0tLS0tLS8vClggCQkvLyBPVVRH
T0lORyBGUkFNRVMgLy8KWCAJCS8vLS0tLS0tLS0tLS0tLS0tLS0vLwpYIApYKwkJLy8gdXBkYXRl
IHRoZSBjdXJyZW50IHRpbWVzdGFtcHMKWCsJCWN1cnIgPSBhc3RfdHZub3coKTsKWCsKWCAJCWlm
ICggIXByb2Nlc3Nfb3V0Z29pbmcobWVtYmVyKSApClggCQkJLy8gYmFjayB0byBwcm9jZXNzIGlu
Y29taW5nIGZyYW1lcwpYIAkJCWNvbnRpbnVlIDsKWEBAIC04ODIsMTAgKzk2OCwxMCBAQApYIApY
IAkJYXN0X211dGV4X3VubG9jayAoICZzcHllZS0+bG9jayApIDsKWCAKWC0JCS8vREVCVUcoIkVu
ZCBzcHllciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5z
cHllZV9jaGFubmVsX25hbWUpIDsKWCsJCS8vREVCVUcoIkVuZCBzcHllciAlcywgc3B5ZWUgaXMg
JXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVlX2NoYW5uZWxfbmFtZSkg
OwpYIAl9ClggClgtCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29uZiwgY29uZl9uYW1lICkgOwpY
KwlyZW1vdmVfbWVtYmVyKCBtZW1iZXIsIGNvbmYgKSA7ClggCXJldHVybiAwIDsKWCB9ClggClhA
QCAtOTE0LDExICsxMDAwLDQ0IEBAClggICAgICByZXR1cm4gTlVMTDsKWCB9ClggI2VuZGlmClgr
Clgrc3RhdGljIGludCBjb252ZXJ0X2Zvcm1hdF90b19pbmRleChmb3JtYXRfdCBmb3JtYXQpClgr
ewpYKwlzd2l0Y2ggKCBmb3JtYXQgKQpYKwl7ClgrCWNhc2UgQVNUX0NPTkZfRk9STUFUOgpYKwkJ
cmV0dXJuIEFDX1NMSU5FQVJfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9VTEFXOgpYKwkJcmV0
dXJuIEFDX1VMQVdfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9BTEFXOgpYKwkJcmV0dXJuIEFD
X0FMQVdfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9HU006ClgrCQlyZXR1cm4gQUNfR1NNX0lO
REVYOwpYKwljYXNlIEFTVF9GT1JNQVRfU1BFRVg6ClgrCQlyZXR1cm4gQUNfU1BFRVhfSU5ERVg7
ClgrI2lmZGVmIEFDX1VTRV9HNzI5QQpYKwljYXNlIEFTVF9GT1JNQVRfRzcyOUE6ClgrCQlyZXR1
cm4gQUNfRzcyOUFfSU5ERVg7ClgrI2VuZGlmClgrI2lmZGVmIEFDX1VTRV9HNzIyClgrCWNhc2Ug
QVNUX0ZPUk1BVF9HNzIyOgpYKwkJcmV0dXJuIEFDX0c3MjJfSU5ERVg7ClgrI2VuZGlmClgrI2lm
ZGVmIEFDX1VTRV9TUEVFWDE2ClgrCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDE2OgpYKwkJcmV0dXJu
IEFDX1NQRUVYMTZfSU5ERVg7ClgrI2VuZGlmClgrCWRlZmF1bHQ6ClgrCQlicmVhazsKWCsJfQpY
KwlyZXR1cm4gMDsKWCt9ClgrClggLy8KWCAvLyBtYW5hbmdlIG1lbWJlciBmdW5jdGlvbnMKWCAv
LwpYIApYLXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIGNyZWF0ZV9tZW1iZXIoIHN0cnVjdCBhc3Rf
Y2hhbm5lbCAqY2hhbiwgY29uc3QgY2hhciogZGF0YSwgY2hhciogY29uZl9uYW1lICkKWCtzdHJ1
Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1Y3QgYXN0X2NoYW5uZWwgKmNo
YW4sIGNvbnN0IGNoYXIqIGRhdGEgKQpYIHsKWCAjaWZkZWYJQVBQX0tPTkZFUkVOQ0VfREVCVUcK
WCAJLy8KWEBAIC05NTQsMjAgKzEwNzMsMjYgQEAKWCAKWCAJLy8gaW5pdGlhbGl6ZSBjdgpYIAlh
c3RfY29uZF9pbml0KCAmbWVtYmVyLT5kZWxldGVfdmFyLCBOVUxMICkgOwpYKwkvLyBpbml0aWFs
aXplIGZsYWcgYW5kIGNvdW50ClgrCW1lbWJlci0+ZGVsZXRlX2ZsYWcgPSBtZW1iZXItPnVzZV9j
b3VudCA9IDAgOwpYIApYIAkvLyBEZWZhdWx0IHZhbHVlcyBmb3IgcGFyYW1ldGVycyB0aGF0IGNh
biBnZXQgb3ZlcndyaXR0ZW4gYnkgZGlhbHBsYW4gYXJndW1lbnRzClggI2lmZGVmCVZJREVPClgg
CW1lbWJlci0+dmlkZW9fc3RhcnRfdGltZW91dCA9IEFTVF9DT05GX1ZJREVPX1NUQVJUX1RJTUVP
VVQ7ClggCW1lbWJlci0+dmlkZW9fc3RvcF90aW1lb3V0ID0gQVNUX0NPTkZfVklERU9fU1RPUF9U
SU1FT1VUOwpYICNlbmRpZgpYKwltZW1iZXItPnByaW9yaXR5ID0gMDsKWCAJbWVtYmVyLT52YWRf
cHJvYl9zdGFydCA9IEFTVF9DT05GX1BST0JfU1RBUlQ7ClggCW1lbWJlci0+dmFkX3Byb2JfY29u
dGludWUgPSBBU1RfQ09ORl9QUk9CX0NPTlRJTlVFOwpYIAltZW1iZXItPm1heF91c2VycyA9IEFT
VF9DT05GX01BWF9VU0VSUzsKWCsJbWVtYmVyLT50eXBlID0gTlVMTDsKWCsJbWVtYmVyLT5zcHll
ZV9jaGFubmVsX25hbWUgPSBOVUxMOwpYKwltZW1iZXItPndlbGNvbWVfcHJvbXB0ID0gTlVMTDsK
WCAKWCAJLy8KWCAJLy8gaW5pdGlhbGl6ZSBtZW1iZXIgd2l0aCBwYXNzZWQgZGF0YSB2YWx1ZXMK
WCAJLy8KWC0JY2hhciBhcmdzdHJbMjU2XSA9IHsgMCB9OwpYKwljaGFyIGFyZ3N0clsyNTZdIDsK
WCAKWCAJLy8gY29weSB0aGUgcGFzc2VkIGRhdGEKWCAJc3RybmNweSggYXJnc3RyLCBkYXRhLCBz
aXplb2YoYXJnc3RyKSAtIDEgKSA7ClhAQCAtOTgxLDcgKzExMDYsOCBAQApYIAljaGFyICp0b2tl
bjsKWCAJaWYgKCAoIHRva2VuID0gc3Ryc2VwKCAmc3RyaW5ncCwgYXJndW1lbnRfZGVsaW1pdGVy
ICkgKSAhPSBOVUxMICkKWCAJewpYLQkJc3RybmNweSggY29uZl9uYW1lLCB0b2tlbiwgQ09ORl9O
QU1FX0xFTiApIDsKWCsJCW1lbWJlci0+Y29uZl9uYW1lID0gbWFsbG9jKCBzdHJsZW4oIHRva2Vu
ICkgKyAxICkgOwpYKwkJc3RyY3B5KCBtZW1iZXItPmNvbmZfbmFtZSwgdG9rZW4gKSA7ClggCX0K
WCAJZWxzZQpYIAl7ClhAQCAtMTAxNSw2ICsxMTQxLDcgQEAKWCAJCXN0YXRpYyBjb25zdCBjaGFy
IGFyZ19tYXhfdXNlcnNbXSA9ICJtYXhfdXNlcnMiOwpYIAkJc3RhdGljIGNvbnN0IGNoYXIgYXJn
X2NvbmZfdHlwZVtdID0gInR5cGUiOwpYIAkJc3RhdGljIGNvbnN0IGNoYXIgYXJnX2NoYW5zcHlb
XSA9ICJzcHkiOwpYKwkJc3RhdGljIGNvbnN0IGNoYXIgYXJnX3dlbGNvbWVwcm9tcHRbXSA9ICJ3
ZWxjb21lX3Byb21wdCI7ClggClggCQljaGFyICp2YWx1ZSA9IHRva2VuOwpYIAkJY29uc3QgY2hh
ciAqa2V5ID0gc3Ryc2VwKCZ2YWx1ZSwgIj0iKTsKWEBAIC0xMDYwLDYgKzExODcsMTEgQEAKWCAJ
CQltZW1iZXItPnNweWVlX2NoYW5uZWxfbmFtZSA9IG1hbGxvYyggc3RybGVuKCB2YWx1ZSApICsg
MSApIDsKWCAJCQlzdHJjcHkoIG1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lLCB2YWx1ZSApIDsK
WCAJCQlERUJVRygic3B5ZWUgY2hhbm5lbCBuYW1lIGlzICVzXG4iLCBtZW1iZXItPnNweWVlX2No
YW5uZWxfbmFtZSkgOwpYKwkJfSBlbHNlIGlmICggc3RybmNhc2VjbXAoa2V5LCBhcmdfd2VsY29t
ZXByb21wdCwgc2l6ZW9mKGFyZ193ZWxjb21lcHJvbXB0KSAtIDEpID09IDAgKQpYKwkJewpYKwkJ
CW1lbWJlci0+d2VsY29tZV9wcm9tcHQgPSBtYWxsb2MoIHN0cmxlbiggdmFsdWUgKSArIDEgKSA7
ClgrCQkJc3RyY3B5KCBtZW1iZXItPndlbGNvbWVfcHJvbXB0LCB2YWx1ZSApIDsKWCsJCQlERUJV
Rygid2VsY29tZSBwcm9tcHQgaXMgJXNcbiIsIG1lbWJlci0+d2VsY29tZV9wcm9tcHQpIDsKWCAJ
CX0gZWxzZQpYIAkJewpYIAkJCWFzdF9sb2coTE9HX1dBUk5JTkcsICJ1bmtub3duIHBhcmFtZXRl
ciAlcyB3aXRoIHZhbHVlICVzXG4iLCBrZXksIHZhbHVlKSA7ClhAQCAtMTA3Myw2ICsxMjA1LDE0
IEBAClggCS8vIGtlZXAgcG9pbnRlciB0byBtZW1iZXIncyBjaGFubmVsClggCW1lbWJlci0+Y2hh
biA9IGNoYW4gOwpYIApYKwkvLyBjb3B5IHRoZSBjaGFubmVsIG5hbWUKWCsJbWVtYmVyLT5jaGFu
bmVsX25hbWUgPSBtYWxsb2MoIHN0cmxlbiggY2hhbi0+bmFtZSApICsgMSApIDsKWCsJc3RyY3B5
KCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgY2hhbi0+bmFtZSApIDsKWCsKWCsJLy8gY29weSB0aGUg
dW5pcXVlaWQKWCsJbWVtYmVyLT51bmlxdWVpZCA9IG1hbGxvYyggc3RybGVuKCBjaGFuLT51bmlx
dWVpZCApICsgMSApIDsKWCsJc3RyY3B5KCBtZW1iZXItPnVuaXF1ZWlkLCBjaGFuLT51bmlxdWVp
ZCApIDsKWCsKWCAJLy8gc2V0IGRlZmF1bHQgaWYgbm8gdHlwZSBwYXJhbWV0ZXIKWCAJaWYgKCFt
ZW1iZXItPnR5cGUpIHsKWCAJCW1lbWJlci0+dHlwZSA9IG1hbGxvYyggc3RybGVuKCBBU1RfQ09O
Rl9UWVBFX0RFRkFVTFQgKSArIDEgKSA7ClhAQCAtMTA4MCw5ICsxMjIwLDUzIEBAClggCQlERUJV
RygidHlwZSA9ICVzXG4iLCBtZW1iZXItPnR5cGUpIDsKWCAJfQpYIApYKwkvLyBzcHlfcGFydG5l
ciBkZWZhdWx0IGlzIE5VTEwKWCsJbWVtYmVyLT5zcHlfcGFydG5lciA9IE5VTEw7ClgrClgrCS8v
ICggZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzZWQgZmxhZ3MgKQpYKwltZW1iZXIt
Pm11dGVfYXVkaW8gPSAwOwpYKyNpZmRlZglWSURFTwpYKwltZW1iZXItPm11dGVfdmlkZW8gPSAw
OwpYKyNlbmRpZgpYKwltZW1iZXItPnRhbGtfdm9sdW1lID0gMDsKWCsJbWVtYmVyLT5saXN0ZW5f
dm9sdW1lID0gMDsKWCsJbWVtYmVyLT5ub3JlY3ZfYXVkaW8gPSAwOwpYKyNpZmRlZglWSURFTwpY
KwltZW1iZXItPm5vcmVjdl92aWRlbyA9IDA7ClgrCW1lbWJlci0+bm9fY2FtZXJhID0gMDsKWCsj
ZW5kaWYKWCsJLy8gbW9kZXJhdG9yPwpYKwltZW1iZXItPmlzbW9kZXJhdG9yID0gMDsKWCsJbWVt
YmVyLT5raWNrX2NvbmZlcmVlcyA9IDA7ClgrClgrCS8vIHJlYWR5IGZsYWcKWCsJbWVtYmVyLT5y
ZWFkeV9mb3Jfb3V0Z29pbmcgPSAwIDsKWCsKWCsJLy8gaW5jb21pbmcgZnJhbWUgcXVldWUKWCsJ
bWVtYmVyLT5pbkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPmluRnJhbWVzVGFpbCA9IE5VTEwg
OwpYKwltZW1iZXItPmluRnJhbWVzQ291bnQgPSAwIDsKWCsjaWZkZWYJVklERU8KWCsJbWVtYmVy
LT5pblZpZGVvRnJhbWVzID0gTlVMTCA7ClgrCW1lbWJlci0+aW5WaWRlb0ZyYW1lc1RhaWwgPSBO
VUxMIDsKWCsJbWVtYmVyLT5pblZpZGVvRnJhbWVzQ291bnQgPSAwIDsKWCsjZW5kaWYKWCsjaWZk
ZWYJRFRNRgpYKwltZW1iZXItPmluRFRNRkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPmluRFRN
RkZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCA9IDAgOwpY
KyNlbmRpZgpYKyNpZmRlZglURVhUClgrCW1lbWJlci0+aW5UZXh0RnJhbWVzID0gTlVMTCA7Clgr
CW1lbWJlci0+aW5UZXh0RnJhbWVzVGFpbCA9IE5VTEwgOwpYKwltZW1iZXItPmluVGV4dEZyYW1l
c0NvdW50ID0gMCA7ClgrI2VuZGlmClggI2lmZGVmCVZJREVPClggCW1lbWJlci0+Y29uZmVyZW5j
ZSA9IDE7IC8vIHdlIGhhdmUgc3dpdGNoZWQgcmVxX2lkClgrCW1lbWJlci0+ZHRtZl9zd2l0Y2gg
PSAwOyAvLyBubyBkdG1mIHN3aXRjaCBieSBkZWZhdWx0ClggI2VuZGlmClgrCW1lbWJlci0+ZHRt
Zl9yZWxheSA9IDA7IC8vIG5vIGR0bWYgcmVsYXkgYnkgZGVmYXVsdApYKwltZW1iZXItPmR0bWZf
c3Rhcl9tZW51ID0gMDsgLy8gbm8gZHRtZiBzdGFyIG1lbnUgYnkgZGVmYXVsdApYIApYIAkvLyBz
dGFydCBvZiBkYXkgdmlkZW8gaWRzClggI2lmZGVmCVZJREVPClhAQCAtMTA5MCwyMyArMTI3NCwx
MTMgQEAKWCAjZW5kaWYKWCAJbWVtYmVyLT5pZCA9IC0xOwpYIApYKwltZW1iZXItPmZpcnN0X2Zy
YW1lX3JlY2VpdmVkID0gMDsgLy8gY2F1c2UgYSBGSVIgYWZ0ZXIgTkFUIGRlbGF5ClgrClgrCS8v
IGxhc3QgZnJhbWUgY2FjaGluZwpYKwltZW1iZXItPmluRnJhbWVzUmVwZWF0TGFzdCA9IDAgOwpY
KwltZW1iZXItPmluRnJhbWVzTGFzdCA9IE5VTEwgOwpYKwltZW1iZXItPm9rYXlUb0NhY2hlTGFz
dCA9IDAgOwpYKwpYKwkvLyBvdXRnb2luZyBmcmFtZSBxdWV1ZQpYKwltZW1iZXItPm91dEZyYW1l
cyA9IE5VTEwgOwpYKwltZW1iZXItPm91dEZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5v
dXRGcmFtZXNDb3VudCA9IDAgOwpYKyNpZmRlZglWSURFTwpYKwltZW1iZXItPm91dFZpZGVvRnJh
bWVzID0gTlVMTCA7ClgrCW1lbWJlci0+b3V0VmlkZW9GcmFtZXNUYWlsID0gTlVMTCA7ClgrCW1l
bWJlci0+b3V0VmlkZW9GcmFtZXNDb3VudCA9IDAgOwpYKyNlbmRpZgpYKyNpZmRlZglEVE1GClgr
CW1lbWJlci0+b3V0RFRNRkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPm91dERUTUZGcmFtZXNU
YWlsID0gTlVMTCA7ClgrCW1lbWJlci0+b3V0RFRNRkZyYW1lc0NvdW50ID0gMCA7ClgrI2VuZGlm
ClgrI2lmZGVmCVRFWFQKWCsJbWVtYmVyLT5vdXRUZXh0RnJhbWVzID0gTlVMTCA7ClgrCW1lbWJl
ci0+b3V0VGV4dEZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5vdXRUZXh0RnJhbWVzQ291
bnQgPSAwIDsKWCsjZW5kaWYKWCAJLy8gKCBub3QgY3VycmVudGx5IHVzZWQgKQpYIAkvLyBtZW1i
ZXItPnNhbXBsZXNwZXJmcmFtZSA9IEFTVF9DT05GX0JMT0NLX1NBTVBMRVMgOwpYIApYKwkvLyB1
c2VkIGZvciBkZXRlcm1pbmluZyBuZWVkIHRvIG1peCBmcmFtZXMKWCsJLy8gYW5kIGZvciBtYW5h
Z2VtZW50IGludGVyZmFjZSBub3RpZmljYXRpb24KWCsJLy8gYW5kIGZvciBWQUQgYmFzZWQgdmlk
ZW8gc3dpdGNoaW5nClgrCW1lbWJlci0+c3BlYWtpbmdfc3RhdGVfbm90aWZ5ID0gMCA7ClgrCW1l
bWJlci0+c3BlYWtpbmdfc3RhdGUgPSAwIDsKWCsJbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0
ZSA9IDA7ClgrCW1lbWJlci0+bGFzdF9zdGF0ZV9jaGFuZ2UgPSAoc3RydWN0IHRpbWV2YWwpezAs
IDB9OwpYKwltZW1iZXItPnNwZWFrZXJfY291bnQgPSAwOwpYKyNpZmRlZglWSURFTwpYKwltZW1i
ZXItPmRyaXZlbl9tZW1iZXIgPSBOVUxMOwpYKwpYKwltZW1iZXItPnZpZGVvX2Jyb2FkY2FzdF9h
Y3RpdmUgPSAwOwpYKwltZW1iZXItPmxhc3RfdmlkZW9fZnJhbWVfdGltZSA9IChzdHJ1Y3QgdGlt
ZXZhbCl7MCwgMH07ClgrClgrCW1lbWJlci0+dmlkZW9fc3RhcnRlZCA9IDA7ClgrI2VuZGlmClgr
CS8vIGxpbmtlZC1saXN0IHBvaW50ZXJzClgrCW1lbWJlci0+bmV4dCA9IE5VTEwgOwpYKyNpZm5k
ZWYJVklERU8KWCsJbWVtYmVyLT5wcmV2ID0gTlVMTCA7ClgrI2VuZGlmClgrCW1lbWJlci0+YnVj
a2V0ID0gTlVMTCA7ClgrCS8vIGFjY291bnQgZGF0YQpYKwltZW1iZXItPmZyYW1lc19pbiA9IDAg
OwpYKwltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+ZnJhbWVzX291
dCA9IDAgOwpYKwltZW1iZXItPmZyYW1lc19vdXRfZHJvcHBlZCA9IDAgOwpYKyNpZmRlZglWSURF
TwpYKwltZW1iZXItPnZpZGVvX2ZyYW1lc19pbiA9IDAgOwpYKwltZW1iZXItPnZpZGVvX2ZyYW1l
c19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+dmlkZW9fZnJhbWVzX291dCA9IDAgOwpYKwlt
ZW1iZXItPnZpZGVvX2ZyYW1lc19vdXRfZHJvcHBlZCA9IDAgOwpYKyNlbmRpZgpYKyNpZmRlZglE
VE1GClgrCW1lbWJlci0+ZHRtZl9mcmFtZXNfaW4gPSAwIDsKWCsJbWVtYmVyLT5kdG1mX2ZyYW1l
c19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+ZHRtZl9mcmFtZXNfb3V0ID0gMCA7ClgrCW1l
bWJlci0+ZHRtZl9mcmFtZXNfb3V0X2Ryb3BwZWQgPSAwIDsKWCsjZW5kaWYKWCsjaWZkZWYJVEVY
VApYKwltZW1iZXItPnRleHRfZnJhbWVzX2luID0gMCA7ClgrCW1lbWJlci0+dGV4dF9mcmFtZXNf
aW5fZHJvcHBlZCA9IDAgOwpYKwltZW1iZXItPnRleHRfZnJhbWVzX291dCA9IDAgOwpYKwltZW1i
ZXItPnRleHRfZnJhbWVzX291dF9kcm9wcGVkID0gMCA7ClgrI2VuZGlmClgrCS8vIGZvciBjb3Vu
dGluZyBzZXF1ZW50aWFsbHkgZHJvcHBlZCBmcmFtZXMKWCsJbWVtYmVyLT5zZXF1ZW50aWFsX2Ry
b3BzID0gMCA7ClgrCW1lbWJlci0+c2luY2VfZHJvcHBlZCA9IDAgOwpYKwpYKwkvLyBmbGFncwpY
KwltZW1iZXItPmtpY2tfZmxhZyA9IDA7ClgrClggCS8vIHJlY29yZCBzdGFydCB0aW1lClggCS8v
IGluaXQgZHJvcHBlZCBmcmFtZSB0aW1lc3RhbXBzClggCS8vIGluaXQgc3RhdGUgY2hhbmdlIHRp
bWVzdGFtcApYIAltZW1iZXItPnRpbWVfZW50ZXJlZCA9ClggCQltZW1iZXItPmxhc3RfaW5fZHJv
cHBlZCA9ClggCQltZW1iZXItPmxhc3Rfb3V0X2Ryb3BwZWQgPQpYLSNpZmRlZglWSURFTwpYLQkJ
bWVtYmVyLT5sYXN0X3N0YXRlX2NoYW5nZSA9ClgtI2VuZGlmClgtCQlhc3RfdHZub3coKTsKWCsJ
CW1lbWJlci0+bGFzdF9zdGF0ZV9jaGFuZ2UgPSBhc3RfdHZub3coKTsKWCsKWCAJLy8KWCAJLy8g
cGFyc2UgcGFzc2VkIGZsYWdzClggCS8vClggClgrCS8vIHNpbGVuY2UgZGV0ZWN0aW9uIGZsYWdz
IHcvIGRlZmF1bHRzClgrCW1lbWJlci0+dmFkX2ZsYWcgPSAwIDsKWCsJbWVtYmVyLT5kZW5vaXNl
X2ZsYWcgPSAwIDsKWCsJbWVtYmVyLT5hZ2NfZmxhZyA9IDAgOwpYKwpYKwkvLyBpcyB0aGlzIG1l
bWJlciB1c2luZyB0aGUgdGVsZXBob25lPwpYKwltZW1iZXItPnZpYV90ZWxlcGhvbmUgPSAwIDsK
WCsKWCsJLy8gbW9oIGlmIG9ubHkgbWVtYmVyIGZsYWcKWCsJbWVtYmVyLT5ob2xkX2ZsYWcgPSAw
IDsKWCsJbWVtYmVyLT53YWl0X2Zvcl9tb2RlcmF0b3JfZmxhZyA9IDAgOwpYKwkKWCsJbWVtYmVy
LT5zdGFyX3ByZXNzZWQgPSAwOwpYKwpYIAkvLyB0ZW1wIHBvaW50ZXIgdG8gZmxhZ3Mgc3RyaW5n
ClggCWNoYXIqIGZsYWdzID0gbWVtYmVyLT5mbGFncyA7ClggClhAQCAtMTEzMiw3ICsxNDA2LDcg
QEAKWCAJCWVsc2UKWCAjZW5kaWYKWCAJCXsKWC0JCQkvLyBhbGxvd2VkIGZsYWdzIGFyZSBDLCBj
LCBMLCBsLCBWLCBELCBBLCBDLCBYLCBSLCBULCB0LCBNLCBTLCB6LCBvLCBGLCBIClgrCQkJLy8g
YWxsb3dlZCBmbGFncyBhcmUgQywgYywgTCwgbCwgViwgRCwgQSwgQywgWCwgciwgUiwgVCwgdCwg
TSwgUywgeiwgbywgRiwgSCwgbgpYIAkJCS8vIG11dGUvbm9fcmVjdiBvcHRpb25zClggCQkJc3dp
dGNoICggZmxhZ3NbaV0gKQpYIAkJCXsKWEBAIC0xMTUwLDcgKzE0MjQsNyBAQApYIAkJCWNhc2Ug
J2wnOgpYIAkJCQltZW1iZXItPm5vcmVjdl9hdWRpbyA9IDE7ClggCQkJCWJyZWFrOwpYLSNpZiAo
IFNJTERFVCA9PSAyICkKWCsKWCAJCQkJLy8gc3BlZXggcHJlcHJvY2Vzc2luZyBvcHRpb25zClgg
CQkJY2FzZSAnVic6ClggCQkJCW1lbWJlci0+dmFkX2ZsYWcgPSAxIDsKWEBAIC0xMTYxLDcgKzE0
MzUsNyBAQApYIAkJCWNhc2UgJ0EnOgpYIAkJCQltZW1iZXItPmFnY19mbGFnID0gMSA7ClggCQkJ
CWJyZWFrIDsKWC0jZW5kaWYKWCsKWCAJCQkJLy8gZHRtZi9tb2RlcmF0b3IvdmlkZW8gc3dpdGNo
aW5nIG9wdGlvbnMKWCAjaWZkZWYJVklERU8KWCAJCQljYXNlICdYJzoKWEBAIC0xMTcxLDYgKzE0
NDUsMTIgQEAKWCAJCQljYXNlICdSJzoKWCAJCQkJbWVtYmVyLT5kdG1mX3JlbGF5ID0gMTsKWCAJ
CQkJYnJlYWs7ClgrCQkJY2FzZSAncic6ClgrCQkJCW1lbWJlci0+cmVjb3JkX2ZsYWcgPSAxOwpY
KwkJCQlicmVhazsKWCsJCQljYXNlICdzJzoKWCsJCQkJbWVtYmVyLT5kdG1mX3N0YXJfbWVudSA9
IDE7ClgrCQkJCWJyZWFrOwpYICNpZmRlZglWSURFTwpYIAkJCWNhc2UgJ1MnOgpYIAkJCQltZW1i
ZXItPnZhZF9zd2l0Y2ggPSAxOwpYQEAgLTExODIsNiArMTQ2Miw5IEBAClggCQkJY2FzZSAnTSc6
ClggCQkJCW1lbWJlci0+aXNtb2RlcmF0b3IgPSAxOwpYIAkJCQlicmVhazsKWCsJCQljYXNlICdu
JzoKWCsJCQkJbWVtYmVyLT5ub19jcmVhdGVfZmxhZyA9IDE7ClgrCQkJCWJyZWFrOwpYICNpZmRl
ZglWSURFTwpYIAkJCWNhc2UgJ04nOgpYIAkJCQltZW1iZXItPm5vX2NhbWVyYSA9IDE7ClhAQCAt
MTIwMywyNCArMTQ4NiwzMSBAQApYIAkJCWNhc2UgJ3gnOgpYIAkJCQltZW1iZXItPmtpY2tfY29u
ZmVyZWVzID0gMTsKWCAJCQkJYnJlYWs7ClgtI2lmICggU0lMREVUID09IDIgKQpYKwpYIAkJCQkv
L1RlbGVwaG9uZSBjb25uZWN0aW9uClggCQkJY2FzZSAnYSc6ClggCQkJCW1lbWJlci0+dmFkX2Zs
YWcgPSAxIDsKWCAJCQljYXNlICdUJzoKWCAJCQkJbWVtYmVyLT52aWFfdGVsZXBob25lID0gMTsK
WCAJCQkJYnJlYWs7ClgtI2VuZGlmClgrClggCQkJY2FzZSAnSCc6ClggCQkJCW1lbWJlci0+aG9s
ZF9mbGFnID0gMTsKWCAJCQkJYnJlYWs7ClggClgrCQkJY2FzZSAndyc6ClgrCQkJCW1lbWJlci0+
d2FpdF9mb3JfbW9kZXJhdG9yX2ZsYWcgPSAxOwpYKwkJCQlicmVhazsKWCsKWCAJCQlkZWZhdWx0
OgpYIAkJCQlicmVhayA7ClggCQkJfQpYIAkJfQpYIAl9ClggClgrCS8vIHNldCB0aGUgZHNwIHRv
IG51bGwgc28gc2lsZW5jZSBkZXRlY3Rpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdApYKwltZW1i
ZXItPmRzcCA9IE5VTEwgOwpYKwpYICNpZiAoIFNJTERFVCA9PSAyICkKWCAJLy8KWCAJLy8gY29u
ZmlndXJlIHNpbGVuY2UgZGV0ZWN0aW9uIGFuZCBwcmVwcm9jZXNzaW5nClhAQCAtMTI1OCwxNiAr
MTU0OCw5IEBAClggClggCS8vIHNldCBtZW1iZXIncyBhdWRpbyBmb3JtYXRzLCB0YWtpbmcgZHNw
IHByZXByb2Nlc3NpbmcgaW50byBhY2NvdW50ClggCS8vICggY2hhbi0+bmF0aXZlZm9ybWF0cywg
QVNUX0ZPUk1BVF9TTElORUFSLCBBU1RfRk9STUFUX1VMQVcsIEFTVF9GT1JNQVRfR1NNICkKWC0j
aWYgKCBTSUxERVQgPT0gMiApClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQltZW1iZXItPnJlYWRf
Zm9ybWF0ID0gKCBtZW1iZXItPmRzcCA9PSBOVUxMICkgPyBjaGFuLT5uYXRpdmVmb3JtYXRzIDog
QVNUX0ZPUk1BVF9TTElORUFSIDsKWC0jZWxzZQpYLQltZW1iZXItPnJlYWRfZm9ybWF0ID0gKCBt
ZW1iZXItPmRzcCA9PSBOVUxMICkgPyBjaGFuLT5uYXRpdmVmb3JtYXRzIDogQVNUX0ZPUk1BVF9T
TElORUFSMTYgOwpYLSNlbmRpZgpYLSNlbHNlClgtCW1lbWJlci0+cmVhZF9mb3JtYXQgPSBjaGFu
LT5uYXRpdmVmb3JtYXRzIDsKWC0jZW5kaWYKWCsJbWVtYmVyLT5yZWFkX2Zvcm1hdCA9ICggbWVt
YmVyLT5kc3AgPT0gTlVMTCApID8gY2hhbi0+bmF0aXZlZm9ybWF0cyA6IEFTVF9DT05GX0ZPUk1B
VCA7ClggCW1lbWJlci0+d3JpdGVfZm9ybWF0ID0gY2hhbi0+bmF0aXZlZm9ybWF0czsKWCsKWCAJ
Ly8gMS4yIG9yIDEuMysKWCAjaWZkZWYgQVNUX0ZPUk1BVF9BVURJT19NQVNLClggClhAQCAtMTI3
NiwxMDAgKzE1NTksMTkgQEAKWCAjZW5kaWYKWCAKWCAJLy90cmFuc2xhdGlvbiBwYXRocyAoIGFz
dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoKSByZXR1cm5zIG51bGwgaWYgZm9ybWF0cyBtYXRjaCAp
ClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQltZW1iZXItPnRvX3NsaW5lYXIgPSBhc3RfdHJhbnNs
YXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX1NMSU5FQVIsIG1lbWJlci0+cmVhZF9mb3JtYXQg
KSA7ClgtCW1lbWJlci0+ZnJvbV9zbGluZWFyID0gYXN0X3RyYW5zbGF0b3JfYnVpbGRfcGF0aCgg
bWVtYmVyLT53cml0ZV9mb3JtYXQsIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jZWxzZQpYLQlt
ZW1iZXItPnRvX3NsaW5lYXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFU
X1NMSU5FQVIxNiwgbWVtYmVyLT5yZWFkX2Zvcm1hdCApIDsKWC0JbWVtYmVyLT5mcm9tX3NsaW5l
YXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBtZW1iZXItPndyaXRlX2Zvcm1hdCwgQVNU
X0ZPUk1BVF9TTElORUFSMTYgKSA7ClgtI2VuZGlmClgrCW1lbWJlci0+dG9fc2xpbmVhciA9IGFz
dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9DT05GX0ZPUk1BVCwgbWVtYmVyLT5yZWFkX2Zv
cm1hdCApIDsKWCsJbWVtYmVyLT5mcm9tX3NsaW5lYXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9w
YXRoKCBtZW1iZXItPndyaXRlX2Zvcm1hdCwgQVNUX0NPTkZfRk9STUFUICkgOwpYIApYIAkvLyBp
bmRleCBmb3IgY29udmVydGVkX2ZyYW1lcyBhcnJheQpYLQlzd2l0Y2ggKCBtZW1iZXItPndyaXRl
X2Zvcm1hdCApClgtCXsKWC0jaWZuZGVmCUFDX1VTRV9HNzIyClgtCQljYXNlIEFTVF9GT1JNQVRf
U0xJTkVBUjoKWC0jZWxzZQpYLQkJY2FzZSBBU1RfRk9STUFUX1NMSU5FQVIxNjoKWC0jZW5kaWYK
WC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX1NMSU5FQVJfSU5ERVggOwpYLQkJ
CWJyZWFrIDsKWC0KWC0JCWNhc2UgQVNUX0ZPUk1BVF9VTEFXOgpYLQkJCW1lbWJlci0+d3JpdGVf
Zm9ybWF0X2luZGV4ID0gQUNfVUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkgICAgICAg
IGNhc2UgQVNUX0ZPUk1BVF9BTEFXOgpYLQkJCW1lbWJlci0+d3JpdGVfZm9ybWF0X2luZGV4ID0g
QUNfQUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkJY2FzZSBBU1RfRk9STUFUX0dTTToK
WC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX0dTTV9JTkRFWCA7ClgtCQkJYnJl
YWsgOwpYLSNpZmRlZglBQ19VU0VfU1BFRVgKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDoKWC0J
CQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX1NQRUVYX0lOREVYOwpYLQkJCWJyZWFr
OwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyOUEKWC0JCWNhc2UgQVNUX0ZPUk1BVF9HNzI5
QToKWC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX0c3MjlBX0lOREVYOwpYLQkJ
CWJyZWFrOwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyMgpYLQkJY2FzZSBBU1RfRk9STUFU
X0c3MjI6ClgtCQkJbWVtYmVyLT53cml0ZV9mb3JtYXRfaW5kZXggPSBBQ19HNzIyX0lOREVYOwpY
LQkJCWJyZWFrOwpYLSNlbmRpZgpYLQkJZGVmYXVsdDoKWC0JCQlicmVhazsKWC0JfQpYLQpYLQkv
LyBpbmRleCBmb3IgY29udmVydGVkX2ZyYW1lcyBhcnJheQpYLQlzd2l0Y2ggKCBtZW1iZXItPnJl
YWRfZm9ybWF0ICkKWC0JewpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1B
VF9TTElORUFSOgpYLSNlbHNlClgtCQljYXNlIEFTVF9GT1JNQVRfU0xJTkVBUjE2OgpYLSNlbmRp
ZgpYLQkJCW1lbWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19TTElORUFSX0lOREVYIDsKWC0J
CQlicmVhayA7ClgtClgtCQljYXNlIEFTVF9GT1JNQVRfVUxBVzoKWC0JCQltZW1iZXItPnJlYWRf
Zm9ybWF0X2luZGV4ID0gQUNfVUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkJY2FzZSBB
U1RfRk9STUFUX0FMQVc6ClgtCQkJbWVtYmVyLT5yZWFkX2Zvcm1hdF9pbmRleCA9IEFDX0FMQVdf
SU5ERVggOwpYLQkJCWJyZWFrIDsKWC0KWC0JCWNhc2UgQVNUX0ZPUk1BVF9HU006ClgtCQkJbWVt
YmVyLT5yZWFkX2Zvcm1hdF9pbmRleCA9IEFDX0dTTV9JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLSNp
ZmRlZglBQ19VU0VfU1BFRVgKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDoKWC0JCQltZW1iZXIt
PnJlYWRfZm9ybWF0X2luZGV4ID0gQUNfU1BFRVhfSU5ERVg7ClgtCQkJYnJlYWs7ClgtI2VuZGlm
ClgtI2lmZGVmIEFDX1VTRV9HNzI5QQpYLQkJY2FzZSBBU1RfRk9STUFUX0c3MjlBOgpYLQkJCW1l
bWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19HNzI5QV9JTkRFWDsKWC0JCQlicmVhazsKWC0j
ZW5kaWYKWC0jaWZkZWYgQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1BVF9HNzIyOgpYLQkJ
CW1lbWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19HNzIyX0lOREVYOwpYLQkJCWJyZWFrOwpY
LSNlbmRpZgpYLQkJZGVmYXVsdDoKWC0JCQlicmVhazsKWC0JfQpYKwltZW1iZXItPndyaXRlX2Zv
cm1hdF9pbmRleCA9IGNvbnZlcnRfZm9ybWF0X3RvX2luZGV4KCBtZW1iZXItPndyaXRlX2Zvcm1h
dCApOwpYKwltZW1iZXItPnJlYWRfZm9ybWF0X2luZGV4ID0gY29udmVydF9mb3JtYXRfdG9faW5k
ZXgoIG1lbWJlci0+cmVhZF9mb3JtYXQgKTsKWCAKWCAJLy8gc21vb3RoZXIgZGVmYXVsdHMuClgt
CW1lbWJlci0+c21vb3RoX211bHRpcGxlID0gMTsKWCsJbWVtYmVyLT5zbW9vdGhfbXVsdGlwbGUg
PTE7ClggCW1lbWJlci0+c21vb3RoX3NpemVfaW4gPSAtMTsKWCAJbWVtYmVyLT5zbW9vdGhfc2l6
ZV9vdXQgPSAtMTsKWCsJbWVtYmVyLT5pblNtb290aGVyPSBOVUxMOwpYKwltZW1iZXItPm91dFBh
Y2tlcj0gTlVMTDsKWCAKWCAJc3dpdGNoIChtZW1iZXItPnJlYWRfZm9ybWF0KXsKWCAJCS8qIHRo
ZXNlIGFzc3VtcHRpb25zIG1heSBiZSBpbmNvcnJlY3QgKi8KWEBAIC0xMzkyLDE4ICsxNTk0LDEy
IEBAClggCQkJbWVtYmVyLT5zbW9vdGhfc2l6ZV9pbiAgPSAzOTsgIC8vIGJ5dGVzClggCQkJbWVt
YmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAxNjA7IC8vIHNhbXBsZXMKWCAJCQkqLwpYLQkJCWJyZWFr
OwpYLSNlbmRpZgpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TTElO
RUFSOgpYLQkJCW1lbWJlci0+c21vb3RoX3NpemVfaW4gID0gMzIwOyAvL2J5dGVzClgtCQkJbWVt
YmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAxNjA7IC8vc2FtcGxlcwpYLSNlbHNlClgtCQljYXNlIEFT
VF9GT1JNQVRfU0xJTkVBUjE2OgpYLQkJCW1lbWJlci0+c21vb3RoX3NpemVfaW4gID0gNjQwOyAv
L2J5dGVzClgtCQkJbWVtYmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAzMjA7IC8vc2FtcGxlcwpYICNl
bmRpZgpYIAkJCWJyZWFrOwpYKwkJY2FzZSBBU1RfQ09ORl9GT1JNQVQ6ClgrCQkJbWVtYmVyLT5z
bW9vdGhfc2l6ZV9pbiAgPSBBU1RfQ09ORl9GUkFNRV9EQVRBX1NJWkU7IC8vYnl0ZXMKWCsJCQlt
ZW1iZXItPnNtb290aF9zaXplX291dCA9IEFTVF9DT05GX0JMT0NLX1NBTVBMRVM7IC8vc2FtcGxl
cwpYKwkJCWJyZWFrOwpYICNpZmRlZiBBQ19VU0VfRzcyMgpYIAkJY2FzZSBBU1RfRk9STUFUX0c3
MjI6ClggCQkJLyoKWEBAIC0xNDExLDcgKzE2MDcsOCBAQApYIAkJCWJyZWFrOwpYICNlbmRpZgpY
IAkJZGVmYXVsdDoKWC0JCQlicmVhazsKWCsJCQltZW1iZXItPmluU21vb3RoZXIgPSBOVUxMOyAv
L2Rvbid0IHVzZSBzbW9vdGhlciBmb3IgdGhpcyB0eXBlLgpYKwkJCS8vREVCVUcoInNtb290aGVy
IGlzIE5VTEwgZm9yIG1lbWJlci0+cmVhZF9mb3JtYXQgPT4gJWRcbiIsIG1lbWJlci0+cmVhZF9m
b3JtYXQpIDsKWCAJfQpYIApYIAlpZiAobWVtYmVyLT5zbW9vdGhfc2l6ZV9pbiA+IDApewpYQEAg
LTE0NjYsNyArMTY2Myw3IEBAClggCWlmICggbWVtYmVyLT5mbGFncyAhPSBOVUxMICkKWCAJewpY
IAkJLy8gISEhIERFQlVHSU5HICEhIQpYLQkJREVCVUcoImZyZWVpbmcgbWVtYmVyIGZsYWdzLCBu
YW1lID0+ICVzXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJCURFQlVHKCJmcmVlaW5nIG1l
bWJlciBmbGFncywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsKWCAJCWZy
ZWUoIG1lbWJlci0+ZmxhZ3MgKSA7ClggCX0KWCAKWEBAIC0xNDc3LDcgKzE2NzQsNyBAQApYIAlj
b25mX2ZyYW1lKiBjZiA7ClggClggCS8vICEhISBERUJVR0lORyAhISEKWC0JREVCVUcoImRlbGV0
aW5nIG1lbWJlciBpbnB1dCBmcmFtZXMsIG5hbWUgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFt
ZSkgOwpYKwlERUJVRygiZGVsZXRpbmcgbWVtYmVyIGlucHV0IGZyYW1lcywgbmFtZSA9PiAlc1xu
IiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsKWCAKWCAJLy8gaW5jb21pbmcgZnJhbWVzClggCWNm
ID0gbWVtYmVyLT5pbkZyYW1lcyA7ClhAQCAtMTUwMSw3ICsxNjk4LDcgQEAKWCAJfQpYICNlbmRp
ZgpYIAkvLyAhISEgREVCVUdJTkcgISEhClgtCURFQlVHKCJkZWxldGluZyBtZW1iZXIgb3V0cHV0
IGZyYW1lcywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lKSA7ClgrCURFQlVHKCJk
ZWxldGluZyBtZW1iZXIgb3V0cHV0IGZyYW1lcywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFu
bmVsX25hbWUpIDsKWCAKWCAJLy8gb3V0Z29pbmcgZnJhbWVzClggCWNmID0gbWVtYmVyLT5vdXRG
cmFtZXMgOwpYQEAgLTE1MjgsMTMgKzE3MjUsMTMgQEAKWCAJaWYgKCBtZW1iZXItPmRzcCAhPSBO
VUxMICkKWCAJewpYIAkJLy8gISEhIERFQlVHSU5HICEhIQpYLQkJREVCVUcoImRlc3Ryb3lpbmcg
bWVtYmVyIHByZXByb2Nlc3NvciwgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lKSA7
ClgrCQlERUJVRygiZGVzdHJveWluZyBtZW1iZXIgcHJlcHJvY2Vzc29yLCBuYW1lID0+ICVzXG4i
LCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgOwpYIAkJc3BlZXhfcHJlcHJvY2Vzc19zdGF0ZV9kZXN0
cm95KCBtZW1iZXItPmRzcCApIDsKWCAJfQpYICNlbmRpZgpYIApYIAkvLyAhISEgREVCVUdJTkcg
ISEhClgtCURFQlVHKCJmcmVlaW5nIG1lbWJlciB0cmFuc2xhdG9yIHBhdGhzLCBuYW1lID0+ICVz
XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJREVCVUcoImZyZWVpbmcgbWVtYmVyIHRyYW5z
bGF0b3IgcGF0aHMsIG5hbWUgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA7ClggClgg
CS8vIGZyZWUgdGhlIG1peGluZyB0cmFuc2xhdG9ycwpYIAlhc3RfdHJhbnNsYXRvcl9mcmVlX3Bh
dGgoIG1lbWJlci0+dG9fc2xpbmVhciApIDsKWEBAIC0xNTQ0LDEyICsxNzQxLDI3IEBAClggCS8v
IG1lbWJlciBzbyB3ZSBjYW4gcmV0dXJuIGl0ClggCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG5t
ID0gbWVtYmVyLT5uZXh0IDsKWCAKWCsJLy8gISEhIERFQlVHSU5HICEhIQpYKwlERUJVRygiZnJl
ZWluZyBtZW1iZXIgY2hhbm5lbCBuYW1lLCBuYW1lID0+ICVzXG4iLCBtZW1iZXItPmNoYW5uZWxf
bmFtZSkgOwpYKwpYKwkvLyBmcmVlIHRoZSBtZW1iZXIncyBjb3B5IGZvciB0aGUgY2hhbm5lbCBu
YW1lClgrCWZyZWUoIG1lbWJlci0+Y2hhbm5lbF9uYW1lICkgOwpYKwpYKwkvLyBmcmVlIHRoZSBt
ZW1iZXIncyBjb3B5IG9mIHRoZSB1bmlxdWVpZApYKwlmcmVlKCBtZW1iZXItPnVuaXF1ZWlkICkg
OwpYKwpYKwkvLyBmcmVlIHRoZSBtZW1iZXIncyBjb3B5IG9mIHRoZSBjb25mZXJlbmNlIG5hbWUK
WCsJZnJlZShtZW1iZXItPmNvbmZfbmFtZSk7ClgrClggCS8vIGZyZWUgdGhlIG1lbWJlcidzIGNv
cHkgb2YgdGhlIGNvbmZlcmVuY2UgdHlwZQpYIAlmcmVlKG1lbWJlci0+dHlwZSk7ClggClggCS8v
IGZyZWUgdGhlIG1lbWJlcidzIGNvcHkgb2YgdGhlIHNweWVlIGNoYW5uZWwgbmFtZQpYIAlmcmVl
KG1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lKTsKWCAKWCsJLy8gZnJlZSB0aGUgd2VsY29tZSBw
cm9tcHQKWCsJZnJlZShtZW1iZXItPndlbGNvbWVfcHJvbXB0KTsKWCsKWCAJLy8gY2xlYXIgYWxs
IHNvdW5kcwpYIAlzdHJ1Y3QgYXN0X2NvbmZfc291bmRxICpzb3VuZCA9IG1lbWJlci0+c291bmRx
OwpYIAlzdHJ1Y3QgYXN0X2NvbmZfc291bmRxICpuZXh0OwpYQEAgLTE2ODgsOSArMTkwMCw3IEBA
ClggClggY29uZl9mcmFtZSogZ2V0X2luY29taW5nX2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZfbWVt
YmVyICptZW1iZXIgKQpYIHsKWC0jaWZkZWYgQVNUX0NPTkZfQ0FDSEVfTEFTVF9GUkFNRQpYIAlj
b25mX2ZyYW1lICpjZl9yZXN1bHQ7ClgtI2VuZGlmClggI2lmZGVmCUFQUF9LT05GRVJFTkNFX0RF
QlVHClggCS8vClggCS8vIHNhbml0eSBjaGVja3MKWEBAIC0xNzM3LDcgKzE5NDcsNyBAQApYIAkJ
fQpYIAkJZWxzZQpYIAkJewpYLQkJCURFQlVHKCJyZXBlYXRpbmcgY2FjaGVkIGZyYW1lLCBjaGFu
bmVsID0+ICVzLCBpbkZyYW1lc1JlcGVhdExhc3QgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFt
ZSwgbWVtYmVyLT5pbkZyYW1lc1JlcGVhdExhc3QpIDsKWCsJCQlERUJVRygicmVwZWF0aW5nIGNh
Y2hlZCBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5GcmFtZXNSZXBlYXRMYXN0ID0+ICVkXG4iLCBt
ZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5pbkZyYW1lc1JlcGVhdExhc3QpIDsKWCAKWCAJ
CQkvLyBpbmNyZW1lbnQgY291bnRlcgpYIAkJCW1lbWJlci0+aW5GcmFtZXNSZXBlYXRMYXN0Kysg
OwpYQEAgLTE3NTAsNyArMTk2MCw3IEBAClggCX0KWCAJZWxzZSBpZiAoIG1lbWJlci0+b2theVRv
Q2FjaGVMYXN0ID09IDAgJiYgbWVtYmVyLT5pbkZyYW1lc0NvdW50ID49IDMgKQpYIAl7ClgtCQlE
RUJVRygiZW5hYmxpbmcgY2FjaGVkIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAl
ZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1l
c0NvdW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygiZW5hYmxpbmcgY2Fj
aGVkIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRc
biIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1lbWJlci0+
b3V0RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIHR1cm4gb24gJ29rYXkgdG8gY2FjaGUnIGZsYWcK
WCAJCW1lbWJlci0+b2theVRvQ2FjaGVMYXN0ID0gMSA7ClhAQCAtMTg1MSw3ICsyMDYxLDcgQEAK
WCAJLy8gV2UgaGF2ZSB0byBkcm9wIGlmIHRoZSBxdWV1ZSBpcyBmdWxsIQpYIAlpZiAoIG1lbWJl
ci0+aW5WaWRlb0ZyYW1lc0NvdW50ID49IEFTVF9DT05GX01BWF9WSURFT19RVUVVRSApClggCXsK
WC0JCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgaW5jb21pbmcgVklERU8gZnJhbWUsIGNoYW5uZWwg
PT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFuLT5u
YW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0Nv
dW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIGluY29taW5nIFZJREVPIGZyYW1lLCBj
aGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+
Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRl
b0ZyYW1lc0NvdW50KSA7ClggCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpYIAkJ
cmV0dXJuIC0xIDsKWCAJfQpYQEAgLTE5MjMsNyArMjEzMyw3IEBAClggCS8vIFdlIGhhdmUgdG8g
ZHJvcCBpZiB0aGUgcXVldWUgaXMgZnVsbCEKWCAJaWYgKCBtZW1iZXItPmluRFRNRkZyYW1lc0Nv
dW50ID49IEFTVF9DT05GX01BWF9EVE1GX1FVRVVFICkKWCAJewpYLQkJREVCVUcoInVuYWJsZSB0
byBxdWV1ZSBpbmNvbWluZyBEVE1GIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAl
ZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkRUTUZG
cmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVzQ291bnQpIDsKWCsJCURFQlVHKCJ1bmFi
bGUgdG8gcXVldWUgaW5jb21pbmcgRFRNRiBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcg
PT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5p
bkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVzQ291bnQpIDsKWCAJCWFzdF9t
dXRleF91bmxvY2soJm1lbWJlci0+bG9jayk7ClggCQlyZXR1cm4gLTEgOwpYIAl9ClhAQCAtMjAx
Miw3ICsyMjIyLDcgQEAKWCAJCQkJLy8gY291bnQgc2VxdWVudGlhbCBkcm9wcwpYIAkJCQltZW1i
ZXItPnNlcXVlbnRpYWxfZHJvcHMrKyA7ClggClgtCQkJCURFQlVHKCJkcm9wcGluZyBmcmFtZSBm
cm9tIGlucHV0IGJ1ZmZlciwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91dGdvaW5n
ID0+ICVkXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5GcmFtZXNDb3VudCwgbWVt
YmVyLT5vdXRGcmFtZXNDb3VudCkgOwpYKwkJCQlERUJVRygiZHJvcHBpbmcgZnJhbWUgZnJvbSBp
bnB1dCBidWZmZXIsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAl
ZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+aW5GcmFtZXNDb3VudCwgbWVtYmVy
LT5vdXRGcmFtZXNDb3VudCkgOwpYIApYIAkJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVk
IGluY29taW5nIGZyYW1lcwpYIAkJCQltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkKysgOwpYQEAg
LTIwMjgsNyArMjIzOCw3IEBAClggLyoKWCAJCQllbHNlClggCQkJewpYLQkJCQlERUJVRygiaW5w
dXQgYnVmZmVyIGxhcmdlciB0aGFuIGRyb3AgdGhyZXNob2xkLCBjaGFubmVsID0+ICVzLCBpbmNv
bWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVy
LT5pbkZyYW1lc0NvdW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQkJCURFQlVHKCJp
bnB1dCBidWZmZXIgbGFyZ2VyIHRoYW4gZHJvcCB0aHJlc2hvbGQsIGNoYW5uZWwgPT4gJXMsIGlu
Y29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1l
bWJlci0+aW5GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRGcmFtZXNDb3VudCkgOwpYIAkJCX0KWCAq
LwpYIAkJfQpYQEAgLTIwNDQsNyArMjI1NCw3IEBAClggCQkvLyBjb3VudCBzZXF1ZW50aWFsIGRy
b3BzClggCQltZW1iZXItPnNlcXVlbnRpYWxfZHJvcHMrKyA7ClggClgtCQlERUJVRygidW5hYmxl
IHRvIHF1ZXVlIGluY29taW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwg
b3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1lc0Nv
dW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVl
IGluY29taW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcg
PT4gJWRcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1l
bWJlci0+b3V0RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3Bw
ZWQgaW5jb21pbmcgZnJhbWVzClggCQltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkKysgOwpYQEAg
LTIyMTksNyArMjQyOSw3IEBAClggCS8vClggCWlmICggbWVtYmVyLT5vdXRGcmFtZXNDb3VudCA+
PSBBU1RfQ09ORl9NQVhfUVVFVUUgKQpYIAl7ClgtCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIG91
dGdvaW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4g
JWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1lc0NvdW50LCBtZW1iZXIt
Pm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIG91dGdvaW5nIGZy
YW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1l
bWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1lbWJlci0+b3V0RnJh
bWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29pbmcg
ZnJhbWVzClggCQltZW1iZXItPmZyYW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC0yMzg2LDcgKzI1
OTYsNyBAQApYIAkvLwpYIAlpZiAoIG1lbWJlci0+b3V0VmlkZW9GcmFtZXNDb3VudCA+PSBBU1Rf
Q09ORl9NQVhfVklERU9fUVVFVUUpClggCXsKWC0JCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgb3V0
Z29pbmcgVklERU8gZnJhbWUsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2lu
ZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3Vu
dCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1
ZXVlIG91dGdvaW5nIFZJREVPIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwg
b3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluVmlkZW9G
cmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0NvdW50KSA7ClggClggCQkvLyBhY2Nv
dW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJbWVtYmVyLT52aWRlb19m
cmFtZXNfb3V0X2Ryb3BwZWQrKyA7ClhAQCAtMjU3Myw3ICsyNzgzLDcgQEAKWCAJLy8KWCAJaWYg
KCBtZW1iZXItPm91dERUTUZGcmFtZXNDb3VudCA+PSBBU1RfQ09ORl9NQVhfRFRNRl9RVUVVRSkK
WCAJewpYLQkJREVCVUcoInVuYWJsZSB0byBxdWV1ZSBvdXRnb2luZyBEVE1GIGZyYW1lLCBjaGFu
bmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hh
bi0+bmFtZSwgbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVz
Q291bnQpIDsKWCsJCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgb3V0Z29pbmcgRFRNRiBmcmFtZSwg
Y2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXIt
PmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1G
RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29p
bmcgZnJhbWVzClggCQltZW1iZXItPmR0bWZfZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTI2
NTAsNyArMjg2MCw3IEBAClggCS8vClggCWlmICggbWVtYmVyLT5vdXRUZXh0RnJhbWVzQ291bnQg
Pj0gQVNUX0NPTkZfTUFYX1RFWFRfUVVFVUUpClggCXsKWC0JCURFQlVHKCJ1bmFibGUgdG8gcXVl
dWUgb3V0Z29pbmcgdGV4dCBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91
dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5UZXh0RnJhbWVz
Q291bnQsIG1lbWJlci0+b3V0VGV4dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRv
IHF1ZXVlIG91dGdvaW5nIHRleHQgZnJhbWUsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVk
LCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+aW5UZXh0
RnJhbWVzQ291bnQsIG1lbWJlci0+b3V0VGV4dEZyYW1lc0NvdW50KSA7ClggClggCQkvLyBhY2Nv
dW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJbWVtYmVyLT50ZXh0X2Zy
YW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC0yNzAwLDYgKzI5MTAsNDcgQEAKWCAjZW5kaWYKWCAK
WCAvLwpYKy8vIG1hbmFnZXIgZnVuY3Rpb25zClgrLy8KWCsKWCt2b2lkIHNlbmRfc3RhdGVfY2hh
bmdlX25vdGlmaWNhdGlvbnMoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciApClgrewpY
KwkvL0RFQlVHKCJzZW5kaW5nIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb25cbiIpIDsKWCsKWCsJ
Ly8gbG9vcCB0aHJvdWdoIGxpc3Qgb2YgbWVtYmVycywgc2VuZGluZyBzdGF0ZSBjaGFuZ2VzClgr
CXdoaWxlICggbWVtYmVyICE9IE5VTEwgKQpYKwl7ClgrCQkvLyBoYXMgdGhlIHN0YXRlIGNoYW5n
ZWQgc2luY2UgbGFzdCB0aW1lIHRocm91Z2ggdGhpcyBsb29wPwpYKwkJaWYgKCBtZW1iZXItPnNw
ZWFraW5nX3N0YXRlX25vdGlmeSApClgrCQl7ClgrCQkJbWFuYWdlcl9ldmVudCgKWCsJCQkJRVZF
TlRfRkxBR19DQUxMLApYKwkJCQkiQ29uZmVyZW5jZVN0YXRlIiwKWCsJCQkJIkNvbmZlcmVuY2VO
YW1lOiAlc1xyXG4iClgrCQkJCSJNZW1iZXJJZDogJWRcclxuIgpYKwkJCQkiQ2hhbm5lbDogJXNc
clxuIgpYKwkJCQkiRmxhZ3M6ICVzXHJcbiIKWCsJCQkJIlN0YXRlOiAlc1xyXG4iLApYKwkJCQlt
ZW1iZXItPmNvbmZfbmFtZSwKWCsJCQkJbWVtYmVyLT5pZCwKWCsJCQkJbWVtYmVyLT5jaGFubmVs
X25hbWUsClgrCQkJCW1lbWJlci0+ZmxhZ3MsClgrCQkJCSggKCBtZW1iZXItPnNwZWFraW5nX3N0
YXRlID09IDEgKSA/ICJzcGVha2luZyIgOiAic2lsZW50IiApClgrCQkJKSA7ClgrClgrCQkJREVC
VUcoIm1lbWJlciBzdGF0ZSBjaGFuZ2VkLCBjaGFubmVsID0+ICVzLCBzdGF0ZSA9PiAlZCwgaW5j
b21pbmcgPT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVt
YmVyLT5zcGVha2luZ19zdGF0ZSwgbWVtYmVyLT5pbkZyYW1lc0NvdW50LCBtZW1iZXItPm91dEZy
YW1lc0NvdW50KSA7ClgrClgrCQkJbWVtYmVyLT5zcGVha2luZ19zdGF0ZV9ub3RpZnkgPSAwOwpY
KwkJfQpYKwpYKwkJLy8gbW92ZSB0aGUgcG9pbnRlciB0byB0aGUgbmV4dCBtZW1iZXIKWCsJCW1l
bWJlciA9IG1lbWJlci0+bmV4dCA7ClgrCX0KWCsKWCsJcmV0dXJuIDsKWCt9ClgrClgrLy8KWCAv
LyBhc3RfcGFja2VyLCBhZGFwdGVkIGZyb20gYXN0X3Ntb290aGVyClggLy8gcGFjayBtdWx0aXBs
ZSBmcmFtZXMgdG9nZXRoZXIgaW50byBvbmUgcGFja2V0IG9uIHRoZSB3aXJlLgpYIC8vClhAQCAt
MjcxMCw4ICsyOTYxLDggQEAKWCBzdHJ1Y3QgYXN0X3BhY2tlciB7ClggCWludCBmcmFtZXNpemU7
IC8vIG51bWJlciBvZiBmcmFtZXMgcGVyIHBhY2tldCBvbiB0aGUgd2lyZS4KWCAJaW50IHNpemU7
ClgrCWZvcm1hdF90IGZvcm1hdDsKWCAJaW50IHBhY2tldF9pbmRleDsKWC0JaW50IGZvcm1hdDsK
WCAJaW50IHJlYWRkYXRhOwpYIAlpbnQgb3B0aW1pemFibGVzdHJlYW07ClggCWludCBmbGFnczsK
WEBAIC0yNzYzLDEwICszMDE0LDEyIEBAClggCQlyZXR1cm4gLTE7ClggCX0KWCAJaWYgKCFzLT5m
b3JtYXQpIHsKWC0JCXMtPmZvcm1hdCA9IGYtPnN1YmNsYXNzOwpYKwkJcy0+Zm9ybWF0ID0gQVNU
X0ZSQU1FX1NVQkNMQVNTX0NPREVDKGYpOwpYIAkJcy0+c2FtcGxlcz0wOwpYLQl9IGVsc2UgaWYg
KHMtPmZvcm1hdCAhPSBmLT5zdWJjbGFzcykgewpYLQkJYXN0X2xvZyhMT0dfV0FSTklORywgIlBh
Y2tlciB3YXMgd29ya2luZyBvbiAlZCBmb3JtYXQgZnJhbWVzLCBub3cgdHJ5aW5nIHRvIGZlZWQg
JWQ/XG4iLCBzLT5mb3JtYXQsIGYtPnN1YmNsYXNzKTsKWCsJfSBlbHNlIGlmIChzLT5mb3JtYXQg
IT0gQVNUX0ZSQU1FX1NVQkNMQVNTX0NPREVDKGYpKSB7ClgrCQlhc3RfbG9nKExPR19XQVJOSU5H
LCAiUGFja2VyIHdhcyB3b3JraW5nIG9uICIgQVNUX0ZNVF9GT1JNQVRfVCAiIGZvcm1hdCBmcmFt
ZXMsICIKWCsJCQkJICAgICAibm93IHRyeWluZyB0byBmZWVkICIgQVNUX0ZNVF9GT1JNQVRfVCAi
P1xuIiwKWCsJCQlzLT5mb3JtYXQsIEFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQyhmKSk7ClggCQly
ZXR1cm4gLTE7ClggCX0KWCAJaWYgKHMtPmxlbiArIGYtPmRhdGFsZW4gPiBQQUNLRVJfU0laRSkg
ewpYQEAgLTI4MTUsNyArMzA2OCw3IEBAClggCQlsZW4gPSBzLT5sZW47ClggCS8qIE1ha2UgZnJh
bWUgKi8KWCAJcy0+Zi5mcmFtZXR5cGUgPSBBU1RfRlJBTUVfVk9JQ0U7ClgtCXMtPmYuc3ViY2xh
c3MgPSBzLT5mb3JtYXQ7ClgrCUFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQygmcy0+ZikgPSBzLT5m
b3JtYXQ7ClggCVNFVERBVEEyUFRSKHMtPmYuZGF0YSwgcy0+ZnJhbWVkYXRhICsgQVNUX0ZSSUVO
RExZX09GRlNFVCk7ClggCXMtPmYub2Zmc2V0ID0gQVNUX0ZSSUVORExZX09GRlNFVDsKWCAJcy0+
Zi5kYXRhbGVuID0gbGVuOwpYQEAgLTI4OTYsMTAgKzMxNDksMTQgQEAKWCAKWCAJZm9yICggOyBm
cmFtZSAhPSBOVUxMIDsgZnJhbWUgPSBmcmFtZS0+bmV4dCApClggCXsKWC0JCS8vIGxvb2sgZm9y
IHRoZSBsaXN0ZW5lcidzIGZyYW1lClgtCQlpZiAoIGZyYW1lLT5tZW1iZXIgIT0gTlVMTCApClgr
CQkvLyB3ZSdyZSBsb29raW5nIGZvciBhIG51bGwgb3IgbWF0Y2hpbmcgbWVtYmVyClgrCQlpZiAo
IGZyYW1lLT5tZW1iZXIgIT0gTlVMTCAmJiBmcmFtZS0+bWVtYmVyICE9IG1lbWJlciApClggCQkJ
Y29udGludWUgOwpYIApYKwkJLy8gaWYgdGhpcyBtZW1iZXIgaXMgYSBzcHllciwgb25seSBxdWV1
ZSBmcmFtZXMgZnJvbSB0aGUgc3B5ZWUKWCsJCWlmICggKCBtZW1iZXItPnNweWVlX2NoYW5uZWxf
bmFtZSAhPSBOVUxMICYmIGZyYW1lLT5tZW1iZXIgPT0gTlVMTCApClgrCQkJJiYgKCBmcmFtZS0+
c3B5X3BhcnRuZXIgPT0gTlVMTCB8fCBmcmFtZS0+c3B5X3BhcnRuZXIgIT0gbWVtYmVyICkgKQpY
KwkJCWNvbnRpbnVlIDsKWCAjaWZkZWYJQVBQX0tPTkZFUkVOQ0VfREVCVUcKWCAJCWlmICggZnJh
bWUtPmZyID09IE5VTEwgKQpYIAkJewpYQEAgLTI5MDgsNyArMzE2NSw3IEBAClggCQl9ClggI2Vu
ZGlmClggCQkvLyBmaXJzdCwgdHJ5IGZvciBhIHByZS1jb252ZXJ0ZWQgZnJhbWUKWC0JCXFmID0g
KG1lbWJlci0+bGlzdGVuX3ZvbHVtZSA9PSAwID8gZnJhbWUtPmNvbnZlcnRlZFttZW1iZXItPndy
aXRlX2Zvcm1hdF9pbmRleF0gOiAwKTsKWCsJCXFmID0gKG1lbWJlci0+bGlzdGVuX3ZvbHVtZSA9
PSAwICYmIG1lbWJlci0+c3B5X3BhcnRuZXIgPT0gTlVMTD8gZnJhbWUtPmNvbnZlcnRlZFsgbWVt
YmVyLT53cml0ZV9mb3JtYXRfaW5kZXggXSA6IDApOwpYIApYIAkJLy8gY29udmVydCAoIGFuZCBz
dG9yZSApIHRoZSBmcmFtZQpYIAkJaWYgKCBxZiA9PSBOVUxMICkKWEBAIC0yOTUzLDcgKzMyMTAs
NyBAQApYIAkJCQkvL3FmID0gTlVMTCA7ClggCQkJfQpYIApYLQkJCWlmICggbWVtYmVyLT5saXN0
ZW5fdm9sdW1lICE9IDAgKQpYKwkJCWlmIChtZW1iZXItPmxpc3Rlbl92b2x1bWUgIT0gMCB8fCBt
ZW1iZXItPnNweV9wYXJ0bmVyICE9IE5VTEwpClggCQkJewpYIAkJCQkvLyBmcmVlIGZyYW1lICgg
dGhlIHRyYW5zbGF0b3IncyBjb3B5ICkKWCAJCQkJYXN0X2ZyZnJlZSggcWYgKSA7ClhAQCAtMjk2
MSw3ICszMjE4LDcgQEAKWCAJCX0KWCAJCWVsc2UKWCAJCXsKWC0JCQlhc3RfbG9nKCBMT0dfV0FS
TklORywgInVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgbGlzdGVuZXIgZnJhbWUsIGNoYW5u
ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSApIDsKWCsJCQlhc3RfbG9nKCBMT0dfV0FS
TklORywgInVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgbGlzdGVuZXIgZnJhbWUsIGNoYW5u
ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lICkgOwpYIAkJfQpYIApYIAkJLy8gc2V0
IGZvdW5kIGZsYWcKWEBAIC0zMDI5LDcgKzMyODYsOCBAQApYIAkJLy8gc2hvcnQtY3V0IHBvaW50
ZXIgdG8gdGhlIGFzdF9mcmFtZQpYIAkJcWYgPSBmcmFtZS0+ZnIgOwpYIApYLQkJaWYgKCAocWYt
PnN1YmNsYXNzID09IG1lbWJlci0+d3JpdGVfZm9ybWF0KSAmJiAobWVtYmVyLT5saXN0ZW5fdm9s
dW1lID09IDApICkKWCsJCWlmICggKEFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQyhxZikgPT0gbWVt
YmVyLT53cml0ZV9mb3JtYXQpICYmClgrCQkgICAgIChtZW1iZXItPmxpc3Rlbl92b2x1bWUgPT0g
MCkgKQpYIAkJewpYIAkJCS8vIGZyYW1lIGlzIGFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXQsIHNv
IGp1c3QgcXVldWUgaXQKWCAKWEBAIC0zMDYxLDcgKzMzMTksNyBAQApYIAkJCX0KWCAJCQllbHNl
ClggCQkJewpYLQkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byB0cmFuc2xhdGUg
b3V0Z29pbmcgc3BlYWtlciBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5u
YW1lICkgOwpYKwkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byB0cmFuc2xhdGUg
b3V0Z29pbmcgc3BlYWtlciBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVs
X25hbWUgKSA7ClggCQkJfQpYIAkJfQpYIApYQEAgLTMxMzEsMTEgKzMzODksOCBAQApYIAkJLy8g
dHJhbnNsYXRvcnMgc2VlbSB0byBiZSBzaW5nbGUtcHVycG9zZSwgaS5lLiB0aGV5ClggCQkvLyBj
YW4ndCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5IGZvciBtdWx0aXBsZSBhdWRpbyBzdHJlYW1zClgg
CQkvLwpYLSNpZm5kZWYgQUNfVVNFX0c3MjIKWC0JCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0cmFu
cyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBBU1Rf
Rk9STUFUX1NMSU5FQVIgKSA7ClgtI2Vsc2UKWC0JCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0cmFu
cyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBBU1Rf
Rk9STUFUX1NMSU5FQVIxNiApIDsKWC0jZW5kaWYKWCsJCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0
cmFucyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBB
U1RfQ09ORl9GT1JNQVQgKSA7ClgrClggCQlpZiAoIHRyYW5zICE9IE5VTEwgKQpYIAkJewpYIAkJ
CS8vIGF0dGVtcHQgKCBmaXZlIHRpbWVzICkgdG8gZ2V0IGEgc2lsZW50IGZyYW1lClhAQCAtMzE3
Miw3ICszNDI3LDcgQEAKWCAJfQpYIAllbHNlClggCXsKWC0JCWFzdF9sb2coIExPR19FUlJPUiwg
InVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgc2lsZW50IGZyYW1lLCBjaGFubmVsID0+ICVz
XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUgKSA7ClgrCQlhc3RfbG9nKCBMT0dfRVJST1IsICJ1bmFi
bGUgdG8gdHJhbnNsYXRlIG91dGdvaW5nIHNpbGVudCBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwg
bWVtYmVyLT5jaGFubmVsX25hbWUgKSA7ClggCX0KWCAKWCAJcmV0dXJuIDAgOwpYQEAgLTMxODcs
NTIgKzM0NDIsMzIgQEAKWCAJYXN0X211dGV4X2xvY2soJm1lbWJlci0+bG9jayk7ClggClggCS8v
IHNraXAgbWVtYmVycyB0aGF0IGFyZSBub3QgcmVhZHkKWC0JLy8gc2tpcCBubyByZWNlaXZlIGF1
ZGlvIGNsaWVudHMKWC0JaWYgKCBtZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9PSAwIHx8IG1l
bWJlci0+bm9yZWN2X2F1ZGlvID09IDEgKQpYKwlpZiAoIG1lbWJlci0+cmVhZHlfZm9yX291dGdv
aW5nID09IDAgKQpYIAl7ClggCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpYIAkJ
cmV0dXJuIDsKWCAJfQpYIApYLQlpZiAoIG1lbWJlci0+c3B5X3BhcnRuZXIgPT0gMCApClgrCS8v
IHNraXAgbm8gcmVjZWl2ZSBhdWRpbyBjbGllbnRzClgrCWlmICggbWVtYmVyLT5ub3JlY3ZfYXVk
aW8gKQpYIAl7ClgtCQkvLyBuZWl0aGVyIGEgc3B5ZXIgbm9yIGEgc3B5ZWUKWC0JCWlmICggbWVt
YmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAwICkgClgtCQl7ClgtCQkJLy8gcXVldWUgbGlz
dGVuZXIgZnJhbWUKWC0JCQlxdWV1ZV9mcmFtZV9mb3JfbGlzdGVuZXIoIGNvbmYsIG1lbWJlciwg
c2VuZF9mcmFtZXMgKSA7ClgtCQl9ClgtCQllbHNlClgtCQl7ClgtCQkJLy8gcXVldWUgc3BlYWtl
ciBmcmFtZQpYLQkJCXF1ZXVlX2ZyYW1lX2Zvcl9zcGVha2VyKCBjb25mLCBtZW1iZXIsIHNlbmRf
ZnJhbWVzICkgOwpYLQkJfQpYKwkJYXN0X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2NrKTsKWCsJ
CXJldHVybjsKWCsJfQpYKwpYKwlpZiAoIG1lbWJlci0+bG9jYWxfc3BlYWtpbmdfc3RhdGUgPT0g
MCApClgrCXsKWCsJCS8vIHF1ZXVlIGxpc3RlbmVyIGZyYW1lClgrCQlxdWV1ZV9mcmFtZV9mb3Jf
bGlzdGVuZXIoIGNvbmYsIG1lbWJlciwgc2VuZF9mcmFtZXMgKSA7ClggCX0KWCAJZWxzZQpYIAl7
ClgtCQkvLyBlaXRoZXIgYSBzcHllciBvciBhIHNweWVlClgtCQlpZiAoIG1lbWJlci0+c3B5ZWVf
Y2hhbm5lbF9uYW1lICE9IE5VTEwgKQpYLQkJewpYLQkJCS8vIHNweWVyIC0tIGFsd2F5cyB1c2Ug
bWVtYmVyIHRyYW5zbGF0b3IKWC0JCQlxdWV1ZV9mcmFtZV9mb3Jfc3BlYWtlciggY29uZiwgbWVt
YmVyLCBzZW5kX2ZyYW1lcyApIDsKWC0JCX0KWC0JCWVsc2UKWC0JCXsKWC0JCQkvLyBzcHllZSAt
LSB1c2UgbWVtYmVyIHRyYW5zbGF0b3IgaWYgc3B5ZWUgc3BlYWtpbmcgb3Igc3B5ZXIgd2hpc3Bl
cmluZyB0byBzcHllZQpYLQkJCWlmICggbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAx
IHx8IG1lbWJlci0+c3B5X3BhcnRuZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID09IDEgKQpYLQkJ
CXsKWC0JCQkJcXVldWVfZnJhbWVfZm9yX3NwZWFrZXIoIGNvbmYsIG1lbWJlciwgc2VuZF9mcmFt
ZXMgKSA7ClgtCQkJfQpYLQkJCWVsc2UKWC0JCQl7ClgtCQkJCXF1ZXVlX2ZyYW1lX2Zvcl9saXN0
ZW5lciggY29uZiwgbWVtYmVyLCBzZW5kX2ZyYW1lcyApIDsKWC0JCQl9ClgtCQl9ClgrCQkvLyBx
dWV1ZSBzcGVha2VyIGZyYW1lClgrCQlxdWV1ZV9mcmFtZV9mb3Jfc3BlYWtlciggY29uZiwgbWVt
YmVyLCBzZW5kX2ZyYW1lcyApIDsKWCAJfQpYLQpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXIt
PmxvY2spOwpYIH0KWC0jaWZkZWYJVklERU8KWCsKWCAvLyBGdW5jdGlvbnMgdGhhdCB3aWxsIGlu
Y3JlYXNlIGFuZCBkZWNyZWFzZSBzcGVha2VyX2NvdW50IGluIGEgc2VjdXJlIHdheSwgbG9ja2lu
ZyB0aGUgbWVtYmVyIG11dGV4IGlmIHJlcXVpcmVkClggLy8gV2lsbCBhbHNvIHNldCBzcGVha2lu
Z19zdGF0ZSBmbGFnLgpYIC8vIFJldHVybnMgdGhlIHByZXZpb3VzIHNwZWFraW5nIHN0YXRlClhA
QCAtMzI4OSw3ICszNTI0LDcgQEAKWCAKWCAJcmV0dXJuIG9sZF9zdGF0ZTsKWCB9ClgtI2VuZGlm
ClgrClggdm9pZCBtZW1iZXJfcHJvY2Vzc19zcG9rZW5fZnJhbWVzKHN0cnVjdCBhc3RfY29uZmVy
ZW5jZSogY29uZiwKWCAJCQkJIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJlciwKWCAJCQkJ
IHN0cnVjdCBjb25mX2ZyYW1lICoqc3Bva2VuX2ZyYW1lcywKWEBAIC0zMzEyLDcgKzM1NDcsNyBA
QApYIAkJJiYgbWVtYmVyLT5pbkZyYW1lc05lZWRlZCA+IDAKWCAJCSkKWCAJewpYLQkJREVCVUco
ImNoYW5uZWwgPT4gJXMsIGluRnJhbWVzTmVlZGVkID0+ICVkLCBpbkZyYW1lc0NvdW50ID0+ICVk
XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5GcmFtZXNOZWVkZWQsIG1lbWJlci0+
aW5GcmFtZXNDb3VudCkgOwpYKwkJREVCVUcoImNoYW5uZWwgPT4gJXMsIGluRnJhbWVzTmVlZGVk
ID0+ICVkLCBpbkZyYW1lc0NvdW50ID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVt
YmVyLT5pbkZyYW1lc05lZWRlZCwgbWVtYmVyLT5pbkZyYW1lc0NvdW50KSA7ClggCX0KWCAjZW5k
aWYKWCAJLy8gbm9uLWxpc3RlbmVyIG1lbWJlciBzaG91bGQgaGF2ZSBmcmFtZXMsClhAQCAtMzMy
NywxNCArMzU2MiwxNSBAQApYIAkJLy8gZGVjcmVtZW50IG9ubHkgb24gc3RhdGUgdHJhbnNpdGlv
bnMKWCAJCWlmICggbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAxICkKWCAJCXsKWC0J
CQltZW1iZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID0gMDsKWC0jaWZkZWYJVklERU8KWCAJCQlk
ZWNyZW1lbnRfc3BlYWtlcl9jb3VudChtZW1iZXIsIDApOwpYKwkJCW1lbWJlci0+bG9jYWxfc3Bl
YWtpbmdfc3RhdGUgPSAwOwpYIAkJCS8vIElmIHdlJ3JlIGRyaXZpbmcgYW5vdGhlciBtZW1iZXIs
IGRlY3JlbWVudCBpdHMgc3BlYWtlciBjb3VudCBhcyB3ZWxsClgrI2lmZGVmCVZJREVPClggCQkJ
aWYgKCBtZW1iZXItPmRyaXZlbl9tZW1iZXIgIT0gTlVMTCApClggCQkJCWRlY3JlbWVudF9zcGVh
a2VyX2NvdW50KG1lbWJlci0+ZHJpdmVuX21lbWJlciwgMSk7ClggI2VuZGlmClggCQl9ClgrClgg
CQkvLyBjb3VudCB0aGUgbGlzdGVuZXJzClggCQkoKmxpc3RlbmVyX2NvdW50KSsrIDsKWCAJfQpY
QEAgLTMzNTAsMTkgKzM1ODYsMjEgQEAKWCAKWCAJCS8vIHBvaW50IHRoZSBsaXN0IGF0IHRoZSBu
ZXcgZnJhbWUKWCAJCSpzcG9rZW5fZnJhbWVzID0gY2ZyIDsKWCsKWCAJCS8vIEluY3JlbWVudCBz
cGVha2VyIGNvdW50IGZvciB1cyBhbmQgZm9yIGRyaXZlbiBtZW1iZXJzClggCQkvLyBUaGlzIGhh
cHBlbnMgb25seSBvbiB0aGUgZmlyc3QgcmVjZWl2ZWQgZnJhbWUsIHNpbmNlIHdlIHdhbnQgdG8K
WCAJCS8vIGluY3JlbWVudCBvbmx5IG9uIHN0YXRlIHRyYW5zaXRpb25zClggCQlpZiAoIG1lbWJl
ci0+bG9jYWxfc3BlYWtpbmdfc3RhdGUgPT0gMCApClggCQl7ClgrCQkJaW5jcmVtZW50X3NwZWFr
ZXJfY291bnQobWVtYmVyLCAwKTsKWCAJCQltZW1iZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID0g
MTsKWCAjaWZkZWYJVklERU8KWC0JCQlpbmNyZW1lbnRfc3BlYWtlcl9jb3VudChtZW1iZXIsIDAp
OwpYIAkJCS8vIElmIHdlJ3JlIGRyaXZpbmcgYW5vdGhlciBtZW1iZXIsIGluY3JlbWVudCBpdHMg
c3BlYWtlciBjb3VudCBhcyB3ZWxsClggCQkJaWYgKCBtZW1iZXItPmRyaXZlbl9tZW1iZXIgIT0g
TlVMTCApClggCQkJCWluY3JlbWVudF9zcGVha2VyX2NvdW50KG1lbWJlci0+ZHJpdmVuX21lbWJl
ciwgMSk7ClggI2VuZGlmClggCQl9ClgrClggCQkvLyBjb3VudCB0aGUgc3BlYWtlcnMKWCAJCSgq
c3BlYWtlcl9jb3VudCkrKyA7ClggCX0KWC0tLSAuL21lbWJlci5oLm9yaWcJMjAxMC0wOC0xMCAy
MDowMzo1NC4wMDAwMDAwMDAgKzAwMDAKWCsrKyAuL21lbWJlci5oCTIwMTAtMTEtMDEgMTc6MDc6
NDQuMDAwMDAwMDAwICswMDAwClhAQCAtNTUsNyArNTUsOSBAQApYIAlhc3RfbXV0ZXhfdCBsb2Nr
IDsgLy8gbWVtYmVyIGRhdGEgbXV0ZXgKWCAKWCAJc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuIDsg
Ly8gbWVtYmVyJ3MgY2hhbm5lbApYLQlzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGNvbmYgOyAvLyBt
ZW1iZXIncyBjb25mZXJlbmNlClgrCWNoYXIqIGNoYW5uZWxfbmFtZSA7IC8vIG1lbWJlcidzIGNo
YW5uZWwgbmFtZQpYKwpYKwljaGFyKiB1bmlxdWVpZCA7ICAvLyBtZW1iZXIncyB1bmlxdWVpZApY
IApYIAlhc3RfY29uZF90IGRlbGV0ZV92YXIgOyAvLyBkZWxldGUgY3YKWCAJY2hhciBkZWxldGVf
ZmxhZyA7IC8vIGRlbGV0ZSBmbGFnClhAQCAtNjUsMTUgKzY3LDE3IEBAClggCWludCBwcmlvcml0
eSA7CS8vIGhpZ2hlc3QgcHJpb3JpdHkgZ2V0cyB0aGUgY2hhbm5lbApYIAljaGFyKiBmbGFncyA7
CS8vIHJhdyBtZW1iZXItdHlwZSBmbGFncwpYIAljaGFyICp0eXBlIDsJCS8vIGNvbmZlcmVuY2Ug
dHlwZQpYKwljaGFyKiBjb25mX25hbWUgOwkJLy8gbmFtZSBvZiB0aGUgY29uZmVyZW5jZSB0aGF0
IG93biB0aGlzIG1lbWJlcgpYIAljaGFyICpzcHllZV9jaGFubmVsX25hbWUgOyAvLyBzcHllZSAg
Y2hhbm5lbCBuYW1lClgrCWNoYXIgKndlbGNvbWVfcHJvbXB0IDsKWCAJaW50IG1heF91c2VycyA7
IC8vIHplcm8gb3IgbWF4IHVzZXJzIGZvciB0aGlzIGNvbmZlcmVuY2UKWC0jaWYgKCBTSUxERVQg
PT0gMiApClgrClggCS8vIHZvaWNlIGZsYWdzClggCWludCB2YWRfZmxhZzsKWCAJaW50IGRlbm9p
c2VfZmxhZzsKWCAJaW50IGFnY19mbGFnOwpYIAlpbnQgdmlhX3RlbGVwaG9uZTsKWC0jZW5kaWYK
WCsKWCAJLy8gdmlkZW8gY29uZmVyZW5jZSBwYXJhbXMKWCAJaW50IGlkOwpYICNpZmRlZglWSURF
TwpYQEAgLTkwLDEzICs5NCwyNCBAQApYIAlpbnQgdGFsa192b2x1bWU7ClggCWludCBsaXN0ZW5f
dm9sdW1lOwpYIApYLQkvLyBtb2ggZmxhZ3MKWCsJLy8gbXVzaWMgb24gaG9sZCBmbGFnClggCWNo
YXIgbW9oX2ZsYWc7ClgtCWNoYXIgbW9oX3N0b3A7ClggClggCS8vIGhvbGQgb3B0aW9uIGZsYWcK
WCAJY2hhciBob2xkX2ZsYWc7ClggClgrCS8vIHJlY29yZGluZyB3YW50ZWQgZmxhZwpYKwljaGFy
IHJlY29yZF9mbGFnOwpYKwpYKwkvLyB3YWl0IG9wdGlvbiBmbGFnClgrCWNoYXIgd2FpdF9mb3Jf
bW9kZXJhdG9yX2ZsYWc7ClgrClgrCS8vIGNyZWF0aW9uIG9mIG5ldyBjb25mZXJlbmNlIG5vdCBh
bGxvd2VkClgrCWNoYXIgbm9fY3JlYXRlX2ZsYWc7ClgrClgrCS8vIHRlbXAgZmxhZyBmb3Igd2hl
biBzdGFyIGlzIHByZXNzZWQKWCsJY2hhciBzdGFyX3ByZXNzZWQ7ClgrClggCS8vIHRoaXMgbWVt
YmVyIHdpbGwgbm90IGhlYXIvc2VlClggCWludCBub3JlY3ZfYXVkaW87ClggI2lmZGVmCVZJREVP
ClhAQCAtMTQ3LDEyICsxNjIsMTIgQEAKWCAjaWZkZWYJVklERU8KWCAJdW5zaWduZWQgaW50IGlu
VmlkZW9GcmFtZXNOZWVkZWQgOwpYICNlbmRpZgpYLSNpZmRlZglBU1RfQ09ORl9DQUNIRV9MQVNU
X0ZSQU1FClgrClggCS8vIHVzZWQgd2hlbiBjYWNoaW5nIGxhc3QgZnJhbWUKWCAJY29uZl9mcmFt
ZSogaW5GcmFtZXNMYXN0IDsKWCAJdW5zaWduZWQgaW50IGluRnJhbWVzUmVwZWF0TGFzdCA7Clgg
CXVuc2lnbmVkIHNob3J0IG9rYXlUb0NhY2hlTGFzdCA7ClgtI2VuZGlmClgrClggCS8vIExMIG91
dHB1dCBmcmFtZSBxdWV1ZQpYIAljb25mX2ZyYW1lKiBvdXRGcmFtZXMgOwpYIAljb25mX2ZyYW1l
KiBvdXRGcmFtZXNUYWlsIDsKWEBAIC0xODYsNiArMjAxLDggQEAKWCAjZW5kaWYKWCAJLy8gcmVs
YXkgZHRtZiB0byBtYW5hZ2VyPwpYIAlzaG9ydCBkdG1mX3JlbGF5OwpYKwkvLyBhbGxvdyAic3Rh
ciIgZHRtZiBtZW51PwpYKwlzaG9ydCBkdG1mX3N0YXJfbWVudTsKWCAJLy8gaW5pdGlhbCBuYXQg
ZGVsYXkgZmxhZwpYIAlzaG9ydCBmaXJzdF9mcmFtZV9yZWNlaXZlZDsKWCAjaWZkZWYJVEVYVApY
QEAgLTIxMywxMyArMjMwLDExIEBAClggCS8vIHVzZWQgZm9yIGRldGVybWluaW5nIG5lZWQgdG8g
bWl4IGZyYW1lcwpYIAkvLyBhbmQgZm9yIG1hbmFnZW1lbnQgaW50ZXJmYWNlIG5vdGlmaWNhdGlv
bgpYIAkvLyBhbmQgZm9yIFZBRCBiYXNlZCB2aWRlbyBzd2l0Y2hpbmcKWC0jaWZkZWYJVklERU8K
WCAJc2hvcnQgc3BlYWtpbmdfc3RhdGVfbm90aWZ5IDsKWCAJc2hvcnQgc3BlYWtpbmdfc3RhdGUg
OyAvLyBUaGlzIGZsYWcgd2lsbCBiZSB0cnVlIGlmIHRoaXMgbWVtYmVyIG9yIGFueSBvZiBpdHMg
ZHJpdmVycyBpcyBzcGVha2luZwpYKwlzaG9ydCBsb2NhbF9zcGVha2luZ19zdGF0ZTsgLy8gVGhp
cyBmbGFnIHdpbGwgYmUgdHJ1ZSBvbmx5IGlmIHRoaXMgbWVtYmVyIGlzIHNwZWFraW5nClggCXN0
cnVjdCB0aW1ldmFsIGxhc3Rfc3RhdGVfY2hhbmdlOwpYIAlpbnQgc3BlYWtlcl9jb3VudDsgLy8g
TnVtYmVyIG9mIGRyaXZlcnMgKGluY2x1ZGluZyB0aGlzIG1lbWJlcikgdGhhdCBhcmUgc3BlYWtp
bmcKWC0jZW5kaWYKWC0Jc2hvcnQgbG9jYWxfc3BlYWtpbmdfc3RhdGU7IC8vIFRoaXMgZmxhZyB3
aWxsIGJlIHRydWUgb25seSBpZiB0aGlzIG1lbWJlciBpcyBzcGVha2luZwpYIApYICNpZmRlZglW
SURFTwpYIAkvLyBTdHVmZiB1c2VkIHRvIGRldGVybWluZSB2aWRlbyBicm9hZGNhc3Qgc3RhdGUK
WEBAIC0yODcsMTEgKzMwMiwxNCBAQApYIAlTcGVleFByZXByb2Nlc3NTdGF0ZSAqZHNwIDsKWCAg
ICAgICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gaWdub3JlIHNwZWV4X3ByZXByb2Nlc3MoKQpY
IAlpbnQgaWdub3JlX3NwZWV4X2NvdW50OwpYKyNlbHNlClgrCS8vIHBsYWNlaG9sZGVyIHdoZW4g
cHJlcHJvY2Vzc2luZyBpcyBub3QgZW5hYmxlZApYKwl2b2lkKiBkc3AgOwpYICNlbmRpZgpYIApY
IAkvLyBhdWRpbyBmb3JtYXQgdGhpcyBtZW1iZXIgaXMgdXNpbmcKWC0JaW50IHdyaXRlX2Zvcm1h
dCA7ClgtCWludCByZWFkX2Zvcm1hdCA7ClgrCWZvcm1hdF90IHdyaXRlX2Zvcm1hdCA7ClgrCWZv
cm1hdF90IHJlYWRfZm9ybWF0IDsKWCAKWCAJaW50IHdyaXRlX2Zvcm1hdF9pbmRleCA7ClggCWlu
dCByZWFkX2Zvcm1hdF9pbmRleCA7ClhAQCAtMzE4LDExICszMzYsMTEgQEAKWCAvLyBmdW5jdGlv
biBkZWNsYXJhdGlvbnMKWCAvLwpYIApYLWludCBtZW1iZXJfZXhlYyggc3RydWN0IGFzdF9jaGFu
bmVsKiBjaGFuLCB2b2lkKiBkYXRhICkgOwpYK2ludCBtZW1iZXJfZXhlYyggc3RydWN0IGFzdF9j
aGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkgOwpYIApYIHN0cnVjdCBhc3RfY29uZl9t
ZW1iZXIqIGNoZWNrX2FjdGl2ZV92aWRlbyggaW50IGlkLCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2Ug
KmNvbmYgKTsKWCAKWC1zdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1
Y3QgYXN0X2NoYW5uZWwqIGNoYW4sIGNvbnN0IGNoYXIqIGRhdGEsIGNoYXIqIGNvbmZfbmFtZSAp
IDsKWCtzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1Y3QgYXN0X2No
YW5uZWwqIGNoYW4sIGNvbnN0IGNoYXIqIGRhdGEgKSA7Clggc3RydWN0IGFzdF9jb25mX21lbWJl
ciogZGVsZXRlX21lbWJlciggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyICkgOwpYIApY
IC8vIGluY29taW5nIHF1ZXVlClhAQCAtMzYxLDEwICszNzksMTIgQEAKWCAjaWZkZWYJVEVYVApY
IGNvbmZfZnJhbWUqIGdldF9vdXRnb2luZ190ZXh0X2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZfbWVt
YmVyKiBtZW1iZXIgKSA7ClggI2VuZGlmClgtI2lmZGVmCVZJREVPClgrClgrdm9pZCBzZW5kX3N0
YXRlX2NoYW5nZV9ub3RpZmljYXRpb25zKCBzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIg
KSA7ClgrClggaW50IGluY3JlbWVudF9zcGVha2VyX2NvdW50KHN0cnVjdCBhc3RfY29uZl9tZW1i
ZXIgKm1lbWJlciwgaW50IGxvY2spOwpYIGludCBkZWNyZW1lbnRfc3BlYWtlcl9jb3VudChzdHJ1
Y3QgYXN0X2NvbmZfbWVtYmVyICptZW1iZXIsIGludCBsb2NrKTsKWC0jZW5kaWYKWCsKWCB2b2lk
IG1lbWJlcl9wcm9jZXNzX3Nwb2tlbl9mcmFtZXMoc3RydWN0IGFzdF9jb25mZXJlbmNlKiBjb25m
LApYIAkJCQkgIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJlciwKWCAJCQkJICBzdHJ1Y3Qg
Y29uZl9mcmFtZSAqKnNwb2tlbl9mcmFtZXMsCjEwZDA1NjQwNjk4OTNjN2U1MGI0ZDZjYTMzYmEx
Njk0CmVjaG8geCAtIGFwcGtvbmZlcmVuY2UvcGtnLWRlc2NyCnNlZCAncy9eWC8vJyA+YXBwa29u
ZmVyZW5jZS9wa2ctZGVzY3IgPDwgJ2VmNTc2YTRkMzk0NWQ0Y2ZjZjI0NDMwYWU4MWRlNzcwJwpY
QXBwX2tvbmZlcmVuY2UgaXMgYSBjaGFubmVsLWluZGVwZW5kZW50IGNvbmZlcmVuY2UgYXBwbGlj
YXRpb24uClhJdCBmZWF0dXJlcyBlZmZpY2llbnQgYXVkaW8gbWl4aW5nIGFsZ29yaXRobXMgYXMg
d2VsbCBhcyB2aWRlbyBzZWxlY3Rpb24KWHN1cHBvcnQgYmFzZWQgb24gVkFELCBEVE1GIG9yIENM
SS4gClgKWFdXVzogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hcHBrb25mZXJlbmNl
LwplZjU3NmE0ZDM5NDVkNGNmY2YyNDQzMGFlODFkZTc3MAplY2hvIHggLSBhcHBrb25mZXJlbmNl
L2Rpc3RpbmZvCnNlZCAncy9eWC8vJyA+YXBwa29uZmVyZW5jZS9kaXN0aW5mbyA8PCAnZWE1MWUz
NTBhYWQ1MzJiYjZhNTAwNWU4MGVjZTJlODAnClhNRDUgKGFwcGtvbmZlcmVuY2UtMS41LnRhci5n
eikgPSAzYTExNmE3MWEwOGYyM2NlZjUxMGZhMGI0N2Q3MDVjYgpYU0hBMjU2IChhcHBrb25mZXJl
bmNlLTEuNS50YXIuZ3opID0gNjQ3MGNjMzhiMDdhMTRiMjc5OTNiYzFlNmE1YzYzNjk0M2FlMzZl
N2UyMzg1YTNlMTM2YjNiYzU1YTg3YWYyNwpYU0laRSAoYXBwa29uZmVyZW5jZS0xLjUudGFyLmd6
KSA9IDE4Njg4MgplYTUxZTM1MGFhZDUzMmJiNmE1MDA1ZTgwZWNlMmU4MAplY2hvIHggLSBhcHBr
b25mZXJlbmNlL01ha2VmaWxlCnNlZCAncy9eWC8vJyA+YXBwa29uZmVyZW5jZS9NYWtlZmlsZSA8
PCAnYjg2MzE4MDA4NmM0M2M0NmE2MjU2NTQ5MjNhZjdlMjMnClgjIE5ldyBwb3J0cyBjb2xsZWN0
aW9uIG1ha2VmaWxlIGZvcjoJbmV0L2FwcGtvbmZlcmVuY2UKWCMgRGF0ZSBjcmVhdGVkOgkJCQkx
OSBPY3RvYmVyIDIwMTAKWCMgV2hvbToJCQkJCUFsZXggRGVpdGVyIDxBbGV4LkRlaXRlckBHbWFp
bC5DT00+ClgjClgjICRGcmVlQlNEJApYIwpYClhQT1JUTkFNRT0JYXBwa29uZmVyZW5jZQpYUE9S
VFZFUlNJT049CTEuNQpYQ0FURUdPUklFUz0JbmV0ClhNQVNURVJfU0lURVM9CVNGClgKWE1BSU5U
QUlORVI9CWFsZXguZGVpdGVyQGdtYWlsLmNvbQpYQ09NTUVOVD0JSGlnaC1wZXJmb3JtYW5jZSBB
c3RlcmlzayB2b2ljZS92aWRlbyBjb25mZXJlbmNpbmcgcGx1Z2luClgKWEJVSUxEX0RFUEVORFM9
ICBhc3Rlcmlzazoke1BPUlRTRElSfS9uZXQvYXN0ZXJpc2sKWFJVTl9ERVBFTkRTPSAgICBhc3Rl
cmlzazoke1BPUlRTRElSfS9uZXQvYXN0ZXJpc2sKWApYVVNFX0dNQUtFPQl5ZXMKWE1BS0VfRU5W
PQlMT0NBTEJBU0U9JHtMT0NBTEJBU0V9ClhXUktTUkM9CQkke1dSS0RJUn0vJHtQT1JUTkFNRX0v
a29uZmVyZW5jZQpYClhQTElTVF9GSUxFUz0JbGliL2FzdGVyaXNrL21vZHVsZXMvYXBwX2tvbmZl
cmVuY2Uuc28KWApYLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgpiODYzMTgwMDg2YzQzYzQ2YTYyNTY1
NDkyM2FmN2UyMwpleGl0Cgo=
--20cf30549daf7a8c210493feb76d--
More information about the freebsd-ports-bugs
mailing list