<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6448</bug_id>
          
          <creation_ts>2006-01-09 05:28:11 -0800</creation_ts>
          <short_desc>&lt;text&gt; does not support custom fills or strokes</short_desc>
          <delta_ts>2006-01-22 02:29:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>6447</dependson>
    
    <dependson>6553</dependson>
          <blocked>6708</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28046</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-09 05:28:11 -0800</bug_when>
    <thetext>&lt;text&gt; does not support custom fills or strokes

This will first require some additional changes to how KCanvas does its drawing:
http://bugzilla.opendarwin.org/show_bug.cgi?id=6447

Then it will also may require changes to QPainter to call WebCoreTextRenderer in a special way to have it 
not set the current color.  It might be possible to simply augment QPainter to just pass &quot;nil&quot; for the 
NSColor to WebCoreTextRenderer.  I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28216</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-10 19:37:02 -0800</bug_when>
    <thetext>*** Bug 6478 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29293</commentid>
    <comment_count>2</comment_count>
      <attachid>5823</attachid>
    <who name="Alexander Kellett">a</who>
    <bug_when>2006-01-21 18:58:38 -0800</bug_when>
    <thetext>Created attachment 5823
support for text fill/strokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29302</commentid>
    <comment_count>3</comment_count>
      <attachid>5823</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-21 23:08:55 -0800</bug_when>
    <thetext>Comment on attachment 5823
support for text fill/strokes

Unfortunately the patch you&apos;ve attached does not apply.  It looks to be an svk patch... which svn-apply does not understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29304</commentid>
    <comment_count>4</comment_count>
      <attachid>5823</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-22 00:28:29 -0800</bug_when>
    <thetext>Comment on attachment 5823
support for text fill/strokes

So a few comments.

+    virtual void render(KRenderingDeviceContext* context, const RenderPath* renderPath, KCPaintTargetType type) const { }

these should be pure virtual ( = 0 ) instead.

Everything in WebCore is now in a single namespace.  No need to use khtml:: or KDOM:: in new code.  Also KSVG should be replaced by WebCore in these files as you edit them.

+            int width  = 2048;
+            int height = 2048; // FIXME???
+            IntSize size = IntSize(width, height);

needs to be replaced by some real text measurement code.

The QPainter p; and PaintInfo creation code inside RenderText should be completely unecessary.  You should just be able to pass the exisiting &quot;paintInfo&quot; variable into RenderBlock::paint()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29312</commentid>
    <comment_count>5</comment_count>
      <attachid>5823</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-22 01:21:03 -0800</bug_when>
    <thetext>Comment on attachment 5823
support for text fill/strokes

Actually, I was able to tweak the patch locally to make it apply.  With that, I made the few minor changes I suggested with the previous comment and I&apos;m now going to go ahead and land this.  This looks good for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29313</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-22 01:22:17 -0800</bug_when>
    <thetext>Btw, this patch fixes about 40 some test cases, and causes a regression in one:  W3C-SVG-1.1/painting-fill-02-t  That regression is that currentColor is not properly supported for text for some reason now.  But we&apos;ll track that with a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29318</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-01-22 02:29:02 -0800</bug_when>
    <thetext>*** Bug 6669 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5823</attachid>
            <date>2006-01-21 18:58:38 -0800</date>
            <delta_ts>2006-01-22 01:21:03 -0800</delta_ts>
            <desc>support for text fill/strokes</desc>
            <filename>final-text-fillstroke.patch</filename>
            <type>text/plain</type>
            <size>40459</size>
            <attacher name="Alexander Kellett">a</attacher>
            
              <data encoding="base64">LS0tIENoYW5nZUxvZwkoL3dlYmtpdC90cnVuay9XZWJDb3JlKQkocmV2aXNpb24gMjc3KQorKysg
Q2hhbmdlTG9nCSgvd2Via2l0L2xvY2FsL1dlYkNvcmUpCShsb2NhbCkKQEAgLTEsMyArMSw1NiBA
QAorMjAwNi0wMS0yMiAgQWxleGFuZGVyIEtlbGxldHQgIDxseXBhbm92QGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGN1c3RvbSBmaWxsL3N0cm9rZXMgb24gdGV4dC4KKworICAgICAgICAqIGtjYW52YXMvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChSZW5kZXJTVkdUZXh0OjpwYWludCk6IHVzZSBuZXcg
cGFpbnRlciBzZXR1cC90ZWFyZG93biBpbmZyYXN0cnVjdHVyZQorICAgICAgICAqIGtjYW52YXMv
ZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5oOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50
U2VydmVyOjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50
U2VydmVyOjpzZXR1cCk6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI6OnJlbmRlcik6
CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI6OnRlYXJkb3duKToKKyAgICAgICAgKEtS
ZW5kZXJpbmdQYWludFNlcnZlcjo6aXNQYWludGluZ1RleHQpOgorICAgICAgICAoS1JlbmRlcmlu
Z1BhaW50U2VydmVyOjpzZXRQYWludGluZ1RleHQpOgorICAgICAgICAqIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbToKKyAgICAgICAg
KHNldHVwU2hhZGluZ1dpdGhTdHlsZSk6CisgICAgICAgIChyZW5kZXJTaGFkaW5nV2l0aFN0eWxl
KToKKyAgICAgICAgKHRlYXJkb3duU2hhZGluZ1dpdGhTdHlsZSk6CisgICAgICAgIChLUmVuZGVy
aW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6ZHJhdyk6CisgICAgICAgIChLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6c2V0dXApOgorICAgICAgICAo
S1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHo6OnJlbmRlcik6CisgICAg
ICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6dGVhcmRvd24p
OgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OmRy
YXcpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6
OnNldHVwKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVh
cnR6OjpyZW5kZXIpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGll
bnRRdWFydHo6OnRlYXJkb3duKToKKyAgICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS1Jl
bmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lmg6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJQYXR0ZXJuUXVhcnR6OjpLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXVhcnR6KToKKyAg
ICAgICAgKiBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6
Lm1tOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVscGVyOjpzdHJva2VQ
YXRoKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlcjo6Y2xpcFRv
U3Ryb2tlUGF0aCk6CisgICAgICAgIChLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHpIZWxwZXI6
OmZpbGxQYXRoKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlcjo6
Y2xpcFRvRmlsbFBhdGgpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRRdWFy
dHo6OmRyYXcpOgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRRdWFydHo6OnNl
dHVwKToKKyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkUXVhcnR6OjpyZW5kZXIp
OgorICAgICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyU29saWRRdWFydHo6OnRlYXJkb3duKToK
KyAgICAgICAgKEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdWFydHo6OmRyYXcpOgorICAg
ICAgICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6c2V0dXApOgorICAgICAg
ICAoS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6cmVuZGVyKToKKyAgICAgICAg
KEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRlcm5RdWFydHo6OnRlYXJkb3duKToKKyAgICAgICAg
KiBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5oOiBmaXggcHJvdG90eXBlCisg
ICAgICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQubW06CisgICAgICAg
IChhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KToKKyAgICAgICAgKiBrc3ZnMi9taXNjL0tDYW52
YXNSZW5kZXJpbmdTdHlsZS5jcHA6CisgICAgICAgIChLU1ZHUGFpbnRlckZhY3Rvcnk6OmZpbGxQ
YWludFNlcnZlcik6CisgICAgICAgIChLU1ZHUGFpbnRlckZhY3Rvcnk6OnN0cm9rZVBhaW50U2Vy
dmVyKToKKyAgICAgICAgKEtTVkdQYWludGVyRmFjdG9yeTo6Y3NzUHJpbWl0aXZlVG9MZW5ndGgp
OgorICAgICAgICAoS1NWR1BhaW50ZXJGYWN0b3J5OjpzdHJva2VQYWludGVyKToKKyAgICAgICAg
KEtTVkdQYWludGVyRmFjdG9yeTo6ZmlsbFBhaW50ZXIpOgorICAgICAgICAqIGtzdmcyL21pc2Mv
S0NhbnZhc1JlbmRlcmluZ1N0eWxlLmg6CisKIDIwMDYtMDEtMjEgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQG1hYy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCi0tLSBrY2Fu
dmFzL1JlbmRlclNWR1RleHQuY3BwCSgvd2Via2l0L3RydW5rL1dlYkNvcmUpCShyZXZpc2lvbiAy
NzcpCisrKyBrY2FudmFzL1JlbmRlclNWR1RleHQuY3BwCSgvd2Via2l0L2xvY2FsL1dlYkNvcmUp
CShsb2NhbCkKQEAgLTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IHByb2plY3QuCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKiAgICAgICAgICAgICAgIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2Rl
Lm9yZz4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTAgKzI0LDEyIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgogCisjaW5jbHVkZSAicmVuZGVy
X29iamVjdC5oIgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTGVuZ3RoTGlzdEltcGwuaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nRGV2aWNlLmgi
CiAjaW5jbHVkZSAiS0NhbnZhc01hdHJpeC5oIgorI2luY2x1ZGUgIktDYW52YXNSZW5kZXJpbmdT
dHlsZS5oIgogCiBSZW5kZXJTVkdUZXh0OjpSZW5kZXJTVkdUZXh0KEtTVkc6OlNWR1RleHRFbGVt
ZW50SW1wbCAqbm9kZSkgCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQpAQCAtNjQsNyArNjcsNyBA
QCB2b2lkIFJlbmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgIHNob3Vs
ZFBvcENvbnRleHQgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICBwYWludEluZm8ucC0+c2F2
ZSgpOwotCisgICAgCiAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVHJhbnNmb3JtKCkpOwog
ICAgIGNvbnRleHQtPmNvbmNhdENUTShRTWF0cml4KCkudHJhbnNsYXRlKHBhcmVudFgsIHBhcmVu
dFkpKTsKICAgICBjb250ZXh0LT5jb25jYXRDVE0odHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkp
OwpAQCAtODMsOCArODYsMzIgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8m
IHBhaQogICAgIGlmIChmaWx0ZXIpCiAgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihib3Vu
ZGluZ0JveCk7CiAgICAgICAgIAotICAgIFJlbmRlckJsb2NrOjpwYWludChwYWludEluZm8sIDAs
IDApOworICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyID0gS1NWRzo6
S1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRTZXJ2ZXIoc3R5bGUoKSwgdGhpcyk7CisgICAg
aWYgKGZpbGxQYWludFNlcnZlcikgeworICAgICAgICBmaWxsUGFpbnRTZXJ2ZXItPnNldFBhaW50
aW5nVGV4dCh0cnVlKTsKKyAgICAgICAgLy8gZmlsbFBhaW50U2VydmVyLT5zZXRBY3RpdmVDbGll
bnQodGhpcyk7CisgICAgICAgIGlmIChmaWxsUGFpbnRTZXJ2ZXItPnNldHVwKGNvbnRleHQsIHRo
aXMsIEFQUExZX1RPX0ZJTEwpKSB7CisgICAgICAgICAgICBRUGFpbnRlciBwOworICAgICAgICAg
ICAga2h0bWw6OlJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oJnAsIHBhaW50SW5mby5yLCBX
ZWJDb3JlOjpQYWludEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICAgICAgUmVuZGVyQmxv
Y2s6OnBhaW50KGluZm8sIDAsIDApOworICAgICAgICAgICAgZmlsbFBhaW50U2VydmVyLT50ZWFy
ZG93bihjb250ZXh0LCB0aGlzLCBBUFBMWV9UT19GSUxMKTsKKyAgICAgICAgfQorICAgICAgICBm
aWxsUGFpbnRTZXJ2ZXItPnNldFBhaW50aW5nVGV4dChmYWxzZSk7CisgICAgfQogICAgIAorICAg
IEtSZW5kZXJpbmdQYWludFNlcnZlciAqc3Ryb2tlUGFpbnRTZXJ2ZXIgPSBLU1ZHOjpLU1ZHUGFp
bnRlckZhY3Rvcnk6OnN0cm9rZVBhaW50U2VydmVyKHN0eWxlKCksIHRoaXMpOworICAgIGlmIChz
dHJva2VQYWludFNlcnZlcikgeworICAgICAgICBzdHJva2VQYWludFNlcnZlci0+c2V0UGFpbnRp
bmdUZXh0KHRydWUpOworICAgICAgICAvLyBmaWxsUGFpbnRTZXJ2ZXItPnNldEFjdGl2ZUNsaWVu
dCh0aGlzKTsKKyAgICAgICAgaWYgKHN0cm9rZVBhaW50U2VydmVyLT5zZXR1cChjb250ZXh0LCB0
aGlzLCBBUFBMWV9UT19TVFJPS0UpKSB7CisgICAgICAgICAgICBRUGFpbnRlciBwOworICAgICAg
ICAgICAga2h0bWw6OlJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oJnAsIHBhaW50SW5mby5y
LCBXZWJDb3JlOjpQYWludEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICAgICAgUmVuZGVy
QmxvY2s6OnBhaW50KGluZm8sIDAsIDApOworICAgICAgICAgICAgc3Ryb2tlUGFpbnRTZXJ2ZXIt
PnRlYXJkb3duKGNvbnRleHQsIHRoaXMsIEFQUExZX1RPX1NUUk9LRSk7CisgICAgICAgIH0KKyAg
ICAgICAgc3Ryb2tlUGFpbnRTZXJ2ZXItPnNldFBhaW50aW5nVGV4dChmYWxzZSk7CisgICAgfQor
CiAgICAgaWYgKGZpbHRlcikKICAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihib3VuZGluZ0Jv
eCk7CiAKLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlci5oCSgvd2Via2l0
L3RydW5rL1dlYkNvcmUpCShyZXZpc2lvbiAyNzcpCisrKyBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nUGFpbnRTZXJ2ZXIuaAkoL3dlYmtpdC9sb2NhbC9XZWJDb3JlKQkobG9jYWwpCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA2IEFsZXhhbmRlciBLZWxs
ZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKIApAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dDsKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZlciA6IHB1YmxpYyBLQ2FudmFzUmVzb3VyY2UK
IHsKIHB1YmxpYzoKLSAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIoKSA6IEtDYW52YXNSZXNvdXJj
ZSgpIHsgbV9hY3RpdmVDbGllbnQgPSAwOyB9CisgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyKCkg
OiBLQ2FudmFzUmVzb3VyY2UoKSwgbV9hY3RpdmVDbGllbnQoMCksIG1fcGFpbnRpbmdUZXh0KGZh
bHNlKSB7IH0KICAgICB2aXJ0dWFsIH5LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIoKSB7IH0KICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
QEAgLTY0LDE0ICs2NSwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZEluUmVnaXN0cnkoY29u
c3QgUVN0cmluZyYgbmV3SWQpIHsgbV9yZWdpc3RyeUlkID0gbmV3SWQ7IH0gCiAgICAgCiAgICAg
dmlydHVhbCBLQ1BhaW50U2VydmVyVHlwZSB0eXBlKCkgY29uc3QgPSAwOwotCisgICAgCiAgICAg
Ly8gQWN0dWFsIHJlbmRlcmluZyBmdW5jdGlvbgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEtSZW5k
ZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBSZW5kZXJQYXRoICpyZW5kZXJQYXRo
LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRy
YXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJl
bmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgYm9vbCBzZXR1cChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3Qga2h0
bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoS1JlbmRlcmlu
Z0RldmljZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtD
UGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93
bihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdCB7IH0KKyAg
ICAKKyAgICBib29sIGlzUGFpbnRpbmdUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wYWludGluZ1Rl
eHQ7IH0KKyAgICB2b2lkIHNldFBhaW50aW5nVGV4dChib29sIHBhaW50aW5nVGV4dCkgeyBtX3Bh
aW50aW5nVGV4dCA9IHBhaW50aW5nVGV4dDsgfQogCiAgICAgdmlydHVhbCBRVGV4dFN0cmVhbSAm
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihRVGV4dFN0cmVhbSAmKSBjb25zdCA9IDA7CiBwcml2YXRl
OgogICAgIGNvbnN0IFJlbmRlclBhdGggKm1fYWN0aXZlQ2xpZW50OwogICAgIFFTdHJpbmcgbV9y
ZWdpc3RyeUlkOworICAgIGJvb2wgbV9wYWludGluZ1RleHQ7CiB9OwogCiBRVGV4dFN0cmVhbSAm
b3BlcmF0b3I8PChRVGV4dFN0cmVhbSAmLCBjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgJik7
Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnRR
dWFydHoubW0JKC93ZWJraXQvdHJ1bmsvV2ViQ29yZSkJKHJldmlzaW9uIDI3NykKKysrIGtjYW52
YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudFF1YXJ0ei5tbQko
L3dlYmtpdC9sb2NhbC9XZWJDb3JlKQkobG9jYWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICAgICAgICAgICAgICAgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUu
b3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOSw4IEBACiAj
aW1wb3J0ICJLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHouaCIKICNpbXBvcnQgIlF1YXJ0elN1
cHBvcnQuaCIKIAorI2ltcG9ydCAicmVuZGVyX29iamVjdC5oIgorCiAjaW1wb3J0ICJrY2FudmFz
L0tDYW52YXMuaCIKICNpbXBvcnQgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgogI2ltcG9ydCAi
S1JlbmRlcmluZ1BhaW50U2VydmVyLmgiCkBAIC0zNiwyNiArMzksMjcgQEAKICNpbXBvcnQgIktD
YW52YXNNYXRyaXguaCIKICNpbXBvcnQgIktSZW5kZXJpbmdEZXZpY2VRdWFydHouaCIKIAorI2lt
cG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oIgorI2ltcG9ydCAiS0NhbnZhc0ltYWdlLmgi
CisKKwogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgogCiAKIC8vIE1heWJlIHRoaXMg
c2hvdWxkIGJlIGluIGEgYmFzZSBjbGFzcyBpbnN0ZWFkLi4uCi1zdGF0aWMgdm9pZCBkcmF3U2hh
ZGluZ1dpdGhTdHlsZShjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAqc2VydmVy
LCBDR1NoYWRpbmdSZWYgc2hhZGluZywgY29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0aCwgS0NQ
YWludFRhcmdldFR5cGUgdHlwZSkKK3N0YXRpYyBLQ2FudmFzSW1hZ2UqIHNldHVwU2hhZGluZ1dp
dGhTdHlsZShjb25zdCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJHcmFkaWVudCAqc2VydmVyLCBDR1No
YWRpbmdSZWYgc2hhZGluZywgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlLCBib29sIHBhaW50aW5nVGV4dCkKIHsKICAgICBLUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6ICpxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5n
RGV2aWNlUXVhcnR6ICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7CiAgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmN1cnJlbnRDR0NvbnRleHQoKTsKLSAgICBr
aHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRlclN0eWxlID0gcmVuZGVyUGF0aC0+c3R5bGUoKTsKKyAg
ICBraHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRlclN0eWxlID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgp
OwogICAgIEFTU0VSVChjb250ZXh0ICE9IE5VTEwpOwogICAgIAogICAgIENHQ29udGV4dFNhdmVH
U3RhdGUoY29udGV4dCk7CiAgICAgLy8gbWFrZSB0aGUgZ3JhZGllbnQgZml0IGluIHRoZSBiYm94
IGlmIG5lY2Vzc2FyeS4KLSAgICBpZihzZXJ2ZXItPmJvdW5kaW5nQm94TW9kZSgpKQotICAgIHsK
KyAgICBpZiAoc2VydmVyLT5ib3VuZGluZ0JveE1vZGUoKSAmJiByZW5kZXJPYmplY3QtPmlzUmVu
ZGVyUGF0aCgpKSB7IC8vIG5vIHN1cHBvcnQgZm9yIGJvdW5kaW5nIGJveGVzIGFyb3VuZCB0ZXh0
IHlldCEKICAgICAgICAgLy8gZ2V0IHRoZSBvYmplY3QgYmJveAogICAgICAgICBDR1JlY3Qgb2Jq
ZWN0QkJveCA9IENHQ29udGV4dEdldFBhdGhCb3VuZGluZ0JveChjb250ZXh0KTsKLSAgICAgICAg
CiAgICAgICAgIENHUmVjdCBncmFkaWVudEJCb3ggPSBDR1JlY3RNYWtlKDAsMCwxMDAsMTAwKTsK
LSAgICAgICAgCiAgICAgICAgIC8vIGdlbmVyYXRlIGEgdHJhbnNmb3JtIHRvIG1hcCBiZXR3ZWVu
IHRoZSB0d28uCiAgICAgICAgIENHQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50SW50b09iamVjdEJC
b3ggPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMoZ3JhZGllbnRCQm94LCBv
YmplY3RCQm94KTsKICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIGdyYWRpZW50
SW50b09iamVjdEJCb3gpOwpAQCAtNjksMjMgKzczLDc1IEBAIHN0YXRpYyB2b2lkIGRyYXdTaGFk
aW5nV2l0aFN0eWxlKGNvbnN0IEsKICAgICAKICAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19GSUxM
KSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0eWxlKSkgewog
ICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgICAgICBpZiAoS1NWRzo6
S1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRlcihyZW5kZXJTdHlsZSwgcmVuZGVyUGF0aCku
ZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpIHsKLSAgICAgICAgICAgIENHQ29udGV4dEVPQ2xp
cChjb250ZXh0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIENHQ29udGV4dENsaXAo
Y29udGV4dCk7CisgICAgICAgIGlmIChwYWludGluZ1RleHQpCisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dENsaXApOworICAgIH0KKworICAg
IEtDYW52YXNJbWFnZSAqbWFza0ltYWdlID0gMDsKKyAgICAKKyAgICBpZiAoKHR5cGUgJiBBUFBM
WV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNTdHJva2VkKHJlbmRl
clN0eWxlKSkgeworICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgICAg
ICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHJlbmRlclN0eWxlLCByZW5kZXJP
YmplY3QpOyAvLyBGSVhNRTogdGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBwbGFjZSBmb3IgdGhp
cy4KKyAgICAgICAgaWYgKHBhaW50aW5nVGV4dCkgeworICAgICAgICAgICAgbWFza0ltYWdlID0g
c3RhdGljX2Nhc3Q8S0NhbnZhc0ltYWdlICo+KHF1YXJ0ekRldmljZS0+Y3JlYXRlUmVzb3VyY2Uo
UlNfSU1BR0UpKTsKKyAgICAgICAgICAgIGludCB3aWR0aCAgPSAyMDQ4OworICAgICAgICAgICAg
aW50IGhlaWdodCA9IDIwNDg7IC8vIEZJWE1FPz8/CisgICAgICAgICAgICBJbnRTaXplIHNpemUg
PSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgbWFza0ltYWdlLT5pbml0KHNp
emUpOworICAgICAgICAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIG1hc2tJbWFnZUNvbnRl
eHQgPSBxdWFydHpEZXZpY2UtPmNvbnRleHRGb3JJbWFnZShtYXNrSW1hZ2UpOworICAgICAgICAg
ICAgcXVhcnR6RGV2aWNlLT5wdXNoQ29udGV4dChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFJlZiBtYXNrQ29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0UXVhcnR6Kj4obWFza0ltYWdlQ29udGV4dCktPmNnQ29udGV4dCgpOworICAgICAg
ICAgICAgY29uc3RfY2FzdDxraHRtbDo6UmVuZGVyT2JqZWN0ICo+KHJlbmRlck9iamVjdCktPnN0
eWxlKCktPnNldENvbG9yKFFDb2xvcigyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUobWFza0NvbnRleHQsIGtDR1RleHRTdHJva2UpOwogICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXNrSW1hZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHJl
bmRlclNoYWRpbmdXaXRoU3R5bGUoY29uc3QgS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQg
KnNlcnZlciwgQ0dTaGFkaW5nUmVmIHNoYWRpbmcsIGNvbnN0IFJlbmRlclBhdGggKnJlbmRlclBh
dGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpCit7CisgICAgS1JlbmRlcmluZ0RldmljZVF1YXJ0
eiAqcXVhcnR6RGV2aWNlID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZVF1YXJ0eiAqPihR
UGFpbnRlcjo6cmVuZGVyaW5nRGV2aWNlKCkpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
cXVhcnR6RGV2aWNlLT5jdXJyZW50Q0dDb250ZXh0KCk7CisgICAga2h0bWw6OlJlbmRlclN0eWxl
ICpyZW5kZXJTdHlsZSA9IHJlbmRlclBhdGgtPnN0eWxlKCk7CisgICAgQVNTRVJUKGNvbnRleHQg
IT0gTlVMTCk7CisgICAgCisgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgS1NWRzo6
S1NWR1BhaW50ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpCisgICAgICAgIEtSZW5k
ZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlcjo6Y2xpcFRvRmlsbFBhdGgoY29udGV4dCwgcmVu
ZGVyUGF0aCk7CisgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fU1RST0tFKSAmJiBLU1ZHOjpLU1ZH
UGFpbnRlckZhY3Rvcnk6OmlzU3Ryb2tlZChyZW5kZXJTdHlsZSkpCisgICAgICAgIEtSZW5kZXJp
bmdQYWludFNlcnZlclF1YXJ0ekhlbHBlcjo6Y2xpcFRvU3Ryb2tlUGF0aChjb250ZXh0LCByZW5k
ZXJQYXRoKTsKK30KKworc3RhdGljIHZvaWQgdGVhcmRvd25TaGFkaW5nV2l0aFN0eWxlKGNvbnN0
IEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50ICpzZXJ2ZXIsIENHU2hhZGluZ1JlZiBzaGFk
aW5nLCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0ICpyZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJn
ZXRUeXBlIHR5cGUsIGJvb2wgcGFpbnRpbmdUZXh0LCBLQ2FudmFzSW1hZ2UgKm1hc2tJbWFnZSkK
K3sKKyAgICBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICpxdWFydHpEZXZpY2UgPSBzdGF0aWNfY2Fz
dDxLUmVuZGVyaW5nRGV2aWNlUXVhcnR6ICo+KFFQYWludGVyOjpyZW5kZXJpbmdEZXZpY2UoKSk7
CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmN1cnJlbnRDR0NvbnRl
eHQoKTsKKyAgICBraHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRlclN0eWxlID0gcmVuZGVyT2JqZWN0
LT5zdHlsZSgpOworICAgIEFTU0VSVChjb250ZXh0ICE9IE5VTEwpOworICAgIAorICAgIGlmICgo
dHlwZSAmIEFQUExZX1RPX0ZJTEwpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNGaWxs
ZWQocmVuZGVyU3R5bGUpKSB7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IHNoYWRpbmcpOwogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogICAg
IH0KICAgICAKICAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQ
YWludGVyRmFjdG9yeTo6aXNTdHJva2VkKHJlbmRlclN0eWxlKSkgewotICAgICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgICAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0
KGNvbnRleHQsIHJlbmRlclN0eWxlLCByZW5kZXJQYXRoKTsgLy8gRklYTUU6IHRoaXMgc2VlbXMg
bGlrZSB0aGUgd3JvbmcgcGxhY2UgZm9yIHRoaXMuCi0gICAgICAgIENHQ29udGV4dFJlcGxhY2VQ
YXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOwotICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRl
eHQpOworICAgICAgICBpZiAocGFpbnRpbmdUZXh0KSB7CisgICAgICAgICAgICBpbnQgd2lkdGgg
ID0gMjA0ODsKKyAgICAgICAgICAgIGludCBoZWlnaHQgPSAyMDQ4OyAvLyBGSVhNRT8/PyBTRUUg
QUJPVkUKKyAgICAgICAgICAgIGRlbGV0ZSBxdWFydHpEZXZpY2UtPnBvcENvbnRleHQoKTsKKyAg
ICAgICAgICAgIGNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmN1cnJlbnRDR0NvbnRleHQoKTsKKyAg
ICAgICAgICAgIHZvaWQgKmltYWdlQnVmZmVyID0gZmFzdE1hbGxvYyh3aWR0aCAqIGhlaWdodCk7
CisgICAgICAgICAgICBDR0NvbG9yU3BhY2VSZWYgZ3JheUNvbG9yU3BhY2UgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVEZXZpY2VHcmF5KCk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgZ3JheXNjYWxl
Q29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbWFnZUJ1ZmZlciwgd2lkdGgsIGhlaWdo
dCwgOCwgd2lkdGgsIGdyYXlDb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZSk7CisgICAgICAg
ICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGdyYXlDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIEtD
YW52YXNJbWFnZVF1YXJ0eiAqcU1hc2tJbWFnZSA9IHN0YXRpY19jYXN0PEtDYW52YXNJbWFnZVF1
YXJ0eiAqPihtYXNrSW1hZ2UpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVyQXRQb2lu
dChncmF5c2NhbGVDb250ZXh0LCBDR1BvaW50TWFrZSgwLCAwKSwgcU1hc2tJbWFnZS0+Y2dMYXll
cigpKTsKKyAgICAgICAgICAgIENHSW1hZ2VSZWYgZ3JheXNjYWxlSW1hZ2UgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGVJbWFnZShncmF5c2NhbGVDb250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4
dENsaXBUb01hc2soY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KSwgZ3Jh
eXNjYWxlSW1hZ2UpOworICAgICAgICB9CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNv
bnRleHQsIHNoYWRpbmcpOwogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQp
OwogICAgIH0KKyAgICAKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQog
CkBAIC0yODksNyArMzQ1LDE1IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3Jh
ZGllbnQKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudDo6aW52YWxpZGF0
ZSgpOwogfQogCi12b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6
OjpkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpyZW5kZXJpbmdDb250ZXh0LCBjb25zdCBS
ZW5kZXJQYXRoICpyZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAordm9p
ZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudFF1YXJ0ejo6ZHJhdyhLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVu
ZGVyUGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBpZiAoIXNldHVw
KHJlbmRlcmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpKQorICAgICAgICByZXR1cm47Cisg
ICAgcmVuZGVyKHJlbmRlcmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOworICAgIHRlYXJk
b3duKHJlbmRlcmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOworfQorCitib29sIEtSZW5k
ZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50UXVhcnR6OjpzZXR1cChLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAogewogICAgIGlmKGxp
c3RlbmVyKCkpIC8vIHRoaXMgc2VlbXMgbGlrZSBiYWQgZGVzaWduIHRvIG1lLCBzaG91bGQgYmUg
aW4gYSBjb21tb24gYmFzZWNsYXNzLiAtLSBlY3MgOC82LzA1CiAgICAgICAgIGxpc3RlbmVyKCkt
PnJlc291cmNlTm90aWZpY2F0aW9uKCk7CkBAIC0yOTgsMTEgKzM2MiwzMSBAQCB2b2lkIEtSZW5k
ZXJpbmdQYWludFNlcnZlckxpbmVhckdyYWRpZW50CiAgICAgLy8gV2UgbmVlZCBhIGhvb2sgdG8g
Y2FsbCB0aGlzIHdoZW4gdGhlIGdyYWRpZW50IGdldHMgdXBkYXRlZCwgYmVmb3JlIGRyYXduLgog
ICAgIGlmICghbV9zaGFkaW5nQ2FjaGUpCiAgICAgICAgIGNvbnN0X2Nhc3Q8S1JlbmRlcmluZ1Bh
aW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHogKj4odGhpcyktPnVwZGF0ZVF1YXJ0ekdyYWRp
ZW50Q2FjaGUodGhpcyk7Ci0gICAgCi0gICAgZHJhd1NoYWRpbmdXaXRoU3R5bGUodGhpcywgbV9z
aGFkaW5nQ2FjaGUsIHJlbmRlclBhdGgsIHR5cGUpOworCisgICAgbV9tYXNrSW1hZ2UgPSBzZXR1
cFNoYWRpbmdXaXRoU3R5bGUodGhpcywgbV9zaGFkaW5nQ2FjaGUsIHJlbmRlck9iamVjdCwgdHlw
ZSwgaXNQYWludGluZ1RleHQoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCAqcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0
aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKK3ZvaWQgS1JlbmRlcmluZ1BhaW50U2Vy
dmVyTGluZWFyR3JhZGllbnRRdWFydHo6OnJlbmRlcihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCog
cmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVuZGVyUGF0aCwgS0NQYWludFRh
cmdldFR5cGUgdHlwZSkgY29uc3QKK3sgICAgCisgICAgcmVuZGVyU2hhZGluZ1dpdGhTdHlsZSh0
aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVuZGVyUGF0aCwgdHlwZSk7Cit9CisKK3ZvaWQgS1JlbmRl
cmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHo6OnRlYXJkb3duKEtSZW5kZXJpbmdE
ZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit7IAorICAgIHRl
YXJkb3duU2hhZGluZ1dpdGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVuZGVyT2JqZWN0
LCB0eXBlLCBpc1BhaW50aW5nVGV4dCgpLCBtX21hc2tJbWFnZSk7Cit9CisKK3ZvaWQgS1JlbmRl
cmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OmRyYXcoS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgs
IEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgaWYgKCFzZXR1cChyZW5kZXJp
bmdDb250ZXh0LCByZW5kZXJQYXRoLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJlbmRl
cihyZW5kZXJpbmdDb250ZXh0LCByZW5kZXJQYXRoLCB0eXBlKTsKKyAgICB0ZWFyZG93bihyZW5k
ZXJpbmdDb250ZXh0LCByZW5kZXJQYXRoLCB0eXBlKTsKK30KKworYm9vbCBLUmVuZGVyaW5nUGFp
bnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0ejo6c2V0dXAoS1JlbmRlcmluZ0RldmljZUNvbnRl
eHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJlbmRlck9i
amVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKICAgICBpZihsaXN0ZW5lcigp
KSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGluIGEgY29t
bW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQogICAgICAgICBsaXN0ZW5lcigpLT5yZXNvdXJj
ZU5vdGlmaWNhdGlvbigpOwpAQCAtMzExLDYgKzM5NSwxOCBAQCB2b2lkIEtSZW5kZXJpbmdQYWlu
dFNlcnZlclJhZGlhbEdyYWRpZW50CiAgICAgLy8gV2UgbmVlZCBhIGhvb2sgdG8gY2FsbCB0aGlz
IHdoZW4gdGhlIGdyYWRpZW50IGdldHMgdXBkYXRlZCwgYmVmb3JlIGRyYXduLgogICAgIGlmICgh
bV9zaGFkaW5nQ2FjaGUpCiAgICAgICAgIGNvbnN0X2Nhc3Q8S1JlbmRlcmluZ1BhaW50U2VydmVy
UmFkaWFsR3JhZGllbnRRdWFydHogKj4odGhpcyktPnVwZGF0ZVF1YXJ0ekdyYWRpZW50Q2FjaGUo
dGhpcyk7Ci0gICAgCi0gICAgZHJhd1NoYWRpbmdXaXRoU3R5bGUodGhpcywgbV9zaGFkaW5nQ2Fj
aGUsIHJlbmRlclBhdGgsIHR5cGUpOworCisgICAgbV9tYXNrSW1hZ2UgPSBzZXR1cFNoYWRpbmdX
aXRoU3R5bGUodGhpcywgbV9zaGFkaW5nQ2FjaGUsIHJlbmRlck9iamVjdCwgdHlwZSwgaXNQYWlu
dGluZ1RleHQoKSk7CisgICAgICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEtSZW5k
ZXJpbmdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50UXVhcnR6OjpyZW5kZXIoS1JlbmRlcmluZ0Rl
dmljZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBh
dGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgcmVuZGVyU2hhZGluZ1dp
dGhTdHlsZSh0aGlzLCBtX3NoYWRpbmdDYWNoZSwgcmVuZGVyUGF0aCwgdHlwZSk7CiB9CisKK3Zv
aWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnRRdWFydHo6OnRlYXJkb3duKEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRtbDo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit7
CisgICAgdGVhcmRvd25TaGFkaW5nV2l0aFN0eWxlKHRoaXMsIG1fc2hhZGluZ0NhY2hlLCByZW5k
ZXJPYmplY3QsIHR5cGUsIGlzUGFpbnRpbmdUZXh0KCksIG1fbWFza0ltYWdlKTsKK30KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmlu
Z1BhaW50U2VydmVyUXVhcnR6LmgJKC93ZWJraXQvdHJ1bmsvV2ViQ29yZSkJKHJldmlzaW9uIDI3
NykKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXJRdWFydHou
aAkoL3dlYmtpdC9sb2NhbC9XZWJDb3JlKQkobG9jYWwpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4gCisgKiAgICAgICAgICAgICAgIDIwMDYgQWxleGFuZGVyIEtlbGxldHQg
PGx5cGFub3ZAa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
MTYgKzMwLDM1IEBACiAjaW1wb3J0IDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJQYXR0ZXJuLmg+CiAjaW1wb3J0IDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJHcmFkaWVudC5oPgogCitjbGFzcyBLQ2FudmFzSW1hZ2U7CisKK2NsYXNzIEtSZW5kZXJpbmdQ
YWludFNlcnZlclF1YXJ0ekhlbHBlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc3Ryb2tl
UGF0aChDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0aCk7
CisgICAgc3RhdGljIHZvaWQgY2xpcFRvU3Ryb2tlUGF0aChDR0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0aCk7CisgICAgc3RhdGljIHZvaWQgZmlsbFBhdGgo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGggKnJlbmRlclBhdGgpOworICAg
IHN0YXRpYyB2b2lkIGNsaXBUb0ZpbGxQYXRoKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJQYXRoICpyZW5kZXJQYXRoKTsKK307CisKIGNsYXNzIEtSZW5kZXJpbmdQYWludFNlcnZl
clNvbGlkUXVhcnR6IDogcHVibGljIEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkIHsKIHB1Ymxp
YzoKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF1YXJ0eigpIHt9OwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBSZW5k
ZXJQYXRoICpyZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3Qg
UmVuZGVyUGF0aCogcmVuZGVyUGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHNldHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBl
IHR5cGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoS1JlbmRlcmluZ0RldmljZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtDUGFpbnRUYXJn
ZXRUeXBlIHR5cGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93bihLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogcmVuZGVy
T2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsgICAgCiB9OwogCiBjbGFzcyBL
UmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXVhcnR6IDogcHVibGljIEtSZW5kZXJpbmdQYWlu
dFNlcnZlclBhdHRlcm4gewogcHVibGljOgotICAgIEtSZW5kZXJpbmdQYWludFNlcnZlclBhdHRl
cm5RdWFydHooKSB7fTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0aCwgS0NQYWludFRhcmdl
dFR5cGUgdHlwZSkgY29uc3Q7CisgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0
eigpIHt9CisgICAgdmlydHVhbCB2b2lkIGRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5
cGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzZXR1cChLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dCogY29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1Bh
aW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyKEtSZW5k
ZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJQYXRoKiByZW5kZXJQYXRo
LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdGVhcmRv
d24oS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3Q7Citwcml2
YXRlOgorICAgIG11dGFibGUgQ0dDb2xvclNwYWNlUmVmIG1fcGF0dGVyblNwYWNlOworICAgIG11
dGFibGUgQ0dQYXR0ZXJuUmVmIG1fcGF0dGVybjsKIH07CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAg
LTY0LDcgKzg0LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRl
Q2FjaGVzKCk7Ci0gICAgQ0dTaGFkaW5nUmVmICAgICAgICBtX3NoYWRpbmdDYWNoZTsKKyAgICBD
R1NoYWRpbmdSZWYgbV9zaGFkaW5nQ2FjaGU7CisgICAgbXV0YWJsZSBLQ2FudmFzSW1hZ2UgKm1f
bWFza0ltYWdlOwogfTsKIAogY2xhc3MgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGll
bnRRdWFydHogOiBwdWJsaWMgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQsCkBA
IC03Miw3ICs5MywxMCBAQCBjbGFzcyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVu
CiBwdWJsaWM6CiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyTGluZWFyR3JhZGllbnRRdWFydHoo
KSB7fTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBSZW5kZXJQYXRoICpy
ZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVyUGF0
aCogcmVuZGVyUGF0aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNldHVwKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBraHRt
bDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5
cGUpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93bihLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCogY29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBL
Q1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdDsgICAgCiB9OwogCiBjbGFzcyBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eiA6IHB1YmxpYyBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJSYWRpYWxHcmFkaWVudCwKQEAgLTgwLDUgKzEwNCw4IEBAIGNsYXNzIEtSZW5kZXJpbmdQ
YWludFNlcnZlclJhZGlhbEdyYWRpZW4KIHB1YmxpYzoKICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJSYWRpYWxHcmFkaWVudFF1YXJ0eigpIHt9OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IFJlbmRlclBhdGggKnJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZW5kZXJQYXRoKiByZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0
eXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0dXAoS1JlbmRlcmluZ0RldmljZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgS0NQ
YWludFRhcmdldFR5cGUgdHlwZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlbmRlcihLUmVu
ZGVyaW5nRGV2aWNlQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVuZGVyUGF0
aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHRlYXJk
b3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0KiBjb250ZXh0LCBjb25zdCBraHRtbDo6UmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0OyAgICAK
IH07Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6
Lm1tCSgvd2Via2l0L3RydW5rL1dlYkNvcmUpCShyZXZpc2lvbiAyNzcpCisrKyBrY2FudmFzL2Rl
dmljZS9xdWFydHovS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6Lm1tCSgvd2Via2l0L2xvY2Fs
L1dlYkNvcmUpCShsb2NhbCkKQEAgLTQwLDM5ICs0MCw5MSBAQAogCiAjaW1wb3J0ICJLV1FMb2dn
aW5nLmgiCiAKK3ZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVscGVyOjpzdHJva2VQ
YXRoKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBSZW5kZXJQYXRoICpyZW5kZXJQYXRoKQor
eworICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7Cit9CisKK3ZvaWQgS1JlbmRlcmlu
Z1BhaW50U2VydmVyUXVhcnR6SGVscGVyOjpjbGlwVG9TdHJva2VQYXRoKENHQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBSZW5kZXJQYXRoICpyZW5kZXJQYXRoKQoreworICAgIENHQ29udGV4dFJl
cGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dENsaXAoY29u
dGV4dCk7Cit9ICAgIAorCit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclF1YXJ0ekhlbHBlcjo6
ZmlsbFBhdGgoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFJlbmRlclBhdGggKnJlbmRlclBh
dGgpCit7CisgICAgaWYgKEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6ZmlsbFBhaW50ZXIocmVu
ZGVyUGF0aC0+c3R5bGUoKSwgcmVuZGVyUGF0aCkuZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQp
CisgICAgICAgIENHQ29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7CisgICAgZWxzZQorICAgICAg
ICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKK30KKwordm9pZCBLUmVuZGVyaW5nUGFpbnRT
ZXJ2ZXJRdWFydHpIZWxwZXI6OmNsaXBUb0ZpbGxQYXRoKENHQ29udGV4dFJlZiBjb250ZXh0LCBj
b25zdCBSZW5kZXJQYXRoICpyZW5kZXJQYXRoKQoreworICAgIGlmIChLU1ZHOjpLU1ZHUGFpbnRl
ckZhY3Rvcnk6OmZpbGxQYWludGVyKHJlbmRlclBhdGgtPnN0eWxlKCksIHJlbmRlclBhdGgpLmZp
bGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REKQorICAgICAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4
dCk7CisgICAgZWxzZQorICAgICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOworfSAgICAKKwog
dm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZFF1YXJ0ejo6ZHJhdyhLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCAqcmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCAqcmVuZGVyUGF0
aCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKKyAgICBpZiAoIXNldHVwKHJlbmRl
cmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpKQorICAgICAgICByZXR1cm47CisgICAgcmVu
ZGVyKHJlbmRlcmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOworICAgIHRlYXJkb3duKHJl
bmRlcmluZ0NvbnRleHQsIHJlbmRlclBhdGgsIHR5cGUpOworfQorCitib29sIEtSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkUXVhcnR6OjpzZXR1cChLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAqcmVu
ZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBL
Q1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAorewogICAgIEtSZW5kZXJpbmdEZXZpY2VDb250
ZXh0UXVhcnR6ICpxdWFydHpDb250ZXh0ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0RldmljZUNv
bnRleHRRdWFydHogKj4ocmVuZGVyaW5nQ29udGV4dCk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBxdWFydHpDb250ZXh0LT5jZ0NvbnRleHQoKTsKLSAgICBraHRtbDo6UmVuZGVyU3R5bGUg
KnJlbmRlclN0eWxlID0gcmVuZGVyUGF0aC0+c3R5bGUoKTsKKyAgICBraHRtbDo6UmVuZGVyU3R5
bGUgKnJlbmRlclN0eWxlID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpOwogCiAgICAgQ0dDb250ZXh0
U2V0QWxwaGEoY29udGV4dCwgcmVuZGVyU3R5bGUtPm9wYWNpdHkoKSk7CiAgICAgICAgIAogICAg
IGlmICgodHlwZSAmIEFQUExZX1RPX0ZJTEwpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6
aXNGaWxsZWQocmVuZGVyU3R5bGUpKSB7CiAgICAgICAgIENHQ29sb3JSZWYgY29sb3JDRyA9IGNn
Q29sb3IoY29sb3IoKSk7Ci0gICAgICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNy
ZWF0ZUNvcHlXaXRoQWxwaGEoY29sb3JDRywgS1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxs
UGFpbnRlcihyZW5kZXJTdHlsZSwgcmVuZGVyUGF0aCkub3BhY2l0eSgpKTsKKyAgICAgICAgQ0dD
b2xvclJlZiB3aXRoQWxwaGEgPSBDR0NvbG9yQ3JlYXRlQ29weVdpdGhBbHBoYShjb2xvckNHLCBL
U1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmZpbGxQYWludGVyKHJlbmRlclN0eWxlLCByZW5kZXJP
YmplY3QpLm9wYWNpdHkoKSk7CiAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xv
cihjb250ZXh0LCB3aXRoQWxwaGEpOwogICAgICAgICBDR0NvbG9yUmVsZWFzZShjb2xvckNHKTsK
ICAgICAgICAgQ0dDb2xvclJlbGVhc2Uod2l0aEFscGhhKTsKLSAgICAgICAgaWYgKEtTVkc6OktT
VkdQYWludGVyRmFjdG9yeTo6ZmlsbFBhaW50ZXIocmVuZGVyU3R5bGUsIHJlbmRlclBhdGgpLmZp
bGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REKQotICAgICAgICAgICAgQ0dDb250ZXh0RU9GaWxsUGF0
aChjb250ZXh0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQ0dDb250ZXh0RmlsbFBhdGgo
Y29udGV4dCk7CisgICAgICAgIGlmIChpc1BhaW50aW5nVGV4dCgpKSB7CisgICAgICAgICAgICBj
b25zdF9jYXN0PGtodG1sOjpSZW5kZXJPYmplY3QgKj4ocmVuZGVyT2JqZWN0KS0+c3R5bGUoKS0+
c2V0Q29sb3IoY29sb3IoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01v
ZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCh0
eXBlICYgQVBQTFlfVE9fU1RST0tFKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzU3Ry
b2tlZChyZW5kZXJTdHlsZSkpIHsKICAgICAgICAgQ0dDb2xvclJlZiBjb2xvckNHID0gY2dDb2xv
cihjb2xvcigpKTsKLSAgICAgICAgQ0dDb2xvclJlZiB3aXRoQWxwaGEgPSBDR0NvbG9yQ3JlYXRl
Q29weVdpdGhBbHBoYShjb2xvckNHLCBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OnN0cm9rZVBh
aW50ZXIocmVuZGVyU3R5bGUsIHJlbmRlclBhdGgpLm9wYWNpdHkoKSk7ICAgICAgICAgCisgICAg
ICAgIENHQ29sb3JSZWYgd2l0aEFscGhhID0gQ0dDb2xvckNyZWF0ZUNvcHlXaXRoQWxwaGEoY29s
b3JDRywgS1NWRzo6S1NWR1BhaW50ZXJGYWN0b3J5OjpzdHJva2VQYWludGVyKHJlbmRlclN0eWxl
LCByZW5kZXJPYmplY3QpLm9wYWNpdHkoKSk7ICAgICAgICAgCiAgICAgICAgIENHQ29udGV4dFNl
dFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIHdpdGhBbHBoYSk7CiAgICAgICAgIENHQ29s
b3JSZWxlYXNlKGNvbG9yQ0cpOwogICAgICAgICBDR0NvbG9yUmVsZWFzZSh3aXRoQWxwaGEpOwot
ICAgICAgICAKLSAgICAgICAgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0LCByZW5k
ZXJTdHlsZSwgcmVuZGVyUGF0aCk7Ci0gICAgICAgIAotICAgICAgICBDR0NvbnRleHRTdHJva2VQ
YXRoKGNvbnRleHQpOworICAgICAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQs
IHJlbmRlclN0eWxlLCByZW5kZXJPYmplY3QpOworICAgICAgICBpZiAoaXNQYWludGluZ1RleHQo
KSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxraHRtbDo6UmVuZGVyT2JqZWN0ICo+KHJlbmRl
ck9iamVjdCktPnN0eWxlKCktPnNldENvbG9yKGNvbG9yKCkpOworICAgICAgICAgICAgQ0dDb250
ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2UpOworICAgICAgICB9
CiAgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEtSZW5kZXJpbmdQYWlu
dFNlcnZlclNvbGlkUXVhcnR6OjpyZW5kZXIoS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIHJlbmRl
cmluZ0NvbnRleHQsIGNvbnN0IFJlbmRlclBhdGgqIHJlbmRlclBhdGgsIEtDUGFpbnRUYXJnZXRU
eXBlIHR5cGUpIGNvbnN0Cit7CisgICAga2h0bWw6OlJlbmRlclN0eWxlICpyZW5kZXJTdHlsZSA9
IHJlbmRlclBhdGgtPnN0eWxlKCk7CisgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdWFydHog
KnF1YXJ0ekNvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2aWNlQ29udGV4dFF1YXJ0
eiAqPihyZW5kZXJpbmdDb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHF1YXJ0
ekNvbnRleHQtPmNnQ29udGV4dCgpOyAgICAKKyAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19GSUxM
KSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmlsbGVkKHJlbmRlclN0eWxlKSkKKyAg
ICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVscGVyOjpmaWxsUGF0aChjb250ZXh0
LCByZW5kZXJQYXRoKTsKKyAgICBpZiAoKHR5cGUgJiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6
OktTVkdQYWludGVyRmFjdG9yeTo6aXNTdHJva2VkKHJlbmRlclN0eWxlKSkKKyAgICAgICAgS1Jl
bmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVscGVyOjpzdHJva2VQYXRoKGNvbnRleHQsIHJlbmRl
clBhdGgpOworfQorCit2b2lkIEtSZW5kZXJpbmdQYWludFNlcnZlclNvbGlkUXVhcnR6Ojp0ZWFy
ZG93bihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCogcmVuZGVyaW5nQ29udGV4dCwgY29uc3Qga2h0
bWw6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBj
b25zdAoreworfQogCiB2b2lkIHBhdHRlcm5DYWxsYmFjayh2b2lkICppbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIHsKQEAgLTgxLDE5ICsxMzMsMjcgQEAgdm9pZCBwYXR0ZXJuQ2FsbGJhY2so
dm9pZCAqaW5mbywgQ0dDb250ZQogICAgIENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoY29udGV4
dCwgQ0dQb2ludFplcm8sIGxheWVyKTsKIH0KIAotdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQ
YXR0ZXJuUXVhcnR6OjpkcmF3KEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpyZW5kZXJpbmdDb250
ZXh0LCBjb25zdCBSZW5kZXJQYXRoICpyZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBl
KSBjb25zdAordm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJuUXVhcnR6OjpkcmF3KEtS
ZW5kZXJpbmdEZXZpY2VDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBSZW5kZXJQYXRo
KiByZW5kZXJQYXRoLCBLQ1BhaW50VGFyZ2V0VHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmICgh
c2V0dXAocmVuZGVyaW5nQ29udGV4dCwgcmVuZGVyUGF0aCwgdHlwZSkpCisgICAgICAgIHJldHVy
bjsKKyAgICByZW5kZXIocmVuZGVyaW5nQ29udGV4dCwgcmVuZGVyUGF0aCwgdHlwZSk7CisgICAg
dGVhcmRvd24ocmVuZGVyaW5nQ29udGV4dCwgcmVuZGVyUGF0aCwgdHlwZSk7Cit9CisKK2Jvb2wg
S1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejo6c2V0dXAoS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgS0NQYWludFRhcmdldFR5cGUgdHlwZSkgY29uc3QKIHsKICAgICBpZihsaXN0
ZW5lcigpKSAvLyB0aGlzIHNlZW1zIGxpa2UgYmFkIGRlc2lnbiB0byBtZSwgc2hvdWxkIGJlIGlu
IGEgY29tbW9uIGJhc2VjbGFzcy4gLS0gZWNzIDgvNi8wNQogICAgICAgICBsaXN0ZW5lcigpLT5y
ZXNvdXJjZU5vdGlmaWNhdGlvbigpOwogCi0gICAga2h0bWw6OlJlbmRlclN0eWxlICpyZW5kZXJT
dHlsZSA9IHJlbmRlclBhdGgtPnN0eWxlKCk7CisgICAga2h0bWw6OlJlbmRlclN0eWxlICpyZW5k
ZXJTdHlsZSA9IHJlbmRlck9iamVjdC0+c3R5bGUoKTsKIAogICAgIEtSZW5kZXJpbmdEZXZpY2VD
b250ZXh0UXVhcnR6ICpxdWFydHpDb250ZXh0ID0gc3RhdGljX2Nhc3Q8S1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHRRdWFydHogKj4ocmVuZGVyaW5nQ29udGV4dCk7CiAgICAgQ0dDb250ZXh0UmVmIGNv
bnRleHQgPSBxdWFydHpDb250ZXh0LT5jZ0NvbnRleHQoKTsKIAogICAgIEtDYW52YXNJbWFnZSAq
Y2VsbCA9IHRpbGUoKTsKICAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIApAQCAt
MTEwLDcgKzE3MCw3IEBAIHZvaWQgS1JlbmRlcmluZ1BhaW50U2VydmVyUGF0dGVyblF1YXJ0ejoK
ICAgICBDR0NvbnRleHRTZXRQYXR0ZXJuUGhhc2UoY29udGV4dCwgcGhhc2UpOwogCiAgICAgQ0dQ
YXR0ZXJuQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHswLCBwYXR0ZXJuQ2FsbGJhY2ssIE5VTEx9Owot
ICAgIENHUGF0dGVyblJlZiBwYXR0ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRlICgKKyAgICBtX3BhdHRl
cm4gPSBDR1BhdHRlcm5DcmVhdGUoCiAgICAgICAgIHRpbGUoKSwKICAgICAgICAgQ0dSZWN0TWFr
ZSgwLDAsY2VsbFNpemUud2lkdGgsY2VsbFNpemUuaGVpZ2h0KSwKICAgICAgICAgdHJhbnNmb3Jt
LApAQCAtMTE4LDMwICsxNzgsNTMgQEAgdm9pZCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJQYXR0ZXJu
UXVhcnR6OgogICAgICAgICBiYm94KCkuaGVpZ2h0KCksIC8vY2VsbFNpemUuaGVpZ2h0LAogICAg
ICAgICBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCAgLy8gRklYTUU6IHNob3VsZCBh
c2sgQ0cgZ3V5cy4KICAgICAgICAgdHJ1ZSwgLy8gaGFzIGNvbG9yCi0gICAgICAgICZjYWxsYmFj
a3MgKTsKKyAgICAgICAgJmNhbGxiYWNrcyk7CiAKICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250
ZXh0LCByZW5kZXJTdHlsZS0+b3BhY2l0eSgpKTsgLy8gb3IgZG8gSSBzZXQgdGhlIGFscGhhIGFi
b3ZlPwogCi0gICAgQ0dDb2xvclNwYWNlUmVmIHBhdHRlcm5TcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZVBhdHRlcm4oTlVMTCk7CisgICAgbV9wYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVQYXR0ZXJuKE5VTEwpOwogCiAgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fRklMTCkgJiYgS1NW
Rzo6S1NWR1BhaW50ZXJGYWN0b3J5Ojppc0ZpbGxlZChyZW5kZXJTdHlsZSkpIHsKLSAgICAgICAg
Q0dDb250ZXh0U2V0RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlKTsKLSAgICAg
ICAgQ0dDb250ZXh0U2V0RmlsbFBhdHRlcm4oY29udGV4dCwgcGF0dGVybiwgJmFscGhhKTsKLSAg
ICAgICAgaWYgKEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6ZmlsbFBhaW50ZXIocmVuZGVyU3R5
bGUsIHJlbmRlclBhdGgpLmZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REKQotICAgICAgICAgICAg
Q0dDb250ZXh0RU9GaWxsUGF0aChjb250ZXh0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Q0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7CisgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xv
clNwYWNlKGNvbnRleHQsIG1fcGF0dGVyblNwYWNlKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0Rmls
bFBhdHRlcm4oY29udGV4dCwgbV9wYXR0ZXJuLCAmYWxwaGEpOworICAgICAgICBpZiAoaXNQYWlu
dGluZ1RleHQoKSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxraHRtbDo6UmVuZGVyT2JqZWN0
ICo+KHJlbmRlck9iamVjdCktPnN0eWxlKCktPnNldENvbG9yKFFDb2xvcigpKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbCk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKCh0eXBlICYgQVBQTFlfVE9fU1RST0tFKSAm
JiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzU3Ryb2tlZChyZW5kZXJTdHlsZSkpIHsKLSAg
ICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2Up
OwotICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VQYXR0ZXJuKGNvbnRleHQsIHBhdHRlcm4sICZh
bHBoYSk7Ci0gICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgcmVuZGVy
U3R5bGUsIHJlbmRlclBhdGgpOwotICAgICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNvbnRleHQp
OworICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvclNwYWNlKGNvbnRleHQsIG1fcGF0dGVy
blNwYWNlKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlUGF0dGVybihjb250ZXh0LCBtX3Bh
dHRlcm4sICZhbHBoYSk7CisgICAgICAgIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4
dCwgcmVuZGVyU3R5bGUsIHJlbmRlck9iamVjdCk7CisgICAgICAgIGlmIChpc1BhaW50aW5nVGV4
dCgpKSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PGtodG1sOjpSZW5kZXJPYmplY3QgKj4ocmVu
ZGVyT2JqZWN0KS0+c3R5bGUoKS0+c2V0Q29sb3IoUUNvbG9yKCkpOworICAgICAgICAgICAgQ0dD
b250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2UpOworICAgICAg
ICB9CiAgICAgfQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEtSZW5kZXJpbmdQ
YWludFNlcnZlclBhdHRlcm5RdWFydHo6OnJlbmRlcihLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCog
cmVuZGVyaW5nQ29udGV4dCwgY29uc3QgUmVuZGVyUGF0aCogcmVuZGVyUGF0aCwgS0NQYWludFRh
cmdldFR5cGUgdHlwZSkgY29uc3QKK3sKKyAgICBraHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRlclN0
eWxlID0gcmVuZGVyUGF0aC0+c3R5bGUoKTsKIAotICAgIENHUGF0dGVyblJlbGVhc2UocGF0dGVy
bik7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZSAocGF0dGVyblNwYWNlKTsKKyAgICBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dFF1YXJ0eiAqcXVhcnR6Q29udGV4dCA9IHN0YXRpY19jYXN0PEtSZW5k
ZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6ICo+KHJlbmRlcmluZ0NvbnRleHQpOworICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gcXVhcnR6Q29udGV4dC0+Y2dDb250ZXh0KCk7CiAKKyAgICBpZiAo
KHR5cGUgJiBBUFBMWV9UT19GSUxMKSAmJiBLU1ZHOjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmlzRmls
bGVkKHJlbmRlclN0eWxlKSkKKyAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVs
cGVyOjpmaWxsUGF0aChjb250ZXh0LCByZW5kZXJQYXRoKTsKKyAgICAKKyAgICBpZiAoKHR5cGUg
JiBBUFBMWV9UT19TVFJPS0UpICYmIEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6aXNTdHJva2Vk
KHJlbmRlclN0eWxlKSkKKyAgICAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyUXVhcnR6SGVscGVy
OjpzdHJva2VQYXRoKGNvbnRleHQsIHJlbmRlclBhdGgpOworfQorCit2b2lkIEtSZW5kZXJpbmdQ
YWludFNlcnZlclBhdHRlcm5RdWFydHo6OnRlYXJkb3duKEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0
KiByZW5kZXJpbmdDb250ZXh0LCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QsIEtDUGFpbnRUYXJnZXRUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHRRdWFydHogKnF1YXJ0ekNvbnRleHQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nRGV2
aWNlQ29udGV4dFF1YXJ0eiAqPihyZW5kZXJpbmdDb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IHF1YXJ0ekNvbnRleHQtPmNnQ29udGV4dCgpOworICAgIENHUGF0dGVyblJlbGVh
c2UobV9wYXR0ZXJuKTsKKyAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKG1fcGF0dGVyblNwYWNlKTsK
ICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK30KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0LmgJ
KC93ZWJraXQvdHJ1bmsvV2ViQ29yZSkJKHJldmlzaW9uIDI3NykKKysrIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9RdWFydHpTdXBwb3J0LmgJKC93ZWJraXQvbG9jYWwvV2ViQ29yZSkJKGxvY2FsKQpA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Uga2h0bWwgewogCiAjaWZuZGVmIE5ERUJVRwogdm9p
ZCBkZWJ1Z0R1bXBDR0ltYWdlVG9GaWxlKE5TU3RyaW5nICpmaWxlbmFtZSwgQ0dJbWFnZVJlZiBp
bWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLXZvaWQgZGVidWdEdW1wQ0dJbWFnZVRvRmls
ZShOU1N0cmluZyAqZmlsZW5hbWUsIENHSW1hZ2VSZWYgaW1hZ2UsIGludCB3aWR0aCwgaW50IGhl
aWdodCk7Cit2b2lkIGRlYnVnRHVtcENHTGF5ZXJUb0ZpbGUoTlNTdHJpbmcgKmZpbGVuYW1lLCBD
R0xheWVyUmVmIGxheWVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogdm9pZCBkZWJ1Z0R1bXBD
SUltYWdlVG9GaWxlKE5TU3RyaW5nICpmaWxlbmFtZSwgQ0lJbWFnZSAqY2lJbWFnZSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICNlbmRpZgogCkBAIC00NSw3ICs0NSw3IEBAIENGU3RyaW5nUmVm
IENGU3RyaW5nRnJvbUNHUGF0aChDR1BhdGhSZWYKIENGU3RyaW5nUmVmIENGU3RyaW5nRnJvbUNH
QWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHQpOwogQ0dBZmZpbmVUcmFuc2Zvcm0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdCBzb3VyY2UsIENHUmVj
dCBkZXN0KTsKIAotdm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KENHQ29udGV4dFJlZiBj
b250ZXh0LCBraHRtbDo6UmVuZGVyU3R5bGUgKnN0eWxlLCBjb25zdCBSZW5kZXJQYXRoICpyZW5k
ZXJQYXRoKTsKK3ZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChDR0NvbnRleHRSZWYgY29u
dGV4dCwga2h0bWw6OlJlbmRlclN0eWxlICpzdHlsZSwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVj
dCogcmVuZGVyT2JqZWN0KTsKIAogc3RhdGljIGlubGluZSBDR0xpbmVDYXAgQ0dMaW5lQ2FwRnJv
bUtDKCBLQ0NhcFN0eWxlIGNhcCkgewogICAgIGlmIChjYXAgPT0gQ0FQX0JVVFQpCi0tLSBrY2Fu
dmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQkoL3dlYmtpdC90cnVuay9XZWJDb3Jl
KQkocmV2aXNpb24gMjc3KQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQu
bW0JKC93ZWJraXQvbG9jYWwvV2ViQ29yZSkJKGxvY2FsKQpAQCAtODksOSArODksOSBAQCBDR0Fm
ZmluZVRyYW5zZm9ybSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNCiAgICAgcmV0dXJuIHRyYW5zZm9y
bTsKIH0KIAotdm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KENHQ29udGV4dFJlZiBjb250
ZXh0LCBraHRtbDo6UmVuZGVyU3R5bGUgKnJlbmRlclN0eWxlLCBjb25zdCBSZW5kZXJQYXRoICpy
ZW5kZXJQYXRoKQordm9pZCBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KENHQ29udGV4dFJlZiBj
b250ZXh0LCBraHRtbDo6UmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlLCBjb25zdCBraHRtbDo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiB7Ci0gICAgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIg
c3Ryb2tlUGFpbnRlciA9IEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6c3Ryb2tlUGFpbnRlcihy
ZW5kZXJTdHlsZSwgcmVuZGVyUGF0aCk7CisgICAgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIgc3Ry
b2tlUGFpbnRlciA9IEtTVkc6OktTVkdQYWludGVyRmFjdG9yeTo6c3Ryb2tlUGFpbnRlcihyZW5k
ZXJTdHlsZSwgcmVuZGVyT2JqZWN0KTsKIAogICAgIC8qIFNob3VsZG4ndCBhbGwgdGhlc2UgYmUg
aW4gdGhlIHN0cm9rZSBwYWludGVyPyAqLwogICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250
ZXh0LCBzdHJva2VQYWludGVyLnN0cm9rZVdpZHRoKCkpOwotLS0ga3N2ZzIvbWlzYy9LQ2FudmFz
UmVuZGVyaW5nU3R5bGUuY3BwCSgvd2Via2l0L3RydW5rL1dlYkNvcmUpCShyZXZpc2lvbiAyNzcp
CisrKyBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKC93ZWJraXQvbG9jYWwv
V2ViQ29yZSkJKGxvY2FsKQpAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgPHEzcGFpbnRkZXZp
Y2VtZXRyaWNzLmg+CiAjaW5jbHVkZSA8cXBhaW50ZGV2aWNlLmg+CiAKKyNpbmNsdWRlIDxyZW5k
ZXJfb2JqZWN0Lmg+CisKICNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXMuaD4KICNpbmNsdWRlIDxr
Y2FudmFzL0tDYW52YXNQYXRoLmg+CiAjaW5jbHVkZSA8a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmlu
Z0RldmljZS5oPgpAQCAtNTUsNyArNTcsNyBAQCBib29sIEtTVkdQYWludGVyRmFjdG9yeTo6aXNG
aWxsZWQoY29uc3QgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtSZW5kZXJpbmdQYWludFNlcnZl
ciAqS1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRTZXJ2ZXIoY29uc3Qga2h0bWw6OlJlbmRl
clN0eWxlICpzdHlsZSwgY29uc3QgUmVuZGVyUGF0aCogaXRlbSkKK0tSZW5kZXJpbmdQYWludFNl
cnZlciAqS1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRTZXJ2ZXIoY29uc3Qga2h0bWw6OlJl
bmRlclN0eWxlKiBzdHlsZSwgY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogaXRlbSkKIHsKICAg
ICBpZiAoIWlzRmlsbGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03MSw4ICs3Myw4
IEBAIEtSZW5kZXJpbmdQYWludFNlcnZlciAqS1NWR1BhaW50ZXJGYWN0b3IKICAgICB9IGVsc2Ug
aWYgKGZpbGwtPnBhaW50VHlwZSgpID09IFNWR19QQUlOVFRZUEVfVVJJKSB7CiAgICAgICAgIEtE
T006OkRPTVN0cmluZyBpZChmaWxsLT51cmkoKSk7CiAgICAgICAgIGZpbGxQYWludFNlcnZlciA9
IGdldFBhaW50U2VydmVyQnlJZChpdGVtLT5kb2N1bWVudCgpLCBpZC5xc3RyaW5nKCkubWlkKDEp
KTsKLSAgICAgICAgaWYgKGl0ZW0gJiYgZmlsbFBhaW50U2VydmVyKQotICAgICAgICAgICAgZmls
bFBhaW50U2VydmVyLT5hZGRDbGllbnQoaXRlbSk7CisgICAgICAgIGlmIChpdGVtICYmIGZpbGxQ
YWludFNlcnZlciAmJiBpdGVtLT5pc1JlbmRlclBhdGgoKSkKKyAgICAgICAgICAgIGZpbGxQYWlu
dFNlcnZlci0+YWRkQ2xpZW50KHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlclBhdGgqPihpdGVtKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmlsbFBhaW50U2VydmVyID0gUVBhaW50ZXI6OnJlbmRl
cmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihLQ1BhaW50U2VydmVyVHlwZShQU19TT0xJ
RCkpOwogICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCAqZmlsbFBhaW50U2VydmVy
U29saWQgPSBzdGF0aWNfY2FzdDxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXJTb2xpZCAqPihmaWxsUGFp
bnRTZXJ2ZXIpOwpAQCAtOTQsNyArOTYsNyBAQCBib29sIEtTVkdQYWludGVyRmFjdG9yeTo6aXNT
dHJva2VkKGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtSZW5kZXJpbmdQYWludFNlcnZl
ciAqS1NWR1BhaW50ZXJGYWN0b3J5OjpzdHJva2VQYWludFNlcnZlcihjb25zdCBraHRtbDo6UmVu
ZGVyU3R5bGUgKnN0eWxlLCBjb25zdCBSZW5kZXJQYXRoKiBpdGVtKQorS1JlbmRlcmluZ1BhaW50
U2VydmVyICpLU1ZHUGFpbnRlckZhY3Rvcnk6OnN0cm9rZVBhaW50U2VydmVyKGNvbnN0IGtodG1s
OjpSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIGl0ZW0pCiB7
CiAgICAgaWYgKCFpc1N0cm9rZWQoc3R5bGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNSw4
ICsxMDcsOCBAQCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKktTVkdQYWludGVyRmFjdG9yCiAgICAg
aWYgKHN0cm9rZSAmJiBzdHJva2UtPnBhaW50VHlwZSgpID09IFNWR19QQUlOVFRZUEVfVVJJKSB7
CiAgICAgICAgIEtET006OkRPTVN0cmluZyBpZChzdHJva2UtPnVyaSgpKTsKICAgICAgICAgc3Ry
b2tlUGFpbnRTZXJ2ZXIgPSBnZXRQYWludFNlcnZlckJ5SWQoaXRlbS0+ZG9jdW1lbnQoKSwgaWQu
cXN0cmluZygpLm1pZCgxKSk7Ci0gICAgICAgIGlmKGl0ZW0gJiYgc3Ryb2tlUGFpbnRTZXJ2ZXIp
Ci0gICAgICAgICAgICBzdHJva2VQYWludFNlcnZlci0+YWRkQ2xpZW50KGl0ZW0pOworICAgICAg
ICBpZihpdGVtICYmIHN0cm9rZVBhaW50U2VydmVyICYmIGl0ZW0tPmlzUmVuZGVyUGF0aCgpKQor
ICAgICAgICAgICAgc3Ryb2tlUGFpbnRTZXJ2ZXItPmFkZENsaWVudChzdGF0aWNfY2FzdDxjb25z
dCBSZW5kZXJQYXRoKj4oaXRlbSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cm9rZVBhaW50
U2VydmVyID0gUVBhaW50ZXI6OnJlbmRlcmluZ0RldmljZSgpLT5jcmVhdGVQYWludFNlcnZlcihL
Q1BhaW50U2VydmVyVHlwZShQU19TT0xJRCkpOwogICAgICAgICBLUmVuZGVyaW5nUGFpbnRTZXJ2
ZXJTb2xpZCAqc3Ryb2tlUGFpbnRTZXJ2ZXJTb2xpZCA9IHN0YXRpY19jYXN0PEtSZW5kZXJpbmdQ
YWludFNlcnZlclNvbGlkICo+KHN0cm9rZVBhaW50U2VydmVyKTsKQEAgLTExOSw3ICsxMjEsNyBA
QCBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIgKktTVkdQYWludGVyRmFjdG9yCiAgICAgcmV0dXJuIHN0
cm9rZVBhaW50U2VydmVyOwogfQogCi1kb3VibGUgS1NWR1BhaW50ZXJGYWN0b3J5Ojpjc3NQcmlt
aXRpdmVUb0xlbmd0aChjb25zdCBSZW5kZXJQYXRoICppdGVtLCBLRE9NOjpDU1NWYWx1ZUltcGwg
KnZhbHVlLCBkb3VibGUgZGVmYXVsdFZhbHVlKQorZG91YmxlIEtTVkdQYWludGVyRmFjdG9yeTo6
Y3NzUHJpbWl0aXZlVG9MZW5ndGgoY29uc3Qga2h0bWw6OlJlbmRlck9iamVjdCogaXRlbSwgS0RP
TTo6Q1NTVmFsdWVJbXBsICp2YWx1ZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSkKIHsKICAgICBLRE9N
OjpDU1NQcmltaXRpdmVWYWx1ZUltcGwgKnByaW1pdGl2ZSA9IHN0YXRpY19jYXN0PEtET006OkNT
U1ByaW1pdGl2ZVZhbHVlSW1wbCAqPih2YWx1ZSk7CiAKQEAgLTE0Niw3ICsxNDgsNyBAQCBkb3Vi
bGUgS1NWR1BhaW50ZXJGYWN0b3J5Ojpjc3NQcmltaXRpdmVUCiAgICAgcmV0dXJuIHByaW1pdGl2
ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGNvbnN0X2Nhc3Q8a2h0bWw6OlJlbmRlclN0eWxlICo+KGl0
ZW0tPnN0eWxlKCkpLCBwYWludERldmljZU1ldHJpY3MpOwogfQogCi1LUmVuZGVyaW5nU3Ryb2tl
UGFpbnRlciBLU1ZHUGFpbnRlckZhY3Rvcnk6OnN0cm9rZVBhaW50ZXIoY29uc3Qga2h0bWw6OlJl
bmRlclN0eWxlICpzdHlsZSwgY29uc3QgUmVuZGVyUGF0aCAqaXRlbSkKK0tSZW5kZXJpbmdTdHJv
a2VQYWludGVyIEtTVkdQYWludGVyRmFjdG9yeTo6c3Ryb2tlUGFpbnRlcihjb25zdCBraHRtbDo6
UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiBpdGVtKQogewog
ICAgIEtSZW5kZXJpbmdTdHJva2VQYWludGVyIHN0cm9rZVBhaW50ZXI7CiAKQEAgLTE4MSw3ICsx
ODMsNyBAQCBLUmVuZGVyaW5nU3Ryb2tlUGFpbnRlciBLU1ZHUGFpbnRlckZhY3RvCiAgICAgcmV0
dXJuIHN0cm9rZVBhaW50ZXI7CiB9CiAKLUtSZW5kZXJpbmdGaWxsUGFpbnRlciBLU1ZHUGFpbnRl
ckZhY3Rvcnk6OmZpbGxQYWludGVyKGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUsIGNv
bnN0IFJlbmRlclBhdGggKml0ZW0pCitLUmVuZGVyaW5nRmlsbFBhaW50ZXIgS1NWR1BhaW50ZXJG
YWN0b3J5OjpmaWxsUGFpbnRlcihjb25zdCBraHRtbDo6UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBraHRtbDo6UmVuZGVyT2JqZWN0KiBpdGVtKQogewogICAgIEtSZW5kZXJpbmdGaWxsUGFpbnRl
ciBmaWxsUGFpbnRlcjsKICAgICAKLS0tIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxl
LmgJKC93ZWJraXQvdHJ1bmsvV2ViQ29yZSkJKHJldmlzaW9uIDI3NykKKysrIGtzdmcyL21pc2Mv
S0NhbnZhc1JlbmRlcmluZ1N0eWxlLmgJKC93ZWJraXQvbG9jYWwvV2ViQ29yZSkJKGxvY2FsKQpA
QCAtNTIsNiArNTIsNyBAQCB0eXBlZGVmIFEzVmFsdWVMaXN0PGZsb2F0PiBLQ0Rhc2hBcnJheTsK
IAogbmFtZXNwYWNlIGtodG1sIHsKICAgICBjbGFzcyBSZW5kZXJTdHlsZTsKKyAgICBjbGFzcyBS
ZW5kZXJPYmplY3Q7CiB9CiAKIGNsYXNzIEtSZW5kZXJpbmdGaWxsUGFpbnRlcjsKQEAgLTY0LDE2
ICs2NSwxNiBAQCBuYW1lc3BhY2UgS1NWRwogICAgIGNsYXNzIEtTVkdQYWludGVyRmFjdG9yeQog
ICAgIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBLUmVuZGVyaW5nRmlsbFBhaW50ZXIg
ZmlsbFBhaW50ZXIoY29uc3Qga2h0bWw6OlJlbmRlclN0eWxlICpzdHlsZSwgY29uc3QgUmVuZGVy
UGF0aCAqaXRlbSk7Ci0gICAgICAgIHN0YXRpYyBLUmVuZGVyaW5nU3Ryb2tlUGFpbnRlciBzdHJv
a2VQYWludGVyKGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUsIGNvbnN0IFJlbmRlclBh
dGggKml0ZW0pOworICAgICAgICBzdGF0aWMgS1JlbmRlcmluZ0ZpbGxQYWludGVyIGZpbGxQYWlu
dGVyKGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IGtodG1sOjpSZW5kZXJP
YmplY3QqIGl0ZW0pOworICAgICAgICBzdGF0aWMgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIgc3Ry
b2tlUGFpbnRlcihjb25zdCBraHRtbDo6UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBraHRtbDo6
UmVuZGVyT2JqZWN0KiBpdGVtKTsKIAotICAgICAgICBzdGF0aWMgYm9vbCBpc1N0cm9rZWQoY29u
c3Qga2h0bWw6OlJlbmRlclN0eWxlICpzdHlsZSk7Ci0gICAgICAgIHN0YXRpYyBLUmVuZGVyaW5n
UGFpbnRTZXJ2ZXIgKnN0cm9rZVBhaW50U2VydmVyKGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSAq
c3R5bGUsIGNvbnN0IFJlbmRlclBhdGgqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNTdHJva2Vk
KGNvbnN0IGtodG1sOjpSZW5kZXJTdHlsZSogc3R5bGUpOworICAgICAgICBzdGF0aWMgS1JlbmRl
cmluZ1BhaW50U2VydmVyKiBzdHJva2VQYWludFNlcnZlcihjb25zdCBraHRtbDo6UmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiBpdGVtKTsKIAotICAgICAgICBz
dGF0aWMgYm9vbCBpc0ZpbGxlZChjb25zdCBraHRtbDo6UmVuZGVyU3R5bGUgKnN0eWxlKTsKLSAg
ICAgICAgc3RhdGljIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyKGNvbnN0
IGtodG1sOjpSZW5kZXJTdHlsZSAqc3R5bGUsIGNvbnN0IFJlbmRlclBhdGgqKTsKKyAgICAgICAg
c3RhdGljIGJvb2wgaXNGaWxsZWQoY29uc3Qga2h0bWw6OlJlbmRlclN0eWxlKiBzdHlsZSk7Cisg
ICAgICAgIHN0YXRpYyBLUmVuZGVyaW5nUGFpbnRTZXJ2ZXIqIGZpbGxQYWludFNlcnZlcihjb25z
dCBraHRtbDo6UmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBraHRtbDo6UmVuZGVyT2JqZWN0KiBp
dGVtKTsKIAotICAgICAgICBzdGF0aWMgZG91YmxlIGNzc1ByaW1pdGl2ZVRvTGVuZ3RoKGNvbnN0
IFJlbmRlclBhdGggKml0ZW0sIEtET006OkNTU1ZhbHVlSW1wbCAqdmFsdWUsIGRvdWJsZSBkZWZh
dWx0VmFsdWUgPSAwLjApOworICAgICAgICBzdGF0aWMgZG91YmxlIGNzc1ByaW1pdGl2ZVRvTGVu
Z3RoKGNvbnN0IGtodG1sOjpSZW5kZXJPYmplY3QqIGl0ZW0sIEtET006OkNTU1ZhbHVlSW1wbCog
dmFsdWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUgPSAwLjApOwogICAgIH07CiB9OwogCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdms6bWVyZ2UKICsyNjhmNDVjYy1jZDA5
LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM6L3RydW5rL1dlYkNvcmU6MTIyNzYKCg==
</data>
<flag name="review"
          id="1344"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>