<?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>182026</bug_id>
          
          <creation_ts>2018-01-23 17:06:43 -0800</creation_ts>
          <short_desc>Remove pre-Sierra-OS-specific code in WebCore</short_desc>
          <delta_ts>2018-01-24 13:44:29 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392357</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-23 17:06:43 -0800</bug_when>
    <thetext>Remove pre-Sierra-OS-specific code in WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392364</commentid>
    <comment_count>1</comment_count>
      <attachid>332102</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-23 17:10:30 -0800</bug_when>
    <thetext>Created attachment 332102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392384</commentid>
    <comment_count>2</comment_count>
      <attachid>332108</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-23 17:44:21 -0800</bug_when>
    <thetext>Created attachment 332108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392636</commentid>
    <comment_count>3</comment_count>
      <attachid>332108</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-01-24 10:59:55 -0800</bug_when>
    <thetext>Comment on attachment 332108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=332108&amp;action=review

&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:-175
&gt; -#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101200) || PLATFORM(IOS)

I think this needs to become PLATFORM(COCOA)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392687</commentid>
    <comment_count>4</comment_count>
      <attachid>332108</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-24 12:54:17 -0800</bug_when>
    <thetext>Comment on attachment 332108
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=332108&amp;action=review

&gt;&gt; Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:-175
&gt;&gt; -#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101200) || PLATFORM(IOS)
&gt; 
&gt; I think this needs to become PLATFORM(COCOA)?

This is inside a #if defined(__OBJC__) so I don&apos;t think that&apos;s necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392690</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-01-24 12:55:49 -0800</bug_when>
    <thetext>Oh! I just assumed that was why windows was broken, but didn’t look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392695</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-24 12:59:07 -0800</bug_when>
    <thetext>trac.webkit.org/r227552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392698</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-24 13:01:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/36836036&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392719</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-01-24 13:44:29 -0800</bug_when>
    <thetext>trac.webkit.org/r227558</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332102</attachid>
            <date>2018-01-23 17:10:30 -0800</date>
            <delta_ts>2018-01-23 17:44:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182026-20180123171029.patch</filename>
            <type>text/plain</type>
            <size>44561</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE4LTAxLTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHBy
ZS1TaWVycmEtT1Mtc3BlY2lmaWMgY29kZSBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvVXNlckFnZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6c3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmlu
Zyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYzo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Yml0bWFwUE5H
RmlsZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKGxheWVy
Q29udGVudHNGb3JtYXQpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6OnVwZGF0ZUNv
bnRlbnRzRm9ybWF0KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNraW5nU3Rv
cmVCeXRlc1BlclBpeGVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENTU0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXRp
ZXNGb3JGb250RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2xvc2VzdEZvbnQp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWlseSk6CisgICAg
ICAgIChXZWJDb3JlOjpsb29rdXBGYWxsYmFja0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dFdlaWdodEZyb21Db3JlVGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6dmFyaWFudENh
cHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
YWR2YW5jZUZvckNvbG9yQml0bWFwRm9udCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
YW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OmN0Rm9udCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjps
aW5lYXJSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnNldFRpbWViYXNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZU1hYzo6ZGlkQ3JlYXRlU2Nyb2xsZXJJbXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVNYWM6OmlzTGF5b3V0RGlyZWN0aW9uUlRMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6dXNlclByZWZlcnNSZWR1
Y2VkTW90aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlQmxvY2tEaXJl
Y3Rpb25TY3JvbGxiYXJPbkxlZnQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rp
b24gY29uc3QpOgorCiAyMDE4LTAxLTIzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlc2lnbiBOb3dQbGF5aW5nIHN0YXR1cyB3aGVuIG5vIG1lZGlh
IGVsZW1lbnQgaXMgZWxpZ2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI3
NDYzKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5IEBACisyMDE4LTAxLTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHByZS1TaWVycmEtT1Mtc3BlY2lmaWMgY29k
ZSBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODIwMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnND
b3JlU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAg
ICAgICogcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9t
YWMvTlNNZW51U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JTUEkuaDoKKyAgICAgICAgKiBwYWwvc3BpL21hYy9QSVBTUEkuaDoKKwogMjAx
OC0wMS0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV1bR1RLXSBTbGVlcCBpbmhpYml0b3JzIGRvIG5vdCB3b3JrIHVuZGVyIEZsYXRw
YWsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
CShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw2IEBAIHR5cGVkZWYgdm9p
ZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VDYWxsQmEKIEBlbmQKICNlbmRpZgogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8
IFBMQVRGT1JNKElPUykKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llICgpCiBAcHJvcGVydHkgKG51
bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKl9zdG9yYWdlUGFydGl0aW9uOwogQGVu
ZApAQCAtMTg2LDcgKzE4NSw2IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VD
YWxsQmEKIEBwcm9wZXJ0eSAocmVhZHdyaXRlLCBjb3B5KSBOU1N0cmluZyAqX3BhdGhUb0Rvd25s
b2FkVGFza0ZpbGU7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpfc3RvcmFnZVBhcnRpdGlv
bklkZW50aWZpZXI7CiBAZW5kCi0jZW5kaWYKIAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18p
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDE0ICsyNDksMTIgQEAg
Ym9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdAogYm9vbCBDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhDR0NvbnRleHRSZWYpOwogQ0dQYXR0ZXJuUmVm
IENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0s
IENHUGF0dGVyblRpbGluZyk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0Nv
bG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShDR0NvbG9yU3BhY2VSZWYpOwogCiB0eXBlZGVmIHN0
cnVjdCBDR1BERkFubm90YXRpb24gKkNHUERGQW5ub3RhdGlvblJlZjsKIHR5cGVkZWYgYm9vbCAo
XkNHUERGQW5ub3RhdGlvbkRyYXdDYWxsYmFja1R5cGUpKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1BERlBhZ2VSZWYgcGFnZSwgQ0dQREZBbm5vdGF0aW9uUmVmIGFubm90YXRpb24pOwogdm9pZCBD
R0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5vdGF0aW9ucyhDR0NvbnRleHRSZWYsIENHUERGUGFn
ZVJlZiwgQ0dQREZBbm5vdGF0aW9uRHJhd0NhbGxiYWNrVHlwZSk7CiB2b2lkIENHQ29udGV4dERy
YXdQYXRoRGlyZWN0KENHQ29udGV4dFJlZiwgQ0dQYXRoRHJhd2luZ01vZGUsIENHUGF0aFJlZiwg
Y29uc3QgQ0dSZWN0KiBib3VuZGluZ0JveCk7Ci0jZW5kaWYKIAogI2lmIFVTRShJT1NVUkZBQ0Up
CiBDR0NvbnRleHRSZWYgQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKElPU3VyZmFjZVJlZiwgc2l6
ZV90LCBzaXplX3QsIHNpemVfdCwgc2l6ZV90LCBDR0NvbG9yU3BhY2VSZWYsIENHQml0bWFwSW5m
byk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3Jz
Q29yZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCwxNyArMTA0LDEwIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEREVVJMU2No
ZW1lOwogCiAjZGVmaW5lIEREUmVzdWx0UHJvcGVydHlQYXNzaXZlRGlzcGxheSAgICgxIDw8IDAp
CiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEyMDAKLXR5cGVkZWYgc3RydWN0IF9fRERRdWVyeU9mZnNldCB7Ci0gICAgQ0ZJbmRleCBx
dWVyeUluZGV4OwotICAgIENGSW5kZXggb2Zmc2V0OwotfSBERFF1ZXJ5T2Zmc2V0OwotI2Vsc2UK
IHR5cGVkZWYgc3RydWN0IF9fRERRdWVyeU9mZnNldCB7CiAgICAgQ0ZJbmRleCBxdWVyeUluZGV4
OjMyOwogICAgIENGSW5kZXggb2Zmc2V0OjMyOwogfSBERFF1ZXJ5T2Zmc2V0OwotI2VuZGlmCiAK
IHR5cGVkZWYgc3RydWN0IF9fRERRdWVyeVJhbmdlIHsKICAgICBERFF1ZXJ5T2Zmc2V0IHN0YXJ0
OwpAQCAtMTIzLDExICsxMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0REUXVlcnlSYW5nZSB7CiAK
ICNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAotc3RhdGljX2Fzc2Vy
dChzaXplb2YoRERRdWVyeU9mZnNldCkgPT0gc2l6ZW9mKENGSW5kZXgpICogMiwgIkREUXVlcnlP
ZmZzZXQgaXMgbm8gbG9uZ2VyIHRoZSBzaXplIG9mIHR3byBDRkluZGV4ZXMuIFVwZGF0ZSB0aGUg
ZGVmaW5pdGlvbiBvZiBERFF1ZXJ5T2Zmc2V0IGluIHRoaXMgZmlsZSB0byBtYXRjaCB0aGUgbmV3
IHNpemUuIik7Ci0jZWxzZQogc3RhdGljX2Fzc2VydChzaXplb2YoRERRdWVyeU9mZnNldCkgPT0g
OCwgIkREUXVlcnlPZmZzZXQgaXMgbm8gbG9uZ2VyIDggYnl0ZXMuIFVwZGF0ZSB0aGUgZGVmaW5p
dGlvbiBvZiBERFF1ZXJ5T2Zmc2V0IGluIHRoaXMgZmlsZSB0byBtYXRjaCB0aGUgbmV3IHNpemUu
Iik7Ci0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgX19ERFNjYW5RdWVyeSAqRERTY2FuUXVlcnlS
ZWY7CiB0eXBlZGVmIHN0cnVjdCBfX0REU2Nhbm5lciAqRERTY2FubmVyUmVmOwpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2
aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsOCBAQCB0eXBlZGVmIHN0cnVj
dCBfQ0FSZW5kZXJDb250ZXh0IENBUmVuZGVyCiAtIChtYWNoX3BvcnRfdCljcmVhdGVGZW5jZVBv
cnQ7CiAtICh2b2lkKXNldEZlbmNlUG9ydDoobWFjaF9wb3J0X3QpcG9ydDsKIC0gKHZvaWQpc2V0
RmVuY2VQb3J0OihtYWNoX3BvcnRfdClwb3J0IGNvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkp
YmxvY2s7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAotQHByb3BlcnR5IHVpbnQzMl90IGNvbW1pdFByaW9yaXR5OwotI2VuZGlm
CiAjaWYgUExBVEZPUk0oTUFDKQorQHByb3BlcnR5IHVpbnQzMl90IGNvbW1pdFByaW9yaXR5Owog
QHByb3BlcnR5IEJPT0wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDsKICNlbmRpZgogQHByb3Bl
cnR5IChyZWFkb25seSkgdWludDMyX3QgY29udGV4dElkOwpAQCAtMTg3LDcgKzE4NSw3IEBAIHNp
emVfdCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGFTaXplKEMKIAogYm9vbCBDQVJlbmRlclNl
cnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCwgdWludDMyX3QgY2xpZW50
X2lkLCB1aW50NjRfdCBsYXllcl9pZCwgQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYsIGludDMyX3Qg
b3gsIGludDMyX3Qgb3ksIGNvbnN0IENBVHJhbnNmb3JtM0QqKTsKICNlbmRpZgotI2VuZGlmCisj
ZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogdHlwZWRlZiBzdHJ1Y3QgX0NBTWFj
aFBvcnQgKkNBTWFjaFBvcnRSZWY7CiBDQU1hY2hQb3J0UmVmIENBTWFjaFBvcnRDcmVhdGUobWFj
aF9wb3J0X3QpOwpAQCAtMjQzLDE1ICsyNDEsNiBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBr
Q0FDb250ZXh0UG9ydE51CiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FDb250ZW50c0Zvcm1h
dFJHQkExMFhSOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZPUk0oTUFDKQogZXh0ZXJuIE5T
U3RyaW5nICogY29uc3Qga0NBQ29udGVudHNGb3JtYXRSR0JBOENvbG9yUkdCQThMaW5lYXJHbHlw
aE1hc2s7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01BWF9BTExPV0VEIDwgMTAxMjAwCi1AcHJvdG9jb2wgQ0FMYXllckRlbGVnYXRlIDxOU09iamVj
dD4KLUBlbmQKLQotQHByb3RvY29sIENBQW5pbWF0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgotQGVu
ZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgJKHJldmlzaW9uIDIy
NzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEku
aAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5E
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TKQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWQXNzZXRDYWNoZS5oPgotI2Vsc2UKLUBpbnRlcmZhY2UgQVZBc3NldENhY2hlIDogTlNPYmpl
Y3QKLUBlbmQKLSNlbmRpZgogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBpbnRlcmZhY2UgQVZB
c3NldENhY2hlICgpCiArIChBVkFzc2V0Q2FjaGUgKilhc3NldENhY2hlV2l0aFVSTDooTlNVUkwg
KilVUkw7CkBAIC0xNTUsNyArMTUwLDcgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIg
KCkgPEFWQ29udAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgKCFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKEFWU3RyZWFtRGF0YVBh
cnNlclByaXZhdGUpCiArIChOU1N0cmluZyAqKW91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklu
cHV0TUlNRUNvZGVjUGFyYW1ldGVyOihOU1N0cmluZyAqKWlucHV0TUlNRUNvZGVjUGFyYW1ldGVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TTWVudVNQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU01lbnVTUEkuaAkocmV2
aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TTWVudVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMiArNTcsNyBAQCBAaW50ZXJmYWNlIE5TTWVudSAo
KQogCiBAY2xhc3MgUUxQcmV2aWV3TWVudUl0ZW07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPCAxMDEyMDAKLUBpbnRlcmZhY2UgTlNNZW51SXRlbSAoKSA8TlNVc2VySW50
ZXJmYWNlSXRlbUlkZW50aWZpY2F0aW9uPgotI2Vsc2UgCiBAaW50ZXJmYWNlIE5TTWVudUl0ZW0g
KCkKLSNlbmRpZgotCiArIChRTFByZXZpZXdNZW51SXRlbSAqKXN0YW5kYXJkUXVpY2tMb29rTWVu
dUl0ZW07CiArIChOU01lbnVJdGVtICopc3RhbmRhcmRTaGFyZU1lbnVJdGVtRm9ySXRlbXM6KE5T
QXJyYXkgKilpdGVtczsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21h
Yy9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvclNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvclNQ
SS5oCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
OSArMzMsNyBAQCBAaW50ZXJmYWNlIF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvCiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEluaXRpYWxPcmlnaW46KE5TUG9pbnQpb3JpZ2luIHZlbG9j
aXR5OihOU1BvaW50KXZlbG9jaXR5IGRvY3VtZW50RnJhbWU6KE5TUmVjdClkb2NGcmFtZSBjb25z
dHJhaW5lZENsaXBwaW5nT3JpZ2luOihOU1BvaW50KWNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW4g
Y2xpcHBpbmdTaXplOihOU1NpemUpY2xpcFZpZXdTaXplIHRvbGVyYW5jZTooTlNTaXplKXRvbGVy
YW5jZTsKIC0gKE5TUG9pbnQpcG9zaXRpb25BZnRlckR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClk
dXJhdGlvbjsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAog
LSAodm9pZCljYWxjdWxhdGVUb1JlYWNoRGVzdGluYXRpb247Ci0jZW5kaWYKIAogQHByb3BlcnR5
IE5TUG9pbnQgZGVzdGluYXRpb25PcmlnaW47CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBkdXJhdGlvblVudGlsU3RvcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9QSVBTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvUElQU1BJLmgJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL21hYy9QSVBTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFBJUC9QSVBW
aWV3Q29udHJvbGxlclByaXZhdGUuaD4KQEAgLTU5LDQgKzU5LDQgQEAgTlNfQVNTVU1FX05PTk5V
TExfRU5ECiAKICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1tCShyZXZpc2lvbiAyMjc0
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTMgKzM0LDcgQEAgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JV
c2VyQWdlbgogICAgIC8vIHdlIHdlcmUgY29uY2VybmVkIGFib3V0IG9sZCBESFRNTCBsaWJyYXJp
ZXMgaW50ZXJwcmV0aW5nICI0LiIgYXMgTmV0c2NhcGUgNC4gVGhhdCdzIG5vIGxvbmdlciBhIGNv
bmNlcm4gZm9yIHVzCiAgICAgLy8gYnV0IHdlJ3JlIHN0aWNraW5nIHdpdGggdGhlIHVuZGVyc2Nv
cmVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvcm1hdCB1c2VkIGJ5IG9sZGVyIHZlcnNp
b25zIG9mIFNhZmFyaS4KICNpZiBQTEFURk9STShNQUMpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMF8xM180
Iik7Ci0jZWxpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIjEwXzEyXzYiKTsKLSNlbHNlCi0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiMTBfMTFfNiIpOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIjExXzMiKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw5ICs3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXQK
IHsKICAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmNhbGN1bGF0b3IgPSBlbnN1
cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOwogICAgIGNhbGN1bGF0b3IuZGVzdGluYXRp
b25PcmlnaW4gPSBOU01ha2VQb2ludChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwg
cmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpLmhlaWdodCgpKTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAogICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVh
Y2hEZXN0aW5hdGlvbl07Ci0jZW5kaWYKIH0KIAogU2Vjb25kcyBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0JKHJldmlzaW9uIDIyNzQ1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBM
QVRGT1JNKE1BQykKIHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5
cGUoKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDAKICAg
ICByZXR1cm4gTlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HOwotI2Vsc2UKLSAgICByZXR1cm4gTlNQ
TkdGaWxlVHlwZTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5jcHAJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQKIHsKIH0KIAotI2lm
IFVTRShDRykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENHKSAmJiBQTEFURk9S
TShXSU4pCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKENHRm9udFJlZiBjZ0Zv
bnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVl
LCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJp
YW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSkKICAgICA6IEZvbnRQbGF0
Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRp
b24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRlcmluZ01vZGUpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCShyZXZp
c2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIGJvb2wpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNs
b25lV2l0aFNpemUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGZsb2F0KTsKIAotI2lmIFVTRShD
RykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShXSU4p
CiAgICAgRm9udFBsYXRmb3JtRGF0YShDR0ZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24sIEZvbnRXaWR0
aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlKTsKICNlbmRpZgogCkBAIC0xMzcsNyArMTM3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNWYXJpYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNWYXJpYXRpb25zOyB9CiAKLSNpZiBVU0UoQ0cpICYmIChQTEFURk9STShXSU4pIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApKQor
I2lmIFVTRShDRykgJiYgUExBVEZPUk0oV0lOKQogICAgIENHRm9udFJlZiBjZ0ZvbnQoKSBjb25z
dCB7IHJldHVybiBtX2NnRm9udC5nZXQoKTsgfQogI2VuZGlmCiAKQEAgLTIyNiw3ICsyMjYsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRHRElPYmplY3Q8SEZPTlQ+PiBtX2ZvbnQ7CiAj
ZW5kaWYKIAotI2lmIFVTRShDRykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENH
KSAmJiBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9jZ0ZvbnQ7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTAgKzExMyw4IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOjpzZXRWaWQKIAogICAgICAgICBDQUNvbnRleHQgKm5l
d0NvbnRleHQgPSBbbV92aWRlb0xheWVyIGNvbnRleHRdOwogICAgICAgICBpZiAob2xkQ29udGV4
dCAmJiBuZXdDb250ZXh0ICYmIG9sZENvbnRleHQgIT0gbmV3Q29udGV4dCkgewotI2lmIFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKICAg
ICAgICAgICAgIG9sZENvbnRleHQuY29tbWl0UHJpb3JpdHkgPSAwOwogICAgICAgICAgICAgbmV3
Q29udGV4dC5jb21taXRQcmlvcml0eSA9IDE7Ci0jZW5kaWYKICAgICAgICAgICAgIG1hY2hfcG9y
dF90IGZlbmNlUG9ydCA9IFtvbGRDb250ZXh0IGNyZWF0ZUZlbmNlUG9ydF07CiAgICAgICAgICAg
ICBbbmV3Q29udGV4dCBzZXRGZW5jZVBvcnQ6ZmVuY2VQb3J0XTsKICAgICAgICAgICAgIG1hY2hf
cG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIGZlbmNlUG9ydCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMDksNyArMTAwOSw2IEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OnVwZGF0ZUN1c3RvbUEKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKSB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTIwMCkKIHN0YXRpYyBOU1N0cmluZyAqbGF5ZXJDb250ZW50c0Zvcm1hdChib29sIGFjY2VsZXJh
dGVzRHJhd2luZywgYm9vbCB3YW50c0RlZXBDb2xvciwgYm9vbCBzdXBwb3J0c1N1YnBpeGVsQW50
aWFsaWFzZWRGb250cykKIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDE5LDcgKzEwMTgsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKmxheWVyQ29udGVudHNGb3JtYXQoYm9vCiAgICAgVU5VU0VEX1BB
UkFNKHdhbnRzRGVlcENvbG9yKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBpZiAoc3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkRm9udHMgJiYgYWNjZWxlcmF0ZXNE
cmF3aW5nKQogICAgICAgICByZXR1cm4ga0NBQ29udGVudHNGb3JtYXRSR0JBOENvbG9yUkdCQThM
aW5lYXJHbHlwaE1hc2s7CiAjZWxzZQpAQCAtMTAyOSwxNiArMTAyOCwxMyBAQCBzdGF0aWMgTlNT
dHJpbmcgKmxheWVyQ29udGVudHNGb3JtYXQoYm9vCiAKICAgICByZXR1cm4gbmlsOwogfQotI2Vu
ZGlmCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnVwZGF0ZUNvbnRlbnRzRm9ybWF0KCkK
IHsKICAgICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlV2ViTGF5ZXIgfHwgbV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyKSB7CiAgICAgICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCiAgICAgICAgIGlm
IChOU1N0cmluZyAqZm9ybWF0U3RyaW5nID0gbGF5ZXJDb250ZW50c0Zvcm1hdChhY2NlbGVyYXRl
c0RyYXdpbmcoKSwgd2FudHNEZWVwQ29sb3JCYWNraW5nU3RvcmUoKSwgc3VwcG9ydHNTdWJwaXhl
bEFudGlhbGlhc2VkVGV4dCgpKSkKICAgICAgICAgICAgIFttX2xheWVyIHNldENvbnRlbnRzRm9y
bWF0OmZvcm1hdFN0cmluZ107Ci0jZW5kaWYKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogICAgIH0KIH0KQEAgLTEyMzQsNyArMTIzMCw3IEBAIHVuc2lnbmVkIFBsYXRmb3JtQ0FM
YXllckNvY29hOjpiYWNraW5nU3QKICAgICAgICAgcmV0dXJuIGlzT3BhcXVlKCkgPyA0IDogNTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWlzT3BhcXVlKCkg
JiYgc3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpKQogICAgICAgICByZXR1cm4gODsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjI3NDU5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw2IEBAIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JT
cGFjZVJlZigpCiAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlOwogfQogCi0jaWYgUExBVEZPUk0o
V0lOKSB8fCBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQogLy8gU2VlIEdyYXBoaWNzQ29udGV4dENvY29h
IGZvciB0aGUgcHJlLTEwLjEyIGltcGxlbWVudGF0aW9uLgogQ0dDb2xvclNwYWNlUmVmIGxpbmVh
clJHQkNvbG9yU3BhY2VSZWYoKQogewpAQCAtMTA4LDcgKzEwNyw2IEBAIENHQ29sb3JTcGFjZVJl
ZiBsaW5lYXJSR0JDb2xvclNwYWNlUmVmKCkKICAgICB9KTsKICAgICByZXR1cm4gbGluZWFyUkdC
Q29sb3JTcGFjZTsKIH0KLSNlbmRpZgogCiBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZVJlZigpCiB7CkBAIC0xMTYsNyArMTE0LDcgQEAgQ0dDb2xvclNwYWNlUmVmIGV4dGVu
ZGVkU1JHQkNvbG9yU3BhY2VSZQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewogICAgICAgICBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSA9IE5VTEw7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICAgICAgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhO
YW1lKGtDR0NvbG9yU3BhY2VFeHRlbmRlZFNSR0IpOwogI2VuZGlmCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5jcHAJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShH
cmFwaAogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxzZQogICAgIC8vIENHUERGIHBhZ2VzIGFy
ZSBpbmRleGVkIGZyb20gMS4KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCks
IDEpLCBudWxscHRyKTsKICNlbHNlCiAgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwg
MSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjI3NDU5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2RlZmluZSBTSE9V
TERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQogI2RlZmluZSBIQVNfQ09SRV9URVhUX1dJ
RFRIX0FUVFJJQlVURSAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkpCiAjZGVmaW5lIENBTl9ESVNBTExPV19VU0VSX0lO
U1RBTExFRF9GT05UUyAoKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTIwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkpCiAKQEAgLTgxMCwyOSArODA5LDYgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzU3lzdGVtRm9udChjb25zdCBBdAogICAgIHJldHVybiBmYW1pbHlbMF0g
PT0gJy4nOwogfQogCi0jaWYgU0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAKLXN0YXRp
YyBmbG9hdCBmb250V2VpZ2h0RnJvbUNvcmVUZXh0KENHRmxvYXQgd2VpZ2h0KQotewotICAgIGlm
ICh3ZWlnaHQgPCAtMC42KQotICAgICAgICByZXR1cm4gMTAwOwotICAgIGlmICh3ZWlnaHQgPCAt
MC4zNjUpCi0gICAgICAgIHJldHVybiAyMDA7Ci0gICAgaWYgKHdlaWdodCA8IC0wLjExNSkKLSAg
ICAgICAgcmV0dXJuIDMwMDsKLSAgICBpZiAod2VpZ2h0IDwgIDAuMTMwKQotICAgICAgICByZXR1
cm4gNDAwOwotICAgIGlmICh3ZWlnaHQgPCAgMC4yMzUpCi0gICAgICAgIHJldHVybiA1MDA7Ci0g
ICAgaWYgKHdlaWdodCA8ICAwLjM1MCkKLSAgICAgICAgcmV0dXJuIDYwMDsKLSAgICBpZiAod2Vp
Z2h0IDwgIDAuNTAwKQotICAgICAgICByZXR1cm4gNzAwOwotICAgIGlmICh3ZWlnaHQgPCAgMC43
MDApCi0gICAgICAgIHJldHVybiA4MDA7Ci0gICAgcmV0dXJuIDkwMDsKLX0KLSNlbmRpZgotCiBj
bGFzcyBGb250RGF0YWJhc2UgewogcHVibGljOgogI2lmICFDQU5fRElTQUxMT1dfVVNFUl9JTlNU
QUxMRURfRk9OVFMKQEAgLTEwNzcsNyArMTA1Myw2IEBAIHN0YXRpYyBWYXJpYXRpb25DYXBhYmls
aXRpZXMgdmFyaWF0aW9uQ2EKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgIVNIT1VMRF9V
U0VfQ09SRV9URVhUX0ZPTlRfTE9PS1VQIHx8IEhBU19DT1JFX1RFWFRfV0lEVEhfQVRUUklCVVRF
CiBzdGF0aWMgZmxvYXQgZ2V0Q1NTQXR0cmlidXRlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERl
c2NyaXB0b3IsIGNvbnN0IENGU3RyaW5nUmVmIGF0dHJpYnV0ZSwgZmxvYXQgZmFsbGJhY2spCiB7
CiAgICAgYXV0byBudW1iZXIgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDVEZv
bnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZShmb250RGVzY3JpcHRvciwgYXR0cmlidXRlKSkpOwpA
QCAtMTA4OCw3ICsxMDYzLDYgQEAgc3RhdGljIGZsb2F0IGdldENTU0F0dHJpYnV0ZShDVEZvbnRE
ZXNjcgogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAgICAgcmV0dXJuIGNz
c1ZhbHVlOwogfQotI2VuZGlmCiAKIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0
aWVzRm9yRm9udERlc2NyaXB0b3IoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvcikK
IHsKQEAgLTEwOTcsNyArMTA3MSw3IEBAIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJp
bGl0aWVzRm8KIAogICAgIFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYXBhYmlsaXRp
ZXMgPSB2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRv
cik7CiAKLSNpZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUCB8fCAhSEFTX0NPUkVf
VEVYVF9XSURUSF9BVFRSSUJVVEUKKyNpZiAhSEFTX0NPUkVfVEVYVF9XSURUSF9BVFRSSUJVVEUK
ICAgICBib29sIHdlaWdodE9yV2lkdGhDb21lRnJvbVRyYWl0cyA9ICF2YXJpYXRpb25DYXBhYmls
aXRpZXMud2VpZ2h0IHx8ICF2YXJpYXRpb25DYXBhYmlsaXRpZXMud2lkdGg7CiAjZWxzZQogICAg
IGJvb2wgd2VpZ2h0T3JXaWR0aENvbWVGcm9tVHJhaXRzID0gZmFsc2U7CkBAIC0xMTI0LDI5ICsx
MDk4LDEzIEBAIEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzRm8KICAgICAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uQ2FwYWJpbGl0
aWVzLnNsb3BlID0ge3sgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbEl0YWxpY1ZhbHVlKCkpLCBz
dGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsSXRhbGljVmFsdWUoKSkgfX07CiAgICAgICAgICAgICB9
Ci0KLSNpZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUAotICAgICAgICAgICAgaWYg
KCF2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byB3
ZWlnaHROdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUodHJhaXRzLmdldCgpLCBrQ1RGb250V2VpZ2h0VHJhaXQpKTsKLSAgICAgICAgICAgICAgICBp
ZiAod2VpZ2h0TnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIENHRmxvYXQgY3RXZWlnaHQ7
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUod2Vp
Z2h0TnVtYmVyLCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJmN0V2VpZ2h0KTsKLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byB3ZWlnaHRWYWx1ZSA9IGZvbnRXZWlnaHRGcm9tQ29yZVRleHQoY3RXZWlnaHQp
OwotICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sg
d2VpZ2h0VmFsdWUsIHdlaWdodFZhbHVlIH19OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICB2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG5vcm1hbFdlaWdodFZhbHVlKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9y
bWFsV2VpZ2h0VmFsdWUoKSkgfX07Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgfQog
ICAgIH0KIAotI2lmICFTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUAogICAgIGlmICgh
dmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndlaWdodCkgewogICAgICAgICBhdXRvIHZhbHVlID0gZ2V0
Q1NTQXR0cmlidXRlKGZvbnREZXNjcmlwdG9yLCBrQ1RGb250Q1NTV2VpZ2h0QXR0cmlidXRlLCBz
dGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsV2VpZ2h0VmFsdWUoKSkpOwogICAgICAgICB2YXJpYXRp
b25DYXBhYmlsaXRpZXMud2VpZ2h0ID0ge3sgdmFsdWUsIHZhbHVlIH19OwogICAgIH0KLSNlbmRp
ZgogCiAjaWYgSEFTX0NPUkVfVEVYVF9XSURUSF9BVFRSSUJVVEUKICAgICBpZiAoIXZhcmlhdGlv
bkNhcGFiaWxpdGllcy53aWR0aCkgewpAQCAtMTE2NCw3ICsxMTIyLDYgQEAgRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXNGbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNp
ZiAhU0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAKIHN0YXRpYyBjb25zdCBGb250RGF0
YWJhc2U6Okluc3RhbGxlZEZvbnQqIGZpbmRDbG9zZXN0Rm9udChjb25zdCBGb250RGF0YWJhc2U6
Okluc3RhbGxlZEZvbnRGYW1pbHkmIGZhbWlseUZvbnRzLCBGb250U2VsZWN0aW9uUmVxdWVzdCBm
b250U2VsZWN0aW9uUmVxdWVzdCkKIHsKICAgICBWZWN0b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllcz4gY2FwYWJpbGl0aWVzOwpAQCAtMTE3NCw3ICsxMTMxLDYgQEAgc3RhdGljIGNvbnN0IEZv
bnREYXRhYmFzZTo6SW5zdGFsbGVkRm9udAogICAgIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0gZm9u
dFNlbGVjdGlvbkFsZ29yaXRobShmb250U2VsZWN0aW9uUmVxdWVzdCwgY2FwYWJpbGl0aWVzLCBm
YW1pbHlGb250cy5jYXBhYmlsaXRpZXMpOwogICAgIHJldHVybiAmZmFtaWx5Rm9udHMuaW5zdGFs
bGVkRm9udHNbZm9udFNlbGVjdGlvbkFsZ29yaXRobS5pbmRleE9mQmVzdENhcGFiaWxpdGllcygp
XTsKIH0KLSNlbmRpZgogCiBWZWN0b3I8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4gRm9udENh
Y2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHlOYW1lLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBhbGxvd1VzZXJJbnN0YWxs
ZWRGb250cykKIHsKQEAgLTEyMDEsMTEgKzExNTcsNiBAQCBzdGF0aWMgRm9udExvb2t1cCBwbGF0
Zm9ybUZvbnRMb29rdXBXaXRoCiAgICAgaWYgKCFpc1N5c3RlbUZvbnQoZmFtaWx5KSAmJiB3aGl0
ZWxpc3Quc2l6ZSgpICYmICF3aGl0ZWxpc3QuY29udGFpbnMoZmFtaWx5KSkKICAgICAgICAgcmV0
dXJuIHsgbnVsbHB0ciB9OwogCi0jaWYgU0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAK
LSAgICBVTlVTRURfUEFSQU0oYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwotICAgIENURm9udFN5
bWJvbGljVHJhaXRzIHRyYWl0cyA9IChpc0ZvbnRXZWlnaHRCb2xkKHJlcXVlc3Qud2VpZ2h0KSA/
IGtDVEZvbnRUcmFpdEJvbGQgOiAwKSB8IChpc0l0YWxpYyhyZXF1ZXN0LnNsb3BlKSA/IGtDVEZv
bnRUcmFpdEl0YWxpYyA6IDApOwotICAgIHJldHVybiB7IGFkb3B0Q0YoQ1RGb250Q3JlYXRlRm9y
Q1NTKGZhbWlseS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBzdGF0aWNfY2FzdDxm
bG9hdD4ocmVxdWVzdC53ZWlnaHQpLCB0cmFpdHMsIHNpemUpKSB9OwotI2Vsc2UKICAgICBhdXRv
JiBmb250RGF0YWJhc2UgPSBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9PSBBbGxvd1VzZXJJbnN0
YWxsZWRGb250czo6WWVzID8gRm9udERhdGFiYXNlOjpzaW5nbGV0b25BbGxvd2luZ1VzZXJJbnN0
YWxsZWRGb250cygpIDogRm9udERhdGFiYXNlOjpzaW5nbGV0b25EaXNhbGxvd2luZ1VzZXJJbnN0
YWxsZWRGb250cygpOwogICAgIGNvbnN0IGF1dG8mIGZhbWlseUZvbnRzID0gZm9udERhdGFiYXNl
LmNvbGxlY3Rpb25Gb3JGYW1pbHkoZmFtaWx5LnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5Rm9u
dHMuaXNFbXB0eSgpKSB7CkBAIC0xMjQxLDcgKzExOTIsNiBAQCBzdGF0aWMgRm9udExvb2t1cCBw
bGF0Zm9ybUZvbnRMb29rdXBXaXRoCiAgICAgICAgIHJldHVybiB7IGFkb3B0Q0YoQ1RGb250Q3Jl
YXRlV2l0aEZvbnREZXNjcmlwdG9yKGluc3RhbGxlZEZvbnQtPmZvbnREZXNjcmlwdG9yLmdldCgp
LCBzaXplLCBudWxscHRyKSksIGZhbHNlIH07CiAKICAgICByZXR1cm4geyBudWxscHRyIH07Ci0j
ZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvbnRDYWNoZSgpCkBAIC0xMzY0LDcg
KzEzMTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gbG9va3VwRmFsbGJhCiAgICAg
QVNTRVJUKGxlbmd0aCA+IDApOwogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVT
dHJpbmc7Ci0jaWYgKFBMQVRGT1JNKElPUykgJiYgVEFSR0VUX09TX0lPUykgfHwgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCisjaWYg
KFBMQVRGT1JNKElPUykgJiYgVEFSR0VUX09TX0lPUykgfHwgUExBVEZPUk0oTUFDKQogICAgIGlm
ICghbG9jYWxlLmlzTnVsbCgpKQogICAgICAgICBsb2NhbGVTdHJpbmcgPSBsb2NhbGUuc3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICNlbHNlCkBAIC0xMzczLDcgKzEzMjMsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPENURm9udFJlZj4gbG9va3VwRmFsbGJhCiAKICAgICBDRkluZGV4IGNvdmVyZWRM
ZW5ndGggPSAwOwogICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IHJlc3VsdDsKLSNpZiAhVVNFX1BM
QVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUICYmICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
VEFSR0VUX09TX0lPUykpCisjaWYgIVVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCAm
JiAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSkKICAg
ICByZXN1bHQgPSBhZG9wdENGKENURm9udENyZWF0ZVBoeXNpY2FsRm9udEZvckNoYXJhY3RlcnNX
aXRoTGFuZ3VhZ2UoZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGVTdHJpbmcuZ2V0KCks
ICZjb3ZlcmVkTGVuZ3RoKSk7CiAjZWxzZQogICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ1RGb250Q3Jl
YXRlRm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgsIGxv
Y2FsZVN0cmluZy5nZXQoKSwgJmNvdmVyZWRMZW5ndGgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0JKHJldmlzaW9u
IDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgRm9udDo6cGxh
dGZvcm1EZXN0cm95KCkKIAogYm9vbCBGb250Ojp2YXJpYW50Q2Fwc1N1cHBvcnRzQ2hhcmFjdGVy
Rm9yU3ludGhlc2lzKEZvbnRWYXJpYW50Q2FwcyBmb250VmFyaWFudENhcHMsIFVDaGFyMzIgY2hh
cmFjdGVyKSBjb25zdAogewotI2lmIChQTEFURk9STShJT1MpICYmIFRBUkdFVF9PU19JT1MpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MjAwKQorI2lmIChQTEFURk9STShJT1MpICYmIFRBUkdFVF9PU19JT1MpIHx8IFBMQVRGT1JNKE1B
QykKICAgICBHbHlwaCBnbHlwaCA9IGdseXBoRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CiAgICAg
aWYgKCFnbHlwaCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc2LDcgKzI3Niw3IEBAIGJv
b2wgRm9udDo6dmFyaWFudENhcHNTdXBwb3J0c0NoYXJhY3RlckYKICNlbmRpZgogfQogCi0jaWYg
KFBMQVRGT1JNKElPUykgJiYgVEFSR0VUX09TX0lPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCisjaWYgKFBMQVRGT1JNKElP
UykgJiYgVEFSR0VUX09TX0lPUykgfHwgUExBVEZPUk0oTUFDKQogc3RhdGljIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHNtYWxsQ2Fwc09wZW5UeXBlRGljdGlvbmFyeShDRlN0cmluZ1JlZiBr
ZXksIGludCByYXdWYWx1ZSkKIHsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHZhbHVlID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmcmF3VmFsdWUpKTsKQEAgLTU4MSwzNyArNTgxLDEyIEBAIEZsb2F0UmVjdCBGb250Ojpw
bGF0Zm9ybUJvdW5kc0ZvckdseXBoKEcKICAgICByZXR1cm4gYm91bmRpbmdCb3g7CiB9CiAKLSNp
ZiAhKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMjAwKSB8fCBQTEFURk9STShJT1MpKQotc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPENH
U2l6ZT4gYWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIEdseXBoIGdseXBoKQotewotICAgIENURm9udFJlZiBmb250ID0gcGxhdGZv
cm1EYXRhLmZvbnQoKTsKLSAgICBpZiAoIWZvbnQgfHwgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0
bWFwRm9udCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIENHU2l6ZSBhZHZh
bmNlOwotICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKGZvbnQsIGtDVEZvbnRPcmllbnRh
dGlvbkRlZmF1bHQsICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotICAgIHJldHVybiBhZHZhbmNlOwot
fQotCi1zdGF0aWMgaW5saW5lIGJvb2wgY2FuVXNlRmFzdEdseXBoQWR2YW5jZUdldHRlcihjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIEdseXBoIGdseXBoLCBDR1NpemUmIGFk
dmFuY2UsIGJvb2wmIHBvcHVsYXRlZEFkdmFuY2UpCi17Ci0gICAgaWYgKHBsYXRmb3JtRGF0YS5p
c0Vtb2ppKCkgfHwgcGxhdGZvcm1EYXRhLmhhc0N1c3RvbVRyYWNraW5nKCkgfHwgcGxhdGZvcm1E
YXRhLnRleHRSZW5kZXJpbmdNb2RlKCkgPT0gT3B0aW1pemVMZWdpYmlsaXR5KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGF1dG8gc2l6ZSA9IGFkdmFuY2VGb3JDb2xvckJpdG1hcEZv
bnQocGxhdGZvcm1EYXRhLCBnbHlwaCkpIHsKLSAgICAgICAgcG9wdWxhdGVkQWR2YW5jZSA9IHRy
dWU7Ci0gICAgICAgIGFkdmFuY2UgPSBzaXplLnZhbHVlKCk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogZmxvYXQgRm9udDo6cGxh
dGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewogICAgIENHU2l6ZSBhZHZh
bmNlID0gQ0dTaXplWmVybzsKICAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWw7CiAgICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5
bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5n
U3R5bGVTdWJwaXhlbFBvc2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxR
dWFudGl6YXRpb24gfCBrQ0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOwogCi0jaWYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEy
MDApIHx8IFBMQVRGT1JNKElPUykKICAgICBpZiAocGxhdGZvcm1EYXRhKCkuc2l6ZSgpKSB7CiAg
ICAgICAgIENURm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gaG9yaXpvbnRhbCB8fCBtX2lz
QnJva2VuSWRlb2dyYXBoRmFsbGJhY2sgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFsIDog
a0NURm9udE9yaWVudGF0aW9uVmVydGljYWw7CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBzcGVjaWFsLWNhc2luZyB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yODE5NzI5MT4gYW5kIDxyZGFy
Oi8vcHJvYmxlbS8yODY2MjA4Nj4gYXJlIGZpeGVkLgpAQCAtNjIwLDIyICs1OTUsNiBAQCBmbG9h
dCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIENURm9udEdldFVuc3VtbWVkQWR2YW5jZXNGb3JHbHlwaHNBbmRTdHlsZShtX3BsYXRm
b3JtRGF0YS5jdEZvbnQoKSwgb3JpZW50YXRpb24sIHN0eWxlLCAmZ2x5cGgsICZhZHZhbmNlLCAx
KTsKICAgICB9Ci0KLSNlbHNlCi0KLSAgICBib29sIHBvcHVsYXRlZEFkdmFuY2UgPSBmYWxzZTsK
LSAgICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrKSAmJiBj
YW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKHRoaXMtPnBsYXRmb3JtRGF0YSgpLCBnbHlwaCwg
YWR2YW5jZSwgcG9wdWxhdGVkQWR2YW5jZSkpIHsKLSAgICAgICAgZmxvYXQgcG9pbnRTaXplID0g
cGxhdGZvcm1EYXRhKCkuc2l6ZSgpOwotICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUocG9pbnRTaXplLCBwb2ludFNpemUpOwotICAgICAgICBp
ZiAoIUNHRm9udEdldEdseXBoQWR2YW5jZXNGb3JTdHlsZShwbGF0Zm9ybURhdGEoKS5jZ0ZvbnQo
KSwgJm0sIHN0eWxlLCAmZ2x5cGgsIDEsICZhZHZhbmNlKSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBmdWxsTmFtZSA9IGFkb3B0Q0YoQ0dGb250Q29weUZ1bGxOYW1lKHBs
YXRmb3JtRGF0YSgpLmNnRm9udCgpKSk7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjYWNoZSBnbHlwaCB3aWR0aHMgZm9yICVAICVmIiwgZnVsbE5hbWUuZ2V0KCksIHBvaW50U2l6
ZSk7Ci0gICAgICAgICAgICBhZHZhbmNlLndpZHRoID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAoIXBvcHVsYXRlZEFkdmFuY2UgJiYgcGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQotICAgICAg
ICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgaG9y
aXpvbnRhbCA/IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRp
b25WZXJ0aWNhbCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBh
ZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM5LDExICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gVGV4
dFNwYWNpbmdDVEZlYXR1cmVTZWxlY3RvciB7IFRleHRTcGFjaW5nUHJvcG9ydGlvbmFsLCBUZXh0
U3BhY2luZ0Z1bGxXaWR0aCwgVGV4dFNwYWNpbmdIYWxmV2lkdGgsIFRleHRTcGFjaW5nVGhpcmRX
aWR0aCwgVGV4dFNwYWNpbmdRdWFydGVyV2lkdGggfTsKIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9u
dFBsYXRmb3JtRGF0YShDVEZvbnRSZWYgZm9udCwgZmxvYXQgc2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY09ibGlxdWUsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwg
Rm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5k
ZXJpbmdNb2RlKQotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA8IDEwMTIwMAotICAgIDogRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENv
cHlHcmFwaGljc0ZvbnQoZm9udCwgTlVMTCkpLmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5n
TW9kZSkKLSNlbHNlCiAgICAgOiBGb250UGxhdGZvcm1EYXRhKHNpemUsIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIHRleHRSZW5kZXJp
bmdNb2RlKQotI2VuZGlmCiB7CiAgICAgQVNTRVJUX0FSRyhmb250LCBmb250KTsKICAgICBtX2Zv
bnQgPSBmb250OwpAQCAtNjAsMTEgKzU2LDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRm
b3JtRGF0YShDVEZvbgogdW5zaWduZWQgRm9udFBsYXRmb3JtRGF0YTo6aGFzaCgpIGNvbnN0CiB7
CiAgICAgdWludHB0cl90IGZsYWdzID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihtX3dpZHRoVmFy
aWFudCA8PCA2IHwgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSA8PCA1IHwgbV90ZXh0UmVuZGVy
aW5nTW9kZSA8PCAzIHwgbV9vcmllbnRhdGlvbiA8PCAyIHwgbV9zeW50aGV0aWNCb2xkIDw8IDEg
fCBtX3N5bnRoZXRpY09ibGlxdWUpOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAotICAgIHVpbnRwdHJfdCBmb250SGFzaCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2ZvbnQuZ2V0KCkpOwotI2Vsc2UKICAgICB1aW50
cHRyX3QgZm9udEhhc2ggPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oQ0ZIYXNoKG1fZm9u
dC5nZXQoKSkpOwotI2VuZGlmCiAgICAgdWludHB0cl90IGhhc2hDb2Rlc1tdID0geyBmb250SGFz
aCwgZmxhZ3MgfTsKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZiho
YXNoQ29kZXMpPihoYXNoQ29kZXMpOwogfQpAQCAtNzMsMTEgKzY1LDcgQEAgYm9vbCBGb250UGxh
dGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoYwogewogICAgIGlmICghbV9mb250IHx8ICFvdGhl
ci5tX2ZvbnQpCiAgICAgICAgIHJldHVybiBtX2ZvbnQgPT0gb3RoZXIubV9mb250OwotI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAot
ICAgIHJldHVybiBtX2ZvbnQgPT0gb3RoZXIubV9mb250OwotI2Vsc2UKICAgICByZXR1cm4gQ0ZF
cXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7Ci0jZW5kaWYKIH0KIAogQ1RG
b250UmVmIEZvbnRQbGF0Zm9ybURhdGE6OnJlZ2lzdGVyZWRGb250KCkgY29uc3QKQEAgLTE2MSw5
ICsxNDksNiBAQCBDVEZvbnRSZWYgRm9udFBsYXRmb3JtRGF0YTo6Y3RGb250KCkgY29uCiAgICAg
ICAgIHJldHVybiBtX2N0Rm9udC5nZXQoKTsKIAogICAgIEFTU0VSVChtX2ZvbnQpOwotI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAot
ICAgIEFTU0VSVChtX2NnRm9udCk7Ci0jZW5kaWYKICAgICBtX2N0Rm9udCA9IGFkb3B0Q0YoQ1RG
b250Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKG1fZm9udC5nZXQoKSwgbV9zaXplLCAwLCBjYXNj
YWRlVG9MYXN0UmVzb3J0QW5kVmFyaWF0aW9uc0ZvbnREZXNjcmlwdG9yKG1fZm9udC5nZXQoKSku
Z2V0KCkpKTsKIAogICAgIGlmIChtX3dpZHRoVmFyaWFudCAhPSBSZWd1bGFyV2lkdGgpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzY4LDI2ICszNjgsNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JEb2N1bWVuCiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAotQ0dDb2xvclNwYWNlUmVm
IGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQotewotICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYg
bGluZWFyU1JHQkNvbG9yU3BhY2U7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IGljY1Byb2ZpbGVQYXRoID0gW1tOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRpZmll
cjpAImNvbS5hcHBsZS5XZWJDb3JlIl0gcGF0aEZvclJlc291cmNlOkAibGluZWFyU1JHQiIgb2ZU
eXBlOkAiaWNjIl07Ci0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGljY1Byb2ZpbGVEYXRhID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTppY2NQcm9maWxl
UGF0aC5nZXQoKV0pOwotICAgICAgICBpZiAoaWNjUHJvZmlsZURhdGEpCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVw
cmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgICAgICBsaW5lYXJTUkdCQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NQcm9maWxlKChDRkRhdGFSZWYpaWNjUHJvZmlsZURh
dGEuZ2V0KCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gICAgICAgIC8vIElm
IHdlIGZhaWwgdG8gbG9hZCB0aGUgbGluZWFyaXplZCBzUkdCIElDQyBwcm9maWxlLCBmYWxsIGJh
Y2sgdG8gc1JHQi4KLSAgICAgICAgaWYgKCFsaW5lYXJTUkdCQ29sb3JTcGFjZSkKLSAgICAgICAg
ICAgIGxpbmVhclNSR0JDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSAgICB9KTsK
LSAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2U7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bi5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04NCw5ICs4NCw3IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpzZXRUaW0K
ICAgICAgICAgICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFuZGxlcihtX3RpbWVyU291
cmNlLmdldCgpLCBbdGhpc10gewogICAgICAgICAgICAgICAgIGF1dG9tYXRpY0RlcXVldWUoKTsK
ICAgICAgICAgICAgIH0pOwotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCiAgICAgICAgICAgICBk
aXNwYXRjaF9hY3RpdmF0ZShtX3RpbWVyU291cmNlLmdldCgpKTsKLSNlbmRpZgogICAgICAgICB9
CiAgICAgICAgIENNVGltZWJhc2VBZGRUaW1lckRpc3BhdGNoU291cmNlKG1fdGltZWJhc2UuZ2V0
KCksIG1fdGltZXJTb3VyY2UuZ2V0KCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsMTIgKzc2LDEwIEBAIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNG
b3IKIHsKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZm9ybWF0LCAi
dHJ1ZXR5cGUiKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3Jt
YXQsICJvcGVudHlwZSIpCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKICAgICAgICAgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZm9ybWF0LCAid29mZjIiKQogI2lmIEVOQUJMRShW
QVJJQVRJT05fRk9OVFMpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGZvcm1hdCwgIndvZmYyLXZhcmlhdGlvbnMiKQogI2VuZGlmCi0jZW5kaWYKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShmb3JtYXQsICJ3b2ZmLXZhcmlhdGlvbnMiKQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShmb3JtYXQsICJ0cnVldHlwZS12YXJpYXRpb25zIikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHJldmlz
aW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVl
bk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDE0ICsxNDQsNyBAQCBib29sIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqCiAgICAgaWYgKCF3aWRnZXQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MjAwCiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0KSBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6
TlNEaXNwbGF5R2FtdXRQM107Ci0jZWxzZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IHNjcmVlbkNv
bG9yU3BhY2Uod2lkZ2V0KTsKLSAgICBhdXRvIGljY0RhdGEgPSBhZG9wdENGKENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlKGNvbG9yU3BhY2UpKTsKLSAgICBhdXRvIHByb2ZpbGUgPSBhZG9wdENG
KENvbG9yU3luY1Byb2ZpbGVDcmVhdGUoaWNjRGF0YS5nZXQoKSwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBwcm9maWxlICYmIENvbG9yU3luY1Byb2ZpbGVJc1dpZGVHYW11dChwcm9maWxlLmdldCgp
KTsKLSNlbmRpZgogfQogCiBGbG9hdFJlY3QgdG9Vc2VyU3BhY2UoY29uc3QgTlNSZWN0JiByZWN0
LCBOU1dpbmRvdyAqZGVzdGluYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzY3JvbGxiYXJDb250
cm9sU2l6CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OmRpZENyZWF0ZVNjcm9sbGVySW1wKFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgTlNT
Y3JvbGxlckltcCAqc2Nyb2xsZXJJbXAgPSBwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7
CiAgICAgQVNTRVJUKHNjcm9sbGVySW1wKTsKICAgICBzY3JvbGxlckltcC51c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uID0gc2Nyb2xsYmFyLnNjcm9sbGFibGVBcmVhKCkuc2hvdWxkUGxhY2VC
bG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uUmlnaHRUb0xlZnQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9S
aWdodDsKQEAgLTE5NSw3ICsxOTUsNyBAQCBOU1Njcm9sbGVySW1wICpTY3JvbGxiYXJUaGVtZU1h
Yzo6cGFpbnRlCiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OmlzTGF5b3V0RGlyZWN0aW9uUlRM
KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
TlNTY3JvbGxlckltcCAqc2Nyb2xsZXJJbXAgPSBwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJh
cik7CiAgICAgQVNTRVJUKHNjcm9sbGVySW1wKTsKICAgICByZXR1cm4gc2Nyb2xsZXJJbXAudXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25SaWdodFRvTGVmdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW0JKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODY3LDExICs4NjcsNyBAQCB2b2lkIFRoZW1lTWFj
OjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDCiAKIGJvb2wgVGhlbWVNYWM6OnVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbigpIGNvbnN0CiB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDAKICAgICByZXR1cm4gW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2Vd
IGFjY2Vzc2liaWxpdHlEaXNwbGF5U2hvdWxkUmVkdWNlTW90aW9uXTsKLSNlbHNlCi0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4
Miw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICAgICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6cGFydGl0aW9uVmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKV9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKICAgICB9
CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxl
KCkpIHsKICAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgICAgIGlmICghZnNSZXBG
aWxlLmlzTnVsbCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Qm91bmRhcmllcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzMiwzMiArMjMyLDYgQEAgdm9pZCBmaW5kRW5kV29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcg
dGV4dAogaW50IGZpbmROZXh0V29yZEZyb21JbmRleChTdHJpbmdWaWV3IHRleHQsIGludCBwb3Np
dGlvbiwgYm9vbCBmb3J3YXJkKQogeyAgIAogI2lmIFVTRShBUFBLSVQpCi0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAotICAgIGlmICghdGV4dC5sZW5ndGgoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF0ZXh0LmlzOEJpdCgpICYmICFmb3J3YXJkKSB7
Ci0gICAgICAgIGludCBjaHVua1NpemUgPSAyNTY7Ci0gICAgICAgIGludCBkZWNyZW1lbnQgPSBj
aHVua1NpemUgLyAyOwotICAgICAgICBmb3IgKGludCBzdGFydFBvc2l0aW9uID0gc3RkOjptYXgo
MCwgcG9zaXRpb24gLSBjaHVua1NpemUpOyBzdGFydFBvc2l0aW9uID4gLWRlY3JlbWVudDsgc3Rh
cnRQb3NpdGlvbiAtPSBkZWNyZW1lbnQpIHsKLSAgICAgICAgICAgIGludCBsZW5ndGg7Ci0gICAg
ICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbiA8IDApIHsKLSAgICAgICAgICAgICAgICBsZW5ndGgg
PSBjaHVua1NpemUgKyBzdGFydFBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRp
b24gPSAwOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbGVuZ3RoID0gc3Rk
OjptaW4oY2h1bmtTaXplLCBwb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24pOwotICAgICAgICAgICAg
aWYgKGxlbmd0aCA+IDEgJiYgVTE2X0lTX0xFQUQodGV4dFtzdGFydFBvc2l0aW9uICsgbGVuZ3Ro
IC0gMV0pICYmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRQb3NpdGlvbiArIGxlbmd0aCkg
PCB0ZXh0Lmxlbmd0aCgpKSAmJiBVMTZfSVNfVFJBSUwodGV4dFtzdGFydFBvc2l0aW9uICsgbGVu
Z3RoXSkpIHsKLSAgICAgICAgICAgICAgICArK3N0YXJ0UG9zaXRpb247Ci0gICAgICAgICAgICAg
ICAgKytsZW5ndGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdHJpbmdWaWV3IHNob3J0
VGV4dCh0ZXh0LmNoYXJhY3RlcnMxNigpICsgc3RhcnRQb3NpdGlvbiwgbGVuZ3RoKTsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpzaG9ydFRl
eHQuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXSk7Ci0gICAgICAgICAgICBp
bnQgcmVzdWx0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgbmV4dFdvcmRGcm9tSW5kZXg6bGVuZ3RoIGZv
cndhcmQ6Zm9yd2FyZF07Ci0gICAgICAgICAgICBpZiAocmVzdWx0ICYmIChyZXN1bHQgIT0gMSB8
fCAhVTE2X0lTX1RSQUlMKHNob3J0VGV4dFswXSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBz
dGFydFBvc2l0aW9uICsgcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSNlbmRpZgogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0LmNyZWF0ZU5TU3Ry
aW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV07CiAgICAgaW50IHJlc3VsdCA9IFthdHRyaWJ1dGVk
U3RyaW5nIG5leHRXb3JkRnJvbUluZGV4OnBvc2l0aW9uIGZvcndhcmQ6Zm9yd2FyZF07CiAgICAg
W2F0dHJpYnV0ZWRTdHJpbmcgcmVsZWFzZV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjc0NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxP
YmplY3Q6OnN0eWxlRGlkQ2hhCiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBs
YWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSBjb25zdAogewogLy8gUlRMIFNjcm9s
bGJhcnMgcmVxdWlyZSBzb21lIHN5c3RlbSBzdXBwb3J0LCBhbmQgdGhpcyBzeXN0ZW0gc3VwcG9y
dCBkb2VzIG5vdCBleGlzdCBvbiBjZXJ0YWluIHZlcnNpb25zIG9mIE9TIFguIGlPUyB1c2VzIGEg
c2VwYXJhdGUgbWVjaGFuaXNtLgotI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkKKyNpZiBQTEFURk9S
TShJT1MpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBzd2l0Y2ggKHNldHRpbmdzKCku
dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEwICs0Nyw4IEBAIGJvb2wgSW50
ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24KIHsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgcmV0dXJuIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCgpOwotI2VsaWYg
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MAotICAgIHJldHVybiBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gYWNjZXNzaWJpbGl0
eURpc3BsYXlTaG91bGRSZWR1Y2VNb3Rpb25dOwogI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBhY2Nlc3NpYmlsaXR5RGlz
cGxheVNob3VsZFJlZHVjZU1vdGlvbl07CiAjZW5kaWYKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332108</attachid>
            <date>2018-01-23 17:44:21 -0800</date>
            <delta_ts>2018-01-24 12:57:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182026-20180123174420.patch</filename>
            <type>text/plain</type>
            <size>44398</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE4LTAxLTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHBy
ZS1TaWVycmEtT1Mtc3BlY2lmaWMgY29kZSBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvVXNlckFnZW50Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6c3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmlu
Zyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYzo6cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Yml0bWFwUE5H
RmlsZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIubW06CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXI6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKGxheWVy
Q29udGVudHNGb3JtYXQpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6OnVwZGF0ZUNv
bnRlbnRzRm9ybWF0KToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNvY29hOjpiYWNraW5nU3Rv
cmVCeXRlc1BlclBpeGVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJSR0JDb2xvclNw
YWNlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldENTU0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXBhYmlsaXRp
ZXNGb3JGb250RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQ2xvc2VzdEZvbnQp
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Gb250TG9va3VwV2l0aEZhbWlseSk6CisgICAg
ICAgIChXZWJDb3JlOjpsb29rdXBGYWxsYmFja0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dFdlaWdodEZyb21Db3JlVGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6dmFyaWFudENh
cHNTdXBwb3J0c0NoYXJhY3RlckZvclN5bnRoZXNpcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
YWR2YW5jZUZvckNvbG9yQml0bWFwRm9udCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpj
YW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OmN0Rm9udCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjps
aW5lYXJSR0JDb2xvclNwYWNlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnNldFRpbWViYXNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZU1hYzo6ZGlkQ3JlYXRlU2Nyb2xsZXJJbXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVNYWM6OmlzTGF5b3V0RGlyZWN0aW9uUlRMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6dXNlclByZWZlcnNSZWR1
Y2VkTW90aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4
dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpmaW5kTmV4dFdvcmRGcm9tSW5kZXgp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlQmxvY2tEaXJl
Y3Rpb25TY3JvbGxiYXJPbkxlZnQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rp
b24gY29uc3QpOgorCiAyMDE4LTAxLTIzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlc2lnbiBOb3dQbGF5aW5nIHN0YXR1cyB3aGVuIG5vIG1lZGlh
IGVsZW1lbnQgaXMgZWxpZ2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjI3
NDYzKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5IEBACisyMDE4LTAxLTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHByZS1TaWVycmEtT1Mtc3BlY2lmaWMgY29k
ZSBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODIwMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnND
b3JlU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg6CisgICAg
ICAgICogcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg6CisgICAgICAgICogcGFsL3NwaS9t
YWMvTlNNZW51U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvTlNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JTUEkuaDoKKyAgICAgICAgKiBwYWwvc3BpL21hYy9QSVBTUEkuaDoKKwogMjAx
OC0wMS0yMyAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV1bR1RLXSBTbGVlcCBpbmhpYml0b3JzIGRvIG5vdCB3b3JrIHVuZGVyIEZsYXRw
YWsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5o
CShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5l
dHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw2IEBAIHR5cGVkZWYgdm9p
ZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VDYWxsQmEKIEBlbmQKICNlbmRpZgogCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8
IFBMQVRGT1JNKElPUykKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llICgpCiBAcHJvcGVydHkgKG51
bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKl9zdG9yYWdlUGFydGl0aW9uOwogQGVu
ZApAQCAtMTg2LDcgKzE4NSw2IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVzcG9uc2VD
YWxsQmEKIEBwcm9wZXJ0eSAocmVhZHdyaXRlLCBjb3B5KSBOU1N0cmluZyAqX3BhdGhUb0Rvd25s
b2FkVGFza0ZpbGU7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpfc3RvcmFnZVBhcnRpdGlv
bklkZW50aWZpZXI7CiBAZW5kCi0jZW5kaWYKIAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18p
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDE0ICsyNDksMTIgQEAg
Ym9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdAogYm9vbCBDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cyhDR0NvbnRleHRSZWYpOwogQ0dQYXR0ZXJuUmVm
IENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIoQ0dJbWFnZVJlZiwgQ0dBZmZpbmVUcmFuc2Zvcm0s
IENHUGF0dGVyblRpbGluZyk7CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogYm9vbCBDR0Nv
bG9yU3BhY2VVc2VzRXh0ZW5kZWRSYW5nZShDR0NvbG9yU3BhY2VSZWYpOwogCiB0eXBlZGVmIHN0
cnVjdCBDR1BERkFubm90YXRpb24gKkNHUERGQW5ub3RhdGlvblJlZjsKIHR5cGVkZWYgYm9vbCAo
XkNHUERGQW5ub3RhdGlvbkRyYXdDYWxsYmFja1R5cGUpKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1BERlBhZ2VSZWYgcGFnZSwgQ0dQREZBbm5vdGF0aW9uUmVmIGFubm90YXRpb24pOwogdm9pZCBD
R0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5vdGF0aW9ucyhDR0NvbnRleHRSZWYsIENHUERGUGFn
ZVJlZiwgQ0dQREZBbm5vdGF0aW9uRHJhd0NhbGxiYWNrVHlwZSk7CiB2b2lkIENHQ29udGV4dERy
YXdQYXRoRGlyZWN0KENHQ29udGV4dFJlZiwgQ0dQYXRoRHJhd2luZ01vZGUsIENHUGF0aFJlZiwg
Y29uc3QgQ0dSZWN0KiBib3VuZGluZ0JveCk7Ci0jZW5kaWYKIAogI2lmIFVTRShJT1NVUkZBQ0Up
CiBDR0NvbnRleHRSZWYgQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKElPU3VyZmFjZVJlZiwgc2l6
ZV90LCBzaXplX3QsIHNpemVfdCwgc2l6ZV90LCBDR0NvbG9yU3BhY2VSZWYsIENHQml0bWFwSW5m
byk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9EYXRhRGV0ZWN0b3Jz
Q29yZVNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCwxNyArMTA0LDEwIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEREVVJMU2No
ZW1lOwogCiAjZGVmaW5lIEREUmVzdWx0UHJvcGVydHlQYXNzaXZlRGlzcGxheSAgICgxIDw8IDAp
CiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
PCAxMDEyMDAKLXR5cGVkZWYgc3RydWN0IF9fRERRdWVyeU9mZnNldCB7Ci0gICAgQ0ZJbmRleCBx
dWVyeUluZGV4OwotICAgIENGSW5kZXggb2Zmc2V0OwotfSBERFF1ZXJ5T2Zmc2V0OwotI2Vsc2UK
IHR5cGVkZWYgc3RydWN0IF9fRERRdWVyeU9mZnNldCB7CiAgICAgQ0ZJbmRleCBxdWVyeUluZGV4
OjMyOwogICAgIENGSW5kZXggb2Zmc2V0OjMyOwogfSBERFF1ZXJ5T2Zmc2V0OwotI2VuZGlmCiAK
IHR5cGVkZWYgc3RydWN0IF9fRERRdWVyeVJhbmdlIHsKICAgICBERFF1ZXJ5T2Zmc2V0IHN0YXJ0
OwpAQCAtMTIzLDExICsxMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0REUXVlcnlSYW5nZSB7CiAK
ICNlbmRpZiAvLyAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMAotc3RhdGljX2Fzc2Vy
dChzaXplb2YoRERRdWVyeU9mZnNldCkgPT0gc2l6ZW9mKENGSW5kZXgpICogMiwgIkREUXVlcnlP
ZmZzZXQgaXMgbm8gbG9uZ2VyIHRoZSBzaXplIG9mIHR3byBDRkluZGV4ZXMuIFVwZGF0ZSB0aGUg
ZGVmaW5pdGlvbiBvZiBERFF1ZXJ5T2Zmc2V0IGluIHRoaXMgZmlsZSB0byBtYXRjaCB0aGUgbmV3
IHNpemUuIik7Ci0jZWxzZQogc3RhdGljX2Fzc2VydChzaXplb2YoRERRdWVyeU9mZnNldCkgPT0g
OCwgIkREUXVlcnlPZmZzZXQgaXMgbm8gbG9uZ2VyIDggYnl0ZXMuIFVwZGF0ZSB0aGUgZGVmaW5p
dGlvbiBvZiBERFF1ZXJ5T2Zmc2V0IGluIHRoaXMgZmlsZSB0byBtYXRjaCB0aGUgbmV3IHNpemUu
Iik7Ci0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgX19ERFNjYW5RdWVyeSAqRERTY2FuUXVlcnlS
ZWY7CiB0eXBlZGVmIHN0cnVjdCBfX0REU2Nhbm5lciAqRERTY2FubmVyUmVmOwpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAkocmV2
aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMCArNzYsOCBAQCB0eXBlZGVmIHN0cnVj
dCBfQ0FSZW5kZXJDb250ZXh0IENBUmVuZGVyCiAtIChtYWNoX3BvcnRfdCljcmVhdGVGZW5jZVBv
cnQ7CiAtICh2b2lkKXNldEZlbmNlUG9ydDoobWFjaF9wb3J0X3QpcG9ydDsKIC0gKHZvaWQpc2V0
RmVuY2VQb3J0OihtYWNoX3BvcnRfdClwb3J0IGNvbW1pdEhhbmRsZXI6KHZvaWQoXikodm9pZCkp
YmxvY2s7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAotQHByb3BlcnR5IHVpbnQzMl90IGNvbW1pdFByaW9yaXR5OwotI2VuZGlm
CiAjaWYgUExBVEZPUk0oTUFDKQorQHByb3BlcnR5IHVpbnQzMl90IGNvbW1pdFByaW9yaXR5Owog
QHByb3BlcnR5IEJPT0wgY29sb3JNYXRjaFVudGFnZ2VkQ29udGVudDsKICNlbmRpZgogQHByb3Bl
cnR5IChyZWFkb25seSkgdWludDMyX3QgY29udGV4dElkOwpAQCAtMTg3LDcgKzE4NSw3IEBAIHNp
emVfdCBDQVJlbmRlclNlcnZlckdldEJ1ZmZlckRhdGFTaXplKEMKIAogYm9vbCBDQVJlbmRlclNl
cnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShtYWNoX3BvcnRfdCwgdWludDMyX3QgY2xpZW50
X2lkLCB1aW50NjRfdCBsYXllcl9pZCwgQ0FSZW5kZXJTZXJ2ZXJCdWZmZXJSZWYsIGludDMyX3Qg
b3gsIGludDMyX3Qgb3ksIGNvbnN0IENBVHJhbnNmb3JtM0QqKTsKICNlbmRpZgotI2VuZGlmCisj
ZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogdHlwZWRlZiBzdHJ1Y3QgX0NBTWFj
aFBvcnQgKkNBTWFjaFBvcnRSZWY7CiBDQU1hY2hQb3J0UmVmIENBTWFjaFBvcnRDcmVhdGUobWFj
aF9wb3J0X3QpOwpAQCAtMjQzLDE1ICsyNDEsNiBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBr
Q0FDb250ZXh0UG9ydE51CiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBrQ0FDb250ZW50c0Zvcm1h
dFJHQkExMFhSOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZPUk0oTUFDKQogZXh0ZXJuIE5T
U3RyaW5nICogY29uc3Qga0NBQ29udGVudHNGb3JtYXRSR0JBOENvbG9yUkdCQThMaW5lYXJHbHlw
aE1hc2s7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01BWF9BTExPV0VEIDwgMTAxMjAwCi1AcHJvdG9jb2wgQ0FMYXllckRlbGVnYXRlIDxOU09iamVj
dD4KLUBlbmQKLQotQHByb3RvY29sIENBQW5pbWF0aW9uRGVsZWdhdGUgPE5TT2JqZWN0PgotQGVu
ZAotCi0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgJKHJldmlzaW9uIDIy
NzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9BVkZvdW5kYXRpb25TUEku
aAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5E
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZP
Uk0oSU9TKQogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWQXNzZXRDYWNoZS5oPgotI2Vsc2UKLUBpbnRlcmZhY2UgQVZBc3NldENhY2hlIDogTlNPYmpl
Y3QKLUBlbmQKLSNlbmRpZgogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBpbnRlcmZhY2UgQVZB
c3NldENhY2hlICgpCiArIChBVkFzc2V0Q2FjaGUgKilhc3NldENhY2hlV2l0aFVSTDooTlNVUkwg
KilVUkw7CkBAIC0xNTUsNyArMTUwLDcgQEAgQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIg
KCkgPEFWQ29udAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgKCFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQorI2lm
IFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgKEFWU3RyZWFtRGF0YVBh
cnNlclByaXZhdGUpCiArIChOU1N0cmluZyAqKW91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklu
cHV0TUlNRUNvZGVjUGFyYW1ldGVyOihOU1N0cmluZyAqKWlucHV0TUlNRUNvZGVjUGFyYW1ldGVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TTWVudVNQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU01lbnVTUEkuaAkocmV2
aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL05TTWVudVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMiArNTcsNyBAQCBAaW50ZXJmYWNlIE5TTWVudSAo
KQogCiBAY2xhc3MgUUxQcmV2aWV3TWVudUl0ZW07CiAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUFYX0FMTE9XRUQgPCAxMDEyMDAKLUBpbnRlcmZhY2UgTlNNZW51SXRlbSAoKSA8TlNVc2VySW50
ZXJmYWNlSXRlbUlkZW50aWZpY2F0aW9uPgotI2Vsc2UgCiBAaW50ZXJmYWNlIE5TTWVudUl0ZW0g
KCkKLSNlbmRpZgotCiArIChRTFByZXZpZXdNZW51SXRlbSAqKXN0YW5kYXJkUXVpY2tMb29rTWVu
dUl0ZW07CiArIChOU01lbnVJdGVtICopc3RhbmRhcmRTaGFyZU1lbnVJdGVtRm9ySXRlbXM6KE5T
QXJyYXkgKilpdGVtczsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21h
Yy9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvclNQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvclNQ
SS5oCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9tYWMv
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
OSArMzMsNyBAQCBAaW50ZXJmYWNlIF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvCiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEluaXRpYWxPcmlnaW46KE5TUG9pbnQpb3JpZ2luIHZlbG9j
aXR5OihOU1BvaW50KXZlbG9jaXR5IGRvY3VtZW50RnJhbWU6KE5TUmVjdClkb2NGcmFtZSBjb25z
dHJhaW5lZENsaXBwaW5nT3JpZ2luOihOU1BvaW50KWNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW4g
Y2xpcHBpbmdTaXplOihOU1NpemUpY2xpcFZpZXdTaXplIHRvbGVyYW5jZTooTlNTaXplKXRvbGVy
YW5jZTsKIC0gKE5TUG9pbnQpcG9zaXRpb25BZnRlckR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClk
dXJhdGlvbjsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAog
LSAodm9pZCljYWxjdWxhdGVUb1JlYWNoRGVzdGluYXRpb247Ci0jZW5kaWYKIAogQHByb3BlcnR5
IE5TUG9pbnQgZGVzdGluYXRpb25PcmlnaW47CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1RpbWVJ
bnRlcnZhbCBkdXJhdGlvblVudGlsU3RvcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL21hYy9QSVBTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvUElQU1BJLmgJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL21hYy9QSVBTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZP
Uk0oTUFDKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFBJUC9QSVBW
aWV3Q29udHJvbGxlclByaXZhdGUuaD4KQEAgLTU5LDQgKzU5LDQgQEAgTlNfQVNTVU1FX05PTk5V
TExfRU5ECiAKICNlbmRpZgogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1tCShyZXZpc2lvbiAyMjc0
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTMgKzM0LDcgQEAgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JV
c2VyQWdlbgogICAgIC8vIHdlIHdlcmUgY29uY2VybmVkIGFib3V0IG9sZCBESFRNTCBsaWJyYXJp
ZXMgaW50ZXJwcmV0aW5nICI0LiIgYXMgTmV0c2NhcGUgNC4gVGhhdCdzIG5vIGxvbmdlciBhIGNv
bmNlcm4gZm9yIHVzCiAgICAgLy8gYnV0IHdlJ3JlIHN0aWNraW5nIHdpdGggdGhlIHVuZGVyc2Nv
cmVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvcm1hdCB1c2VkIGJ5IG9sZGVyIHZlcnNp
b25zIG9mIFNhZmFyaS4KICNpZiBQTEFURk9STShNQUMpCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIxMF8xM180
Iik7Ci0jZWxpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIjEwXzEyXzYiKTsKLSNlbHNlCi0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiMTBfMTFfNiIpOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIjExXzMiKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw5ICs3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXQK
IHsKICAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmNhbGN1bGF0b3IgPSBlbnN1
cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOwogICAgIGNhbGN1bGF0b3IuZGVzdGluYXRp
b25PcmlnaW4gPSBOU01ha2VQb2ludChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwg
cmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpLmhlaWdodCgpKTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAogICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVh
Y2hEZXN0aW5hdGlvbl07Ci0jZW5kaWYKIH0KIAogU2Vjb25kcyBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0JKHJldmlzaW9uIDIyNzQ1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBM
QVRGT1JNKE1BQykKIHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5
cGUoKQogewotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAxMDEyMDAKICAg
ICByZXR1cm4gTlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HOwotI2Vsc2UKLSAgICByZXR1cm4gTlNQ
TkdGaWxlVHlwZTsKLSNlbmRpZgogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3Jt
RGF0YS5jcHAJKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQKIHsKIH0KIAotI2lm
IFVTRShDRykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENHKSAmJiBQTEFURk9S
TShXSU4pCiBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKENHRm9udFJlZiBjZ0Zv
bnQsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVl
LCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJp
YW50LCBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVuZGVyaW5nTW9kZSkKICAgICA6IEZvbnRQbGF0
Zm9ybURhdGEoc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRp
b24sIHdpZHRoVmFyaWFudCwgdGV4dFJlbmRlcmluZ01vZGUpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCShyZXZp
c2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNsb25lV2l0aFN5bnRoZXRpY09ibGlxdWUoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYsIGJvb2wpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIGNs
b25lV2l0aFNpemUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGZsb2F0KTsKIAotI2lmIFVTRShD
RykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShXSU4p
CiAgICAgRm9udFBsYXRmb3JtRGF0YShDR0ZvbnRSZWYsIGZsb2F0IHNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNPYmxpcXVlLCBGb250T3JpZW50YXRpb24sIEZvbnRXaWR0
aFZhcmlhbnQsIFRleHRSZW5kZXJpbmdNb2RlKTsKICNlbmRpZgogCkBAIC0xMzcsNyArMTM3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNWYXJpYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNWYXJpYXRpb25zOyB9CiAKLSNpZiBVU0UoQ0cpICYmIChQTEFURk9STShXSU4pIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApKQor
I2lmIFVTRShDRykgJiYgUExBVEZPUk0oV0lOKQogICAgIENHRm9udFJlZiBjZ0ZvbnQoKSBjb25z
dCB7IHJldHVybiBtX2NnRm9udC5nZXQoKTsgfQogI2VuZGlmCiAKQEAgLTIyNiw3ICsyMjYsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRHRElPYmplY3Q8SEZPTlQ+PiBtX2ZvbnQ7CiAj
ZW5kaWYKIAotI2lmIFVTRShDRykgJiYgKFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTIwMCkpCisjaWYgVVNFKENH
KSAmJiBQTEFURk9STShXSU4pCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4gbV9jZ0ZvbnQ7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlci5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OnNldFZpZAogCiAgICAgICAgIENBQ29udGV4dCAqbmV3
Q29udGV4dCA9IFttX3ZpZGVvTGF5ZXIgY29udGV4dF07CiAgICAgICAgIGlmIChvbGRDb250ZXh0
ICYmIG5ld0NvbnRleHQgJiYgb2xkQ29udGV4dCAhPSBuZXdDb250ZXh0KSB7Ci0jaWYgUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2lm
IFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgIG9sZENvbnRleHQuY29tbWl0UHJpb3JpdHkgPSAw
OwogICAgICAgICAgICAgbmV3Q29udGV4dC5jb21taXRQcmlvcml0eSA9IDE7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCShyZXZpc2lvbiAyMjc0NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwOSw3ICsxMDA5LDYgQEAgdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6dXBkYXRlQ3VzdG9tQQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMjAwKQogc3RhdGljIE5TU3RyaW5nICpsYXllckNvbnRlbnRzRm9ybWF0KGJvb2wg
YWNjZWxlcmF0ZXNEcmF3aW5nLCBib29sIHdhbnRzRGVlcENvbG9yLCBib29sIHN1cHBvcnRzU3Vi
cGl4ZWxBbnRpYWxpYXNlZEZvbnRzKQogewogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEwMTksNyAr
MTAxOCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGF5ZXJDb250ZW50c0Zvcm1hdChib28KICAgICBV
TlVTRURfUEFSQU0od2FudHNEZWVwQ29sb3IpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGlmIChzdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRGb250cyAmJiBhY2Nl
bGVyYXRlc0RyYXdpbmcpCiAgICAgICAgIHJldHVybiBrQ0FDb250ZW50c0Zvcm1hdFJHQkE4Q29s
b3JSR0JBOExpbmVhckdseXBoTWFzazsKICNlbHNlCkBAIC0xMDI5LDE2ICsxMDI4LDEzIEBAIHN0
YXRpYyBOU1N0cmluZyAqbGF5ZXJDb250ZW50c0Zvcm1hdChib28KIAogICAgIHJldHVybiBuaWw7
CiB9Ci0jZW5kaWYKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6dXBkYXRlQ29udGVudHNG
b3JtYXQoKQogewogICAgIGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVXZWJMYXllciB8fCBt
X2xheWVyVHlwZSA9PSBMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXIpIHsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKICAg
ICAgICAgaWYgKE5TU3RyaW5nICpmb3JtYXRTdHJpbmcgPSBsYXllckNvbnRlbnRzRm9ybWF0KGFj
Y2VsZXJhdGVzRHJhd2luZygpLCB3YW50c0RlZXBDb2xvckJhY2tpbmdTdG9yZSgpLCBzdXBwb3J0
c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0KCkpKQogICAgICAgICAgICAgW21fbGF5ZXIgc2V0Q29u
dGVudHNGb3JtYXQ6Zm9ybWF0U3RyaW5nXTsKLSNlbmRpZgogICAgICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgfQogfQpAQCAtMTIzNCw3ICsxMjMwLDcgQEAgdW5zaWduZWQgUGxh
dGZvcm1DQUxheWVyQ29jb2E6OmJhY2tpbmdTdAogICAgICAgICByZXR1cm4gaXNPcGFxdWUoKSA/
IDQgOiA1OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghaXNP
cGFxdWUoKSAmJiBzdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0KCkpCiAgICAgICAgIHJl
dHVybiA4OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyMjc0NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDYgQEAgQ0dDb2xvclNwYWNlUmVmIHNS
R0JDb2xvclNwYWNlUmVmKCkKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2U7CiB9CiAKLSNpZiBQ
TEFURk9STShXSU4pIHx8IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCiAvLyBTZWUgR3JhcGhpY3NDb250
ZXh0Q29jb2EgZm9yIHRoZSBwcmUtMTAuMTIgaW1wbGVtZW50YXRpb24uCiBDR0NvbG9yU3BhY2VS
ZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCiB7CkBAIC0xMDgsNyArMTA3LDYgQEAgQ0dDb2xv
clNwYWNlUmVmIGxpbmVhclJHQkNvbG9yU3BhY2VSZWYoKQogICAgIH0pOwogICAgIHJldHVybiBs
aW5lYXJSR0JDb2xvclNwYWNlOwogfQotI2VuZGlmCiAKIENHQ29sb3JTcGFjZVJlZiBleHRlbmRl
ZFNSR0JDb2xvclNwYWNlUmVmKCkKIHsKQEAgLTExNiw3ICsxMTQsNyBAQCBDR0NvbG9yU3BhY2VS
ZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlID0gTlVMTDsKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZUV4dGVuZGVkU1JHQik7CiAjZW5kaWYKICAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgc1JHQiwgZmFsbCBiYWNrIHRv
IHNSR0IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQ
REZQYWdlKEdyYXBoCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbHNlCiAgICAgLy8gQ0dQREYg
cGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCBQTEFURk9STShJT1MpCisjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMo
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVu
dC5nZXQoKSwgMSksIG51bGxwdHIpOwogI2Vsc2UKICAgICBDR0NvbnRleHREcmF3UERGUGFnZShj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50
LmdldCgpLCAxKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyMjc0
NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCi0jZGVm
aW5lIFNIT1VMRF9VU0VfQ09SRV9URVhUX0ZPTlRfTE9PS1VQIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEyMDApCiAjZGVmaW5lIEhBU19DT1JF
X1RFWFRfV0lEVEhfQVRUUklCVVRFICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSkKICNkZWZpbmUgQ0FOX0RJU0FMTE9X
X1VTRVJfSU5TVEFMTEVEX0ZPTlRTICgoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSkKIApAQCAtODEwLDI5ICs4MDksNiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTeXN0ZW1Gb250KGNvbnN0IEF0CiAgICAgcmV0dXJuIGZh
bWlseVswXSA9PSAnLic7CiB9CiAKLSNpZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tV
UAotc3RhdGljIGZsb2F0IGZvbnRXZWlnaHRGcm9tQ29yZVRleHQoQ0dGbG9hdCB3ZWlnaHQpCi17
Ci0gICAgaWYgKHdlaWdodCA8IC0wLjYpCi0gICAgICAgIHJldHVybiAxMDA7Ci0gICAgaWYgKHdl
aWdodCA8IC0wLjM2NSkKLSAgICAgICAgcmV0dXJuIDIwMDsKLSAgICBpZiAod2VpZ2h0IDwgLTAu
MTE1KQotICAgICAgICByZXR1cm4gMzAwOwotICAgIGlmICh3ZWlnaHQgPCAgMC4xMzApCi0gICAg
ICAgIHJldHVybiA0MDA7Ci0gICAgaWYgKHdlaWdodCA8ICAwLjIzNSkKLSAgICAgICAgcmV0dXJu
IDUwMDsKLSAgICBpZiAod2VpZ2h0IDwgIDAuMzUwKQotICAgICAgICByZXR1cm4gNjAwOwotICAg
IGlmICh3ZWlnaHQgPCAgMC41MDApCi0gICAgICAgIHJldHVybiA3MDA7Ci0gICAgaWYgKHdlaWdo
dCA8ICAwLjcwMCkKLSAgICAgICAgcmV0dXJuIDgwMDsKLSAgICByZXR1cm4gOTAwOwotfQotI2Vu
ZGlmCi0KIGNsYXNzIEZvbnREYXRhYmFzZSB7CiBwdWJsaWM6CiAjaWYgIUNBTl9ESVNBTExPV19V
U0VSX0lOU1RBTExFRF9GT05UUwpAQCAtMTA3Nyw3ICsxMDUzLDYgQEAgc3RhdGljIFZhcmlhdGlv
bkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiAh
U0hPVUxEX1VTRV9DT1JFX1RFWFRfRk9OVF9MT09LVVAgfHwgSEFTX0NPUkVfVEVYVF9XSURUSF9B
VFRSSUJVVEUKIHN0YXRpYyBmbG9hdCBnZXRDU1NBdHRyaWJ1dGUoQ1RGb250RGVzY3JpcHRvclJl
ZiBmb250RGVzY3JpcHRvciwgY29uc3QgQ0ZTdHJpbmdSZWYgYXR0cmlidXRlLCBmbG9hdCBmYWxs
YmFjaykKIHsKICAgICBhdXRvIG51bWJlciA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJS
ZWY+KENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGZvbnREZXNjcmlwdG9yLCBhdHRyaWJ1
dGUpKSk7CkBAIC0xMDg4LDcgKzEwNjMsNiBAQCBzdGF0aWMgZmxvYXQgZ2V0Q1NTQXR0cmlidXRl
KENURm9udERlc2NyCiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKICAgICBy
ZXR1cm4gY3NzVmFsdWU7CiB9Ci0jZW5kaWYKIAogRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyBj
YXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcihDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNj
cmlwdG9yKQogewpAQCAtMTA5Nyw3ICsxMDcxLDcgQEAgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
cyBjYXBhYmlsaXRpZXNGbwogCiAgICAgVmFyaWF0aW9uQ2FwYWJpbGl0aWVzIHZhcmlhdGlvbkNh
cGFiaWxpdGllcyA9IHZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKGZvbnRE
ZXNjcmlwdG9yKTsKIAotI2lmIFNIT1VMRF9VU0VfQ09SRV9URVhUX0ZPTlRfTE9PS1VQIHx8ICFI
QVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJQlVURQorI2lmICFIQVNfQ09SRV9URVhUX1dJRFRIX0FU
VFJJQlVURQogICAgIGJvb2wgd2VpZ2h0T3JXaWR0aENvbWVGcm9tVHJhaXRzID0gIXZhcmlhdGlv
bkNhcGFiaWxpdGllcy53ZWlnaHQgfHwgIXZhcmlhdGlvbkNhcGFiaWxpdGllcy53aWR0aDsKICNl
bHNlCiAgICAgYm9vbCB3ZWlnaHRPcldpZHRoQ29tZUZyb21UcmFpdHMgPSBmYWxzZTsKQEAgLTEx
MjQsMjkgKzEwOTgsMTMgQEAgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXNG
bwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25D
YXBhYmlsaXRpZXMuc2xvcGUgPSB7eyBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsSXRhbGljVmFs
dWUoKSksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9fTsKICAgICAg
ICAgICAgIH0KLQotI2lmIFNIT1VMRF9VU0VfQ09SRV9URVhUX0ZPTlRfTE9PS1VQCi0gICAgICAg
ICAgICBpZiAoIXZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIHdlaWdodE51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh0cmFpdHMuZ2V0KCksIGtDVEZvbnRXZWlnaHRUcmFpdCkpOwotICAgICAgICAg
ICAgICAgIGlmICh3ZWlnaHROdW1iZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0dGbG9hdCBj
dFdlaWdodDsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRW
YWx1ZSh3ZWlnaHROdW1iZXIsIGtDRk51bWJlckNHRmxvYXRUeXBlLCAmY3RXZWlnaHQpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIHdlaWdodFZhbHVlID0gZm9udFdlaWdodEZyb21Db3JlVGV4dChj
dFdlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWln
aHQgPSB7eyB3ZWlnaHRWYWx1ZSwgd2VpZ2h0VmFsdWUgfX07Ci0gICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7
eyBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsV2VpZ2h0VmFsdWUoKSksIHN0YXRpY19jYXN0PGZs
b2F0Pihub3JtYWxXZWlnaHRWYWx1ZSgpKSB9fTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAg
ICAgICB9CiAgICAgfQogCi0jaWYgIVNIT1VMRF9VU0VfQ09SRV9URVhUX0ZPTlRfTE9PS1VQCiAg
ICAgaWYgKCF2YXJpYXRpb25DYXBhYmlsaXRpZXMud2VpZ2h0KSB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSBnZXRDU1NBdHRyaWJ1dGUoZm9udERlc2NyaXB0b3IsIGtDVEZvbnRDU1NXZWlnaHRBdHRy
aWJ1dGUsIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxXZWlnaHRWYWx1ZSgpKSk7CiAgICAgICAg
IHZhcmlhdGlvbkNhcGFiaWxpdGllcy53ZWlnaHQgPSB7eyB2YWx1ZSwgdmFsdWUgfX07CiAgICAg
fQotI2VuZGlmCiAKICNpZiBIQVNfQ09SRV9URVhUX1dJRFRIX0FUVFJJQlVURQogICAgIGlmICgh
dmFyaWF0aW9uQ2FwYWJpbGl0aWVzLndpZHRoKSB7CkBAIC0xMTY0LDcgKzExMjIsNiBAQCBGb250
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllc0ZvCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotI2lmICFTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05UX0xPT0tVUAogc3RhdGljIGNvbnN0
IEZvbnREYXRhYmFzZTo6SW5zdGFsbGVkRm9udCogZmluZENsb3Nlc3RGb250KGNvbnN0IEZvbnRE
YXRhYmFzZTo6SW5zdGFsbGVkRm9udEZhbWlseSYgZmFtaWx5Rm9udHMsIEZvbnRTZWxlY3Rpb25S
ZXF1ZXN0IGZvbnRTZWxlY3Rpb25SZXF1ZXN0KQogewogICAgIFZlY3RvcjxGb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXM7CkBAIC0xMTc0LDcgKzExMzEsNiBAQCBzdGF0aWMg
Y29uc3QgRm9udERhdGFiYXNlOjpJbnN0YWxsZWRGb250CiAgICAgRm9udFNlbGVjdGlvbkFsZ29y
aXRobSBmb250U2VsZWN0aW9uQWxnb3JpdGhtKGZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjYXBhYmls
aXRpZXMsIGZhbWlseUZvbnRzLmNhcGFiaWxpdGllcyk7CiAgICAgcmV0dXJuICZmYW1pbHlGb250
cy5pbnN0YWxsZWRGb250c1tmb250U2VsZWN0aW9uQWxnb3JpdGhtLmluZGV4T2ZCZXN0Q2FwYWJp
bGl0aWVzKCldOwogfQotI2VuZGlmCiAKIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNl
ckluc3RhbGxlZEZvbnRzKQogewpAQCAtMTIwMSwxMSArMTE1Nyw2IEBAIHN0YXRpYyBGb250TG9v
a3VwIHBsYXRmb3JtRm9udExvb2t1cFdpdGgKICAgICBpZiAoIWlzU3lzdGVtRm9udChmYW1pbHkp
ICYmIHdoaXRlbGlzdC5zaXplKCkgJiYgIXdoaXRlbGlzdC5jb250YWlucyhmYW1pbHkpKQogICAg
ICAgICByZXR1cm4geyBudWxscHRyIH07CiAKLSNpZiBTSE9VTERfVVNFX0NPUkVfVEVYVF9GT05U
X0xPT0tVUAotICAgIFVOVVNFRF9QQVJBTShhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7Ci0gICAg
Q1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gKGlzRm9udFdlaWdodEJvbGQocmVxdWVzdC53
ZWlnaHQpID8ga0NURm9udFRyYWl0Qm9sZCA6IDApIHwgKGlzSXRhbGljKHJlcXVlc3Quc2xvcGUp
ID8ga0NURm9udFRyYWl0SXRhbGljIDogMCk7Ci0gICAgcmV0dXJuIHsgYWRvcHRDRihDVEZvbnRD
cmVhdGVGb3JDU1MoZmFtaWx5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHN0YXRp
Y19jYXN0PGZsb2F0PihyZXF1ZXN0LndlaWdodCksIHRyYWl0cywgc2l6ZSkpIH07Ci0jZWxzZQog
ICAgIGF1dG8mIGZvbnREYXRhYmFzZSA9IGFsbG93VXNlckluc3RhbGxlZEZvbnRzID09IEFsbG93
VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgPyBGb250RGF0YWJhc2U6OnNpbmdsZXRvbkFsbG93aW5n
VXNlckluc3RhbGxlZEZvbnRzKCkgOiBGb250RGF0YWJhc2U6OnNpbmdsZXRvbkRpc2FsbG93aW5n
VXNlckluc3RhbGxlZEZvbnRzKCk7CiAgICAgY29uc3QgYXV0byYgZmFtaWx5Rm9udHMgPSBmb250
RGF0YWJhc2UuY29sbGVjdGlvbkZvckZhbWlseShmYW1pbHkuc3RyaW5nKCkpOwogICAgIGlmIChm
YW1pbHlGb250cy5pc0VtcHR5KCkpIHsKQEAgLTEyNDEsNyArMTE5Miw2IEBAIHN0YXRpYyBGb250
TG9va3VwIHBsYXRmb3JtRm9udExvb2t1cFdpdGgKICAgICAgICAgcmV0dXJuIHsgYWRvcHRDRihD
VEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoaW5zdGFsbGVkRm9udC0+Zm9udERlc2NyaXB0
b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKSwgZmFsc2UgfTsKIAogICAgIHJldHVybiB7IG51bGxw
dHIgfTsKLSNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKCkKQEAg
LTEzNjQsNyArMTMxNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxs
YmEKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGxvY2FsZVN0cmluZzsKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkKKyNpZiAoUExBVEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMp
CiAgICAgaWYgKCFsb2NhbGUuaXNOdWxsKCkpCiAgICAgICAgIGxvY2FsZVN0cmluZyA9IGxvY2Fs
ZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwogI2Vsc2UKQEAgLTEzNzMsNyArMTMyMyw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBsb29rdXBGYWxsYmEKIAogICAgIENGSW5kZXgg
Y292ZXJlZExlbmd0aCA9IDA7CiAgICAgUmV0YWluUHRyPENURm9udFJlZj4gcmVzdWx0OwotI2lm
ICFVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QgJiYgKChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCAoUExBVEZPUk0o
SU9TKSAmJiBUQVJHRVRfT1NfSU9TKSkKKyNpZiAhVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFD
S19MSVNUICYmIChQTEFURk9STShNQUMpIHx8IChQTEFURk9STShJT1MpICYmIFRBUkdFVF9PU19J
T1MpKQogICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlUGh5c2ljYWxGb250Rm9yQ2hh
cmFjdGVyc1dpdGhMYW5ndWFnZShmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgsIGxvY2FsZVN0cmlu
Zy5nZXQoKSwgJmNvdmVyZWRMZW5ndGgpKTsKICNlbHNlCiAgICAgcmVzdWx0ID0gYWRvcHRDRihD
VEZvbnRDcmVhdGVGb3JDaGFyYWN0ZXJzV2l0aExhbmd1YWdlKGZvbnQsIGNoYXJhY3RlcnMsIGxl
bmd0aCwgbG9jYWxlU3RyaW5nLmdldCgpLCAmY292ZXJlZExlbmd0aCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQko
cmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBG
b250OjpwbGF0Zm9ybURlc3Ryb3koKQogCiBib29sIEZvbnQ6OnZhcmlhbnRDYXBzU3VwcG9ydHND
aGFyYWN0ZXJGb3JTeW50aGVzaXMoRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50Q2FwcywgVUNo
YXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiB7Ci0jaWYgKFBMQVRGT1JNKElPUykgJiYgVEFSR0VUX09T
X0lPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDApCisjaWYgKFBMQVRGT1JNKElPUykgJiYgVEFSR0VUX09TX0lPUykgfHwgUExB
VEZPUk0oTUFDKQogICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JDaGFyYWN0ZXIoY2hhcmFjdGVy
KTsKICAgICBpZiAoIWdseXBoKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzYsNyArMjc2
LDcgQEAgYm9vbCBGb250Ojp2YXJpYW50Q2Fwc1N1cHBvcnRzQ2hhcmFjdGVyRgogI2VuZGlmCiB9
CiAKLSNpZiAoUExBVEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKKyNpZiAoUExB
VEZPUk0oSU9TKSAmJiBUQVJHRVRfT1NfSU9TKSB8fCBQTEFURk9STShNQUMpCiBzdGF0aWMgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gc21hbGxDYXBzT3BlblR5cGVEaWN0aW9uYXJ5KENGU3Ry
aW5nUmVmIGtleSwgaW50IHJhd1ZhbHVlKQogewogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4g
dmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckludFR5cGUsICZyYXdWYWx1ZSkpOwpAQCAtNTgxLDM3ICs1ODEsMTIgQEAgRmxvYXRSZWN0
IEZvbnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoRwogICAgIHJldHVybiBib3VuZGluZ0JveDsK
IH0KIAotI2lmICEoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApIHx8IFBMQVRGT1JNKElPUykpCi1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0
aW9uYWw8Q0dTaXplPiBhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgR2x5cGggZ2x5cGgpCi17Ci0gICAgQ1RGb250UmVmIGZvbnQg
PSBwbGF0Zm9ybURhdGEuZm9udCgpOwotICAgIGlmICghZm9udCB8fCAhcGxhdGZvcm1EYXRhLmlz
Q29sb3JCaXRtYXBGb250KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgQ0dT
aXplIGFkdmFuY2U7Ci0gICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMoZm9udCwga0NURm9u
dE9yaWVudGF0aW9uRGVmYXVsdCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0gICAgcmV0dXJuIGFk
dmFuY2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjYW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0
dGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgR2x5cGggZ2x5cGgsIENH
U2l6ZSYgYWR2YW5jZSwgYm9vbCYgcG9wdWxhdGVkQWR2YW5jZSkKLXsKLSAgICBpZiAocGxhdGZv
cm1EYXRhLmlzRW1vamkoKSB8fCBwbGF0Zm9ybURhdGEuaGFzQ3VzdG9tVHJhY2tpbmcoKSB8fCBw
bGF0Zm9ybURhdGEudGV4dFJlbmRlcmluZ01vZGUoKSA9PSBPcHRpbWl6ZUxlZ2liaWxpdHkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYXV0byBzaXplID0gYWR2YW5jZUZvckNvbG9y
Qml0bWFwRm9udChwbGF0Zm9ybURhdGEsIGdseXBoKSkgewotICAgICAgICBwb3B1bGF0ZWRBZHZh
bmNlID0gdHJ1ZTsKLSAgICAgICAgYWR2YW5jZSA9IHNpemUudmFsdWUoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiBmbG9hdCBG
b250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAgQ0dT
aXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwogICAgIGJvb2wgaG9yaXpvbnRhbCA9IHBsYXRmb3Jt
RGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbDsKICAgICBDR0ZvbnRSZW5kZXJpbmdT
dHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRS
ZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVT
dWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7
CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkgfHwgUExBVEZPUk0oSU9TKQogICAgIGlmIChwbGF0Zm9ybURhdGEoKS5zaXpl
KCkpIHsKICAgICAgICAgQ1RGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBob3Jpem9udGFs
IHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayA/IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6
b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25WZXJ0aWNhbDsKICAgICAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHNwZWNpYWwtY2FzaW5nIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI4MTk3MjkxPiBh
bmQgPHJkYXI6Ly9wcm9ibGVtLzI4NjYyMDg2PiBhcmUgZml4ZWQuCkBAIC02MjAsMjIgKzU5NSw2
IEBAIGZsb2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCAKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgQ1RGb250R2V0VW5zdW1tZWRBZHZhbmNlc0ZvckdseXBoc0FuZFN0eWxl
KG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgc3R5bGUsICZnbHlwaCwgJmFk
dmFuY2UsIDEpOwogICAgIH0KLQotI2Vsc2UKLQotICAgIGJvb2wgcG9wdWxhdGVkQWR2YW5jZSA9
IGZhbHNlOwotICAgIGlmICgoaG9yaXpvbnRhbCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJh
Y2spICYmIGNhblVzZUZhc3RHbHlwaEFkdmFuY2VHZXR0ZXIodGhpcy0+cGxhdGZvcm1EYXRhKCks
IGdseXBoLCBhZHZhbmNlLCBwb3B1bGF0ZWRBZHZhbmNlKSkgewotICAgICAgICBmbG9hdCBwb2lu
dFNpemUgPSBwbGF0Zm9ybURhdGEoKS5zaXplKCk7Ci0gICAgICAgIENHQWZmaW5lVHJhbnNmb3Jt
IG0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShwb2ludFNpemUsIHBvaW50U2l6ZSk7Ci0g
ICAgICAgIGlmICghQ0dGb250R2V0R2x5cGhBZHZhbmNlc0ZvclN0eWxlKHBsYXRmb3JtRGF0YSgp
LmNnRm9udCgpLCAmbSwgc3R5bGUsICZnbHlwaCwgMSwgJmFkdmFuY2UpKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZ1bGxOYW1lID0gYWRvcHRDRihDR0ZvbnRDb3B5RnVs
bE5hbWUocGxhdGZvcm1EYXRhKCkuY2dGb250KCkpKTsKLSAgICAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGNhY2hlIGdseXBoIHdpZHRocyBmb3IgJUAgJWYiLCBmdWxsTmFtZS5nZXQoKSwg
cG9pbnRTaXplKTsKLSAgICAgICAgICAgIGFkdmFuY2Uud2lkdGggPSAwOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmICghcG9wdWxhdGVkQWR2YW5jZSAmJiBwbGF0Zm9ybURhdGEoKS5zaXplKCkp
Ci0gICAgICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9u
dCgpLCBob3Jpem9udGFsID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRP
cmllbnRhdGlvblZlcnRpY2FsLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSNlbmRpZgotCiAgICAg
cmV0dXJuIGFkdmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0JKHJldmlzaW9uIDIyNzQ1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzksMTEgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ZW51bSBUZXh0U3BhY2luZ0NURmVhdHVyZVNlbGVjdG9yIHsgVGV4dFNwYWNpbmdQcm9wb3J0aW9u
YWwsIFRleHRTcGFjaW5nRnVsbFdpZHRoLCBUZXh0U3BhY2luZ0hhbGZXaWR0aCwgVGV4dFNwYWNp
bmdUaGlyZFdpZHRoLCBUZXh0U3BhY2luZ1F1YXJ0ZXJXaWR0aCB9OwogCiBGb250UGxhdGZvcm1E
YXRhOjpGb250UGxhdGZvcm1EYXRhKENURm9udFJlZiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUg
dGV4dFJlbmRlcmluZ01vZGUpCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwCi0gICAgOiBGb250UGxhdGZvcm1EYXRhKGFkb3B0Q0Yo
Q1RGb250Q29weUdyYXBoaWNzRm9udChmb250LCBOVUxMKSkuZ2V0KCksIHNpemUsIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIHRleHRS
ZW5kZXJpbmdNb2RlKQotI2Vsc2UKICAgICA6IEZvbnRQbGF0Zm9ybURhdGEoc2l6ZSwgc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgdGV4
dFJlbmRlcmluZ01vZGUpCi0jZW5kaWYKIHsKICAgICBBU1NFUlRfQVJHKGZvbnQsIGZvbnQpOwog
ICAgIG1fZm9udCA9IGZvbnQ7CkBAIC02MCwxMSArNTYsNyBAQCBGb250UGxhdGZvcm1EYXRhOjpG
b250UGxhdGZvcm1EYXRhKENURm9uCiB1bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpoYXNoKCkg
Y29uc3QKIHsKICAgICB1aW50cHRyX3QgZmxhZ3MgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG1f
d2lkdGhWYXJpYW50IDw8IDYgfCBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIDw8IDUgfCBtX3Rl
eHRSZW5kZXJpbmdNb2RlIDw8IDMgfCBtX29yaWVudGF0aW9uIDw8IDIgfCBtX3N5bnRoZXRpY0Jv
bGQgPDwgMSB8IG1fc3ludGhldGljT2JsaXF1ZSk7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwCi0gICAgdWludHB0cl90IGZvbnRI
YXNoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fZm9udC5nZXQoKSk7Ci0jZWxzZQog
ICAgIHVpbnRwdHJfdCBmb250SGFzaCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihDRkhh
c2gobV9mb250LmdldCgpKSk7Ci0jZW5kaWYKICAgICB1aW50cHRyX3QgaGFzaENvZGVzW10gPSB7
IGZvbnRIYXNoLCBmbGFncyB9OwogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8
c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiB9CkBAIC03MywxMSArNjUsNyBAQCBib29s
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjCiB7CiAgICAgaWYgKCFtX2ZvbnQg
fHwgIW90aGVyLm1fZm9udCkKICAgICAgICAgcmV0dXJuIG1fZm9udCA9PSBvdGhlci5tX2ZvbnQ7
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTAxMjAwCi0gICAgcmV0dXJuIG1fZm9udCA9PSBvdGhlci5tX2ZvbnQ7Ci0jZWxzZQogICAgIHJl
dHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKLSNlbmRpZgog
fQogCiBDVEZvbnRSZWYgRm9udFBsYXRmb3JtRGF0YTo6cmVnaXN0ZXJlZEZvbnQoKSBjb25zdApA
QCAtMTYxLDkgKzE0OSw2IEBAIENURm9udFJlZiBGb250UGxhdGZvcm1EYXRhOjpjdEZvbnQoKSBj
b24KICAgICAgICAgcmV0dXJuIG1fY3RGb250LmdldCgpOwogCiAgICAgQVNTRVJUKG1fZm9udCk7
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwg
MTAxMjAwCi0gICAgQVNTRVJUKG1fY2dGb250KTsKLSNlbmRpZgogICAgIG1fY3RGb250ID0gYWRv
cHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMobV9mb250LmdldCgpLCBtX3NpemUs
IDAsIGNhc2NhZGVUb0xhc3RSZXNvcnRBbmRWYXJpYXRpb25zRm9udERlc2NyaXB0b3IobV9mb250
LmdldCgpKS5nZXQoKSkpOwogCiAgICAgaWYgKG1fd2lkdGhWYXJpYW50ICE9IFJlZ3VsYXJXaWR0
aCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0JKHJldmlzaW9uIDIyNzQ1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsMjYgKzM2OCw0IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW4KICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwCi1DR0NvbG9y
U3BhY2VSZWYgbGluZWFyUkdCQ29sb3JTcGFjZVJlZigpCi17Ci0gICAgc3RhdGljIENHQ29sb3JT
cGFjZVJlZiBsaW5lYXJTUkdCQ29sb3JTcGFjZTsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gaWNjUHJvZmlsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhJ
ZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYkNvcmUiXSBwYXRoRm9yUmVzb3VyY2U6QCJsaW5lYXJT
UkdCIiBvZlR5cGU6QCJpY2MiXTsKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaWNjUHJvZmls
ZURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZGaWxlOmlj
Y1Byb2ZpbGVQYXRoLmdldCgpXSk7Ci0gICAgICAgIGlmIChpY2NQcm9maWxlRGF0YSkKLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgICAgIGxpbmVhclNSR0JDb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ1Byb2ZpbGUoKENGRGF0YVJlZilpY2NQ
cm9maWxlRGF0YS5nZXQoKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0KLSAgICAg
ICAgLy8gSWYgd2UgZmFpbCB0byBsb2FkIHRoZSBsaW5lYXJpemVkIHNSR0IgSUNDIHByb2ZpbGUs
IGZhbGwgYmFjayB0byBzUkdCLgotICAgICAgICBpZiAoIWxpbmVhclNSR0JDb2xvclNwYWNlKQot
ICAgICAgICAgICAgbGluZWFyU1JHQkNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwot
ICAgIH0pOwotICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZTsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDkgKzg0LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246
OnNldFRpbQogICAgICAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1f
dGltZXJTb3VyY2UuZ2V0KCksIFt0aGlzXSB7CiAgICAgICAgICAgICAgICAgYXV0b21hdGljRGVx
dWV1ZSgpOwogICAgICAgICAgICAgfSk7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IFBMQVRGT1JNKElPUykKICAgICAg
ICAgICAgIGRpc3BhdGNoX2FjdGl2YXRlKG1fdGltZXJTb3VyY2UuZ2V0KCkpOwotI2VuZGlmCiAg
ICAgICAgIH0KICAgICAgICAgQ01UaW1lYmFzZUFkZFRpbWVyRGlzcGF0Y2hTb3VyY2UobV90aW1l
YmFzZS5nZXQoKSwgbV90aW1lclNvdXJjZS5nZXQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NiwxMiArNzYsMTAgQEAgYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpz
dXBwb3J0c0ZvcgogewogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShm
b3JtYXQsICJ0cnVldHlwZSIpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGZvcm1hdCwgIm9wZW50eXBlIikKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQogICAgICAg
ICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3JtYXQsICJ3b2ZmMiIpCiAjaWYg
RU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZm9ybWF0LCAid29mZjItdmFyaWF0aW9ucyIpCiAjZW5kaWYKLSNlbmRpZgogI2lm
IEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGZvcm1hdCwgIndvZmYtdmFyaWF0aW9ucyIpCiAgICAgICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGZvcm1hdCwgInRydWV0eXBlLXZhcmlhdGlvbnMiKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5t
bQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTQgKzE0NCw3IEBAIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoKICAgICBpZiAoIXdpZGdldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDAKICAgICByZXR1cm4gW3NjcmVlbih3aWRnZXQpIGNhblJlcHJlc2VudERpc3Bs
YXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKLSNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0g
c2NyZWVuQ29sb3JTcGFjZSh3aWRnZXQpOwotICAgIGF1dG8gaWNjRGF0YSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ29weUlDQ1Byb2ZpbGUoY29sb3JTcGFjZSkpOwotICAgIGF1dG8gcHJvZmlsZSA9
IGFkb3B0Q0YoQ29sb3JTeW5jUHJvZmlsZUNyZWF0ZShpY2NEYXRhLmdldCgpLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIHByb2ZpbGUgJiYgQ29sb3JTeW5jUHJvZmlsZUlzV2lkZUdhbXV0KHByb2Zp
bGUuZ2V0KCkpOwotI2VuZGlmCiB9CiAKIEZsb2F0UmVjdCB0b1VzZXJTcGFjZShjb25zdCBOU1Jl
Y3QmIHJlY3QsIE5TV2luZG93ICpkZXN0aW5hdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0JKHJldmlzaW9uIDIyNzQ1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHNjcm9s
bGJhckNvbnRyb2xTaXoKIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6ZGlkQ3JlYXRlU2Nyb2xs
ZXJJbXAoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBOU1Njcm9sbGVySW1wICpzY3JvbGxlckltcCA9IHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsZXJJbXApOwogICAgIHNjcm9sbGVySW1wLnVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBzY3JvbGxiYXIuc2Nyb2xsYWJsZUFyZWEoKS5zaG91
bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgPyBOU1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkxlZnRUb1JpZ2h0OwpAQCAtMTk1LDcgKzE5NSw3IEBAIE5TU2Nyb2xsZXJJbXAgKlNjcm9sbGJh
clRoZW1lTWFjOjpwYWludGUKIAogYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aXNMYXlvdXREaXJl
Y3Rpb25SVEwoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorI2lmIFBMQVRGT1JNKE1B
QykKICAgICBOU1Njcm9sbGVySW1wICpzY3JvbGxlckltcCA9IHBhaW50ZXJGb3JTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsZXJJbXApOwogICAgIHJldHVybiBzY3JvbGxl
ckltcC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IE5TVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQkocmV2aXNpb24gMjI3NDU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsMTEgKzg2Nyw3IEBAIHZvaWQg
VGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIEMKIAogYm9vbCBUaGVtZU1hYzo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKIHsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMAogICAgIHJldHVybiBbW05TV29ya3NwYWNlIHNoYXJlZFdv
cmtzcGFjZV0gYWNjZXNzaWJpbGl0eURpc3BsYXlTaG91bGRSZWR1Y2VNb3Rpb25dOwotI2Vsc2UK
LSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQog
ICAgICAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpwYXJ0aXRpb25WYWx1ZSBmb3JLZXk6
KE5TU3RyaW5nICopX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5IGluUmVxdWVzdDpuc1JlcXVlc3Rd
OwogICAgIH0KIAotI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNM
b2NhbEZpbGUoKSkgewogICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKICAgICAgICAgaWYg
KCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDMyICsyMzIsNiBAQCB2b2lkIGZpbmRFbmRXb3JkQm91bmRhcnkoU3Ry
aW5nVmlldyB0ZXh0CiBpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFN0cmluZ1ZpZXcgdGV4dCwg
aW50IHBvc2l0aW9uLCBib29sIGZvcndhcmQpCiB7ICAgCiAjaWYgVVNFKEFQUEtJVCkKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwCi0gICAgaWYgKCF0ZXh0Lmxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXRleHQuaXM4Qml0KCkgJiYgIWZv
cndhcmQpIHsKLSAgICAgICAgaW50IGNodW5rU2l6ZSA9IDI1NjsKLSAgICAgICAgaW50IGRlY3Jl
bWVudCA9IGNodW5rU2l6ZSAvIDI7Ci0gICAgICAgIGZvciAoaW50IHN0YXJ0UG9zaXRpb24gPSBz
dGQ6Om1heCgwLCBwb3NpdGlvbiAtIGNodW5rU2l6ZSk7IHN0YXJ0UG9zaXRpb24gPiAtZGVjcmVt
ZW50OyBzdGFydFBvc2l0aW9uIC09IGRlY3JlbWVudCkgewotICAgICAgICAgICAgaW50IGxlbmd0
aDsKLSAgICAgICAgICAgIGlmIChzdGFydFBvc2l0aW9uIDwgMCkgewotICAgICAgICAgICAgICAg
IGxlbmd0aCA9IGNodW5rU2l6ZSArIHN0YXJ0UG9zaXRpb247Ci0gICAgICAgICAgICAgICAgc3Rh
cnRQb3NpdGlvbiA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBsZW5n
dGggPSBzdGQ6Om1pbihjaHVua1NpemUsIHBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbik7Ci0gICAg
ICAgICAgICBpZiAobGVuZ3RoID4gMSAmJiBVMTZfSVNfTEVBRCh0ZXh0W3N0YXJ0UG9zaXRpb24g
KyBsZW5ndGggLSAxXSkgJiYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFydFBvc2l0aW9uICsg
bGVuZ3RoKSA8IHRleHQubGVuZ3RoKCkpICYmIFUxNl9JU19UUkFJTCh0ZXh0W3N0YXJ0UG9zaXRp
b24gKyBsZW5ndGhdKSkgewotICAgICAgICAgICAgICAgICsrc3RhcnRQb3NpdGlvbjsKLSAgICAg
ICAgICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0cmluZ1Zp
ZXcgc2hvcnRUZXh0KHRleHQuY2hhcmFjdGVyczE2KCkgKyBzdGFydFBvc2l0aW9uLCBsZW5ndGgp
OwotICAgICAgICAgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OnNob3J0VGV4dC5jcmVhdGVOU1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCldKTsKLSAgICAg
ICAgICAgIGludCByZXN1bHQgPSBbYXR0cmlidXRlZFN0cmluZyBuZXh0V29yZEZyb21JbmRleDps
ZW5ndGggZm9yd2FyZDpmb3J3YXJkXTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgKHJlc3Vs
dCAhPSAxIHx8ICFVMTZfSVNfVFJBSUwoc2hvcnRUZXh0WzBdKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXJ0UG9zaXRpb24gKyByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotI2VuZGlmCiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQuY3Jl
YXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpXTsKICAgICBpbnQgcmVzdWx0ID0gW2F0
dHJpYnV0ZWRTdHJpbmcgbmV4dFdvcmRGcm9tSW5kZXg6cG9zaXRpb24gZm9yd2FyZDpmb3J3YXJk
XTsKICAgICBbYXR0cmlidXRlZFN0cmluZyByZWxlYXNlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9u
IDIyNzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGEKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CiB7CiAvLyBS
VEwgU2Nyb2xsYmFycyByZXF1aXJlIHNvbWUgc3lzdGVtIHN1cHBvcnQsIGFuZCB0aGlzIHN5c3Rl
bSBzdXBwb3J0IGRvZXMgbm90IGV4aXN0IG9uIGNlcnRhaW4gdmVyc2lvbnMgb2YgT1MgWC4gaU9T
IHVzZXMgYSBzZXBhcmF0ZSBtZWNoYW5pc20uCi0jaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxMjAwKQorI2lm
IFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHN3aXRjaCAoc2V0
dGluZ3MoKS51c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLm1tCShyZXZpc2lvbiAyMjc0NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDggQEAg
Ym9vbCBJbnRlcm5hbHM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbgogewogI2lmIFBMQVRGT1JN
KElPUykKICAgICByZXR1cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkKCk7
Ci0jZWxpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMjAwCi0gICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBhY2Nl
c3NpYmlsaXR5RGlzcGxheVNob3VsZFJlZHVjZU1vdGlvbl07CiAjZWxzZQotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIGFjY2Vzc2li
aWxpdHlEaXNwbGF5U2hvdWxkUmVkdWNlTW90aW9uXTsKICNlbmRpZgogfQogI2VuZGlmCg==
</data>
<flag name="review"
          id="351077"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>