<?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>82970</bug_id>
          
          <creation_ts>2012-04-02 16:36:26 -0700</creation_ts>
          <short_desc>Move correction panel related functions from EditorClient into separated AlternativeTextClient class.</short_desc>
          <delta_ts>2012-04-05 11:18:07 -0700</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>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.7</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>
          <dependson>82942</dependson>
          <blocked>82503</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jia Pu">jiapu.mail</reporter>
          <assigned_to name="Jia Pu">jiapu.mail</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>593997</commentid>
    <comment_count>0</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-02 16:36:26 -0700</bug_when>
    <thetext>These functions are only used on OSX. This change is based on feedback in bug 82503.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594016</commentid>
    <comment_count>1</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-02 16:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/11170898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596099</commentid>
    <comment_count>2</comment_count>
      <attachid>135722</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-04 16:52:37 -0700</bug_when>
    <thetext>Created attachment 135722
Patch (v1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596126</commentid>
    <comment_count>3</comment_count>
      <attachid>135722</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-04-04 17:17:39 -0700</bug_when>
    <thetext>Comment on attachment 135722
Patch (v1).

Attachment 135722 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12335027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596139</commentid>
    <comment_count>4</comment_count>
      <attachid>135730</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-04 17:37:27 -0700</bug_when>
    <thetext>Created attachment 135730
Fixing build on various platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596143</commentid>
    <comment_count>5</comment_count>
      <attachid>135730</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-04 17:43:14 -0700</bug_when>
    <thetext>Comment on attachment 135730
Fixing build on various platforms.

Attachment 135730 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12335045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596160</commentid>
    <comment_count>6</comment_count>
      <attachid>135730</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-04 18:05:48 -0700</bug_when>
    <thetext>Comment on attachment 135730
Fixing build on various platforms.

Attachment 135730 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12335049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596193</commentid>
    <comment_count>7</comment_count>
      <attachid>135730</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-04 18:28:09 -0700</bug_when>
    <thetext>Comment on attachment 135730
Fixing build on various platforms.

Attachment 135730 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12341064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596317</commentid>
    <comment_count>8</comment_count>
      <attachid>135760</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-04 23:05:58 -0700</bug_when>
    <thetext>Created attachment 135760
Patch (V2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596323</commentid>
    <comment_count>9</comment_count>
      <attachid>135760</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-04 23:16:58 -0700</bug_when>
    <thetext>Comment on attachment 135760
Patch (V2)

Attachment 135760 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12335159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596329</commentid>
    <comment_count>10</comment_count>
      <attachid>135760</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-04 23:25:27 -0700</bug_when>
    <thetext>Comment on attachment 135760
Patch (V2)

Attachment 135760 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12341164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596330</commentid>
    <comment_count>11</comment_count>
      <attachid>135760</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-04 23:26:58 -0700</bug_when>
    <thetext>Comment on attachment 135760
Patch (V2)

Attachment 135760 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12337157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596346</commentid>
    <comment_count>12</comment_count>
      <attachid>135767</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-05 00:10:51 -0700</bug_when>
    <thetext>Created attachment 135767
Fixing build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596348</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 00:14:15 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596354</commentid>
    <comment_count>14</comment_count>
      <attachid>135767</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-05 00:28:12 -0700</bug_when>
    <thetext>Comment on attachment 135767
Fixing build.

Attachment 135767 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12336174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596360</commentid>
    <comment_count>15</comment_count>
      <attachid>135767</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-05 00:36:18 -0700</bug_when>
    <thetext>Comment on attachment 135767
Fixing build.

Attachment 135767 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12337177</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596378</commentid>
    <comment_count>16</comment_count>
      <attachid>135776</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-05 01:06:22 -0700</bug_when>
    <thetext>Created attachment 135776
Fixing build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596384</commentid>
    <comment_count>17</comment_count>
      <attachid>135776</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-05 01:18:42 -0700</bug_when>
    <thetext>Comment on attachment 135776
Fixing build.

Attachment 135776 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12338157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596392</commentid>
    <comment_count>18</comment_count>
      <attachid>135776</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-05 01:43:10 -0700</bug_when>
    <thetext>Comment on attachment 135776
Fixing build.

Attachment 135776 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12340199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596538</commentid>
    <comment_count>19</comment_count>
      <attachid>135816</attachid>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-05 07:00:31 -0700</bug_when>
    <thetext>Created attachment 135816
Fixing build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596693</commentid>
    <comment_count>20</comment_count>
      <attachid>135816</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-04-05 10:40:06 -0700</bug_when>
    <thetext>Comment on attachment 135816
Fixing build.

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

Looks good to me. Please add the null check on the m_frame per my comment above before landing.

&gt; Source/WebCore/editing/AlternativeTextController.cpp:473
&gt; +    return m_frame-&gt;page() ? m_frame-&gt;page()-&gt;alternativeTextClient() : 0;

Should you check also that m_frame is not null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596730</commentid>
    <comment_count>21</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2012-04-05 11:18:07 -0700</bug_when>
    <thetext>Committed r113340: &lt;http://trac.webkit.org/changeset/113340&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135722</attachid>
            <date>2012-04-04 16:52:37 -0700</date>
            <delta_ts>2012-04-04 17:37:20 -0700</delta_ts>
            <desc>Patch (v1).</desc>
            <filename>bug-82970-20120404165236.patch</filename>
            <type>text/plain</type>
            <size>64922</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA0LTA0ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoZXJlJ3Mgbm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxp
dHkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5j
dGlvbnMgaW4gRWRpdG9yQ2xpZW50IGFyZSBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IE9TIFguCisg
ICAgICAgIFdlJ2QgbGlrZSB0byBtb3ZlIHRoZW0gaW50byBzZXBhcmF0ZSBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MgdG8gYXZvaWQgdXNpbmcgI2lmZGVmJ3MuIFRoaXMKKyAgICAgICAgbmV3
IGNsaWVudCBjbGFzcyB3aWxsIGFsc28gaG9sZCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgcmVsYXRl
ZCBpbnRlcmZhY2UgdGhhdCB3ZSB3aWxsIGFkZCBzb29uIGZvcgorICAgICAgICBidWcgODI1MDMu
IAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3MpOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3Jy
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9y
TW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChFbXB0eUFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbXB0eUFsdGVybmF0aXZlVGV4dENsaWVudDo6fkVtcHR5QWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5QWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RW1wdHlBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24p
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUVkaXRvckNsaWVudDo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAg
KEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFZGl0b3JDbGllbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKwogMjAxMi0w
NC0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFBhZ2luYXRl
ZCB3ZWJ2aWV3cyByZW5kZXIgbm90aGluZyBpbiB0aGVpciBndXR0ZXJzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3MzMsMTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBB
NDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3
NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8q
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlB
NjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2Ny
aXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICov
OyB9OwogCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5
QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNF
Q0NGQzNCMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJD
QTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8q
IEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFy
Z3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRUY0MThDQzExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9
OwogCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3
OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBG
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJT
dGF0ZU1hY2hpbmUuY3BwICovOyB9OwpAQCAtMTI4NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5
QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhdGljSGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
Q0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQx
OENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFy
Z3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0
MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNzcsNiArMTkzNzksNyBAQAogCQkJCUIyQjI2NDU5
MEQwMEE3N0UwMDBBQ0MxRCAvKiBjZiAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYg
LyogbWFjICovLAogCQkJCUI3MzRCMTdGMTE5Qjk4REIwMDY1ODdCRCAvKiB0cmFuc2NvZGVyICov
LAorCQkJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCAqLywKIAkJCQkzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRN
UlVDYWNoZS5oICovLAogCQkJCUIyQzNEOUYwMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuY3Bw
ICovLAogCQkJCUIyQzNEOUYxMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuaCAqLywKQEAgLTI0
NzIyLDYgKzI0NzI1LDcgQEAKIAkJCQlDRTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTA3RDMzNTYxNTJCNjMw
RTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUEwN0QzMzU4MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZv
cm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnNob3coUGFzCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZv
LnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2VUb1JlcGxhY2U7CiAgICAgbV9hbHRlcm5hdGl2
ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3Jl
YXRlKHJlcGxhY2VtZW50KTsKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0
cnVlOwotICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4
dCwgcmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIGNsaWVudCgpLT5hbHRlcm5h
dGl2ZVRleHRDbGllbnQoKS0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZl
VGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5h
bFRleHQsIHJlcGxhY2VtZW50LCBWZWN0b3I8U3RyaW5nPigpKTsKIH0KIAogdm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQpAQCAtMTk2LDcgKzE5
Niw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzcygKICAgICBtX2Fs
dGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKICAgICBtX2lzRGlzbWlzc2VkQnlF
ZGl0aW5nID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNt
aXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgICAgICBjbGllbnQo
KS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCktPmRpc21pc3NBbHRlcm5hdGl2ZShyZWFzb25Gb3JE
aXNtaXNzaW5nKTsKIH0KIAogU3RyaW5nIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21p
c3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uRm9yRGlzbWlz
c2luZykKQEAgLTIwNyw3ICsyMDcsNyBAQCBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6ZGlzbWlzCiAgICAgbV9pc0Rpc21pc3NlZEJ5RWRpdGluZyA9IHRydWU7CiAgICAgaWYgKCFj
bGllbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBjbGllbnQoKS0+
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uRm9yRGlzbWlzc2luZyk7CisgICAgcmV0
dXJuIGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKS0+ZGlzbWlzc0FsdGVybmF0aXZl
U29vbihyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBj
b25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRk
KQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBw
bHlBdXQKIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uT2ZDb3Jy
ZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24p
CiB7Ci0gICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xp
ZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOworICAg
IGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uT2ZDb3JyZWN0ZWQsIEZyYW1lU2VsZWN0
aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlIHwgRnJh
bWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7CiAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCksIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxl
Y3Rpb24oKS5lbmQoKSk7CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjp0aW1lckZpcgogICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByb290
Vmlld1JlY3RGb3JSYW5nZShtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRp
dmUuZ2V0KCkpOwogICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgY29uc3QgQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHMqIGRldGFpbHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlscyo+KG1fYWx0
ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzLmdldCgpKTsKLSAgICAgICAgICAgIGNsaWVudCgpLT5z
aG93Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0Jv
eCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwgZGV0YWlscy0+cmVwbGFjZW1l
bnRTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgICAgICAgICBjbGllbnQoKS0+YWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KCktPnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUobV9hbHRlcm5h
dGl2ZVRleHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3Jp
Z2luYWxUZXh0LCBkZXRhaWxzLT5yZXBsYWNlbWVudFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigp
KTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC0zMzYsNyArMzM2LDcgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcgogICAgICAgICBtX2FsdGVy
bmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOwogICAgICAgICBGbG9hdFJlY3QgYm91bmRp
bmdCb3ggPSByb290Vmlld1JlY3RGb3JSYW5nZShtX2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VX
aXRoQWx0ZXJuYXRpdmUuZ2V0KCkpOwogICAgICAgICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRp
dmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdp
bmFsVGV4dCwgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgY2xpZW50
KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpLT5zaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJ
bmZvLm9yaWdpbmFsVGV4dCwgdG9wU3VnZ2VzdGlvbiwgc3VnZ2VzdGlvbnMpOwogICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFRleHRDaGVja2VyQ2xpZW50
KiBBbHRlcm5hdGl2ZVRleHRDb250cm8KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBjbGll
bnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3Jy
ZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAg
Y2xpZW50KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVu
dFN0cmluZyk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IFBhc3NSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UpCkBAIC01MTYsOSArNTE2LDkgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRTcAogICAgIC8vIFNwZWxsaW5n
IGNvcnJlY3RlZCB0ZXh0IGhhcyBiZWVuIGVkaXRlZC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgd2hl
dGhlciB1c2VyIGhhcyByZXZlcnRlZCBpdCB0byBvcmlnaW5hbCB0ZXh0IG9yCiAgICAgLy8gZWRp
dGVkIGl0IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgbm90aWZ5IHNwZWxsY2hlY2tlciBhY2NvcmRp
bmdseS4KICAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb3JyZWN0ZWRP
bmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkgPT0g
Y29ycmVjdGVkKQotICAgICAgICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVj
dGlvbik7CisgICAgICAgIGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKS0+cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQs
IGNvcnJlY3Rpb24pOwogICAgIGVsc2UKLSAgICAgICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVj
dGVkLCBjb3JyZWN0aW9uKTsKKyAgICAgICAgY2xpZW50KCktPmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uRWRpdGVkLCBj
b3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAgIG1hcmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2VP
ZkNvcnJlY3Rpb24sIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXJfaAogI2RlZmluZSBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyX2gKIAorI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJU
ZXh0Q2hlY2tpbmcuaCIKQEAgLTQ5LDEyICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5B
bHRlcm5hdGl2ZVRleHREZXRhaWxzKCkgeyB9CiB9OwogCi1lbnVtIEFsdGVybmF0aXZlVGV4dFR5
cGUgewotICAgIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKLSAgICBBbHRlcm5h
dGl2ZVRleHRUeXBlUmV2ZXJzaW9uLAotICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1
Z2dlc3Rpb25zLAotfTsKLQogc3RydWN0IEFsdGVybmF0aXZlVGV4dEluZm8gewogICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRpdmU7CiAgICAgYm9vbCBpc0FjdGl2ZTsKQEAgLTY1
LDEyICs2MCw2IEBAIHN0cnVjdCBBbHRlcm5hdGl2ZVRleHRJbmZvIHsKIAogc3RydWN0IFRleHRD
aGVja2luZ1Jlc3VsdDsKIAotZW51bSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
IHsKLSAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2FuY2VsbGVkID0gMCwK
LSAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCwKLSAgICBSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0QWNjZXB0ZWQKLX07Ci0KICNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCiAvLyBUaGVzZSBiYWNrc2xhc2hlcyBhcmUgZm9yIG1ha2luZyBz
dHlsZSBjaGVja2VyIGhhcHB5LgogI2RlZmluZSBVTkxFU1NfRU5BQkxFRChmdW5jdGlvbkJvZHkp
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAko
cmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTEgKzIyLDE1IEBACiAjZGVmaW5lIFRleHRD
aGVja2luZ0hlbHBlcl9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7
CiBjbGFzcyBQb3NpdGlvbjsKK3N0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRl
eHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYg
RW1wdHlDbGllbnRzX2gKICNkZWZpbmUgRW1wdHlDbGllbnRzX2gKIAorI2luY2x1ZGUgIkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCkBA
IC00MjksNiArNDMwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgY29uc3QgVGV4dENoZWNraW5nUmVxdWVzdCYpIHsg
fQogfTsKIAorY2xhc3MgRW1wdHlBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FbXB0eUFsdGVybmF0aXZl
VGV4dENsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0
aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9OworICAgIHZpcnR1YWwg
dm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4
dCkgeyB9OworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgeyByZXR1cm4gU3RyaW5nKCk7IH07CisgICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfTsKK307CisKIGNs
YXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRW1wdHlFZGl0b3JDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTUxOCwxMyArNTI4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTaG93VW5pY29kZU1lbnUoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJD
bGllbnQ7IH0KKyAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVu
dCgpIHsgcmV0dXJuICZtX2FsdGVybmF0aXZlVGV4dENsaWVudDsgfQogCi0jaWYgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFs
dGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkg
eyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9Ci0jZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEdyYW1tYXJEZXRhaWwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCkgeyB9CkBAIC01MzUsNiArNTQwLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgbV90ZXh0Q2hlY2tl
ckNsaWVudDsKKyAgICBFbXB0eUFsdGVybmF0aXZlVGV4dENsaWVudCBtX2FsdGVybmF0aXZlVGV4
dENsaWVudDsKIH07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2lm
bmRlZiBFZGl0b3JDbGllbnRfaAogI2RlZmluZSBFZGl0b3JDbGllbnRfaAogCi0jaW5jbHVkZSAi
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlv
bi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgpA
QCAtNDMsNiArNDIsNyBAQCBPQkpDX0NMQVNTIE5TVVJMOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEFsdGVybmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsK
IGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFZGl0b3I7CkBAIC0xNDUsMTggKzE0NSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4
dENoZWNrZXIoKSA9IDA7Ci0KLSAgICBlbnVtIEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHsK
LSAgICAgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgICAgIEF1dG9jb3JyZWN0aW9uUmV2
ZXJ0ZWQKLSAgICB9OwotCi0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQotICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5
cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpID0gMDsKLSNlbmRpZgorICAgIHZpcnR1YWwgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1tYXJE
ZXRhaWwmIGRldGFpbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKyNkZWZpbmUgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKwor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgeworICAgIFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRDYW5jZWxsZWQgPSAwLAorICAgIFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHRJZ25vcmVkLAorICAgIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHRBY2NlcHRlZAorfTsKKworZW51bSBBbHRlcm5hdGl2ZVRleHRUeXBlIHsKKyAgICBBbHRl
cm5hdGl2ZVRleHRUeXBlQ29ycmVjdGlvbiA9IDAsCisgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVJl
dmVyc2lvbiwKKyAgICBBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucywKK307
CisKK2VudW0gQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgeworICAgIEF1dG9jb3JyZWN0aW9u
RWRpdGVkLAorICAgIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQKK307CisKK2NsYXNzIEFsdGVybmF0
aXZlVGV4dENsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZGlz
bWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKK307CisgICAgCit9CisKKyNlbmRpZiAv
LyBBbHRlcm5hdGl2ZVRleHRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzMjYx
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDUgQEAKKzIwMTItMDQtMDQgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGluIEVkaXRvckNsaWVudCBpbnRv
IHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRleHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxh
dGVkIGZ1bmN0aW9ucyBmcm9tIFdlYkVkaXRvckNsaWVudCB0byB0aGUgbmV3IFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC4KKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgIChQYWdlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJu
YXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21p
c3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjphbHRlcm5h
dGl2ZVRleHRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JD
bGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA0LTA0ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBpbnB1dCBkb2Vzbid0
IHdvcmsgZm9yIHNvbWUgRmxhc2ggZm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNob3dD
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNv
cmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSkg
PSAwOwogICAgIAogICAgIHZpcnR1YWwgV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTEz
MjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3MzgsNyArMzczOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNtaXNz
Q29ycmVjdGlvblBhbmUKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9u
UmVzcG9uc2UoaW50MzJfdCByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0gICAgbV9wYWdlQ2xpZW50
LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlKXJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50
U3RyaW5nKTsKKyAgICBtX3BhZ2VDbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlKXJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcs
IHJlcGxhY2VtZW50U3RyaW5nKTsKIH0KICNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9u
UGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5
bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiAxMTMy
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDg4LDEwICs0ODgsMTAgQEAgU3RyaW5nIFBhZ2VDbGllbnRJ
bXBsOjpkaXNtaXNzQ29ycmVjdGlvbgogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpy
ZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0g
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9u
c2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIE5TQ29ycmVjdGlv
blJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0
ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VF
ZGl0ZWQ7CiAgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KG1fd2tWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsK
ICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9u
UGFuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJl
Y3Rpb25QYW5lbC5oCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBL
aXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGNsYXNzIFdLVmlldzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODgzLDYgKzg4Myw4IEBACiAJCUNEQ0E4NUM5MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OwogCQlDRENBODVENTEz
MkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElP
S2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RDQTg1RUUxMzJBRDcwMTAwRTk2MURGIC8qIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRENBODVERTEzMkFEMDUzMDBFOTYxREYgLyogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKKwkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhEIC8q
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmNwcCAqLzsgfTsKKwkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8q
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovOyB9OwogCQlEM0I5NDg0NjExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
UG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovOyB9Owog
CQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAv
KiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVw
TWVudS5jcHAgKi87IH07CkBAIC0xOTM3LDYgKzE5MzksOCBAQAogCQlDRENBODVDNzEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tp
dC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURBMTJERjE1MkND
QUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBX
ZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDMxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNC
OTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc2OSw2ICsyNzczLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMxMTFBREUxMTJGNUI5QTAwMzM3QkFCIC8q
IG1hYyAqLywKKwkJCQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmNwcCAqLywKKwkJCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTMxMTJGNEZCQjAwMzM3QkFCIC8q
IFdlYkNocm9tZUNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVBIC8q
IFdlYkNocm9tZUNsaWVudC5oICovLAogCQkJCUJDMTExQTU0MTEyRjRGQkIwMDMzN0JBQiAvKiBX
ZWJDb250ZXh0TWVudUNsaWVudC5jcHAgKi8sCkBAIC00MTc4LDYgKzQxODQsNyBAQAogCQkJCTM3
NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyRTMxNTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00OTIxLDYgKzQ5MjgsNyBAQAog
CQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzNzk0ODQwMzE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVu
ZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQTEyRTIxNTJDRDFBRTAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKwor
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqIHdlYlBhZ2UpCis6IG1fcGFnZSh3ZWJQ
YWdlKQoreworfQorCitXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRJ
Z25vcmVkKSk7Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVj
dGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rpb25QYW5lbCh0eXBlLCBib3VuZGluZ0Jv
eE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0IHJlYXNvbikKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24pKTsKK30KKworU3RyaW5nIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIG1f
cGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Zv
aWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykp
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNpZm5kZWYgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKyNkZWZpbmUgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKworI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaD4KKyNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ+IGNyZWF0ZShXZWJQYWdl
KiB3ZWJQYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6YWRvcHRQdHIobmV3IFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudCh3ZWJQYWdlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYkFs
dGVybmF0aXZlVGV4dENsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFs
dGVybmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0Fs
dGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7Citw
cml2YXRlOgorICAgIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQYWdlICopOworICAgIFdl
YlBhZ2UgKm1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxMTMyNTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJFZGl0
b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5jbHVkZSAiV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgi
CkBAIC01Myw2ICs1NCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSog
cGFnZSkKKzogbV9wYWdlKHBhZ2UpCissIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6Y3JlYXRlKHBhZ2UpKQoreworfQorCiB2b2lkIFdlYkVkaXRvckNs
aWVudDo6cGFnZURlc3Ryb3llZCgpCiB7CiAgICAgZGVsZXRlIHRoaXM7CkBAIC00NTIsNCArNDU5
LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mUwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK0FsdGVybmF0aXZlVGV4dENsaWVudCogV2ViRWRpdG9yQ2xpZW50
OjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQoreworICAgIHJldHVybiBtX2FsdGVybmF0aXZlVGV4
dENsaWVudC5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE5ICsyNiwxOCBAQAogI2lmbmRlZiBXZWJFZGl0b3JDbGllbnRfaAogI2RlZmluZSBXZWJFZGl0
b3JDbGllbnRfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dENoZWNrZXJDbGllbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hl
Y2tlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2Up
Ci0gICAgICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgewotICAgIH0KKyAgICBXZWJFZGl0b3JDbGll
bnQoV2ViUGFnZSopOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVk
KCkgT1ZFUlJJREU7CkBAIC0xMjUsNiArMTI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgIE9WRVJSSURFIHsgcmV0dXJuIHRoaXM7
IH0KKyAgICBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENs
aWVudCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9j
dW1lbnQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxlYXJuV29y
ZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKQEAgLTE0MiwxNiArMTQyLDExIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKiwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdCYpIE9WRVJSSURF
OwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3MpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNv
cmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1VuaWNvZGVNZW51KCkgT1ZFUlJJREU7CiAjZW5kaWYK
ICAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgT3duUHRyPFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dD4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHJldmlzaW9uIDExMzI1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI4ICsyMzgsNCBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhCiAgICAgbV9wYWdlLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4
dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNr
VGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCi17Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Ci19Ci0KLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwotfQotCi1T
dHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3Jl
OjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKLXsKLSAgICBTdHJp
bmcgcmVzdWx0OwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9u
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJp
bmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTEzMjYxKQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0wNCAgSmlhIFB1
ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRl
ZCBmdW5jdGlvbnMgaW4gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4
dENsaWVudCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyOTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDQtMDEgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHRoZSBOZXR3
b3JrIEluZm9ybWF0aW9uIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAs
NiArMzcwLDggQEAKIAkJQ0Q4RUFDNzMxMUNBQzlBMzAwNzc0MDc1IC8qIElPS2l0LmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEVB
QzcyMTFDQUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQTYyQUUy
MTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNjJBRTAxMjVGODdDMjAwN0ZE
MTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggKi87IH07CiAJCUNEQTYyQUUzMTI1Rjg3
QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAv
KiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQTEyREIxNTJDQkU2ODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi87IH07CisJCUNFREExMkRDMTUyQ0JFNjgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJREQ3Q0RFRTcwQTIzQkE5RTAwMDY5OTI4
IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFs
LmggKi87IH07CiAJCUREODk2ODIwMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlv
bmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4
OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggKi87IH07CiAJ
CUREODk2ODIxMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREODk2ODFGMDlBQTg3
MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLzsgfTsKQEAgLTY5OSw2ICs3
MDEsOCBAQAogCQlDRDhFQUM3MjExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CiAJCUNEQTYyQUUwMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQx
MTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5
OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5
NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlv
bmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjk0LDYgKzEyOTgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5l
bC5oICovLAogCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwu
bW0gKi8sCisJCQkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5tbSAqLywKKwkJCQlDRURBMTJEQTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQjY4MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdl
YkFwcGxpY2F0aW9uQ2FjaGUuaCAqLywKIAkJCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyog
V2ViQXBwbGljYXRpb25DYWNoZS5tbSAqLywKIAkJCQlBNURFRkMxMTExRDUzNDRCMDA4ODUyNzMg
LyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oICovLApAQCAtMTY0Myw2ICsxNjQ5
LDcgQEAKIAkJCQk0MUY0NDg0RjEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1ByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3Rp
ZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU5MTRFNDgyMTUwMDdDQ0ExOCAv
KiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyREMx
NTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMDMwLDYgKzIwMzcsNyBAQAogCQkJCUJDMkU0NjRFMEZEOEE5NjgwMEE5RDlERSAv
KiBXZWJWaWV3RGF0YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQ0ODUwMTAzMzhFOEMwMDMw
RTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMkUyRkU2
MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTMyNjEpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0wNC0wNCAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgaW4gRWRpdG9yQ2xpZW50IGludG8g
c2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4dENsaWVudCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0
ZWQgZnVuY3Rpb25zIGZyb20gV2ViRWRpdG9yQ2xpZW50IHRvIHRoZSBuZXcgV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LgorICAgICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIGRldGFpbHMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQubW06IEFkZGVkLgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24pOgorICAgICAgICAoV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OldlYkVk
aXRvckNsaWVudCk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6On5XZWJFZGl0b3JDbGllbnQp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAy
MDEyLTAzLTE1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1
bGwgU2NyZWVuIG1vZGUgc2hvdWxkIGNhbmNlbCBiZWZvcmUgbmF2aWdhdGlvbi4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5o
CShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9D
b3JyZWN0aW9uUGFuZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEyIEBACiAjaWZu
ZGVmIENvcnJlY3Rpb25QYW5lbF9oCiAjZGVmaW5lIENvcnJlY3Rpb25QYW5lbF9oCiAKLSNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9BbHRl
cm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVT
RShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIENvcnJl
Y3Rpb25QYW5lbCB7CkBAIC01Myw2ICs1NCw2IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBtX3Jlc3VsdEZvckRpc21pc3NhbDsKIH07CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisjZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogCiAjZW5kaWYgLy8gQ29ycmVj
dGlvblBhbmVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJl
Y3Rpb25QYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9Db3JyZWN0aW9uUGFuZWwubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
ZWJWaWV3UHJpdmF0ZS5oIgogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2lmIFVTRShBVVRPQ09SUkVDVElP
Tl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgaW5saW5lIE5TQ29y
cmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVU
ZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlKQpAQCAtMTM3LDUgKzEzNyw1IEBAIHZvaWQgQ29y
cmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGwKICAgICAgICAgbV9yZXN1bHRGb3JEaXNt
aXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5XSk7CiB9CiAKLSNlbmRpZiAv
LyAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCisjZW5kaWYgLy9VU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnRfaAorI2RlZmluZSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW1wb3J0ICJDb3Jy
ZWN0aW9uUGFuZWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+
CisjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgorCitAY2xhc3MgV2ViVmlldzsKKworY2xhc3Mg
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4
dENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50PiBjcmVhdGUoV2ViVmlldyogd2ViVmlldykKKyAgICB7CisgICAgICAgIHJldHVy
biBXVEY6OmFkb3B0UHRyKG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQod2ViVmlldykpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpIE9WRVJSSURFOworcHJpdmF0ZToKKyAgICBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQoV2ViVmlldyAqKTsKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CisjaWYgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKQorICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsK
KyNlbmRpZgorfTsKKworI2VuZGlmIC8vIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQorOiBt
X3dlYlZpZXcod2ViVmlldykKK3sKK30KKworV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+V2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
CisgICAgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHRJZ25vcmVkKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6
c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93ZWJWaWV3
LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUoUmVh
c29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7CisjaWYgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uKTsK
KyNlbmRpZgorfQorCitTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0
ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQor
eworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICByZXR1cm4gbV9jb3JyZWN0aW9u
UGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2Vsc2UKK3JldHVybiBTdHJpbmcoKTsKKyNlbmRpZgor
fQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7
CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIE5TQ29ycmVjdGlvblJlc3BvbnNl
IHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0Nv
cnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CitD
b3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCBy
ZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKKyNlbmRpZgorfQpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBA
CiAgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogRVhQUkVTUyBPUiBJTVBMQEBJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECiAgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiAgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCiAgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwpAQCAtMjcsMTMgKzI3LDE0IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW1wb3J0IDx3dGYv
Rm9yd2FyZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rv
ci5oPgogCitjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBAY2xhc3MgV2ViVmlldzsK
IEBjbGFzcyBXZWJFZGl0b3JVbmRvVGFyZ2V0OwogCkBAIC05Niw2ICs5Nyw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgT1ZFUlJJREUg
eyByZXR1cm4gdGhpczsgfQorICAgIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9u
ZFRvQ2hhbmdlZENvbnRlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsKQEAgLTEzNiwxMiAr
MTM4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wg
ZW5hYmxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
cXVlc3QmKSBPVkVSUklERTsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dD
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcg
ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURF
OwotI2VuZGlmCiBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVbmRvT3JSZWRvU3RlcChQYXNz
UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiwgYm9vbCBpc1JlZG8pOwogICAgIFdlYkVkaXRvckNs
aWVudCgpOwpAQCAtMTQ5LDggKzE0NSw1IEBAIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJW
aWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiAg
ICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnM7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAg
Q29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOwotI2VuZGlmCisgICAgT3duUHRyPFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudD4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiB9OwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW1wb3J0ICJET01IVE1MVGV4dEFyZWFFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAi
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcmNoaXZlLmgiCiAjaW1w
b3J0ICJXZWJEYXRhU291cmNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoaW5nLmgiCkBAIC0xODQsMTQgKzE4NSwxMiBAQCBXZWJFZGl0b3JDbGllbnQ6
OldlYkVkaXRvckNsaWVudChXZWJWaWV3CiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICAgICAs
IG1fdW5kb1RhcmdldChbW1tXZWJFZGl0b3JVbmRvVGFyZ2V0IGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV0pCiAgICAgLCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnMoZmFsc2UpCisgICAgLCBtX2Fs
dGVybmF0aXZlVGV4dENsaWVudChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmNyZWF0ZSh3ZWJW
aWV3KSkKIHsKIH0KIAogV2ViRWRpdG9yQ2xpZW50Ojp+V2ViRWRpdG9yQ2xpZW50KCkKIHsKLSNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCi0gICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKQEAgLTg2NiwyOSArODY1
LDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaQogICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdy
YW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOwog
fQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9u
UGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSBwYW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCi17Ci0gICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hv
dyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKTsKLX0KLQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQot
ewotICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7Ci19
Ci0KLVN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uRm9yRGlzbWlzc2luZykKLXsK
LSAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5n
KTsKLX0KLQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcpCi17Ci0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5
cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9u
UmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJl
Y3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3Bv
bnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOwotfQotI2VuZGlmCi0KIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNv
bnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCiB7CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoTWlzc3BlbGxlZFdvcmQ6bWlz
c3BlbGxlZFdvcmRdOwpAQCAtOTQwLDYgKzkxNiwxMSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
c2V0SW5wdXRNZXRob2RTdGF0CiB7CiB9CiAKK0FsdGVybmF0aXZlVGV4dENsaWVudCogV2ViRWRp
dG9yQ2xpZW50OjphbHRlcm5hdGl2ZVRleHRDbGllbnQoKQoreworICAgIHJldHVybiBtX2FsdGVy
bmF0aXZlVGV4dENsaWVudC5nZXQoKTsKK30KKwogI2lmbmRlZiBCVUlMRElOR19PTl9MRU9QQVJE
CiBAaW50ZXJmYWNlIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgOiBOU09iamVjdAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135730</attachid>
            <date>2012-04-04 17:37:27 -0700</date>
            <delta_ts>2012-04-04 23:05:54 -0700</delta_ts>
            <desc>Fixing build on various platforms.</desc>
            <filename>bug-82970-20120404173724.patch</filename>
            <type>text/plain</type>
            <size>63363</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA0LTA0ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHNpbmNlIHRoZXJlJ3Mgbm8gY2hhbmdlIG9mIGZ1bmN0aW9uYWxp
dHkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5j
dGlvbnMgaW4gRWRpdG9yQ2xpZW50IGFyZSBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IE9TIFguCisg
ICAgICAgIFdlJ2QgbGlrZSB0byBtb3ZlIHRoZW0gaW50byBzZXBhcmF0ZSBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MgdG8gYXZvaWQgdXNpbmcgI2lmZGVmJ3MuIFRoaXMKKyAgICAgICAgbmV3
IGNsaWVudCBjbGFzcyB3aWxsIGFsc28gaG9sZCBkaWN0YXRpb24gYWx0ZXJuYXRpdmUgcmVsYXRl
ZCBpbnRlcmZhY2UgdGhhdCB3ZSB3aWxsIGFkZCBzb29uIGZvcgorICAgICAgICBidWcgODI1MDMu
IAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3MpOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVkU3BlbGxDb3Jy
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRp
bWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNlRm9y
TW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUVkaXRvckNsaWVudDo6YWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAg
KiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFZGl0
b3JDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChBbHRlcm5hdGl2ZVRleHRD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+QWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KToKKwogMjAxMi0wNC0wNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFBhZ2luYXRlZCB3ZWJ2aWV3cyByZW5kZXIgbm90aGluZyBpbiB0
aGVpciBndXR0ZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3MzMs
MTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
MDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0NGMTUy
QjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJ
Q0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUy
QjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0UwOEMzRDIxNTJCNTk5QTAw
MjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTU0
RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUEzOTQ5QzExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBT
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFz
aFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0NGQzNCMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5j
ZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4
dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFRjQxOENFMTE3
OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzExNzk2NzhDMDA5RDExMkMgLyog
Vmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMg
LyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQw
MDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDAwRUJBMDExQkRB
RkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovOyB9OwpAQCAtMTI4
NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFz
aFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFREEx
MkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWV3
cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENE
MTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2Fk
ZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkzNzcs
NiArMTkzNzksNyBAQAogCQkJCUIyQjI2NDU5MEQwMEE3N0UwMDBBQ0MxRCAvKiBjZiAqLywKIAkJ
CQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFjICovLAogCQkJCUI3MzRCMTdGMTE5Qjk4
REIwMDY1ODdCRCAvKiB0cmFuc2NvZGVyICovLAorCQkJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4
RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLywKIAkJCQkzN0M2MUYwMDEyMDk1Qzg3MDA3
QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovLAogCQkJCUIyQzNEOUYwMEQw
MDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuY3BwICovLAogCQkJCUIyQzNEOUYxMEQwMDZDMUQwMEVG
NkYyNiAvKiBCYXNlNjQuaCAqLywKQEAgLTI0NzIyLDYgKzI0NzI1LDcgQEAKIAkJCQlDRTA4QzNE
MjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTA3RDMzNTYxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVj
aXNpb25Gb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwN0QzMzU4MTUyQjYzMkQwMDFCNjM5
MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VE
QTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnNob3coUGFz
CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlID0gcmFuZ2VU
b1JlcGxhY2U7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmRldGFpbHMgPSBBdXRvY29ycmVj
dGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKHJlcGxhY2VtZW50KTsKICAgICBtX2FsdGVy
bmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAgIGNsaWVudCgpLT5zaG93Q29ycmVj
dGlvblBhbmVsKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRl
cm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwgcmVwbGFjZW1lbnQsIFZlY3RvcjxTdHJpbmc+
KCkpOworICAgIGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRDbGllbnQoKS0+c2hvd0NvcnJlY3Rp
b25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHJlcGxhY2VtZW50LCBWZWN0b3I8U3Ry
aW5nPigpKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpoYW5kbGVDYW5j
ZWxPcGVyYXRpb24oKQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6ZGlzbWlzcygKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBm
YWxzZTsKICAgICBtX2lzRGlzbWlzc2VkQnlFZGl0aW5nID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50
KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbkZvckRp
c21pc3NpbmcpOworICAgICAgICBjbGllbnQoKS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCktPmRp
c21pc3NBbHRlcm5hdGl2ZShyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0KIAogU3RyaW5nIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRl
cm5hdGl2ZVRleHQgcmVhc29uRm9yRGlzbWlzc2luZykKQEAgLTIwNyw3ICsyMDcsNyBAQCBTdHJp
bmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzCiAgICAgbV9pc0Rpc21pc3NlZEJ5
RWRpdGluZyA9IHRydWU7CiAgICAgaWYgKCFjbGllbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIHJldHVybiBjbGllbnQoKS0+ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVh
c29uRm9yRGlzbWlzc2luZyk7CisgICAgcmV0dXJuIGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRD
bGllbnQoKS0+ZGlzbWlzc0FsdGVybmF0aXZlU29vbihyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0K
IAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGU+JiBtYXJrZXJUeXBlc1RvQWRkKQpAQCAtMjg2LDcgKzI4Niw3IEBAIGJvb2wgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlBdXQKIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uT2ZDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVk
LCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24pCiB7Ci0gICAgY2xpZW50KCktPnJlY29yZEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBj
b3JyZWN0ZWQsIGNvcnJlY3Rpb24pOworICAgIGNsaWVudCgpLT5hbHRlcm5hdGl2ZVRleHRDbGll
bnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJldmVydGVk
LCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwogICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0
aW9uT2ZDb3JyZWN0ZWQsIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0
aW9uOjpDbGVhclR5cGluZ1N0eWxlIHwgRnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRy
aWdnZXJlZCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9mcmFt
ZS0+ZG9jdW1lbnQoKSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCks
IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5lbmQoKSk7CkBAIC0zMTcsNyArMzE3
LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcgogICAgICAgICBG
bG9hdFJlY3QgYm91bmRpbmdCb3ggPSByb290Vmlld1JlY3RGb3JSYW5nZShtX2FsdGVybmF0aXZl
VGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUuZ2V0KCkpOwogICAgICAgICBpZiAoIWJvdW5k
aW5nQm94LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY29uc3QgQXV0b2NvcnJlY3Rpb25BbHRl
cm5hdGl2ZURldGFpbHMqIGRldGFpbHMgPSBzdGF0aWNfY2FzdDxjb25zdCBBdXRvY29ycmVjdGlv
bkFsdGVybmF0aXZlRGV0YWlscyo+KG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5kZXRhaWxzLmdldCgp
KTsKLSAgICAgICAgICAgIGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRp
dmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdp
bmFsVGV4dCwgZGV0YWlscy0+cmVwbGFjZW1lbnRTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSk7
CisgICAgICAgICAgICBjbGllbnQoKS0+YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCktPnNob3dDb3Jy
ZWN0aW9uQWx0ZXJuYXRpdmUobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94
LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0LCBkZXRhaWxzLT5yZXBsYWNlbWVu
dFN0cmluZygpLCBWZWN0b3I8U3RyaW5nPigpKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAg
YnJlYWs7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
Ojp0aW1lckZpcgogICAgICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVl
OwogICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByb290Vmlld1JlY3RGb3JSYW5nZSht
X2FsdGVybmF0aXZlVGV4dEluZm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUuZ2V0KCkpOwogICAgICAg
ICBpZiAoIWJvdW5kaW5nQm94LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNsaWVudCgpLT5zaG93
Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBib3VuZGluZ0JveCwg
bV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwgdG9wU3VnZ2VzdGlvbiwgc3VnZ2Vz
dGlvbnMpOworICAgICAgICAgICAgY2xpZW50KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpLT5z
aG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBlLCBib3Vu
ZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwgdG9wU3VnZ2VzdGlv
biwgc3VnZ2VzdGlvbnMpOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDc3LDcg
KzQ3Nyw3IEBAIFRleHRDaGVja2VyQ2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm8KIAogdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykKIHsKLSAgICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5n
LCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgY2xpZW50KCktPmFsdGVybmF0aXZlVGV4dENsaWVu
dCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQs
IHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIFBhc3NSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50
UmFuZ2UpCkBAIC01MTYsOSArNTE2LDkgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZWNvcmRTcAogICAgIC8vIFNwZWxsaW5nIGNvcnJlY3RlZCB0ZXh0IGhhcyBiZWVuIGVkaXRl
ZC4gV2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciB1c2VyIGhhcyByZXZlcnRlZCBpdCB0byBv
cmlnaW5hbCB0ZXh0IG9yCiAgICAgLy8gZWRpdGVkIGl0IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQg
bm90aWZ5IHNwZWxsY2hlY2tlciBhY2NvcmRpbmdseS4KICAgICBpZiAobWFya2Vyc0hhdmVJZGVu
dGljYWxEZXNjcmlwdGlvbihjb3JyZWN0ZWRPbmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1h
cmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkgPT0gY29ycmVjdGVkKQotICAgICAgICBjbGllbnQoKS0+
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9u
UmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CisgICAgICAgIGNsaWVudCgpLT5hbHRl
cm5hdGl2ZVRleHRDbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29y
cmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAgIGVsc2UKLSAgICAg
ICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpB
dXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAgICAgICAgY2xp
ZW50KCktPmFsdGVybmF0aXZlVGV4dENsaWVudCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKEF1dG9jb3JyZWN0aW9uRWRpdGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwogICAgIG1h
cmtlcnMtPnJlbW92ZU1hcmtlcnMocmFuZ2VPZkNvcnJlY3Rpb24sIERvY3VtZW50TWFya2VyOjpB
dXRvY29ycmVjdGVkLCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OlJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXJfaAogI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyX2gKIAorI2luY2x1ZGUgIkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKQEAgLTQ5LDEyICs1MCw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BbHRlcm5hdGl2ZVRleHREZXRhaWxzKCkgeyB9CiB9
OwogCi1lbnVtIEFsdGVybmF0aXZlVGV4dFR5cGUgewotICAgIEFsdGVybmF0aXZlVGV4dFR5cGVD
b3JyZWN0aW9uID0gMCwKLSAgICBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uLAotICAgIEFs
dGVybmF0aXZlVGV4dFR5cGVTcGVsbGluZ1N1Z2dlc3Rpb25zLAotfTsKLQogc3RydWN0IEFsdGVy
bmF0aXZlVGV4dEluZm8gewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VXaXRoQWx0ZXJuYXRpdmU7
CiAgICAgYm9vbCBpc0FjdGl2ZTsKQEAgLTY1LDEyICs2MCw2IEBAIHN0cnVjdCBBbHRlcm5hdGl2
ZVRleHRJbmZvIHsKIAogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIAotZW51bSBSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHsKLSAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0Q2FuY2VsbGVkID0gMCwKLSAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0SWdub3JlZCwKLSAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
QWNjZXB0ZWQKLX07Ci0KICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAvLyBUaGVzZSBi
YWNrc2xhc2hlcyBhcmUgZm9yIG1ha2luZyBzdHlsZSBjaGVja2VyIGhhcHB5LgogI2RlZmluZSBV
TkxFU1NfRU5BQkxFRChmdW5jdGlvbkJvZHkpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIs
MTEgKzIyLDE1IEBACiAjZGVmaW5lIFRleHRDaGVja2luZ0hlbHBlcl9oCiAKICNpbmNsdWRlICJF
ZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVGV4
dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7CiBjbGFzcyBQb3NpdGlvbjsKK3N0cnVjdCBUZXh0
Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJsaWM6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxMTMyNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgRW1wdHlDbGllbnRzX2gKICNkZWZpbmUgRW1wdHlD
bGllbnRzX2gKIAorI2luY2x1ZGUgIkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCkBAIC01MTksMTIgKzUyMCw2IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuICZtX3Rl
eHRDaGVja2VyQ2xpZW50OyB9CiAKLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCi0gICAg
dmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChS
ZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSB7IH0KLSAgICB2aXJ0dWFsIFN0cmlu
ZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0KSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KLSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRl
dGFpbCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxs
ZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdV
SShib29sKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24g
MTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2lmbmRlZiBFZGl0b3JDbGllbnRfaAogI2RlZmluZSBF
ZGl0b3JDbGllbnRfaAogCi0jaW5jbHVkZSAiQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgpAQCAtNDMsNiArNDIsNyBAQCBPQkpDX0NMQVNTIE5T
VVJMOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFsdGVybmF0aXZlVGV4dENsaWVu
dDsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBFZGl0b3I7CkBAIC0xNDUsMTggKzE0NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmly
dHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSA9IDA7Ci0KLSAgICBlbnVtIEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHsKLSAgICAgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQs
Ci0gICAgICAgIEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQKLSAgICB9OwotCi0jaWYgVVNFKEFVVE9D
T1JSRUNUSU9OX1BBTkVMKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFs
dGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y21lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50
U3RyaW5ncykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKLSNlbmRpZgorICAgIHZp
cnR1YWwgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSB7IHJl
dHVybiAwOyB9OwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25z
dCBTdHJpbmcmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0FsdGVy
bmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0FsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFsdGVybmF0aXZlVGV4dENsaWVudF9o
CisjZGVmaW5lIEFsdGVybmF0aXZlVGV4dENsaWVudF9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0IHsKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2Fu
Y2VsbGVkID0gMCwKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3Jl
ZCwKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0QWNjZXB0ZWQKK307CisK
K2VudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7CisgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZUNvcnJl
Y3Rpb24gPSAwLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24sCisgICAgQWx0ZXJu
YXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnMsCit9OworCitlbnVtIEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHsKKyAgICBBdXRvY29ycmVjdGlvbkVkaXRlZCwKKyAgICBBdXRvY29y
cmVjdGlvblJldmVydGVkCit9OworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0aXZlVGV4dENsaWVudCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nKSA9IDA7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI2MSkKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA0LTA0ICBK
aWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCBy
ZWxhdGVkIGZ1bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODI5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBX
ZWJFZGl0b3JDbGllbnQgdG8gdGhlIG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuCisgICAg
ICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Ojp+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2
ZVNvb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0KToKKwogMjAxMi0wNC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFRleHQgaW5wdXQgZG9lc24ndCB3b3JrIGZvciBzb21lIEZsYXNo
IGZvcm1zCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9u
IDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9F
ZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0xODgsNyArMTg4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2Vi
Q29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVu
dDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9s
bGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpID0gMDsKICAgICAKICAgICB2aXJ0
dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzM4LDcg
KzM3MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVz
cG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZSgoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSlyZXNw
b25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgbV9wYWdl
Q2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSlyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CiB9CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpOwogICAgIHZpcnR1
YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNw
b25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKIAogICAg
IHZpcnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3Qg
bmV3U3R5bGUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ4OCwxMCArNDg4LDEwIEBAIFN0cmluZyBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rp
b24KICNlbmRpZgogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9u
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7
CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIE5TQ29ycmVjdGlv
blJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVudDo6QXV0b2Nv
cnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJl
Y3Rpb25SZXNwb25zZUVkaXRlZDsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9
IHJlc3BvbnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVz
cG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwogICAgIENvcnJlY3Rp
b25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3drVmlldywgcmVzcG9uc2Us
IHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaAkocmV2aXNp
b24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFu
ZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIEBjbGFzcyBXS1ZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTg4Myw2ICs4ODMsOCBAQAogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0RDQTg1RDUxMzJBQzJCMzAwRTk2MURGIC8qIElP
S2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07
CiAJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
QTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0g
Ki87IH07CisJCUNFREExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAg
Ki87IH07CisJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
REExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsg
fTsKIAkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1
MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5o
ICovOyB9OwogCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0
ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovOyB9OwpAQCAt
MTkzNyw2ICsxOTM5LDggQEAKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdv
cms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUNE
Q0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyREUx
NTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQ
b3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI3NjksNiArMjc3Myw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUJDMTExQURFMTEyRjVCOUEwMDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJQ0VEQTEy
REYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8sCisJ
CQkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
ICovLAogCQkJCUJDMTExQTUzMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJDaHJvbWVDbGllbnQuY3Bw
ICovLAogCQkJCUJDMDMyRDYwMTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAq
LywKIAkJCQlCQzExMUE1NDExMkY0RkJCMDAzMzdCQUIgLyogV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwICovLApAQCAtNDE3OCw2ICs0MTg0LDcgQEAKIAkJCQkzNzYwODgyMzE1MDQxNEY3MDBGQzgy
QzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTQ4NDA0MTUwQzM1
MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0
MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtNDkyMSw2ICs0OTI4LDcgQEAKIAkJCQkzNzYwODgyMjE1MDQxNEY3
MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0
MDMxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNFREExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENs
aWVudChXZWJQYWdlKiB3ZWJQYWdlKQorOiBtX3BhZ2Uod2ViUGFnZSkKK3sKK30KKworV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCkpOworfQorCit2b2lk
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRl
cm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3MpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBy
ZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKSk7Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0
ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9u
UGFuZWwocmVhc29uKSk7Cit9CisKK1N0cmluZyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRp
c21pc3NBbHRlcm5hdGl2ZVNvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCBy
ZWFzb24pCit7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShy
ZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBl
LCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpKTsKK30KKworfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudF9oCisjZGVmaW5lIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dF9oCisKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisjaW1wb3J0
IDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50PiBjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXVEY6OmFkb3B0UHRyKG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQo
d2ViUGFnZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpB
bHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Fs
dGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworcHJpdmF0ZToKKyAgICBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSAqKTsKKyAgICBXZWJQYWdlICptX3BhZ2U7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAKICNpbmNs
dWRlICJFZGl0b3JTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNTMsNiArNTQsMTIgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1dlYkVk
aXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCis6IG1fcGFnZShwYWdl
KQorLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmNy
ZWF0ZShwYWdlKSkKK3sKK30KKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnBhZ2VEZXN0cm95ZWQo
KQogewogICAgIGRlbGV0ZSB0aGlzOwpAQCAtNDUyLDQgKzQ1OSw5IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitB
bHRlcm5hdGl2ZVRleHRDbGllbnQqIFdlYkVkaXRvckNsaWVudDo6YWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KCkKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQuZ2V0KCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSArMjYsMTggQEAKICNpZm5k
ZWYgV2ViRWRpdG9yQ2xpZW50X2gKICNkZWZpbmUgV2ViRWRpdG9yQ2xpZW50X2gKIAorI2luY2x1
ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9F
ZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewogcHVibGlj
OgotICAgIFdlYkVkaXRvckNsaWVudChXZWJQYWdlKiBwYWdlKQotICAgICAgICA6IG1fcGFnZShw
YWdlKQotICAgIHsKLSAgICB9CisgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqKTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIE9WRVJSSURFOwpAQCAtMTI1
LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0
ZXh0Q2hlY2tlcigpICBPVkVSUklERSB7IHJldHVybiB0aGlzOyB9CisgICAgV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgT1ZF
UlJJREU7CkBAIC0xNDIsMTYgKzE0MiwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGNvbnN0IFdl
YkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmKSBPVkVSUklERTsKLSNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZF
UlJJREU7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFNob3dVbmljb2RlTWVudSgpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgV2ViUGFnZSogbV9wYWdl
OworICAgIE93blB0cjxXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ+IG1fYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRWRpdG9yQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzOCwyOCArMjM4LDQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrVGV4dE9mUGFyYWdyYQogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNoZWNraW5n
VHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVw
bHkocmVzdWx0cykpOwogfQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29ycmVjdGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykpOwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
IHJlYXNvbikKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24pKTsKLX0KLQotU3RyaW5nIFdlYkVkaXRvckNsaWVu
dDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCByZWFzb24pCi17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBtX3Bh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGll
bnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKLXsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmlu
ZykpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMzI2MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMDQgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGluIEVkaXRv
ckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRleHRDbGllbnQgY2xhc3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlZSBXZWJDb3JlL0No
YW5nZUxvZyBmb3IgZGV0YWlscy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDEyLTA0LTAxICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCB0aGUgTmV0d29yayBJbmZvcm1hdGlvbiBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzcwLDYgKzM3MCw4IEBACiAJCUNEOEVB
QzczMTFDQUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhFQUM3MjExQ0FDOUEzMDA3NzQwNzUg
LyogSU9LaXQuZnJhbWV3b3JrICovOyB9OwogCQlDREE2MkFFMjEyNUY4N0MyMDA3RkQxMTggLyog
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQTYyQUUwMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVu
Q29udHJvbGxlci5oICovOyB9OwogCQlDREE2MkFFMzEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVs
bFNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREE2MkFFMTEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIubW0gKi87IH07CisJCUNFREExMkRCMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRURBMTJEOTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tICovOyB9OworCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRURBMTJEQTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmggKi87IH07CiAJCUREN0NERUU3MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDdDREVF
NjBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRlcm5hbC5oICovOyB9OwogCQlERDg5Njgy
MDA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREODk2ODFFMDlBQTg3MjQwMDk3RTdG
MCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5oICovOyB9OwogCQlERDg5NjgyMTA5QUE4NzI0MDA5
N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRjA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxl
bWVudERpY3Rpb25hcnkubW0gKi87IH07CkBAIC02OTksNiArNzAxLDggQEAKIAkJQ0Q4RUFDNzIx
MUNBQzlBMzAwNzc0MDc1IC8qIElPS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9L
aXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlDREE2MkFFMDEyNUY4N0My
MDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RBNjJBRTExMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5D
b250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RnVsbFNjcmVlbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
REExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFREExMkRBMTUyQ0JFNjgw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlR5cGVzSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ4OTY4MUUwOUFBODcyNDAwOTdFN0Yw
IC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRWxlbWVudERpY3Rpb25hcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUREODk2ODFGMDlB
QTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWxlbWVudERpY3Rp
b25hcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwpAQCAtMTI5NCw2ICsxMjk4LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUI4Mjk1
OEQxMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKIAkJCQlCODI5NThE
MjEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAorCQkJCUNFREExMkQ5
MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi8sCisJCQkJ
Q0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICov
LAogCQkJCUI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmgg
Ki8sCiAJCQkJQjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUu
bW0gKi8sCiAJCQkJQTVERUZDMTExMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2Fj
aGVRdW90YU1hbmFnZXIuaCAqLywKQEAgLTE2NDMsNiArMTY0OSw3IEBACiAJCQkJNDFGNDQ4NEYx
MDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMTJFMkZFNTE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREExMkRDMTUyQ0JFNjgwMEQ5RTA4RCAvKiBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAzMCw2ICsyMDM3
LDcgQEAKIAkJCQlCQzJFNDY0RTBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0MUY0NDg1MDEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1By
aXZhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTJFMkZFNjE0RTQ4MTgyMDA3Q0NBMTggLyog
V2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQTEyREIxNTJDQkU2ODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTEzMjYxKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDQtMDQgIEpp
YSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJl
bGF0ZWQgZnVuY3Rpb25zIGluIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2
ZVRleHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFdl
YkVkaXRvckNsaWVudCB0byB0aGUgbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC4KKyAgICAg
ICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6
CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldlYkFsdGVybmF0aXZlVGV4dENs
aWVudCk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQpOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50Ojp+V2ViRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKwogMjAxMi0wMy0xNSAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2RlIHNob3Vs
ZCBjYW5jZWwgYmVmb3JlIG5hdmlnYXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaAkocmV2aXNpb24gMTEzMjUxKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMiBAQAogI2lmbmRlZiBDb3JyZWN0aW9uUGFuZWxf
aAogI2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogI2ltcG9ydCA8
QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBDb3JyZWN0aW9uUGFuZWwgewpAQCAtNTMs
NiArNTQsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9yZXN1bHRGb3JE
aXNtaXNzYWw7CiB9OwogCi0jZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2VuZGlmIC8vIFVTRShBVVRP
Q09SUkVDVElPTl9QQU5FTCkKIAogI2VuZGlmIC8vIENvcnJlY3Rpb25QYW5lbF9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVs
Lm1tCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9Db3JyZWN0aW9uUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNp
bXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKIAot
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGlubGluZSBOU0NvcnJlY3Rpb25JbmRpY2F0b3JUeXBl
IGNvcnJlY3Rpb25JbmRpY2F0b3JUeXBlKEFsdGVybmF0aXZlVGV4dFR5cGUgYWx0ZXJuYXRpdmVU
ZXh0VHlwZSkKQEAgLTEzNyw1ICsxMzcsNSBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxl
QWNjZXB0ZWRSZXBsCiAgICAgICAgIG1fcmVzdWx0Rm9yRGlzbWlzc2FsLmFkb3B0TlMoW2FjY2Vw
dGVkUmVwbGFjZW1lbnQgY29weV0pOwogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2VuZGlm
IC8vVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpZm5kZWYgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKyNkZWZpbmUgV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKworI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCisjaW1w
b3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8d3RmL1Bhc3NP
d25QdHIuaD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkFsdGVybmF0aXZlVGV4dENsaWVudD4gY3JlYXRlKFdl
YlZpZXcqIHdlYlZpZXcpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjphZG9wdFB0cihuZXcg
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHdlYlZpZXcpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNt
aXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklE
RTsKK3ByaXZhdGU6CisgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcgKik7Cisg
ICAgV2ViVmlldyogbV93ZWJWaWV3OworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAg
ICBDb3JyZWN0aW9uUGFuZWwgbV9jb3JyZWN0aW9uUGFuZWw7CisjZW5kaWYKK307CisKKyNlbmRp
ZiAvLyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViVmlldyogd2ViVmlldykKKzogbV93ZWJWaWV3KHdlYlZpZXcpCit7
Cit9CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldlYkFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCit7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIGRpc21pc3NBbHRlcm5h
dGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7CisjZW5kaWYK
K30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJu
YXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkK
KyAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1fd2ViVmlldywgdHlwZSwgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRl
cm5hdGl2ZVRleHQgcmVhc29uKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAg
ICBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbik7CisjZW5kaWYKK30KKworU3RyaW5n
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbihSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyNpZiBVU0UoQVVUT0NPUlJF
Q1RJT05fUEFORUwpCisgICAgcmV0dXJuIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29u
KTsKKyNlbHNlCityZXR1cm4gU3RyaW5nKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQoreworI2lmIFVTRShBVVRPQ09SUkVD
VElPTl9QQU5FTCkKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNl
VHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZl
cnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOworQ29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2UsIHJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAx
MTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQAogICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCiAgKgog
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIEVYUFJFU1MgT1IgSU1Q
TEBASUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAogICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQogICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQogICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKQEAgLTI3LDEzICsyNywxNCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0
ICJDb3JyZWN0aW9uUGFuZWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAorY2xhc3MgV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50OwogQGNsYXNzIFdlYlZpZXc7CiBAY2xhc3MgV2ViRWRpdG9yVW5k
b1RhcmdldDsKIApAQCAtOTYsNiArOTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFRleHRD
aGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KKyAg
ICBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdl
YkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CkBAIC0xMzYsMTIgKzEzOCw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JikgT1ZFUlJJREU7Ci0j
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
U05PV19MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRp
bmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJu
YXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKLSNlbmRpZgogcHJpdmF0ZToK
ICAgICB2b2lkIHJlZ2lzdGVyVW5kb09yUmVkb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4sIGJvb2wgaXNSZWRvKTsKICAgICBXZWJFZGl0b3JDbGllbnQoKTsKQEAgLTE0OSw4ICsx
NDUsNSBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8
V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogICAgIGJvb2wgbV9oYXZlVW5kb1Jl
ZG9PcGVyYXRpb25zOwotCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIENvcnJlY3Rpb25QYW5lbCBtX2Nv
cnJlY3Rpb25QYW5lbDsKLSNlbmRpZgorICAgIE93blB0cjxXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ+IG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDEx
MzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRE9NSFRNTFRl
eHRBcmVhRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oIgogI2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgpA
QCAtMTg0LDE0ICsxODUsMTIgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQoV2Vi
VmlldwogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoW1tbV2Vi
RWRpdG9yVW5kb1RhcmdldCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdKQogICAgICwgbV9oYXZl
VW5kb1JlZG9PcGVyYXRpb25zKGZhbHNlKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQo
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpjcmVhdGUod2ViVmlldykpCiB7CiB9CiAKIFdlYkVk
aXRvckNsaWVudDo6fldlYkVkaXRvckNsaWVudCgpCiB7Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dEln
bm9yZWQpOwotI2VuZGlmCiB9CiAKIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpCkBAIC04NjYsMjkgKzg2NSw2IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2kKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhHcmFtbWFyU3RyaW5nOmJhZEdyYW1t
YXJQaHJhc2UgZGV0YWlsOmdyYW1tYXJEZXRhaWxEaWN0XTsKIH0KIAotI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4
dFR5cGUgcGFuZWxUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKQotewotICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93ZWJWaWV3LCBwYW5lbFR5
cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2Vt
ZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7Ci19Ci0KLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHQgcmVhc29uRm9yRGlzbWlzc2luZykKLXsKLSAgICBtX2NvcnJlY3Rpb25Q
YW5lbC5kaXNtaXNzKHJlYXNvbkZvckRpc21pc3NpbmcpOwotfQotCi1TdHJpbmcgV2ViRWRpdG9y
Q2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0IHJlYXNvbkZvckRpc21pc3NpbmcpCi17Ci0gICAgcmV0dXJuIG1fY29ycmVj
dGlvblBhbmVsLmRpc21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7Ci19Ci0KLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQotewotICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVudDo6
QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBO
U0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKLSAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcs
IHJlcGxhY2VtZW50U3RyaW5nKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxs
ZWRXb3JkKQogewogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRh
dGVTcGVsbGluZ1BhbmVsV2l0aE1pc3NwZWxsZWRXb3JkOm1pc3NwZWxsZWRXb3JkXTsKQEAgLTk0
MCw2ICs5MTYsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdAog
ewogfQogCitBbHRlcm5hdGl2ZVRleHRDbGllbnQqIFdlYkVkaXRvckNsaWVudDo6YWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQuZ2V0
KCk7Cit9CisKICNpZm5kZWYgQlVJTERJTkdfT05fTEVPUEFSRAogQGludGVyZmFjZSBXZWJFZGl0
b3JTcGVsbENoZWNrUmVzcG9uZGVyIDogTlNPYmplY3QKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135760</attachid>
            <date>2012-04-04 23:05:58 -0700</date>
            <delta_ts>2012-04-05 00:10:48 -0700</delta_ts>
            <desc>Patch (V2)</desc>
            <filename>bug-82970-20120404230557.patch</filename>
            <type>text/plain</type>
            <size>66335</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA0LTA0ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUncyBubyBjaGFuZ2Ugb2YgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBUaGUgZXhpc3RpbmcgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1
bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgYXJlIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkgT1MgWC4K
KyAgICAgICAgV2UnZCBsaWtlIHRvIG1vdmUgdGhlbSBpbnRvIHNlcGFyYXRlIEFsdGVybmF0aXZl
VGV4dENsaWVudCBjbGFzcyB0byBhdm9pZCB1c2luZyAjaWZkZWYncy4gVGhpcworICAgICAgICBu
ZXcgY2xpZW50IGNsYXNzIHdpbGwgYWxzbyBob2xkIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSByZWxh
dGVkIGludGVyZmFjZSB0aGF0IHdlIHdpbGwgYWRkIHNvb24gZm9yCisgICAgICAgIGJ1ZyA4MjUw
My4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29y
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
OmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjplZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6dGV4dENoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tl
clJlc3BvbnNlRm9yTW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAoRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdlQ2xpZW50cyk6CisgICAgICAgIChQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5BbHRlcm5hdGl2ZVRleHRDbGllbnQp
OgorCiAyMDEyLTA0LTA0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZW1vdmUgUmVpZmllZFRyZWVUcmF2ZXJzYWwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTU3MzMsMTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyog
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAw
QTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcCAqLzsgfTsKLQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0Qw
MTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4
IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNl
UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlB
MTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlD
RUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0NGQzNCMTQx
OTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAv
KiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlF
MDhEIC8qIEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThD
QzExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0
MThDRjExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEy
QyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRl
clN0YXRlTWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hp
bmUuY3BwICovOyB9OwpAQCAtMTI4NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5QTExRDQ1Q0RB
MDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFz
aFNldE5vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQx
OTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3
OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYg
LyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTkzNzcsNiArMTkzNzksNyBAQAogCQkJCUIyQjI2NDU5MEQwMEE3N0Uw
MDBBQ0MxRCAvKiBjZiAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFjICov
LAogCQkJCUI3MzRCMTdGMTE5Qjk4REIwMDY1ODdCRCAvKiB0cmFuc2NvZGVyICovLAorCQkJCUNF
REExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLywKIAkJ
CQkzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5o
ICovLAogCQkJCUIyQzNEOUYwMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuY3BwICovLAogCQkJ
CUIyQzNEOUYxMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuaCAqLywKQEAgLTI0NzIyLDYgKzI0
NzI1LDcgQEAKIAkJCQlDRTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTA3RDMzNTYxNTJCNjMwRTAwMUI2Mzkz
IC8qIEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUEw
N0QzMzU4MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZl
VGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDExMzI1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OnNob3coUGFzCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0
aEFsdGVybmF0aXZlID0gcmFuZ2VUb1JlcGxhY2U7CiAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZv
LmRldGFpbHMgPSBBdXRvY29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlsczo6Y3JlYXRlKHJlcGxh
Y2VtZW50KTsKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSB0cnVlOwotICAg
IGNsaWVudCgpLT5zaG93Q29ycmVjdGlvblBhbmVsKG1fYWx0ZXJuYXRpdmVUZXh0SW5mby50eXBl
LCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwgcmVwbGFj
ZW1lbnQsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQq
IGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnNob3dD
b3JyZWN0aW9uQWx0ZXJuYXRpdmUobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIGJvdW5kaW5n
Qm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxUZXh0LCByZXBsYWNlbWVudCwgVmVj
dG9yPFN0cmluZz4oKSk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFu
ZGxlQ2FuY2VsT3BlcmF0aW9uKCkKQEAgLTE5NSw4ICsxOTYsOCBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OmRpc21pc3MoCiAgICAgICAgIHJldHVybjsKICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxzZTsKICAgICBtX2lzRGlzbWlzc2VkQnlFZGl0aW5n
ID0gdHJ1ZTsKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaXNtaXNzQ29y
cmVjdGlvblBhbmVsKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlmIChBbHRlcm5hdGl2ZVRl
eHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICBjbGll
bnQtPmRpc21pc3NBbHRlcm5hdGl2ZShyZWFzb25Gb3JEaXNtaXNzaW5nKTsKIH0KIAogU3RyaW5n
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uRm9yRGlzbWlzc2luZykKQEAgLTIwNSw5ICsyMDYsOSBA
QCBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBtX2FsdGVybmF0aXZlVGV4dEluZm8uaXNBY3RpdmUgPSBmYWxzZTsK
ICAgICBtX2lzRGlzbWlzc2VkQnlFZGl0aW5nID0gdHJ1ZTsKLSAgICBpZiAoIWNsaWVudCgpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGNsaWVudCgpLT5kaXNtaXNzQ29y
cmVjdGlvblBhbmVsU29vbihyZWFzb25Gb3JEaXNtaXNzaW5nKTsKKyAgICBpZiAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAg
cmV0dXJuIGNsaWVudC0+ZGlzbWlzc0FsdGVybmF0aXZlU29vbihyZWFzb25Gb3JEaXNtaXNzaW5n
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBbHRlcm5hdGl2ZVRleHQoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgY29u
c3QgVmVjdG9yPERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiYgbWFya2VyVHlwZXNUb0FkZCkK
QEAgLTI4Niw3ICsyODcsOCBAQCBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmFwcGx5
QXV0CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvVW5hcHBsaWVk
U3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVj
dGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQog
ewotICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVu
dDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKKyAgICBp
ZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQo
KSkKKyAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3Jy
ZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CiAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihzZWxlY3Rpb25PZkNvcnJlY3RlZCwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5n
IHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUgfCBGcmFtZVNlbGVjdGlvbjo6U3Bl
bGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6
OmNyZWF0ZShtX2ZyYW1lLT5kb2N1bWVudCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0
aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmVuZCgpKTsK
QEAgLTMxNyw3ICszMTksOCBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVy
RmlyCiAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveCA9IHJvb3RWaWV3UmVjdEZvclJhbmdl
KG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7CiAgICAg
ICAgIGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb25zdCBBdXRv
Y29ycmVjdGlvbkFsdGVybmF0aXZlRGV0YWlscyogZGV0YWlscyA9IHN0YXRpY19jYXN0PGNvbnN0
IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKj4obV9hbHRlcm5hdGl2ZVRleHRJbmZv
LmRldGFpbHMuZ2V0KCkpOwotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFu
ZWwobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZl
VGV4dEluZm8ub3JpZ2luYWxUZXh0LCBkZXRhaWxzLT5yZXBsYWNlbWVudFN0cmluZygpLCBWZWN0
b3I8U3RyaW5nPigpKTsKKyAgICAgICAgICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNs
aWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQorICAgICAgICAgICAgICAgIGNsaWVudC0+
c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91
bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIGRldGFpbHMtPnJl
cGxhY2VtZW50U3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgICAgICBicmVhazsKQEAgLTMzNSw4ICszMzgsMTAgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjp0aW1lckZpcgogICAgICAgICBzdWdnZXN0aW9ucy5yZW1vdmUoMCk7CiAgICAg
ICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIEZsb2F0
UmVjdCBib3VuZGluZ0JveCA9IHJvb3RWaWV3UmVjdEZvclJhbmdlKG1fYWx0ZXJuYXRpdmVUZXh0
SW5mby5yYW5nZVdpdGhBbHRlcm5hdGl2ZS5nZXQoKSk7Ci0gICAgICAgIGlmICghYm91bmRpbmdC
b3guaXNFbXB0eSgpKQotICAgICAgICAgICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwo
bV9hbHRlcm5hdGl2ZVRleHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4
dEluZm8ub3JpZ2luYWxUZXh0LCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucyk7CisgICAgICAg
IGlmICghYm91bmRpbmdCb3guaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkKKyAgICAgICAg
ICAgICAgICBjbGllbnQtPnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUobV9hbHRlcm5hdGl2ZVRl
eHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxU
ZXh0LCB0b3BTdWdnZXN0aW9uLCBzdWdnZXN0aW9ucyk7CisgICAgICAgIH0KICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTM3NCw3ICszNzksNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmhhbmRsZUFsCiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkKIHsKLSAgICByZXR1cm4gY2xp
ZW50KCkgJiYgY2xpZW50KCktPmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgp
OworICAgIHJldHVybiBlZGl0b3JDbGllbnQoKSAmJiBlZGl0b3JDbGllbnQoKS0+aXNBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiB9CiAKIEZsb2F0UmVjdCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyb290Vmlld1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSogcmFuZ2Up
IGNvbnN0CkBAIC00NjMsMjEgKzQ2OCwyNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnJlc3BvbmRUCiAgICAgbWFya2Vycy0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVu
dE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbik7CiB9CiAKLUVkaXRvckNsaWVudCogQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6Y2xpZW50KCkKK0FsdGVybmF0aXZlVGV4dENsaWVudCog
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyAg
ICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKSA6IDA7Cit9CisKK0VkaXRvckNsaWVudCogQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6ZWRpdG9yQ2xpZW50KCkKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpID8gbV9m
cmFtZS0+cGFnZSgpLT5lZGl0b3JDbGllbnQoKSA6IDA7CiB9CiAKIFRleHRDaGVja2VyQ2xpZW50
KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0ZXh0Q2hlY2tlcigpCiB7Ci0gICAgaWYgKEVk
aXRvckNsaWVudCogb3duZXIgPSBjbGllbnQoKSkKKyAgICBpZiAoRWRpdG9yQ2xpZW50KiBvd25l
ciA9IGVkaXRvckNsaWVudCgpKQogICAgICAgICByZXR1cm4gb3duZXItPnRleHRDaGVja2VyKCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7Ci0gICAgY2xpZW50KCkt
PnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlv
blJldmVydGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIGlmIChB
bHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgpKQor
ICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXZlcnRlZCwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKIH0KIAogdm9p
ZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
UmV2ZXJzZWQoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgUGFzc1JlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSkKQEAgLTUxMiwxMyArNTIzLDE2IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVjb3JkU3AKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBjb3Jy
ZWN0ZWRPbmNlTWFya2VycyA9IG1hcmtlcnMtPm1hcmtlcnNJblJhbmdlKHJhbmdlT2ZDb3JyZWN0
aW9uLCBEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCk7CiAgICAgaWYgKGNvcnJlY3RlZE9u
Y2VNYXJrZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIFNwZWxs
aW5nIGNvcnJlY3RlZCB0ZXh0IGhhcyBiZWVuIGVkaXRlZC4gV2UgbmVlZCB0byBkZXRlcm1pbmUg
d2hldGhlciB1c2VyIGhhcyByZXZlcnRlZCBpdCB0byBvcmlnaW5hbCB0ZXh0IG9yCi0gICAgLy8g
ZWRpdGVkIGl0IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgbm90aWZ5IHNwZWxsY2hlY2tlciBhY2Nv
cmRpbmdseS4KLSAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihjb3JyZWN0
ZWRPbmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkg
PT0gY29ycmVjdGVkKQotICAgICAgICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29y
cmVjdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uRWRpdGVkLCBjb3JyZWN0ZWQs
IGNvcnJlY3Rpb24pOworCisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0g
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpIHsKKyAgICAgICAgLy8gU3BlbGxpbmcgY29ycmVjdGVk
IHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRvIGRldGVybWluZSB3aGV0aGVyIHVzZXIg
aGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQgb3IKKyAgICAgICAgLy8gZWRpdGVkIGl0
IHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgbm90aWZ5IHNwZWxsY2hlY2tlciBhY2NvcmRpbmdseS4K
KyAgICAgICAgaWYgKG1hcmtlcnNIYXZlSWRlbnRpY2FsRGVzY3JpcHRpb24oY29ycmVjdGVkT25j
ZU1hcmtlcnMpICYmIGNvcnJlY3RlZE9uY2VNYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpID09IGNv
cnJlY3RlZCkKKyAgICAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
QXV0b2NvcnJlY3Rpb25FZGl0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CisgICAgfQorCiAg
ICAgbWFya2Vycy0+cmVtb3ZlTWFya2VycyhyYW5nZU9mQ29ycmVjdGlvbiwgRG9jdW1lbnRNYXJr
ZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVtb3ZlUGFydGlh
bGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTEzMjUxKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcl9oCiAjZGVmaW5lIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXJfaAogCisjaW5jbHVk
ZSAiQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgpAQCAtNDksMTIg
KzUwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFsdGVybmF0aXZlVGV4dERldGFpbHMoKSB7
IH0KIH07CiAKLWVudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7Ci0gICAgQWx0ZXJuYXRpdmVUZXh0
VHlwZUNvcnJlY3Rpb24gPSAwLAotICAgIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24sCi0g
ICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnMsCi19OwotCiBzdHJ1Y3Qg
QWx0ZXJuYXRpdmVUZXh0SW5mbyB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZVdpdGhBbHRlcm5h
dGl2ZTsKICAgICBib29sIGlzQWN0aXZlOwpAQCAtNjUsMTIgKzYwLDYgQEAgc3RydWN0IEFsdGVy
bmF0aXZlVGV4dEluZm8gewogCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCi1lbnVtIFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgewotICAgIFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRDYW5jZWxsZWQgPSAwLAotICAgIFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHRJZ25vcmVkLAotICAgIFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHRBY2NlcHRlZAotfTsKLQogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIC8vIFRo
ZXNlIGJhY2tzbGFzaGVzIGFyZSBmb3IgbWFraW5nIHN0eWxlIGNoZWNrZXIgaGFwcHkuCiAjZGVm
aW5lIFVOTEVTU19FTkFCTEVEKGZ1bmN0aW9uQm9keSkgXApAQCAtMTM0LDEyICsxMjMsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgfHwgbWFya2VyLT50eXBlKCkgPT0gRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nKSAmJiBzdGF0aWNfY2FzdDxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkp
ID09IGVuZE9mZnNldCk7CiAgICAgfQogCi0gICAgRWRpdG9yQ2xpZW50KiBjbGllbnQoKTsKKyAg
ICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgpOworICAgIEVk
aXRvckNsaWVudCogZWRpdG9yQ2xpZW50KCk7CisgICAgCiAgICAgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCk7CiAgICAgRmxvYXRSZWN0IHJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0
IFJhbmdlKikgY29uc3Q7CiAgICAgdm9pZCBtYXJrUHJlY2VkaW5nV2hpdGVzcGFjZUZvckRlbGV0
ZWRBdXRvY29ycmVjdGlvbkFmdGVyQ29tbWFuZChFZGl0Q29tbWFuZCopOwogCi0gICAgRWRpdG9y
Q2xpZW50KiBtX2NsaWVudDsKICAgICBGcmFtZSogbV9mcmFtZTsKIAogICAgIFRpbWVyPEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI+IG1fdGltZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDExICsyMiwxNSBAQAogI2RlZmluZSBUZXh0Q2hlY2tpbmdIZWxwZXJfaAogCiAjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlRl
eHRDaGVja2luZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJhbmdlOwogY2xhc3MgUG9zaXRpb247CitzdHJ1Y3QgVGV4
dENoZWNraW5nUmVzdWx0OwogCiBjbGFzcyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggewogcHVibGlj
OgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTEzMjUx
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MTksMTIgKzUxOSw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIFRleHRDaGVja2VyQ2xp
ZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuICZtX3RleHRDaGVja2VyQ2xpZW50OyB9CiAKLSNp
ZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0
aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJu
YXRpdmVUZXh0KSB7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSB7IHJldHVybiBTdHJpbmco
KTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0K
LSNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJp
bmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAog
I2lmbmRlZiBFZGl0b3JDbGllbnRfaAogI2RlZmluZSBFZGl0b3JDbGllbnRfaAogCi0jaW5jbHVk
ZSAiQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkVkaXRvckluc2VydEFj
dGlvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5o
IgpAQCAtMTQ2LDE4ICsxNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlcigpID0gMDsKIAotICAgIGVudW0gQXV0b2NvcnJlY3Rpb25SZXNw
b25zZVR5cGUgewotICAgICAgICBBdXRvY29ycmVjdGlvbkVkaXRlZCwKLSAgICAgICAgQXV0b2Nv
cnJlY3Rpb25SZXZlcnRlZAotICAgIH07Ci0KLSNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlw
ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlv
blJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFN0cmluZykgPSAwOwotI2VuZGlmCi0KICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IEdyYW1t
YXJEZXRhaWwmIGRldGFpbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJ
V2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJl
dmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OSw2ICsxNTksNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xp
ZW50cykKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzUGFpbnRpbmcoZmFsc2UpCiAjZW5kaWYK
KyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDbGllbnRzLmFsdGVybmF0aXZlVGV4
dENsaWVudCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3
IEhhc2hTZXQ8UGFnZSo+OwpAQCAtMTExMSw3ICsxMTEyLDggQEAgdm9pZCBQYWdlOjpyZXN1bWVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbQogfQogCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVu
dHMoKQotICAgIDogY2hyb21lQ2xpZW50KDApCisgICAgOiBhbHRlcm5hdGl2ZVRleHRDbGllbnQo
MCkKKyAgICAsIGNocm9tZUNsaWVudCgwKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAg
ICwgY29udGV4dE1lbnVDbGllbnQoMCkKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyAgICBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAgICAgY2xhc3MgQmFja0Zvcndh
cmRDb250cm9sbGVyOwogICAgIGNsYXNzIEJhY2tGb3J3YXJkTGlzdDsKICAgICBjbGFzcyBDaHJv
bWU7CkBAIC0xMDMsNiArMTA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
UGFnZUNsaWVudHMoKTsKICAgICAgICAgICAgIH5QYWdlQ2xpZW50cygpOwogCisgICAgICAgICAg
ICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudDsKICAgICAgICAg
ICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50OwogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgICAgICAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50OwpAQCAt
MzMzLDYgKzMzNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRJc1Bh
aW50aW5nKGJvb2wgcGFpbnRpbmcpIHsgbV9pc1BhaW50aW5nID0gcGFpbnRpbmc7IH0KICAgICAg
ICAgYm9vbCBpc1BhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhaW50aW5nOyB9CiAjZW5k
aWYKKworICAgICAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50OyB9CisKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCkBAIC00MzIsNiArNDM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCBtX2lzUGFpbnRp
bmc7CiAjZW5kaWYKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0aXZl
VGV4dENsaWVudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0FsdGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0FsdGVybmF0
aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEFsdGVybmF0aXZlVGV4dENsaWVudF9oCisjZGVmaW5lIEFsdGVybmF0aXZlVGV4dENs
aWVudF9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0IHsKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0Q2Fu
Y2VsbGVkID0gMCwKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3Jl
ZCwKKyAgICBSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0QWNjZXB0ZWQKK307CisK
K2VudW0gQWx0ZXJuYXRpdmVUZXh0VHlwZSB7CisgICAgQWx0ZXJuYXRpdmVUZXh0VHlwZUNvcnJl
Y3Rpb24gPSAwLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24sCisgICAgQWx0ZXJu
YXRpdmVUZXh0VHlwZVNwZWxsaW5nU3VnZ2VzdGlvbnMsCit9OworCitlbnVtIEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHsKKyAgICBBdXRvY29ycmVjdGlvbkVkaXRlZCwKKyAgICBBdXRvY29y
cmVjdGlvblJldmVydGVkCit9OworCitjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkFsdGVybmF0aXZlVGV4dENsaWVudCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nKSA9IDA7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NCkKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA0LTA0ICBK
aWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCBy
ZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5h
dGl2ZVRleHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1bmN0aW9ucyBmcm9t
IFdlYkVkaXRvckNsaWVudCB0byB0aGUgbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC4KKyAg
ICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChQYWdlQ2xpZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorCiAyMDEyLTA0LTA0ICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgUmVpZmllZFRyZWVUcmF2ZXJz
YWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDEx
MzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0
b3JDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0xODgsNyArMTg4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRp
dmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJh
clN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpID0gMDsKICAgICAKICAgICB2aXJ0dWFs
IFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzM4LDcgKzM3
MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9u
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZSgoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSlyZXNwb25z
ZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CisgICAgbV9wYWdlQ2xp
ZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSlyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiB9
CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJ
KHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpOwogICAgIHZpcnR1YWwg
U3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKIAogICAgIHZp
cnR1YWwgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3
U3R5bGUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4
OCwxMCArNDg4LDEwIEBAIFN0cmluZyBQYWdlQ2xpZW50SW1wbDo6ZGlzbWlzc0NvcnJlY3Rpb24K
ICNlbmRpZgogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50U3RyaW5nKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCiB7CiAj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIE5TQ29ycmVjdGlvblJl
c3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEVkaXRvckNsaWVudDo6QXV0b2NvcnJl
Y3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rp
b25SZXNwb25zZUVkaXRlZDsKKyAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJl
c3BvbnNlVHlwZSA9PSBBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9u
c2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOwogICAgIENvcnJlY3Rpb25Q
YW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3drVmlldywgcmVzcG9uc2UsIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaAkocmV2aXNpb24g
MTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEyIEBACiAjaWZuZGVmIENvcnJlY3Rpb25Q
YW5lbF9oCiAjZGVmaW5lIENvcnJlY3Rpb25QYW5lbF9oCiAKLSNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKwogQGNsYXNzIFdLVmlldzsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01Niw2ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQorI2VuZGlmIC8vIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIAogI2VuZGlmIC8vIENvcnJl
Y3Rpb25QYW5lbF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0Nv
cnJlY3Rpb25QYW5lbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0
LDkgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKIAorI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgog
I2ltcG9ydCAiV0tWaWV3LmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgpAQCAtMTQ1LDUg
KzE0NSw1IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGwKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODgzLDYgKzg4Myw4IEBACiAJ
CUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVD
NzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9
OwogCQlDRENBODVENTEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1RDQxMzJBQzJC
MzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RDQTg1RUUxMzJBRDcwMTAw
RTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVERTEzMkFEMDUzMDBFOTYxREYg
LyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKKwkJQ0VEQTEyRTIxNTJD
RDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERjE1MkNDQUU4MDBEOUUw
OEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLzsgfTsKKwkJQ0VEQTEyRTMxNTJD
RDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyB9OwogCQlEM0I5NDg0NjExRkY0QjY1
MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1l
bnUuY3BwICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0
MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ4MTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8q
IFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CkBAIC0xOTM3LDYgKzE5MzksOCBAQAogCQlD
RENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMyQjMw
MEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURG
IC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyogV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQyMTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVu
dS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1
cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA4OCw2ICszMDkyLDgg
QEAKIAkJQkMxMTFBREUxMTJGNUI5QTAwMzM3QkFCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8q
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8sCisJCQkJQ0VEQTEyREUxNTJDQ0FFODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAogCQkJCTUxMDIxRTlCMTJC
MTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLywKIAkJCQlDNTU0
RkZBMjEyRTRFOEVBMDAyRjIyQzAgLyogV2ViRHJhZ0NsaWVudE1hYy5tbSAqLywKIAkJCQlDNTIz
N0Y1RjEyNDQxQ0EzMDA3ODA0NzIgLyogV2ViRWRpdG9yQ2xpZW50TWFjLm1tICovLApAQCAtNDE3
OCw2ICs0MTg0LDcgQEAKIAkJCQkzNzYwODgyMzE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBX
ZWJSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUy
Q0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREExMkUzMTUyQ0Qx
QjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtNDkyMSw2ICs0OTI4LDcgQEAKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tS
ZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDMxNTBDMzUwNjAwRTUy
Q0U5IC8qIFdlYlJlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDA4MTUw
QzRCOTcwMEU1MkNFOSAvKiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNF
REExMkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMiArMTQyLDYgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JikgT1ZFUlJJREU7Ci0jaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAg
dmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0
VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3Ry
aW5ncykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVh
c29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5
cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRTdHJpbmcpIE9WRVJSSURFOwotI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTaG93VW5pY29kZU1lbnUoKSBPVkVSUklERTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSogd2ViUGFnZSkK
KzogbV9wYWdlKHdlYlBhZ2UpCit7Cit9CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldl
YkFsdGVybmF0aXZlVGV4dENsaWVudCgpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dElnbm9yZWQpKTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29ycmVjdGlvblBhbmVsKHR5
cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2Vt
ZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykpOworfQorCit2b2lkIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOworfQorCitT
dHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQoreworICAgIFN0cmluZyBy
ZXN1bHQ7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNt
aXNzQ29ycmVjdGlvblBhbmVsU29vbihyZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbjo6UmVwbHkocmVzdWx0KSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nKSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnRfaAorI2RlZmluZSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW5j
bHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVibGljOgorICAgIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQYWdlICopOworICAgIHZpcnR1YWwgfldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVy
bmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVy
bmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7Citwcml2
YXRlOgorICAgIFdlYlBhZ2UgKm1fcGFnZTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFj
Lm1tCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIz
OCwyOCArMjM4LDQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYQog
ICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNoZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVwbHkocmVzdWx0cykpOwogfQog
Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSB0
eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJp
bmdzKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29y
cmVjdGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykp
OwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKLXsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChyZWFzb24pKTsKLX0KLQotU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCBy
ZWFzb24pCi17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShy
ZXN1bHQpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9u
UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25z
ZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZykpOwotfQotI2VuZGlmCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRl
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmgiCkBAIC0yMzQsNiArMjM1LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgcGFnZUNsaWVudHMuaW5z
cGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsKICNlbmRpZgorICAg
IHBhZ2VDbGllbnRzLmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQodGhpcyk7CiAgICAgCiAgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFn
ZUNsaWVudHMpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQt
MDQgIEppYSBQdSAgPGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBh
bmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFs
dGVybmF0aXZlVGV4dENsaWVudCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyOTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDQtMDEg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBw
b3J0IHRoZSBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzAsNiArMzcwLDggQEAKIAkJQ0Q4RUFDNzMxMUNBQzlBMzAwNzc0MDc1IC8qIElP
S2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEOEVBQzcyMTFDQUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07
CiAJCUNEQTYyQUUyMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNjJBRTAx
MjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggKi87IH07CiAJCUNE
QTYyQUUzMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTYyQUUxMTI1Rjg3
QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQTEy
REIxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkQ5MTUyQ0JFNjgw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi87IH07CisJCUNFREExMkRD
MTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRBMTUyQ0JFNjgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJREQ3Q0RFRTcwQTIz
QkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJU
eXBlc0ludGVybmFsLmggKi87IH07CiAJCUREODk2ODIwMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJF
bGVtZW50RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREQ4OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5
LmggKi87IH07CiAJCUREODk2ODIxMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlv
bmFyeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERE
ODk2ODFGMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLzsgfTsK
QEAgLTY5OSw2ICs3MDEsOCBAQAogCQlDRDhFQUM3MjExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCUNEQTYyQUUwMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVu
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2Ny
ZWVuQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE2MkFFMTEy
NUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8q
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYw
QTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJF
bGVtZW50RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1l
bnREaWN0aW9uYXJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjk0LDYgKzEyOTgs
OCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENv
cnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3Jy
ZWN0aW9uUGFuZWwubW0gKi8sCisJCQkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5tbSAqLywKKwkJCQlDRURBMTJEQTE1MkNCRTY4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQjY4MDQ5NzEwRkZCQ0VDMTAw
OUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUuaCAqLywKIAkJCQlCNjgwNDk3MjBGRkJDRUMx
MDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5tbSAqLywKIAkJCQlBNURFRkMxMTExRDUz
NDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oICovLApAQCAt
MTY0Myw2ICsxNjQ5LDcgQEAKIAkJCQk0MUY0NDg0RjEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29y
a2Vyc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU5MTRFNDgy
MTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0VEQTEyREMxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yMDMwLDYgKzIwMzcsNyBAQAogCQkJCUJDMkU0NjRFMEZEOEE5
NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQ0ODUw
MTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTMxMkUyRkU2MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTMyOTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNC0wNCAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBFZGl0
b3JDbGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IGNsYXNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNvcnJlY3Rp
b24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBXZWJFZGl0b3JDbGllbnQgdG8gdGhlIG5l
dyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxv
ZyBmb3IgZGV0YWlscy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5l
bC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbTogQWRkZWQuCisgICAgICAgIChXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAg
ICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZl
KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZl
KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZl
U29vbik6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6fldlYkVkaXRvckNsaWVudCk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorCiAyMDEyLTAzLTE1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1bGwgU2NyZWVuIG1vZGUgc2hvdWxkIGNhbmNl
bCBiZWZvcmUgbmF2aWdhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L0NvcnJlY3Rpb25QYW5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTEgKzI2LDEyIEBACiAjaWZuZGVmIENvcnJlY3Rpb25QYW5lbF9oCiAjZGVm
aW5lIENvcnJlY3Rpb25QYW5lbF9oCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBLaXQv
TlNTcGVsbENoZWNrZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKwog
QGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIENvcnJlY3Rpb25QYW5lbCB7CkBAIC01Myw2ICs1NCw2
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3Jlc3VsdEZvckRpc21pc3Nh
bDsKIH07CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogCiAjZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVsX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0JKHJl
dmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJl
Y3Rpb25QYW5lbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAi
V2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgogCi0jaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBzdGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVj
dGlvbkluZGljYXRvclR5cGUoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBl
KQpAQCAtMTM3LDUgKzEzNyw1IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRl
ZFJlcGwKICAgICAgICAgbV9yZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBs
YWNlbWVudCBjb3B5XSk7CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjZW5kaWYgLy9VU0Uo
QVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
I2lmbmRlZiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorI2RlZmluZSBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnRfaAorCisjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisKK0BjbGFzcyBXZWJWaWV3OworCitjbGFz
cyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmll
dyAqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRl
eHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRT
dHJpbmdzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpIE9WRVJSSURFOworcHJpdmF0ZToKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7
CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIENvcnJlY3Rpb25QYW5lbCBtX2Nv
cnJlY3Rpb25QYW5lbDsKKyNlbmRpZgorfTsKKworI2VuZGlmIC8vIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3
KiB3ZWJWaWV3KQorOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Ojp+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyNpZiBVU0UoQVVUT0NP
UlJFQ1RJT05fUEFORUwpCisgICAgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRU
eXBlIHR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
Cit7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVs
LnNob3cobV93ZWJWaWV3LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7
CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRp
c21pc3MocmVhc29uKTsKKyNlbmRpZgorfQorCitTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc29uKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICByZXR1
cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2Vsc2UKK3JldHVybiBTdHJp
bmcoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25z
ZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcpCit7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIE5TQ29y
cmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9u
UmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVz
cG9uc2VFZGl0ZWQ7CitDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UobV93ZWJWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5n
KTsKKyNlbmRpZgorfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw2IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIkNvcnJlY3Rpb25Q
YW5lbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xMzYs
MTIgKzEzNSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9k
U3RhdGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShi
b29sIGVuYWJsZWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0JikgT1ZFUlJJREU7Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVS
UklERTsKLSNlbmRpZgogcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVW5kb09yUmVkb1N0ZXAo
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4sIGJvb2wgaXNSZWRvKTsKICAgICBXZWJFZGl0
b3JDbGllbnQoKTsKQEAgLTE0OSw4ICsxNDIsNCBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1f
d2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0
OwogICAgIGJvb2wgbV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zOwotCi0jaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQot
ICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKLSNlbmRpZgogfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5LDkgKzE4OSw2IEBA
IFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcKIAogV2ViRWRpdG9yQ2xp
ZW50Ojp+V2ViRWRpdG9yQ2xpZW50KCkKIHsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7
Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkKQEAgLTg2NiwyOSArODYzLDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnVwZGF0ZVNwZWxsaW5nVUlXaQogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFz
ZSBkZXRhaWw6Z3JhbW1hckRldGFpbERpY3RdOwogfQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSBw
YW5lbFR5cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
Ci17Ci0gICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKLX0KLQotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQotewotICAgIG1fY29ycmVjdGlvblBhbmVsLmRp
c21pc3MocmVhc29uRm9yRGlzbWlzc2luZyk7Ci19Ci0KLVN0cmluZyBXZWJFZGl0b3JDbGllbnQ6
OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQgcmVhc29uRm9yRGlzbWlzc2luZykKLXsKLSAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFu
ZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nKTsKLX0KLQotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVj
dGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCi17Ci0gICAgTlNDb3JyZWN0aW9u
UmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29y
cmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVj
dGlvblJlc3BvbnNlRWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFj
ZW1lbnRTdHJpbmcpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQp
CiB7CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxs
aW5nUGFuZWxXaXRoTWlzc3BlbGxlZFdvcmQ6bWlzc3BlbGxlZFdvcmRdOwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9y
dCAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNh
Y2hlLmgiCiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oIgpAQCAtNzM2LDYgKzczNyw3IEBAIC0gKHZvaWQp
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ2xpZW50cy5lZGl0b3JD
bGllbnQgPSBuZXcgV2ViRWRpdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDbGllbnRzLmRyYWdD
bGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKTsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0
b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOworICAgIHBhZ2VDbGllbnRz
LmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoc2Vs
Zik7CiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAjaWYgRU5B
QkxFKEdFT0xPQ0FUSU9OKQogICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKF9wcml2
YXRlLT5wYWdlLCBuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135767</attachid>
            <date>2012-04-05 00:10:51 -0700</date>
            <delta_ts>2012-04-05 01:06:17 -0700</delta_ts>
            <desc>Fixing build.</desc>
            <filename>bug-82970-20120405001050.patch</filename>
            <type>text/plain</type>
            <size>68017</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA0LTA1ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUncyBubyBjaGFuZ2Ugb2YgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBUaGUgZXhpc3RpbmcgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1
bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgYXJlIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkgT1MgWC4K
KyAgICAgICAgV2UnZCBsaWtlIHRvIG1vdmUgdGhlbSBpbnRvIHNlcGFyYXRlIEFsdGVybmF0aXZl
VGV4dENsaWVudCBjbGFzcyB0byBhdm9pZCB1c2luZyAjaWZkZWYncy4gVGhpcworICAgICAgICBu
ZXcgY2xpZW50IGNsYXNzIHdpbGwgYWxzbyBob2xkIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSByZWxh
dGVkIGludGVyZmFjZSB0aGF0IHdlIHdpbGwgYWRkIHNvb24gZm9yCisgICAgICAgIGJ1ZyA4MjUw
My4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOiBDaGFuZ2VzIGluIHRoaXMgZmlsZSBhcmUgYWxs
IGZvciBjYWxsaW5nIGZ1bmN0aW9ucyBpbgorICAgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVu
dCBpbnN0ZWFkIG9mIHRob3NlIGluIEVkaXRvQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0
b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGV4dENoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudDo6
fkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEVkaXRvckNsaWVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNs
aWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUGFnZUNsaWVudHMpOgorICAgICAgICAoUGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAyMDEyLTA0LTA0ICBQ
YXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXVEY6
OmdldEN1cnJlbnRMb2NhbFRpbWUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk5NCw2
ICsyNTk5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwYWdlXEFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXGFuaW1hdGlvblxBbmltYXRpb25C
YXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTU3MzMsMTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcCAqLzsgfTsKLQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0Uw
OEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5
OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlBMTFENDVD
REEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlDRUEzOTQ5
RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0NGQzNCMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8q
IEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThDRjEx
Nzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBW
aWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
ICovOyB9OwpAQCAtMTI4NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFzaFNldE5v
ZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlE
MTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUyNzcsNiArMTUyNzksNyBAQAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2
QyAvKiBzY3JvbGxpbmcgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFic3Ry
YWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZp
ZXdTaXplT3JOb3QuaCAqLywKKwkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJh
ckluZm8uY3BwICovLAogCQkJCUJDMTI0RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmgg
Ki8sCiAJCQkJQkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLApAQCAt
MjQ3MjIsNiArMjQ3MjUsNyBAQAogCQkJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMDdEMzM1NjE1MkI2
MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9u
Rm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURBMTJENzE1MkNBMUNCMDBEOUUwOEQgLyog
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyhQYXMKICAgICBtX2FsdGVybmF0aXZlVGV4dElu
Zm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZVRvUmVwbGFjZTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpj
cmVhdGUocmVwbGFjZW1lbnQpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9
IHRydWU7Ci0gICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9hbHRlcm5hdGl2ZVRl
eHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxU
ZXh0LCByZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgaWYgKEFsdGVybmF0aXZl
VGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNs
aWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZlVGV4dEluZm8udHlw
ZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHJlcGxh
Y2VtZW50LCBWZWN0b3I8U3RyaW5nPigpKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQpAQCAtMTk1LDggKzE5Niw4IEBAIHZvaWQg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzcygKICAgICAgICAgcmV0dXJuOwogICAg
IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNz
ZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisgICAgaWYgKEFs
dGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisg
ICAgICAgIGNsaWVudC0+ZGlzbWlzc0FsdGVybmF0aXZlKHJlYXNvbkZvckRpc21pc3NpbmcpOwog
fQogCiBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQpAQCAtMjA1
LDkgKzIwNiw5IEBAIFN0cmluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXMKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2
ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNzZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmICgh
Y2xpZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICByZXR1cm4gY2xpZW50LT5kaXNtaXNzQWx0ZXJuYXRpdmVTb29uKHJlYXNvbkZv
ckRpc21pc3NpbmcpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcmIGFsdGVy
bmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc1RvQWRkKQpAQCAtMjg2LDcgKzI4Nyw4IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBdXQKIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25k
VG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uT2ZDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24pCiB7Ci0gICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rp
b24pOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZl
VGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6
Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSB8IEZyYW1lU2Vs
ZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCkuZW5kKCkpOwpAQCAtMzE3LDcgKzMxOSw4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6dGltZXJGaXIKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdS
ZWN0Rm9yUmFuZ2UobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdl
dCgpKTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNvbnN0IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHMqPihtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7Ci0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0Nv
cnJlY3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIGRldGFpbHMtPnJlcGxhY2VtZW50U3Ry
aW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4
dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAg
ICAgY2xpZW50LT5zaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwg
ZGV0YWlscy0+cmVwbGFjZW1lbnRTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzM1LDggKzMzOCwxMCBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyCiAgICAgICAgIHN1Z2dlc3Rpb25zLnJlbW92
ZSgwKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKICAg
ICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UobV9hbHRl
cm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdldCgpKTsKLSAgICAgICAgaWYg
KCFib3VuZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJl
Y3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0
ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25z
KTsKKyAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICAgICAgICAgIGNsaWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2Fs
dGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25zKTsKKyAgICAgICAgfQog
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc0LDcgKzM3OSw3IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWwKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKQogewotICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCk7CisgICAgcmV0dXJuIGVkaXRvckNsaWVudCgpICYmIGVkaXRvckNsaWVudCgp
LT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKIH0KIAogRmxvYXRSZWN0
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0IFJh
bmdlKiByYW5nZSkgY29uc3QKQEAgLTQ2MywyMSArNDY4LDI3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFQKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAotRWRpdG9y
Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpjbGllbnQoKQorQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGll
bnQoKQoreworICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmFs
dGVybmF0aXZlVGV4dENsaWVudCgpIDogMDsKK30KKworRWRpdG9yQ2xpZW50KiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVybiBtX2ZyYW1lLT5w
YWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmVkaXRvckNsaWVudCgpIDogMDsKIH0KIAogVGV4dENo
ZWNrZXJDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRleHRDaGVja2VyKCkKIHsK
LSAgICBpZiAoRWRpdG9yQ2xpZW50KiBvd25lciA9IGNsaWVudCgpKQorICAgIGlmIChFZGl0b3JD
bGllbnQqIG93bmVyID0gZWRpdG9yQ2xpZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lci0+dGV4
dENoZWNrZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAg
ICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1
dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShB
dXRvY29ycmVjdGlvblJldmVydGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcp
OwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVm
UHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKQpAQCAtNTEyLDEzICs1MjMsMTYgQEAgdm9pZCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRTcAogICAgIFZlY3RvcjxEb2N1bWVudE1h
cmtlcio+IGNvcnJlY3RlZE9uY2VNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2UocmFu
Z2VPZkNvcnJlY3Rpb24sIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKICAgICBpZiAo
Y29ycmVjdGVkT25jZU1hcmtlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgLy8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRv
IGRldGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQg
b3IKLSAgICAvLyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxj
aGVja2VyIGFjY29yZGluZ2x5LgotICAgIGlmIChtYXJrZXJzSGF2ZUlkZW50aWNhbERlc2NyaXB0
aW9uKGNvcnJlY3RlZE9uY2VNYXJrZXJzKSAmJiBjb3JyZWN0ZWRPbmNlTWFya2Vyc1swXS0+ZGVz
Y3JpcHRpb24oKSA9PSBjb3JyZWN0ZWQpCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29y
cmVjdGVkLCBjb3JyZWN0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25FZGl0ZWQs
IGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CisKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkgeworICAgICAgICAvLyBTcGVsbGlu
ZyBjb3JyZWN0ZWQgdGV4dCBoYXMgYmVlbiBlZGl0ZWQuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdXNlciBoYXMgcmV2ZXJ0ZWQgaXQgdG8gb3JpZ2luYWwgdGV4dCBvcgorICAgICAgICAv
LyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxjaGVja2VyIGFj
Y29yZGluZ2x5LgorICAgICAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihj
b3JyZWN0ZWRPbmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0tPmRlc2NyaXB0
aW9uKCkgPT0gY29ycmVjdGVkKQorICAgICAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlv
bik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShBdXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsK
KyAgICB9CisKICAgICBtYXJrZXJzLT5yZW1vdmVNYXJrZXJzKHJhbmdlT2ZDb3JyZWN0aW9uLCBE
b2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpS
ZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyX2gKICNkZWZpbmUgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcl9o
CiAKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgi
CkBAIC00OSwxMiArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0
RGV0YWlscygpIHsgfQogfTsKIAotZW51bSBBbHRlcm5hdGl2ZVRleHRUeXBlIHsKLSAgICBBbHRl
cm5hdGl2ZVRleHRUeXBlQ29ycmVjdGlvbiA9IDAsCi0gICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVJl
dmVyc2lvbiwKLSAgICBBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucywKLX07
Ci0KIHN0cnVjdCBBbHRlcm5hdGl2ZVRleHRJbmZvIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
V2l0aEFsdGVybmF0aXZlOwogICAgIGJvb2wgaXNBY3RpdmU7CkBAIC02NSwxMiArNjAsNiBAQCBz
dHJ1Y3QgQWx0ZXJuYXRpdmVUZXh0SW5mbyB7CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7
CiAKLWVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Ci0gICAgUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCi0gICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCi0gICAgUmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCi19OwotCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQogLy8gVGhlc2UgYmFja3NsYXNoZXMgYXJlIGZvciBtYWtpbmcgc3R5bGUgY2hlY2tlciBo
YXBweS4KICNkZWZpbmUgVU5MRVNTX0VOQUJMRUQoZnVuY3Rpb25Cb2R5KSBcCkBAIC0xMzQsMTIg
KzEyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICB8fCBtYXJrZXItPnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLT5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKICAgICB9CiAKLSAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCgpOworICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKKyAgICAKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKTsKICAgICBGbG9hdFJlY3Qgcm9vdFZpZXdSZWN0Rm9y
UmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsKICAgICB2b2lkIG1hcmtQcmVjZWRpbmdXaGl0ZXNw
YWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKEVkaXRDb21tYW5kKik7CiAK
LSAgICBFZGl0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAg
VGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4gbV90aW1lcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkocmV2aXNpb24gMTEzMjUxKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsMTEgKzIyLDE1IEBACiAjZGVmaW5lIFRleHRDaGVja2luZ0hlbHBlcl9oCiAK
ICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7CiBjbGFzcyBQb3NpdGlvbjsK
K3N0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFw
aCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxOSwxMiArNTE5LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgVGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJDbGll
bnQ7IH0KIAotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIHsgfQotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2
ZVRleHRDbGllbnRfaAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Cisg
ICAgUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCisgICAg
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCisgICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCit9OworCitlbnVtIEFsdGVybmF0aXZl
VGV4dFR5cGUgeworICAgIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKKyAgICBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVs
bGluZ1N1Z2dlc3Rpb25zLAorfTsKKworZW51bSBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7
CisgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCisgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAor
fTsKKworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BbHRlcm5hdGl2ZVRleHRDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworfTsK
KyAgICAKK30KKworI2VuZGlmIC8vIEFsdGVybmF0aXZlVGV4dENsaWVudF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpZm5kZWYgRWRpdG9yQ2xpZW50X2gKICNkZWZpbmUgRWRpdG9yQ2xpZW50X2gKIAotI2luY2x1
ZGUgIkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRB
Y3Rpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHku
aCIKQEAgLTE0NiwxOCArMTQ1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSA9IDA7CiAKLSAgICBlbnVtIEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHsKLSAgICAgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgICAgIEF1dG9j
b3JyZWN0aW9uUmV2ZXJ0ZWQKLSAgICB9OwotCi0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKLSNlbmRpZgotCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFt
bWFyRGV0YWlsJiBkZXRhaWwpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdykgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc1BhaW50aW5nKGZhbHNlKQogI2VuZGlm
CisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ2xpZW50cy5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKQEAgLTExMTEsNyArMTExMiw4IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW0KIH0KIAogUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGll
bnRzKCkKLSAgICA6IGNocm9tZUNsaWVudCgwKQorICAgIDogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KDApCisgICAgLCBjaHJvbWVDbGllbnQoMCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAg
ICAsIGNvbnRleHRNZW51Q2xpZW50KDApCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogICAgIGNsYXNzIEJhY2tGb3J3
YXJkQ29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7CiAgICAgY2xhc3MgQ2hy
b21lOwpAQCAtMTAzLDYgKzEwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBhZ2VDbGllbnRzKCk7CiAgICAgICAgICAgICB+UGFnZUNsaWVudHMoKTsKIAorICAgICAgICAg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAgICAgICAg
ICAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICAgICAgICAgIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudDsKQEAg
LTMzMyw2ICszMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNQ
YWludGluZyhib29sIHBhaW50aW5nKSB7IG1faXNQYWludGluZyA9IHBhaW50aW5nOyB9CiAgICAg
ICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWludGluZzsgfQogI2Vu
ZGlmCisKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsgfQorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDMyLDYgKzQzNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgbV9pc1BhaW50
aW5nOwogI2VuZGlmCisgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2
ZVRleHRDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTEzMjk1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDQtMDUgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25z
IGZyb20gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4dENsaWVudCBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
OTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gV2ViRWRpdG9yQ2xpZW50
IHRvIHRoZSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LgorICAgICAgICBTZWUgV2ViQ29y
ZS9DaGFuZ2VMb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKFBhZ2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
OldlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6fldlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVy
bmF0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNt
aXNzQWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1t
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorCiAyMDEyLTA0LTA0
ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgUmVp
ZmllZFRyZWVUcmF2ZXJzYWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBA
IC0xODgsNyArMTg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6
OkVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRv
Y29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNv
bW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKGludDMyX3QgbmV3U3R5bGUpID0gMDsKICAg
ICAKICAgICB2aXJ0dWFsIFdLVmlldyogd2tWaWV3KCkgY29uc3QgPSAwOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDExMzI1MSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzM4LDcgKzM3MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC0+cmVjb3Jk
QXV0b2NvcnJlY3Rpb25SZXNwb25zZSgoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSlyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgbV9wYWdlQ2xpZW50LT5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29y
cmVjdGlvblJlc3BvbnNlVHlwZSlyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNl
bWVudFN0cmluZyk7CiB9CiAjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eUd0ay5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMTMy
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KTsKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNz
Q29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpB
dXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVj
b21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00ODgsMTAgKzQ4OCwxMCBA
QCBTdHJpbmcgUGFnZUNsaWVudEltcGw6OmRpc21pc3NDb3JyZWN0aW9uCiAjZW5kaWYKIH0KIAot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JD
bGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewogI2lmICFkZWZpbmVkKEJV
SUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25z
ZSA9IHJlc3BvbnNlVHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQg
PyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0
ZWQ7CisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25zZVR5cGUgPT0g
QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2ZXJ0ZWQgOiBO
U0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKICAgICBDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93a1ZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAJKHJldmlzaW9uIDExMzI1MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KICNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwuaAkocmV2aXNp
b24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFu
ZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEyIEBACiAjaWZuZGVmIENvcnJlY3Rp
b25QYW5lbF9oCiAjZGVmaW5lIENvcnJlY3Rpb25QYW5lbF9oCiAKLSNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKwogQGNsYXNzIFdLVmlldzsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw2ICs1Nyw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQorI2VuZGlmIC8vIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIAogI2VuZGlmIC8vIENv
cnJlY3Rpb25QYW5lbF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJl
Y3Rpb25QYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L0NvcnJlY3Rpb25QYW5lbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDkg
KzI0LDkgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpZiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKIAorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCAiV0tWaWV3LmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgpAQCAtMTQ1
LDUgKzE0NSw1IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGwKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKKyNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODgzLDYgKzg4Myw4IEBA
CiAJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENB
ODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICov
OyB9OwogCQlDRENBODVENTEzMkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1RDQxMzJB
QzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RDQTg1RUUxMzJBRDcw
MTAwRTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVERTEzMkFEMDUzMDBFOTYx
REYgLyogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbSAqLzsgfTsKKwkJQ0VEQTEyRTIx
NTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRURBMTJERjE1MkNDQUU4MDBE
OUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLzsgfTsKKwkJQ0VEQTEyRTMx
NTJDRDFCMzAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREUxNTJDQ0FFODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovOyB9OwogCQlEM0I5NDg0NjExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQyMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1
cE1lbnUuY3BwICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBN
ZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5
NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ4
MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi87IH07CkBAIC0xOTM3LDYgKzE5MzksOCBAQAog
CQlDRENBODVDNzEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUQ0MTMyQUMy
QjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0LmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RDQTg1REUxMzJBRDA1MzAwRTk2
MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURBMTJERTE1MkNDQUU4MDBEOUUwOEQgLyog
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQyMTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVw
TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc2OSw2ICsyNzcz
LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMxMTFBREUx
MTJGNUI5QTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJCQlDRURBMTJERjE1MkNDQUU4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcCAqLywKKwkJCQlDRURBMTJERTE1MkNDQUU4
MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQkMxMTFBNTMx
MTJGNEZCQjAwMzM3QkFCIC8qIFdlYkNocm9tZUNsaWVudC5jcHAgKi8sCiAJCQkJQkMwMzJENjAx
MEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oICovLAogCQkJCUJDMTExQTU0MTEy
RjRGQkIwMDMzN0JBQiAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5jcHAgKi8sCkBAIC00MTc4LDYg
KzQxODQsNyBAQAogCQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJl
bmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkg
LyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyRTMxNTJDRDFCMzAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00
OTIxLDYgKzQ5MjgsNyBAQAogCQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRl
ck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzk0ODQwMzE1MEMzNTA2MDBFNTJDRTkg
LyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5
NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQTEy
RTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqIHdlYlBh
Z2UpCis6IG1fcGFnZSh3ZWJQYWdlKQoreworfQorCitXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6
On5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKSk7Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlw
ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvcnJlY3Rpb25QYW5l
bCh0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCByZXBs
YWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpKTsKK30KKwordm9p
ZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24pKTsKK30K
KworU3RyaW5nIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29v
bihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCBy
ZXBsYWNlbWVudFN0cmluZykpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50X2gKKyNkZWZpbmUgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKKworI2luY2x1ZGUgPFdl
YkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViUGFnZSAqKTsKKyAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNv
b24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOworcHJpdmF0ZToKKyAg
ICBXZWJQYWdlICptX3BhZ2U7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiAxMTMyNTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTIgKzE0Miw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdCYpIE9WRVJSSURFOwotI2lmIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5
cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmlu
Z3MpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
U3RyaW5nKSBPVkVSUklERTsKLSNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2hvd1VuaWNvZGVNZW51KCkgT1ZFUlJJREU7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVu
dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVu
dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI4ICsyMzgsNCBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3Ro
KSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFy
YWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5lbChX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCi17Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Ci19Ci0KLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRl
cm5hdGl2ZVRleHQgcmVhc29uKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwotfQotCi1TdHJpbmcgV2Vi
RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKLXsKLSAgICBTdHJpbmcgcmVzdWx0
OwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzbWlz
c0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3Ry
aW5nKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxh
Y2VtZW50U3RyaW5nKSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQcmludElu
Zm8uaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgi
CiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKQEAgLTIzNCw2ICsyMzUsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVj
dG9yQ2xpZW50KHRoaXMpOwogI2VuZGlmCisgICAgcGFnZUNsaWVudHMuYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50ID0gbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCh0aGlzKTsKICAgICAKICAgICBt
X3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMTEzMjk1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0wNSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBF
ZGl0b3JDbGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IGNsYXNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29y
ZS9DaGFuZ2VMb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxMi0wNC0wMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdGhlIE5ldHdvcmsgSW5mb3JtYXRpb24g
QVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw2ICszNzAsOCBAQAogCQlD
RDhFQUM3MzExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4RUFDNzIxMUNBQzlBMzAwNzc0
MDc1IC8qIElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RBNjJBRTIxMjVGODdDMjAwN0ZEMTE4
IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE2MkFFMDEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNj
cmVlbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0RBNjJBRTMxMjVGODdDMjAwN0ZEMTE4IC8qIFdl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBNjJBRTExMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5D
b250cm9sbGVyLm1tICovOyB9OworCQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5tbSAqLzsgfTsKKwkJQ0VEQTEyREMxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oICovOyB9OwogCQlERDdDREVFNzBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ3
Q0RFRTYwQTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJREQ4
OTY4MjAwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRTA5QUE4NzI0MDA5
N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLzsgfTsKIAkJREQ4OTY4MjEwOUFBODcy
NDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdl
YkVsZW1lbnREaWN0aW9uYXJ5Lm1tICovOyB9OwpAQCAtNjk5LDYgKzcwMSw4IEBACiAJCUNEOEVB
QzcyMTFDQUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0
LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RBNjJBRTAxMjVG
ODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2Ny
ZWVuQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRURBMTJEOTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURBMTJEQTE1MkNC
RTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlERDdDREVFNjBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJUeXBlc0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREODk2ODFFMDlBQTg3MjQwMDk3
RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVsZW1lbnREaWN0aW9uYXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlERDg5Njgx
RjA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVsZW1lbnRE
aWN0aW9uYXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTEyOTQsNiArMTI5OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlC
ODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgy
OTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQlDRURB
MTJEOTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tICovLAor
CQkJCUNFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCAqLywKIAkJCQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNo
ZS5oICovLAogCQkJCUI2ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tICovLAogCQkJCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlv
bkNhY2hlUXVvdGFNYW5hZ2VyLmggKi8sCkBAIC0xNjQzLDYgKzE2NDksNyBAQAogCQkJCTQxRjQ0
ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlv
bkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQg
LyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMzAsNiAr
MjAzNyw3IEBACiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtl
cnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRTJGRTYxNEU0ODE4MjAwN0NDQTE4
IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFREExMkRCMTUyQ0JF
NjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTA1
ICBKaWEgUHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5l
bCByZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRl
cm5hdGl2ZVRleHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1bmN0aW9ucyBm
cm9tIFdlYkVkaXRvckNsaWVudCB0byB0aGUgbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC4K
KyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29ycmVjdGlvblBhbmVsLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldl
YkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp+V2ViRWRp
dG9yQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisK
IDIwMTItMDMtMTUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RnVsbCBTY3JlZW4gbW9kZSBzaG91bGQgY2FuY2VsIGJlZm9yZSBuYXZpZ2F0aW9uLgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVs
LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L0NvcnJlY3Rpb25QYW5lbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTIgQEAKICNp
Zm5kZWYgQ29ycmVjdGlvblBhbmVsX2gKICNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKIAotI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKICNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgotI2ltcG9ydCA8
V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaWYg
VVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorCiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgQ29y
cmVjdGlvblBhbmVsIHsKQEAgLTUzLDYgKzU0LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IG1fcmVzdWx0Rm9yRGlzbWlzc2FsOwogfTsKIAotI2VuZGlmIC8vICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFS
RCkKKyNlbmRpZiAvLyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKICNlbmRpZiAvLyBDb3Jy
ZWN0aW9uUGFuZWxfaApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYlZpZXdQcml2YXRlLmgiCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBpbmxpbmUgTlND
b3JyZWN0aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2
ZVRleHRUeXBlIGFsdGVybmF0aXZlVGV4dFR5cGUpCkBAIC0xMzcsNSArMTM3LDUgQEAgdm9pZCBD
b3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbAogICAgICAgICBtX3Jlc3VsdEZvckRp
c21pc3NhbC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKIH0KIAotI2VuZGlm
IC8vICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKKyNlbmRpZiAvL1VTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudF9oCisjZGVmaW5lIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCisKKyNpbXBvcnQgIkNv
cnJlY3Rpb25QYW5lbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQu
aD4KKworQGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVibGljOgorICAgIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3ICopOworICAgIHZpcnR1YWwgfldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVy
bmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVy
bmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7Citwcml2
YXRlOgorICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisgICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOworI2VuZGlmCit9Owor
CisjZW5kaWYgLy8gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCis6IG1fd2ViVmlldyh3ZWJW
aWV3KQoreworfQorCitXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICBkaXNtaXNz
QWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOwor
I2VuZGlmCit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlv
bkFsdGVybmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05f
UEFORUwpCisgICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHR5cGUsIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5n
LCBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisgICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2VuZGlmCit9CisK
K1N0cmluZyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7CisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNz
KHJlYXNvbik7CisjZWxzZQorcmV0dXJuIFN0cmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyNpZiBVU0UoQVVU
T0NPUlJFQ1RJT05fUEFORUwpCisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSBy
ZXNwb25zZVR5cGUgPT0gQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3Bv
bnNlUmV2ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKK0NvcnJlY3Rpb25QYW5l
bDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBs
YWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCit9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2
aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2lt
cG9ydCA8d3RmL0ZvcndhcmQuaD4KQEAgLTEzNiwxMiArMTM1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmKSBPVkVSUklERTsKLSNpZiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0Jv
eE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4
dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNv
b24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOwotI2VuZGlmCiBwcml2YXRlOgogICAg
IHZvaWQgcmVnaXN0ZXJVbmRvT3JSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVw
PiwgYm9vbCBpc1JlZG8pOwogICAgIFdlYkVkaXRvckNsaWVudCgpOwpAQCAtMTQ5LDggKzE0Miw0
IEBAIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJF
ZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiAgICAgYm9vbCBtX2hhdmVVbmRvUmVkb09w
ZXJhdGlvbnM7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVj
dGlvblBhbmVsOwotI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODksOSArMTg5LDYgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JD
bGllbnQoV2ViVmlldwogCiBXZWJFZGl0b3JDbGllbnQ6On5XZWJFZGl0b3JDbGllbnQoKQogewot
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKLSAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKLSNlbmRpZgogfQogCiBib29sIFdlYkVkaXRv
ckNsaWVudDo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQpAQCAtODY2LDI5ICs4
NjMsNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpCiAgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRo
R3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07
CiB9CiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rp
b25QYW5lbChBbHRlcm5hdGl2ZVRleHRUeXBlIHBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
bHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKLXsKLSAgICBtX2NvcnJlY3Rpb25QYW5lbC5z
aG93KG1fd2ViVmlldywgcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0
cmluZ3MpOwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbkZvckRpc21pc3Npbmcp
Ci17Ci0gICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nKTsK
LX0KLQotU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24o
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQot
ewotICAgIHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbkZvckRpc21pc3Np
bmcpOwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dFN0cmluZykKLXsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNl
VHlwZSA9PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rp
b25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgQ29y
cmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVz
cG9uc2UsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKIHsKICAgICBbW05TU3BlbGxDaGVja2VyIHNo
YXJlZFNwZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhNaXNzcGVsbGVkV29yZDpt
aXNzcGVsbGVkV29yZF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkRPTUNTU1N0eWxlRGVj
bGFyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0
ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCIKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3
YXJkTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lmgi
CkBAIC03MzYsNiArNzM3LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJh
bWVOYQogICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQo
c2VsZik7CiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHNl
bGYpOwogICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JD
bGllbnQoc2VsZik7CisgICAgcGFnZUNsaWVudHMuYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0gbmV3
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChzZWxmKTsKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5l
dyBQYWdlKHBhZ2VDbGllbnRzKTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgV2ViQ29y
ZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJHZW9sb2NhdGlv
bkNsaWVudChzZWxmKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135776</attachid>
            <date>2012-04-05 01:06:22 -0700</date>
            <delta_ts>2012-04-05 07:00:25 -0700</delta_ts>
            <desc>Fixing build.</desc>
            <filename>bug-82970-20120405010621.patch</filename>
            <type>text/plain</type>
            <size>69686</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA0LTA1ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUncyBubyBjaGFuZ2Ugb2YgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBUaGUgZXhpc3RpbmcgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1
bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgYXJlIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkgT1MgWC4K
KyAgICAgICAgV2UnZCBsaWtlIHRvIG1vdmUgdGhlbSBpbnRvIHNlcGFyYXRlIEFsdGVybmF0aXZl
VGV4dENsaWVudCBjbGFzcyB0byBhdm9pZCB1c2luZyAjaWZkZWYncy4gVGhpcworICAgICAgICBu
ZXcgY2xpZW50IGNsYXNzIHdpbGwgYWxzbyBob2xkIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSByZWxh
dGVkIGludGVyZmFjZSB0aGF0IHdlIHdpbGwgYWRkIHNvb24gZm9yCisgICAgICAgIGJ1ZyA4MjUw
My4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOiBDaGFuZ2VzIGluIHRoaXMgZmlsZSBhcmUgYWxs
IGZvciBjYWxsaW5nIGZ1bmN0aW9ucyBpbgorICAgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVu
dCBpbnN0ZWFkIG9mIHRob3NlIGluIEVkaXRvQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0
b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGV4dENoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudDo6
fkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEVkaXRvckNsaWVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNs
aWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUGFnZUNsaWVudHMpOgorICAgICAgICAoUGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAyMDEyLTA0LTA0ICBQ
YXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXVEY6
OmdldEN1cnJlbnRMb2NhbFRpbWUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk5NCw2
ICsyNTk5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwYWdlXEFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXGFuaW1hdGlvblxBbmltYXRpb25C
YXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTU3MzMsMTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcCAqLzsgfTsKLQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0Uw
OEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5
OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlBMTFENDVD
REEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlDRUEzOTQ5
RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0NGQzNCMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8q
IEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThDRjEx
Nzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBW
aWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
ICovOyB9OwpAQCAtMTI4NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFzaFNldE5v
ZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlE
MTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUyNzcsNiArMTUyNzksNyBAQAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2
QyAvKiBzY3JvbGxpbmcgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFic3Ry
YWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZp
ZXdTaXplT3JOb3QuaCAqLywKKwkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJh
ckluZm8uY3BwICovLAogCQkJCUJDMTI0RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmgg
Ki8sCiAJCQkJQkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLApAQCAt
MjQ3MjIsNiArMjQ3MjUsNyBAQAogCQkJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMDdEMzM1NjE1MkI2
MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9u
Rm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURBMTJENzE1MkNBMUNCMDBEOUUwOEQgLyog
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyhQYXMKICAgICBtX2FsdGVybmF0aXZlVGV4dElu
Zm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZVRvUmVwbGFjZTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpj
cmVhdGUocmVwbGFjZW1lbnQpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9
IHRydWU7Ci0gICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9hbHRlcm5hdGl2ZVRl
eHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxU
ZXh0LCByZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgaWYgKEFsdGVybmF0aXZl
VGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNs
aWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZlVGV4dEluZm8udHlw
ZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHJlcGxh
Y2VtZW50LCBWZWN0b3I8U3RyaW5nPigpKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQpAQCAtMTk1LDggKzE5Niw4IEBAIHZvaWQg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzcygKICAgICAgICAgcmV0dXJuOwogICAg
IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNz
ZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisgICAgaWYgKEFs
dGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisg
ICAgICAgIGNsaWVudC0+ZGlzbWlzc0FsdGVybmF0aXZlKHJlYXNvbkZvckRpc21pc3NpbmcpOwog
fQogCiBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQpAQCAtMjA1
LDkgKzIwNiw5IEBAIFN0cmluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXMKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2
ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNzZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmICgh
Y2xpZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICByZXR1cm4gY2xpZW50LT5kaXNtaXNzQWx0ZXJuYXRpdmVTb29uKHJlYXNvbkZv
ckRpc21pc3NpbmcpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcmIGFsdGVy
bmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc1RvQWRkKQpAQCAtMjg2LDcgKzI4Nyw4IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBdXQKIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25k
VG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uT2ZDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24pCiB7Ci0gICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rp
b24pOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZl
VGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6
Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSB8IEZyYW1lU2Vs
ZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCkuZW5kKCkpOwpAQCAtMzE3LDcgKzMxOSw4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6dGltZXJGaXIKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdS
ZWN0Rm9yUmFuZ2UobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdl
dCgpKTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNvbnN0IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHMqPihtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7Ci0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0Nv
cnJlY3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIGRldGFpbHMtPnJlcGxhY2VtZW50U3Ry
aW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4
dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAg
ICAgY2xpZW50LT5zaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwg
ZGV0YWlscy0+cmVwbGFjZW1lbnRTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzM1LDggKzMzOCwxMCBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyCiAgICAgICAgIHN1Z2dlc3Rpb25zLnJlbW92
ZSgwKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKICAg
ICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UobV9hbHRl
cm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdldCgpKTsKLSAgICAgICAgaWYg
KCFib3VuZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJl
Y3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0
ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25z
KTsKKyAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICAgICAgICAgIGNsaWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2Fs
dGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25zKTsKKyAgICAgICAgfQog
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc0LDcgKzM3OSw3IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWwKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKQogewotICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCk7CisgICAgcmV0dXJuIGVkaXRvckNsaWVudCgpICYmIGVkaXRvckNsaWVudCgp
LT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKIH0KIAogRmxvYXRSZWN0
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0IFJh
bmdlKiByYW5nZSkgY29uc3QKQEAgLTQ2MywyMSArNDY4LDI3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFQKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAotRWRpdG9y
Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpjbGllbnQoKQorQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGll
bnQoKQoreworICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmFs
dGVybmF0aXZlVGV4dENsaWVudCgpIDogMDsKK30KKworRWRpdG9yQ2xpZW50KiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVybiBtX2ZyYW1lLT5w
YWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmVkaXRvckNsaWVudCgpIDogMDsKIH0KIAogVGV4dENo
ZWNrZXJDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRleHRDaGVja2VyKCkKIHsK
LSAgICBpZiAoRWRpdG9yQ2xpZW50KiBvd25lciA9IGNsaWVudCgpKQorICAgIGlmIChFZGl0b3JD
bGllbnQqIG93bmVyID0gZWRpdG9yQ2xpZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lci0+dGV4
dENoZWNrZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAg
ICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1
dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShB
dXRvY29ycmVjdGlvblJldmVydGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcp
OwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVm
UHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKQpAQCAtNTEyLDEzICs1MjMsMTYgQEAgdm9pZCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRTcAogICAgIFZlY3RvcjxEb2N1bWVudE1h
cmtlcio+IGNvcnJlY3RlZE9uY2VNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2UocmFu
Z2VPZkNvcnJlY3Rpb24sIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKICAgICBpZiAo
Y29ycmVjdGVkT25jZU1hcmtlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgLy8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRv
IGRldGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQg
b3IKLSAgICAvLyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxj
aGVja2VyIGFjY29yZGluZ2x5LgotICAgIGlmIChtYXJrZXJzSGF2ZUlkZW50aWNhbERlc2NyaXB0
aW9uKGNvcnJlY3RlZE9uY2VNYXJrZXJzKSAmJiBjb3JyZWN0ZWRPbmNlTWFya2Vyc1swXS0+ZGVz
Y3JpcHRpb24oKSA9PSBjb3JyZWN0ZWQpCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29y
cmVjdGVkLCBjb3JyZWN0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25FZGl0ZWQs
IGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CisKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkgeworICAgICAgICAvLyBTcGVsbGlu
ZyBjb3JyZWN0ZWQgdGV4dCBoYXMgYmVlbiBlZGl0ZWQuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdXNlciBoYXMgcmV2ZXJ0ZWQgaXQgdG8gb3JpZ2luYWwgdGV4dCBvcgorICAgICAgICAv
LyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxjaGVja2VyIGFj
Y29yZGluZ2x5LgorICAgICAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihj
b3JyZWN0ZWRPbmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0tPmRlc2NyaXB0
aW9uKCkgPT0gY29ycmVjdGVkKQorICAgICAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlv
bik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShBdXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsK
KyAgICB9CisKICAgICBtYXJrZXJzLT5yZW1vdmVNYXJrZXJzKHJhbmdlT2ZDb3JyZWN0aW9uLCBE
b2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpS
ZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyX2gKICNkZWZpbmUgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcl9o
CiAKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgi
CkBAIC00OSwxMiArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0
RGV0YWlscygpIHsgfQogfTsKIAotZW51bSBBbHRlcm5hdGl2ZVRleHRUeXBlIHsKLSAgICBBbHRl
cm5hdGl2ZVRleHRUeXBlQ29ycmVjdGlvbiA9IDAsCi0gICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVJl
dmVyc2lvbiwKLSAgICBBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucywKLX07
Ci0KIHN0cnVjdCBBbHRlcm5hdGl2ZVRleHRJbmZvIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
V2l0aEFsdGVybmF0aXZlOwogICAgIGJvb2wgaXNBY3RpdmU7CkBAIC02NSwxMiArNjAsNiBAQCBz
dHJ1Y3QgQWx0ZXJuYXRpdmVUZXh0SW5mbyB7CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7
CiAKLWVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Ci0gICAgUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCi0gICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCi0gICAgUmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCi19OwotCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQogLy8gVGhlc2UgYmFja3NsYXNoZXMgYXJlIGZvciBtYWtpbmcgc3R5bGUgY2hlY2tlciBo
YXBweS4KICNkZWZpbmUgVU5MRVNTX0VOQUJMRUQoZnVuY3Rpb25Cb2R5KSBcCkBAIC0xMzQsMTIg
KzEyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICB8fCBtYXJrZXItPnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLT5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKICAgICB9CiAKLSAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCgpOworICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKKyAgICAKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKTsKICAgICBGbG9hdFJlY3Qgcm9vdFZpZXdSZWN0Rm9y
UmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsKICAgICB2b2lkIG1hcmtQcmVjZWRpbmdXaGl0ZXNw
YWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKEVkaXRDb21tYW5kKik7CiAK
LSAgICBFZGl0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAg
VGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4gbV90aW1lcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkocmV2aXNpb24gMTEzMjUxKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsMTEgKzIyLDE1IEBACiAjZGVmaW5lIFRleHRDaGVja2luZ0hlbHBlcl9oCiAK
ICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7CiBjbGFzcyBQb3NpdGlvbjsK
K3N0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFw
aCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxOSwxMiArNTE5LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgVGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJDbGll
bnQ7IH0KIAotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIHsgfQotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2
ZVRleHRDbGllbnRfaAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Cisg
ICAgUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCisgICAg
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCisgICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCit9OworCitlbnVtIEFsdGVybmF0aXZl
VGV4dFR5cGUgeworICAgIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKKyAgICBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVs
bGluZ1N1Z2dlc3Rpb25zLAorfTsKKworZW51bSBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7
CisgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCisgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAor
fTsKKworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BbHRlcm5hdGl2ZVRleHRDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworfTsK
KyAgICAKK30KKworI2VuZGlmIC8vIEFsdGVybmF0aXZlVGV4dENsaWVudF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpZm5kZWYgRWRpdG9yQ2xpZW50X2gKICNkZWZpbmUgRWRpdG9yQ2xpZW50X2gKIAotI2luY2x1
ZGUgIkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRB
Y3Rpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHku
aCIKQEAgLTE0NiwxOCArMTQ1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSA9IDA7CiAKLSAgICBlbnVtIEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHsKLSAgICAgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgICAgIEF1dG9j
b3JyZWN0aW9uUmV2ZXJ0ZWQKLSAgICB9OwotCi0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKLSNlbmRpZgotCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFt
bWFyRGV0YWlsJiBkZXRhaWwpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdykgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc1BhaW50aW5nKGZhbHNlKQogI2VuZGlm
CisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ2xpZW50cy5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKQEAgLTExMTEsNyArMTExMiw4IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW0KIH0KIAogUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGll
bnRzKCkKLSAgICA6IGNocm9tZUNsaWVudCgwKQorICAgIDogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KDApCisgICAgLCBjaHJvbWVDbGllbnQoMCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAg
ICAsIGNvbnRleHRNZW51Q2xpZW50KDApCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogICAgIGNsYXNzIEJhY2tGb3J3
YXJkQ29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7CiAgICAgY2xhc3MgQ2hy
b21lOwpAQCAtMTAzLDYgKzEwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBhZ2VDbGllbnRzKCk7CiAgICAgICAgICAgICB+UGFnZUNsaWVudHMoKTsKIAorICAgICAgICAg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAgICAgICAg
ICAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICAgICAgICAgIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudDsKQEAg
LTMzMyw2ICszMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNQ
YWludGluZyhib29sIHBhaW50aW5nKSB7IG1faXNQYWludGluZyA9IHBhaW50aW5nOyB9CiAgICAg
ICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWludGluZzsgfQogI2Vu
ZGlmCisKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsgfQorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDMyLDYgKzQzNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgbV9pc1BhaW50
aW5nOwogI2VuZGlmCisgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2
ZVRleHRDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTEzMjk1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDQtMDUgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25z
IGZyb20gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4dENsaWVudCBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
OTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gV2ViRWRpdG9yQ2xpZW50
IHRvIHRoZSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LgorICAgICAgICBTZWUgV2ViQ29y
ZS9DaGFuZ2VMb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoUGFnZUNsaWVudEltcGwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNsaWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9Db3JyZWN0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0NvcnJlY3Rp
b25QYW5lbC5tbToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+V2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93
Q29ycmVjdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
V2ViUGFnZSk6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEyLTA0LTA0ICBI
YXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgUmVpZmll
ZFRyZWVUcmF2ZXJzYWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMzI1MSkKKysrIFNv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw2ICszNDEsNyBA
QCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmggXAogICAgIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBcCisgICAg
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBcCiAgICAgV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIFwKICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oIFwKQEAgLTcwMCw2ICs3
MDEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHku
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMTg4LDcgKzE4
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4
dCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpFZGl0b3JDbGll
bnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25S
ZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3Jv
bGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKSA9IDA7CiAgICAgCiAgICAgdmly
dHVhbCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzczOCw3
ICszNzM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJl
c3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBtX3BhZ2VDbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUpcmVz
cG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIG1fcGFn
ZUNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSgoQXV0b2NvcnJlY3Rpb25SZXNw
b25zZVR5cGUpcmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcp
OwogfQogI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw5IEBA
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlH
dGsuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRXZl
bnROYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNob3dD
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7CisgICAgdmlydHVh
bCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Ny
b2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg4LDEwICs0ODgsMTAgQEAgU3RyaW5nIFBh
Z2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvbgogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRv
Y29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCi0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25z
ZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkID8gTlNDb3JyZWN0
aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNlRWRpdGVkOworICAgIE5T
Q29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0
aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9u
UmVzcG9uc2VFZGl0ZWQ7CiAgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlv
blJlc3BvbnNlKG1fd2tWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50
U3RyaW5nKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgJKHJldmlzaW9uIDExMzI1MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDExICsyNiwxMiBAQAogI2lmbmRlZiBDb3JyZWN0aW9uUGFuZWxfaAog
I2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2VyLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpZiBV
U0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisKIEBjbGFzcyBXS1ZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTYsNiArNTcsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAotI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNlbmRp
ZiAvLyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKICNlbmRpZiAvLyBDb3JyZWN0aW9uUGFu
ZWxfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9u
UGFuZWwubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvQ29ycmVjdGlvblBhbmVsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBACiAg
Ki8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAKKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
IldLVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKQEAgLTE0NSw1ICsxNDUsNSBA
QCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8hZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw2ICs4ODMsOCBAQAogCQlDRENBODVD
OTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1QzcxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0RD
QTg1RDUxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUQ0MTMyQUMyQjMwMEU5NjFE
RiAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQ0E4NUVFMTMyQUQ3MDEwMEU5NjFERiAv
KiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1REUxMzJBRDA1MzAwRTk2MURGIC8qIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CisJCUNFREExMkUyMTUyQ0QxQUUwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi87IH07CisJCUNFREExMkUzMTUyQ0QxQjMwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJRDNCOTQ4NDYxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAq
LzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0ODExRkY0QjY1MDAw
MzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwICovOyB9OwpAQCAtMTkzNyw2ICsxOTM5LDggQEAKIAkJQ0RDQTg1Qzcx
MzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVENDEzMkFDMkIzMDBFOTYxREYg
LyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBh
dGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUNEQ0E4NURFMTMyQUQwNTMwMEU5NjFERiAvKiBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEy
REYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0MjExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0
ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NjksNiArMjc3Myw4IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMTExQURFMTEyRjVCOUEwMDMz
N0JBQiAvKiBtYWMgKi8sCisJCQkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5jcHAgKi8sCisJCQkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhEIC8q
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAogCQkJCUJDMTExQTUzMTEyRjRGQkIwMDMz
N0JBQiAvKiBXZWJDaHJvbWVDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDYwMTBGNDM3OEQwMDU4
QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLywKIAkJCQlCQzExMUE1NDExMkY0RkJCMDAzMzdC
QUIgLyogV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwICovLApAQCAtNDE3OCw2ICs0MTg0LDcgQEAK
IAkJCQkzNzYwODgyMzE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJSZW5kZXJMYXllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVy
TGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNFREExMkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDkyMSw2ICs0OTI4
LDcgQEAKIAkJCQkzNzYwODgyMjE1MDQxNEY3MDBGQzgyQzcgLyogV0tSZW5kZXJPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDMxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJlbmRl
ckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3OTQ4NDA4MTUwQzRCOTcwMEU1MkNFOSAv
KiBXS1JlbmRlckxheWVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNFREExMkUyMTUyQ0QxQUUw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQYWdlKiB3ZWJQYWdlKQorOiBtX3Bh
Z2Uod2ViUGFnZSkKK3sKK30KKworV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+V2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KCkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRp
dmVUZXh0SWdub3JlZCkpOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6c2hv
d0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlwZSwgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Cit9CisKK3ZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCByZWFzb24pCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uKSk7Cit9CisKK1N0cmluZyBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24oUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7CisgICAgU3RyaW5nIHJlc3VsdDsK
KyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCit7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UocmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRT
dHJpbmcpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCisjZGVm
aW5lIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVy
bmF0aXZlVGV4dENsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFn
ZTsKKworY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENsaWVudCB7CitwdWJsaWM6CisgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KFdlYlBhZ2UgKik7CisgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7
CisgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRl
cm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKK3ByaXZhdGU6CisgICAgV2ViUGFnZSAq
bV9wYWdlOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyLDEyICsxNDIsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGNvbnN0IFdl
YkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmKSBPVkVSUklERTsKLSNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZF
UlJJREU7Ci0jZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFNob3dVbmljb2RlTWVudSgpIE9WRVJSSURFOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRWRpdG9yQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzOCwyOCArMjM4LDQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrVGV4dE9mUGFyYWdyYQogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNoZWNraW5n
VHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVw
bHkocmVzdWx0cykpOwogfQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJE
KQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29ycmVjdGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykpOwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0
IHJlYXNvbikKLXsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlz
bWlzc0NvcnJlY3Rpb25QYW5lbChyZWFzb24pKTsKLX0KLQotU3RyaW5nIFdlYkVkaXRvckNsaWVu
dDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCByZWFzb24pCi17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBtX3Bh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxTb29uKHJlYXNvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3NDb3JyZWN0aW9u
UGFuZWxTb29uOjpSZXBseShyZXN1bHQpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGll
bnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKLXsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmlu
ZykpOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTEzMjUx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5j
bHVkZSAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zvcndh
cmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCkBAIC0yMzQsNiArMjM1LDcgQEAgV2ViUGFnZTo6
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAg
ICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudCh0
aGlzKTsKICNlbmRpZgorICAgIHBhZ2VDbGllbnRzLmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5l
dyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQodGhpcyk7CiAgICAgCiAgICAgbV9wYWdlID0gYWRv
cHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LnZjcHJvagkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODMwLDYgKzE4MzAsMTQgQEAKIAkJCQlOYW1lPSJX
ZWJDb3JlU3VwcG9ydCIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxX
ZWJQcm9jZXNzXFdlYkNvcmVTdXBwb3J0XFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQ
cm9jZXNzXFdlYkNvcmVTdXBwb3J0XFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vz
c1xXZWJDb3JlU3VwcG9ydFxXZWJDaHJvbWVDbGllbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMDUgIEppYSBQdSAg
PGpwdUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQg
ZnVuY3Rpb25zIGZyb20gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4
dENsaWVudCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyOTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMDQtMDEgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHRoZSBOZXR3
b3JrIEluZm9ybWF0aW9uIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAs
NiArMzcwLDggQEAKIAkJQ0Q4RUFDNzMxMUNBQzlBMzAwNzc0MDc1IC8qIElPS2l0LmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEVB
QzcyMTFDQUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQTYyQUUy
MTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNjJBRTAxMjVGODdDMjAwN0ZE
MTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggKi87IH07CiAJCUNEQTYyQUUzMTI1Rjg3
QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAv
KiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbSAqLzsgfTsKKwkJQ0VEQTEyREIxNTJDQkU2ODAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkQ5MTUyQ0JFNjgwMEQ5RTA4RCAvKiBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gKi87IH07CisJCUNFREExMkRDMTUyQ0JFNjgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJREQ3Q0RFRTcwQTIzQkE5RTAwMDY5OTI4
IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEREN0NERUU2MEEyM0JBOUUwMDA2OTkyOCAvKiBXZWJUeXBlc0ludGVybmFs
LmggKi87IH07CiAJCUREODk2ODIwMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlv
bmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4
OTY4MUUwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggKi87IH07CiAJ
CUREODk2ODIxMDlBQTg3MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREODk2ODFGMDlBQTg3
MjQwMDk3RTdGMCAvKiBXZWJFbGVtZW50RGljdGlvbmFyeS5tbSAqLzsgfTsKQEAgLTY5OSw2ICs3
MDEsOCBAQAogCQlDRDhFQUM3MjExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSBJT0tpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9JT0tpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07
CiAJCUNEQTYyQUUwMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREE2MkFFMTEyNUY4N0MyMDA3RkQx
MTggLyogV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQ3Q0RFRTYwQTIzQkE5RTAwMDY5
OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERDg5
NjgxRTA5QUE4NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJFbGVtZW50RGljdGlv
bmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJFbGVtZW50RGljdGlvbmFyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjk0LDYgKzEyOTgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5l
bC5oICovLAogCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwu
bW0gKi8sCisJCQkJQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5tbSAqLywKKwkJCQlDRURBMTJEQTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQjY4MDQ5NzEwRkZCQ0VDMTAwOUY3RjYyIC8qIFdl
YkFwcGxpY2F0aW9uQ2FjaGUuaCAqLywKIAkJCQlCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyog
V2ViQXBwbGljYXRpb25DYWNoZS5tbSAqLywKIAkJCQlBNURFRkMxMTExRDUzNDRCMDA4ODUyNzMg
LyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oICovLApAQCAtMTY0Myw2ICsxNjQ5
LDcgQEAKIAkJCQk0MUY0NDg0RjEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1ByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3Rp
ZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkUyRkU5MTRFNDgyMTUwMDdDQ0ExOCAv
KiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyREMx
NTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMDMwLDYgKzIwMzcsNyBAQAogCQkJCUJDMkU0NjRFMEZEOEE5NjgwMEE5RDlERSAv
KiBXZWJWaWV3RGF0YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxRjQ0ODUwMTAzMzhFOEMwMDMw
RTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMkUyRkU2
MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTMyOTUpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MCBAQAorMjAxMi0wNC0wNSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAgICAgICBNb3Zl
IGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBFZGl0b3JDbGllbnQgaW50
byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IGNsYXNzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVs
YXRlZCBmdW5jdGlvbnMgZnJvbSBXZWJFZGl0b3JDbGllbnQgdG8gdGhlIG5ldyBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuCisgICAgICAgIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgZGV0YWls
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5tbTogQWRkZWQuCisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKToKKyAgICAgICAg
KFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlKToKKyAgICAgICAg
KFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAg
ICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6fldlYkVkaXRvckNsaWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6
Z3JvdXBOYW1lOl0pOgorCiAyMDEyLTAzLTE1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZ1bGwgU2NyZWVuIG1vZGUgc2hvdWxkIGNhbmNlbCBiZWZvcmUgbmF2
aWdhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rp
b25QYW5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L0NvcnJlY3Rpb25QYW5lbC5oCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTEgKzI2LDEyIEBACiAjaWZuZGVmIENvcnJlY3Rpb25QYW5lbF9oCiAjZGVmaW5lIENvcnJlY3Rp
b25QYW5lbF9oCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNr
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KIAorI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKwogQGNsYXNzIFdlYlZp
ZXc7CiAKIGNsYXNzIENvcnJlY3Rpb25QYW5lbCB7CkBAIC01Myw2ICs1NCw2IEBAIHByaXZhdGU6
CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3Jlc3VsdEZvckRpc21pc3NhbDsKIH07CiAKLSNl
bmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9TTk9XX0xFT1BBUkQpCisjZW5kaWYgLy8gVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQog
CiAjZW5kaWYgLy8gQ29ycmVjdGlvblBhbmVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Db3JyZWN0aW9uUGFuZWwubW0JKHJldmlzaW9uIDExMzI1
MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJlY3Rpb25QYW5lbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgogCi0jaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorI2lm
IFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBz
dGF0aWMgaW5saW5lIE5TQ29ycmVjdGlvbkluZGljYXRvclR5cGUgY29ycmVjdGlvbkluZGljYXRv
clR5cGUoQWx0ZXJuYXRpdmVUZXh0VHlwZSBhbHRlcm5hdGl2ZVRleHRUeXBlKQpAQCAtMTM3LDUg
KzEzNyw1IEBAIHZvaWQgQ29ycmVjdGlvblBhbmVsOjpoYW5kbGVBY2NlcHRlZFJlcGwKICAgICAg
ICAgbV9yZXN1bHRGb3JEaXNtaXNzYWwuYWRvcHROUyhbYWNjZXB0ZWRSZXBsYWNlbWVudCBjb3B5
XSk7CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjZW5kaWYgLy9VU0UoQVVUT0NPUlJFQ1RJ
T05fUEFORUwpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnRfaAorI2RlZmluZSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRf
aAorCisjaW1wb3J0ICJDb3JyZWN0aW9uUGFuZWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50Lmg+CisKK0BjbGFzcyBXZWJWaWV3OworCitjbGFzcyBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyAqKTsKKyAgICB2
aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hv
d0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlKFdlYkNvcmU6OlJlYXNv
bkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0Fs
dGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
IE9WRVJSSURFOworcHJpdmF0ZToKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIENvcnJlY3Rpb25QYW5lbCBtX2NvcnJlY3Rpb25QYW5l
bDsKKyNlbmRpZgorfTsKKworI2VuZGlmIC8vIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQor
OiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Ojp+
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFO
RUwpCisgICAgZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHRJZ25vcmVkKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCit7CisjaWYgVVNF
KEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVsLnNob3cobV93ZWJW
aWV3LCB0eXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3RyaW5nLCBy
ZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUo
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7CisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29u
KTsKKyNlbmRpZgorfQorCitTdHJpbmcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpkaXNtaXNz
QWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29u
KQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICByZXR1cm4gbV9jb3JyZWN0
aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2Vsc2UKK3JldHVybiBTdHJpbmcoKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
Cit7CisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQorICAgIE5TQ29ycmVjdGlvblJlc3Bv
bnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBlID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBO
U0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7
CitDb3JyZWN0aW9uUGFuZWw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UobV93ZWJWaWV3
LCByZXNwb25zZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKKyNlbmRpZgor
fQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2
IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIkNvcnJlY3Rpb25QYW5lbC5oIgogI2lt
cG9ydCA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dENoZWNr
ZXJDbGllbnQuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xMzYsMTIgKzEzNSw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Jikg
T1ZFUlJJREU7Ci0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJl
c3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKLSNlbmRp
ZgogcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVW5kb09yUmVkb1N0ZXAoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpVbmRvU3RlcD4sIGJvb2wgaXNSZWRvKTsKICAgICBXZWJFZGl0b3JDbGllbnQoKTsK
QEAgLTE0OSw4ICsxNDIsNCBAQCBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAg
ICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldD4gbV91bmRvVGFyZ2V0OwogICAgIGJvb2wg
bV9oYXZlVW5kb1JlZG9PcGVyYXRpb25zOwotCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotICAgIENvcnJlY3Rp
b25QYW5lbCBtX2NvcnJlY3Rpb25QYW5lbDsKLSNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlz
aW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg5LDkgKzE4OSw2IEBAIFdlYkVkaXRvckNs
aWVudDo6V2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcKIAogV2ViRWRpdG9yQ2xpZW50Ojp+V2ViRWRp
dG9yQ2xpZW50KCkKIHsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5l
bChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7Ci0jZW5kaWYKIH0K
IAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkKQEAgLTg2NiwyOSArODYzLDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxs
aW5nVUlXaQogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVT
cGVsbGluZ1BhbmVsV2l0aEdyYW1tYXJTdHJpbmc6YmFkR3JhbW1hclBocmFzZSBkZXRhaWw6Z3Jh
bW1hckRldGFpbERpY3RdOwogfQogCi0jaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnNob3dDb3JyZWN0aW9uUGFuZWwoQWx0ZXJuYXRpdmVUZXh0VHlwZSBwYW5lbFR5cGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCi17Ci0gICAgbV9j
b3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKLX0KLQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpc21p
c3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFz
b25Gb3JEaXNtaXNzaW5nKQotewotICAgIG1fY29ycmVjdGlvblBhbmVsLmRpc21pc3MocmVhc29u
Rm9yRGlzbWlzc2luZyk7Ci19Ci0KLVN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29u
Rm9yRGlzbWlzc2luZykKLXsKLSAgICByZXR1cm4gbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhy
ZWFzb25Gb3JEaXNtaXNzaW5nKTsKLX0KLQotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpCi17Ci0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVz
cG9uc2UgPSByZXNwb25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVy
dGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNl
RWRpdGVkOwotICAgIENvcnJlY3Rpb25QYW5lbDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25z
ZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcp
OwotfQotI2VuZGlmCi0KIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVTcGVsbGluZ1VJV2l0
aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpCiB7CiAgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRo
TWlzc3BlbGxlZFdvcmQ6bWlzc3BlbGxlZFdvcmRdOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW1wb3J0
ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW1w
b3J0ICJXZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5oIgpAQCAtNzM2LDYgKzczNyw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcg
V2ViRWRpdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcg
V2ViRHJhZ0NsaWVudChzZWxmKTsKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOworICAgIHBhZ2VDbGllbnRzLmFsdGVybmF0aXZl
VGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoc2VsZik7CiAgICAgX3By
aXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAjaWYgRU5BQkxFKEdFT0xPQ0FU
SU9OKQogICAgIFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKF9wcml2YXRlLT5wYWdlLCBu
ZXcgV2ViR2VvbG9jYXRpb25DbGllbnQoc2VsZikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135816</attachid>
            <date>2012-04-05 07:00:31 -0700</date>
            <delta_ts>2012-04-05 10:40:06 -0700</delta_ts>
            <desc>Fixing build.</desc>
            <filename>bug-82970-20120405070030.patch</filename>
            <type>text/plain</type>
            <size>68353</size>
            <attacher name="Jia Pu">jiapu.mail</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA0LTA1ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVk
IGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlcmUncyBubyBjaGFuZ2Ugb2YgZnVuY3Rpb25h
bGl0eS4KKworICAgICAgICBUaGUgZXhpc3RpbmcgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1
bmN0aW9ucyBpbiBFZGl0b3JDbGllbnQgYXJlIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkgT1MgWC4K
KyAgICAgICAgV2UnZCBsaWtlIHRvIG1vdmUgdGhlbSBpbnRvIHNlcGFyYXRlIEFsdGVybmF0aXZl
VGV4dENsaWVudCBjbGFzcyB0byBhdm9pZCB1c2luZyAjaWZkZWYncy4gVGhpcworICAgICAgICBu
ZXcgY2xpZW50IGNsYXNzIHdpbGwgYWxzbyBob2xkIGRpY3RhdGlvbiBhbHRlcm5hdGl2ZSByZWxh
dGVkIGludGVyZmFjZSB0aGF0IHdlIHdpbGwgYWRkIHNvb24gZm9yCisgICAgICAgIGJ1ZyA4MjUw
My4KKworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOiBDaGFuZ2VzIGluIHRoaXMgZmlsZSBhcmUgYWxs
IGZvciBjYWxsaW5nIGZ1bmN0aW9ucyBpbgorICAgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVu
dCBpbnN0ZWFkIG9mIHRob3NlIGluIEVkaXRvQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmRpc21pc3NTb29uKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxsQ29ycmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjplZGl0
b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
dGV4dENoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcik6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAg
ICAgICAgKEVtcHR5RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKiBwYWdlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudDo6
fkFsdGVybmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKEVkaXRvckNsaWVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNs
aWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUGFnZUNsaWVudHMpOgorICAgICAgICAoUGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorCiAyMDEyLTA0LTA0ICBQ
YXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXVEY6
OmdldEN1cnJlbnRMb2NhbFRpbWUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk5NCw2
ICsyNTk5NCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwYWdlXEFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXGFuaW1hdGlvblxBbmltYXRpb25C
YXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTU3MzMsMTEgKzU3MzMsMTIgQEAKIAkJQ0UwNTdGQTUxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJQ0UwNTdGQTYxMjIwNzMxMTAwQTQ3NkQ1
IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMDhDM0QxMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0NGMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmNwcCAqLzsgfTsKLQkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0Uw
OEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5
OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0U1NEZEMzgxMDE2RDlBNjAwOEI0NEM4IC8qIFNj
cmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyogU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQTM5NDlBMTFENDVD
REEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovOyB9OwogCQlDRUEzOTQ5
RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUEzOTQ5QjExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi87IH07CiAJCUNFQ0NGQzNCMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLzsgfTsKKwkJQ0VEQTEyRDcxNTJDQTFDQjAwRDlFMDhEIC8q
IEFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0VEQTEyRDYxNTJDQTFDQjAwRDlFMDhEIC8qIEFsdGVybmF0aXZlVGV4
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNFRjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzExNzk2
NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThDRjEx
Nzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBW
aWV3cG9ydEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
ICovOyB9OwpAQCAtMTI4NDEsNiArMTI4NDIsNyBAQAogCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0
Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNFQTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFzaFNldE5v
ZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQxOTczRDUw
MDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlE
MTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTUyNzcsNiArMTUyNzksNyBAQAogCQkJCTFBRjYyRUUxMTREQTIyQTcwMDQxNTU2
QyAvKiBzY3JvbGxpbmcgKi8sCiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFic3Ry
YWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZp
ZXdTaXplT3JOb3QuaCAqLywKKwkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCiAJCQkJQkMxMjRFRTQwQzI2NDFDRDAwOUUyMzQ5IC8qIEJh
ckluZm8uY3BwICovLAogCQkJCUJDMTI0RUU1MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmgg
Ki8sCiAJCQkJQkMxMjRFRTYwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhckluZm8uaWRsICovLApAQCAt
MjQ3MjIsNiArMjQ3MjUsNyBAQAogCQkJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMDdEMzM1NjE1MkI2
MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTA3RDMzNTgxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lzaW9u
Rm9ybWF0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURBMTJENzE1MkNBMUNCMDBEOUUwOEQgLyog
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyhQYXMKICAgICBtX2FsdGVybmF0aXZlVGV4dElu
Zm8ucmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSByYW5nZVRvUmVwbGFjZTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscyA9IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzOjpj
cmVhdGUocmVwbGFjZW1lbnQpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9
IHRydWU7Ci0gICAgY2xpZW50KCktPnNob3dDb3JyZWN0aW9uUGFuZWwobV9hbHRlcm5hdGl2ZVRl
eHRJbmZvLnR5cGUsIGJvdW5kaW5nQm94LCBtX2FsdGVybmF0aXZlVGV4dEluZm8ub3JpZ2luYWxU
ZXh0LCByZXBsYWNlbWVudCwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgaWYgKEFsdGVybmF0aXZl
VGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgIGNs
aWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2FsdGVybmF0aXZlVGV4dEluZm8udHlw
ZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHJlcGxh
Y2VtZW50LCBWZWN0b3I8U3RyaW5nPigpKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpoYW5kbGVDYW5jZWxPcGVyYXRpb24oKQpAQCAtMTk1LDggKzE5Niw4IEBAIHZvaWQg
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzcygKICAgICAgICAgcmV0dXJuOwogICAg
IG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNz
ZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWwocmVhc29uRm9yRGlzbWlzc2luZyk7CisgICAgaWYgKEFs
dGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisg
ICAgICAgIGNsaWVudC0+ZGlzbWlzc0FsdGVybmF0aXZlKHJlYXNvbkZvckRpc21pc3NpbmcpOwog
fQogCiBTdHJpbmcgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGlzbWlzc1Nvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQpAQCAtMjA1
LDkgKzIwNiw5IEBAIFN0cmluZyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaXNtaXMKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5pc0FjdGl2
ZSA9IGZhbHNlOwogICAgIG1faXNEaXNtaXNzZWRCeUVkaXRpbmcgPSB0cnVlOwotICAgIGlmICgh
Y2xpZW50KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gY2xpZW50KCkt
PmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKHJlYXNvbkZvckRpc21pc3NpbmcpOworICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICByZXR1cm4gY2xpZW50LT5kaXNtaXNzQWx0ZXJuYXRpdmVTb29uKHJlYXNvbkZv
ckRpc21pc3NpbmcpOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseUFsdGVybmF0aXZlVGV4dChjb25zdCBTdHJpbmcmIGFsdGVy
bmF0aXZlLCBjb25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+JiBtYXJrZXJU
eXBlc1RvQWRkKQpAQCAtMjg2LDcgKzI4Nyw4IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6YXBwbHlBdXQKIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZXNwb25k
VG9VbmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uT2ZDb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNv
cnJlY3Rpb24pCiB7Ci0gICAgY2xpZW50KCktPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2Uo
RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rp
b24pOworICAgIGlmIChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZl
VGV4dENsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsKICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6
Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSB8IEZyYW1lU2Vs
ZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIG1fZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS5zdGFydCgpLCBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9u
KCkuZW5kKCkpOwpAQCAtMzE3LDcgKzMxOSw4IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6dGltZXJGaXIKICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdS
ZWN0Rm9yUmFuZ2UobV9hbHRlcm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdl
dCgpKTsKICAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGNvbnN0IEF1dG9jb3JyZWN0aW9uQWx0ZXJuYXRpdmVEZXRhaWxzKiBkZXRhaWxzID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQXV0b2NvcnJlY3Rpb25BbHRlcm5hdGl2ZURldGFpbHMqPihtX2FsdGVybmF0
aXZlVGV4dEluZm8uZGV0YWlscy5nZXQoKSk7Ci0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0Nv
cnJlY3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1f
YWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIGRldGFpbHMtPnJlcGxhY2VtZW50U3Ry
aW5nKCksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAgICAgaWYgKEFsdGVybmF0aXZlVGV4
dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCisgICAgICAgICAgICAg
ICAgY2xpZW50LT5zaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by50eXBlLCBib3VuZGluZ0JveCwgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLm9yaWdpbmFsVGV4dCwg
ZGV0YWlscy0+cmVwbGFjZW1lbnRTdHJpbmcoKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzM1LDggKzMzOCwxMCBAQCB2b2lkIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyCiAgICAgICAgIHN1Z2dlc3Rpb25zLnJlbW92
ZSgwKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZVRleHRJbmZvLmlzQWN0aXZlID0gdHJ1ZTsKICAg
ICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcm9vdFZpZXdSZWN0Rm9yUmFuZ2UobV9hbHRl
cm5hdGl2ZVRleHRJbmZvLnJhbmdlV2l0aEFsdGVybmF0aXZlLmdldCgpKTsKLSAgICAgICAgaWYg
KCFib3VuZGluZ0JveC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjbGllbnQoKS0+c2hvd0NvcnJl
Y3Rpb25QYW5lbChtX2FsdGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0
ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25z
KTsKKyAgICAgICAgaWYgKCFib3VuZGluZ0JveC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlm
IChBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQorICAgICAgICAgICAgICAgIGNsaWVudC0+c2hvd0NvcnJlY3Rpb25BbHRlcm5hdGl2ZShtX2Fs
dGVybmF0aXZlVGV4dEluZm8udHlwZSwgYm91bmRpbmdCb3gsIG1fYWx0ZXJuYXRpdmVUZXh0SW5m
by5vcmlnaW5hbFRleHQsIHRvcFN1Z2dlc3Rpb24sIHN1Z2dlc3Rpb25zKTsKKyAgICAgICAgfQog
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc0LDcgKzM3OSw3IEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFuZGxlQWwKIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjppc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKQogewotICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b25FbmFibGVkKCk7CisgICAgcmV0dXJuIGVkaXRvckNsaWVudCgpICYmIGVkaXRvckNsaWVudCgp
LT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKIH0KIAogRmxvYXRSZWN0
IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJvb3RWaWV3UmVjdEZvclJhbmdlKGNvbnN0IFJh
bmdlKiByYW5nZSkgY29uc3QKQEAgLTQ2MywyMSArNDY4LDI3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVzcG9uZFQKICAgICBtYXJrZXJzLT5hZGRNYXJrZXIocmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KIAotRWRpdG9y
Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpjbGllbnQoKQorQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphbHRlcm5hdGl2ZVRleHRDbGll
bnQoKQoreworICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmFs
dGVybmF0aXZlVGV4dENsaWVudCgpIDogMDsKK30KKworRWRpdG9yQ2xpZW50KiBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjplZGl0b3JDbGllbnQoKQogewogICAgIHJldHVybiBtX2ZyYW1lLT5w
YWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmVkaXRvckNsaWVudCgpIDogMDsKIH0KIAogVGV4dENo
ZWNrZXJDbGllbnQqIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRleHRDaGVja2VyKCkKIHsK
LSAgICBpZiAoRWRpdG9yQ2xpZW50KiBvd25lciA9IGNsaWVudCgpKQorICAgIGlmIChFZGl0b3JD
bGllbnQqIG93bmVyID0gZWRpdG9yQ2xpZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lci0+dGV4
dENoZWNrZXIoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlUmV2ZXJzZWQoY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAg
ICBjbGllbnQoKS0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShFZGl0b3JDbGllbnQ6OkF1
dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CisgICAgaWYgKEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkpCisgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShB
dXRvY29ycmVjdGlvblJldmVydGVkLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcp
OwogfQogCiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VSZXZlcnNlZChjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBQYXNzUmVm
UHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlKQpAQCAtNTEyLDEzICs1MjMsMTYgQEAgdm9pZCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZWNvcmRTcAogICAgIFZlY3RvcjxEb2N1bWVudE1h
cmtlcio+IGNvcnJlY3RlZE9uY2VNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2UocmFu
Z2VPZkNvcnJlY3Rpb24sIERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKTsKICAgICBpZiAo
Y29ycmVjdGVkT25jZU1hcmtlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgLy8gU3BlbGxpbmcgY29ycmVjdGVkIHRleHQgaGFzIGJlZW4gZWRpdGVkLiBXZSBuZWVkIHRv
IGRldGVybWluZSB3aGV0aGVyIHVzZXIgaGFzIHJldmVydGVkIGl0IHRvIG9yaWdpbmFsIHRleHQg
b3IKLSAgICAvLyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxj
aGVja2VyIGFjY29yZGluZ2x5LgotICAgIGlmIChtYXJrZXJzSGF2ZUlkZW50aWNhbERlc2NyaXB0
aW9uKGNvcnJlY3RlZE9uY2VNYXJrZXJzKSAmJiBjb3JyZWN0ZWRPbmNlTWFya2Vyc1swXS0+ZGVz
Y3JpcHRpb24oKSA9PSBjb3JyZWN0ZWQpCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRBdXRvY29y
cmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXZlcnRlZCwgY29y
cmVjdGVkLCBjb3JyZWN0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIGNsaWVudCgpLT5yZWNvcmRB
dXRvY29ycmVjdGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25FZGl0ZWQs
IGNvcnJlY3RlZCwgY29ycmVjdGlvbik7CisKKyAgICBpZiAoQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KiBjbGllbnQgPSBhbHRlcm5hdGl2ZVRleHRDbGllbnQoKSkgeworICAgICAgICAvLyBTcGVsbGlu
ZyBjb3JyZWN0ZWQgdGV4dCBoYXMgYmVlbiBlZGl0ZWQuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdXNlciBoYXMgcmV2ZXJ0ZWQgaXQgdG8gb3JpZ2luYWwgdGV4dCBvcgorICAgICAgICAv
LyBlZGl0ZWQgaXQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCBub3RpZnkgc3BlbGxjaGVja2VyIGFj
Y29yZGluZ2x5LgorICAgICAgICBpZiAobWFya2Vyc0hhdmVJZGVudGljYWxEZXNjcmlwdGlvbihj
b3JyZWN0ZWRPbmNlTWFya2VycykgJiYgY29ycmVjdGVkT25jZU1hcmtlcnNbMF0tPmRlc2NyaXB0
aW9uKCkgPT0gY29ycmVjdGVkKQorICAgICAgICAgICAgY2xpZW50LT5yZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQsIGNvcnJlY3RlZCwgY29ycmVjdGlv
bik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rp
b25SZXNwb25zZShBdXRvY29ycmVjdGlvbkVkaXRlZCwgY29ycmVjdGVkLCBjb3JyZWN0aW9uKTsK
KyAgICB9CisKICAgICBtYXJrZXJzLT5yZW1vdmVNYXJrZXJzKHJhbmdlT2ZDb3JyZWN0aW9uLCBE
b2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpS
ZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyX2gKICNkZWZpbmUgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcl9o
CiAKKyNpbmNsdWRlICJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgi
CkBAIC00OSwxMiArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWx0ZXJuYXRpdmVUZXh0
RGV0YWlscygpIHsgfQogfTsKIAotZW51bSBBbHRlcm5hdGl2ZVRleHRUeXBlIHsKLSAgICBBbHRl
cm5hdGl2ZVRleHRUeXBlQ29ycmVjdGlvbiA9IDAsCi0gICAgQWx0ZXJuYXRpdmVUZXh0VHlwZVJl
dmVyc2lvbiwKLSAgICBBbHRlcm5hdGl2ZVRleHRUeXBlU3BlbGxpbmdTdWdnZXN0aW9ucywKLX07
Ci0KIHN0cnVjdCBBbHRlcm5hdGl2ZVRleHRJbmZvIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
V2l0aEFsdGVybmF0aXZlOwogICAgIGJvb2wgaXNBY3RpdmU7CkBAIC02NSwxMiArNjAsNiBAQCBz
dHJ1Y3QgQWx0ZXJuYXRpdmVUZXh0SW5mbyB7CiAKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7
CiAKLWVudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Ci0gICAgUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCi0gICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCi0gICAgUmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCi19OwotCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQogLy8gVGhlc2UgYmFja3NsYXNoZXMgYXJlIGZvciBtYWtpbmcgc3R5bGUgY2hlY2tlciBo
YXBweS4KICNkZWZpbmUgVU5MRVNTX0VOQUJMRUQoZnVuY3Rpb25Cb2R5KSBcCkBAIC0xMzQsMTIg
KzEyMywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICB8fCBtYXJrZXItPnR5cGUoKSA9
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpICYmIHN0YXRpY19jYXN0PGludD4obWFya2VyLT5l
bmRPZmZzZXQoKSkgPT0gZW5kT2Zmc2V0KTsKICAgICB9CiAKLSAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCgpOworICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKTsKKyAgICAKICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKTsKICAgICBGbG9hdFJlY3Qgcm9vdFZpZXdSZWN0Rm9y
UmFuZ2UoY29uc3QgUmFuZ2UqKSBjb25zdDsKICAgICB2b2lkIG1hcmtQcmVjZWRpbmdXaGl0ZXNw
YWNlRm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKEVkaXRDb21tYW5kKik7CiAK
LSAgICBFZGl0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCiAgICAg
VGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4gbV90aW1lcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkocmV2aXNpb24gMTEzMjUxKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsMTEgKzIyLDE1IEBACiAjZGVmaW5lIFRleHRDaGVja2luZ0hlbHBlcl9oCiAK
ICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7CiBjbGFzcyBQb3NpdGlvbjsK
K3N0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFw
aCB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxOSwxMiArNTE5LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgVGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gJm1fdGV4dENoZWNrZXJDbGll
bnQ7IH0KIAotI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvcnJlY3Rpb25QYW5lbChBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21p
c3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3Jy
ZWN0aW9uUGFuZWxTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIHsgfQotI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRo
R3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFtbWFyRGV0YWlsJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wpIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbHRlcm5hdGl2
ZVRleHRDbGllbnRfaAorI2RlZmluZSBBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2VudW0gUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCB7Cisg
ICAgUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dENhbmNlbGxlZCA9IDAsCisgICAg
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQsCisgICAgUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dEFjY2VwdGVkCit9OworCitlbnVtIEFsdGVybmF0aXZl
VGV4dFR5cGUgeworICAgIEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uID0gMCwKKyAgICBB
bHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uLAorICAgIEFsdGVybmF0aXZlVGV4dFR5cGVTcGVs
bGluZ1N1Z2dlc3Rpb25zLAorfTsKKworZW51bSBBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSB7
CisgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCisgICAgQXV0b2NvcnJlY3Rpb25SZXZlcnRlZAor
fTsKKworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BbHRlcm5hdGl2ZVRleHRDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25BbHRlcm5hdGl2ZShBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJl
Y3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgPSAwOworfTsK
KyAgICAKK30KKworI2VuZGlmIC8vIEFsdGVybmF0aXZlVGV4dENsaWVudF9oCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpZm5kZWYgRWRpdG9yQ2xpZW50X2gKICNkZWZpbmUgRWRpdG9yQ2xpZW50X2gKIAotI2luY2x1
ZGUgIkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRB
Y3Rpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHku
aCIKQEAgLTE0NiwxOCArMTQ1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSA9IDA7CiAKLSAgICBlbnVtIEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2VUeXBlIHsKLSAgICAgICAgQXV0b2NvcnJlY3Rpb25FZGl0ZWQsCi0gICAgICAgIEF1dG9j
b3JyZWN0aW9uUmV2ZXJ0ZWQKLSAgICB9OwotCi0jaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVM
KQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKEFsdGVybmF0aXZlVGV4dFR5
cGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY21lbnRTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3Np
bmdBbHRlcm5hdGl2ZVRleHQpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVj
dGlvblBhbmVsU29vbihSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rp
b25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKLSNlbmRpZgotCiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBHcmFt
bWFyRGV0YWlsJiBkZXRhaWwpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdykgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc1BhaW50aW5nKGZhbHNlKQogI2VuZGlm
CisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ2xpZW50cy5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5l
dyBIYXNoU2V0PFBhZ2UqPjsKQEAgLTExMTEsNyArMTExMiw4IEBAIHZvaWQgUGFnZTo6cmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW0KIH0KIAogUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGll
bnRzKCkKLSAgICA6IGNocm9tZUNsaWVudCgwKQorICAgIDogYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KDApCisgICAgLCBjaHJvbWVDbGllbnQoMCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAg
ICAsIGNvbnRleHRNZW51Q2xpZW50KDApCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZp
c2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisgICAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwogICAgIGNsYXNzIEJhY2tGb3J3
YXJkQ29udHJvbGxlcjsKICAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7CiAgICAgY2xhc3MgQ2hy
b21lOwpAQCAtMTAzLDYgKzEwNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBhZ2VDbGllbnRzKCk7CiAgICAgICAgICAgICB+UGFnZUNsaWVudHMoKTsKIAorICAgICAgICAg
ICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQ7CiAgICAgICAg
ICAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudDsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICAgICAgICAgIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudDsKQEAg
LTMzMyw2ICszMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNQ
YWludGluZyhib29sIHBhaW50aW5nKSB7IG1faXNQYWludGluZyA9IHBhaW50aW5nOyB9CiAgICAg
ICAgIGJvb2wgaXNQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWludGluZzsgfQogI2Vu
ZGlmCisKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsgfQorCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDMyLDYgKzQzNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgbV9pc1BhaW50
aW5nOwogI2VuZGlmCisgICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2
ZVRleHRDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTEzMjk1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDQtMDUgIEppYSBQdSAgPGpwdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25z
IGZyb20gRWRpdG9yQ2xpZW50IGludG8gc2VwYXJhdGVkIEFsdGVybmF0aXZlVGV4dENsaWVudCBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgy
OTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBjb3JyZWN0aW9uIHBhbmVsIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gV2ViRWRpdG9yQ2xpZW50
IHRvIHRoZSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LgorICAgICAgICBTZWUgV2ViQ29y
ZS9DaGFuZ2VMb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aDoKKyAgICAgICAgKFBhZ2VDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW06CisgICAgICAgICog
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0ZXJuYXRp
dmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NB
bHRlcm5hdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6
ZGlzbWlzc0FsdGVybmF0aXZlU29vbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFsdGVybmF0aXZl
VGV4dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKwogMjAxMi0w
NC0wNCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IFJlaWZpZWRUcmVlVHJhdmVyc2FsLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51UHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtMTg4LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJD
b3JlOjpFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29yZTo6
QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShpbnQzMl90IG5ld1N0eWxlKSA9IDA7
CiAgICAgCiAgICAgdmlydHVhbCBXS1ZpZXcqIHdrVmlldygpIGNvbnN0ID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMTMyNTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzczOCw3ICszNzM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3Jy
ZWN0aW9uUGFuZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNw
b25zZShpbnQzMl90IHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKLSAgICBtX3BhZ2VDbGllbnQtPnJl
Y29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25S
ZXNwb25zZVR5cGUpcmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJp
bmcpOworICAgIG1fcGFnZUNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSgoQXV0
b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUpcmVzcG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVw
bGFjZW1lbnRTdHJpbmcpOwogfQogI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw5IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51UHJveHlHdGsuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24g
MTEzMjUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlw
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRT
dHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5n
cyk7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVh
c29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
Zyk7CisgICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2ViQ29y
ZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg4LDEwICs0ODgs
MTAgQEAgU3RyaW5nIFBhZ2VDbGllbnRJbXBsOjpkaXNtaXNzQ29ycmVjdGlvbgogI2VuZGlmCiB9
CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoRWRp
dG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcp
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9j
b3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKIHsKICNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVz
cG9uc2UgPSByZXNwb25zZVR5cGUgPT0gRWRpdG9yQ2xpZW50OjpBdXRvY29ycmVjdGlvblJldmVy
dGVkID8gTlNDb3JyZWN0aW9uUmVzcG9uc2VSZXZlcnRlZCA6IE5TQ29ycmVjdGlvblJlc3BvbnNl
RWRpdGVkOworICAgIE5TQ29ycmVjdGlvblJlc3BvbnNlIHJlc3BvbnNlID0gcmVzcG9uc2VUeXBl
ID09IEF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNwb25zZVJldmVydGVk
IDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7CiAgICAgQ29ycmVjdGlvblBhbmVsOjpyZWNv
cmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2tWaWV3LCByZXNwb25zZSwgcmVwbGFjZWRTdHJp
bmcsIHJlcGxhY2VtZW50U3RyaW5nKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCShyZXZpc2lvbiAxMTMy
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NvcnJlY3Rpb25QYW5lbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLmgJKHJl
dmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMiBAQAogI2lmbmRlZiBDb3Jy
ZWN0aW9uUGFuZWxfaAogI2RlZmluZSBDb3JyZWN0aW9uUGFuZWxfaAogCi0jaWYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogI2ltcG9ydCA8QXBwS2l0L05TU3BlbGxDaGVja2Vy
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisKIEBjbGFzcyBXS1ZpZXc7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNiArNTcsNiBAQCBwcml2YXRlOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKKyNlbmRpZiAvLyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKICNlbmRpZiAv
LyBDb3JyZWN0aW9uUGFuZWxfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9D
b3JyZWN0aW9uUGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9Db3JyZWN0aW9uUGFuZWwubW0JKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlvblBhbmVsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw5ICsyNCw5IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fU05PV19MRU9QQVJEKQogI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKICNpbXBvcnQgIldLVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKQEAg
LTE0NSw1ICsxNDUsNSBAQCB2b2lkIENvcnJlY3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBs
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8hZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCisjZW5kaWYgLy8gIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9Q
QVJEKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw2ICs4ODMs
OCBAQAogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
aCAqLzsgfTsKIAkJQ0RDQTg1RDUxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUQ0
MTMyQUMyQjMwMEU5NjFERiAvKiBJT0tpdC5mcmFtZXdvcmsgKi87IH07CiAJCUNEQ0E4NUVFMTMy
QUQ3MDEwMEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDQTg1REUxMzJBRDA1MzAw
RTk2MURGIC8qIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNYWMubW0gKi87IH07CisJCUNFREEx
MkUyMTUyQ0QxQUUwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VEQTEyREYxNTJDQ0FF
ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi87IH07CisJCUNFREEx
MkUzMTUyQ0QxQjMwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREExMkRFMTUyQ0NBRTgw
MEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLzsgfTsKIAkJRDNCOTQ4NDYx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MjExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
UG9wdXBNZW51LmNwcCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBv
cHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5
NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ0MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovOyB9OwpAQCAtMTkzNyw2ICsxOTM5LDgg
QEAKIAkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENBODVENDEz
MkFDMkIzMDBFOTYxREYgLyogSU9LaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJT0tp
dC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT0tpdC5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUNEQ0E4NURFMTMyQUQwNTMw
MEU5NjFERiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0VEQTEyREUxNTJDQ0FFODAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0
MjExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NjksNiAr
Mjc3Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMTEx
QURFMTEyRjVCOUEwMDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJQ0VEQTEyREUxNTJDQ0FFODAwRDlF
MDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oICovLAogCQkJCUJDMTExQTUzMTEyRjRG
QkIwMDMzN0JBQiAvKiBXZWJDaHJvbWVDbGllbnQuY3BwICovLAogCQkJCUJDMDMyRDYwMTBGNDM3
OEQwMDU4QzE1QSAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLywKIAkJCQlCQzExMUE1NDExMkY0RkJC
MDAzMzdCQUIgLyogV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwICovLApAQCAtMzA4OCw2ICszMDkz
LDcgQEAKIAkJQkMxMTFBREUxMTJGNUI5QTAwMzM3QkFCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0VEQTEyREYxNTJDQ0FFODAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgKi8sCiAJCQkJNTEwMjFFOUIxMkIxNjc4
ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovLAogCQkJCUM1NTRGRkEy
MTJFNEU4RUEwMDJGMjJDMCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tICovLAogCQkJCUM1MjM3RjVG
MTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gKi8sCkBAIC00MTc4LDYg
KzQxODQsNyBAQAogCQkJCTM3NjA4ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDQxNTBDMzUwNjAwRTUyQ0U5IC8qIFdlYlJl
bmRlckxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkg
LyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0VEQTEyRTMxNTJDRDFCMzAw
RDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00
OTIxLDYgKzQ5MjgsNyBAQAogCQkJCTM3NjA4ODIyMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRl
ck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzk0ODQwMzE1MEMzNTA2MDBFNTJDRTkg
LyogV2ViUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5NDg0MDgxNTBDNEI5
NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VEQTEy
RTIxNTJDRDFBRTAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2lmbmRlZiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnRfaAorI2RlZmluZSBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnRfaAorCisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2Ns
YXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDbGllbnQgeworcHVibGljOgorICAgIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQ
YWdlICopOworICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZlKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVu
dFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUo
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZlU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZykgT1ZFUlJJREU7Citwcml2YXRlOgorICAgIFdlYlBhZ2UgKm1fcGFnZTsK
K307CisKK30KKworI2VuZGlmIC8vIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MiwxMiArMTQyLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sIGVuYWJsZWQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBjb25zdCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXF1ZXN0JikgT1ZFUlJJREU7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3Jy
ZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlz
bWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGlz
bWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOwot
I2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93VW5p
Y29kZU1lbnUoKSBPVkVSUklERTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIgorCisjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSogd2ViUGFnZSkKKzogbV9wYWdlKHdlYlBhZ2UpCit7
Cit9CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldlYkFsdGVybmF0aXZlVGV4dENsaWVu
dCgpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQp
KTsKK30KKwordm9pZCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNob3dDb3JyZWN0aW9uQWx0
ZXJuYXRpdmUoQWx0ZXJuYXRpdmVUZXh0VHlwZSB0eXBlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93Q29ycmVjdGlvblBhbmVsKHR5cGUsIGJvdW5kaW5nQm94T2ZSZXBs
YWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRlcm5hdGl2
ZVJlcGxhY2VtZW50U3RyaW5ncykpOworfQorCit2b2lkIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dDo6ZGlzbWlzc0FsdGVybmF0aXZlKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQg
cmVhc29uKQoreworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNt
aXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOworfQorCitTdHJpbmcgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRl
cm5hdGl2ZVRleHQgcmVhc29uKQoreworICAgIFN0cmluZyByZXN1bHQ7CisgICAgbV9wYWdlLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihyZWFzb24pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVs
U29vbjo6UmVwbHkocmVzdWx0KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQ6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2Nv
cnJlY3Rpb25SZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQoreworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0JKHJldmlzaW9uIDEx
MzI1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI4ICsyMzgsNCBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhCiAgICAgbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmco
dGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNo
ZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CiB9CiAKLSNpZiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlIHR5cGUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpCi17Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb3JyZWN0aW9uUGFuZWwodHlw
ZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1l
bnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSk7Ci19Ci0KLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHQgcmVhc29uKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaXNtaXNzQ29ycmVjdGlvblBhbmVsKHJlYXNvbikpOwotfQot
Ci1TdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJD
b3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbikKLXsKLSAgICBT
dHJpbmcgcmVzdWx0OwotICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24ocmVhc29uKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb246OlJlcGx5KHJlc3VsdCkpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKEVkaXRvckNsaWVudDo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nKQotewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKHJlc3BvbnNlVHlwZSwgcmVwbGFjZWRT
dHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nKSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJQcmludEluZm8uaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKQEAgLTIz
NCw2ICsyMzUsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogI2VuZGlmCisjaWYgVVNFKEFVVE9DT1JSRUNU
SU9OX1BBTkVMKQorICAgIHBhZ2VDbGllbnRzLmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5ldyBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQodGhpcyk7CisjZW5kaWYKICAgICAKICAgICBtX3BhZ2Ug
PSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMTEzMjk1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wNC0wNSAgSmlhIFB1ICA8anB1QGFwcGxlLmNvbT4KKworICAg
ICAgICBNb3ZlIGNvcnJlY3Rpb24gcGFuZWwgcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBFZGl0b3JD
bGllbnQgaW50byBzZXBhcmF0ZWQgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IGNsYXNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFu
Z2VMb2cgZm9yIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxMi0wNC0wMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdGhlIE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw2ICszNzAsOCBAQAogCQlDRDhFQUM3
MzExQ0FDOUEzMDA3NzQwNzUgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4RUFDNzIxMUNBQzlBMzAwNzc0MDc1IC8q
IElPS2l0LmZyYW1ld29yayAqLzsgfTsKIAkJQ0RBNjJBRTIxMjVGODdDMjAwN0ZEMTE4IC8qIFdl
YkZ1bGxTY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE2MkFFMDEyNUY4N0MyMDA3RkQxMTggLyogV2ViRnVsbFNjcmVlbkNv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJQ0RBNjJBRTMxMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RBNjJBRTExMjVGODdDMjAwN0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9s
bGVyLm1tICovOyB9OworCQlDRURBMTJEQjE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0VEQTEyRDkxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5tbSAqLzsgfTsKKwkJQ0VEQTEyREMxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0VEQTEyREExNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
ICovOyB9OwogCQlERDdDREVFNzBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ3Q0RFRTYw
QTIzQkE5RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJREQ4OTY4MjAw
OUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERDg5NjgxRTA5QUE4NzI0MDA5N0U3RjAg
LyogV2ViRWxlbWVudERpY3Rpb25hcnkuaCAqLzsgfTsKIAkJREQ4OTY4MjEwOUFBODcyNDAwOTdF
N0YwIC8qIFdlYkVsZW1lbnREaWN0aW9uYXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREQ4OTY4MUYwOUFBODcyNDAwOTdFN0YwIC8qIFdlYkVsZW1l
bnREaWN0aW9uYXJ5Lm1tICovOyB9OwpAQCAtNjk5LDYgKzcwMSw4IEBACiAJCUNEOEVBQzcyMTFD
QUM5QTMwMDc3NDA3NSAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPS2l0
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQ0RBNjJBRTAxMjVGODdDMjAw
N0ZEMTE4IC8qIFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEQTYyQUUxMTI1Rjg3QzIwMDdGRDExOCAvKiBXZWJGdWxsU2NyZWVuQ29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkZ1
bGxTY3JlZW5Db250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURB
MTJEOTE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRURBMTJEQTE1MkNCRTY4MDBE
OUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlERDdDREVFNjBBMjNCQTlFMDAwNjk5MjggLyogV2ViVHlwZXNJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJUeXBlc0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUREODk2ODFFMDlBQTg3MjQwMDk3RTdGMCAv
KiBXZWJFbGVtZW50RGljdGlvbmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVsZW1lbnREaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlERDg5NjgxRjA5QUE4
NzI0MDA5N0U3RjAgLyogV2ViRWxlbWVudERpY3Rpb25hcnkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVsZW1lbnREaWN0aW9u
YXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKQEAgLTEyOTQsNiArMTI5OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCODI5NThE
MTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgyOTU4RDIx
MzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQlDRURBMTJEOTE1
MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tICovLAorCQkJCUNF
REExMkRBMTUyQ0JFNjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCAqLywK
IAkJCQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICov
LAogCQkJCUI2ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLm1t
ICovLAogCQkJCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hl
UXVvdGFNYW5hZ2VyLmggKi8sCkBAIC0xNjQzLDYgKzE2NDksNyBAQAogCQkJCTQxRjQ0ODRGMTAz
MzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMzAsNiArMjAzNyw3
IEBACiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRhLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRTJGRTYxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNFREExMkRCMTUyQ0JFNjgwMEQ5
RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzI5NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTA1ICBKaWEg
UHUgIDxqcHVAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxh
dGVkIGZ1bmN0aW9ucyBmcm9tIEVkaXRvckNsaWVudCBpbnRvIHNlcGFyYXRlZCBBbHRlcm5hdGl2
ZVRleHRDbGllbnQgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mjk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgY29ycmVjdGlvbiBwYW5lbCByZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFdl
YkVkaXRvckNsaWVudCB0byB0aGUgbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC4KKyAgICAg
ICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29y
cmVjdGlvblBhbmVsLm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6fldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCk6CisgICAgICAgIChXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OnNo
b3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmUpOgorICAgICAgICAoV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50OjpkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKToKKyAgICAgICAgKFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50Ojp+V2ViRWRpdG9yQ2xp
ZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisKIDIwMTIt
MDMtMTUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVsbCBT
Y3JlZW4gbW9kZSBzaG91bGQgY2FuY2VsIGJlZm9yZSBuYXZpZ2F0aW9uLgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLmgJKHJl
dmlzaW9uIDExMzI1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L0NvcnJl
Y3Rpb25QYW5lbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTIgQEAKICNpZm5kZWYg
Q29ycmVjdGlvblBhbmVsX2gKICNkZWZpbmUgQ29ycmVjdGlvblBhbmVsX2gKIAotI2lmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKICNpbXBvcnQgPEFwcEtpdC9OU1NwZWxsQ2hlY2tlci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisjaWYgVVNFKEFV
VE9DT1JSRUNUSU9OX1BBTkVMKQorCiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgQ29ycmVjdGlv
blBhbmVsIHsKQEAgLTUzLDYgKzU0LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IG1fcmVzdWx0Rm9yRGlzbWlzc2FsOwogfTsKIAotI2VuZGlmIC8vICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKKyNl
bmRpZiAvLyBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCiAKICNlbmRpZiAvLyBDb3JyZWN0aW9u
UGFuZWxfaApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlv
blBhbmVsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L0NvcnJlY3Rpb25QYW5lbC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvQ29ycmVjdGlvblBhbmVsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlZp
ZXdQcml2YXRlLmgiCiAKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BB
TkVMKQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBpbmxpbmUgTlNDb3JyZWN0
aW9uSW5kaWNhdG9yVHlwZSBjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZShBbHRlcm5hdGl2ZVRleHRU
eXBlIGFsdGVybmF0aXZlVGV4dFR5cGUpCkBAIC0xMzcsNSArMTM3LDUgQEAgdm9pZCBDb3JyZWN0
aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbAogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3Nh
bC5hZG9wdE5TKFthY2NlcHRlZFJlcGxhY2VtZW50IGNvcHldKTsKIH0KIAotI2VuZGlmIC8vICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKKyNlbmRpZiAvL1VTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9o
CisjZGVmaW5lIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudF9oCisKKyNpbXBvcnQgIkNvcnJlY3Rp
b25QYW5lbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKwor
QGNsYXNzIFdlYlZpZXc7CisKK2NsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworcHVibGljOgorICAgIFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudChXZWJWaWV3ICopOworICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZl
VGV4dENsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvbkFsdGVybmF0aXZl
KFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Ym91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0FsdGVybmF0aXZl
U29vbihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShXZWJDb3Jl
OjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7Citwcml2YXRlOgor
ICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisg
ICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBhbmVsOworI2VuZGlmCit9OworCisjZW5k
aWYgLy8gV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYkFsdGVybmF0aXZlVGV4dENsaWVudDo6V2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCis6IG1fd2ViVmlldyh3ZWJWaWV3KQor
eworfQorCitXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6On5XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQoKQoreworI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKKyAgICBkaXNtaXNzQWx0ZXJu
YXRpdmUoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OjpzaG93Q29ycmVjdGlvbkFsdGVy
bmF0aXZlKEFsdGVybmF0aXZlVGV4dFR5cGUgdHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
CisgICAgbV9jb3JyZWN0aW9uUGFuZWwuc2hvdyhtX3dlYlZpZXcsIHR5cGUsIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgcmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VtZW50U3RyaW5nLCBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CisjZW5kaWYKK30KKwordm9pZCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZShSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0IHJlYXNvbikKK3sKKyNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCisg
ICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb24pOworI2VuZGlmCit9CisKK1N0cmlu
ZyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQ6OmRpc21pc3NBbHRlcm5hdGl2ZVNvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb24pCit7CisjaWYgVVNFKEFVVE9DT1JS
RUNUSU9OX1BBTkVMKQorICAgIHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNv
bik7CisjZWxzZQorcmV0dXJuIFN0cmluZygpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykKK3sKKyNpZiBVU0UoQVVUT0NPUlJF
Q1RJT05fUEFORUwpCisgICAgTlNDb3JyZWN0aW9uUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNwb25z
ZVR5cGUgPT0gQXV0b2NvcnJlY3Rpb25SZXZlcnRlZCA/IE5TQ29ycmVjdGlvblJlc3BvbnNlUmV2
ZXJ0ZWQgOiBOU0NvcnJlY3Rpb25SZXNwb25zZUVkaXRlZDsKK0NvcnJlY3Rpb25QYW5lbDo6cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShtX3dlYlZpZXcsIHJlc3BvbnNlLCByZXBsYWNlZFN0
cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworI2VuZGlmCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24g
MTEzMjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2ltcG9ydCAiQ29ycmVjdGlvblBhbmVsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckNs
aWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2ltcG9ydCA8
d3RmL0ZvcndhcmQuaD4KQEAgLTEzNiwxMiArMTM1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGNv
bnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmKSBPVkVSUklERTsKLSNpZiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxh
Y2VtZW50U3RyaW5ncykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0
aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oV2Vi
Q29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25S
ZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRTdHJpbmcpIE9WRVJSSURFOwotI2VuZGlmCiBwcml2YXRlOgogICAgIHZvaWQg
cmVnaXN0ZXJVbmRvT3JSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiwgYm9v
bCBpc1JlZG8pOwogICAgIFdlYkVkaXRvckNsaWVudCgpOwpAQCAtMTQ5LDggKzE0Miw0IEBAIHBy
aXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JV
bmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7CiAgICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJhdGlv
bnM7Ci0KLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCi0gICAgQ29ycmVjdGlvblBhbmVsIG1fY29ycmVjdGlvblBh
bmVsOwotI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gMTEzMjUxKQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksOSArMTg5LDYgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQo
V2ViVmlldwogCiBXZWJFZGl0b3JDbGllbnQ6On5XZWJFZGl0b3JDbGllbnQoKQogewotI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKLSAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdB
bHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKLSNlbmRpZgogfQogCiBib29sIFdlYkVkaXRvckNsaWVu
dDo6aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQpAQCAtODY2LDI5ICs4NjMsNiBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlU3BlbGxpbmdVSVdpCiAgICAgW1tOU1NwZWxs
Q2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRoR3JhbW1h
clN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07CiB9CiAK
LSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9TTk9XX0xFT1BBUkQpCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd0NvcnJlY3Rpb25QYW5l
bChBbHRlcm5hdGl2ZVRleHRUeXBlIHBhbmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5h
dGl2ZVJlcGxhY2VtZW50U3RyaW5ncykKLXsKLSAgICBtX2NvcnJlY3Rpb25QYW5lbC5zaG93KG1f
d2ViVmlldywgcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2Vk
U3RyaW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3Mp
OwotfQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFz
b25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0IHJlYXNvbkZvckRpc21pc3NpbmcpCi17Ci0g
ICAgbV9jb3JyZWN0aW9uUGFuZWwuZGlzbWlzcyhyZWFzb25Gb3JEaXNtaXNzaW5nKTsKLX0KLQot
U3RyaW5nIFdlYkVkaXRvckNsaWVudDo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24oUmVhc29u
Rm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCByZWFzb25Gb3JEaXNtaXNzaW5nKQotewotICAg
IHJldHVybiBtX2NvcnJlY3Rpb25QYW5lbC5kaXNtaXNzKHJlYXNvbkZvckRpc21pc3NpbmcpOwot
fQotCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShF
ZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmlu
ZykKLXsKLSAgICBOU0NvcnJlY3Rpb25SZXNwb25zZSByZXNwb25zZSA9IHJlc3BvbnNlVHlwZSA9
PSBFZGl0b3JDbGllbnQ6OkF1dG9jb3JyZWN0aW9uUmV2ZXJ0ZWQgPyBOU0NvcnJlY3Rpb25SZXNw
b25zZVJldmVydGVkIDogTlNDb3JyZWN0aW9uUmVzcG9uc2VFZGl0ZWQ7Ci0gICAgQ29ycmVjdGlv
blBhbmVsOjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKG1fd2ViVmlldywgcmVzcG9uc2Us
IHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7Ci19Ci0jZW5kaWYKLQogdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKIHsKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl0gdXBkYXRlU3BlbGxpbmdQYW5lbFdpdGhNaXNzcGVsbGVkV29yZDptaXNzcGVs
bGVkV29yZF07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lv
biAxMTMyNTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkRPTUNTU1N0eWxlRGVjbGFyYXRp
b25JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01S
YW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNp
bXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlz
dEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgiCkBAIC03
MzYsNiArNzM3LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQog
ICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IG5ldyBXZWJFZGl0b3JDbGllbnQoc2VsZik7
CiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpOwog
ICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQo
c2VsZik7CisgICAgcGFnZUNsaWVudHMuYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0gbmV3IFdlYkFs
dGVybmF0aXZlVGV4dENsaWVudChzZWxmKTsKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdl
KHBhZ2VDbGllbnRzKTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgV2ViQ29yZTo6cHJv
dmlkZUdlb2xvY2F0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBXZWJHZW9sb2NhdGlvbkNsaWVu
dChzZWxmKSk7Cg==
</data>
<flag name="review"
          id="140450"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>