<?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>104741</bug_id>
          
          <creation_ts>2012-12-11 16:41:29 -0800</creation_ts>
          <short_desc>webdatabase: Encapsulate externally used DB APIs in DatabaseManager</short_desc>
          <delta_ts>2013-01-31 17:08:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103668</blocked>
    
    <blocked>104748</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788968</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-11 16:41:29 -0800</bug_when>
    <thetext>Introduce a DatabaseManager module to encapsulate APIs that are called by code outside the webdatabase module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789154</commentid>
    <comment_count>1</comment_count>
      <attachid>178956</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-11 20:53:53 -0800</bug_when>
    <thetext>Created attachment 178956
The patch.

Let&apos;s see how the EWS bots like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789158</commentid>
    <comment_count>2</comment_count>
      <attachid>178956</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 21:09:13 -0800</bug_when>
    <thetext>Comment on attachment 178956
The patch.

Attachment 178956 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15277436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789159</commentid>
    <comment_count>3</comment_count>
      <attachid>178956</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-11 21:11:26 -0800</bug_when>
    <thetext>Comment on attachment 178956
The patch.

Attachment 178956 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15272574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789162</commentid>
    <comment_count>4</comment_count>
      <attachid>178956</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 21:17:15 -0800</bug_when>
    <thetext>Comment on attachment 178956
The patch.

Attachment 178956 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15284279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789222</commentid>
    <comment_count>5</comment_count>
      <attachid>178956</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-11 22:40:52 -0800</bug_when>
    <thetext>Comment on attachment 178956
The patch.

Attachment 178956 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15281352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789259</commentid>
    <comment_count>6</comment_count>
      <attachid>178981</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-11 23:48:00 -0800</bug_when>
    <thetext>Created attachment 178981
Fixed a few issues, and let&apos;s retry with the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789273</commentid>
    <comment_count>7</comment_count>
      <attachid>178984</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 00:02:12 -0800</bug_when>
    <thetext>Created attachment 178984
svn up&apos;ed to get the patch to apply properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789285</commentid>
    <comment_count>8</comment_count>
      <attachid>178984</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 00:14:43 -0800</bug_when>
    <thetext>Comment on attachment 178984
svn up&apos;ed to get the patch to apply properly.

Attachment 178984 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15300001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789292</commentid>
    <comment_count>9</comment_count>
      <attachid>178984</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-12 00:23:43 -0800</bug_when>
    <thetext>Comment on attachment 178984
svn up&apos;ed to get the patch to apply properly.

Attachment 178984 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15276572</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789293</commentid>
    <comment_count>10</comment_count>
      <attachid>178988</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 00:24:13 -0800</bug_when>
    <thetext>Created attachment 178988
Fix bug in chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789362</commentid>
    <comment_count>11</comment_count>
      <attachid>178988</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-12 02:14:26 -0800</bug_when>
    <thetext>Comment on attachment 178988
Fix bug in chromium port.

Attachment 178988 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15272699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789513</commentid>
    <comment_count>12</comment_count>
      <attachid>179035</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 07:25:02 -0800</bug_when>
    <thetext>Created attachment 179035
5th time&apos;s the charm: svn up, updated ChangeLog comments.

Let&apos;s retry the EWS bots after an svn up to see if the gtk and elf issues are resolved.  The failures from the last patch do not seem to be related to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789628</commentid>
    <comment_count>13</comment_count>
      <attachid>179035</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-12 09:23:36 -0800</bug_when>
    <thetext>Comment on attachment 179035
5th time&apos;s the charm: svn up, updated ChangeLog comments.

Attachment 179035 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15286339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789641</commentid>
    <comment_count>14</comment_count>
      <attachid>179070</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 09:47:55 -0800</bug_when>
    <thetext>Created attachment 179070
Added a #include to make the elf port happy.  Also updated ChangeLog dates and fixed a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789672</commentid>
    <comment_count>15</comment_count>
      <attachid>179070</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 10:24:01 -0800</bug_when>
    <thetext>Comment on attachment 179070
Added a #include to make the elf port happy.  Also updated ChangeLog dates and fixed a typo.

Ready for a review.  The elf ews will take a while to process.  It was previously complaining about CString only being forward declared.  The added #include &lt;wtf/text/CString.h&gt; should take care of the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789814</commentid>
    <comment_count>16</comment_count>
      <attachid>179105</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 12:48:29 -0800</bug_when>
    <thetext>Created attachment 179105
svn up again to get the patch to apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789963</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 15:07:32 -0800</bug_when>
    <thetext>Landed in r137520: &lt;http://trac.webkit.org/changeset/137520&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790013</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-12-12 16:04:36 -0800</bug_when>
    <thetext>aklein reported that r137520 is causing a build breakage in chromium:

Undefined symbols:
  &quot;__ZN7WebCore15DatabaseTracker17initializeTrackerERKN3WTF6StringE&quot;, referenced from:
      __ZN7WebCore15DatabaseManager10initializeERKN3WTF6StringE in libwebcore_remaining.a(DatabaseManager.o)
ld: symbol(s) not found

The issue is because chromium does not use the same DatabaseTracker class, and hence does not have nor need the call to DatabaseTracker::initializeTracker() function.

The fix is landed in r137530: &lt;http://trac.webkit.org/changeset/137530&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822150</commentid>
    <comment_count>19</comment_count>
      <attachid>178988</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2013-01-31 17:08:23 -0800</bug_when>
    <thetext>Comment on attachment 178988
Fix bug in chromium port.

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

&gt; Source/WebCore/WebCore.gypi:990
&gt; +            &apos;Modules/webdatabase/DatabaseManager.cpp&apos;,

Please add .h files to webcore.gyi as well when adding new files to webcore.

We generally add all files to this gypi, including .cpp files that we actually exclude from our build further downstream (in WebCore.gpy/WebCore.gyp).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178956</attachid>
            <date>2012-12-11 20:53:53 -0800</date>
            <delta_ts>2012-12-11 23:48:00 -0800</delta_ts>
            <desc>The patch.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>144238</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZU1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp+RGF0YWJhc2VNYW5hZ2VyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNl
dENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
aDoKKyAgICAgICAgKERhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6Cisg
ICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2Fu
Q2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAy
MDEyLTEyLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgRWxlbWVudC1zcGVjaWZpYyB0cmF2ZXJzYWwgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTk0Nyw2ICs5NDcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzc0MDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIyLDYgKzE0
MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0
aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKKyAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlU3luYy5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXApAQCAtMjk3Nyw2ICsyOTc4
LDcgQEAgdXNlPyhQTFVHSU5fQkFDS0VORF9YTElCKSB7CiBlbmFibGU/KFNRTF9EQVRBQkFTRSkg
ewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNw
cCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKICAg
ICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzY0LDE5ICszNjQsMjAgQEAgX19aTjdXZWJD
b3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2CiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZj
cmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJL
TlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUx
NURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBw
ZXJXb3JsZEQxRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VDb250ZXh0MTZoYXNPcGVuRGF0YWJh
c2VzRVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZVRyYWNrZXIxNGRlbGV0ZURhdGFiYXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJL
TjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHF1b3RhRm9yT3Jp
Z2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIx
NHVzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRh
YmFzZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJD
b3JlMTVEYXRhYmFzZVRyYWNrZXIxOGRlbGV0ZUFsbERhdGFiYXNlc0V2Ci1fX1pON1dlYkNvcmUx
NURhdGFiYXNlVHJhY2tlcjIyZGF0YWJhc2VOYW1lc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5nRUxtMEVFRQotX19aTjdXZWJDb3JlMTVEYXRh
YmFzZVRyYWNrZXIyM2RldGFpbHNGb3JOYW1lQW5kT3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18x
NFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3b3JpZ2luc0VS
TjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKLV9f
Wk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMTVEYXRh
YmFzZVRyYWNrZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5FeQotX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlVHJhY2tlckNsaWVudEUK
K19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRzZXRJc0F2YWlsYWJsZUViCitfX1pON1dl
YkNvcmUxNURhdGFiYXNlTWFuYWdlcjE2aGFzT3BlbkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVj
dXRpb25Db250ZXh0RQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxMmRlbGV0ZU9yaWdp
bkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRk
ZWxldGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRxdW90YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTR1c2FnZUZvck9yaWdpbkVQTlNf
MTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFs
aXplRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxOGRlbGV0
ZUFsbERhdGFiYXNlc0V2CitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjIyZGF0YWJhc2VO
YW1lc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3Ry
aW5nRUxtMEVFRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIyM2RldGFpbHNGb3JOYW1l
QW5kT3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJD
b3JlMTVEYXRhYmFzZU1hbmFnZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5T
XzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2Vy
N21hbmFnZXJFdgorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0
U2VjdXJpdHlPcmlnaW5FeQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50
RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9s
bGVyMTBzZXRGb2N1c2VkRWIKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTRzZXRGb2N1
c2VkTm9kZUVQTlNfNE5vZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dl
YkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzVGcmFtZUVFRQpAQCAtNDMxLDcgKzQzMiw2IEBAIF9fWk43V2ViQ29yZTE1c2V0RE9NRXhj
ZXB0aW9uRVBOM0pTQzlFeGUKIF9fWk43V2ViQ29yZTE1dG9ET01TdHJpbmdMaXN0RVBOM0pTQzlF
eGVjU3RhdGVFTlMwXzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUEt0
agogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUktOM1dURjZTdHJpbmdFCi1fX1pON1dl
YkNvcmUxNkFic3RyYWN0RGF0YWJhc2UxNHNldElzQXZhaWxhYmxlRWIKIF9fWk43V2ViQ29yZTE2
QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0YTEyQWNj
ZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKQEAgLTE5MTcsMTEgKzE5MTcsNiBAQCBfX1pON1dlYkNv
cmUxNEljb25Db250cm9sbGVyM3VybEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNmNh
bmNlbEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlOXNldENsaWVudEVQTlNfMjBSZXNv
dXJjZUhhbmRsZUNsaWVudEUKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGVEMUV2Ci1fX1pO
N1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE2b3JpZ2luc0RpZENoYW5nZUV2Ci1fX1pON1dlYkNv
cmUxNURhdGFiYXNlVHJhY2tlcjI1ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eUVSS04zV1RGNlN0
cmluZ0UKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMjhyZW1vdmVEZWxldGVkT3BlbmVk
RGF0YWJhc2VzRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMzhlbXB0eURhdGFiYXNl
RmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaEV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tl
cjQ0ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWRFdgogX19aTjdX
ZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMmRyYXdCaWRpVGV4dEVSS05TXzRGb250RVJLTlNfN1Rl
eHRSdW5FUktOU18xMEZsb2F0UG9pbnRFUE5TXzEwQmlkaVN0YXR1c0VpCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzQ29udGV4dDE1ZHJhd0xpbmVGb3JUZXh0RVJLTlNfMTBGbG9hdFBvaW50RWZiCiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIyc2V0RW1vamlEcmF3aW5nRW5hYmxlZEViCkBA
IC0xOTYzLDggKzE5NTgsNiBAQCBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjE5
Y2xlCiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjI1aGFzUmVjZWl2ZWRNZW1v
cnlQcmVzc3VyZUV2CiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjI1aW5zdGFs
bE1lbW9yeVJlbGVhc2VCbG9ja0VVMTNibG9ja19wb2ludGVyRnZ2RWIKIF9fWk43V2ViQ29yZTIx
TWVtb3J5UHJlc3N1cmVIYW5kbGVyMjVzZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlRXYKLV9fWk43
V2ViQ29yZTIxU1FMaXRlRGF0YWJhc2VUcmFja2VyN3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMjFT
UUxpdGVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yN1NRTGl0ZURhdGFiYXNlVHJhY2tl
ckNsaWVudEUKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc0ZhY2Vib29rRXYKIF9fWk43V2Vi
Q29yZTIxbmV4dEJyZWFrYWJsZVBvc2l0aW9uRVJOU18yMUxhenlMaW5lQnJlYWtJdGVyYXRvckVp
YgogX19aTjdXZWJDb3JlMjFuZXh0UGFyYWdyYXBoUG9zaXRpb25FUktOU18xNVZpc2libGVQb3Np
dGlvbkVpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk5MCw2ICs5OTAsNyBAQAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVy
CShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNr
ZXIxOW9wZW5UcmFjawogX19aTjdXZWJDb3JlMTZTUUxpdGVGaWxlU3lzdGVtMjhhcHBlbmREYXRh
YmFzZUZpbGVOYW1lVG9QYXRoRVJLTjNXVEY2U3RyaW5nRVM0XwogX19aTjdXZWJDb3JlMTZTUUxp
dGVGaWxlU3lzdGVtMjRlbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHNFUktOM1dURjZTdHJpbmdFYgog
X19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNURh
dGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIxRGF0YWJhc2VUcmFja2VyQ2xpZW50RQorX19a
TjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdl
ckNsaWVudEUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2Vy
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTNTdG9yYWdlVGhyZWFkNmNyZWF0ZUV2CiBf
X1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMjNzZXRTdG9yYWdlRGlyZWN0b3J5UGF0aEVSS04z
V1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJBYnN0cmFjdERhdGFi
YXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VU
cmFja2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VNYW5hZ2VyJiBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKQoreworICAgIHN0YXRpYyBEYXRhYmFzZU1hbmFnZXIqIGRi
TWFuYWdlciA9IDA7CisgICAgaWYgKCFkYk1hbmFnZXIpCisgICAgICAgIGRiTWFuYWdlciA9IG5l
dyBEYXRhYmFzZU1hbmFnZXIoKTsKKworICAgIHJldHVybiAqZGJNYW5hZ2VyOworfQorCitEYXRh
YmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5h
Z2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQoreworICAgIERhdGFi
YXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VQYXRoKTsKK30KKwordm9pZCBE
YXRhYmFzZU1hbmFnZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQoY2xpZW50KTsKK30K
KworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gQWJz
dHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIEFic3RyYWN0RGF0YWJhc2U6
OnNldElzQXZhaWxhYmxlKGF2YWlsYWJsZSk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpo
YXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKK30KKwor
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCit7Cisg
ICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7
Cit9CisKK1N0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworfQorCisj
aWYgIVBMQVRGT1JNKENIUk9NSVVNKQorCitTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFn
ZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgp
OworfQorCitib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
aGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6Om9y
aWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KQoreworICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMocmVzdWx0KTsKK30KKworYm9vbCBEYXRh
YmFzZU1hbmFnZXI6OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7Cit9CisK
K0RhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1
cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFt
ZSwgb3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNh
Z2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVv
dGFGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YVNpemUpCit7
CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YVNp
emUpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKK3sK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKK30K
KworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmln
aW4ob3JpZ2luKTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsK
K30KKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6
Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5j
bG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERh
dGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGF0YWJhc2VNYW5hZ2VyX2gKKyNkZWZp
bmUgRGF0YWJhc2VNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNs
dWRlICJEYXRhYmFzZURldGFpbHMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIERh
dGFiYXNlVGFza1N5bmNocm9uaXplcjsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZU1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CisKKyAg
ICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworICAgIHZvaWQg
c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOworCisgICAgYm9vbCBpc0F2YWlsYWJs
ZSgpOworICAgIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CisKKyAgICBib29sIGhhc09wZW5E
YXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIC8vIFdoZW4gdGhlIGRhdGFi
YXNlIGNsZWFudXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCisgICAg
dm9pZCBzdG9wRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIqKTsKKworICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0g
dHJ1ZSk7CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgU3RyaW5nIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYpOworCisgICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdp
biopOworICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiBy
ZXN1bHQpOworICAgIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbios
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOworCisgICAgdW5z
aWduZWQgbG9uZyBsb25nIHVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdW5z
aWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB2
b2lkIHNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKworICAg
IHZvaWQgZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKTsKKyAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCisgICAgdm9p
ZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwor
ICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VNYW5hZ2VyKCk7CisgICAg
fkRhdGFiYXNlTWFuYWdlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFiYXNlTWFuYWdl
cl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzMzOCkJKGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDox
MzczMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIERhdGFi
YXNlVHJhY2tlckNsaWVudF9oCisjZGVmaW5lIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCisKKyNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xhc3MgRGF0YWJh
c2VUcmFja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRhYmFzZVRyYWNrZXJD
bGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlmIC8vIERhdGFi
YXNlVHJhY2tlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDEz
NzMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQsMjkgKzQsMjYgQEAKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwotI2lmbmRlZiBEYXRhYmFzZVRyYWNrZXJDbGllbnRf
aAotI2RlZmluZSBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorI2lmbmRlZiBEYXRhYmFzZU1hbmFn
ZXJDbGllbnRfaAorI2RlZmluZSBEYXRhYmFzZU1hbmFnZXJDbGllbnRfaAogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKIApAQCAtMzYsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCi1jbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQgewor
Y2xhc3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EYXRh
YmFzZVRyYWNrZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5EYXRhYmFzZU1hbmFnZXJDbGll
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkgPSAwOwogfTsK
QEAgLTQ3LDQgKzQ0LDQgQEAgcHVibGljOgogCiAjZW5kaWYKIAotI2VuZGlmIC8vIERhdGFiYXNl
VHJhY2tlckNsaWVudF9oCisjZW5kaWYgLy8gRGF0YWJhc2VNYW5hZ2VyQ2xpZW50X2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VHJhY2tlci5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCAr
MzUsOCBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlckNs
aWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9yaWdpblF1
b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEwNDYsNyArMTA0Niw3IEBAIGJv
b2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUKICAgICByZXR1cm4gU1FMaXRl
RmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGZ1bGxQYXRoKTsKIH0KIAotdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnNldENsaWVudChEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCkKK3Zv
aWQgRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGll
bnQpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9u
IDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoOwogCiAjaWYgIVBMQVRGT1JNKENIUk9N
SVVNKQotY2xhc3MgRGF0YWJhc2VUcmFja2VyQ2xpZW50OworY2xhc3MgRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50OwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7CiAjZW5kaWYgLy8gIVBMQVRG
T1JNKENIUk9NSVVNKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGRlbGV0
ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgdm9pZCBzZXRDbGllbnQoRGF0
YWJhc2VUcmFja2VyQ2xpZW50Kik7CisgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50Kik7CiAKICAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJl
YWQgc2FmZSB3aXRoIGl0cyBkYXRhCiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hh
bmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xNDUsNyArMTQ1
LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aDsKIAot
ICAgIERhdGFiYXNlVHJhY2tlckNsaWVudCogbV9jbGllbnQ7CisgICAgRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50KiBtX2NsaWVudDsKIAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIERhdGFiYXNlRGV0YWlscz4gUHJvcG9zZWREYXRhYmFzZTsKICAgICBIYXNoU2V0
PFByb3Bvc2VkRGF0YWJhc2UqPiBtX3Byb3Bvc2VkRGF0YWJhc2VzOwpAQCAtMTg2LDYgKzE4Niwx
MyBAQCBwcml2YXRlOgogICAgIE11dGV4IG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQ7CiAgICAgbXV0
YWJsZSBPd25QdHI8RGF0YWJhc2VPcmlnaW5NYXA+IG1fb3BlbkRhdGFiYXNlTWFwOwogI2VuZGlm
IC8vICFQTEFURk9STShDSFJPTUlVTSkKKworICAgIGZyaWVuZCBjbGFzcyBBYnN0cmFjdERhdGFi
YXNlOworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZTsKKyAgICBmcmllbmQgY2xhc3MgRGF0YWJh
c2VDb250ZXh0OworICAgIGZyaWVuZCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI7CisgICAgZnJpZW5k
IGNsYXNzIERhdGFiYXNlU3luYzsKKyAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGll
bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmgJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LSNpZm5kZWYgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VUcmFja2Vy
Q2xpZW50X2gKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Ci1jbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkRh
dGFiYXNlVHJhY2tlckNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0j
ZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjA5NSw3ICsyMDk1LDcg
QEAKIAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5
c3RlbVxcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlXFwuY3BwJCddLAotICAgICAgICBbJ2V4Y2x1ZGUnLCAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnRcXC5oJCddLAorICAgICAg
ICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnRc
XC5oJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXJcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFi
YXNlL09yaWdpblF1b3RhTWFuYWdlclxcLihjcHB8aCkkJ10sCiAgICAgICAgIFsnZXhjbHVkZScs
ICdNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkXFwuKGNwcHxoKSQnXSwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUyMDksNiArMjUyMDksMTQgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5h
Z2VyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMsNiArMzY4
Myw4IEBACiAJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNw
cCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcx
Njc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87
IH07CiAJCTk3QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNw
cCAqLzsgfTsKQEAgLTM2OTEsNyArMzY5Myw3IEBACiAJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmgg
Ki87IH07CiAJCTk3QkM2QTMxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUYx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTk3QkM2QTMy
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdCQzZBMzMxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTk3QkM2QTM3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzY5RjUxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgKi87IH07
CiAJCTk3QkM2QTM4MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY2MTUwNUYw
ODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTdCQzZBMzkxNTA1
RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY3MTUwNUYwODEwMDFCNzRBQyAvKiBP
cmlnaW5Vc2FnZVJlY29yZC5jcHAgKi87IH07CkBAIC0xMDk5NCw3ICsxMDk5Niw3IEBACiAJCTk3
QkM2OUVFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVRocmVhZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlci5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUcmFja2VyLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlVHJh
Y2tlckNsaWVudC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCQzY5RjExNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3QkM2OUY1MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3JpZ2luUXVvdGFNYW5hZ2VyLmNw
cDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFDIC8qIE9y
aWdpblF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcmln
aW5RdW90YU1hbmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUY3MTUwNUYwODEw
MDFCNzRBQyAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBPcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE0MTg0LDYgKzE0MTg2LDggQEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpT
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1
ZmZlckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzIx
M0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1h
bmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERh
dGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDky
ODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
b3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2MEY2NzZF
NTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29v
cmRpbmF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2
RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MjU2LDYgKzE4MjYwLDkgQEAKIAkJCQk5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLywKIAkJCQk5N0JDNjlFNjE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VDb250ZXh0LmggKi8sCiAJCQkJOTdCQzY5RTcxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlRGV0YWlscy5oICovLAorCQkJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuY3BwICovLAorCQkJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuaCAqLywKKwkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8sCiAJCQkJOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJOTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlU3luYy5oICovLAogCQkJCTk3QkM2OUVBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZVN5bmMuaWRsICovLApAQCAtMTgyNjUsNyArMTgyNzIsNiBAQAogCQkJCTk3QkM2OUVFMTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovLAogCQkJCTk3QkM2OUVGMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTk3QkM2OUYwMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLywKLQkJCQk5N0JDNjlGMTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCiAJCQkJQThDQ0JCNDYxNTFGODMx
NjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCAqLywKIAkJCQlBOENDQkI0NzE1
MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCAqLywKIAkJCQlBOENDQkI0
RTE1MUY4MzVBMDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsICovLApAQCAtMjI1
NTUsNiArMjI1NjEsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU0NTZGMTkxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQz
MTA1QkIxNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMzNzVEN0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIyOTEzLDExICsyMjkyMCwxMSBAQAogCQkJCTk3QkM2QTI1MTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyQjE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyRTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMDE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2
QTMyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTk3QkM2QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERP
TVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAwMDlBN0Uw
IC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjkwMDMsNiArMjkwMTAs
NyBAQAogCQkJCUQ2NDg5RDI1MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpT
SFRNTFRlbXBsYXRlRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTFC
QjE2NkMyRTZDMDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZEQTkzMjVEMTY3MDNCMkEwMDg5ODJEQyAvKiBPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEQTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAv
KiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5j
bHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpA
QCAtMTUwLDEyICsxNTAsMTIgQEAgYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2Nr
ZXRFbgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQogewotICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNl
Ojppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
c0F2YWlsYWJsZSgpOwogfQogCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRh
YmFzZVN5bmNFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFp
bGFibGUoKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFi
bGUoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTE0Miw3ICsx
NDIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uCiAgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0ZW5lcjsKICAgICB9CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJh
c2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgeworICAgIGlmIChEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAgICAgICBQQ0xP
RygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsKICAgICAgICAgcmVqZWN0
UmVhc29ucyB8PSAxIDw8IEhhc0RhdGFiYXNlSGFuZGxlczsKICAgICB9CkBAIC0zNDUsNyArMzQ1
LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaAogICAgICAgICAm
JiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpIHx8ICghZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYgIWRvY3VtZW50
TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKSkKICAgICAg
ICAgJiYgKCFkb2N1bWVudC0+ZG9tV2luZG93KCkgfHwgIWRvY3VtZW50LT5kb21XaW5kb3coKS0+
aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgICAgICAmJiAhRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJh
c2VzKGRvY3VtZW50KQorICAgICAgICAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFz
T3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNlbmRpZgogI2lmIEVOQUJMRShTSEFSRURfV09SS0VS
UykKICAgICAgICAgJiYgIVNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJlZFdvcmtlcnMo
ZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
ICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
Ci0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWluZy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC00NTAsOCArNDUwLDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbgogICAgICAgICBkb2MtPnNldFJlYWR5
U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRjaCBmb3Igc29t
ZXRoaW5nIGxpa2UgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4gYmVpbmcgc3Bl
Y2lhbC1jYXNlZCBoZXJlPwotICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMo
ZG9jLCAwKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgRGF0YWJhc2VNYW5hZ2VyIHdh
dGNoIGZvciBzb21ldGhpbmcgbGlrZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSByYXRoZXIgdGhh
biBiZWluZyBzcGVjaWFsLWNhc2VkIGhlcmU/CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAKLSNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiQmFySW5mby5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50LmgiCkBAIC00
Niw4ICs0NSw2IEBACiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRl
dmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBA
CiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC00Myw4ICs0Miw4
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
VGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKQEAgLTIzMSw3ICsyMzAsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRoZSBkYXRhYmFz
ZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAgICAgICBEYXRh
YmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIERhdGFiYXNlQ29udGV4
dDo6c3RvcERhdGFiYXNlcyh3b3JrZXJDb250ZXh0LCAmY2xlYW51cFN5bmMpOworICAgICAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKHdvcmtlckNvbnRleHQsICZj
bGVhbnVwU3luYyk7CiAjZW5kaWYKIAogICAgICAgICB3b3JrZXJDb250ZXh0LT5zdG9wQWN0aXZl
RE9NT2JqZWN0cygpOwpAQCAtMjY2LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9w
KCkKICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+c2NoZWR1bGVFeGVjdXRpb25U
ZXJtaW5hdGlvbigpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChtX3dv
cmtlckNvbnRleHQuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
bnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyQ29udGV4dC5nZXQoKSk7CiAj
ZW5kaWYKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrKFdvcmtlclRocmVhZFNodXRkb3duU3Rh
cnRUYXNrOjpjcmVhdGUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3
KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFi
YXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlc0J5T3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZU9yaWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNl
V2l0aE5hbWVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6
OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNl
TWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFu
YWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTItMTItMTEgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzEyODU3ODcwPiBbV0syIE5ldHdvcmtQcm9jZXNzXSBDYW5ub3QgbG9hZCBIVFRQUyBzaXRl
cwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yQ2hvb3Nlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2Vy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSWNvbkxvYWRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTU0OSw5ICs1NDksMTAgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9
IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGll
bnQoKSktPndlYkZyYW1lKCk7CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
YXRhYmFzZU5hbWUsIG9yaWdpbik7Ci0gICAgdWludDY0X3QgY3VycmVudFF1b3RhID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKLSAgICB1aW50NjRf
dCBjdXJyZW50T3JpZ2luVXNhZ2UgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZv
ck9yaWdpbihvcmlnaW4pOworICAgIERhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBkYk1h
bmFnZXIuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOworICAg
IHVpbnQ2NF90IGN1cnJlbnRRdW90YSA9IGRiTWFuYWdlci5xdW90YUZvck9yaWdpbihvcmlnaW4p
OworICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSA9IGRiTWFuYWdlci51c2FnZUZvck9y
aWdpbihvcmlnaW4pOwogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBSZWZQdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiAgICAgbmV3UXVvdGEgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNl
ZWREYXRhYmFzZVF1b3RhKG1fcGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNl
TmFtZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5V
c2FnZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwpA
QCAtNTYyLDcgKzU2Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNl
UXUKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VR
dW90YTo6UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICB9CiAKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIG5ld1F1b3RhKTsKKyAg
ICBkYk1hbmFnZXIuc2V0UXVvdGEob3JpZ2luLCBuZXdRdW90YSk7CiB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJh
c2VUcmFja2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNTAsMTIgKzUwLDEyIEBAIFdlYkRhdGFiYXNlTWFuYWdlciYgV2ViRGF0YWJhc2VNYW5h
Z2VyOjoKIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVU
cmFja2VyKGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5pbml0aWFsaXplKGRhdGFiYXNlRGlyZWN0b3J5KTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2Vy
OjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNldENsaWVudCh0aGlzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRDbGll
bnQodGhpcyk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigp
CkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNl
c0J5TwogewogICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5h
dGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKIAotICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0
YWJhc2VUcmFja2VyCisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgbWFkZSBtb3JlIGVmZmlj
aWVudCBieSBhZGRpbmcgYSBmdW5jdGlvbiB0byBEYXRhYmFzZU1hbmFnZXIKICAgICAvLyB0byBn
ZXQgYm90aCB0aGUgb3JpZ2lucyBhbmQgdGhlIFZlY3RvciBvZiBEYXRhYmFzZURldGFpbHMgZm9y
IGVhY2ggb3JpZ2luIGluIG9uZQogICAgIC8vIHNob3QuICBUaGF0IHdvdWxkIGF2b2lkIHRha2lu
ZyB0aGUgbnVtZXJvdXMgbG9ja3MgdGhpcyByZXF1aXJlcy4KIAogICAgIFZlY3RvcjxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+ID4gb3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5vcmlnaW5zKG9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdp
bnMob3JpZ2lucyk7CiAKICAgICBWZWN0b3I8T3JpZ2luQW5kRGF0YWJhc2VzPiBvcmlnaW5BbmRE
YXRhYmFzZXNWZWN0b3I7CiAgICAgb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwpAQCAtODUsMTMgKzg1LDEzIEBAIHZvaWQgV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU8KICAgICAgICAgT3JpZ2luQW5kRGF0YWJh
c2VzIG9yaWdpbkFuZERhdGFiYXNlczsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVj
dG9yOwotICAgICAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFt
ZXNGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSwgbmFtZVZlY3RvcikpCisgICAgICAgIGlmICgh
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW5z
W2ldLmdldCgpLCBuYW1lVmVjdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IFZlY3RvcjxEYXRhYmFzZURldGFpbHM+IGRldGFpbHNWZWN0b3I7CiAgICAgICAgIGRldGFpbHNW
ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuYW1lVmVjdG9yLnNpemUoKSk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbmFtZVZlY3Rvci5zaXplKCk7IGorKykgewotICAgICAg
ICAgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lVmVjdG9yW2pdLCBvcmlnaW5zW2ldLmdldCgp
KTsKKyAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2lu
c1tpXS5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdlYkRh
dGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbnNbaV0t
PmRhdGFiYXNlSWRlbnRpZmllcigpOwotICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2lu
UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW5z
W2ldLmdldCgpKTsKLSAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7
CisgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5RdW90YSA9IERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICBv
cmlnaW5BbmREYXRhYmFzZXMub3JpZ2luVXNhZ2UgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS51c2FnZUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKICAgICAgICAgb3JpZ2luQW5kRGF0
YWJhc2VzLmRhdGFiYXNlcy5zd2FwKGRldGFpbHNWZWN0b3IpOyAKICAgICAgICAgb3JpZ2luQW5k
RGF0YWJhc2VzVmVjdG9yLmFwcGVuZChvcmlnaW5BbmREYXRhYmFzZXMpOwogICAgIH0KQEAgLTEx
Niw3ICsxMTYsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnCiAg
ICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJs
ZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gPiBvcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMo
b3JpZ2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhvcmlnaW5z
KTsKIAogICAgIHNpemVfdCBudW1PcmlnaW5zID0gb3JpZ2lucy5zaXplKCk7CiAKQEAgLTEzNCw3
ICsxMzQsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VXCiAgICAg
aWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbi5nZXQoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0
KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBj
b25zdApAQCAtMTQ1LDE0ICsxNDUsMTQgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlcwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKIH0K
IAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpIGNvbnN0CiB7
CiAgICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlz
YWJsZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpz
ZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVuc2lnbmVk
IGxvbmcgbG9uZyBxdW90YSkgY29uc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkRhdGFi
YXNlTWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbi5n
ZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG9y
aWdpbi5nZXQoKSwgcXVvdGEpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0
Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
YXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJBcmd1bWVudHMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
ckNsaWVudCB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEYXRhYmFz
ZU1hbmFnZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXImIHNoYXJl
ZCgpOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VX
aXRoTmFtZUZvck9yaWdpbihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
c0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0OwogCi0gICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50CisgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTM3NDA3
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCwxMCArODAsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0No
cm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3Vt
ZW50RnJhZ21lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTIzMDMsNyArMjMw
Myw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBzZXR0
aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjppbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5h
YmxlZEtleSgpKSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0
YWJhc2U6OnNldElzQXZhaWxhYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgpKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpkYXRhYmFzZXNFbmFibGVkS2V5KCkpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTIt
MTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3Vs
YXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEyLTEyLTA1ICBIYWx0b24gSHVvICA8
aGFsdG9uLmh1b0BpbnRlbC5jb20+CiAKICAgICAgICAgW0NNYWtlXSBVbmlmeSBjb2Rpbmcgc3R5
bGUgZm9yIENNYWtlIGZpbGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkyLDgg
KzkyLDggQEAKIAkJNEJGOTlGOTEwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRjk5RjhG
MEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gKi87IH07CiAJCTUxMUYzRkQ1
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZEMTBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tICovOyB9OwogCQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1
NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk1MTFGM0ZENzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmggKi87IH07Ci0JCTUxMUYzRkQ4MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1t
ICovOyB9OworCQk1MTFGM0ZENzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi87
IH07CisJCTUxMUYzRkQ4MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFG
M0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovOyB9
OwogCQk1MTQ5NENENjBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NENENDBD
N0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IH07CiAJCTUxNDk0
Q0Q3MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NENENTBDN0VCREUwMDA0
MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1tICovOyB9OwogCQk1MTQ5NEQyNDBDN0VD
MUI3MDA0MTc4QzUgLyogV2ViTlNOb3RpZmljYXRpb25DZW50ZXJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0RDIyMEM3RUMxQjYwMDQx
NzhDNSAvKiBXZWJOU05vdGlmaWNhdGlvbkNlbnRlckV4dHJhcy5oICovOyB9OwpAQCAtNDg5LDgg
KzQ4OSw4IEBACiAJCTRCRjk5RjhGMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRWRpdG9yQ2xp
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGM0ZEMTBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZU1h
bmFnZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMUYzRkQzMENF
Q0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMUYzRkQ0MENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0Q0MjJFMDM0Q0Y1NUEwMENBMkFDRCAvKiBXZWJS
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE0NDNGOUEwNDI5
MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvbGljeURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTQ0
M0Y5QjA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQb2xpY3lE
ZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CkBAIC0xMDQ2LDEyICsxMDQ2LDEyIEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTUxMUYzRkQxMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFz
ZU1hbmFnZXIubW0gKi8sCisJCQkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oICovLAorCQkJCTUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJNTFBRURFRjAwQ0VDRjQ1NzAwODU0
MzI4IC8qIFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggKi8sCiAJCQkJNTExRjNGRDIwQ0VD
Qzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCAqLywKIAkJCQlBNURF
RkMwRDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCAqLywKIAkJ
CQlBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0g
Ki8sCi0JCQkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5oICovLAotCQkJCTUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQubW0gKi8sCiAJCQkJM0FCMDJBRjUxMkMxMzE5QjAwRkJCNjk0IC8qIFdlYlN0
b3JhZ2VNYW5hZ2VyLm1tICovLAogCQkJCTNBRTE1RDRGMTJEQkRFRDQwMDkzMjNDOCAvKiBXZWJT
dG9yYWdlTWFuYWdlckludGVybmFsLmggKi8sCiAJCQkJM0FCMDJBRkYxMkMxMzJCMjAwRkJCNjk0
IC8qIFdlYlN0b3JhZ2VNYW5hZ2VyUHJpdmF0ZS5oICovLApAQCAtMTQ0NSwxMCArMTQ0NSwxMCBA
QAogCQkJCTA2NUFENUEzMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwMTYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVT
dGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0UyQTFBNDEyM0IwQjNDMDA5RkUxMkEg
LyogV2ViRGFzaGJvYXJkUmVnaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTFGM0ZENzBDRUND
ODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUFFREVGMTBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUYzRkQ2MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNURFRkMwRjExRDUz
NDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDRCMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRh
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NThBNDA5NjBBMTQ4NTNCMDA1RTY5ODcgLyog
V2ViRGF0YVNvdXJjZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA0QzA4MjRC
RjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MTg2OSw4ICsxODY5LDggQEAKIAkJCQk5Mzk4MTBCRjA4MjRCRjAxMDA4REYwMzggLyogV2ViQ29y
ZVN0YXRpc3RpY3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0UyQTFBNTEyM0IwQjNDMDA5RkUx
MkEgLyogV2ViRGFzaGJvYXJkUmVnaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTExRjNGRDUw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTUxMUYzRkQ4MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlBNURFRkMxMDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0
YWJhc2VRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKLQkJCQk1MTFGM0ZEODBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwRUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRhdGFTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5Mzk4MTBFRjA4MjRCRjAxMDA4REYwMzggLyogV2ViRGVmYXVsdENvbnRleHRN
ZW51RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTExQjA4MjRCRjAxMDA4REYw
MzggLyogV2ViRGVmYXVsdEVkaXRpbmdEZWxlZ2F0ZS5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
UHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGluZ3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKwogMjAxMi0xMi0xMSAgTmltYSBH
aGFuYXZhdGlhbiAgPG5naGFuYXZhdGlhbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBSZWRyYXcgc3BlbGwgY2hlY2sgZGlhbG9nIGFmdGVyIHJvdGF0aW9uLgpJbmRleDogU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw4ICszOSw4IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNp
bmNsdWRlICJET01TdXBwb3J0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVN5bmMuaCIKLSNpbmNsdWRlICJE
YXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJEZWZhdWx0VGFwSGlnaGxpZ2h0LmgiCiAjaW5j
bHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uQ2xpZW50QmxhY2tCZXJyeS5oIgpAQCAtNTg0MywxMyArNTg0MywxMyBAQCB2b2lk
IFdlYlBhZ2VQcml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyhXCiAgICAgY29yZVNldHRpbmdzLT5z
ZXRDb29raWVFbmFibGVkKHdlYlNldHRpbmdzLT5hcmVDb29raWVzRW5hYmxlZCgpKTsKIAogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgLy8gRGF0YWJhc2VUcmFja2VyIGNhbiBvbmx5IGJl
IGluaXRpYWxpemVkIGZvciBvbmNlLCBzbyBpdCBkb2Vzbid0Ci0gICAgLy8gbWFrZSBzZW5zZSB0
byBjaGFuZ2UgZGF0YWJhc2UgcGF0aCBhZnRlciBEYXRhYmFzZVRyYWNrZXIgaGFzCisgICAgLy8g
RGF0YWJhc2VNYW5hZ2VyIGNhbiBvbmx5IGJlIGluaXRpYWxpemVkIGZvciBvbmNlLCBzbyBpdCBk
b2Vzbid0CisgICAgLy8gbWFrZSBzZW5zZSB0byBjaGFuZ2UgZGF0YWJhc2UgcGF0aCBhZnRlciBE
YXRhYmFzZU1hbmFnZXIgaGFzCiAgICAgLy8gYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkLgogICAg
IHN0YXRpYyBib29sIGRiaW5pdCA9IGZhbHNlOwogICAgIGlmICghZGJpbml0ICYmICF3ZWJTZXR0
aW5ncy0+ZGF0YWJhc2VQYXRoKCkuZW1wdHkoKSkgewogICAgICAgICBkYmluaXQgPSB0cnVlOwot
ICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKHdlYlNldHRpbmdzLT5k
YXRhYmFzZVBhdGgoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6aW5pdGlhbGl6ZSh3ZWJT
ZXR0aW5ncy0+ZGF0YWJhc2VQYXRoKCkpOwogICAgIH0KIAogICAgIC8vIFRoZSBkaXJlY3Rvcnkg
b2YgY2FjaGVTdG9yYWdlIGZvciBvbmUgcGFnZSBncm91cCBjYW4gb25seSBiZSBpbml0aWFsaXpl
ZCBvbmNlLgpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNp
b24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja2luZ1N0b3Jl
X3AuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNr
ZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmgiCkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIENocm9tZUNsaWVudEJs
YWNrQmVycnk6OmV4Y2VlZGVkRGF0CiAgICAgfQogI2VuZGlmCiAKLSAgICBEYXRhYmFzZVRyYWNr
ZXImIHRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXImIG1hbmFnZXIgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKIAotICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbFVzYWdlID0gdHJhY2tlci50b3RhbERhdGFiYXNlVXNhZ2UoKTsK
LSAgICB1bnNpZ25lZCBsb25nIGxvbmcgb3JpZ2luVXNhZ2UgPSB0cmFja2VyLnVzYWdlRm9yT3Jp
Z2luKG9yaWdpbik7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsVXNhZ2UgPSBtYW5hZ2Vy
LnRvdGFsRGF0YWJhc2VVc2FnZSgpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5Vc2Fn
ZSA9IG1hbmFnZXIudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKIAotICAgIERhdGFiYXNlRGV0YWls
cyBkZXRhaWxzID0gdHJhY2tlci5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4p
OworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gbWFuYWdlci5kZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihuYW1lLCBvcmlnaW4pOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBlc3RpbWF0ZWRT
aXplID0gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lU3Ry
ID0gZGV0YWlscy5kaXNwbGF5TmFtZSgpOwogCkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRCbGFja0JlcnJ5OjpleGNlZWRlZERhdAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5kYXRhYmFzZVF1b3RhKG9yaWdpblN0
ci5jaGFyYWN0ZXJzKCksIG9yaWdpblN0ci5sZW5ndGgoKSwKICAgICAgICAgbmFtZVN0ci5jaGFy
YWN0ZXJzKCksIG5hbWVTdHIubGVuZ3RoKCksIHRvdGFsVXNhZ2UsIG9yaWdpblVzYWdlLCBlc3Rp
bWF0ZWRTaXplKTsKIAotICAgIHRyYWNrZXIuc2V0UXVvdGEob3JpZ2luLCBxdW90YSk7CisgICAg
bWFuYWdlci5zZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0x
Mi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxh
dGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJEYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjpjbG9zZURhdGFiYXNlSW1tZWRpYXRlbHkpOgorICAg
ICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
dW50aW1lRmVhdHVyZXM6OmVuYWJsZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUnVu
dGltZUZlYXR1cmVzOjppc0RhdGFiYXNlRW5hYmxlZCk6CisKIDIwMTItMTItMTEgIEFsZWMgRmxl
dHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogU3R1YiBv
dXQgZGF0YSBvcGVyYXRpb25zIG9uIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjZW5kaWYKICNpbmNs
dWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRGF0ZVRp
bWVDaG9vc2VySW1wbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAi
QWJzdHJhY3REYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlF1b3RhVHJhY2tlci5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VPYnNlcnZlci5oIgpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgV2ViRGF0YWJhc2U6OnJlc2V0U3BhY2VBdmFpbGFibGUo
Y28KIHZvaWQgV2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2VJbW1lZGlhdGVseShjb25zdCBXZWJT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VOYW1lKQog
ewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5h
bWUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRp
YXRlbHkob3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKICNlbmRpZgogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5j
cHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1
bnRpbWVGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKIAotI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
IgpAQCAtNDUsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBXZWJSdW50aW1l
RmVhdHVyZXM6OmVuYWJsZURhdGFiYXNlKGJvb2wgZW5hYmxlKQogewogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZW5hYmxlKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShlbmFibGUpOwog
I2VuZGlmCiB9CiAKIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc0RhdGFiYXNlRW5hYmxlZCgp
CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjp0cmFja2VyKCku
aXNBdmFpbGFibGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMi0xMSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxs
eSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5j
cHA6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91c2FnZV9nZXQp
OgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KToK
KyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX3NldCk6Cisg
ICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKKyAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0
YWJhc2VfcGF0aF9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKGV3a193ZWJfZGF0YWJhc2VfZGlzcGxheV9uYW1lX2dldCk6CisgICAgICAgIChld2tf
d2ViX2RhdGFiYXNlX2V4cGVjdGVkX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJh
c2VfZmlsZW5hbWVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2Vfc2l6ZV9nZXQpOgor
ICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUpOgorICAgICAgICAoZXdrX3dlYl9kYXRh
YmFzZV9yZW1vdmVfYWxsKToKKwogMjAxMi0xMi0xMSAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dv
bkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIHVudXNlZCBoZWFkZXJzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcg
QEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxz
LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtNDI1LDcg
KzQyNSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXUKICAgICB1
aW50NjRfdCBxdW90YTsKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFi
YXNlTmFtZSwgb3JpZ2luKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwg
b3JpZ2luKTsKICAgICBxdW90YSA9IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKG1f
dmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpdChm
cmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5l
eHBlY3RlZFVzYWdlKCkpOwpAQCAtNDMzLDEwICs0MzMsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnRF
Zmw6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIC8qIGlmIGNsaWVudCBkaWQgbm90IHNldCBxdW90
YSwgYW5kIGRhdGFiYXNlIGlzIGJlaW5nIGNyZWF0ZWQgbm93LCB0aGUKICAgICAgKiBkZWZhdWx0
IHF1b3RhIGlzIGFwcGxpZWQKICAgICAgKi8KLSAgICBpZiAoIXF1b3RhICYmICFEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pKQorICAgIGlmICghcXVv
dGEgJiYgIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdp
bikpCiAgICAgICAgIHF1b3RhID0gZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1
b3RhX2dldCgpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3Jp
Z2luLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3Jp
Z2luLCBxdW90YSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZWN1cml0eV9vcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3
a193ZWJfZGF0YWJhc2UuaCIKQEAgLTY3LDcgKzY3LDcgQEAgdWludDY0X3QgZXdrX3NlY3VyaXR5
X29yaWdpbl93ZWJfZGF0YWJhcwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChv
cmlnaW4sIDApOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5zZWN1
cml0eU9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNzgsNyArNzgsNyBAQCB1aW50NjRfdCBl
d2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJl
dHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihv
cmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdp
bi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXUKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEp
OwogI2VuZGlmCiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBFaW5hX0xpc3QqIGV3a19zZWN1cml0
eV9vcmlnaW5fd2ViX2RhdGFiCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0b3I8
V1RGOjpTdHJpbmc+IG5hbWVzOwogCi0gICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4u
Z2V0KCksIG5hbWVzKSkKKyAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwg
bmFtZXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuYW1lcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0
aW5ncy5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
c2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0VmbC5o
IgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJY29u
RGF0YWJhc2UuaCIKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2NhbF9z
dG9yYWdlX2RhdGFiYXNlCiB2b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQo
Y29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChX
VEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6ZnJvbVVU
RjgocGF0aCkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc193ZWJEYXRhYmFzZVBh
dGgsIHBhdGgpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dl
Yl9kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193
ZWJfZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCiAKLSNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmln
aW4uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKQEAgLTQ1LDcg
KzQ1LDcgQEAgY29uc3QgY2hhciogZXdrX3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbQogICAgICAg
ICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4p
OworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5h
bWUsIG9yaWdpbik7CiAgICAgZGF0YWJhc2UtPmRpc3BsYXlOYW1lID0gZWluYV9zdHJpbmdzaGFy
ZV9hZGQoZGV0YWlscy5kaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsKQEAgLTU5LDcgKzU5LDcgQEAgdWludDY0X3QgZXdrX3dl
Yl9kYXRhYmFzZV9leHBlY3RlZF9zaXplXwogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9y
aWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRh
dGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRh
aWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVB
bmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMuZXhw
ZWN0ZWRVc2FnZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwpAQCAtNzQs
NyArNzQsNyBAQCBjb25zdCBjaGFyKiBld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dlCiAgICAg
ICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdURjo6
U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXVEY6OlN0cmlu
ZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JE
YXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAgICAgZGF0YWJhc2UtPmZpbGVu
YW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJl
dHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CkBAIC0xMDgsNyArMTA4LDcgQEAgdWludDY0X3QgZXdr
X3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0
eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMu
Y3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CkBAIC0x
MTksNyArMTE5LDcgQEAgdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdAog
dm9pZCBld2tfd2ViX2RhdGFiYXNlX3JlbW92ZShFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFzZSkK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQo
KSwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZWxldGVEYXRhYmFzZShkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRh
dGFiYXNlLT5jb3JlTmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CiAj
ZW5kaWYKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3
a19XZWJfRGF0CiB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCh2b2lkKQogewogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkg
dXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiB3
ZWJraXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfd2ViX2RhdGFiYXNlX3VzYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZV9xdW90YSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3NldF93ZWJfZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfYWxsX3dlYl9kYXRhYmFzZXMpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9kaXNw
bGF5X25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWRfc2l6
ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9zaXplKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbGVuYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfZGF0
YWJhc2VfcmVtb3ZlKToKKyAgICAgICAgKHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMp
OgorICAgICAgICAod2Via2l0X2dldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgorICAg
ICAgICAod2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRh
dGVfc2V0dGluZ3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSk6
CisKIDIwMTItMTItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIEluc3RhbGwgR09iamVjdCBET00gYmluZGluZ3MgaGVhZGVycyBp
biBpdHMgb3duIGRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tl
ci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpwcmlu
dChGcmFtZSogZnJhbWUpCiB2b2lkIENocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgZ3VpbnQ2
NCBkZWZhdWx0UXVvdGEgPSB3ZWJraXRfZ2V0X2RlZmF1bHRfd2ViX2RhdGFiYXNlX3F1b3RhKCk7
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IGRlZmF1bHRRdW90YSk7CiAKICAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJh
bWUpOwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfd2ViX2ZyYW1l
X2dldF9zZWN1cml0eV9vcmlnaW4od2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQw
NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAid2Via2l0ZmF2aWNvbmRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFzZURl
dGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29uRGF0
YWJhc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29u
ZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGljb25kYXRhYmFzZS5oIgog
Ci0jaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
c2VjdXJpdHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXRz
ZWN1cml0eW9yaWdpbi5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgpAQCAtMjk4LDcgKzI5OCw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmln
aW4oY29yZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnVzYWdlRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpAQCAtMzIxLDcgKzMyMSw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oY29y
ZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnF1b3RhRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRp
ZgpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRfd2Vi
X2RhdGEKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShjb3JlT3JpZ2luLCBxdW90YSk7Cisg
ICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoY29yZU9yaWdp
biwgcXVvdGEpOwogI2VuZGlmCiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBHTGlzdCogd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9nZXRfYWxsX3dlCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKICAgICBWZWN0b3I8V1RGOjpTdHJp
bmc+IGRhdGFiYXNlTmFtZXM7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oY29yZU9yaWdpbiwgZGF0YWJhc2VOYW1l
cykpCisgICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQogICAgICAgICByZXR1
cm4gTlVMTDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNp
emUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJkYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRGF0YWJhc2VE
ZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJh
c2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgpAQCAtMzI3LDcgKzMyNyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFiYXNl
X2dldF9kaXMKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJh
c2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJh
c2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOwor
ICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29y
ZShwcml2LT5vcmlnaW4pKTsKICAgICBXVEY6OlN0cmluZyBkaXNwbGF5TmFtZSA9ICBkZXRhaWxz
LmRpc3BsYXlOYW1lKCk7CiAKICAgICBpZiAoZGlzcGxheU5hbWUuaXNFbXB0eSgpKQpAQCAtMzU5
LDcgKzM1OSw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWQKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRl
dGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFt
ZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNvcmU6
OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5vcmln
aW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9n
ZXRfc2l6ZShXZWIKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0
YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikp
OworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwg
Y29yZShwcml2LT5vcmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2UoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC00MDYsNyArNDA2LDcgQEAgY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
V2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7CiAgICAg
V1RGOjpTdHJpbmcgY29yZU5hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJpdi0+bmFtZSk7
Ci0gICAgV1RGOjpTdHJpbmcgY29yZVBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgY29yZU5hbWUp
OworICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShjb3JlKHByaXYtPm9yaWdpbiksIGNvcmVOYW1l
KTsKIAogICAgIGlmIChjb3JlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiIiOwpAQCAt
NDM1LDcgKzQzNSw3IEBAIHZvaWQgd2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUoV2ViS2l0V2UK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRl
KiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5uYW1l
KTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFz
ZShjb3JlKHByaXYtPm9yaWdpbiksIHByaXYtPm5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTQ0OSw3
ICs0NDksNyBAQCB2b2lkIHdlYmtpdF93ZWJfZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiB2b2lk
IHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMoKQogewogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVs
ZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQg
d2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcygpCiBjb25zdCBnY2hhciogd2Via2l0X2dl
dF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIFdURjo6U3RyaW5nIHBhdGggPSBX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgo
KTsKIAogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAtNDkz
LDcgKzQ5Myw3IEBAIHZvaWQgd2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3AKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CisgICAgV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNv
cmVQYXRoKTsKIAogICAgIGdfZnJlZSh3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOwog
ICAgIHdlYmtpdF9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCA9IGdfc3RyZHVwKGNvcmVQYXRoLnV0
ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgi
CiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTQy
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgogI2luY2x1ZGUg
IkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgpAQCAtMzQxMSw3ICszNDEx
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogICAgIGNvcmVT
ZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2YXRl
LT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1ByaXZh
dGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnNldElzQXZhaWxhYmxlKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTM1MTUsNyArMzUxNSw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3QKICAgICAgICAgc2V0dGlu
Z3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJu
X3N0cmluZygiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIikpIHsKLSAgICAgICAgQWJzdHJhY3REYXRh
YmFzZTo6c2V0SXNBdmFpbGFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKKyAgICAg
ICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZ192YWx1ZV9nZXRf
Ym9vbGVhbigmdmFsdWUpKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIGlmIChuYW1lID09IGdf
aW50ZXJuX3N0cmluZygiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTExICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVz
ZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIG9yaWdpbnNdKToKKyAgICAg
ICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46XSk6CisgICAgICAg
ICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZXRhaWxzRm9yRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToK
KyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZUFsbERhdGFiYXNlc10pOgorICAg
ICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlT3JpZ2luOl0pOgorICAgICAgICAoLVtX
ZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAgICAg
KFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9t
YWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50Lm1tLgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojpz
aGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKERp
ZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1v
ZGlmeU9yaWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9kaWZ5
T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNo
RGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVF1
b3RhTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgdXNhZ2Vd
KToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgcXVvdGFdKToKKyAgICAgICAg
KC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XSk6CisgICAgICAgICogU3RvcmFn
ZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTdG9yYWdl
L1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmln
aW4gdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVvdGFdKToKKyAgICAg
ICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gc2V0UXVvdGE6XSk6CisgICAgICAgICogV2ViS2l0Lm9y
ZGVyOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1l
IF9jYWNoZWFiaWxpdHlEaWN0aW9uYXJ5XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTItMTIt
MTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91
bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJL
aXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCShy
ZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHdvcmtp
bmcgY29weSkKQEAgLTIyMSw5ICsyMjEsOSBAQCBfaW5pdGlhbGl6ZUxvZ0NoYW5uZWwKICtbV2Vi
SGlzdG9yeUl0ZW0gaW5pdGlhbGl6ZV0KICtbV2ViSGlzdG9yeUl0ZW0oV2ViSW50ZXJuYWwpIGlu
aXRXaW5kb3dXYXRjaGVySWZOZWNlc3NhcnldCiBfX1ozNldlYktpdEluaXRpYWxpemVEYXRhYmFz
ZXNJZk5lY2Vzc2FyeXYKLV9fWk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDMwc2hhcmVkV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50RXYKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDMw
c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RXYKIF9fWjM0V2ViS2l0SW5pdGlhbGl6ZVN0
b3JhZ2VJZk5lY2Vzc2FyeXYKLV9fWk4yM1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50MjlzaGFyZWRX
ZWJTdG9yYWdlVHJhY2tlckNsaWVudEV2CitfX1pOMjNXZWJTdG9yYWdlTWFuYWdlckNsaWVudDI5
c2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJDbGllbnRFdgogX19aTjIxV2ViUGxhdGZvcm1TdHJhdGVn
aWVzMTBpbml0aWFsaXplRXYKIF9fWk4xNVdlYkNocm9tZUNsaWVudEMxRVA3V2ViVmlldwogX19a
TjIwV2ViQ29udGV4dE1lbnVDbGllbnRDMUVQN1dlYlZpZXcKQEAgLTE5MzUsOCArMTkzNSw4IEBA
IF9fWk4xNVdlYkNocm9tZUNsaWVudDIxZXhjZWVkZWREYXRhYmFzZVEKIC1bV2ViRGF0YWJhc2VR
dW90YU1hbmFnZXIgaW5pdFdpdGhPcmlnaW46XQogLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciBz
ZXRRdW90YTpdCiAtW1dlYlNlY3VyaXR5T3JpZ2luKFdlYkludGVybmFsKSBfY29yZV0KLV9fWk4y
NFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDIzZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5FUE43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW5FCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQyNWRp
c3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VFUE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFCitfX1pOMjRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQyM2Rpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjI0V2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50MjVkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlRVBON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVu
dDE3ZGlkTm90QWxsb3dTY3JpcHRFdgogLVtXZWJCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExpc3RD
b3VudF0KIC1bV2ViQmFja0ZvcndhcmRMaXN0IGJhY2tMaXN0Q291bnRdCkBAIC0xOTgwLDcgKzE5
ODAsNyBAQCBfX1pOM1dURjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QCiBfX1pOM1dU
RjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QdHJJMTROU011dGFibGVBcnJheUVFRU5T
XzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfN0ludEhhc2hJeUVFTlNfMTRQYWlySGFzaFRy
YWl0c0lOU18xMEhhc2hUcmFpdHNJeEVFTlNCX0lTNF9FRUVFU0NfRTZyZWhhc2hFaQogLVtXZWJG
cmFtZVZpZXcoV2ViUHJpdmF0ZSkgX2FyZWFdCiArW1dlYldvcmtlcnNQcml2YXRlIHdvcmtlclRo
cmVhZENvdW50XQotX19aTjE5RGlkTW9kaWZ5T3JpZ2luRGF0YTIwZGlzcGF0Y2hUb01haW5UaHJl
YWRFUDI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50UE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5F
CitfX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMjBkaXNwYXRjaFRvTWFpblRocmVhZEVQMjRXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnRQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkUKIF9fWk4xOURp
ZE1vZGlmeU9yaWdpbkRhdGEzNWRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkRVB2
CiBfX1pOMTVXZWJDaHJvbWVDbGllbnQyNWVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRFUE43V2Vi
Q29yZTdFbGVtZW50RQogLVtXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgLmN4eF9jb25zdHJ1Y3Rd
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ci5tbQkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50LmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbXBvcnQgIldl
YlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
NjIsNyArNjIsNyBAQCArIChXZWJEYXRhYmFzZU1hbmFnZXIgKikgc2hhcmVkV2ViRGF0YWJhCiAt
IChOU0FycmF5ICopb3JpZ2lucwogewogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
ID4gY29yZU9yaWdpbnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhj
b3JlT3JpZ2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhjb3Jl
T3JpZ2lucyk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvcmVPcmlnaW5zLnNpemUoKV07CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTc3
LDcgKzc3LDcgQEAgLSAoTlNBcnJheSAqKW9yaWdpbnMKIC0gKE5TQXJyYXkgKilkYXRhYmFzZXNX
aXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVWZWN0b3I7Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9yKSkKKyAgICBpZiAo
IURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oW29yaWdp
biBfY29yZV0sIG5hbWVWZWN0b3IpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIE5T
TXV0YWJsZUFycmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6bmFtZVZlY3Rvci5zaXplKCldOwpAQCAtOTIsNyArOTIsNyBAQCAtIChOU0RpY3Rpb25h
cnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TCiB7CiAgICAgc3RhdGljIGlkIGtleXNbM10gPSB7
V2ViRGF0YWJhc2VEaXNwbGF5TmFtZUtleSwgV2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXksIFdl
YkRhdGFiYXNlVXNhZ2VLZXl9OwogICAgIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJh
c2VJZGVudGlmaWVyLCBbb3JpZ2luIF9jb3JlXSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
YXRhYmFzZUlkZW50aWZpZXIsIFtvcmlnaW4gX2NvcmVdKTsKICAgICBpZiAoZGV0YWlscy5uYW1l
KCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIApAQCAtMTA2LDE3ICsx
MDYsMTcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOUwogCiAtICh2
b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRl
bGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJp
dHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKIH0KIAogLSAoQk9P
TClkZWxldGVEYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdp
bjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0sIGRhdGFiYXNlSWRl
bnRpZmllcik7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURh
dGFiYXNlKFtvcmlnaW4gX2NvcmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiBAZW5kCkBA
IC0xMzcsMTEgKzEzNywxMyBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vz
c2FyCiAgICAgaWYgKGluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBEYXRhYmFz
ZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworCiAgICAg
Ly8gU2V0IHRoZSBkYXRhYmFzZSByb290IHBhdGggaW4gV2ViQ29yZQotICAgIERhdGFiYXNlVHJh
Y2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VzRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBk
Yk1hbmFnZXIuaW5pdGlhbGl6ZShkYXRhYmFzZXNEaXJlY3RvcnlQYXRoKCkpOwogCi0gICAgLy8g
U2V0IHRoZSBEYXRhYmFzZVRyYWNrZXJDbGllbnQKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXRDbGllbnQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKSk7CisgICAgLy8gU2V0IHRoZSBEYXRhYmFzZU1hbmFnZXJDbGllbnQK
KyAgICBkYk1hbmFnZXIuc2V0Q2xpZW50KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVk
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkpOwogICAgIAogICAgIGluaXRpYWxpemVkID0gWUVT
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9XZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTM3MzM4KQorKysgU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpIAorCisjaW1w
b3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorCitjbGFzcyBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4o
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5n
JiBkYXRhYmFzZUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQoKTsKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpIAogCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaD4KIAotY2xhc3MgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7Citj
bGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICBzdGF0aWMgV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAg
ICAKLSAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFs
IH5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOwogcHJpdmF0ZToKLSAgICBXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsK
IH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHJldmlzaW9uIDEzNzMzOCkJKGZyb20gU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW06MTM3MzM4
KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2ltcG9ydCAiV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW1wb3J0
ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdp
bkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCit7CisgICAg
c3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHJldHVybiBzaGFyZWRDbGllbnQ7Cit9CisKK1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudDo6V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKK30K
KworV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkK
K3sKK30KKworY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCisgICAgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBj
b250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVk
Q29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgICAgIDog
Y2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBvcmlnaW4ob3JpZ2luKQorICAgIHsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lk
KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAg
ICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdp
bkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5mby0+Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOworICAgICAgICBkZWxldGUgaW5mbzsKKyAgICB9
CisKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudDsKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKK3ZvaWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAg
IGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlz
cGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRv
cHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5
T3JpZ2luOm9yaWdpbl0pOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJEYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5vdGlm
aWNhdGlvbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpXTsKK30KKwordm9pZCBXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCit7CisgICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNw
YXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9w
dE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46b3JpZ2luXSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdXNlckluZm8oQWRv
cHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9iamVjdHNBbmRLZXlzOihOU1N0cmluZyAqKWRh
dGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJZGVudGlmaWVyS2V5LCBuaWxdKTsKKyAgICAK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0YWJhc2VOb3RpZmljYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ondl
YlNlY3VyaXR5T3JpZ2luLmdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0JKHJldmlzaW9uIDEzNzMzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAgCi0jaW1wb3J0ICJXZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaCIKKyNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtMzgsMzEgKzM4LDMxIEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQoKQogewotICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQqIHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICBz
dGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKIH0KIAotV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogewogfQogCi1X
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQorV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKIH0K
IAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGlkTW9kaWZ5T3JpZ2luRGF0YSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hU
b01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAg
ewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9y
aWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5P
bk1haW5UaHJlYWQsIGNvbnRleHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEaWRNb2RpZnlP
cmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
KQogICAgICAgICA6IGNsaWVudChjbGllbnQpCiAgICAgICAgICwgb3JpZ2luKG9yaWdpbikKICAg
ICB7CkBAIC03NiwxMSArNzYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgZGVsZXRlIGluZm87CiAg
ICAgfQogCi0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQ7CisgICAgV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBv
cmlnaW47CiB9OwogCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2lu
RGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKQEAgLTkzLDcgKzkzLDcg
QEAgdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2Vj
dXJpdHlPcmlnaW4uZ2V0KCldOwogfQogCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkp
IHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhp
cywgb3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VR
dW90YU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIK
IAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgotI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MCw3ICs1MCw3IEBAIC0gKFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOworICAgIHJldHVybiBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNTksNyArNTksNyBAQCAtICh1bnNpZ25lZCBs
b25nIGxvbmcpdXNhZ2UKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1
b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7CiAjZWxzZQogICAg
IHJldHVybiAwOwogI2VuZGlmCkBAIC03MSw3ICs3MSw3IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsKICNlbmRpZgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAKLQotI2ltcG9ydCA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXJDbGllbnQuaD4KLQotY2xhc3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KCk7Ci0gICAgCi0gICAgdmlydHVhbCB+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlm
aWVyKTsKLXByaXZhdGU6Ci0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci19OwotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0gCi0jaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIK
LQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdl
clByaXZhdGUuaCIKLSNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKLSNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hh
cmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLSAgICBzdGF0aWMgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
KCk7Ci0gICAgcmV0dXJuIHNoYXJlZENsaWVudDsKLX0KLQotV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQotewotfQotCi1XZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQotewotfQotCi1jbGFzcyBEaWRN
b2RpZnlPcmlnaW5EYXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmln
aW5EYXRhKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
LSAgICB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlkTW9k
aWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIERpZE1v
ZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKLSAgICAgICAgOiBjbGllbnQoY2xpZW50KQotICAg
ICAgICAsIG9yaWdpbihvcmlnaW4pCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCi0gICAgewot
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBEaWRNb2RpZnlPcmlnaW5E
YXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOwot
ICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdp
bi5nZXQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpbmZvOwotICAgIH0KLQotICAgIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCogY2xpZW50OwotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
OwotfTsKLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0
aGlzLCBvcmlnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPFdl
YlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5
T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0K
LSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2Vi
U2VjdXJpdHlPcmlnaW4uZ2V0KCldOwotfQotCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRo
aXMsIG9yaWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKLSAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBbW05TRGljdGlvbmFy
eSBhbGxvY10gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyLCBX
ZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOwotICAgIAotICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VE
aWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQko
cmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbXBv
cnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJRdW90YU1hbmFnZXIu
aCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
MTYxLDE0ICsxNjEsMTQgQEAgLSAoaWQ8V2ViUXVvdGFNYW5hZ2VyPilkYXRhYmFzZVF1b3RhTWFu
YQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBkZXByZWNhdGVkIGFuZCBz
aG91bGQgcmVtb3ZlZCBsYXRlci4KIC8vIENsaWVudHMgc2hvdWxkIGluc3RlYWQgZ2V0IGEgV2Vi
UXVvdGFNYW5hZ2VyLCBhbmQgcXVlcnkgLyBzZXQgdGhlIHF1b3RhIHZpYSB0aGUgTWFuYWdlci4K
LS8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4gI2luY2x1ZGUgc2hvdWxk
IGJlIHJlbW92ZWQgYXMgd2VsbC4KKy8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFn
ZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQgYXMgd2VsbC4KIAogQGltcGxlbWVudGF0
aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVkKQogCiAtICh1bnNpZ25lZCBsb25nIGxv
bmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9w
cml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNzcsNyArMTc3LDcg
QEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVv
dGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3Jp
Z2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
cXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xODYsNyArMTg2LDcgQEAgLSAo
dW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25n
IGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRR
dW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90YSk7
CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShy
ZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01J
bXBsZW1lbnRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZUNvbnRleHQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0xMDY5LDcgKzEwNjks
NyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX2NhY2hlYWJpbGl0eURpCiAgICAgCiAgICAg
aWYgKERvY3VtZW50KiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkp
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoRGF0YWJhc2VDb250ZXh0
OjpoYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKKyAgICAgICAgaWYgKERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpKQogICAgICAgICAgICAgW3Jl
c3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYkZy
YW1lVXNlc0RhdGFiYXNlc107CiAjZW5kaWYKICAgICAgICAgaWYgKCFkb2N1bWVudC0+Y2FuU3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBACiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMQ29ubmVjdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2Fz
dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBsLmg+CkBAIC0xMTksNiAr
MTE4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTE0NjgsNyArMTQ2OCw3IEBAIC0gKHZvaWQp
X3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy0+c2V0UGljdG9n
cmFwaEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHBpY3RvZ3JhcGhGb250RmFtaWx5XSk7CiAgICAg
c2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBhcmVQbHVnSW5zRW5hYmxl
ZF0pOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0
SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNlc0VuYWJsZWRdKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShbcHJlZmVyZW5jZXMgZGF0YWJhc2Vz
RW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQo
W3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkXSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3
KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0
YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmRp
c3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6ZXhwZWN0ZWRTaXplKToKKyAgICAg
ICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmZpbGVOYW1l
KToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAoUVdl
YkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMpOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJp
dHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdl
KToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VRdW90YSk6CisgICAgICAg
IChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNl
Y3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6
ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2Zm
bGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQ
YXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisKIDIw
MTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBp
dCBzaG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNp
bmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmln
aW5fcC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtODcsNyArODcsNyBAQCBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6bmFt
ZSgpIGNvbnN0CiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZGlzcGxheU5hbWUoKSBjb25zdAogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1l
LCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+
b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWlscy5kaXNwbGF5TmFtZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gUVN0cmluZygpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIFFTdHJpbmcgUVdlYkRh
dGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnMKIHFpbnQ2NCBRV2ViRGF0YWJhc2U6OmV4cGVjdGVk
U2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURl
dGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9y
aWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOwogICAgIHJldHVybiBkZXRhaWxzLmV4cGVj
dGVkVXNhZ2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC0xMTMsNyArMTEzLDcgQEAgcWlu
dDY0IFFXZWJEYXRhYmFzZTo6ZXhwZWN0ZWRTaXplKCkgY29ucwogcWludDY0IFFXZWJEYXRhYmFz
ZTo6c2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFz
ZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VEZXRh
aWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOwogICAgIHJldHVybiBkZXRhaWxzLmN1
cnJlbnRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTE0OCw3ICsxNDgsNyBAQCBR
V2ViRGF0YWJhc2U6OlFXZWJEYXRhYmFzZShRV2ViRGF0YWJhc2VQCiBRU3RyaW5nIFFXZWJEYXRh
YmFzZTo6ZmlsZU5hbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
cmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoZC0+
b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1l
LCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBRU3RyaW5nKCk7CiAjZW5kaWYKQEAgLTE3MSw3
ICsxNzEsNyBAQCBRV2ViU2VjdXJpdHlPcmlnaW4gUVdlYkRhdGFiYXNlOjpvcmlnaW4oCiB2b2lk
IFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoY29uc3QgUVdlYkRhdGFiYXNlJiBkYikKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQoKSwgZGIuZC0+bmFtZSk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2UoZGIuZC0+b3JpZ2luLmdldCgp
LCBkYi5kLT5uYW1lKTsKICNlbmRpZgogfQogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBRV2Vi
RGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlKGNvbnN0IAogdm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92
ZUFsbERhdGFiYXNlcygpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKICNlbmRpZgogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJKHJldmlzaW9u
IDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlv
cmlnaW4uaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVk
ZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKQEAgLTEyMSw3ICsxMjEsNyBAQCBpbnQgUVdlYlNlY3VyaXR5T3JpZ2lu
Ojpwb3J0KCkgY29uc3QKIHFpbnQ2NCBRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlVXNhZ2Uo
KSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CisgICAg
cmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKGQtPm9yaWdp
bi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMzMsNyArMTMzLDcg
QEAgcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VVc2FnZQogcWludDY0IFFXZWJT
ZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VRdW90YSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JP
cmlnaW4oZC0+b3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2lu
OjpkYXRhYmFzZVF1b3RhCiB2b2lkIFFXZWJTZWN1cml0eU9yaWdpbjo6c2V0RGF0YWJhc2VRdW90
YShxaW50NjQgcXVvdGEpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShkLT5vcmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAg
ICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShkLT5vcmlnaW4uZ2V0KCksIHF1
b3RhKTsKICNlbmRpZgogfQogCkBAIC0xODEsNyArMTgxLDcgQEAgUUxpc3Q8UVdlYlNlY3VyaXR5
T3JpZ2luPiBRV2ViU2VjdXJpdHlPcgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBW
ZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNvcmVPcmlnaW5zOwotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNvcmVPcmlnaW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFFXZWJTZWN1
cml0eU9yaWdpblByaXZhdGUqIHByaXYgPSBuZXcgUVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZShj
b3JlT3JpZ2luc1tpXS5nZXQoKSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgUUxpc3Q8UVdlYkRhdGFi
YXNlPiBRV2ViU2VjdXJpdHlPcmlnaW46OgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
VmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKIAotICAgIGlmICghRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0
b3IpKQorICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zv
ck9yaWdpbihkLT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0b3IpKQogICAgICAgICByZXR1cm4gZGF0
YWJhc2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lVmVjdG9yLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFFXZWJEYXRhYmFzZVByaXZhdGUqIHByaXYgPSBuZXcgUVdlYkRhdGFi
YXNlUHJpdmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShy
ZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsOSBAQAogCiAjaW5jbHVkZSAicXdlYnBsdWdp
bmRhdGFiYXNlX3AuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCkBAIC0yMzEsNyArMjMwLDcg
QEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6T2Zm
bGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVT
dG9yYWdlRGF0YWJhc2VFbmFibGVkKSk7Ci0gICAgICAgIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJh
c2U6OnNldElzQXZhaWxhYmxlKHZhbHVlKTsKKyAgICAgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUodmFsdWUpOwogI2VuZGlmCiAKICAgICAgICAg
dmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkLApAQCAtMTAwNCw3ICsxMDAzLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6
OnNldE9mZmxpbmVTdG9yYWdlUGF0aAogewogICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3Jl
UXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyAgICBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgo
cGF0aCk7CiAjZW5kaWYKIH0KIApAQCAtMTAyMCw3ICsxMDE5LDcgQEAgUVN0cmluZyBRV2ViU2V0
dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aAogewogICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJD
b3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKCk7CiAjZWxzZQogICAgIHJldHVybiBRU3RyaW5nKCk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3Bw
CShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1
ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgi
CiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgi
CkBAIC01MzksOCArNTM5LDggQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6ZXhjZWVkZWREYXRhYmFz
ZVF1bwogewogICAgIHF1aW50NjQgcXVvdGEgPSBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdl
RGVmYXVsdFF1b3RhKCk7CiAKLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhh
c0VudHJ5Rm9yT3JpZ2luKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAg
ICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKSkKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKIAogICAgIG1fd2ViUGFn
ZS0+ZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFtZUFkYXB0ZXI6OmtpdChmcmFtZSksIGRh
dGFiYXNlTmFtZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MDcpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
OSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJh
c2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhP
cmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yRGF0YWJhc2Up
OgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAg
ICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViRGF0
YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFn
ZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChXZWJE
YXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAg
ICAgKFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdp
bjo6cXVvdGEpOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnNldFF1b3RhKToKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVz
c2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjAyLDcgKzIwMiw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KIHsKICAgICBpZiAoIXNfc2hhcmVkV2ViRGF0
YWJhc2VNYW5hZ2VyKSB7CiAgICAgICAgIHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmFkb3B0
UmVmKFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKSk7Ci0gICAgICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudChzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdl
ci5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldENsaWVudChz
X3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNf
c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmNvcHlSZWZUbyhyZXN1bHQpOwpAQCAtMjIwLDcgKzIy
MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gb3Jp
Z2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAgICAgICAg
IENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+ID4g
PiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gPiA+OjphZG9wdChvcmlnaW5zKSk7CiAKICAgICAqcmVzdWx0ID0gZW51bVZh
cmlhbnQubGVha1JlZigpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4o
KSwgZGF0YWJhc2VOYW1lcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJh
c2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0
YWJhc2VOYW1lcyk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4g
PiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPiA+
OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdp
bikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxz
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oU3Ry
aW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpLAorICAgIERhdGFi
YXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNl
TmFtZSkpLAogICAgICAgICB3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CiAK
ICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCkBAIC0yODQsNyArMjg0LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIGlmICh0aGlzICE9IHNf
c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTMwMiw3ICszMDIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdp
bih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9y
aWdpbigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzI0LDcgKzMyNCw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAoIXdlYlNlY3VyaXR5
T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
KCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7Cisg
ICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlP
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xl
bihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM4MSw3ICszODEs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKHRo
aXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcob3JpZ2luKS5nZXQoKSwgcXVvdGEpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MTYs
NyArNDE2LDcgQEAgdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlcwogICAg
ICAgICByZXR1cm47CiAKICAgICBXVEY6OlN0cmluZyBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlc0RpcmVjdG9yeSk7CisgICAgV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGRhdGFiYXNlc0RpcmVjdG9yeSk7CiAKICAg
ICBpbml0aWFsaXplZCA9IHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRh
YmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDkgQEAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlckNsaWVudC5oPgogCi1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgSVdlYkRh
dGFiYXNlTWFuYWdlciwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgewor
Y2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIElXZWJEYXRhYmFzZU1hbmFnZXIsIHBy
aXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgV2ViRGF0YWJhc2VNYW5hZ2VyKiBjcmVhdGVJbnN0YW5jZSgpOwogCkBAIC03Niw3ICs3Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG9yaWdpbiwKICAgICAgICAgLyog
W2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogCi0gICAgLy8gRGF0YWJhc2VUcmFj
a2VyQ2xpZW50CisgICAgLy8gRGF0YWJhc2VNYW5hZ2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lKTsKIApJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAKICNpZiAhRU5BQkxFKFNRTF9EQVRBQkFT
RSkKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTEzNCw3ICsxMzQsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAg
KnJlc3VsdCA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG1fc2Vj
dXJpdHlPcmlnaW4uZ2V0KCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQpAQCAtMTUwLDcg
KzE1MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2lu
LmdldCgpKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFG
b3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpAQCAtMTYyLDcgKzE2Miw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICAvKiBbaW5dICovIHVuc2lnbmVk
IGxvbmcgbG9uZyBxdW90YSkgCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBx
dW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEobV9zZWN1cml0
eU9yaWdpbi5nZXQoKSwgcXVvdGEpOwogCiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0JhY2tGb3J3YXJkTGlzdEltcGwuaD4KQEAgLTc2LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtNDgwNCw3ICs0ODA0LDcgQEAgSFJFU1VMVCBXZWJWaWV3
Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5kYXRhYmFz
ZXNFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJu
IGhyOwotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZWQpOworICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxhYmxlKGVuYWJsZWQpOwogI2Vu
ZGlmCiAKICAgICBociA9IHByZWZzUHJpdmF0ZS0+bG9jYWxTdG9yYWdlRW5hYmxlZCgmZW5hYmxl
ZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMi0x
MSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUg
ZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRX
eDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3OjpHZXREYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OlNldERhdGFiYXNlc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpB
cmVEYXRhYmFzZXNFbmFibGVkKToKKwogMjAxMi0xMS0yNyAgSmFtZXMgU2ltb25zZW4gIDxzaW1v
bmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29uc29saWRhdGUgRnJhbWVMb2FkZXI6Omxv
YWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtpbmcgYSBGcmFtZUxvYWRSZXF1ZXN0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDggKzc2LDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAi
QWJzdHJhY3REYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKICNpbmNsdWRlICJ3eC93eHByZWMuaCIK
QEAgLTExMjYsNyArMTEyNSw3IEBAIGJvb2wgV2ViVmlldzo6U2hvdWxkQ2xvc2UoKSBjb25zdAog
dm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeShjb25zdCB3eFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnkpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJh
c2VEaXJlY3RvcnkpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dERhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRhYmFzZURpcmVjdG9yeSk7CiAjZW5kaWYKIH0KIApA
QCAtMTEzNCw3ICsxMTMzLDcgQEAgdm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeShj
b25zdAogd3hTdHJpbmcgV2ViVmlldzo6R2V0RGF0YWJhc2VEaXJlY3RvcnkoKQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIHJldHVybiBXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKICNlbHNl
CiAgICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7CiAjZW5kaWYKQEAgLTExNDQsNyArMTE0Myw4IEBA
IHd4U3RyaW5nIFdlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KCkKIHZvaWQgV2ViVmlldzo6
U2V0RGF0YWJhc2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShlbmFi
bGVkKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIG1hbmFnZXIuc2V0SXNBdmFpbGFibGUo
ZW5hYmxlZCk7CiAjZW5kaWYKIH0KIApAQCAtMTE1Miw3ICsxMTUyLDggQEAgdm9pZCBXZWJWaWV3
OjpTZXREYXRhYmFzZXNFbmFibGVkKGJvb2wgZQogYm9vbCBXZWJWaWV3OjpBcmVEYXRhYmFzZXNF
bmFibGVkKCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3Jl
OjpBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlciYgZGJNYW5hZ2VyID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7
CisgICAgcmV0dXJuIGRiTWFuYWdlci5pc0F2YWlsYWJsZSgpOwogI2VuZGlmCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
Q2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50V3guaCIKICNpbmNsdWRlICJDb25zb2xl
LmgiCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogI2luY2x1ZGUgIkZpbGVD
aG9vc2VyLmgiCiAjaW5jbHVkZSAiRmlsZUljb25Mb2FkZXIuaCIKQEAgLTQyNyw4ICs0MjcsOCBA
QCB2b2lkIENocm9tZUNsaWVudFd4OjpleGNlZWRlZERhdGFiYXNlUXVvCiAgICAgaWYgKFdlYkZy
YW1lKiB3ZWJGcmFtZSA9IG1fd2ViVmlldy0+R2V0TWFpbkZyYW1lKCkpCiAgICAgICAgIGlmIChG
cmFtZSogZnJhbWUgPSB3ZWJGcmFtZS0+R2V0RnJhbWUoKSkKICAgICAgICAgICAgIGlmIChEb2N1
bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBpZiAo
IURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgICAgICAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuc2V0UXVvdGEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9y
T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgICAgICAgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCksIHF1b3RhKTsKIH0KICNlbmRpZgogCg==
</data>
<flag name="commit-queue"
          id="195654"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178981</attachid>
            <date>2012-12-11 23:48:00 -0800</date>
            <delta_ts>2012-12-11 23:50:33 -0800</delta_ts>
            <desc>Fixed a few issues, and let&apos;s retry with the EWS bots.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>150735</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZU1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp+RGF0YWJhc2VNYW5hZ2VyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNl
dENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
aDoKKyAgICAgICAgKERhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6Cisg
ICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2Fu
Q2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAy
MDEyLTEyLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgRWxlbWVudC1zcGVjaWZpYyB0cmF2ZXJzYWwgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTk0Nyw2ICs5NDcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5jcHAKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ci5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShy
ZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDk4LDEzICsyMDk4LDE1IEBAIHdlYmNvcmVfbW9kdWxlc19zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VD
b250ZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VE
ZXRhaWxzLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlU3luYy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGFzay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUYXNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9P
cmlnaW5RdW90YU1hbmFnZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTM3NDA3
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTQyMiw2
ICsxNDIyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUF1dGhvcml6ZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaCBcCisgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVN5bmMuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBc
CiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIFwKQEAgLTI5NzcsNiAr
Mjk3OCw3IEBAIHVzZT8oUExVR0lOX0JBQ0tFTkRfWExJQikgewogZW5hYmxlPyhTUUxfREFUQUJB
U0UpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9DaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFz
ay5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBc
CiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxOSArMzY0LDIwIEBAIF9fWk43
V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFFdgogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3Vy
Y2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VS
TEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJD
b3JlMTVET01XcmFwcGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01X
cmFwcGVyV29ybGREMUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlQ29udGV4dDE2aGFzT3BlbkRh
dGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQotX19aTjdXZWJDb3JlMTVEYXRh
YmFzZVRyYWNrZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyMTRkZWxldGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9yaWdp
bkVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTRxdW90YUZv
ck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFj
a2VyMTR1c2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE1
RGF0YWJhc2VUcmFja2VyMTdpbml0aWFsaXplVHJhY2tlckVSS04zV1RGNlN0cmluZ0UKLV9fWk43
V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMThkZWxldGVBbGxEYXRhYmFzZXNFdgotX19aTjdXZWJD
b3JlMTVEYXRhYmFzZVRyYWNrZXIyMmRhdGFiYXNlTmFtZXNGb3JPcmlnaW5FUE5TXzE0U2VjdXJp
dHlPcmlnaW5FUk4zV1RGNlZlY3RvcklOUzNfNlN0cmluZ0VMbTBFRUUKLV9fWk43V2ViQ29yZTE1
RGF0YWJhc2VUcmFja2VyMjNkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbkVSS04zV1RGNlN0cmluZ0VQ
TlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN29yaWdp
bnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVF
Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29yZTE1
RGF0YWJhc2VUcmFja2VyOHNldFF1b3RhRVBOU18xNFNlY3VyaXR5T3JpZ2luRXkKLV9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyOXNldENsaWVudEVQTlNfMjFEYXRhYmFzZVRyYWNrZXJDbGll
bnRFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE0c2V0SXNBdmFpbGFibGVFYgorX19a
TjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNmhhc09wZW5EYXRhYmFzZXNFUE5TXzIyU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTJkZWxldGVP
cmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdl
cjE0ZGVsZXRlRGF0YWJhc2VFUE5TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJpbmdFCitf
X1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE0cXVvdGFGb3JPcmlnaW5FUE5TXzE0U2VjdXJp
dHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE0dXNhZ2VGb3JPcmlnaW5F
UE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjEwaW5p
dGlhbGl6ZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMThk
ZWxldGVBbGxEYXRhYmFzZXNFdgorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIyMmRhdGFi
YXNlTmFtZXNGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FUk4zV1RGNlZlY3RvcklOUzNf
NlN0cmluZ0VMbTBFRUUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMjNkZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbkVSS04zV1RGNlN0cmluZ0VQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43
V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0
cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTG0wRUVFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFu
YWdlcjdtYW5hZ2VyRXYKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyOHNldFF1b3RhRVBO
U18xNFNlY3VyaXR5T3JpZ2luRXkKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyOXNldENs
aWVudEVQTlNfMjFEYXRhYmFzZU1hbmFnZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29u
dHJvbGxlcjEwc2V0Rm9jdXNlZEViCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE0c2V0
Rm9jdXNlZE5vZGVFUE5TXzROb2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19a
TjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNldEZvY3VzZWRGcmFtZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU181RnJhbWVFRUUKQEAgLTQzMSw3ICs0MzIsNiBAQCBfX1pON1dlYkNvcmUxNXNldERP
TUV4Y2VwdGlvbkVQTjNKU0M5RXhlCiBfX1pON1dlYkNvcmUxNXRvRE9NU3RyaW5nTGlzdEVQTjNK
U0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNo
RVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVJLTjNXVEY2U3RyaW5nRQotX19a
TjdXZWJDb3JlMTZBYnN0cmFjdERhdGFiYXNlMTRzZXRJc0F2YWlsYWJsZUViCiBfX1pON1dlYkNv
cmUxNkFwcGxpY2F0aW9uQ2FjaGUxOGRpc2tVc2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkUKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTIwZGVsZXRlQ2FjaGVGb3JPcmln
aW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGEx
MkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCkBAIC0xOTE3LDExICsxOTE3LDYgQEAgX19aTjdX
ZWJDb3JlMTRJY29uQ29udHJvbGxlcjN1cmxFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRs
ZTZjYW5jZWxFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTlzZXRDbGllbnRFUE5TXzIw
UmVzb3VyY2VIYW5kbGVDbGllbnRFCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlRDFFdgot
X19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNm9yaWdpbnNEaWRDaGFuZ2VFdgotX19aTjdX
ZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyNWRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHlFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjI4cmVtb3ZlRGVsZXRlZE9w
ZW5lZERhdGFiYXNlc0V2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjM4ZW1wdHlEYXRh
YmFzZUZpbGVzUmVtb3ZhbFRhc2tEaWRGaW5pc2hFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRy
YWNrZXI0NGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrV2lsbEJlU2NoZWR1bGVkRXYKIF9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTJkcmF3QmlkaVRleHRFUktOU180Rm9udEVSS05T
XzdUZXh0UnVuRVJLTlNfMTBGbG9hdFBvaW50RVBOU18xMEJpZGlTdGF0dXNFaQogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxNWRyYXdMaW5lRm9yVGV4dEVSS05TXzEwRmxvYXRQb2ludEVm
YgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyMnNldEVtb2ppRHJhd2luZ0VuYWJsZWRF
YgpAQCAtMTk2Myw4ICsxOTU4LDYgQEAgX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIxOWNsZQogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXIyNWhhc1JlY2VpdmVk
TWVtb3J5UHJlc3N1cmVFdgogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXIyNWlu
c3RhbGxNZW1vcnlSZWxlYXNlQmxvY2tFVTEzYmxvY2tfcG9pbnRlckZ2dkViCiBfX1pON1dlYkNv
cmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjI1c2V0UmVjZWl2ZWRNZW1vcnlQcmVzc3VyZUV2Ci1f
X1pON1dlYkNvcmUyMVNRTGl0ZURhdGFiYXNlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29y
ZTIxU1FMaXRlRGF0YWJhc2VUcmFja2VyOXNldENsaWVudEVQTlNfMjdTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUyMWFwcGxpY2F0aW9uSXNGYWNlYm9va0V2CiBfX1pO
N1dlYkNvcmUyMW5leHRCcmVha2FibGVQb3NpdGlvbkVSTlNfMjFMYXp5TGluZUJyZWFrSXRlcmF0
b3JFaWIKIF9fWk43V2ViQ29yZTIxbmV4dFBhcmFncmFwaFBvc2l0aW9uRVJLTlNfMTVWaXNpYmxl
UG9zaXRpb25FaQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM3NDA3KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05OTAsNiArOTkwLDcg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgko
d29ya2luZyBjb3B5KQpAQCAtNDQyLDcgKzQ0Miw3IEBAIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VU
cmFja2VyMTlvcGVuVHJhY2sKIF9fWk43V2ViQ29yZTE2U1FMaXRlRmlsZVN5c3RlbTI4YXBwZW5k
RGF0YWJhc2VGaWxlTmFtZVRvUGF0aEVSS04zV1RGNlN0cmluZ0VTNF8KIF9fWk43V2ViQ29yZTE2
U1FMaXRlRmlsZVN5c3RlbTI0ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzRVJLTjNXVEY2U3RyaW5n
RWIKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN3RyYWNrZXJFdgotX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlVHJhY2tlckNsaWVudEUK
K19fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyOXNldENsaWVudEVQTlNfMjFEYXRhYmFzZU1h
bmFnZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMTdpbml0aWFsaXplVHJh
Y2tlckVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEzU3RvcmFnZVRocmVhZDZjcmVhdGVF
dgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjIzc2V0U3RvcmFnZURpcmVjdG9yeVBhdGhF
UktOM1dURjZTdHJpbmdFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiQWJzdHJhY3RE
YXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFi
YXNlVHJhY2tlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RhdGFiYXNlTWFuYWdlciYg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2Vy
KiBkYk1hbmFnZXIgPSAwOworICAgIGlmICghZGJNYW5hZ2VyKQorICAgICAgICBkYk1hbmFnZXIg
PSBuZXcgRGF0YWJhc2VNYW5hZ2VyKCk7CisKKyAgICByZXR1cm4gKmRiTWFuYWdlcjsKK30KKwor
RGF0YWJhc2VNYW5hZ2VyOjpEYXRhYmFzZU1hbmFnZXIoKQoreworfQorCit2b2lkIERhdGFiYXNl
TWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlUGF0aCk7Cit9CisKKyNp
ZiAhUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0Q2xpZW50KERh
dGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnNldENsaWVudChjbGllbnQpOworfQorCitTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpk
YXRhYmFzZURpcmVjdG9yeVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKK30KKwordm9pZCBEYXRhYmFz
ZU1hbmFnZXI6OnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KHBhdGgpOworfQorI2VuZGlmCisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgp
Cit7CisgICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7Cit9CisKK3Zv
aWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRJc0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKK3sKKyAg
ICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShhdmFpbGFibGUpOworfQorCitib29s
IERhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQoreworICAgIHJldHVybiBEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFz
ZXMoY29udGV4dCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciog
c3luY2hyb25pemVyKQoreworICAgIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhjb250
ZXh0LCBzeW5jaHJvbml6ZXIpOworfQorCitTdHJpbmcgRGF0YWJhc2VNYW5hZ2VyOjpmdWxsUGF0
aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KTsKK30KKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKK2Jvb2wgRGF0YWJhc2VN
YW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmln
aW4pOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkub3JpZ2lucyhyZXN1bHQpOworfQorCitib29sIERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJhc2VO
YW1lc0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5h
bWVzRm9yT3JpZ2luKG9yaWdpbiwgcmVzdWx0KTsKK30KKworRGF0YWJhc2VEZXRhaWxzIERhdGFi
YXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4pOworfQorCit1bnNp
Z25lZCBsb25nIGxvbmcgRGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51
c2FnZUZvck9yaWdpbihvcmlnaW4pOworfQorCit1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VN
YW5hZ2VyOjpxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJl
dHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4pOwor
fQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhU2l6ZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhU2l6ZSk7Cit9CisKK3ZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworfQorCitib29sIERhdGFiYXNlTWFuYWdl
cjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihvcmlnaW4pOworfQorCitib29s
IERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4sIG5hbWUpOworfQorCisjZWxzZSAvLyBQTEFURk9S
TShDSFJPTUlVTSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFiYXNlc0ltbWVkaWF0
ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRl
bHkob3JpZ2luSWRlbnRpZmllciwgbmFtZSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01J
VU0pCisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250
ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250
ZXh0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNR
TF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBEYXRhYmFzZU1hbmFnZXJfaAorI2RlZmluZSBEYXRhYmFzZU1hbmFnZXJfaAor
CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OworY2xhc3MgRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
OworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CitjbGFzcyBEYXRhYmFzZU1hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFi
YXNlTWFuYWdlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRp
YyBEYXRhYmFzZU1hbmFnZXImIG1hbmFnZXIoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7CisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZv
aWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOworICAgIFN0cmluZyBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldERhdGFiYXNlRGlyZWN0b3J5UGF0
aChjb25zdCBTdHJpbmcmKTsKKyNlbmRpZgorCisgICAgYm9vbCBpc0F2YWlsYWJsZSgpOworICAg
IHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CisKKyAgICBib29sIGhhc09wZW5EYXRhYmFzZXMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIC8vIFdoZW4gdGhlIGRhdGFiYXNlIGNsZWFu
dXAgaXMgZG9uZSwgY2xlYW51cFN5bmMgd2lsbCBiZSBzaWduYWxsZWQuCisgICAgdm9pZCBzdG9w
RGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIqKTsKKworICAgIFN0cmluZyBmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CisK
KyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOworICAgIHZvaWQgb3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiA+JiByZXN1bHQpOworICAgIGJvb2wgZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihTZWN1cml0
eU9yaWdpbiosIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpOworICAgIERhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOwor
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7
CisKKyAgICB2b2lkIHNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgdW5zaWduZWQgbG9uZyBsb25n
KTsKKworICAgIHZvaWQgZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgYm9vbCBkZWxldGVPcmln
aW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01JVU0p
CisgICAgdm9pZCBjbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJP
TUlVTSkKKworICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgRGF0YWJhc2VNYW5hZ2Vy
KCk7CisgICAgfkRhdGFiYXNlTWFuYWdlcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIERhdGFi
YXNlTWFuYWdlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzMzOCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJD
bGllbnQuaDoxMzczMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZu
ZGVmIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCisjZGVmaW5lIERhdGFiYXNlVHJhY2tlckNsaWVu
dF9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZWN1cml0eU9yaWdpbjsKKworY2xh
c3MgRGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5EYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
TW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2VuZGlm
IC8vIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJl
dmlzaW9uIDEzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzEsMjkgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgogICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwotI2lmbmRlZiBEYXRh
YmFzZVRyYWNrZXJDbGllbnRfaAotI2RlZmluZSBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorI2lm
bmRlZiBEYXRhYmFzZU1hbmFnZXJDbGllbnRfaAorI2RlZmluZSBEYXRhYmFzZU1hbmFnZXJDbGll
bnRfaAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtMzYsOSArMzMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCi1jbGFzcyBEYXRhYmFz
ZVRyYWNrZXJDbGllbnQgeworY2xhc3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5EYXRhYmFzZVRyYWNrZXJDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5E
YXRhYmFzZU1hbmFnZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSkgPSAwOwogfTsKQEAgLTQ3LDQgKzQ0LDQgQEAgcHVibGljOgogCiAjZW5kaWYKIAot
I2VuZGlmIC8vIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCisjZW5kaWYgLy8gRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgiCi0j
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEw
NDYsNyArMTA0Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUK
ICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGZ1bGxQYXRo
KTsKIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudChEYXRhYmFzZVRyYWNrZXJD
bGllbnQqIGNsaWVudCkKK3ZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgbV9jbGllbnQgPSBjbGllbnQ7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmgJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoOwogCiAj
aWYgIVBMQVRGT1JNKENIUk9NSVVNKQotY2xhc3MgRGF0YWJhc2VUcmFja2VyQ2xpZW50OworY2xh
c3MgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OwogCiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5UcmFpdHM7
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIGJvb2wgZGVs
ZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAg
dm9pZCBzZXRDbGllbnQoRGF0YWJhc2VUcmFja2VyQ2xpZW50Kik7CisgICAgdm9pZCBzZXRDbGll
bnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CiAKICAgICAvLyBGcm9tIGEgc2Vjb25kYXJ5IHRo
cmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCiAgICAgdm9pZCBzY2hlZHVs
ZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RhdGFiYXNl
RGlyZWN0b3J5UGF0aDsKIAotICAgIERhdGFiYXNlVHJhY2tlckNsaWVudCogbV9jbGllbnQ7Cisg
ICAgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBtX2NsaWVudDsKIAogICAgIHR5cGVkZWYgc3RkOjpw
YWlyPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIERhdGFiYXNlRGV0YWlscz4gUHJvcG9zZWREYXRh
YmFzZTsKICAgICBIYXNoU2V0PFByb3Bvc2VkRGF0YWJhc2UqPiBtX3Byb3Bvc2VkRGF0YWJhc2Vz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0jaWZuZGVmIERhdGFiYXNlVHJhY2tlckNsaWVudF9o
Ci0jZGVmaW5lIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTZWN1cml0eU9yaWdpbjsKLQotY2xhc3MgRGF0YWJhc2VUcmFja2VyQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EYXRhYmFzZVRyYWNrZXJDbGllbnQoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIERhdGFiYXNlVHJhY2tlckNsaWVudF9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gMTM3
NDA3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOTUsNyArMjA5NSw3IEBACiAKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVs
ZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW1cXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVk
ZScsICdNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZVxcLmNwcCQn
XSwKLSAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyQ2xpZW50XFwuaCQnXSwKKyAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50XFwuaCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyXFwuY3BwJCddLAogICAgICAgICBbJ2V4
Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXJcXC4oY3BwfGgp
JCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2Fn
ZVJlY29yZFxcLihjcHB8aCkkJ10sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1MjA5LDYg
KzI1MjA5LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdlci5jcHAiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVz
XHdlYmRhdGFiYXNlXERhdGFiYXNlTWFuYWdlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFz
ZVN5bmMuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3NDA3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjgzLDYgKzM2ODMsOCBAQAogCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU1MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwICovOyB9OwogCQk5N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFNjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMjkxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdCQzY5RTcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlRGV0YWls
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
NDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi87IH07CisJCUZFNDU2RjE5MTY3N0Q3NEUwMDVF
RERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
N0JDNkEyQTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU4MTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVN5bmMuY3BwICovOyB9OwogCQk5N0JDNkEyQjE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0JDNjlFOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmggKi87IH07
CiAJCTk3QkM2QTJEMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRhc2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUIxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlVGFzay5jcHAgKi87IH07CkBAIC0zNjkxLDcgKzM2OTMsNyBAQAog
CQk5N0JDNkEzMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVFMTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovOyB9OwogCQk5N0JDNkEzMTE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVGMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNr
ZXIuY3BwICovOyB9OwogCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlGMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTdCQzZBMzMxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
VHJhY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk3QkM2QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0JDNkEzNzE1MDVGMDgx
MDAxQjc0QUMgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY1MTUwNUYwODEwMDFCNzRBQyAvKiBPcmln
aW5RdW90YU1hbmFnZXIuY3BwICovOyB9OwogCQk5N0JDNkEzODE1MDVGMDgxMDAxQjc0QUMgLyog
T3JpZ2luUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0JDNjlGNjE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luUXVvdGFNYW5hZ2Vy
LmggKi87IH07CiAJCTk3QkM2QTM5MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2FnZVJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlGNzE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwICovOyB9OwpAQCAt
MTA5OTQsNyArMTA5OTYsNyBAQAogCQk5N0JDNjlFRTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUaHJl
YWQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RUYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZVRyYWNrZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlGMDE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERhdGFiYXNlVHJhY2tlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdCQzY5RjExNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk3QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlGNTE1MDVGMDgxMDAxQjc0QUMgLyog
T3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE9yaWdpblF1b3RhTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpblF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2
OUY2MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gT3JpZ2luUXVvdGFNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0JDNjlGNzE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3JpZ2luVXNhZ2VSZWNvcmQu
Y3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE4NCw2ICsxNDE4Niw4IEBACiAJCUZERjZC
QUY3MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlDMTEzQUMyMURCMDBB
NTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZERjdFOUMyMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVy
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBdWRpb0J1ZmZl
ckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNDU2RjE2MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTZGRDQ4NjBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENvb3JkaW5hdGVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb29yZGluYXRlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODI1Niw2ICsxODI2MCw5IEBACiAJCQkJ
OTdCQzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi8sCiAJCQkJ
OTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovLAogCQkJCTk3
QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLywKKwkJCQlGRTQ1
NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLywKKwkJCQlGRTQ1
NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8sCisJCQkJOTdCQzY5
RjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovLAogCQkJCTk3
QkM2OUU4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuY3BwICovLAogCQkJCTk3QkM2
OUU5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCAqLywKIAkJCQk5N0JDNjlFQTE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmlkbCAqLywKQEAgLTE4MjY1LDcgKzE4Mjcy
LDYgQEAKIAkJCQk5N0JDNjlFRTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAq
LywKIAkJCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAq
LywKIAkJCQk5N0JDNjlGMDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggKi8s
Ci0JCQkJOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlckNsaWVudC5o
ICovLAogCQkJCUE4Q0NCQjQ2MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFz
ZS5jcHAgKi8sCiAJCQkJQThDQ0JCNDcxNTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRh
dGFiYXNlLmggKi8sCiAJCQkJQThDQ0JCNEUxNTFGODM1QTAwQUI3Q0U5IC8qIERPTVdpbmRvd1dl
YkRhdGFiYXNlLmlkbCAqLywKQEAgLTIyNTU1LDYgKzIyNTYxLDcgQEAKIAkJCWlzYSA9IFBCWEhl
YWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0MzEwNUJCMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJh
dmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyog
VHlwZUFoZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0Rjcg
LyogRXhjbHVzaW9uU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkxMywxMSArMjI5
MjAsMTEgQEAKIAkJCQk5N0JDNkEyNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMjkxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdCQzZBMzMxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTdCQzZBMkUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGFzay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdCQzZBMzAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VU
cmFja2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIyNzQ2RjBFODM2
NjQ1MDBFN0Y5NzUgLyogRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MUMxMUQ3
RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI5MDAzLDYgKzI5MDEwLDcgQEAKIAkJCQlENjQ4OUQyNTE2NkZGQ0YxMDA3QzAz
MUIgLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ2Rjc5
NjBEMTY2RkZFQ0UwMDc2REQxOCAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzFENTkxQkIxNjZDMkU2QzAwRTZCRjAyIC8qIFBsdWdJbk9yaWdp
bkhhc2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8q
IERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI1RDE2NzAzQjJB
MDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
REE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkocmV2aXNpb24gMTM3
NDA3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKIAotI2luY2x1ZGUg
IkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTE1MCwxMiArMTUwLDEyIEBAIGJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW4KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkKIHsKLSAg
ICByZXR1cm4gQWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsKIH0KIAogYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJu
IEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNh
Y2hlRnJhbWVEZWNpc2lvbgogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzVW5sb2Fk
TGlzdGVuZXI7CiAgICAgfQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgaWYgKERhdGFi
YXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKKyAgICBp
ZiAoRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzT3BlbkRhdGFiYXNlcyhmcmFtZS0+ZG9j
dW1lbnQoKSkpIHsKICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBoYXMgb3BlbiBkYXRhYmFzZSBo
YW5kbGVzIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNEYXRhYmFzZUhhbmRs
ZXM7CiAgICAgfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGgKICAgICAgICAgJiYgKCFkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJcygi
aHR0cHMiKSB8fCAoIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpICYmICFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xD
b250YWluc05vU3RvcmUoKSkpCiAgICAgICAgICYmICghZG9jdW1lbnQtPmRvbVdpbmRvdygpIHx8
ICFkb2N1bWVudC0+ZG9tV2luZG93KCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51
bmxvYWRFdmVudCkpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgJiYgIURhdGFi
YXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKKyAgICAgICAgJiYgIURhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJzKGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBACiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgog
I2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNDUwLDggKzQ1MCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2
ZW4KICAgICAgICAgZG9jLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpDb21wbGV0ZSk7CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBEYXRh
YmFzZUNvbnRleHQgd2F0Y2ggZm9yIHNvbWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6c3Rv
cCgpIHJhdGhlciB0aGFuIGJlaW5nIHNwZWNpYWwtY2FzZWQgaGVyZT8KLSAgICAgICAgRGF0YWJh
c2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKGRvYywgMCk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgdGhlIERhdGFiYXNlTWFuYWdlciB3YXRjaCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZlRE9N
T2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4gYmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPworICAg
ICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKGRvYywgMCk7CiAj
ZW5kaWYKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9u
IDEzNzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkJh
Y2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkJhckluZm8uaCIKICNpbmNsdWRlICJC
ZWZvcmVVbmxvYWRFdmVudC5oIgpAQCAtNDYsOCArNDUsNiBAQAogI2luY2x1ZGUgIkRPTVVSTC5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvd0V4dGVuc2lvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHJldmlzaW9uIDEz
NzQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAK
LSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgpAQCAtNDMsOCArNDIsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNr
ZXIuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCkBAIC0yMzEsNyArMjMwLDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgd2Ugc3RvcCB0aGUgZGF0YWJhc2VzIGFzIHBhcnQgb2Ygc3RvcEFjdGl2ZURPTU9iamVj
dHMoKSBiZWxvdz8KICAgICAgICAgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyIGNsZWFudXBTeW5j
OwotICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwg
JmNsZWFudXBTeW5jKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERh
dGFiYXNlcyh3b3JrZXJDb250ZXh0LCAmY2xlYW51cFN5bmMpOwogI2VuZGlmCiAKICAgICAgICAg
d29ya2VyQ29udGV4dC0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKQEAgLTI2Niw3ICsyNjUsNyBA
QCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2Ny
aXB0KCktPnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24oKTsKIAogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJDb250ZXh0LmdldCgpKTsKKyAgICAgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCht
X3dvcmtlckNvbnRleHQuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIG1fcnVuTG9vcC5wb3N0VGFz
ayhXb3JrZXJUaHJlYWRTaHV0ZG93blN0YXJ0VGFzazo6Y3JlYXRlKCkpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQg
d2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNl
TWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdl
cjo6V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5h
Z2VyOjpnZXREYXRhYmFzZXNCeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNl
TWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnaW4pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmg6
CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMpOgorCiAyMDEyLTEyLTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjg1Nzg3MD4gW1dLMiBOZXR3b3JrUHJvY2Vz
c10gQ2Fubm90IGxvYWQgSFRUUFMgc2l0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QAogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9i
amVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvckNob29zZXIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VN
YW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZUljb25Mb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC01
NDksOSArNTQ5LDEwIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXUK
ICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOwogICAgIFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAot
ICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOwotICAgIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3Jp
Z2luKG9yaWdpbik7Ci0gICAgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlID0gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIERhdGFi
YXNlRGV0YWlscyBkZXRhaWxzID0gZGJNYW5hZ2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRh
dGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICB1aW50NjRfdCBjdXJyZW50UXVvdGEgPSBkYk1hbmFn
ZXIucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UgPSBkYk1hbmFnZXIudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKICAgICB1aW50NjRfdCBuZXdR
dW90YSA9IDA7CiAgICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdp
biA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIG5ld1F1b3RhID0gbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJhc2VRdW90YShtX3BhZ2UsIHdlYlNlY3Vy
aXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRl
dGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKQEAgLTU2Miw3ICs1NjMsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1CiAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CiAgICAgfQogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVv
dGEob3JpZ2luLCBuZXdRdW90YSk7CisgICAgZGJNYW5hZ2VyLnNldFF1b3RhKG9yaWdpbiwgbmV3
UXVvdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogI2luY2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZURldGFpbHMuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDEyICs1MCwxMiBAQCBXZWJEYXRhYmFz
ZU1hbmFnZXImIFdlYkRhdGFiYXNlTWFuYWdlcjo6CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
Ojppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiB7Ci0gICAgRGF0
YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZURpcmVjdG9yeSk7CisgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5pdGlhbGl6ZShkYXRhYmFzZURpcmVjdG9yeSk7
CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQodGhpcyk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0Q2xpZW50KHRoaXMpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFn
ZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU8KIHsKICAgICBXZWJQcm9jZXNzOjpMb2NhbFRl
cm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQo
KSk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5
IGFkZGluZyBhIGZ1bmN0aW9uIHRvIERhdGFiYXNlVHJhY2tlcgorICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0
YWJhc2VNYW5hZ2VyCiAgICAgLy8gdG8gZ2V0IGJvdGggdGhlIG9yaWdpbnMgYW5kIHRoZSBWZWN0
b3Igb2YgRGF0YWJhc2VEZXRhaWxzIGZvciBlYWNoIG9yaWdpbiBpbiBvbmUKICAgICAvLyBzaG90
LiAgVGhhdCB3b3VsZCBhdm9pZCB0YWtpbmcgdGhlIG51bWVyb3VzIGxvY2tzIHRoaXMgcmVxdWly
ZXMuCiAKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IG9yaWdpbnM7Ci0gICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5zKG9yaWdpbnMpOwogCiAgICAgVmVjdG9yPE9yaWdp
bkFuZERhdGFiYXNlcz4gb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yOwogICAgIG9yaWdpbkFuZERh
dGFiYXNlc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbnMuc2l6ZSgpKTsKQEAg
LTg1LDEzICs4NSwxMyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlP
CiAgICAgICAgIE9yaWdpbkFuZERhdGFiYXNlcyBvcmlnaW5BbmREYXRhYmFzZXM7CiAKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKLSAgICAgICAgaWYgKCFEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCksIG5h
bWVWZWN0b3IpKQorICAgICAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFi
YXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSwgbmFtZVZlY3RvcikpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBWZWN0b3I8RGF0YWJhc2VEZXRhaWxzPiBkZXRhaWxz
VmVjdG9yOwogICAgICAgICBkZXRhaWxzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobmFt
ZVZlY3Rvci5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG5hbWVWZWN0
b3Iuc2l6ZSgpOyBqKyspIHsKLSAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZVZl
Y3RvcltqXSwgb3JpZ2luc1tpXS5nZXQoKSk7CisgICAgICAgICAgICBEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKG5hbWVWZWN0b3Jbal0sIG9yaWdpbnNbaV0uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGRl
dGFpbHMubmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0x
MDIsOCArMTAyLDggQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlc0J5Twog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdp
bklkZW50aWZpZXIgPSBvcmlnaW5zW2ldLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKLSAgICAgICAg
b3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7Ci0gICAgICAgIG9yaWdpbkFuZERh
dGFiYXNlcy5vcmlnaW5Vc2FnZSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9y
T3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3Jp
Z2luUXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihvcmln
aW5zW2ldLmdldCgpKTsKKyAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlID0g
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQo
KSk7CiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5kYXRhYmFzZXMuc3dhcChkZXRhaWxzVmVj
dG9yKTsgCiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc1ZlY3Rvci5hcHBlbmQob3JpZ2luQW5k
RGF0YWJhc2VzKTsKICAgICB9CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXI6OmdldERhdGFiYXNlT3JpZwogICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25E
aXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gb3JpZ2luczsKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAKICAgICBzaXplX3QgbnVtT3JpZ2lucyA9IG9y
aWdpbnMuc2l6ZSgpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFn
ZXI6OmRlbGV0ZURhdGFiYXNlVwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0
KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLmdldCgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikgY29uc3QKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZXMKICAgICBpZiAoIW9yaWdpbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luKG9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRl
T3JpZ2luKG9yaWdpbi5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxl
dGVBbGxEYXRhYmFzZXMoKSBjb25zdAogewogICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRp
b25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKIAot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIGNvbnN0CkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3JpZwogICAg
IGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1b3RhKTsKIH0KIAogdm9pZCBX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDEzNzQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJh
c2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE1lc3NhZ2VJRDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkRhdGFiYXNlTWFuYWdlciA6IHB1Ymxp
YyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgeworY2xhc3MgV2ViRGF0YWJhc2VNYW5h
Z2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViRGF0YWJhc2VNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
V2ViRGF0YWJhc2VNYW5hZ2VyJiBzaGFyZWQoKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKSBjb25zdDsKIAotICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVu
dAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlckNsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpIE9WRVJS
SURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTAgKzgwLDEwIEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg+CkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRp
b25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6aW50
ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXkoKSkpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFiYXNlc0VuYWJsZWRLZXkoKSkp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxhYmxlKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgp
KSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2Ug
QVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxMi0xMi0wNSAgSGFsdG9uIEh1byAgPGhhbHRvbi5odW9AaW50ZWwuY29tPgogCiAgICAgICAg
IFtDTWFrZV0gVW5pZnkgY29kaW5nIHN0eWxlIGZvciBDTWFrZSBmaWxlcwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
Mzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBACiAJCTRCRjk5RjkxMEFFMDUwQkMwMDgx
NUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RjBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xp
ZW50Lm1tICovOyB9OwogCQk1MTFGM0ZENTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAqLzsgfTsK
IAkJNTExRjNGRDYwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQy
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExRjNGRDcwQ0VDQzg4
RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8q
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyB9OwotCQk1MTFGM0ZEODBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLzsgfTsKKwkJNTExRjNGRDcwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5oICovOyB9OworCQk1MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJNTE0OTRDRDYwQzdFQkRFMDAwNDE3OEM1IC8q
IFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0OTRDRDQwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFz
ZUNsaWVudC5oICovOyB9OwogCQk1MTQ5NENENzBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRh
dGFiYXNlQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5t
bSAqLzsgfTsKIAkJNTE0OTREMjQwQzdFQzFCNzAwNDE3OEM1IC8qIFdlYk5TTm90aWZpY2F0aW9u
Q2VudGVyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTQ5NEQyMjBDN0VDMUI2MDA0MTc4QzUgLyogV2ViTlNOb3RpZmljYXRpb25DZW50ZXJF
eHRyYXMuaCAqLzsgfTsKQEAgLTQ4OSw4ICs0ODksOCBAQAogCQk0QkY5OUY4RjBBRTA1MEJDMDA4
MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjNGRDIwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFGM0ZENDBD
RUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNENDIy
RTAzNENGNTVBMDBDQTJBQ0QgLyogV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTUxNDQzRjlBMDQyOTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE0NDNGOUIwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGlj
eURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTA0NiwxMiArMTA0NiwxMiBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTFGM0ZEMTBDRUND
ODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tICovLAorCQkJCTUxMUYzRkQzMENF
Q0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLywKKwkJCQk1MTFG
M0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovLAog
CQkJCTUxQUVERUYwMENFQ0Y0NTcwMDg1NDMyOCAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJbnRlcm5h
bC5oICovLAogCQkJCTUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmggKi8sCiAJCQkJQTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJQTVERUZDMEUxMUQ1MzQzRTAwODg1MjczIC8qIFdl
YkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAotCQkJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2
NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKLQkJCQk1MTFGM0ZENDBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tICovLAogCQkJCTNBQjAyQUY1
MTJDMTMxOUIwMEZCQjY5NCAvKiBXZWJTdG9yYWdlTWFuYWdlci5tbSAqLywKIAkJCQkzQUUxNUQ0
RjEyREJERUQ0MDA5MzIzQzggLyogV2ViU3RvcmFnZU1hbmFnZXJJbnRlcm5hbC5oICovLAogCQkJ
CTNBQjAyQUZGMTJDMTMyQjIwMEZCQjY5NCAvKiBXZWJTdG9yYWdlTWFuYWdlclByaXZhdGUuaCAq
LywKQEAgLTE0NDUsMTAgKzE0NDUsMTAgQEAKIAkJCQkwNjVBRDVBMzBCMEMzMkM3MDA1QTJCMUQg
LyogV2ViQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDE2MDgy
NEJGMDEwMDhERjAzOCAvKiBXZWJDb3JlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBRURFRjEwQ0VDRjQ1NzAwODU0MzI4IC8q
IFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFGM0ZE
NjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVERUZDMEYxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFGM0ZENzBDRUNDODhGMDA4NTI1NjUgLyog
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA0QjA4
MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4
QTQwOTYwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM5ODEwNEMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRhdGFTb3VyY2VQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NjksOCArMTg2OSw4IEBACiAJCQkJOTM5ODEwQkYw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNFMkExQTUxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxMUYzRkQ1MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1h
bmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVERUZDMTAx
MUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEVEMDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJEYXRhU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRUYwODI0QkYwMTAwOERG
MDM4IC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODExMUIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUu
bSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJk
YXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSk6CisKIDIwMTItMTItMTEgIE5pbWEgR2hhbmF2YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVkcmF3IHNwZWxsIGNoZWNrIGRpYWxvZyBhZnRl
ciByb3RhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxUcmFuc2Zvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRE9NU3VwcG9ydC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VTeW5jLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRGVm
YXVsdFRhcEhpZ2hsaWdodC5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudEJsYWNrQmVy
cnkuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEJsYWNrQmVycnkuaCIKQEAg
LTU4NDMsMTMgKzU4NDMsMTMgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGlu
Z3MoVwogICAgIGNvcmVTZXR0aW5ncy0+c2V0Q29va2llRW5hYmxlZCh3ZWJTZXR0aW5ncy0+YXJl
Q29va2llc0VuYWJsZWQoKSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIC8vIERh
dGFiYXNlVHJhY2tlciBjYW4gb25seSBiZSBpbml0aWFsaXplZCBmb3Igb25jZSwgc28gaXQgZG9l
c24ndAotICAgIC8vIG1ha2Ugc2Vuc2UgdG8gY2hhbmdlIGRhdGFiYXNlIHBhdGggYWZ0ZXIgRGF0
YWJhc2VUcmFja2VyIGhhcworICAgIC8vIERhdGFiYXNlTWFuYWdlciBjYW4gb25seSBiZSBpbml0
aWFsaXplZCBmb3Igb25jZSwgc28gaXQgZG9lc24ndAorICAgIC8vIG1ha2Ugc2Vuc2UgdG8gY2hh
bmdlIGRhdGFiYXNlIHBhdGggYWZ0ZXIgRGF0YWJhc2VNYW5hZ2VyIGhhcwogICAgIC8vIGFscmVh
ZHkgYmVlbiBpbml0aWFsaXplZC4KICAgICBzdGF0aWMgYm9vbCBkYmluaXQgPSBmYWxzZTsKICAg
ICBpZiAoIWRiaW5pdCAmJiAhd2ViU2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpLmVtcHR5KCkpIHsK
ICAgICAgICAgZGJpbml0ID0gdHJ1ZTsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFs
aXplVHJhY2tlcih3ZWJTZXR0aW5ncy0+ZGF0YWJhc2VQYXRoKCkpOworICAgICAgICBEYXRhYmFz
ZU1hbmFnZXI6OmluaXRpYWxpemUod2ViU2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpKTsKICAgICB9
CiAKICAgICAvLyBUaGUgZGlyZWN0b3J5IG9mIGNhY2hlU3RvcmFnZSBmb3Igb25lIHBhZ2UgZ3Jv
dXAgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgb25jZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUNsaWVudC5o
IgogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZV9wLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgi
Ci0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBDaHJvbWVDbGllbnRCbGFja0JlcnJ5OjpleGNlZWRlZERhdAogICAgIH0KICNl
bmRpZgogCi0gICAgRGF0YWJhc2VUcmFja2VyJiB0cmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCk7CiAKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2FnZSA9IHRyYWNr
ZXIudG90YWxEYXRhYmFzZVVzYWdlKCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpblVz
YWdlID0gdHJhY2tlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbFVzYWdlID0gbWFuYWdlci50b3RhbERhdGFiYXNlVXNhZ2UoKTsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgb3JpZ2luVXNhZ2UgPSBtYW5hZ2VyLnVzYWdlRm9yT3JpZ2luKG9yaWdp
bik7CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IHRyYWNrZXIuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9
IG1hbmFnZXIuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgZXN0aW1hdGVkU2l6ZSA9IGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpOwog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZVN0ciA9IGRldGFpbHMuZGlzcGxheU5hbWUoKTsKIApAQCAt
NTEwLDcgKzUxMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXQK
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVu
dC0+ZGF0YWJhc2VRdW90YShvcmlnaW5TdHIuY2hhcmFjdGVycygpLCBvcmlnaW5TdHIubGVuZ3Ro
KCksCiAgICAgICAgIG5hbWVTdHIuY2hhcmFjdGVycygpLCBuYW1lU3RyLmxlbmd0aCgpLCB0b3Rh
bFVzYWdlLCBvcmlnaW5Vc2FnZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICB0cmFja2VyLnNldFF1
b3RhKG9yaWdpbiwgcXVvdGEpOworICAgIG1hbmFnZXIuc2V0UXVvdGEob3JpZ2luLCBxdW90YSk7
CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEz
NzQwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBB
UElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6Y2xvc2VE
YXRhYmFzZUltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQp
OgorCiAyMDEyLTEyLTExICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBJbmRleGVkREI6IFN0dWIgb3V0IGRhdGEgb3BlcmF0aW9ucyBvbiBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkN1cnNv
ci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hv
b3Nlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFiYXNlLmNw
cAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0
YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV2Vi
RGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNpbmNsdWRlICJE
YXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYkRhdGFi
YXNlOjpyZXNldFNwYWNlQXZhaWxhYmxlKGNvCiB2b2lkIFdlYkRhdGFiYXNlOjpjbG9zZURhdGFi
YXNlSW1tZWRpYXRlbHkoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBX
ZWJTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkob3Jp
Z2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNl
TmFtZSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UnVudGltZUZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUnVu
dGltZUZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIk1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZShib29sIGVu
YWJsZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJhc2U6
OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
c2V0SXNBdmFpbGFibGUoZW5hYmxlKTsKICNlbmRpZgogfQogCiBib29sIFdlYlJ1bnRpbWVGZWF0
dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIERh
dGFiYXNlTWFuYWdlcjo6dHJhY2tlcigpLmlzQXZhaWxhYmxlKCk7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3KQor
KysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFi
YXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICog
ZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdp
bl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5f
d2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dl
Yl9kYXRhYmFzZV9xdW90YV9zZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJf
ZGF0YWJhc2VfZ2V0X2FsbCk6CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAg
ICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKKyAgICAgICAgKiBld2sv
ZXdrX3dlYl9kYXRhYmFzZS5jcHA6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2Rpc3BsYXlf
bmFtZV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplX2dldCk6
CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dldCk6CisgICAgICAgIChld2tf
d2ViX2RhdGFiYXNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3Zl
KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCk6CisKIDIwMTItMTItMTEg
IFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAgICAgICAgIFtFRkxdIFJl
bW92ZSB1bnVzZWQgaGVhZGVycwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
I2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6
ZXhjZWVkZWREYXRhYmFzZVF1CiAgICAgdWludDY0X3QgcXVvdGE7CiAgICAgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAg
RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRh
aWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZU5hbWUsIG9yaWdpbik7CisgICAgRGF0YWJhc2VE
ZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFt
ZUFuZE9yaWdpbihkYXRhYmFzZU5hbWUsIG9yaWdpbik7CiAgICAgcXVvdGEgPSBld2tfdmlld19l
eGNlZWRlZF9kYXRhYmFzZV9xdW90YShtX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBraXQoZnJhbWUpLCBkYXRhYmFzZU5hbWUudXRmOCgpLmRhdGEo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMu
Y3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKQEAgLTQzMywxMCArNDMz
LDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXUKICAgICAvKiBp
ZiBjbGllbnQgZGlkIG5vdCBzZXQgcXVvdGEsIGFuZCBkYXRhYmFzZSBpcyBiZWluZyBjcmVhdGVk
IG5vdywgdGhlCiAgICAgICogZGVmYXVsdCBxdW90YSBpcyBhcHBsaWVkCiAgICAgICovCi0gICAg
aWYgKCFxdW90YSAmJiAhRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmln
aW4ob3JpZ2luKSkKKyAgICBpZiAoIXF1b3RhICYmICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pKQogICAgICAgICBxdW90YSA9IGV3a19zZXR0aW5n
c193ZWJfZGF0YWJhc2VfZGVmYXVsdF9xdW90YV9nZXQoKTsKIAotICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAJKHJldmlz
aW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCi0jaW5j
bHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2lu
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCkBAIC02Nyw3ICs2Nyw3
IEBAIHVpbnQ2NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXMKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob3JpZ2luLCAwKTsKIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVz
YWdlRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiBX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihvcmlnaW4t
PnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAg
LTc4LDcgKzc4LDcgQEAgdWludDY0X3QgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhcwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3Jp
Z2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpAQCAtODksNyArODksNyBAQCB2b2lkIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2Rh
dGFiYXNlX3F1CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ob3JpZ2luKTsKIAogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0UXVvdGEob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOworICAg
IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG9yaWdpbi0+c2Vj
dXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0xMTMsNyArMTEzLDcg
QEAgRWluYV9MaXN0KiBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYgogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBuYW1lczsKIAotICAgIGlmICgh
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdp
bihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1lcykpCisgICAgaWYgKCFXZWJDb3Jl
OjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIG5hbWVzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgpOyBpKyspIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXNFZmwuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCkBAIC0xMzYsNyArMTM2LDcgQEAg
dm9pZCBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZQogdm9pZCBld2tfc2V0dGlu
Z3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KGNvbnN0IGNoYXIqIHBhdGgpCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpKTsKKyAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9y
eVBhdGgoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpKTsKICAgICBlaW5hX3N0cmluZ3NoYXJl
X3JlcGxhY2UoJnNfd2ViRGF0YWJhc2VQYXRoLCBwYXRoKTsKICNlbmRpZgogfQpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a193ZWJfZGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NDA3
KQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193ZWJfZGF0YWJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
ZXdrX3dlYl9kYXRhYmFzZS5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29y
aWdpbl9wcml2YXRlLmgiCkBAIC00NSw3ICs0NSw3IEBAIGNvbnN0IGNoYXIqIGV3a193ZWJfZGF0
YWJhc2VfZGlzcGxheV9uYW0KICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsK
IAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJp
dHlPcmlnaW4uZ2V0KCk7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOwogICAgIGRhdGFiYXNlLT5kaXNw
bGF5TmFtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGRldGFpbHMuZGlzcGxheU5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBkYXRhYmFzZS0+ZGlzcGxheU5hbWU7CkBAIC01OSw3
ICs1OSw3IEBAIHVpbnQ2NF90IGV3a193ZWJfZGF0YWJhc2VfZXhwZWN0ZWRfc2l6ZV8KIHsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgV2ViQ29yZTo6RGF0YWJh
c2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKKyAgICBXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4p
OwogICAgIHJldHVybiBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGRhdGFiYXNlKTsKQEAgLTc0LDcgKzc0LDcgQEAgY29uc3QgY2hhciogZXdrX3dlYl9k
YXRhYmFzZV9maWxlbmFtZV9nZQogICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmZpbGVuYW1lOwog
CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0
eU9yaWdpbi5nZXQoKTsKLSAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5j
b3JlTmFtZSk7CisgICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBkYXRhYmFzZS0+Y29yZU5h
bWUpOwogICAgIGRhdGFiYXNlLT5maWxlbmFtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHBhdGgu
dXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gZGF0YWJhc2UtPmZpbGVuYW1lOwpAQCAtMTA4
LDcgKzEwOCw3IEBAIHVpbnQ2NF90IGV3a193ZWJfZGF0YWJhc2Vfc2l6ZV9nZXQoY29uc3QKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgV2ViQ29yZTo6RGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKKyAgICBX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmln
aW4pOwogICAgIHJldHVybiBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGF0YWJhc2UpOwpAQCAtMTE5LDcgKzExOSw3IEBAIHVpbnQ2NF90IGV3a193ZWJf
ZGF0YWJhc2Vfc2l6ZV9nZXQoY29uc3QKIHZvaWQgZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUoRXdr
X1dlYl9EYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShkYXRh
YmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlLT5jb3JlTmFtZSk7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2UoZGF0YWJhc2Ut
PnNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZS0+Y29yZU5hbWUpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZGF0YWJhc2UpOwogI2VuZGlmCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBl
d2tfd2ViX2RhdGFiYXNlX3JlbW92ZShFd2tfV2ViX0RhdAogdm9pZCBld2tfd2ViX2RhdGFiYXNl
X3JlbW92ZV9hbGwodm9pZCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAg
IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygp
OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysr
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFz
ZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdGljb25k
YXRhYmFzZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcDoK
KyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZV91c2FnZSk6
CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF93ZWJfZGF0YWJhc2VfcXVvdGEp
OgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRfd2ViX2RhdGFiYXNlX3F1b3Rh
KToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2FsbF93ZWJfZGF0YWJhc2Vz
KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl9kYXRhYmFzZV9nZXRfZGlzcGxheV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZGF0YWJhc2VfZ2V0X2V4cGVjdGVkX3NpemUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFz
ZV9nZXRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9maWxlbmFtZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX3JlbW92ZSk6CisgICAgICAgICh3ZWJraXRf
cmVtb3ZlX2FsbF93ZWJfZGF0YWJhc2VzKToKKyAgICAgICAgKHdlYmtpdF9nZXRfd2ViX2RhdGFi
YXNlX2RpcmVjdG9yeV9wYXRoKToKKyAgICAgICAgKHdlYmtpdF9zZXRfd2ViX2RhdGFiYXNlX2Rp
cmVjdG9yeV9wYXRoKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOgorCiAyMDEyLTEyLTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbnN0YWxsIEdPYmpl
Y3QgRE9NIGJpbmRpbmdzIGhlYWRlcnMgaW4gaXRzIG93biBkaXJlY3RvcnkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTgxMiw3ICs4MTIsNyBA
QCB2b2lkIENocm9tZUNsaWVudDo6cHJpbnQoRnJhbWUqIGZyYW1lKQogdm9pZCBDaHJvbWVDbGll
bnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKQogewogICAgIGd1aW50NjQgZGVmYXVsdFF1b3RhID0gd2Via2l0X2dldF9kZWZh
dWx0X3dlYl9kYXRhYmFzZV9xdW90YSgpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNldFF1b3RhKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVv
dGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOwogCiAgICAgV2ViS2l0V2Vi
RnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiog
b3JpZ2luID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfc2VjdXJpdHlfb3JpZ2luKHdlYkZyYW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0
YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGZhdmljb25kYXRhYmFzZS5o
IgogCi0jaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdka0NhaXJvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NDA3KQor
KysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJ3ZWJraXRpY29uZGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpJbmRleDogU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwCShyZXZp
c2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c2VjdXJpdHlv
cmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW4uaCIKIAotI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5w
cml2YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTI5OCw3ICsyOTgsNyBA
QCBndWludDY0IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kCiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0g
Y29yZShzZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKGNvcmVPcmlnaW4pOworICAgIHJldHVybiBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihjb3JlT3JpZ2lu
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTMyMSw3ICszMjEsNyBAQCBndWlu
dDY0IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kCiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShz
ZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnF1b3RhRm9yT3JpZ2luKGNvcmVPcmlnaW4pOworICAgIHJldHVybiBXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihjb3JlT3JpZ2luKTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fc2V0X3dlYl9kYXRhCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShzZWN1cml0
eU9yaWdpbik7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVv
dGEoY29yZU9yaWdpbiwgcXVvdGEpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnNldFF1b3RhKGNvcmVPcmlnaW4sIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0zNjYs
NyArMzY2LDcgQEAgR0xpc3QqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2FsbF93ZQogICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShzZWN1cml0eU9yaWdp
bik7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwogCi0gICAgaWYgKCFX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2lu
KGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQorICAgIGlmICghV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihjb3JlT3JpZ2luLCBkYXRh
YmFzZU5hbWVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MDcp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAid2Via2l0d2ViZGF0YWJhc2Uu
aCIKIAogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIndlYmtpdGds
b2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTMyNyw3ICszMjcsNyBAQCBjb25zdCBn
Y2hhciogd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZGlzCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5w
cml2OwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFt
ZSwgY29yZShwcml2LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0
YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgV1RGOjpTdHJp
bmcgZGlzcGxheU5hbWUgPSAgZGV0YWlscy5kaXNwbGF5TmFtZSgpOwogCiAgICAgaWYgKGRpc3Bs
YXlOYW1lLmlzRW1wdHkoKSkKQEAgLTM1OSw3ICszNTksNyBAQCBndWludDY0IHdlYmtpdF93ZWJf
ZGF0YWJhc2VfZ2V0X2V4cGVjdGVkCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdl
YktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5wcml2OwotICAgIFdl
YkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2
LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKHBy
aXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgcmV0dXJuIGRldGFpbHMuZXhwZWN0
ZWRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTM4Miw3ICszODIsNyBAQCBndWlu
dDY0IHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X3NpemUoV2ViCiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNl
LT5wcml2OwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+
bmFtZSwgY29yZShwcml2LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgcmV0dXJu
IGRldGFpbHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAtNDA2LDcg
KzQwNiw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9maWwKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9
IHdlYkRhdGFiYXNlLT5wcml2OwogICAgIFdURjo6U3RyaW5nIGNvcmVOYW1lID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHByaXYtPm5hbWUpOwotICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShjb3Jl
KHByaXYtPm9yaWdpbiksIGNvcmVOYW1lKTsKKyAgICBXVEY6OlN0cmluZyBjb3JlUGF0aCA9IFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoY29y
ZShwcml2LT5vcmlnaW4pLCBjb3JlTmFtZSk7CiAKICAgICBpZiAoY29yZVBhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4iIjsKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIHdlYmtpdF93ZWJf
ZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAg
IFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5wcml2OwotICAg
IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGNvcmUo
cHJpdi0+b3JpZ2luKSwgcHJpdi0+bmFtZSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5uYW1l
KTsKICNlbmRpZgogfQogCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2RhdGFi
YXNlX3JlbW92ZShXZWJLaXRXZQogdm9pZCB3ZWJraXRfcmVtb3ZlX2FsbF93ZWJfZGF0YWJhc2Vz
KCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwogI2VuZGlmCiB9CiAK
QEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMo
KQogY29uc3QgZ2NoYXIqIHdlYmtpdF9nZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoKCkK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdURjo6U3RyaW5nIHBhdGggPSBXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsK
KyAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAiIjsKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIHdlYmtpdF9zZXRfd2Vi
X2RhdGFiYXNlX2RpcmVjdG9yeV9wCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBX
VEY6OlN0cmluZyBjb3JlUGF0aCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKLSAgICBX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBh
dGgoY29yZVBhdGgpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CiAKICAgICBnX2ZyZWUod2Via2l0X2Rh
dGFiYXNlX2RpcmVjdG9yeV9wYXRoKTsKICAgICB3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3Bh
dGggPSBnX3N0cmR1cChjb3JlUGF0aC51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKIAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0Fj
dGlvbnMuaCIKQEAgLTM0MTEsNyArMzQxMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d191cGRhdGVfc2V0dGkKICAgICBjb3JlU2V0dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50
KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0
SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVIVE1MNURhdGFiYXNlKTsKKyAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShzZXR0aW5nc1ByaXZhdGUt
PmVuYWJsZUhUTUw1RGF0YWJhc2UpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCkBAIC0zNTE1LDcgKzM1MTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0
dGluZ3Nfbm90CiAgICAgICAgIHNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1odG1sNS1kYXRhYmFzZSIp
KSB7Ci0gICAgICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGdfdmFsdWVfZ2V0
X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dElzQXZhaWxhYmxlKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgfQogI2VuZGlm
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1odG1sNS1sb2Nh
bC1zdG9yYWdlIikpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBA
QAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkRhdGFiYXNl
TWFuYWdlciBvcmlnaW5zXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkYXRhYmFz
ZXNXaXRoT3JpZ2luOl0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGV0YWlsc0Zv
ckRhdGFiYXNlOndpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBk
ZWxldGVBbGxEYXRhYmFzZXNdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0
ZU9yaWdpbjpdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZURhdGFiYXNl
OndpdGhPcmlnaW46XSk6CisgICAgICAgIChXZWJLaXRJbml0aWFsaXplRGF0YWJhc2VzSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50LmguCisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAqIFN0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbS4KKyAgICAgICAgKFdl
YkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToK
KyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFu
YWdlckNsaWVudCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFp
blRocmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpEaWRNb2RpZnlPcmlnaW5E
YXRhKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorICAgICAg
ICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkRh
dGFiYXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHNldFF1
b3RhOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW06IFJl
bW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3Vy
aXR5T3JpZ2luIHF1b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3Rh
Ol0pOgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FjaGVhYmlsaXR5RGljdGlvbmFyeV0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOgorCiAyMDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZVR5cGVzIHNob3VsZCBub3QgZXhw
b3NlIE1lc3NhZ2VUeXBlIC0gaXQgc2hvdWxkIGJlIHByaXZhdGUgdG8gaW5zcGVjdG9yLgpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsOSArMjIxLDkgQEAgX2lu
aXRpYWxpemVMb2dDaGFubmVsCiArW1dlYkhpc3RvcnlJdGVtIGluaXRpYWxpemVdCiArW1dlYkhp
c3RvcnlJdGVtKFdlYkludGVybmFsKSBpbml0V2luZG93V2F0Y2hlcklmTmVjZXNzYXJ5XQogX19a
MzZXZWJLaXRJbml0aWFsaXplRGF0YWJhc2VzSWZOZWNlc3Nhcnl2Ci1fX1pOMjRXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQzMHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudEV2CitfX1pOMjRX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQzMHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudEV2
CiBfX1ozNFdlYktpdEluaXRpYWxpemVTdG9yYWdlSWZOZWNlc3Nhcnl2Ci1fX1pOMjNXZWJTdG9y
YWdlVHJhY2tlckNsaWVudDI5c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJDbGllbnRFdgorX19aTjIz
V2ViU3RvcmFnZU1hbmFnZXJDbGllbnQyOXNoYXJlZFdlYlN0b3JhZ2VNYW5hZ2VyQ2xpZW50RXYK
IF9fWk4yMVdlYlBsYXRmb3JtU3RyYXRlZ2llczEwaW5pdGlhbGl6ZUV2CiBfX1pOMTVXZWJDaHJv
bWVDbGllbnRDMUVQN1dlYlZpZXcKIF9fWk4yMFdlYkNvbnRleHRNZW51Q2xpZW50QzFFUDdXZWJW
aWV3CkBAIC0xOTM1LDggKzE5MzUsOCBAQCBfX1pOMTVXZWJDaHJvbWVDbGllbnQyMWV4Y2VlZGVk
RGF0YWJhc2VRCiAtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIGluaXRXaXRoT3JpZ2luOl0KIC1b
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XQogLVtXZWJTZWN1cml0eU9yaWdpbihX
ZWJJbnRlcm5hbCkgX2NvcmVdCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQyM2Rpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQotX19aTjI0V2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50MjVkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlRVBON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQorX19aTjI0V2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50MjNkaXNwYXRjaERpZE1vZGlmeU9yaWdpbkVQTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbkUKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDI1ZGlzcGF0Y2hEaWRNb2RpZnlE
YXRhYmFzZUVQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnQxN2RpZE5vdEFsbG93U2NyaXB0RXYKIC1bV2ViQmFj
a0ZvcndhcmRMaXN0IGZvcndhcmRMaXN0Q291bnRdCiAtW1dlYkJhY2tGb3J3YXJkTGlzdCBiYWNr
TGlzdENvdW50XQpAQCAtMTk4MCw3ICsxOTgwLDcgQEAgX19aTjNXVEY5SGFzaFRhYmxlSXhTdDRw
YWlySXhOU185UmV0YWluUAogX19aTjNXVEY5SGFzaFRhYmxlSXhTdDRwYWlySXhOU185UmV0YWlu
UHRySTE0TlNNdXRhYmxlQXJyYXlFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNV9FRU5TXzdJ
bnRIYXNoSXlFRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSXhFRU5TQl9JUzRf
RUVFRVNDX0U2cmVoYXNoRWkKIC1bV2ViRnJhbWVWaWV3KFdlYlByaXZhdGUpIF9hcmVhXQogK1tX
ZWJXb3JrZXJzUHJpdmF0ZSB3b3JrZXJUaHJlYWRDb3VudF0KLV9fWk4xOURpZE1vZGlmeU9yaWdp
bkRhdGEyMGRpc3BhdGNoVG9NYWluVGhyZWFkRVAyNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudFBO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjE5RGlkTW9kaWZ5T3JpZ2luRGF0YTIwZGlz
cGF0Y2hUb01haW5UaHJlYWRFUDI0V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50UE43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW5FCiBfX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMzVkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZEVQdgogX19aTjE1V2ViQ2hyb21lQ2xpZW50MjVlbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50RVBON1dlYkNvcmU3RWxlbWVudEUKIC1bV2ViS2l0RnVsbFNjcmVl
bkxpc3RlbmVyIC5jeHhfY29uc3RydWN0XQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0JKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKLSNpbXBv
cnQgIldlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgorI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAKLSNp
bXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFi
YXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTYyLDcgKzYyLDcgQEAgKyAoV2ViRGF0YWJhc2VNYW5h
Z2VyICopIHNoYXJlZFdlYkRhdGFiYQogLSAoTlNBcnJheSAqKW9yaWdpbnMKIHsKICAgICBWZWN0
b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNvcmVPcmlnaW5zOwotICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOwogICAgIE5TTXV0YWJsZUFycmF5ICp3
ZWJPcmlnaW5zID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3Jl
T3JpZ2lucy5zaXplKCldOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVPcmln
aW5zLnNpemUoKTsgKytpKSB7CkBAIC03Nyw3ICs3Nyw3IEBAIC0gKE5TQXJyYXkgKilvcmlnaW5z
CiAtIChOU0FycmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KIHsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yOwotICAgIGlmICghRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihbb3JpZ2luIF9jb3Jl
XSwgbmFtZVZlY3RvcikpCisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9yKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAKICAgICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6ZSgpXTsKQEAgLTky
LDcgKzkyLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOUwogewog
ICAgIHN0YXRpYyBpZCBrZXlzWzNdID0ge1dlYkRhdGFiYXNlRGlzcGxheU5hbWVLZXksIFdlYkRh
dGFiYXNlRXhwZWN0ZWRTaXplS2V5LCBXZWJEYXRhYmFzZVVzYWdlS2V5fTsKICAgICAKLSAgICBE
YXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlSWRlbnRpZmllciwgW29yaWdpbiBfY29yZV0pOwor
ICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBbb3JpZ2luIF9jb3Jl
XSk7CiAgICAgaWYgKGRldGFpbHMubmFtZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmls
OwogICAgICAgICAKQEAgLTEwNiwxNyArMTA2LDE3IEBAIC0gKE5TRGljdGlvbmFyeSAqKWRldGFp
bHNGb3JEYXRhYmFzZTooTlMKIAogLSAodm9pZClkZWxldGVBbGxEYXRhYmFzZXMKIHsKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKIH0KIAogLSAoQk9P
TClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7Ci0gICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihbb3JpZ2luIF9jb3JlXSk7
CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZU9yaWdpbihbb3Jp
Z2luIF9jb3JlXSk7CiB9CiAKIC0gKEJPT0wpZGVsZXRlRGF0YWJhc2U6KE5TU3RyaW5nICopZGF0
YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKFtv
cmlnaW4gX2NvcmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIHJldHVybiBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3JlXSwgZGF0YWJhc2VJ
ZGVudGlmaWVyKTsKIH0KIAogQGVuZApAQCAtMTM3LDExICsxMzcsMTMgQEAgdm9pZCBXZWJLaXRJ
bml0aWFsaXplRGF0YWJhc2VzSWZOZWNlc3NhcgogICAgIGlmIChpbml0aWFsaXplZCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgRGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKTsKKwogICAgIC8vIFNldCB0aGUgZGF0YWJhc2Ugcm9vdCBwYXRoIGlu
IFdlYkNvcmUKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNl
c0RpcmVjdG9yeVBhdGgoKSk7CisgICAgZGJNYW5hZ2VyLmluaXRpYWxpemUoZGF0YWJhc2VzRGly
ZWN0b3J5UGF0aCgpKTsKIAotICAgIC8vIFNldCB0aGUgRGF0YWJhc2VUcmFja2VyQ2xpZW50Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkpOworICAgIC8vIFNldCB0
aGUgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50CisgICAgZGJNYW5hZ2VyLnNldENsaWVudChXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpKTsKICAg
ICAKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3
MzM4KQkoZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5oOjEzNzMzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKSAKKworI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGll
bnQuaD4KKworY2xhc3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCogc2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgCisg
ICAgdmlydHVhbCB+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKK3ByaXZhdGU6
CisgICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Cit9OworCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaAkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMSw0MSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA3LDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KICAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpIAogCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNs
aWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaD4KIAotY2xh
c3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlckNsaWVudCB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAg
ICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBzaGFyZWRXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQoKTsKICAgICAKLSAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQo
KTsKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOwogcHJp
dmF0ZToKLSAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQoKTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHJldmlzaW9uIDEz
NzMzOCkJKGZyb20gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQubW06MTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2lt
cG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgiCisjaW1wb3J0ICJX
ZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCgpCit7CisgICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkQ2xp
ZW50ID0gbmV3IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHJldHVybiBzaGFyZWRD
bGllbnQ7Cit9CisKK1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6V2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KCkKK3sKK30KKworV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCkKK3sKK30KKworY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CitwdWJsaWM6CisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgeworICAgICAgICBEaWRNb2Rp
ZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBv
cmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9k
aWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRl
eHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4pCisgICAgICAgIDogY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBvcmlnaW4ob3JpZ2luKQor
ICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9u
TWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0YXRpY19jYXN0
PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5mby0+Y2xpZW50LT5k
aXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOworICAgICAgICBkZWxl
dGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudDsK
KyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKK3ZvaWQgV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiog
b3JpZ2luKQoreworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5
T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2Vj
dXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRo
V2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOworCisgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJEYXRhYmFzZURpZE1v
ZGlmeU9yaWdpbk5vdGlmaWNhdGlvbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpXTsK
K30KKwordm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIpCit7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlP
cmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1
cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhX
ZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFy
eT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJZGVudGlmaWVyS2V5
LCBuaWxdKTsKKyAgICAKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0YWJhc2VOb3RpZmlj
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzp1c2VySW5mby5nZXQo
KV07Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHJldmlzaW9uIDEzNzMzOCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMyICsxLDI5IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsMjAx
MiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKIAogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAKQEAgLTM4LDMxICszNSwzMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OnNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCitXZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQqIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50KCkKIHsKLSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRD
bGllbnQgPSBuZXcgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgc3RhdGljIFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudCgpOwogICAgIHJldHVybiBzaGFyZWRDbGllbnQ7CiB9CiAKLVdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudDo6V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKIH0KIAotV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dlYkRhdGFiYXNlTWFu
YWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB7CiB9CiAKIGNsYXNzIERp
ZE1vZGlmeU9yaWdpbkRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpZE1vZGlmeU9y
aWdpbkRhdGEpOwogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFk
KFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KQorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHsKICAgICAgICAg
RGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGNs
aWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
JkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
LCBjb250ZXh0KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luKQorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKICAgICAgICAg
OiBjbGllbnQoY2xpZW50KQogICAgICAgICAsIG9yaWdpbihvcmlnaW4pCiAgICAgewpAQCAtNzYs
MTEgKzczLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGRlbGV0ZSBpbmZvOwogICAgIH0KIAotICAg
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudCogY2xpZW50OwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwogfTsK
IAotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBp
ZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3Bh
dGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CkBAIC05Myw3ICs5MCw3IEBAIHZvaWQgV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaEQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2lu
LmdldCgpXTsKIH0KIAotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZUlkZW50aWZpZXIpCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6ZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAg
IERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VR
dW90YU1hbmFnZXIubW0JKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAKICNpbXBvcnQg
IldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VU
cmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTAsNyArNTAsNyBAQCAtIChXZWJTZWN1cml0eU9yaWdp
biAqKW9yaWdpbgogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VG
b3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsKICNlbHNlCiAgICAgcmV0
dXJuIDA7CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXVz
YWdlCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihbX29yaWdpbiBfY29yZV0pOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5xdW90YUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpAQCAtNzEsNyArNzEsNyBAQCAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIC0g
KHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoW19v
cmlnaW4gX2NvcmVdLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0
UXVvdGEoW19vcmlnaW4gX2NvcmVdLCBxdW90YSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5o
CShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlVHJhY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkgCi0KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lmg+Ci0KLWNsYXNzIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotICAg
IAotICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7Ci1wcml2
YXRlOgotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotfTsKLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbQkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTEyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCi0KLSNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotCi0jaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgi
Ci0jaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0jaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpCi17Ci0gICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotICAgIHJl
dHVybiBzaGFyZWRDbGllbnQ7Ci19Ci0KLVdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6V2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLX0KLQotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLX0KLQotY2xhc3MgRGlkTW9kaWZ5T3JpZ2lu
RGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi0gICAgewotICAg
ICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRh
dGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5U
aHJlYWQsIGNvbnRleHQpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBEaWRNb2RpZnlPcmlnaW5E
YXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4pCi0gICAgICAgIDogY2xpZW50KGNsaWVudCkKLSAgICAgICAgLCBvcmln
aW4ob3JpZ2luKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9
IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKLSAgICAgICAgaW5m
by0+Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOwot
ICAgICAgICBkZWxldGUgaW5mbzsKLSAgICB9Ci0KLSAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQqIGNsaWVudDsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKLX07Ci0KLXZv
aWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQotewotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAg
ICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2lu
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9y
aWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOwotCi0gICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJE
YXRhYmFzZURpZE1vZGlmeU9yaWdpbk5vdGlmaWNhdGlvbiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3Jp
Z2luLmdldCgpXTsKLX0KLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNo
RGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAg
ICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3Jp
Z2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9j
XSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0gICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9i
amVjdHNBbmRLZXlzOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJ
ZGVudGlmaWVyS2V5LCBuaWxdKTsKLSAgICAKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0
YWJhc2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzp1
c2VySW5mby5nZXQoKV07Ci19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHJldmlzaW9uIDEz
NzQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3Jp
Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW1wb3J0ICJXZWJEYXRh
YmFzZVF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0tVUkwuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE2MSwxNCArMTYx
LDE0IEBAIC0gKGlkPFdlYlF1b3RhTWFuYWdlcj4pZGF0YWJhc2VRdW90YU1hbmEKIAogLy8gRklY
TUU6IFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIHJlbW92
ZWQgbGF0ZXIuCiAvLyBDbGllbnRzIHNob3VsZCBpbnN0ZWFkIGdldCBhIFdlYlF1b3RhTWFuYWdl
ciwgYW5kIHF1ZXJ5IC8gc2V0IHRoZSBxdW90YSB2aWEgdGhlIE1hbmFnZXIuCi0vLyBOT1RFOiB0
aGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+ICNpbmNsdWRlIHNob3VsZCBiZSByZW1vdmVk
IGFzIHdlbGwuCisvLyBOT1RFOiB0aGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+ICNpbmNs
dWRlIHNob3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJTZWN1
cml0eU9yaWdpbiAoRGVwcmVjYXRlZCkKIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+
KF9wcml2YXRlKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdl
Rm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTc3LDcgKzE3Nyw3IEBAIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZQogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3Jp
Z2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHVuc2lnbmVkIGxv
bmcgbG9uZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3Rh
CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUp
LCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEocmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpOwogI2VuZGlmCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTM3
NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NSW1wbGVtZW50YXRp
b24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgLSAoTlNN
dXRhYmxlRGljdGlvbmFyeSAqKV9jYWNoZWFiaWxpdHlEaQogICAgIAogICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKSB7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaWYgKERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRh
dGFiYXNlcyhkb2N1bWVudCkpCisgICAgICAgIGlmIChEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5oYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJGcmFtZVVzZXNEYXRh
YmFzZXNdOwogI2VuZGlmCiAgICAgICAgIGlmICghZG9jdW1lbnQtPmNhblN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZp
c2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TENvbm5lY3Rpb24uaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQWJzdHJh
Y3REYXRhYmFzZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgpAQCAtMTE5LDYgKzExOCw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdDb250cm9sbGVyLmg+CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNl
c0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldFBpY3RvZ3JhcGhGb250RmFt
aWx5KFtwcmVmZXJlbmNlcyBwaWN0b2dyYXBoRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLT5z
ZXRQbHVnaW5zRW5hYmxlZChbcHJlZmVyZW5jZXMgYXJlUGx1Z0luc0VuYWJsZWRdKTsKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxl
KFtwcmVmZXJlbmNlcyBkYXRhYmFzZXNFbmFibGVkXSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNlc0VuYWJsZWRdKTsK
ICNlbmRpZgogICAgIHNldHRpbmdzLT5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKFtwcmVmZXJlbmNl
cyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBleHBlcmltZW50YWxOb3RpZmljYXRpb25z
RW5hYmxlZF0pOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fw
c3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0
MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFw
aS9xd2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSk6
CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSk6CisgICAgICAgIChRV2ViRGF0
YWJhc2U6OnNpemUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpmaWxlTmFtZSk6CisgICAgICAg
IChRV2ViRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6
cmVtb3ZlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNw
cDoKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VVc2FnZSk6CisgICAgICAg
IChRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNlY3Vy
aXR5T3JpZ2luOjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdp
bjo6YWxsT3JpZ2lucyk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlcyk6
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQ
cml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdl
UGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorCiAyMDEyLTEyLTExICBN
aWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Q29uc29sZVR5cGVzIHNob3VsZCBub3QgZXhwb3NlIE1lc3NhZ2VUeXBlIC0gaXQgc2hvdWxkIGJl
IHByaXZhdGUgdG8gaW5zcGVjdG9yLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRh
dGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJh
c2UuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0
YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicXdl
YnNlY3VyaXR5b3JpZ2luLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luX3AuaCIKICNp
bmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTg3LDcgKzg3LDcgQEAgUVN0cmluZyBRV2ViRGF0YWJhc2U6Om5hbWUoKSBjb25zdAog
UVN0cmluZyBRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2lu
LmdldCgpKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQo
KSk7CiAgICAgcmV0dXJuIGRldGFpbHMuZGlzcGxheU5hbWUoKTsKICNlbHNlCiAgICAgcmV0dXJu
IFFTdHJpbmcoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZGlz
cGxheU5hbWUoKSBjb25zCiBxaW50NjQgUVdlYkRhdGFiYXNlOjpleHBlY3RlZFNpemUoKSBjb25z
dAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
LT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0g
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFt
ZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7
CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAtMTEzLDcgKzExMyw3IEBAIHFpbnQ2NCBRV2ViRGF0
YWJhc2U6OmV4cGVjdGVkU2l6ZSgpIGNvbnMKIHFpbnQ2NCBRV2ViRGF0YWJhc2U6OnNpemUoKSBj
b25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRl
dGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxz
ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+
bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC0xNDgsNyArMTQ4LDcgQEAgUVdlYkRhdGFiYXNl
OjpRV2ViRGF0YWJhc2UoUVdlYkRhdGFiYXNlUAogUVN0cmluZyBRV2ViRGF0YWJhc2U6OmZpbGVO
YW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGQtPm9yaWdpbi5nZXQo
KSwgZC0+bmFtZSwgZmFsc2UpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5mdWxsUGF0aEZvckRhdGFiYXNlKGQtPm9yaWdpbi5nZXQoKSwgZC0+bmFtZSwgZmFsc2UpOwog
I2Vsc2UKICAgICByZXR1cm4gUVN0cmluZygpOwogI2VuZGlmCkBAIC0xNzEsNyArMTcxLDcgQEAg
UVdlYlNlY3VyaXR5T3JpZ2luIFFXZWJEYXRhYmFzZTo6b3JpZ2luKAogdm9pZCBRV2ViRGF0YWJh
c2U6OnJlbW92ZURhdGFiYXNlKGNvbnN0IFFXZWJEYXRhYmFzZSYgZGIpCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRh
YmFzZShkYi5kLT5vcmlnaW4uZ2V0KCksIGRiLmQtPm5hbWUpOworICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQoKSwgZGIuZC0+bmFt
ZSk7CiAjZW5kaWYKIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUVdlYkRhdGFiYXNlOjpy
ZW1vdmVEYXRhYmFzZShjb25zdCAKIHZvaWQgUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFz
ZXMoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCShyZXZpc2lvbiAxMzc0MDcpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luLmgiCiAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCkBAIC0xMjEsNyArMTIxLDcgQEAgaW50IFFXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCgpIGNv
bnN0CiBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS51c2FnZUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTMzLDcgKzEzMyw3IEBAIHFpbnQ2NCBR
V2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlVXNhZ2UKIHFpbnQ2NCBRV2ViU2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlUXVvdGEoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKGQtPm9y
aWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3Rh
Rm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC0xNDksNyArMTQ5LDcgQEAgcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VR
dW90YQogdm9pZCBRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNlUXVvdGEocWludDY0IHF1
b3RhKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuc2V0UXVvdGEoZC0+b3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZC0+b3JpZ2luLmdldCgpLCBxdW90YSk7CiAjZW5k
aWYKIH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIFFMaXN0PFFXZWJTZWN1cml0eU9yaWdpbj4gUVdl
YlNlY3VyaXR5T3IKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gPiBjb3JlT3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb3JlT3JpZ2lucy5zaXplKCk7ICsraSkgewogICAgICAgICBRV2ViU2VjdXJpdHlPcmlnaW5Q
cml2YXRlKiBwcml2ID0gbmV3IFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUoY29yZU9yaWdpbnNb
aV0uZ2V0KCkpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIFFMaXN0PFFXZWJEYXRhYmFzZT4gUVdlYlNl
Y3VyaXR5T3JpZ2luOjoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVWZWN0b3I7CiAKLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpLCBuYW1lVmVjdG9yKSkKKyAgICBp
ZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oZC0+
b3JpZ2luLmdldCgpLCBuYW1lVmVjdG9yKSkKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlczsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAg
ICAgICBRV2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gbmV3IFFXZWJEYXRhYmFzZVByaXZhdGUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gMTM3
NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjIsMTAgKzIyLDkgQEAKIAogI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZV9w
LmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgpAQCAtMjMxLDcgKzIzMCw3IEBAIHZvaWQgUVdl
YlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
ICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdl
RGF0YWJhc2VFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpPZmZsaW5lU3RvcmFnZURhdGFi
YXNlRW5hYmxlZCkpOwotICAgICAgICBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2
YWlsYWJsZSh2YWx1ZSk7CisgICAgICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnNldElzQXZhaWxhYmxlKHZhbHVlKTsKICNlbmRpZgogCiAgICAgICAgIHZhbHVlID0gYXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZCwKQEAgLTEwMDQsNyArMTAwMyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5l
U3RvcmFnZVBhdGgKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CisgICAgV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOwogI2Vu
ZGlmCiB9CiAKQEAgLTEwMjAsNyArMTAxOSw3IEBAIFFTdHJpbmcgUVdlYlNldHRpbmdzOjpvZmZs
aW5lU3RvcmFnZVBhdGgKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwog
I2Vsc2UKICAgICByZXR1cm4gUVN0cmluZygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24g
MTM3NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1ZGUg
IkNvbG9yQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlSWNvbkxvYWRlci5oIgpAQCAtNTM5LDgg
KzUzOSw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW8KIHsKICAg
ICBxdWludDY0IHF1b3RhID0gUVdlYlNldHRpbmdzOjpvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90
YSgpOwogCi0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9y
aWdpbihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCBxdW90YSk7CisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5o
YXNFbnRyeUZvck9yaWdpbihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisg
ICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CiAKICAgICBtX3dlYlBhZ2UtPmRhdGFiYXNl
UXVvdGFFeGNlZWRlZChRV2ViRnJhbWVBZGFwdGVyOjpraXQoZnJhbWUpLCBkYXRhYmFzZU5hbWUp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTIt
MTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3Vs
YXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRh
dGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OnNoYXJlZFdl
YkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMp
OgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0ZvckRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90
YSk6CisgICAgICAgIChXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyKToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6dXNhZ2UpOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnF1b3RhKToK
KyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpzZXRRdW90YSk6CisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAy
MDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQ29uc29sZVR5cGVzIHNob3VsZCBub3QgZXhwb3NlIE1lc3NhZ2VUeXBlIC0g
aXQgc2hvdWxkIGJlIHByaXZhdGUgdG8gaW5zcGVjdG9yLgpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KQEAgLTIwMiw3ICsyMDIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRhdGFiYXNlTWFuCiB7CiAgICAgaWYgKCFzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdl
cikgewogICAgICAgICBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5hZG9wdFJlZihXZWJEYXRh
YmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkpOwotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5zZXRDbGllbnQoc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIuZ2V0KCkpOwor
ICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRDbGllbnQoc19zaGFyZWRXZWJE
YXRhYmFzZU1hbmFnZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBzX3NoYXJlZFdlYkRh
dGFiYXNlTWFuYWdlci5jb3B5UmVmVG8ocmVzdWx0KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IG9yaWdpbnM7Ci0gICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5zKG9yaWdpbnMpOwogICAgICAgICBDT01QdHI8Q09N
RW51bVZhcmlhbnQ8VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiA+ID4gZW51bVZhcmlh
bnQoQWRvcHRDT00sIENPTUVudW1WYXJpYW50PFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
ID4gPjo6YWRvcHQob3JpZ2lucykpOwogCiAgICAgKnJlc3VsdCA9IGVudW1WYXJpYW50LmxlYWtS
ZWYoKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRh
dGFiYXNlTWFuCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBk
YXRhYmFzZU5hbWVzOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFt
ZXNGb3JPcmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNl
TmFtZXMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZXMp
OwogCiAgICAgQ09NUHRyPENPTUVudW1WYXJpYW50PFZlY3RvcjxTdHJpbmc+ID4gPiBlbnVtVmFy
aWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4gPjo6YWRvcHQoZGF0
YWJhc2VOYW1lcykpOwogCkBAIC0yNjksNyArMjY5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKFN0cmluZyhkYXRhYmFz
ZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSwKKyAgICBEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSwKICAg
ICAgICAgd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAgaWYgKGRl
dGFpbHMubmFtZSgpLmlzTnVsbCgpKQpAQCAtMjg0LDcgKzI4NCw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRh
dGFiYXNlTWFuYWdlcikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9
CkBAIC0zMDIsNyArMzAyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFz
ZU1hbgogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4od2ViU2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmRlbGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMyNCw3ICszMjQsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZURhdGFiYXNlKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLCBTdHJpbmco
ZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSkpOworICAgIERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLCBTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VO
YW1lKSkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zODEsNyArMzgxLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIGlmICh0aGlzICE9IHNfc2hh
cmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcob3JpZ2luKS5nZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbiku
Z2V0KCksIHF1b3RhKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDE2LDcgKzQxNiw3IEBA
IHZvaWQgV2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiRGF0YWJhc2VzIik7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjppbml0
aWFsaXplVHJhY2tlcihkYXRhYmFzZXNEaXJlY3RvcnkpOworICAgIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmluaXRpYWxpemUoZGF0YWJhc2VzRGlyZWN0b3J5KTsKIAogICAg
IGluaXRpYWxpemVkID0gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFi
YXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5oCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRh
YmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50Lmg+CiAKLWNsYXNzIFdlYkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBJV2ViRGF0
YWJhc2VNYW5hZ2VyLCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7Citj
bGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgSVdlYkRhdGFiYXNlTWFuYWdlciwgcHJp
dmF0ZSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBXZWJEYXRhYmFzZU1hbmFnZXIqIGNyZWF0ZUluc3RhbmNlKCk7CiAKQEAgLTc2LDcgKzc2LDcg
QEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIEJTVFIgb3JpZ2luLAogICAgICAgICAvKiBb
aW5dICovIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAKLSAgICAvLyBEYXRhYmFzZVRyYWNr
ZXJDbGllbnQKKyAgICAvLyBEYXRhYmFzZU1hbmFnZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZU5hbWUpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUv
QlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KIAogI2lmICFFTkFCTEUoU1FMX0RBVEFCQVNF
KQogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTM0LDcgKzEzNCw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICAq
cmVzdWx0ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4obV9zZWN1
cml0eU9yaWdpbi5nZXQoKSk7CiAKICAgICByZXR1cm4gU19PSzsKICNlbHNlCkBAIC0xNTAsNyAr
MTUwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZv
ck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gU19PSzsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CkBAIC0xNjIsNyArMTYyLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAgIC8qIFtpbl0gKi8gdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhKSAKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShtX3NlY3VyaXR5
T3JpZ2luLmdldCgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKICNlbHNlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgpAQCAtNzYsNiArNzUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJv
bGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
YXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdDb250cm9sbGVyLmg+CkBAIC00ODA0LDcgKzQ4MDQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmRhdGFiYXNl
c0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4g
aHI7Ci0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZW5hYmxlZCk7CisgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZW5hYmxlZCk7CiAjZW5k
aWYKIAogICAgIGhyID0gcHJlZnNQcml2YXRlLT5sb2NhbFN0b3JhZ2VFbmFibGVkKCZlbmFibGVk
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEyLTEx
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBl
eHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkFy
ZURhdGFiYXNlc0VuYWJsZWQpOgorCiAyMDEyLTExLTI3ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9u
amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9h
ZCgpIGludG8gb25lIGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
eC9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTM3NDA3KQorKysgU291cmNlL1dlYktpdC93eC9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNpbmNsdWRlICJB
YnN0cmFjdERhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgInd4L3d4cHJlYy5oIgpA
QCAtMTEyNiw3ICsxMTI1LDcgQEAgYm9vbCBXZWJWaWV3OjpTaG91bGRDbG9zZSgpIGNvbnN0CiB2
b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IHd4U3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRhYmFz
ZURpcmVjdG9yeSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0
RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGRhdGFiYXNlRGlyZWN0b3J5KTsKICNlbmRpZgogfQogCkBA
IC0xMTM0LDcgKzExMzMsNyBAQCB2b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0CiB3eFN0cmluZyBXZWJWaWV3OjpHZXREYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gd3hFbXB0eVN0cmluZzsKICNlbmRpZgpAQCAtMTE0NCw3ICsxMTQzLDggQEAg
d3hTdHJpbmcgV2ViVmlldzo6R2V0RGF0YWJhc2VEaXJlY3RvcnkoKQogdm9pZCBXZWJWaWV3OjpT
ZXREYXRhYmFzZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJs
ZWQpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CisgICAgbWFuYWdlci5zZXRJc0F2YWlsYWJsZShl
bmFibGVkKTsKICNlbmRpZgogfQogCkBAIC0xMTUyLDcgKzExNTIsOCBAQCB2b2lkIFdlYlZpZXc6
OlNldERhdGFiYXNlc0VuYWJsZWQoYm9vbCBlCiBib29sIFdlYlZpZXc6OkFyZURhdGFiYXNlc0Vu
YWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6
OkFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyJiBkYk1hbmFnZXIgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsK
KyAgICByZXR1cm4gZGJNYW5hZ2VyLmlzQXZhaWxhYmxlKCk7CiAjZW5kaWYKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xp
ZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5jcHAJKHJldmlzaW9uIDEzNzQwNykKKysrIFNvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJDaHJvbWVDbGllbnRXeC5oIgogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAjaW5jbHVkZSAiRmlsZUNo
b29zZXIuaCIKICNpbmNsdWRlICJGaWxlSWNvbkxvYWRlci5oIgpAQCAtNDI3LDggKzQyNyw4IEBA
IHZvaWQgQ2hyb21lQ2xpZW50V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW8KICAgICBpZiAoV2ViRnJh
bWUqIHdlYkZyYW1lID0gbV93ZWJWaWV3LT5HZXRNYWluRnJhbWUoKSkKICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHdlYkZyYW1lLT5HZXRGcmFtZSgpKQogICAgICAgICAgICAgaWYgKERvY3Vt
ZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIGlmICgh
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4oZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCkpKQotICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgcXVvdGEpOworICAg
ICAgICAgICAgICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JP
cmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgICAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShkb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgcXVvdGEpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178984</attachid>
            <date>2012-12-12 00:02:12 -0800</date>
            <delta_ts>2012-12-12 00:24:13 -0800</delta_ts>
            <desc>svn up&apos;ed to get the patch to apply properly.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>150656</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZU1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp+RGF0YWJhc2VNYW5hZ2VyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNl
dENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
aDoKKyAgICAgICAgKERhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6Cisg
ICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2Fu
Q2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAy
MDEyLTEyLTExICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM3MzMzLCByMTM3MzQ0LCByMTM3MzY0
LCBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDYgKzk0NSw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTeW5jLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOTMsMTMgKzIwOTMsMTUg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmggXApAQCAtMjk3Nyw2ICsyOTc4LDcgQEAgdXNlPyhQTFVHSU5fQkFDS0VORF9YTElC
KSB7CiBlbmFibGU/KFNRTF9EQVRBQkFTRSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBcCisgICAgICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzY0LDE5ICszNjQsMjAgQEAgX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2CiBfX1pO
N1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJT
aGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291
cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVy
c0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VDb250ZXh0MTZoYXNPcGVuRGF0YWJhc2VzRVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNl
Y3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNGRlbGV0ZURhdGFi
YXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVE
YXRhYmFzZVRyYWNrZXIxNHF1b3RhRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19a
TjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHVzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5
T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2Vy
RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOGRlbGV0ZUFs
bERhdGFiYXNlc0V2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjIyZGF0YWJhc2VOYW1l
c0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5n
RUxtMEVFRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyM2RldGFpbHNGb3JOYW1lQW5k
T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZVRyYWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0
U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN3Ry
YWNrZXJFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI4c2V0UXVvdGFFUE5TXzE0U2Vj
dXJpdHlPcmlnaW5FeQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBO
U18yMURhdGFiYXNlVHJhY2tlckNsaWVudEUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2Vy
MTRzZXRJc0F2YWlsYWJsZUViCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE2aGFzT3Bl
bkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQorX19aTjdXZWJDb3JlMTVE
YXRhYmFzZU1hbmFnZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43
V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRkZWxldGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9y
aWdpbkVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRxdW90
YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VN
YW5hZ2VyMTR1c2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29y
ZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXplRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJD
b3JlMTVEYXRhYmFzZU1hbmFnZXIxOGRlbGV0ZUFsbERhdGFiYXNlc0V2CitfX1pON1dlYkNvcmUx
NURhdGFiYXNlTWFuYWdlcjIyZGF0YWJhc2VOYW1lc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5nRUxtMEVFRQorX19aTjdXZWJDb3JlMTVEYXRh
YmFzZU1hbmFnZXIyM2RldGFpbHNGb3JOYW1lQW5kT3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18x
NFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI3b3JpZ2luc0VS
TjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKK19f
Wk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyN21hbmFnZXJFdgorX19aTjdXZWJDb3JlMTVEYXRh
YmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5FeQorX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUK
IF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTBzZXRGb2N1c2VkRWIKIF9fWk43V2ViQ29y
ZTE1Rm9jdXNDb250cm9sbGVyMTRzZXRGb2N1c2VkTm9kZUVQTlNfNE5vZGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9j
dXNlZEZyYW1lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQpAQCAtNDMxLDcgKzQzMiw2
IEBAIF9fWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGUKIF9fWk43V2ViQ29y
ZTE1dG9ET01TdHJpbmdMaXN0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRQogX19aTjdX
ZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUEt0agogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hh
c2hFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UxNHNldElz
QXZhaWxhYmxlRWIKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdlRm9y
T3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNh
Y2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2Vi
Q29yZTE2RGV2aWNlTW90aW9uRGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKQEAgLTE5
MTcsMTEgKzE5MTcsNiBAQCBfX1pON1dlYkNvcmUxNEljb25Db250cm9sbGVyM3VybEV2CiBfX1pO
N1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNmNhbmNlbEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlOXNldENsaWVudEVQTlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVudEUKIF9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VIYW5kbGVEMUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE2b3Jp
Z2luc0RpZENoYW5nZUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjI1ZGVsZXRlRGF0
YWJhc2VGaWxlSWZFbXB0eUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VU
cmFja2VyMjhyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzRXYKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VUcmFja2VyMzhlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaEV2Ci1f
X1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjQ0ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRh
c2tXaWxsQmVTY2hlZHVsZWRFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMmRyYXdC
aWRpVGV4dEVSS05TXzRGb250RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFUE5TXzEw
QmlkaVN0YXR1c0VpCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1ZHJhd0xpbmVGb3JU
ZXh0RVJLTlNfMTBGbG9hdFBvaW50RWZiCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIy
c2V0RW1vamlEcmF3aW5nRW5hYmxlZEViCkBAIC0xOTYzLDggKzE5NTgsNiBAQCBfX1pON1dlYkNv
cmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjE5Y2xlCiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNz
dXJlSGFuZGxlcjI1aGFzUmVjZWl2ZWRNZW1vcnlQcmVzc3VyZUV2CiBfX1pON1dlYkNvcmUyMU1l
bW9yeVByZXNzdXJlSGFuZGxlcjI1aW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9ja0VVMTNibG9ja19w
b2ludGVyRnZ2RWIKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMjVzZXRSZWNl
aXZlZE1lbW9yeVByZXNzdXJlRXYKLV9fWk43V2ViQ29yZTIxU1FMaXRlRGF0YWJhc2VUcmFja2Vy
N3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMjFTUUxpdGVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50
RVBOU18yN1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudEUKIF9fWk43V2ViQ29yZTIxYXBwbGlj
YXRpb25Jc0ZhY2Vib29rRXYKIF9fWk43V2ViQ29yZTIxbmV4dEJyZWFrYWJsZVBvc2l0aW9uRVJO
U18yMUxhenlMaW5lQnJlYWtJdGVyYXRvckVpYgogX19aTjdXZWJDb3JlMjFuZXh0UGFyYWdyYXBo
UG9zaXRpb25FUktOU18xNVZpc2libGVQb3NpdGlvbkVpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTk4Nyw2ICs5ODcsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVN5bmMuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U3luYy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5j
cHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAg
X19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOW9wZW5UcmFjawogX19aTjdXZWJDb3JlMTZT
UUxpdGVGaWxlU3lzdGVtMjhhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoRVJLTjNXVEY2U3Ry
aW5nRVM0XwogX19aTjdXZWJDb3JlMTZTUUxpdGVGaWxlU3lzdGVtMjRlbnN1cmVEYXRhYmFzZUZp
bGVFeGlzdHNFUktOM1dURjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3
dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIx
RGF0YWJhc2VUcmFja2VyQ2xpZW50RQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI5c2V0
Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTNTdG9yYWdlVGhyZWFkNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMjNz
ZXRTdG9yYWdlRGlyZWN0b3J5UGF0aEVSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKQoreworICAg
IHN0YXRpYyBEYXRhYmFzZU1hbmFnZXIqIGRiTWFuYWdlciA9IDA7CisgICAgaWYgKCFkYk1hbmFn
ZXIpCisgICAgICAgIGRiTWFuYWdlciA9IG5ldyBEYXRhYmFzZU1hbmFnZXIoKTsKKworICAgIHJl
dHVybiAqZGJNYW5hZ2VyOworfQorCitEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigp
Cit7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIo
ZGF0YWJhc2VQYXRoKTsKK30KKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKK3ZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7Cit9CisKK1N0
cmluZyBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7Cit9CisjZW5kaWYKKworYm9vbCBEYXRhYmFz
ZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFzZTo6
aXNBdmFpbGFibGUoKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxl
KGJvb2wgYXZhaWxhYmxlKQoreworICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxl
KGF2YWlsYWJsZSk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2Vz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIERhdGFiYXNl
Q29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKK30KKwordm9pZCBEYXRhYmFzZU1h
bmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0
YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCit7CisgICAgRGF0YWJhc2VDb250
ZXh0OjpzdG9wRGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7Cit9CisKK1N0cmluZyBE
YXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQoreworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9y
aWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworfQorCisjaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQorYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
Lmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpv
cmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkKK3sKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7Cit9CisKK2Jvb2wgRGF0
YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCByZXN1bHQpOworfQor
CitEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5h
bWUsIG9yaWdpbik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnVz
YWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3Vuc2ln
bmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1
b3RhRm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90
YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFTaXplKQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbiwgcXVvdGFT
aXplKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCit7
CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7Cit9
CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luKG9yaWdpbik7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7
Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKK30KKyNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVy
cnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxE
YXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlTWFuYWdlcl9oCisjZGVm
aW5lIERhdGFiYXNlTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5j
bHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CitjbGFzcyBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFiYXNlTWFuYWdlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5hZ2VyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RhdGljIERhdGFiYXNlTWFuYWdlciYgbWFuYWdlcigpOworCisg
ICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Kik7CisgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OworICAgIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyAgICBi
b29sIGlzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKworICAg
IGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgLy8g
V2hlbiB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNp
Z25hbGxlZC4KKyAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCisgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QgPSB0cnVlKTsKKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBvcmlnaW5zKFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAgYm9vbCBkYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7
CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKworICAgIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmln
aW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMo
KTsKKyAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIGJvb2wgZGVs
ZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisjZWxz
ZSAvLyBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRl
bHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwor
I2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCisgICAgdm9pZCBpbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJpdmF0
ZToKKyAgICBEYXRhYmFzZU1hbmFnZXIoKTsKKyAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VNYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGll
bnQuaAkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOjEzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKyNkZWZp
bmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwzMiArMSwyOSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
ICAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCi0jaWZuZGVmIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCi0jZGVmaW5lIERhdGFi
YXNlVHJhY2tlckNsaWVudF9oCisjaWZuZGVmIERhdGFiYXNlTWFuYWdlckNsaWVudF9oCisjZGVm
aW5lIERhdGFiYXNlTWFuYWdlckNsaWVudF9oCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
CkBAIC0zNiw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudCB7CitjbGFzcyBEYXRhYmFzZU1h
bmFnZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVu
dCgpIHsgfQorICAgIHZpcnR1YWwgfkRhdGFiYXNlTWFuYWdlckNsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7CiB9OwpAQCAtNDcsNCArNDQsNCBA
QCBwdWJsaWM6CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gK
KyNlbmRpZiAvLyBEYXRhYmFzZU1hbmFnZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2
aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZURhdGFiYXNlRmlsZQogICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjpkZWxl
dGVEYXRhYmFzZUZpbGUoZnVsbFBhdGgpOwogfQogCi12b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
Q2xpZW50KERhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50KQordm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBtX2Ns
aWVudCA9IGNsaWVudDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTM3NDI0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBT
ZWN1cml0eU9yaWdpbkhhc2g7CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi1jbGFzcyBEYXRh
YmFzZVRyYWNrZXJDbGllbnQ7CitjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiAKIHN0cnVj
dCBTZWN1cml0eU9yaWdpblRyYWl0czsKICNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKik7CiAgICAgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZVRyYWNrZXJDbGll
bnQqKTsKKyAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKIAogICAg
IC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRz
IGRhdGEKICAgICB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBEYXRhYmFzZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50
OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRGF0YWJh
c2VEZXRhaWxzPiBQcm9wb3NlZERhdGFiYXNlOwogICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFz
ZSo+IG1fcHJvcG9zZWREYXRhYmFzZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlz
aW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYg
RGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gK
LQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotCi1jbGFzcyBE
YXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJh
Y2tlckNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihTZWN1cml0eU9yaWdpbiopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2Rp
ZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
RGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjA5NSw3ICsyMDk1LDcgQEAKIAogICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbVxcLmNw
cCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlXFwuY3BwJCddLAotICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnRcXC5oJCddLAorICAgICAgICBbJ2V4Y2x1
ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnRcXC5oJCddLAog
ICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJc
XC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
blF1b3RhTWFuYWdlclxcLihjcHB8aCkkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkXFwuKGNwcHxoKSQnXSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjUyMDksNiArMjUyMDksMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VNYW5hZ2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMsNiArMzY4Myw4IEBACiAJ
CTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNv
bnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsK
KwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAw
NUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CiAJCTk3
QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLzsgfTsK
QEAgLTM2OTEsNyArMzY5Myw3IEBACiAJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggKi87IH07CiAJ
CTk3QkM2QTMxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUYxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTk3QkM2QTMyMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRy
YWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlGMTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdCQzZBMzMxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFu
YWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk3QkM2QTM3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjUx
NTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgKi87IH07CiAJCTk3QkM2
QTM4MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY2MTUwNUYwODEwMDFCNzRB
QyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTdCQzZBMzkxNTA1RjA4MTAwMUI3
NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2Fn
ZVJlY29yZC5jcHAgKi87IH07CkBAIC0xMDk5MCw3ICsxMDk5Miw3IEBACiAJCTk3QkM2OUVFMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEYXRhYmFzZVRocmVhZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlFRjE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUcmFja2VyLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlckNsaWVu
dC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2
OUY1MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3Rh
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcmlnaW5RdW90YU1h
bmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUY3MTUwNUYwODEwMDFCNzRBQyAv
KiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBPcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpblVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTc1
LDYgKzE0MTc3LDggQEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1
ZGlvQ29tcGxldGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzIxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3Bw
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFu
YWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2MEY2NzZFNTcwMDA5Mjg3
MyAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29vcmRpbmF0ZXMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4
NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
MjQ3LDYgKzE4MjUxLDkgQEAKIAkJCQk5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VDb250ZXh0LmNwcCAqLywKIAkJCQk5N0JDNjlFNjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VDb250ZXh0LmggKi8sCiAJCQkJOTdCQzY5RTcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAorCQkJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuY3BwICovLAorCQkJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuaCAqLywKKwkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmggKi8sCiAJCQkJOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5jcHAgKi8sCiAJCQkJOTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3lu
Yy5oICovLAogCQkJCTk3QkM2OUVBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaWRs
ICovLApAQCAtMTgyNTYsNyArMTgyNjMsNiBAQAogCQkJCTk3QkM2OUVFMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRocmVhZC5oICovLAogCQkJCTk3QkM2OUVGMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVRyYWNrZXIuaCAqLywKLQkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCiAJCQkJQThDQ0JCNDYxNTFGODMxNjAwQUI3Q0U5
IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCAqLywKIAkJCQlBOENDQkI0NzE1MUY4MzE2MDBB
QjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCAqLywKIAkJCQlBOENDQkI0RTE1MUY4MzVB
MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsICovLApAQCAtMjI1NDEsNiArMjI1
NDcsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU0NTZGMTkxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzMTA1QkIxNjc1
MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzNzVE
N0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MUFGMTUwMTY1NkYxNTEwMEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIyODk5LDExICsyMjkwNiwxMSBAQAogCQkJCTk3QkM2QTI1MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyODE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyRTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMDE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTMyMTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3QkM2
QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFU
cmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjg5ODcsNiArMjg5OTQsNyBAQAogCQkJ
CUQ2NDg5RDI1MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBs
YXRlRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTFCQjE2NkMyRTZD
MDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTQ1
NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFz
ZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgpAQCAtMTUwLDEyICsxNTAsMTIgQEAgYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJTb2NrZXRFbgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQogewotICAgIHJldHVybiBBYnN0cmFj
dERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pc0F2YWlsYWJsZSgpOwogfQogCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
aXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAg
LTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9u
CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0ZW5lcjsKICAgICB9
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNP
cGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgeworICAgIGlmIChEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAg
ICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsKICAgICAg
ICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc0RhdGFiYXNlSGFuZGxlczsKICAgICB9CkBAIC0z
NDUsNyArMzQ1LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaAog
ICAgICAgICAmJiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpIHx8ICghZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYg
IWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
KSkKICAgICAgICAgJiYgKCFkb2N1bWVudC0+ZG9tV2luZG93KCkgfHwgIWRvY3VtZW50LT5kb21X
aW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICAmJiAhRGF0YWJhc2VDb250ZXh0OjpoYXNP
cGVuRGF0YWJhc2VzKGRvY3VtZW50KQorICAgICAgICAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuaGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNlbmRpZgogI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKICAgICAgICAgJiYgIVNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJl
ZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZFRpbWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC00NTAsOCArNDUwLDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbgogICAgICAgICBkb2Mt
PnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRj
aCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4g
YmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPwotICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMoZG9jLCAwKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgRGF0YWJhc2VN
YW5hZ2VyIHdhdGNoIGZvciBzb21ldGhpbmcgbGlrZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBy
YXRoZXIgdGhhbiBiZWluZyBzcGVjaWFsLWNhc2VkIGhlcmU/CisgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAKLSNp
bmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiQmFySW5mby5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50
LmgiCkBAIC00Niw4ICs0NSw2IEBACiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw2IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC00
Myw4ICs0Miw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlVGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTIzMSw3ICsyMzAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRo
ZSBkYXRhYmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAg
ICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIERhdGFi
YXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyh3b3JrZXJDb250ZXh0LCAmY2xlYW51cFN5bmMpOwor
ICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKHdvcmtlckNv
bnRleHQsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAogICAgICAgICB3b3JrZXJDb250ZXh0LT5z
dG9wQWN0aXZlRE9NT2JqZWN0cygpOwpAQCAtMjY2LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkOjpzdG9wKCkKICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+c2NoZWR1bGVF
eGVjdXRpb25UZXJtaW5hdGlvbigpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChtX3dvcmtlckNvbnRleHQuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyQ29udGV4dC5n
ZXQoKSk7CiAjZW5kaWYKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrKFdvcmtlclRocmVhZFNo
dXRkb3duU3RhcnRUYXNrOjpjcmVhdGUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElz
IGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNl
c0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRh
YmFzZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTIt
MTItMTEgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gRHVwbGljYXRlZCBXZWJQYWdlR3JvdXAgaW5pdGlhbGl6YXRpb24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvckNob29zZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
Q2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUljb25Mb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC01NDksOSArNTQ5LDEwIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXUKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53
ZWJGcmFtZSgpOwogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VO
YW1lLCBvcmlnaW4pOwotICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7Ci0gICAgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4o
b3JpZ2luKTsKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gZGJNYW5hZ2VyLmRl
dGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICB1aW50NjRf
dCBjdXJyZW50UXVvdGEgPSBkYk1hbmFnZXIucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB1
aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UgPSBkYk1hbmFnZXIudXNhZ2VGb3JPcmlnaW4ob3Jp
Z2luKTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7CiAgICAgUmVmUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIG5l
d1F1b3RhID0gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJh
c2VRdW90YShtX3BhZ2UsIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRl
dGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRl
dGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKQEAgLTU2Miw3
ICs1NjMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1CiAgICAg
ICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OlJl
cGx5KG5ld1F1b3RhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAgICAgfQogCi0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBuZXdRdW90YSk7CisgICAgZGJNYW5h
Z2VyLnNldFF1b3RhKG9yaWdpbiwgbmV3UXVvdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZURldGFpbHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUw
LDEyICs1MCwxMiBAQCBXZWJEYXRhYmFzZU1hbmFnZXImIFdlYkRhdGFiYXNlTWFuYWdlcjo6CiAK
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnkpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihk
YXRhYmFzZURpcmVjdG9yeSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5pdGlh
bGl6ZShkYXRhYmFzZURpcmVjdG9yeSk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGll
bnQodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0Q2xpZW50KHRoaXMp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQpAQCAtNzEs
MTIgKzcxLDEyIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU8KIHsK
ICAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNh
YmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBi
ZSBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IGFkZGluZyBhIGZ1bmN0aW9uIHRvIERhdGFiYXNlVHJh
Y2tlcgorICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkg
YWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0YWJhc2VNYW5hZ2VyCiAgICAgLy8gdG8gZ2V0IGJvdGgg
dGhlIG9yaWdpbnMgYW5kIHRoZSBWZWN0b3Igb2YgRGF0YWJhc2VEZXRhaWxzIGZvciBlYWNoIG9y
aWdpbiBpbiBvbmUKICAgICAvLyBzaG90LiAgVGhhdCB3b3VsZCBhdm9pZCB0YWtpbmcgdGhlIG51
bWVyb3VzIGxvY2tzIHRoaXMgcmVxdWlyZXMuCiAKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiA+IG9yaWdpbnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lu
cyhvcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5zKG9yaWdp
bnMpOwogCiAgICAgVmVjdG9yPE9yaWdpbkFuZERhdGFiYXNlcz4gb3JpZ2luQW5kRGF0YWJhc2Vz
VmVjdG9yOwogICAgIG9yaWdpbkFuZERhdGFiYXNlc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG9yaWdpbnMuc2l6ZSgpKTsKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIFdlYkRhdGFiYXNl
TWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiAgICAgICAgIE9yaWdpbkFuZERhdGFiYXNlcyBvcmln
aW5BbmREYXRhYmFzZXM7CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKLSAg
ICAgICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3Jp
Z2luKG9yaWdpbnNbaV0uZ2V0KCksIG5hbWVWZWN0b3IpKQorICAgICAgICBpZiAoIURhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQo
KSwgbmFtZVZlY3RvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBWZWN0b3I8
RGF0YWJhc2VEZXRhaWxzPiBkZXRhaWxzVmVjdG9yOwogICAgICAgICBkZXRhaWxzVmVjdG9yLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobmFtZVZlY3Rvci5zaXplKCkpOwogICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IG5hbWVWZWN0b3Iuc2l6ZSgpOyBqKyspIHsKLSAgICAgICAgICAgIERh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2luc1tpXS5nZXQoKSk7CisgICAg
ICAgICAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWVWZWN0b3Jbal0sIG9yaWdpbnNbaV0uZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKGRldGFpbHMubmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMDIsOCArMTAyLDggQEAgdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXI6OmdldERhdGFiYXNlc0J5TwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
b3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW5zW2ldLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblF1b3RhID0g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQo
KSk7Ci0gICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5Vc2FnZSA9IERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAg
ICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luUXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKKyAgICAgICAgb3JpZ2luQW5k
RGF0YWJhc2VzLm9yaWdpblVzYWdlID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VG
b3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7CiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5k
YXRhYmFzZXMuc3dhcChkZXRhaWxzVmVjdG9yKTsgCiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNl
c1ZlY3Rvci5hcHBlbmQob3JpZ2luQW5kRGF0YWJhc2VzKTsKICAgICB9CkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlT3JpZwogICAgIFdlYlBy
b2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4g
b3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAKICAg
ICBzaXplX3QgbnVtT3JpZ2lucyA9IG9yaWdpbnMuc2l6ZSgpOwogCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlVwogICAgIGlmICghb3Jp
Z2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLmdldCgpLCBkYXRh
YmFzZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgY29uc3QKQEAg
LTE0NSwxNCArMTQ1LDE0IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFz
ZXMKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdAogewogICAgIFdl
YlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdl
YlByb2Nlc3M6OnNoYXJlZCgpKTsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0
ZUFsbERhdGFiYXNlcygpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFG
b3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpIGNvbnN0CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFn
ZXI6OnNldFF1b3RhRm9yT3JpZwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0
KCksIHF1b3RhKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLmgJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiQXJndW1l
bnRzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIE1lc3NhZ2VJRDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdl
YkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQg
eworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlckNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViRGF0YWJhc2VNYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyJiBzaGFyZWQoKTsKQEAg
LTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlV2l0aE5hbWVG
b3JPcmlnaW4oY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllcikgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZXNGb3JPcmln
aW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25zdDsKIAotICAgIC8vIFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
ckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkZW50aWZpZXIpIE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsMTAgKzgwLDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3MtPnNl
dEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXko
KSkpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpz
ZXRJc0F2YWlsYWJsZShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmRhdGFiYXNlc0VuYWJsZWRLZXkoKSkpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnNldElzQXZhaWxhYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgpKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEyLTExICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRl
cm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0xMi0wNSAgSGFsdG9uIEh1byAgPGhhbHRvbi5o
dW9AaW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5pZnkgY29kaW5nIHN0eWxlIGZvciBD
TWFrZSBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBA
CiAJCTRCRjk5RjkxMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RjBBRTA1MEJD
MDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovOyB9OwogCQk1MTFGM0ZENTBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJNTExRjNGRDYwQ0VDQzg4RjAwODUyNTY1IC8qIFdl
YkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1h
bmFnZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyB9
OwotCQk1MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNG
RDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLzsgfTsK
KwkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDMw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oICovOyB9OworCQk1
MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQwQ0VD
Qzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJNTE0
OTRDRDYwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDQwQzdFQkRFMDAw
NDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovOyB9OwogCQk1MTQ5NENENzBDN0VC
REUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8q
IFdlYkljb25EYXRhYmFzZUNsaWVudC5tbSAqLzsgfTsKIAkJNTE0OTREMjQwQzdFQzFCNzAwNDE3
OEM1IC8qIFdlYk5TTm90aWZpY2F0aW9uQ2VudGVyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NEQyMjBDN0VDMUI2MDA0MTc4QzUgLyog
V2ViTlNOb3RpZmljYXRpb25DZW50ZXJFeHRyYXMuaCAqLzsgfTsKQEAgLTQ4OSw4ICs0ODksOCBA
QAogCQk0QkY5OUY4RjBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8q
IFdlYkRhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFGM0ZEMzBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTNENDIyRTAzNENGNTVBMDBDQTJBQ0QgLyogV2ViUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlBMDQyOTM5MkIwMENB
MkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE0NDNGOUIwNDI5
MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwpAQCAtMTA0NiwxMiArMTA0NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MTFGM0ZEMTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tICovLAorCQkJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaCAqLywKKwkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCTUxQUVERUYwMENFQ0Y0NTcwMDg1NDMyOCAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJJbnRlcm5hbC5oICovLAogCQkJCTUxMUYzRkQyMENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8sCiAJCQkJQTVERUZDMEQxMUQ1
MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJQTVERUZD
MEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAotCQkJ
CTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAq
LywKLQkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50Lm1tICovLAogCQkJCTNBQjAyQUY1MTJDMTMxOUIwMEZCQjY5NCAvKiBXZWJTdG9yYWdlTWFu
YWdlci5tbSAqLywKIAkJCQkzQUUxNUQ0RjEyREJERUQ0MDA5MzIzQzggLyogV2ViU3RvcmFnZU1h
bmFnZXJJbnRlcm5hbC5oICovLAogCQkJCTNBQjAyQUZGMTJDMTMyQjIwMEZCQjY5NCAvKiBXZWJT
dG9yYWdlTWFuYWdlclByaXZhdGUuaCAqLywKQEAgLTE0NDUsMTAgKzE0NDUsMTAgQEAKIAkJCQkw
NjVBRDVBMzBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTgxMDE2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJDb3JlU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRh
c2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFB
RURFRjEwQ0VDRjQ1NzAwODU0MzI4IC8qIFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZDMEYxMUQ1MzQzRTAwODg1
MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFG
M0ZENzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5Mzk4MTA0QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4QTQwOTYwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFT
b3VyY2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEMwODI0QkYwMTAwOERG
MDM4IC8qIFdlYkRhdGFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NjksOCAr
MTg2OSw4IEBACiAJCQkJOTM5ODEwQkYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0
aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMkExQTUxMjNCMEIzQzAwOUZFMTJBIC8qIFdl
YkRhc2hib2FyZFJlZ2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMUYzRkQ1MENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTFG
M0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1
IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgx
MEVEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRhU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwRUYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMUIwODI0QkYwMTAwOERGMDM4IC8qIFdl
YkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3Vs
YXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6
OmRpZENoYW5nZVNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVy
cnk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisKIDIwMTItMTItMTEgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmlicmF0aW9uIEFQSTogSURMIHR5
cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDgg
KzM5LDggQEAKICNpbmNsdWRlICJDcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oIgogI2luY2x1ZGUg
IkRPTVN1cHBvcnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgIkRlZmF1bHRUYXBIaWdobGlnaHQuaCIKICNpbmNsdWRlICJE
ZXZpY2VNb3Rpb25DbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25DbGllbnRCbGFja0JlcnJ5LmgiCkBAIC01ODQzLDEzICs1ODQzLDEzIEBAIHZvaWQgV2ViUGFn
ZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFcKICAgICBjb3JlU2V0dGluZ3MtPnNldENvb2tp
ZUVuYWJsZWQod2ViU2V0dGluZ3MtPmFyZUNvb2tpZXNFbmFibGVkKCkpOwogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICAvLyBEYXRhYmFzZVRyYWNrZXIgY2FuIG9ubHkgYmUgaW5pdGlh
bGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QKLSAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5n
ZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNlVHJhY2tlciBoYXMKKyAgICAvLyBEYXRhYmFz
ZU1hbmFnZXIgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QK
KyAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5nZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNl
TWFuYWdlciBoYXMKICAgICAvLyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgc3RhdGlj
IGJvb2wgZGJpbml0ID0gZmFsc2U7CiAgICAgaWYgKCFkYmluaXQgJiYgIXdlYlNldHRpbmdzLT5k
YXRhYmFzZVBhdGgoKS5lbXB0eSgpKSB7CiAgICAgICAgIGRiaW5pdCA9IHRydWU7Ci0gICAgICAg
IERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIod2ViU2V0dGluZ3MtPmRhdGFiYXNl
UGF0aCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKHdlYlNldHRpbmdz
LT5kYXRhYmFzZVBhdGgoKSk7CiAgICAgfQogCiAgICAgLy8gVGhlIGRpcmVjdG9yeSBvZiBjYWNo
ZVN0b3JhZ2UgZm9yIG9uZSBwYWdlIGdyb3VwIGNhbiBvbmx5IGJlIGluaXRpYWxpemVkIG9uY2Uu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNs
dWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgog
I2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1
cHBvcnQuaCIKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eTo6ZXhjZWVkZWREYXQKICAgICB9CiAjZW5kaWYKIAotICAgIERhdGFiYXNlVHJhY2tlciYgdHJh
Y2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpOworICAgIERhdGFiYXNlTWFuYWdlciYg
bWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwogCi0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsVXNhZ2UgPSB0cmFja2VyLnRvdGFsRGF0YWJhc2VVc2FnZSgpOwotICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2VGb3JPcmlnaW4ob3Jp
Z2luKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2FnZSA9IG1hbmFnZXIudG90YWxE
YXRhYmFzZVVzYWdlKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpblVzYWdlID0gbWFu
YWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSB0cmFja2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7CisgICAg
RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBtYW5hZ2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KG5hbWUsIG9yaWdpbik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGVzdGltYXRlZFNpemUgPSBk
ZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHIgPSBkZXRh
aWxzLmRpc3BsYXlOYW1lKCk7CiAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIENocm9tZUNsaWVu
dEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhID0g
bV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPmRhdGFiYXNlUXVvdGEob3JpZ2luU3RyLmNoYXJh
Y3RlcnMoKSwgb3JpZ2luU3RyLmxlbmd0aCgpLAogICAgICAgICBuYW1lU3RyLmNoYXJhY3RlcnMo
KSwgbmFtZVN0ci5sZW5ndGgoKSwgdG90YWxVc2FnZSwgb3JpZ2luVXNhZ2UsIGVzdGltYXRlZFNp
emUpOwogCi0gICAgdHJhY2tlci5zZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKKyAgICBtYW5hZ2Vy
LnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTExICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRl
cm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2VJbW1lZGlhdGVseSk6CisgICAgICAgICog
c3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVG
ZWF0dXJlczo6ZW5hYmxlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1lRmVh
dHVyZXM6OmlzRGF0YWJhc2VFbmFibGVkKToKKwogMjAxMi0xMi0xMSAgRG9taW5pYyBNYXp6b25p
ICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogTWFrZSBpc0FjdGlvblN1cHBv
cnRlZCBjcm9zcy1wbGF0Zm9ybS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkN1
cnNvci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1l
Q2hvb3Nlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFiYXNl
LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
V2ViRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYkRh
dGFiYXNlOjpyZXNldFNwYWNlQXZhaWxhYmxlKGNvCiB2b2lkIFdlYkRhdGFiYXNlOjpjbG9zZURh
dGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHko
b3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIGRhdGFi
YXNlTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUnVudGltZUZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
UnVudGltZUZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIk1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZShib29s
IGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJh
c2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuc2V0SXNBdmFpbGFibGUoZW5hYmxlKTsKICNlbmRpZgogfQogCiBib29sIFdlYlJ1bnRpbWVG
ZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJu
IERhdGFiYXNlTWFuYWdlcjo6dHJhY2tlcigpLmlzQXZhaWxhYmxlKCk7CiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDI0
KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAg
ICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29y
aWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmln
aW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2lu
X3dlYl9kYXRhYmFzZV9xdW90YV9zZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93
ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKKyAgICAgICAgKiBl
d2svZXdrX3dlYl9kYXRhYmFzZS5jcHA6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2Rpc3Bs
YXlfbmFtZV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplX2dl
dCk6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dldCk6CisgICAgICAgIChl
d2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVt
b3ZlKToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCk6CisKIDIwMTItMTIt
MTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmli
cmF0aW9uIEFQSTogSURMIHR5cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRh
aWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtNDI1
LDcgKzQyNSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXUKICAg
ICB1aW50NjRfdCBxdW90YTsKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWls
cyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRh
dGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFt
ZSwgb3JpZ2luKTsKICAgICBxdW90YSA9IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3Rh
KG1fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtp
dChmcmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpOwpAQCAtNDMzLDEwICs0MzMsMTAgQEAgdm9pZCBDaHJvbWVDbGll
bnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIC8qIGlmIGNsaWVudCBkaWQgbm90IHNldCBx
dW90YSwgYW5kIGRhdGFiYXNlIGlzIGJlaW5nIGNyZWF0ZWQgbm93LCB0aGUKICAgICAgKiBkZWZh
dWx0IHF1b3RhIGlzIGFwcGxpZWQKICAgICAgKi8KLSAgICBpZiAoIXF1b3RhICYmICFEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pKQorICAgIGlmICgh
cXVvdGEgJiYgIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9y
aWdpbikpCiAgICAgICAgIHF1b3RhID0gZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0
X3F1b3RhX2dldCgpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEo
b3JpZ2luLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEo
b3JpZ2luLCBxdW90YSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a193ZWJfZGF0YWJhc2UuaCIKQEAgLTY3LDcgKzY3LDcgQEAgdWludDY0X3QgZXdrX3NlY3Vy
aXR5X29yaWdpbl93ZWJfZGF0YWJhcwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChvcmlnaW4sIDApOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5z
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNzgsNyArNzgsNyBAQCB1aW50NjRf
dCBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9y
aWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3
IEBAIHZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXUKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4t
PnNlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVv
dGEpOwogI2VuZGlmCiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBFaW5hX0xpc3QqIGV3a19zZWN1
cml0eV9vcmlnaW5fd2ViX2RhdGFiCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG5hbWVzOwogCi0gICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmln
aW4uZ2V0KCksIG5hbWVzKSkKKyAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQo
KSwgbmFtZXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuYW1lcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZXR0aW5ncy5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0Vm
bC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2UuaCIKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2Nh
bF9zdG9yYWdlX2RhdGFiYXNlCiB2b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9z
ZXQoY29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0
aChXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6ZnJv
bVVURjgocGF0aCkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc193ZWJEYXRhYmFz
ZVBhdGgsIHBhdGgpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3dlYl9kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a193ZWJfZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCiAK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9v
cmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKQEAgLTQ1
LDcgKzQ1LDcgQEAgY29uc3QgY2hhciogZXdrX3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbQogICAg
ICAgICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwogCiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmln
aW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2Ut
Pm5hbWUsIG9yaWdpbik7CiAgICAgZGF0YWJhc2UtPmRpc3BsYXlOYW1lID0gZWluYV9zdHJpbmdz
aGFyZV9hZGQoZGV0YWlscy5kaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0
dXJuIGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsKQEAgLTU5LDcgKzU5LDcgQEAgdWludDY0X3QgZXdr
X3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplXwogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0
eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMu
ZXhwZWN0ZWRVc2FnZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwpAQCAt
NzQsNyArNzQsNyBAQCBjb25zdCBjaGFyKiBld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dlCiAg
ICAgICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdU
Rjo6U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxs
UGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXVEY6OlN0
cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhG
b3JEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAgICAgZGF0YWJhc2UtPmZp
bGVuYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAg
IHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CkBAIC0xMDgsNyArMTA4LDcgQEAgdWludDY0X3Qg
ZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1
cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9
IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWls
cyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFp
bHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CkBA
IC0xMTksNyArMTE5LDcgQEAgdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25z
dAogdm9pZCBld2tfd2ViX2RhdGFiYXNlX3JlbW92ZShFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFz
ZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5n
ZXQoKSwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCks
IGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7
CiAjZW5kaWYKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3Zl
KEV3a19XZWJfRGF0CiB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCh2b2lkKQogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTItMTEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFs
bHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfd2ViX2RhdGFiYXNlX3VzYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZV9xdW90YSk6CisgICAgICAgICh3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3NldF93ZWJfZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfYWxsX3dlYl9kYXRhYmFzZXMpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9k
aXNwbGF5X25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWRf
c2l6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9zaXplKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbGVuYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZGF0YWJhc2VfcmVtb3ZlKToKKyAgICAgICAgKHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFz
ZXMpOgorICAgICAgICAod2Via2l0X2dldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgor
ICAgICAgICAod2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191
cGRhdGVfc2V0dGluZ3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlm
eSk6CisKIDIwMTItMTItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEluc3RhbGwgR09iamVjdCBET00gYmluZGluZ3MgaGVhZGVy
cyBpbiBpdHMgb3duIGRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpw
cmludChGcmFtZSogZnJhbWUpCiB2b2lkIENocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgZ3Vp
bnQ2NCBkZWZhdWx0UXVvdGEgPSB3ZWJraXRfZ2V0X2RlZmF1bHRfd2ViX2RhdGFiYXNlX3F1b3Rh
KCk7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7CisgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIGRlZmF1bHRRdW90YSk7CiAKICAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQo
ZnJhbWUpOwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9zZWN1cml0eV9vcmlnaW4od2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEz
NzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAid2Via2l0ZmF2aWNvbmRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFz
ZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29u
RGF0YWJhc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRp
Y29uZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGljb25kYXRhYmFzZS5o
IgogCi0jaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0c2VjdXJpdHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJr
aXRzZWN1cml0eW9yaWdpbi5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUu
aCIKICNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgpAQCAtMjk4LDcgKzI5OCw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JP
cmlnaW4oY29yZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMzIxLDcgKzMyMSw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4o
Y29yZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnF1b3RhRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNl
bmRpZgpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRf
d2ViX2RhdGEKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShjb3JlT3JpZ2luLCBxdW90YSk7
CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoY29yZU9y
aWdpbiwgcXVvdGEpOwogI2VuZGlmCiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBHTGlzdCogd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfYWxsX3dlCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKICAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IGRhdGFiYXNlTmFtZXM7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oY29yZU9yaWdpbiwgZGF0YWJhc2VO
YW1lcykpCisgICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQogICAgICAgICBy
ZXR1cm4gTlVMTDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVz
LnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
ZGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJkYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRGF0YWJh
c2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgpAQCAtMzI3LDcgKzMyNyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFi
YXNlX2dldF9kaXMKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0
YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikp
OworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwg
Y29yZShwcml2LT5vcmlnaW4pKTsKICAgICBXVEY6OlN0cmluZyBkaXNwbGF5TmFtZSA9ICBkZXRh
aWxzLmRpc3BsYXlOYW1lKCk7CiAKICAgICBpZiAoZGlzcGxheU5hbWUuaXNFbXB0eSgpKQpAQCAt
MzU5LDcgKzM1OSw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWQK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRl
KiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNv
cmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5v
cmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAjZWxzZQogICAg
IHJldHVybiAwOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFz
ZV9nZXRfc2l6ZShXZWIKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2Vi
RGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6
RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdp
bikpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFt
ZSwgY29yZShwcml2LT5vcmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC00MDYsNyArNDA2LDcgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAg
ICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7CiAg
ICAgV1RGOjpTdHJpbmcgY29yZU5hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJpdi0+bmFt
ZSk7Ci0gICAgV1RGOjpTdHJpbmcgY29yZVBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgY29yZU5h
bWUpOworICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShjb3JlKHByaXYtPm9yaWdpbiksIGNvcmVO
YW1lKTsKIAogICAgIGlmIChjb3JlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiIiOwpA
QCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgd2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUoV2ViS2l0
V2UKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2
YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5u
YW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRh
YmFzZShjb3JlKHByaXYtPm9yaWdpbiksIHByaXYtPm5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTQ0
OSw3ICs0NDksNyBAQCB2b2lkIHdlYmtpdF93ZWJfZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiB2
b2lkIHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMoKQogewogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZv
aWQgd2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcygpCiBjb25zdCBnY2hhciogd2Via2l0
X2dldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgoKQogewogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIFdURjo6U3RyaW5nIHBhdGgg
PSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBh
dGgoKTsKIAogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAt
NDkzLDcgKzQ5Myw3IEBAIHZvaWQgd2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3AK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvcmVQYXRoKTsKIAogICAgIGdfZnJlZSh3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgp
OwogICAgIHdlYmtpdF9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCA9IGdfc3RyZHVwKGNvcmVQYXRo
LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5j
bHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2lu
Y2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBs
LmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAg
LTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgpAQCAtMzQxMSw3ICsz
NDExLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogICAgIGNv
cmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnNldElzQXZhaWxhYmxlKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTM1MTUsNyArMzUxNSw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3QKICAgICAgICAgc2V0
dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVl
KSk7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50
ZXJuX3N0cmluZygiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIikpIHsKLSAgICAgICAgQWJzdHJhY3RE
YXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKKyAg
ICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZ192YWx1ZV9n
ZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIGlmIChuYW1lID09
IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIG9yaWdpbnNdKToKKyAg
ICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46XSk6CisgICAg
ICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZXRhaWxzRm9yRGF0YWJhc2U6d2l0aE9yaWdpbjpd
KToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZUFsbERhdGFiYXNlc10pOgor
ICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlT3JpZ2luOl0pOgorICAgICAgICAo
LVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAg
ICAgKFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tLgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
OjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAg
KERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERp
ZE1vZGlmeU9yaWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9k
aWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFz
ZVF1b3RhTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgdXNh
Z2VdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgcXVvdGFdKToKKyAgICAg
ICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTdG9y
YWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlP
cmlnaW4gdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVvdGFdKToKKyAg
ICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gc2V0UXVvdGE6XSk6CisgICAgICAgICogV2ViS2l0
Lm9yZGVyOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9jYWNoZWFiaWxpdHlEaWN0aW9uYXJ5XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTIt
MTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBz
aG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVy
CShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIyMSw5ICsyMjEsOSBAQCBfaW5pdGlhbGl6ZUxvZ0NoYW5uZWwKICtb
V2ViSGlzdG9yeUl0ZW0gaW5pdGlhbGl6ZV0KICtbV2ViSGlzdG9yeUl0ZW0oV2ViSW50ZXJuYWwp
IGluaXRXaW5kb3dXYXRjaGVySWZOZWNlc3NhcnldCiBfX1ozNldlYktpdEluaXRpYWxpemVEYXRh
YmFzZXNJZk5lY2Vzc2FyeXYKLV9fWk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDMwc2hhcmVk
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50RXYKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVu
dDMwc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RXYKIF9fWjM0V2ViS2l0SW5pdGlhbGl6
ZVN0b3JhZ2VJZk5lY2Vzc2FyeXYKLV9fWk4yM1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50MjlzaGFy
ZWRXZWJTdG9yYWdlVHJhY2tlckNsaWVudEV2CitfX1pOMjNXZWJTdG9yYWdlTWFuYWdlckNsaWVu
dDI5c2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJDbGllbnRFdgogX19aTjIxV2ViUGxhdGZvcm1TdHJh
dGVnaWVzMTBpbml0aWFsaXplRXYKIF9fWk4xNVdlYkNocm9tZUNsaWVudEMxRVA3V2ViVmlldwog
X19aTjIwV2ViQ29udGV4dE1lbnVDbGllbnRDMUVQN1dlYlZpZXcKQEAgLTE5MzUsOCArMTkzNSw4
IEBAIF9fWk4xNVdlYkNocm9tZUNsaWVudDIxZXhjZWVkZWREYXRhYmFzZVEKIC1bV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIgaW5pdFdpdGhPcmlnaW46XQogLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdl
ciBzZXRRdW90YTpdCiAtW1dlYlNlY3VyaXR5T3JpZ2luKFdlYkludGVybmFsKSBfY29yZV0KLV9f
Wk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDIzZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5FUE43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQy
NWRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VFUE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FUktO
M1dURjZTdHJpbmdFCitfX1pOMjRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQyM2Rpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjI0V2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50MjVkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlRVBON1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNs
aWVudDE3ZGlkTm90QWxsb3dTY3JpcHRFdgogLVtXZWJCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExp
c3RDb3VudF0KIC1bV2ViQmFja0ZvcndhcmRMaXN0IGJhY2tMaXN0Q291bnRdCkBAIC0xOTgwLDcg
KzE5ODAsNyBAQCBfX1pOM1dURjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QCiBfX1pO
M1dURjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QdHJJMTROU011dGFibGVBcnJheUVF
RU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfN0ludEhhc2hJeUVFTlNfMTRQYWlySGFz
aFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJeEVFTlNCX0lTNF9FRUVFU0NfRTZyZWhhc2hFaQogLVtX
ZWJGcmFtZVZpZXcoV2ViUHJpdmF0ZSkgX2FyZWFdCiArW1dlYldvcmtlcnNQcml2YXRlIHdvcmtl
clRocmVhZENvdW50XQotX19aTjE5RGlkTW9kaWZ5T3JpZ2luRGF0YTIwZGlzcGF0Y2hUb01haW5U
aHJlYWRFUDI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50UE43V2ViQ29yZTE0U2VjdXJpdHlPcmln
aW5FCitfX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMjBkaXNwYXRjaFRvTWFpblRocmVhZEVQMjRX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnRQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkUKIF9fWk4x
OURpZE1vZGlmeU9yaWdpbkRhdGEzNWRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
RVB2CiBfX1pOMTVXZWJDaHJvbWVDbGllbnQyNWVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRFUE43
V2ViQ29yZTdFbGVtZW50RQogLVtXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgLmN4eF9jb25zdHJ1
Y3RdCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlci5tbQkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50LmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbXBvcnQg
IldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFz
ZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtNjIsNyArNjIsNyBAQCArIChXZWJEYXRhYmFzZU1hbmFnZXIgKikgc2hhcmVkV2ViRGF0YWJh
CiAtIChOU0FycmF5ICopb3JpZ2lucwogewogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+ID4gY29yZU9yaWdpbnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lu
cyhjb3JlT3JpZ2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhj
b3JlT3JpZ2lucyk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvcmVPcmlnaW5zLnNpemUoKV07CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAg
LTc3LDcgKzc3LDcgQEAgLSAoTlNBcnJheSAqKW9yaWdpbnMKIC0gKE5TQXJyYXkgKilkYXRhYmFz
ZXNXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIFZlY3RvcjxT
dHJpbmc+IG5hbWVWZWN0b3I7Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
YXRhYmFzZU5hbWVzRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9yKSkKKyAgICBp
ZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oW29y
aWdpbiBfY29yZV0sIG5hbWVWZWN0b3IpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAg
IE5TTXV0YWJsZUFycmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6bmFtZVZlY3Rvci5zaXplKCldOwpAQCAtOTIsNyArOTIsNyBAQCAtIChOU0RpY3Rp
b25hcnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TCiB7CiAgICAgc3RhdGljIGlkIGtleXNbM10g
PSB7V2ViRGF0YWJhc2VEaXNwbGF5TmFtZUtleSwgV2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXks
IFdlYkRhdGFiYXNlVXNhZ2VLZXl9OwogICAgIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxz
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0
YWJhc2VJZGVudGlmaWVyLCBbb3JpZ2luIF9jb3JlXSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRl
dGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkYXRhYmFzZUlkZW50aWZpZXIsIFtvcmlnaW4gX2NvcmVdKTsKICAgICBpZiAoZGV0YWlscy5u
YW1lKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIApAQCAtMTA2LDE3
ICsxMDYsMTcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOUwogCiAt
ICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKIH0KIAogLSAo
Qk9PTClkZWxldGVEYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9y
aWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0sIGRhdGFiYXNl
SWRlbnRpZmllcik7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0
ZURhdGFiYXNlKFtvcmlnaW4gX2NvcmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiBAZW5k
CkBAIC0xMzcsMTEgKzEzNywxMyBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5l
Y2Vzc2FyCiAgICAgaWYgKGluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBEYXRh
YmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworCiAg
ICAgLy8gU2V0IHRoZSBkYXRhYmFzZSByb290IHBhdGggaW4gV2ViQ29yZQotICAgIERhdGFiYXNl
VHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VzRGlyZWN0b3J5UGF0aCgpKTsKKyAg
ICBkYk1hbmFnZXIuaW5pdGlhbGl6ZShkYXRhYmFzZXNEaXJlY3RvcnlQYXRoKCkpOwogCi0gICAg
Ly8gU2V0IHRoZSBEYXRhYmFzZVRyYWNrZXJDbGllbnQKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRDbGllbnQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQoKSk7CisgICAgLy8gU2V0IHRoZSBEYXRhYmFzZU1hbmFnZXJDbGll
bnQKKyAgICBkYk1hbmFnZXIuc2V0Q2xpZW50KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hh
cmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkpOwogICAgIAogICAgIGluaXRpYWxpemVkID0g
WUVTOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTM3MzM4KQorKysgU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpIAorCisj
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorCitjbGFzcyBXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3Ry
aW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQoKTsKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsxLDQxIEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgCiAK
LSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogCi1jbGFzcyBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdl
YkRhdGFiYXNlTWFuYWdlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJD
bGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNo
YXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIAotICAg
IHZpcnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHZpcnR1YWwgfldlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RG
OjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CiBwcml2YXRlOgotICAgIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCgpOworICAgIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogfTsKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbQkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbToxMzczMzgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbXBvcnQgIldlYkRh
dGFiYXNlTWFuYWdlclByaXZhdGUuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJu
YWwuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKKyAgICBzdGF0aWMg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCk7CisgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKK30KKworV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQorCitXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQor
CitjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
aWRNb2RpZnlPcmlnaW5EYXRhKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKKyAgICB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQg
PSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkp
OworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRj
aERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKKyAgICAgICAgOiBjbGllbnQo
Y2xpZW50KQorICAgICAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgeworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEaWRN
b2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+
KGNvbnRleHQpOworICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KGluZm8tPm9yaWdpbi5nZXQoKSk7CisgICAgICAgIGRlbGV0ZSBpbmZvOworICAgIH0KKworICAg
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luOworfTsKKwordm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRv
TWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
UmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
b3JpZ2luXSk7CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9u
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOworfQorCit2b2lkIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9N
YWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpv
cmlnaW5dKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBb
W05TRGljdGlvbmFyeSBhbGxvY10gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJ
ZGVudGlmaWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOworICAgIAorICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6
V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJp
dHlPcmlnaW4uZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKK30KKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5tbQkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzEs
MjkgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAg
Ci0jaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKKyNpbXBvcnQgIldlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oIgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtMzgs
MzEgKzM1LDMxIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCkKK1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogewotICAgIHN0YXRp
YyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBz
aGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgcmV0dXJu
IHNoYXJlZENsaWVudDsKIH0KIAotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQoKQogewogfQogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50KCkKIHsKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBj
b250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVk
Q29weSgpKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgRGlkTW9k
aWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQogICAgICAgICA6IGNsaWVudChjbGllbnQpCiAgICAg
ICAgICwgb3JpZ2luKG9yaWdpbikKICAgICB7CkBAIC03NiwxMSArNzMsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgZGVsZXRlIGluZm87CiAgICAgfQogCi0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQ7CisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW47CiB9OwogCi12b2lkIFdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsK
ICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywg
b3JpZ2luKTsKQEAgLTkzLDcgKzkwLDcgQEAgdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
OmRpc3BhdGNoRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwogfQogCi12b2lkIFdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3ZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewog
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkocmV2aXNp
b24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3Rh
TWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiV2Vi
RGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKIAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRl
cm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC01MCw3ICs1MCw3IEBAIC0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAtICh1bnNpZ25l
ZCBsb25nIGxvbmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29y
ZV0pOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdp
bihbX29yaWdpbiBfY29yZV0pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNTks
NyArNTksNyBAQCAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3Jp
Z2luIF9jb3JlXSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC03MSw3ICs3MSw3
IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWdu
ZWQgbG9uZyBsb25nKXF1b3RhCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0s
IHF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzQyNCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAK
LQotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KLQotY2xhc3MgV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hh
cmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgCi0gICAgdmlydHVhbCB+V2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5
T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6
OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKLXByaXZhdGU6Ci0gICAgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCk7Ci19OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAx
Mzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaW1wb3J0ICJXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNp
bXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKLSNpbXBvcnQgIldlYlNlY3VyaXR5
T3JpZ2luSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsK
LSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgcmV0dXJuIHNoYXJlZENsaWVudDsKLX0K
LQotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQot
ewotfQotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQoKQotewotfQotCi1jbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRh
dGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5E
YXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKLSAgICAg
ICAgOiBjbGllbnQoY2xpZW50KQotICAgICAgICAsIG9yaWdpbihvcmlnaW4pCi0gICAgewotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
KHZvaWQqIGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5
T3JpZ2luRGF0YSo+KGNvbnRleHQpOwotICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdpbi5nZXQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpbmZvOwot
ICAgIH0KLQotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OwotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwotfTsKLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17
Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
OjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdp
bihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2Vj
dXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2lu
Tm90aWZpY2F0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwotfQotCi12b2lk
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKLXsK
LSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2lu
KEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1
cml0eU9yaWdpbjpvcmlnaW5dKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5m
byhBZG9wdE5TLCBbW05TRGljdGlvbmFyeSBhbGxvY10gCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5n
ICopZGF0YWJhc2VJZGVudGlmaWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOwot
ICAgIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlm
aWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKLX0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbQkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJXZWJRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJh
c2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTYxLDE0ICsxNjEsMTQgQEAgLSAoaWQ8V2ViUXVvdGFN
YW5hZ2VyPilkYXRhYmFzZVF1b3RhTWFuYQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGFyZSBkZXByZWNhdGVkIGFuZCBzaG91bGQgcmVtb3ZlZCBsYXRlci4KIC8vIENsaWVudHMg
c2hvdWxkIGluc3RlYWQgZ2V0IGEgV2ViUXVvdGFNYW5hZ2VyLCBhbmQgcXVlcnkgLyBzZXQgdGhl
IHF1b3RhIHZpYSB0aGUgTWFuYWdlci4KLS8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQgYXMgd2VsbC4KKy8vIE5PVEU6IHRo
ZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQg
YXMgd2VsbC4KIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVk
KQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdp
bihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRf
Y2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xNzcsNyArMTc3LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiAt
ICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWlu
dGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC0xODYsNyArMTg2LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAtICh2b2lk
KXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKHJlaW50ZXJw
cmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3Jp
Z2luKj4oX3ByaXZhdGUpLCBxdW90YSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZUNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CkBAIC0xMDY5LDcgKzEwNjksNyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX2Nh
Y2hlYWJpbGl0eURpCiAgICAgCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
ICAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKKyAg
ICAgICAgaWYgKERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZG9j
dW1lbnQpKQogICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10gZm9yS2V5OldlYkZyYW1lVXNlc0RhdGFiYXNlc107CiAjZW5kaWYKICAgICAg
ICAgaWYgKCFkb2N1bWVudC0+Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDcg
KzExMSw2IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvbi5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgotI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2Fy
ZExpc3RJbXBsLmg+CkBAIC0xMTksNiArMTE4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JN
YWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFn
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9j
dW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTE0
NjgsNyArMTQ2OCw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4K
ICAgICBzZXR0aW5ncy0+c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHBpY3Rv
Z3JhcGhGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKFtwcmVm
ZXJlbmNlcyBhcmVQbHVnSW5zRW5hYmxlZF0pOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNl
c0VuYWJsZWRdKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJs
ZShbcHJlZmVyZW5jZXMgZGF0YWJhc2VzRW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3Mt
PnNldExvY2FsU3RvcmFnZUVuYWJsZWQoW3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRd
KTsKICAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkXSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2Vk
IHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFz
ZTo6ZXhwZWN0ZWRTaXplKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6CisgICAgICAg
IChRV2ViRGF0YWJhc2U6OmZpbGVOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVtb3Zl
RGF0YWJhc2UpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMpOgor
ICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3Vy
aXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6
ZGF0YWJhc2VRdW90YSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToKKyAgICAg
ICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHA6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5v
dCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3Iu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQy
NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKICNp
bmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWls
cy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODcsNyArODcsNyBAQCBR
U3RyaW5nIFFXZWJEYXRhYmFzZTo6bmFtZSgpIGNvbnN0CiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6
ZGlzcGxheU5hbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNl
RGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWls
cy5kaXNwbGF5TmFtZSgpOwogI2Vsc2UKICAgICByZXR1cm4gUVN0cmluZygpOwpAQCAtMTAwLDcg
KzEwMCw3IEBAIFFTdHJpbmcgUVdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnMKIHFpbnQ2
NCBRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQo
KSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOwog
ICAgIHJldHVybiBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CkBAIC0xMTMsNyArMTEzLDcgQEAgcWludDY0IFFXZWJEYXRhYmFzZTo6ZXhwZWN0ZWRTaXplKCkg
Y29ucwogcWludDY0IFFXZWJEYXRhYmFzZTo6c2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5n
ZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkp
OwogICAgIHJldHVybiBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKQEAgLTE0OCw3ICsxNDgsNyBAQCBRV2ViRGF0YWJhc2U6OlFXZWJEYXRhYmFzZShRV2ViRGF0
YWJhc2VQCiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmZ1bGxQYXRoRm9yRGF0YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
ZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBRU3Ry
aW5nKCk7CiAjZW5kaWYKQEAgLTE3MSw3ICsxNzEsNyBAQCBRV2ViU2VjdXJpdHlPcmlnaW4gUVdl
YkRhdGFiYXNlOjpvcmlnaW4oCiB2b2lkIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoY29u
c3QgUVdlYkRhdGFiYXNlJiBkYikKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQo
KSwgZGIuZC0+bmFtZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0
YWJhc2UoZGIuZC0+b3JpZ2luLmdldCgpLCBkYi5kLT5uYW1lKTsKICNlbmRpZgogfQogCkBAIC0x
ODUsNyArMTg1LDcgQEAgdm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlKGNvbnN0IAog
dm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFz
ZXMoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJp
dHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1
cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAK
ICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTEyMSw3ICsxMjEsNyBA
QCBpbnQgUVdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KCkgY29uc3QKIHFpbnQ2NCBRV2ViU2VjdXJp
dHlPcmlnaW46OmRhdGFiYXNlVXNhZ2UoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2lu
KGQtPm9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnVzYWdlRm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xMzMsNyArMTMzLDcgQEAgcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0
YWJhc2VVc2FnZQogcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VRdW90YSgpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdl
dCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCBx
aW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVF1b3RhCiB2b2lkIFFXZWJTZWN1cml0
eU9yaWdpbjo6c2V0RGF0YWJhc2VRdW90YShxaW50NjQgcXVvdGEpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShkLT5v
cmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRR
dW90YShkLT5vcmlnaW4uZ2V0KCksIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0xODEsNyArMTgx
LDcgQEAgUUxpc3Q8UVdlYlNlY3VyaXR5T3JpZ2luPiBRV2ViU2VjdXJpdHlPcgogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNv
cmVPcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMoY29yZU9y
aWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMoY29yZU9yaWdp
bnMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVPcmlnaW5zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqIHByaXYgPSBuZXcgUVdl
YlNlY3VyaXR5T3JpZ2luUHJpdmF0ZShjb3JlT3JpZ2luc1tpXS5nZXQoKSk7CkBAIC0yMDIsNyAr
MjAyLDcgQEAgUUxpc3Q8UVdlYkRhdGFiYXNlPiBRV2ViU2VjdXJpdHlPcmlnaW46OgogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKIAotICAg
IGlmICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihk
LT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0b3IpKQorICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0
b3IpKQogICAgICAgICByZXR1cm4gZGF0YWJhc2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFFXZWJEYXRhYmFzZVByaXZh
dGUqIHByaXYgPSBuZXcgUVdlYkRhdGFiYXNlUHJpdmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsOSBA
QAogCiAjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKIAotI2luY2x1ZGUgIkFic3Ry
YWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFi
YXNlLmgiCkBAIC0yMzEsNyArMjMwLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBs
eSgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVz
LnZhbHVlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1
ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkKSk7Ci0gICAgICAg
IFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKHZhbHVlKTsKKyAgICAg
ICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUodmFs
dWUpOwogI2VuZGlmCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLApAQCAtMTAwNCw3ICsxMDAz
LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aAogewogICAgIFdl
YkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0
b3J5UGF0aChwYXRoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CiAjZW5kaWYKIH0KIApAQCAtMTAyMCw3ICsx
MDE5LDcgQEAgUVN0cmluZyBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aAogewogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQogICAgIHJldHVybiBRU3Ry
aW5nKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2lu
Y2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgiCkBAIC01MzksOCArNTM5LDggQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6ZXhjZWVkZWREYXRhYmFzZVF1bwogewogICAgIHF1aW50NjQgcXVvdGEgPSBRV2Vi
U2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKCk7CiAKLSAgICBpZiAoIURhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKKyAg
ICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHF1b3RhKTsKIAogICAgIG1fd2ViUGFnZS0+ZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFt
ZUFkYXB0ZXI6OmtpdChmcmFtZSksIGRhdGFiYXNlTmFtZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdl
YmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJEYXRhYmFz
ZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkZXRhaWxzRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVP
cmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdElu
aXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViRGF0YWJhc2VN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlNl
Y3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZSk6Cisg
ICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6cXVvdGEpOgorICAgICAgICAoV2ViU2VjdXJpdHlP
cmlnaW46OnNldFF1b3RhKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAg
PG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlw
ZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0
byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjAy
LDcgKzIwMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KIHsK
ICAgICBpZiAoIXNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKSB7CiAgICAgICAgIHNfc2hhcmVk
V2ViRGF0YWJhc2VNYW5hZ2VyLmFkb3B0UmVmKFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5z
dGFuY2UoKSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudChz
X3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnNldENsaWVudChzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmNvcHlSZWZU
byhyZXN1bHQpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4gb3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5vcmlnaW5zKG9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9y
aWdpbnMob3JpZ2lucyk7CiAgICAgICAgIENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiA+ID4gPiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZh
cmlhbnQ8VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiA+OjphZG9wdChvcmlnaW5zKSk7
CiAKICAgICAqcmVzdWx0ID0gZW51bVZhcmlhbnQubGVha1JlZigpOwpAQCAtMjQ0LDcgKzI0NCw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7Ci0gICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0
eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lcyk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lcyk7CiAKICAgICBDT01QdHI8Q09NRW51
bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVt
VmFyaWFudDxWZWN0b3I8U3RyaW5nPiA+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTI2
OSw3ICsyNjksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAg
ICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0
YWlsc0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRh
dGFiYXNlTmFtZSkpLAorICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFt
ZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpLAogICAgICAgICB3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkp
CkBAIC0yODQsNyArMjg0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFz
ZU1hbgogICAgIGlmICh0aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMwMiw3ICszMDIsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1
cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKHdlYlNl
Y3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtMzI0LDcgKzMyNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VN
YW4KICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmlu
Z0xlbihkYXRhYmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVs
ZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhk
YXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTM4MSw3ICszODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkRhdGFiYXNlTWFuCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgp
LCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSwgcXVvdGEpOwogCiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBXZWJLaXRJbml0aWFsaXpl
V2ViRGF0YWJhc2VzSWZOZWNlcwogICAgICAgICByZXR1cm47CiAKICAgICBXVEY6OlN0cmluZyBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsK
LSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNl
c0RpcmVjdG9yeSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5p
dGlhbGl6ZShkYXRhYmFzZXNEaXJlY3RvcnkpOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDEz
NzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaD4KIAotY2xhc3Mg
V2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIElXZWJEYXRhYmFzZU1hbmFnZXIsIHByaXZhdGUg
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdl
ciA6IHB1YmxpYyBJV2ViRGF0YWJhc2VNYW5hZ2VyLCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkRhdGFiYXNlTWFuYWdlciog
Y3JlYXRlSW5zdGFuY2UoKTsKIApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBvcmlnaW4sCiAgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKTsKIAotICAgIC8vIERhdGFiYXNlVHJhY2tlckNsaWVudAorICAgIC8vIERhdGFi
YXNlTWFuYWdlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRhdGFiYXNlTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
IldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogCiAjaWYgIUVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CkBAIC0xMzQsNyArMTM0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJTZWN1cml0eU9yaQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogCi0gICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3Jp
Z2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKIAog
ICAgIHJldHVybiBTX09LOwogI2Vsc2UKQEAgLTE1MCw3ICsxNTAsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgKnJlc3VsdCA9
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVz
dWx0KTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNl
Y3VyaXR5T3JpCiAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIAogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsK
IAogICAgIHJldHVybiBTX09LOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZp
c2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0FYT2JqZWN0Q2FjaGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBs
Lmg+CkBAIC03Niw2ICs3NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DdXJzb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAg
LTQ4MDQsNyArNDgwNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2UKICAgICBociA9IHByZWZzUHJpdmF0ZS0+ZGF0YWJhc2VzRW5hYmxlZCgmZW5hYmxlZCk7CiAg
ICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBBYnN0cmFjdERhdGFi
YXNlOjpzZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5zZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKICNlbmRpZgogCiAgICAgaHIgPSBwcmVmc1By
aXZhdGUtPmxvY2FsU3RvcmFnZUVuYWJsZWQoJmVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRh
YmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OlNl
dERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6R2V0RGF0YWJh
c2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCk6CisK
IDIwMTItMTEtMjcgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENvbnNvbGlkYXRlIEZyYW1lTG9hZGVyOjpsb2FkKCkgaW50byBvbmUgZnVuY3Rpb24g
dGFraW5nIGEgRnJhbWVMb2FkUmVxdWVzdApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lv
biAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw4ICs3Niw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNlbmRpZgogCiAjaW5jbHVkZSAid3gvd3hwcmVjLmgiCkBAIC0xMTI2LDcgKzExMjUsNyBAQCBi
b29sIFdlYlZpZXc6OlNob3VsZENsb3NlKCkgY29uc3QKIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJh
c2VEaXJlY3RvcnkoY29uc3Qgd3hTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgo
ZGF0YWJhc2VEaXJlY3RvcnkpOwogI2VuZGlmCiB9CiAKQEAgLTExMzQsNyArMTEzMyw3IEBAIHZv
aWQgV2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3RvcnkoY29uc3QKIHd4U3RyaW5nIFdlYlZpZXc6
OkdldERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVj
dG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQogICAgIHJldHVybiB3eEVtcHR5U3Ry
aW5nOwogI2VuZGlmCkBAIC0xMTQ0LDcgKzExNDMsOCBAQCB3eFN0cmluZyBXZWJWaWV3OjpHZXRE
YXRhYmFzZURpcmVjdG9yeSgpCiB2b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6QWJz
dHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKTsKKyAgICBtYW5hZ2VyLnNldElzQXZhaWxhYmxlKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAK
QEAgLTExNTIsNyArMTE1Miw4IEBAIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZChi
b29sIGUKIGJvb2wgV2ViVmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6aXNB
dmFpbGFibGUoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIHJldHVybiBkYk1hbmFnZXIu
aXNBdmFpbGFibGUoKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2
aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudFd4LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjZW5kaWYKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZp
bGVJY29uTG9hZGVyLmgiCkBAIC00MjcsOCArNDI3LDggQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6
ZXhjZWVkZWREYXRhYmFzZVF1bwogICAgIGlmIChXZWJGcmFtZSogd2ViRnJhbWUgPSBtX3dlYlZp
ZXctPkdldE1haW5GcmFtZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gd2ViRnJhbWUt
PkdldEZyYW1lKCkpCiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAg
ICAgICAgICAgICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CisgICAgICAgICAgICAgICAgaWYgKCFEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSkpCisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnNldFF1b3RhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CiB9CiAjZW5k
aWYKIAo=
</data>
<flag name="commit-queue"
          id="195688"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178988</attachid>
            <date>2012-12-12 00:24:13 -0800</date>
            <delta_ts>2013-01-31 17:08:23 -0800</delta_ts>
            <desc>Fix bug in chromium port.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>150656</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6aGFzT3BlbkRhdGFiYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6ZGF0YWJhc2VOYW1lc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpxdW90YUZvck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpjbG9zZURhdGFi
YXNlc0ltbWVkaWF0ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6aW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChEYXRhYmFzZU1hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp+RGF0YWJhc2VNYW5hZ2VyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnNl
dENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
aDoKKyAgICAgICAgKERhdGFiYXNlVHJhY2tlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6Cisg
ICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2Fu
Q2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2Fj
aGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnN0b3ApOgorCiAy
MDEyLTEyLTExICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM3MzMzLCByMTM3MzQ0LCByMTM3MzY0
LCBhbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDYgKzk0NSw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmNwcAogICAg
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAorICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTeW5jLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAog
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOTMsMTMgKzIwOTMsMTUg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIyLDYgKzE0MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxs
YmFjay5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmggXApAQCAtMjk3Nyw2ICsyOTc4LDcgQEAgdXNlPyhQTFVHSU5fQkFDS0VORF9YTElC
KSB7CiBlbmFibGU/KFNRTF9EQVRBQkFTRSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBN
b2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBcCisgICAgICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzY0LDE5ICszNjQsMjAgQEAgX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2CiBfX1pO
N1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJT
aGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291
cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVy
c0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VDb250ZXh0MTZoYXNPcGVuRGF0YWJhc2VzRVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNl
Y3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNGRlbGV0ZURhdGFi
YXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVE
YXRhYmFzZVRyYWNrZXIxNHF1b3RhRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19a
TjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHVzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5
T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2Vy
RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOGRlbGV0ZUFs
bERhdGFiYXNlc0V2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjIyZGF0YWJhc2VOYW1l
c0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5n
RUxtMEVFRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyM2RldGFpbHNGb3JOYW1lQW5k
T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZVRyYWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0
U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyN3Ry
YWNrZXJFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI4c2V0UXVvdGFFUE5TXzE0U2Vj
dXJpdHlPcmlnaW5FeQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBO
U18yMURhdGFiYXNlVHJhY2tlckNsaWVudEUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2Vy
MTRzZXRJc0F2YWlsYWJsZUViCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE2aGFzT3Bl
bkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQorX19aTjdXZWJDb3JlMTVE
YXRhYmFzZU1hbmFnZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43
V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRkZWxldGVEYXRhYmFzZUVQTlNfMTRTZWN1cml0eU9y
aWdpbkVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRxdW90
YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VN
YW5hZ2VyMTR1c2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2ViQ29y
ZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXplRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJD
b3JlMTVEYXRhYmFzZU1hbmFnZXIxOGRlbGV0ZUFsbERhdGFiYXNlc0V2CitfX1pON1dlYkNvcmUx
NURhdGFiYXNlTWFuYWdlcjIyZGF0YWJhc2VOYW1lc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5nRUxtMEVFRQorX19aTjdXZWJDb3JlMTVEYXRh
YmFzZU1hbmFnZXIyM2RldGFpbHNGb3JOYW1lQW5kT3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18x
NFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI3b3JpZ2luc0VS
TjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKK19f
Wk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyN21hbmFnZXJFdgorX19aTjdXZWJDb3JlMTVEYXRh
YmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5FeQorX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUK
IF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTBzZXRGb2N1c2VkRWIKIF9fWk43V2ViQ29y
ZTE1Rm9jdXNDb250cm9sbGVyMTRzZXRGb2N1c2VkTm9kZUVQTlNfNE5vZGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9j
dXNlZEZyYW1lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQpAQCAtNDMxLDcgKzQzMiw2
IEBAIF9fWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlFeGUKIF9fWk43V2ViQ29y
ZTE1dG9ET01TdHJpbmdMaXN0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRQogX19aTjdX
ZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUEt0agogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hh
c2hFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNkFic3RyYWN0RGF0YWJhc2UxNHNldElz
QXZhaWxhYmxlRWIKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdlRm9y
T3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNh
Y2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2Vi
Q29yZTE2RGV2aWNlTW90aW9uRGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKQEAgLTE5
MTcsMTEgKzE5MTcsNiBAQCBfX1pON1dlYkNvcmUxNEljb25Db250cm9sbGVyM3VybEV2CiBfX1pO
N1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNmNhbmNlbEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlOXNldENsaWVudEVQTlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVudEUKIF9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VIYW5kbGVEMUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE2b3Jp
Z2luc0RpZENoYW5nZUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjI1ZGVsZXRlRGF0
YWJhc2VGaWxlSWZFbXB0eUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VU
cmFja2VyMjhyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzRXYKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VUcmFja2VyMzhlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza0RpZEZpbmlzaEV2Ci1f
X1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjQ0ZW1wdHlEYXRhYmFzZUZpbGVzUmVtb3ZhbFRh
c2tXaWxsQmVTY2hlZHVsZWRFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxMmRyYXdC
aWRpVGV4dEVSS05TXzRGb250RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFUE5TXzEw
QmlkaVN0YXR1c0VpCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1ZHJhd0xpbmVGb3JU
ZXh0RVJLTlNfMTBGbG9hdFBvaW50RWZiCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDIy
c2V0RW1vamlEcmF3aW5nRW5hYmxlZEViCkBAIC0xOTYzLDggKzE5NTgsNiBAQCBfX1pON1dlYkNv
cmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjE5Y2xlCiBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNz
dXJlSGFuZGxlcjI1aGFzUmVjZWl2ZWRNZW1vcnlQcmVzc3VyZUV2CiBfX1pON1dlYkNvcmUyMU1l
bW9yeVByZXNzdXJlSGFuZGxlcjI1aW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9ja0VVMTNibG9ja19w
b2ludGVyRnZ2RWIKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMjVzZXRSZWNl
aXZlZE1lbW9yeVByZXNzdXJlRXYKLV9fWk43V2ViQ29yZTIxU1FMaXRlRGF0YWJhc2VUcmFja2Vy
N3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMjFTUUxpdGVEYXRhYmFzZVRyYWNrZXI5c2V0Q2xpZW50
RVBOU18yN1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudEUKIF9fWk43V2ViQ29yZTIxYXBwbGlj
YXRpb25Jc0ZhY2Vib29rRXYKIF9fWk43V2ViQ29yZTIxbmV4dEJyZWFrYWJsZVBvc2l0aW9uRVJO
U18yMUxhenlMaW5lQnJlYWtJdGVyYXRvckVpYgogX19aTjdXZWJDb3JlMjFuZXh0UGFyYWdyYXBo
UG9zaXRpb25FUktOU18xNVZpc2libGVQb3NpdGlvbkVpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTk4Nyw2ICs5ODcsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVN5bmMuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U3luYy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5j
cHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAg
X19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOW9wZW5UcmFjawogX19aTjdXZWJDb3JlMTZT
UUxpdGVGaWxlU3lzdGVtMjhhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoRVJLTjNXVEY2U3Ry
aW5nRVM0XwogX19aTjdXZWJDb3JlMTZTUUxpdGVGaWxlU3lzdGVtMjRlbnN1cmVEYXRhYmFzZUZp
bGVFeGlzdHNFUktOM1dURjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3
dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIx
RGF0YWJhc2VUcmFja2VyQ2xpZW50RQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI5c2V0
Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE0U3RvcmFn
ZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTNTdG9yYWdlVGhyZWFkNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMjNz
ZXRTdG9yYWdlRGlyZWN0b3J5UGF0aEVSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CisKKyNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKQoreworICAg
IHN0YXRpYyBEYXRhYmFzZU1hbmFnZXIqIGRiTWFuYWdlciA9IDA7CisgICAgaWYgKCFkYk1hbmFn
ZXIpCisgICAgICAgIGRiTWFuYWdlciA9IG5ldyBEYXRhYmFzZU1hbmFnZXIoKTsKKworICAgIHJl
dHVybiAqZGJNYW5hZ2VyOworfQorCitEYXRhYmFzZU1hbmFnZXI6OkRhdGFiYXNlTWFuYWdlcigp
Cit7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VQYXRoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIo
ZGF0YWJhc2VQYXRoKTsKK30KKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKK3ZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNsaWVudCk7Cit9CisKK1N0
cmluZyBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7Cit9CisjZW5kaWYKKworYm9vbCBEYXRhYmFz
ZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFzZTo6
aXNBdmFpbGFibGUoKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldElzQXZhaWxhYmxl
KGJvb2wgYXZhaWxhYmxlKQoreworICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxl
KGF2YWlsYWJsZSk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2Vz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIERhdGFiYXNl
Q29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKK30KKwordm9pZCBEYXRhYmFzZU1h
bmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRGF0
YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCit7CisgICAgRGF0YWJhc2VDb250
ZXh0OjpzdG9wRGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7Cit9CisKK1N0cmluZyBE
YXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQoreworICAg
IHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9y
aWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworfQorCisjaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQorYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
Lmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpv
cmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkKK3sKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7Cit9CisKK2Jvb2wgRGF0
YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLCByZXN1bHQpOworfQor
CitEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5h
bWUsIG9yaWdpbik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnVz
YWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3Vuc2ln
bmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1
b3RhRm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90
YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFTaXplKQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbiwgcXVvdGFT
aXplKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCit7
CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7Cit9
CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3Jp
Z2luKG9yaWdpbik7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7
Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVyLCBuYW1lKTsKK30KKyNl
bmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVy
cnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxE
YXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNlTWFuYWdlcl9oCisjZGVm
aW5lIERhdGFiYXNlTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorCisjaW5j
bHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CitjbGFzcyBE
YXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFiYXNlTWFuYWdlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5hZ2VyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RhdGljIERhdGFiYXNlTWFuYWdlciYgbWFuYWdlcigpOworCisg
ICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Kik7CisgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OworICAgIHZvaWQg
c2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKKyAgICBi
b29sIGlzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKKworICAg
IGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgLy8g
V2hlbiB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVwU3luYyB3aWxsIGJlIHNp
Z25hbGxlZC4KKyAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCisgICAgU3RyaW5nIGZ1bGxQYXRoRm9yRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QgPSB0cnVlKTsKKworI2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICBib29s
IGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgdm9pZCBvcmlnaW5zKFZl
Y3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAgYm9vbCBkYXRhYmFz
ZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7
CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdXNhZ2VGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGFGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKworICAgIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmln
aW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMo
KTsKKyAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIGJvb2wgZGVs
ZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOworCisjZWxz
ZSAvLyBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIGNsb3NlRGF0YWJhc2VzSW1tZWRpYXRl
bHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpOwor
I2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCisgICAgdm9pZCBpbnRlcnJ1cHRBbGxEYXRh
YmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworcHJpdmF0
ZToKKyAgICBEYXRhYmFzZU1hbmFnZXIoKTsKKyAgICB+RGF0YWJhc2VNYW5hZ2VyKCkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VNYW5hZ2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGll
bnQuaAkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOjEzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKyNkZWZp
bmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwzMiArMSwyOSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
ICAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCi0jaWZuZGVmIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCi0jZGVmaW5lIERhdGFi
YXNlVHJhY2tlckNsaWVudF9oCisjaWZuZGVmIERhdGFiYXNlTWFuYWdlckNsaWVudF9oCisjZGVm
aW5lIERhdGFiYXNlTWFuYWdlckNsaWVudF9oCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
CkBAIC0zNiw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiAKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudCB7CitjbGFzcyBEYXRhYmFzZU1h
bmFnZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVu
dCgpIHsgfQorICAgIHZpcnR1YWwgfkRhdGFiYXNlTWFuYWdlckNsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7CiB9OwpAQCAtNDcsNCArNDQsNCBA
QCBwdWJsaWM6CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gK
KyNlbmRpZiAvLyBEYXRhYmFzZU1hbmFnZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAkocmV2
aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZURhdGFiYXNlRmlsZQogICAgIHJldHVybiBTUUxpdGVGaWxlU3lzdGVtOjpkZWxl
dGVEYXRhYmFzZUZpbGUoZnVsbFBhdGgpOwogfQogCi12b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
Q2xpZW50KERhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50KQordm9pZCBEYXRhYmFzZVRyYWNr
ZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBtX2Ns
aWVudCA9IGNsaWVudDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24gMTM3NDI0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIHN0cnVjdCBT
ZWN1cml0eU9yaWdpbkhhc2g7CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi1jbGFzcyBEYXRh
YmFzZVRyYWNrZXJDbGllbnQ7CitjbGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQ7CiAKIHN0cnVj
dCBTZWN1cml0eU9yaWdpblRyYWl0czsKICNlbmRpZiAvLyAhUExBVEZPUk0oQ0hST01JVU0pCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKik7CiAgICAgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZVRyYWNrZXJDbGll
bnQqKTsKKyAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKIAogICAg
IC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVhZCBzYWZlIHdpdGggaXRz
IGRhdGEKICAgICB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBEYXRhYmFzZU1hbmFnZXJDbGllbnQqIG1fY2xpZW50
OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRGF0YWJh
c2VEZXRhaWxzPiBQcm9wb3NlZERhdGFiYXNlOwogICAgIEhhc2hTZXQ8UHJvcG9zZWREYXRhYmFz
ZSo+IG1fcHJvcG9zZWREYXRhYmFzZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlz
aW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYg
RGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gK
LQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwotCi1jbGFzcyBE
YXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJh
Y2tlckNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihTZWN1cml0eU9yaWdpbiopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2Rp
ZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
RGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
L1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjA5NSw3ICsyMDk1LDcgQEAKIAogICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbVxcLmNw
cCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlXFwuY3BwJCddLAotICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnRcXC5oJCddLAorICAgICAgICBbJ2V4Y2x1
ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnRcXC5oJCddLAog
ICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJc
XC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdp
blF1b3RhTWFuYWdlclxcLihjcHB8aCkkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkXFwuKGNwcHxoKSQnXSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjUyMDksNiArMjUyMDksMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0
YWJhc2VNYW5hZ2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1
bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMsNiArMzY4Myw4IEBACiAJ
CTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTUxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3QkM2QTI4MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNv
bnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNzE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsK
KwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAw
NUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi87IH07CiAJCTk3
QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLzsgfTsK
QEAgLTM2OTEsNyArMzY5Myw3IEBACiAJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggKi87IH07CiAJ
CTk3QkM2QTMxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUYxNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTk3QkM2QTMyMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRy
YWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlGMTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdCQzZBMzMxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFu
YWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk3QkM2QTM3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjUx
NTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgKi87IH07CiAJCTk3QkM2
QTM4MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY2MTUwNUYwODEwMDFCNzRB
QyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTdCQzZBMzkxNTA1RjA4MTAwMUI3
NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2Fn
ZVJlY29yZC5jcHAgKi87IH07CkBAIC0xMDk5MCw3ICsxMDk5Miw3IEBACiAJCTk3QkM2OUVFMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEYXRhYmFzZVRocmVhZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlFRjE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUcmFja2VyLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlckNsaWVu
dC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2
OUY1MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3Rh
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBPcmlnaW5RdW90YU1h
bmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUY3MTUwNUYwODEwMDFCNzRBQyAv
KiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBPcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL09y
aWdpblVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTc1
LDYgKzE0MTc3LDggQEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1
ZGlvQ29tcGxldGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
T2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0J1ZmZlckNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzIxM0FDMjFEQjAw
QTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXIuY3Bw
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJh
c2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFu
YWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2MEY2NzZFNTcwMDA5Mjg3
MyAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29vcmRpbmF0ZXMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4
NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
MjQ3LDYgKzE4MjUxLDkgQEAKIAkJCQk5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VDb250ZXh0LmNwcCAqLywKIAkJCQk5N0JDNjlFNjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VDb250ZXh0LmggKi8sCiAJCQkJOTdCQzY5RTcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
RGV0YWlscy5oICovLAorCQkJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuY3BwICovLAorCQkJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1h
bmFnZXIuaCAqLywKKwkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50LmggKi8sCiAJCQkJOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5jcHAgKi8sCiAJCQkJOTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3lu
Yy5oICovLAogCQkJCTk3QkM2OUVBMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaWRs
ICovLApAQCAtMTgyNTYsNyArMTgyNjMsNiBAQAogCQkJCTk3QkM2OUVFMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRocmVhZC5oICovLAogCQkJCTk3QkM2OUVGMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVRyYWNrZXIuaCAqLywKLQkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCiAJCQkJQThDQ0JCNDYxNTFGODMxNjAwQUI3Q0U5
IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCAqLywKIAkJCQlBOENDQkI0NzE1MUY4MzE2MDBB
QjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCAqLywKIAkJCQlBOENDQkI0RTE1MUY4MzVB
MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsICovLApAQCAtMjI1NDEsNiArMjI1
NDcsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU0NTZGMTkxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzMTA1QkIxNjc1
MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUMzNzVE
N0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MUFGMTUwMTY1NkYxNTEwMEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIyODk5LDExICsyMjkwNiwxMSBAQAogCQkJCTk3QkM2QTI1MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyODE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyRTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzMDE1MDVGMDgxMDAxQjc0
QUMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTMyMTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3QkM2
QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRhUmVmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFU
cmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjg5ODcsNiArMjg5OTQsNyBAQAogCQkJ
CUQ2NDg5RDI1MTY2RkZDRjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBs
YXRlRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTFCQjE2NkMyRTZD
MDBFNkJGMDIgLyogUGx1Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTQ1
NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFz
ZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgpAQCAtMTUwLDEyICsxNTAsMTIgQEAgYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJTb2NrZXRFbgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQogewotICAgIHJldHVybiBBYnN0cmFj
dERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pc0F2YWlsYWJsZSgpOwogfQogCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gQWJzdHJhY3REYXRhYmFz
ZTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
aXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAg
LTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9u
CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNVbmxvYWRMaXN0ZW5lcjsKICAgICB9
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNP
cGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgeworICAgIGlmIChEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGZyYW1lLT5kb2N1bWVudCgpKSkgewogICAg
ICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBvcGVuIGRhdGFiYXNlIGhhbmRsZXMiKTsKICAgICAg
ICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc0RhdGFiYXNlSGFuZGxlczsKICAgICB9CkBAIC0z
NDUsNyArMzQ1LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaAog
ICAgICAgICAmJiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpIHx8ICghZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYg
IWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
KSkKICAgICAgICAgJiYgKCFkb2N1bWVudC0+ZG9tV2luZG93KCkgfHwgIWRvY3VtZW50LT5kb21X
aW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICAmJiAhRGF0YWJhc2VDb250ZXh0OjpoYXNP
cGVuRGF0YWJhc2VzKGRvY3VtZW50KQorICAgICAgICAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuaGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkKICNlbmRpZgogI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKICAgICAgICAgJiYgIVNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omhhc1NoYXJl
ZFdvcmtlcnMoZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NSW1w
bGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZFRpbWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC00NTAsOCArNDUwLDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcoVW5sb2FkRXZlbgogICAgICAgICBkb2Mt
PnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIERhdGFiYXNlQ29udGV4dCB3YXRj
aCBmb3Igc29tZXRoaW5nIGxpa2UgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCkgcmF0aGVyIHRoYW4g
YmVpbmcgc3BlY2lhbC1jYXNlZCBoZXJlPwotICAgICAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMoZG9jLCAwKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgRGF0YWJhc2VN
YW5hZ2VyIHdhdGNoIGZvciBzb21ldGhpbmcgbGlrZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSBy
YXRoZXIgdGhhbiBiZWluZyBzcGVjaWFsLWNhc2VkIGhlcmU/CisgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMoZG9jLCAwKTsKICNlbmRpZgogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAKLSNp
bmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiQmFySW5mby5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50
LmgiCkBAIC00Niw4ICs0NSw2IEBACiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw2IEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAotI2luY2x1ZGUgIkRhdGFi
YXNlQ29udGV4dC5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC00
Myw4ICs0Miw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlVGFzay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTIzMSw3ICsyMzAsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdG9wIHRo
ZSBkYXRhYmFzZXMgYXMgcGFydCBvZiBzdG9wQWN0aXZlRE9NT2JqZWN0cygpIGJlbG93PwogICAg
ICAgICBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIgY2xlYW51cFN5bmM7Ci0gICAgICAgIERhdGFi
YXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyh3b3JrZXJDb250ZXh0LCAmY2xlYW51cFN5bmMpOwor
ICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zdG9wRGF0YWJhc2VzKHdvcmtlckNv
bnRleHQsICZjbGVhbnVwU3luYyk7CiAjZW5kaWYKIAogICAgICAgICB3b3JrZXJDb250ZXh0LT5z
dG9wQWN0aXZlRE9NT2JqZWN0cygpOwpAQCAtMjY2LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyVGhy
ZWFkOjpzdG9wKCkKICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+c2NoZWR1bGVF
eGVjdXRpb25UZXJtaW5hdGlvbigpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29u
dGV4dChtX3dvcmtlckNvbnRleHQuZ2V0KCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyQ29udGV4dC5n
ZXQoKSk7CiAjZW5kaWYKICAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrKFdvcmtlclRocmVhZFNo
dXRkb3duU3RhcnRUYXNrOjpjcmVhdGUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNp
b24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElz
IGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNl
c0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRh
YmFzZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTIt
MTItMTEgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gRHVwbGljYXRlZCBXZWJQYWdlR3JvdXAgaW5pdGlhbGl6YXRpb24KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvckNob29zZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
Q2hvb3Nlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUljb25Mb2FkZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC01NDksOSArNTQ5LDEwIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXUKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53
ZWJGcmFtZSgpOwogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VO
YW1lLCBvcmlnaW4pOwotICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7Ci0gICAgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4o
b3JpZ2luKTsKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gZGJNYW5hZ2VyLmRl
dGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICB1aW50NjRf
dCBjdXJyZW50UXVvdGEgPSBkYk1hbmFnZXIucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB1
aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UgPSBkYk1hbmFnZXIudXNhZ2VGb3JPcmlnaW4ob3Jp
Z2luKTsKICAgICB1aW50NjRfdCBuZXdRdW90YSA9IDA7CiAgICAgUmVmUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIG5l
d1F1b3RhID0gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkuZGlkRXhjZWVkRGF0YWJh
c2VRdW90YShtX3BhZ2UsIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRl
dGFpbHMuZGlzcGxheU5hbWUoKSwgY3VycmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRl
dGFpbHMuY3VycmVudFVzYWdlKCksIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKQEAgLTU2Miw3
ICs1NjMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1CiAgICAg
ICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OlJl
cGx5KG5ld1F1b3RhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAgICAgfQogCi0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBuZXdRdW90YSk7CisgICAgZGJNYW5h
Z2VyLnNldFF1b3RhKG9yaWdpbiwgbmV3UXVvdGEpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFiYXNlTWFuYWdl
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZURldGFpbHMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUw
LDEyICs1MCwxMiBAQCBXZWJEYXRhYmFzZU1hbmFnZXImIFdlYkRhdGFiYXNlTWFuYWdlcjo6CiAK
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnkpCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihk
YXRhYmFzZURpcmVjdG9yeSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5pdGlh
bGl6ZShkYXRhYmFzZURpcmVjdG9yeSk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGll
bnQodGhpcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0Q2xpZW50KHRoaXMp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQpAQCAtNzEs
MTIgKzcxLDEyIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU8KIHsK
ICAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNh
YmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBi
ZSBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IGFkZGluZyBhIGZ1bmN0aW9uIHRvIERhdGFiYXNlVHJh
Y2tlcgorICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkg
YWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0YWJhc2VNYW5hZ2VyCiAgICAgLy8gdG8gZ2V0IGJvdGgg
dGhlIG9yaWdpbnMgYW5kIHRoZSBWZWN0b3Igb2YgRGF0YWJhc2VEZXRhaWxzIGZvciBlYWNoIG9y
aWdpbiBpbiBvbmUKICAgICAvLyBzaG90LiAgVGhhdCB3b3VsZCBhdm9pZCB0YWtpbmcgdGhlIG51
bWVyb3VzIGxvY2tzIHRoaXMgcmVxdWlyZXMuCiAKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiA+IG9yaWdpbnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lu
cyhvcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5zKG9yaWdp
bnMpOwogCiAgICAgVmVjdG9yPE9yaWdpbkFuZERhdGFiYXNlcz4gb3JpZ2luQW5kRGF0YWJhc2Vz
VmVjdG9yOwogICAgIG9yaWdpbkFuZERhdGFiYXNlc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG9yaWdpbnMuc2l6ZSgpKTsKQEAgLTg1LDEzICs4NSwxMyBAQCB2b2lkIFdlYkRhdGFiYXNl
TWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiAgICAgICAgIE9yaWdpbkFuZERhdGFiYXNlcyBvcmln
aW5BbmREYXRhYmFzZXM7CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKLSAg
ICAgICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3Jp
Z2luKG9yaWdpbnNbaV0uZ2V0KCksIG5hbWVWZWN0b3IpKQorICAgICAgICBpZiAoIURhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQo
KSwgbmFtZVZlY3RvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBWZWN0b3I8
RGF0YWJhc2VEZXRhaWxzPiBkZXRhaWxzVmVjdG9yOwogICAgICAgICBkZXRhaWxzVmVjdG9yLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobmFtZVZlY3Rvci5zaXplKCkpOwogICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IG5hbWVWZWN0b3Iuc2l6ZSgpOyBqKyspIHsKLSAgICAgICAgICAgIERh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2luc1tpXS5nZXQoKSk7CisgICAg
ICAgICAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWVWZWN0b3Jbal0sIG9yaWdpbnNbaV0uZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKGRldGFpbHMubmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMDIsOCArMTAyLDggQEAgdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXI6OmdldERhdGFiYXNlc0J5TwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
b3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW5zW2ldLT5kYXRhYmFz
ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblF1b3RhID0g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQo
KSk7Ci0gICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5Vc2FnZSA9IERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAg
ICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luUXVvdGEgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKKyAgICAgICAgb3JpZ2luQW5k
RGF0YWJhc2VzLm9yaWdpblVzYWdlID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VG
b3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7CiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5k
YXRhYmFzZXMuc3dhcChkZXRhaWxzVmVjdG9yKTsgCiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNl
c1ZlY3Rvci5hcHBlbmQob3JpZ2luQW5kRGF0YWJhc2VzKTsKICAgICB9CkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlT3JpZwogICAgIFdlYlBy
b2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4g
b3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAKICAg
ICBzaXplX3QgbnVtT3JpZ2lucyA9IG9yaWdpbnMuc2l6ZSgpOwogCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlVwogICAgIGlmICghb3Jp
Z2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLmdldCgpLCBkYXRh
YmFzZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0
YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgY29uc3QKQEAg
LTE0NSwxNCArMTQ1LDE0IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFz
ZXMKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdpbi5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdAogewogICAgIFdl
YlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdl
YlByb2Nlc3M6OnNoYXJlZCgpKTsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRl
bGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0
ZUFsbERhdGFiYXNlcygpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFG
b3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpIGNvbnN0CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFn
ZXI6OnNldFF1b3RhRm9yT3JpZwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAK
LSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0KCksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmlnaW4uZ2V0
KCksIHF1b3RhKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLmgJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiQXJndW1l
bnRzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIE1lc3NhZ2VJRDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdl
YkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQg
eworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlckNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViRGF0YWJhc2VNYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyJiBzaGFyZWQoKTsKQEAg
LTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlV2l0aE5hbWVG
b3JPcmlnaW4oY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllcikgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZXNGb3JPcmln
aW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25zdDsKIAotICAgIC8vIFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudAorICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
ckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkZW50aWZpZXIpIE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsMTAgKzgwLDEwIEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJvbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZyYWdt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3MtPnNl
dEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6aW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRLZXko
KSkpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpz
ZXRJc0F2YWlsYWJsZShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmRhdGFiYXNlc0VuYWJsZWRLZXkoKSkpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnNldElzQXZhaWxhYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgpKSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEyLTExICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRl
cm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0xMi0wNSAgSGFsdG9uIEh1byAgPGhhbHRvbi5o
dW9AaW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5pZnkgY29kaW5nIHN0eWxlIGZvciBD
TWFrZSBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBA
CiAJCTRCRjk5RjkxMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RjBBRTA1MEJD
MDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovOyB9OwogCQk1MTFGM0ZENTBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJNTExRjNGRDYwQ0VDQzg4RjAwODUyNTY1IC8qIFdl
YkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1h
bmFnZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyB9
OwotCQk1MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNG
RDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLzsgfTsK
KwkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDMw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oICovOyB9OworCQk1
MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQwQ0VD
Qzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJNTE0
OTRDRDYwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDQwQzdFQkRFMDAw
NDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovOyB9OwogCQk1MTQ5NENENzBDN0VC
REUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8q
IFdlYkljb25EYXRhYmFzZUNsaWVudC5tbSAqLzsgfTsKIAkJNTE0OTREMjQwQzdFQzFCNzAwNDE3
OEM1IC8qIFdlYk5TTm90aWZpY2F0aW9uQ2VudGVyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NEQyMjBDN0VDMUI2MDA0MTc4QzUgLyog
V2ViTlNOb3RpZmljYXRpb25DZW50ZXJFeHRyYXMuaCAqLzsgfTsKQEAgLTQ4OSw4ICs0ODksOCBA
QAogCQk0QkY5OUY4RjBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8q
IFdlYkRhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyUHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFGM0ZEMzBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTNENDIyRTAzNENGNTVBMDBDQTJBQ0QgLyogV2ViUmVzb3VyY2VM
b2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlBMDQyOTM5MkIwMENB
MkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE0NDNGOUIwNDI5
MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwpAQCAtMTA0NiwxMiArMTA0NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1MTFGM0ZEMTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tICovLAorCQkJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaCAqLywKKwkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCTUxQUVERUYwMENFQ0Y0NTcwMDg1NDMyOCAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJJbnRlcm5hbC5oICovLAogCQkJCTUxMUYzRkQyMENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8sCiAJCQkJQTVERUZDMEQxMUQ1
MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJQTVERUZD
MEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAotCQkJ
CTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAq
LywKLQkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50Lm1tICovLAogCQkJCTNBQjAyQUY1MTJDMTMxOUIwMEZCQjY5NCAvKiBXZWJTdG9yYWdlTWFu
YWdlci5tbSAqLywKIAkJCQkzQUUxNUQ0RjEyREJERUQ0MDA5MzIzQzggLyogV2ViU3RvcmFnZU1h
bmFnZXJJbnRlcm5hbC5oICovLAogCQkJCTNBQjAyQUZGMTJDMTMyQjIwMEZCQjY5NCAvKiBXZWJT
dG9yYWdlTWFuYWdlclByaXZhdGUuaCAqLywKQEAgLTE0NDUsMTAgKzE0NDUsMTAgQEAKIAkJCQkw
NjVBRDVBMzBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzOTgxMDE2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJDb3JlU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRh
c2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFB
RURFRjEwQ0VDRjQ1NzAwODU0MzI4IC8qIFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZDMEYxMUQ1MzQzRTAwODg1
MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFG
M0ZENzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5Mzk4MTA0QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU4QTQwOTYwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFT
b3VyY2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEMwODI0QkYwMTAwOERG
MDM4IC8qIFdlYkRhdGFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NjksOCAr
MTg2OSw4IEBACiAJCQkJOTM5ODEwQkYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0
aWNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMkExQTUxMjNCMEIzQzAwOUZFMTJBIC8qIFdl
YkRhc2hib2FyZFJlZ2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMUYzRkQ1MENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTFG
M0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1
IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgx
MEVEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRhU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwRUYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMUIwODI0QkYwMTAwOERGMDM4IC8qIFdl
YkRlZmF1bHRFZGl0aW5nRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3Vs
YXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6
OmRpZENoYW5nZVNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVy
cnk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisKIDIwMTItMTItMTEgIEtpaG9uZyBLd29uICA8
a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmlicmF0aW9uIEFQSTogSURMIHR5
cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDgg
KzM5LDggQEAKICNpbmNsdWRlICJDcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oIgogI2luY2x1ZGUg
IkRPTVN1cHBvcnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgIkRlZmF1bHRUYXBIaWdobGlnaHQuaCIKICNpbmNsdWRlICJE
ZXZpY2VNb3Rpb25DbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25DbGllbnRCbGFja0JlcnJ5LmgiCkBAIC01ODQzLDEzICs1ODQzLDEzIEBAIHZvaWQgV2ViUGFn
ZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFcKICAgICBjb3JlU2V0dGluZ3MtPnNldENvb2tp
ZUVuYWJsZWQod2ViU2V0dGluZ3MtPmFyZUNvb2tpZXNFbmFibGVkKCkpOwogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICAvLyBEYXRhYmFzZVRyYWNrZXIgY2FuIG9ubHkgYmUgaW5pdGlh
bGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QKLSAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5n
ZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNlVHJhY2tlciBoYXMKKyAgICAvLyBEYXRhYmFz
ZU1hbmFnZXIgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QK
KyAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5nZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNl
TWFuYWdlciBoYXMKICAgICAvLyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuCiAgICAgc3RhdGlj
IGJvb2wgZGJpbml0ID0gZmFsc2U7CiAgICAgaWYgKCFkYmluaXQgJiYgIXdlYlNldHRpbmdzLT5k
YXRhYmFzZVBhdGgoKS5lbXB0eSgpKSB7CiAgICAgICAgIGRiaW5pdCA9IHRydWU7Ci0gICAgICAg
IERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIod2ViU2V0dGluZ3MtPmRhdGFiYXNl
UGF0aCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXplKHdlYlNldHRpbmdz
LT5kYXRhYmFzZVBhdGgoKSk7CiAgICAgfQogCiAgICAgLy8gVGhlIGRpcmVjdG9yeSBvZiBjYWNo
ZVN0b3JhZ2UgZm9yIG9uZSBwYWdlIGdyb3VwIGNhbiBvbmx5IGJlIGluaXRpYWxpemVkIG9uY2Uu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMzc0
MjQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNs
dWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgog
I2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1
cHBvcnQuaCIKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJy
eTo6ZXhjZWVkZWREYXQKICAgICB9CiAjZW5kaWYKIAotICAgIERhdGFiYXNlVHJhY2tlciYgdHJh
Y2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpOworICAgIERhdGFiYXNlTWFuYWdlciYg
bWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwogCi0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsVXNhZ2UgPSB0cmFja2VyLnRvdGFsRGF0YWJhc2VVc2FnZSgpOwotICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNhZ2VGb3JPcmlnaW4ob3Jp
Z2luKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2FnZSA9IG1hbmFnZXIudG90YWxE
YXRhYmFzZVVzYWdlKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpblVzYWdlID0gbWFu
YWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSB0cmFja2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7CisgICAg
RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBtYW5hZ2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KG5hbWUsIG9yaWdpbik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGVzdGltYXRlZFNpemUgPSBk
ZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hbWVTdHIgPSBkZXRh
aWxzLmRpc3BsYXlOYW1lKCk7CiAKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIENocm9tZUNsaWVu
dEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhID0g
bV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPmRhdGFiYXNlUXVvdGEob3JpZ2luU3RyLmNoYXJh
Y3RlcnMoKSwgb3JpZ2luU3RyLmxlbmd0aCgpLAogICAgICAgICBuYW1lU3RyLmNoYXJhY3RlcnMo
KSwgbmFtZVN0ci5sZW5ndGgoKSwgdG90YWxVc2FnZSwgb3JpZ2luVXNhZ2UsIGVzdGltYXRlZFNp
emUpOwogCi0gICAgdHJhY2tlci5zZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKKyAgICBtYW5hZ2Vy
LnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTExICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRl
cm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRGF0YWJhc2U6OmNsb3NlRGF0YWJhc2VJbW1lZGlhdGVseSk6CisgICAgICAgICog
c3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVG
ZWF0dXJlczo6ZW5hYmxlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1lRmVh
dHVyZXM6OmlzRGF0YWJhc2VFbmFibGVkKToKKwogMjAxMi0xMi0xMSAgRG9taW5pYyBNYXp6b25p
ICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBWDogTWFrZSBpc0FjdGlvblN1cHBv
cnRlZCBjcm9zcy1wbGF0Zm9ybS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkN1
cnNvci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1l
Q2hvb3Nlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFiYXNl
LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
V2ViRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdlYkRh
dGFiYXNlOjpyZXNldFNwYWNlQXZhaWxhYmxlKGNvCiB2b2lkIFdlYkRhdGFiYXNlOjpjbG9zZURh
dGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBXZWJTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHko
b3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIGRhdGFi
YXNlTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUnVudGltZUZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
UnVudGltZUZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIk1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZShib29s
IGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJh
c2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuc2V0SXNBdmFpbGFibGUoZW5hYmxlKTsKICNlbmRpZgogfQogCiBib29sIFdlYlJ1bnRpbWVG
ZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJu
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDI0
KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAg
ICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29y
aWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToKKyAgICAgICAgKGV3a19zZWN1cml0eV9vcmln
aW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2lu
X3dlYl9kYXRhYmFzZV9xdW90YV9zZXQpOgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93
ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6CisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNlX3BhdGhfc2V0KToKKyAgICAgICAgKiBl
d2svZXdrX3dlYl9kYXRhYmFzZS5jcHA6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2Rpc3Bs
YXlfbmFtZV9nZXQpOgorICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplX2dl
dCk6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dldCk6CisgICAgICAgIChl
d2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVt
b3ZlKToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCk6CisKIDIwMTItMTIt
MTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmli
cmF0aW9uIEFQSTogSURMIHR5cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRh
aWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtNDI1
LDcgKzQyNSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXUKICAg
ICB1aW50NjRfdCBxdW90YTsKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWls
cyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRh
dGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFt
ZSwgb3JpZ2luKTsKICAgICBxdW90YSA9IGV3a192aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3Rh
KG1fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtp
dChmcmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWls
cy5leHBlY3RlZFVzYWdlKCkpOwpAQCAtNDMzLDEwICs0MzMsMTAgQEAgdm9pZCBDaHJvbWVDbGll
bnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIC8qIGlmIGNsaWVudCBkaWQgbm90IHNldCBx
dW90YSwgYW5kIGRhdGFiYXNlIGlzIGJlaW5nIGNyZWF0ZWQgbm93LCB0aGUKICAgICAgKiBkZWZh
dWx0IHF1b3RhIGlzIGFwcGxpZWQKICAgICAgKi8KLSAgICBpZiAoIXF1b3RhICYmICFEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pKQorICAgIGlmICgh
cXVvdGEgJiYgIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9y
aWdpbikpCiAgICAgICAgIHF1b3RhID0gZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0
X3F1b3RhX2dldCgpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEo
b3JpZ2luLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEo
b3JpZ2luLCBxdW90YSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a193ZWJfZGF0YWJhc2UuaCIKQEAgLTY3LDcgKzY3LDcgQEAgdWludDY0X3QgZXdrX3NlY3Vy
aXR5X29yaWdpbl93ZWJfZGF0YWJhcwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChvcmlnaW4sIDApOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5z
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNzgsNyArNzgsNyBAQCB1aW50NjRf
dCBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9y
aWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3
IEBAIHZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXUKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4t
PnNlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVv
dGEpOwogI2VuZGlmCiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBFaW5hX0xpc3QqIGV3a19zZWN1
cml0eV9vcmlnaW5fd2ViX2RhdGFiCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG5hbWVzOwogCi0gICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmln
aW4uZ2V0KCksIG5hbWVzKSkKKyAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQo
KSwgbmFtZXMpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuYW1lcy5zaXplKCk7IGkrKykgewpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19zZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19z
ZXR0aW5ncy5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfc2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVk
ZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0Vm
bC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2UuaCIKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2Nh
bF9zdG9yYWdlX2RhdGFiYXNlCiB2b2lkIGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9z
ZXQoY29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0
aChXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6ZnJv
bVVURjgocGF0aCkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmc193ZWJEYXRhYmFz
ZVBhdGgsIHBhdGgpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3dlYl9kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a193ZWJfZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCiAK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9v
cmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIKQEAgLTQ1
LDcgKzQ1LDcgQEAgY29uc3QgY2hhciogZXdrX3dlYl9kYXRhYmFzZV9kaXNwbGF5X25hbQogICAg
ICAgICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwogCiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBX
ZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmln
aW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2Ut
Pm5hbWUsIG9yaWdpbik7CiAgICAgZGF0YWJhc2UtPmRpc3BsYXlOYW1lID0gZWluYV9zdHJpbmdz
aGFyZV9hZGQoZGV0YWlscy5kaXNwbGF5TmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0
dXJuIGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsKQEAgLTU5LDcgKzU5LDcgQEAgdWludDY0X3QgZXdr
X3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplXwogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0
eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2lu
KGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMu
ZXhwZWN0ZWRVc2FnZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGF0YWJhc2UpOwpAQCAt
NzQsNyArNzQsNyBAQCBjb25zdCBjaGFyKiBld2tfd2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dlCiAg
ICAgICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdU
Rjo6U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxs
UGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXVEY6OlN0
cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhG
b3JEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAgICAgZGF0YWJhc2UtPmZp
bGVuYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQocGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAg
IHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CkBAIC0xMDgsNyArMTA4LDcgQEAgdWludDY0X3Qg
ZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1
cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9
IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWls
cyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFp
bHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CkBA
IC0xMTksNyArMTE5LDcgQEAgdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25z
dAogdm9pZCBld2tfd2ViX2RhdGFiYXNlX3JlbW92ZShFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFz
ZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5n
ZXQoKSwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCks
IGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7
CiAjZW5kaWYKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3Zl
KEV3a19XZWJfRGF0CiB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlX2FsbCh2b2lkKQogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMTItMTEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFs
bHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfd2ViX2RhdGFiYXNlX3VzYWdlKToKKyAgICAgICAgKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZV9xdW90YSk6CisgICAgICAgICh3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3NldF93ZWJfZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfYWxsX3dlYl9kYXRhYmFzZXMpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9k
aXNwbGF5X25hbWUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWRf
c2l6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9zaXplKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbGVuYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJf
ZGF0YWJhc2VfcmVtb3ZlKToKKyAgICAgICAgKHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFz
ZXMpOgorICAgICAgICAod2Via2l0X2dldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgor
ICAgICAgICAod2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191
cGRhdGVfc2V0dGluZ3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlm
eSk6CisKIDIwMTItMTItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEluc3RhbGwgR09iamVjdCBET00gYmluZGluZ3MgaGVhZGVy
cyBpbiBpdHMgb3duIGRpcmVjdG9yeQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpw
cmludChGcmFtZSogZnJhbWUpCiB2b2lkIENocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1
b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgZ3Vp
bnQ2NCBkZWZhdWx0UXVvdGEgPSB3ZWJraXRfZ2V0X2RlZmF1bHRfd2ViX2RhdGFiYXNlX3F1b3Rh
KCk7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7CisgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIGRlZmF1bHRRdW90YSk7CiAKICAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQo
ZnJhbWUpOwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9zZWN1cml0eV9vcmlnaW4od2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEz
NzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAid2Via2l0ZmF2aWNvbmRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFz
ZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29u
RGF0YWJhc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0
YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRp
Y29uZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGljb25kYXRhYmFzZS5o
IgogCi0jaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0c2VjdXJpdHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJr
aXRzZWN1cml0eW9yaWdpbi5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUu
aCIKICNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgpAQCAtMjk4LDcgKzI5OCw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JP
cmlnaW4oY29yZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMzIxLDcgKzMyMSw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfd2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4o
Y29yZU9yaWdpbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnF1b3RhRm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNl
bmRpZgpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRf
d2ViX2RhdGEKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShjb3JlT3JpZ2luLCBxdW90YSk7
CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoY29yZU9y
aWdpbiwgcXVvdGEpOwogI2VuZGlmCiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBHTGlzdCogd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfYWxsX3dlCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKICAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IGRhdGFiYXNlTmFtZXM7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oY29yZU9yaWdpbiwgZGF0YWJhc2VO
YW1lcykpCisgICAgaWYgKCFXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRh
YmFzZU5hbWVzRm9yT3JpZ2luKGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQogICAgICAgICBy
ZXR1cm4gTlVMTDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVz
LnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
ZGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJkYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRGF0YWJh
c2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgpAQCAtMzI3LDcgKzMyNyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFi
YXNlX2dldF9kaXMKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0
YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikp
OworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwg
Y29yZShwcml2LT5vcmlnaW4pKTsKICAgICBXVEY6OlN0cmluZyBkaXNwbGF5TmFtZSA9ICBkZXRh
aWxzLmRpc3BsYXlOYW1lKCk7CiAKICAgICBpZiAoZGlzcGxheU5hbWUuaXNFbXB0eSgpKQpAQCAt
MzU5LDcgKzM1OSw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWQK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRl
KiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNv
cmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5v
cmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAjZWxzZQogICAg
IHJldHVybiAwOwpAQCAtMzgyLDcgKzM4Miw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFz
ZV9nZXRfc2l6ZShXZWIKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2Vi
RGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6
RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdp
bikpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFt
ZSwgY29yZShwcml2LT5vcmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2Uo
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC00MDYsNyArNDA2LDcgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2ZpbAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAg
ICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7CiAg
ICAgV1RGOjpTdHJpbmcgY29yZU5hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJpdi0+bmFt
ZSk7Ci0gICAgV1RGOjpTdHJpbmcgY29yZVBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgY29yZU5h
bWUpOworICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShjb3JlKHByaXYtPm9yaWdpbiksIGNvcmVO
YW1lKTsKIAogICAgIGlmIChjb3JlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiIiOwpA
QCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgd2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUoV2ViS2l0
V2UKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2
YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5u
YW1lKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRh
YmFzZShjb3JlKHByaXYtPm9yaWdpbiksIHByaXYtPm5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTQ0
OSw3ICs0NDksNyBAQCB2b2lkIHdlYmtpdF93ZWJfZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiB2
b2lkIHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMoKQogewogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZv
aWQgd2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcygpCiBjb25zdCBnY2hhciogd2Via2l0
X2dldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgoKQogewogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIFdURjo6U3RyaW5nIHBhdGgg
PSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBh
dGgoKTsKIAogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAt
NDkzLDcgKzQ5Myw3IEBAIHZvaWQgd2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3AK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0g
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KGNvcmVQYXRoKTsKIAogICAgIGdfZnJlZSh3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgp
OwogICAgIHdlYmtpdF9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCA9IGdfc3RyZHVwKGNvcmVQYXRo
LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5j
bHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2lu
Y2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBs
LmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAg
LTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgpAQCAtMzQxMSw3ICsz
NDExLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogICAgIGNv
cmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnNldElzQXZhaWxhYmxlKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTM1MTUsNyArMzUxNSw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3QKICAgICAgICAgc2V0
dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVl
KSk7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50
ZXJuX3N0cmluZygiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIikpIHsKLSAgICAgICAgQWJzdHJhY3RE
YXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKKyAg
ICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZ192YWx1ZV9n
ZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIGlmIChuYW1lID09
IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIG9yaWdpbnNdKToKKyAg
ICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46XSk6CisgICAg
ICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZXRhaWxzRm9yRGF0YWJhc2U6d2l0aE9yaWdpbjpd
KToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZUFsbERhdGFiYXNlc10pOgor
ICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlT3JpZ2luOl0pOgorICAgICAgICAo
LVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAg
ICAgKFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tLgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
OjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAg
KERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERp
ZE1vZGlmeU9yaWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9k
aWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFz
ZVF1b3RhTWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgdXNh
Z2VdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgcXVvdGFdKToKKyAgICAg
ICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XSk6CisgICAgICAgICogU3Rv
cmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTdG9y
YWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlP
cmlnaW4gdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVvdGFdKToKKyAg
ICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gc2V0UXVvdGE6XSk6CisgICAgICAgICogV2ViS2l0
Lm9yZGVyOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZy
YW1lIF9jYWNoZWFiaWxpdHlEaWN0aW9uYXJ5XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTIt
MTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBz
aG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJLaXQub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVy
CShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHdv
cmtpbmcgY29weSkKQEAgLTIyMSw5ICsyMjEsOSBAQCBfaW5pdGlhbGl6ZUxvZ0NoYW5uZWwKICtb
V2ViSGlzdG9yeUl0ZW0gaW5pdGlhbGl6ZV0KICtbV2ViSGlzdG9yeUl0ZW0oV2ViSW50ZXJuYWwp
IGluaXRXaW5kb3dXYXRjaGVySWZOZWNlc3NhcnldCiBfX1ozNldlYktpdEluaXRpYWxpemVEYXRh
YmFzZXNJZk5lY2Vzc2FyeXYKLV9fWk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDMwc2hhcmVk
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50RXYKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVu
dDMwc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RXYKIF9fWjM0V2ViS2l0SW5pdGlhbGl6
ZVN0b3JhZ2VJZk5lY2Vzc2FyeXYKLV9fWk4yM1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50MjlzaGFy
ZWRXZWJTdG9yYWdlVHJhY2tlckNsaWVudEV2CitfX1pOMjNXZWJTdG9yYWdlTWFuYWdlckNsaWVu
dDI5c2hhcmVkV2ViU3RvcmFnZU1hbmFnZXJDbGllbnRFdgogX19aTjIxV2ViUGxhdGZvcm1TdHJh
dGVnaWVzMTBpbml0aWFsaXplRXYKIF9fWk4xNVdlYkNocm9tZUNsaWVudEMxRVA3V2ViVmlldwog
X19aTjIwV2ViQ29udGV4dE1lbnVDbGllbnRDMUVQN1dlYlZpZXcKQEAgLTE5MzUsOCArMTkzNSw4
IEBAIF9fWk4xNVdlYkNocm9tZUNsaWVudDIxZXhjZWVkZWREYXRhYmFzZVEKIC1bV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIgaW5pdFdpdGhPcmlnaW46XQogLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdl
ciBzZXRRdW90YTpdCiAtW1dlYlNlY3VyaXR5T3JpZ2luKFdlYkludGVybmFsKSBfY29yZV0KLV9f
Wk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDIzZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5FUE43
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQy
NWRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VFUE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FUktO
M1dURjZTdHJpbmdFCitfX1pOMjRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQyM2Rpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjI0V2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50MjVkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlRVBON1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNs
aWVudDE3ZGlkTm90QWxsb3dTY3JpcHRFdgogLVtXZWJCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExp
c3RDb3VudF0KIC1bV2ViQmFja0ZvcndhcmRMaXN0IGJhY2tMaXN0Q291bnRdCkBAIC0xOTgwLDcg
KzE5ODAsNyBAQCBfX1pOM1dURjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QCiBfX1pO
M1dURjlIYXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QdHJJMTROU011dGFibGVBcnJheUVF
RU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM1X0VFTlNfN0ludEhhc2hJeUVFTlNfMTRQYWlySGFz
aFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJeEVFTlNCX0lTNF9FRUVFU0NfRTZyZWhhc2hFaQogLVtX
ZWJGcmFtZVZpZXcoV2ViUHJpdmF0ZSkgX2FyZWFdCiArW1dlYldvcmtlcnNQcml2YXRlIHdvcmtl
clRocmVhZENvdW50XQotX19aTjE5RGlkTW9kaWZ5T3JpZ2luRGF0YTIwZGlzcGF0Y2hUb01haW5U
aHJlYWRFUDI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50UE43V2ViQ29yZTE0U2VjdXJpdHlPcmln
aW5FCitfX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMjBkaXNwYXRjaFRvTWFpblRocmVhZEVQMjRX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnRQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkUKIF9fWk4x
OURpZE1vZGlmeU9yaWdpbkRhdGEzNWRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
RVB2CiBfX1pOMTVXZWJDaHJvbWVDbGllbnQyNWVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRFUE43
V2ViQ29yZTdFbGVtZW50RQogLVtXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgLmN4eF9jb25zdHJ1
Y3RdCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlci5tbQkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50LmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbXBvcnQg
IldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFz
ZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtNjIsNyArNjIsNyBAQCArIChXZWJEYXRhYmFzZU1hbmFnZXIgKikgc2hhcmVkV2ViRGF0YWJh
CiAtIChOU0FycmF5ICopb3JpZ2lucwogewogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+ID4gY29yZU9yaWdpbnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lu
cyhjb3JlT3JpZ2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhj
b3JlT3JpZ2lucyk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvcmVPcmlnaW5zLnNpemUoKV07CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAg
LTc3LDcgKzc3LDcgQEAgLSAoTlNBcnJheSAqKW9yaWdpbnMKIC0gKE5TQXJyYXkgKilkYXRhYmFz
ZXNXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIFZlY3RvcjxT
dHJpbmc+IG5hbWVWZWN0b3I7Ci0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
YXRhYmFzZU5hbWVzRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9yKSkKKyAgICBp
ZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oW29y
aWdpbiBfY29yZV0sIG5hbWVWZWN0b3IpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAg
IE5TTXV0YWJsZUFycmF5ICpuYW1lcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6bmFtZVZlY3Rvci5zaXplKCldOwpAQCAtOTIsNyArOTIsNyBAQCAtIChOU0RpY3Rp
b25hcnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TCiB7CiAgICAgc3RhdGljIGlkIGtleXNbM10g
PSB7V2ViRGF0YWJhc2VEaXNwbGF5TmFtZUtleSwgV2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXks
IFdlYkRhdGFiYXNlVXNhZ2VLZXl9OwogICAgIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxz
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0
YWJhc2VJZGVudGlmaWVyLCBbb3JpZ2luIF9jb3JlXSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRl
dGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkYXRhYmFzZUlkZW50aWZpZXIsIFtvcmlnaW4gX2NvcmVdKTsKICAgICBpZiAoZGV0YWlscy5u
YW1lKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIApAQCAtMTA2LDE3
ICsxMDYsMTcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOUwogCiAt
ICh2b2lkKWRlbGV0ZUFsbERhdGFiYXNlcwogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKIH0KIAogLSAo
Qk9PTClkZWxldGVEYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9y
aWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0sIGRhdGFiYXNl
SWRlbnRpZmllcik7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0
ZURhdGFiYXNlKFtvcmlnaW4gX2NvcmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiBAZW5k
CkBAIC0xMzcsMTEgKzEzNywxMyBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5l
Y2Vzc2FyCiAgICAgaWYgKGluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBEYXRh
YmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworCiAg
ICAgLy8gU2V0IHRoZSBkYXRhYmFzZSByb290IHBhdGggaW4gV2ViQ29yZQotICAgIERhdGFiYXNl
VHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VzRGlyZWN0b3J5UGF0aCgpKTsKKyAg
ICBkYk1hbmFnZXIuaW5pdGlhbGl6ZShkYXRhYmFzZXNEaXJlY3RvcnlQYXRoKCkpOwogCi0gICAg
Ly8gU2V0IHRoZSBEYXRhYmFzZVRyYWNrZXJDbGllbnQKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRDbGllbnQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQoKSk7CisgICAgLy8gU2V0IHRoZSBEYXRhYmFzZU1hbmFnZXJDbGll
bnQKKyAgICBkYk1hbmFnZXIuc2V0Q2xpZW50KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hh
cmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkpOwogICAgIAogICAgIGluaXRpYWxpemVkID0g
WUVTOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTM3MzM4KQorKysgU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpIAorCisj
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorCitjbGFzcyBXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3Ry
aW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOworcHJpdmF0ZToKKyAgICBXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQoKTsKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsxLDQxIEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgCiAK
LSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogCi1jbGFzcyBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdl
YkRhdGFiYXNlTWFuYWdlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJD
bGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNo
YXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIAotICAg
IHZpcnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHZpcnR1YWwgfldlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RG
OjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7CiBwcml2YXRlOgotICAgIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCgpOworICAgIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogfTsKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbQkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbToxMzczMzgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCIKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbXBvcnQgIldlYkRh
dGFiYXNlTWFuYWdlclByaXZhdGUuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJu
YWwuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKKyAgICBzdGF0aWMg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCk7CisgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKK30KKworV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQorCitXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQor
CitjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
aWRNb2RpZnlPcmlnaW5EYXRhKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKKyAgICB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQg
PSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkp
OworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRj
aERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGll
bnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKKyAgICAgICAgOiBjbGllbnQo
Y2xpZW50KQorICAgICAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgeworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEaWRN
b2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+
KGNvbnRleHQpOworICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KGluZm8tPm9yaWdpbi5nZXQoKSk7CisgICAgICAgIGRlbGV0ZSBpbmZvOworICAgIH0KKworICAg
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luOworfTsKKwordm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRv
TWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
UmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBb
W1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
b3JpZ2luXSk7CisKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9u
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOworfQorCit2b2lkIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiog
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9N
YWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpv
cmlnaW5dKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBb
W05TRGljdGlvbmFyeSBhbGxvY10gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJ
ZGVudGlmaWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOworICAgIAorICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6
V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJp
dHlPcmlnaW4uZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKK30KKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5tbQkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzEs
MjkgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAg
Ci0jaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKKyNpbXBvcnQgIldlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oIgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtMzgs
MzEgKzM1LDMxIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCkKK1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogewotICAgIHN0YXRp
YyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBz
aGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgcmV0dXJu
IHNoYXJlZENsaWVudDsKIH0KIAotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQoKQogewogfQogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50KCkKIHsKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBj
b250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVk
Q29weSgpKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgRGlkTW9k
aWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQogICAgICAgICA6IGNsaWVudChjbGllbnQpCiAgICAg
ICAgICwgb3JpZ2luKG9yaWdpbikKICAgICB7CkBAIC03NiwxMSArNzMsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgZGVsZXRlIGluZm87CiAgICAgfQogCi0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQ7CisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW47CiB9OwogCi12b2lkIFdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsK
ICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywg
b3JpZ2luKTsKQEAgLTkzLDcgKzkwLDcgQEAgdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
OmRpc3BhdGNoRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwogfQogCi12b2lkIFdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0
eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3ZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewog
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkocmV2aXNp
b24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3Rh
TWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiV2Vi
RGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKIAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRl
cm5hbC5oIgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBA
IC01MCw3ICs1MCw3IEBAIC0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAtICh1bnNpZ25l
ZCBsb25nIGxvbmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVy
biBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29y
ZV0pOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdp
bihbX29yaWdpbiBfY29yZV0pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNTks
NyArNTksNyBAQCAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3Jp
Z2luIF9jb3JlXSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC03MSw3ICs3MSw3
IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWdu
ZWQgbG9uZyBsb25nKXF1b3RhCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0s
IHF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzQyNCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAK
LQotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KLQotY2xhc3MgV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hh
cmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgCi0gICAgdmlydHVhbCB+V2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5
T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6
OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKLXByaXZhdGU6Ci0gICAgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KCk7Ci19OwotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAx
Mzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaW1wb3J0ICJXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNp
bXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKLSNpbXBvcnQgIldlYlNlY3VyaXR5
T3JpZ2luSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsK
LSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci0gICAgcmV0dXJuIHNoYXJlZENsaWVudDsKLX0K
LQotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQot
ewotfQotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQoKQotewotfQotCi1jbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKLSAgICB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRh
dGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCkpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5E
YXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKLSAgICAg
ICAgOiBjbGllbnQoY2xpZW50KQotICAgICAgICAsIG9yaWdpbihvcmlnaW4pCi0gICAgewotICAg
IH0KLQotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
KHZvaWQqIGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5
T3JpZ2luRGF0YSo+KGNvbnRleHQpOwotICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdpbi5nZXQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpbmZvOwot
ICAgIH0KLQotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OwotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOwotfTsKLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17
Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
OjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdp
bihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2Vj
dXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2lu
Tm90aWZpY2F0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwotfQotCi12b2lk
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKLXsK
LSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2lu
KEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1
cml0eU9yaWdpbjpvcmlnaW5dKTsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5m
byhBZG9wdE5TLCBbW05TRGljdGlvbmFyeSBhbGxvY10gCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5n
ICopZGF0YWJhc2VJZGVudGlmaWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOwot
ICAgIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlm
aWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKLX0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbQkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJXZWJRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJh
c2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTYxLDE0ICsxNjEsMTQgQEAgLSAoaWQ8V2ViUXVvdGFN
YW5hZ2VyPilkYXRhYmFzZVF1b3RhTWFuYQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGFyZSBkZXByZWNhdGVkIGFuZCBzaG91bGQgcmVtb3ZlZCBsYXRlci4KIC8vIENsaWVudHMg
c2hvdWxkIGluc3RlYWQgZ2V0IGEgV2ViUXVvdGFNYW5hZ2VyLCBhbmQgcXVlcnkgLyBzZXQgdGhl
IHF1b3RhIHZpYSB0aGUgTWFuYWdlci4KLS8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQgYXMgd2VsbC4KKy8vIE5PVEU6IHRo
ZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQg
YXMgd2VsbC4KIAogQGltcGxlbWVudGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVk
KQogCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdp
bihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRf
Y2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xNzcsNyArMTc3LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiAt
ICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWlu
dGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC0xODYsNyArMTg2LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAtICh2b2lk
KXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKHJlaW50ZXJw
cmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3Jp
Z2luKj4oX3ByaXZhdGUpLCBxdW90YSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9ET01JbXBsZW1lbnRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9EYXRhYmFzZUNvbnRleHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CkBAIC0xMDY5LDcgKzEwNjksNyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX2Nh
Y2hlYWJpbGl0eURpCiAgICAgCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPmRvY3VtZW50KCkpIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
ICAgICBpZiAoRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKKyAg
ICAgICAgaWYgKERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZG9j
dW1lbnQpKQogICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10gZm9yS2V5OldlYkZyYW1lVXNlc0RhdGFiYXNlc107CiAjZW5kaWYKICAgICAg
ICAgaWYgKCFkb2N1bWVudC0+Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDcg
KzExMSw2IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvbi5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNW
YWx1ZVJlZi5oPgotI2ltcG9ydCA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2Fy
ZExpc3RJbXBsLmg+CkBAIC0xMTksNiArMTE4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JN
YWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFn
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9j
dW1lbnRMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTE0
NjgsNyArMTQ2OCw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4K
ICAgICBzZXR0aW5ncy0+c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHBpY3Rv
Z3JhcGhGb250RmFtaWx5XSk7CiAgICAgc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKFtwcmVm
ZXJlbmNlcyBhcmVQbHVnSW5zRW5hYmxlZF0pOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNl
c0VuYWJsZWRdKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJs
ZShbcHJlZmVyZW5jZXMgZGF0YWJhc2VzRW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3Mt
PnNldExvY2FsU3RvcmFnZUVuYWJsZWQoW3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRd
KTsKICAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkXSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkocmV2aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2Vk
IHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFz
ZTo6ZXhwZWN0ZWRTaXplKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6CisgICAgICAg
IChRV2ViRGF0YWJhc2U6OmZpbGVOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVtb3Zl
RGF0YWJhc2UpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMpOgor
ICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3Vy
aXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6
ZGF0YWJhc2VRdW90YSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToKKyAgICAg
ICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHA6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5v
dCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3Iu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQy
NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKICNp
bmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWls
cy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODcsNyArODcsNyBAQCBR
U3RyaW5nIFFXZWJEYXRhYmFzZTo6bmFtZSgpIGNvbnN0CiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6
ZGlzcGxheU5hbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNl
RGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWls
cy5kaXNwbGF5TmFtZSgpOwogI2Vsc2UKICAgICByZXR1cm4gUVN0cmluZygpOwpAQCAtMTAwLDcg
KzEwMCw3IEBAIFFTdHJpbmcgUVdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNvbnMKIHFpbnQ2
NCBRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQo
KSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOwog
ICAgIHJldHVybiBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CkBAIC0xMTMsNyArMTEzLDcgQEAgcWludDY0IFFXZWJEYXRhYmFzZTo6ZXhwZWN0ZWRTaXplKCkg
Y29ucwogcWludDY0IFFXZWJEYXRhYmFzZTo6c2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5n
ZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkp
OwogICAgIHJldHVybiBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKQEAgLTE0OCw3ICsxNDgsNyBAQCBRV2ViRGF0YWJhc2U6OlFXZWJEYXRhYmFzZShRV2ViRGF0
YWJhc2VQCiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmZ1bGxQYXRoRm9yRGF0YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
ZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBRU3Ry
aW5nKCk7CiAjZW5kaWYKQEAgLTE3MSw3ICsxNzEsNyBAQCBRV2ViU2VjdXJpdHlPcmlnaW4gUVdl
YkRhdGFiYXNlOjpvcmlnaW4oCiB2b2lkIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoY29u
c3QgUVdlYkRhdGFiYXNlJiBkYikKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQo
KSwgZGIuZC0+bmFtZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0
YWJhc2UoZGIuZC0+b3JpZ2luLmdldCgpLCBkYi5kLT5uYW1lKTsKICNlbmRpZgogfQogCkBAIC0x
ODUsNyArMTg1LDcgQEAgdm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlKGNvbnN0IAog
dm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFz
ZXMoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJp
dHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1
cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAK
ICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAi
RGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTEyMSw3ICsxMjEsNyBA
QCBpbnQgUVdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KCkgY29uc3QKIHFpbnQ2NCBRV2ViU2VjdXJp
dHlPcmlnaW46OmRhdGFiYXNlVXNhZ2UoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2lu
KGQtPm9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnVzYWdlRm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xMzMsNyArMTMzLDcgQEAgcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0
YWJhc2VVc2FnZQogcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VRdW90YSgpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdl
dCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCBx
aW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVF1b3RhCiB2b2lkIFFXZWJTZWN1cml0
eU9yaWdpbjo6c2V0RGF0YWJhc2VRdW90YShxaW50NjQgcXVvdGEpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShkLT5v
cmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRR
dW90YShkLT5vcmlnaW4uZ2V0KCksIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0xODEsNyArMTgx
LDcgQEAgUUxpc3Q8UVdlYlNlY3VyaXR5T3JpZ2luPiBRV2ViU2VjdXJpdHlPcgogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNv
cmVPcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMoY29yZU9y
aWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMoY29yZU9yaWdp
bnMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVPcmlnaW5zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqIHByaXYgPSBuZXcgUVdl
YlNlY3VyaXR5T3JpZ2luUHJpdmF0ZShjb3JlT3JpZ2luc1tpXS5nZXQoKSk7CkBAIC0yMDIsNyAr
MjAyLDcgQEAgUUxpc3Q8UVdlYkRhdGFiYXNlPiBRV2ViU2VjdXJpdHlPcmlnaW46OgogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3RvcjsKIAotICAg
IGlmICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihk
LT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0b3IpKQorICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0
b3IpKQogICAgICAgICByZXR1cm4gZGF0YWJhc2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFFXZWJEYXRhYmFzZVByaXZh
dGUqIHByaXYgPSBuZXcgUVdlYkRhdGFiYXNlUHJpdmF0ZSgpOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsOSBA
QAogCiAjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKIAotI2luY2x1ZGUgIkFic3Ry
YWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRlICJEYXRh
YmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFi
YXNlLmgiCkBAIC0yMzEsNyArMjMwLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBs
eSgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVz
LnZhbHVlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1
ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkKSk7Ci0gICAgICAg
IFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKHZhbHVlKTsKKyAgICAg
ICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUodmFs
dWUpOwogI2VuZGlmCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLApAQCAtMTAwNCw3ICsxMDAz
LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aAogewogICAgIFdl
YkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQot
ICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0
b3J5UGF0aChwYXRoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CiAjZW5kaWYKIH0KIApAQCAtMTAyMCw3ICsx
MDE5LDcgQEAgUVN0cmluZyBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aAogewogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQogICAgIHJldHVybiBRU3Ry
aW5nKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAj
aW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2lu
Y2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgiCkBAIC01MzksOCArNTM5LDggQEAgdm9pZCBDaHJvbWVD
bGllbnRRdDo6ZXhjZWVkZWREYXRhYmFzZVF1bwogewogICAgIHF1aW50NjQgcXVvdGEgPSBRV2Vi
U2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKCk7CiAKLSAgICBpZiAoIURhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKKyAg
ICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHF1b3RhKTsKIAogICAgIG1fd2ViUGFnZS0+ZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFt
ZUFkYXB0ZXI6OmtpdChmcmFtZSksIGRhdGFiYXNlTmFtZSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdl
YmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJEYXRhYmFz
ZU1hbmFnZXI6OmRhdGFiYXNlc1dpdGhPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5h
Z2VyOjpkZXRhaWxzRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVP
cmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdElu
aXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViRGF0YWJhc2VN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlNl
Y3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZSk6Cisg
ICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6cXVvdGEpOgorICAgICAgICAoV2ViU2VjdXJpdHlP
cmlnaW46OnNldFF1b3RhKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAg
PG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlw
ZXMgc2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0
byBpbnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjAy
LDcgKzIwMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KIHsK
ICAgICBpZiAoIXNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKSB7CiAgICAgICAgIHNfc2hhcmVk
V2ViRGF0YWJhc2VNYW5hZ2VyLmFkb3B0UmVmKFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5z
dGFuY2UoKSk7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudChz
X3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdl
cjo6bWFuYWdlcigpLnNldENsaWVudChzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmNvcHlSZWZU
byhyZXN1bHQpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4gb3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5vcmlnaW5zKG9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9y
aWdpbnMob3JpZ2lucyk7CiAgICAgICAgIENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiA+ID4gPiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZh
cmlhbnQ8VmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiA+OjphZG9wdChvcmlnaW5zKSk7
CiAKICAgICAqcmVzdWx0ID0gZW51bVZhcmlhbnQubGVha1JlZigpOwpAQCAtMjQ0LDcgKzI0NCw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7Ci0gICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0
eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lcyk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lcyk7CiAKICAgICBDT01QdHI8Q09NRW51
bVZhcmlhbnQ8VmVjdG9yPFN0cmluZz4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVt
VmFyaWFudDxWZWN0b3I8U3RyaW5nPiA+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTI2
OSw3ICsyNjksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAg
ICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0
YWlsc0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRh
dGFiYXNlTmFtZSkpLAorICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFt
ZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpLAogICAgICAgICB3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkp
CkBAIC0yODQsNyArMjg0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFz
ZU1hbgogICAgIGlmICh0aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRl
QWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTMwMiw3ICszMDIsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1
cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKHdlYlNl
Y3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtMzI0LDcgKzMyNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VN
YW4KICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmlu
Z0xlbihkYXRhYmFzZU5hbWUpKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVs
ZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhk
YXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTM4MSw3ICszODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkRhdGFiYXNlTWFuCiAgICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgp
LCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcob3JpZ2luKS5nZXQoKSwgcXVvdGEpOwogCiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBXZWJLaXRJbml0aWFsaXpl
V2ViRGF0YWJhc2VzSWZOZWNlcwogICAgICAgICByZXR1cm47CiAKICAgICBXVEY6OlN0cmluZyBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsK
LSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNl
c0RpcmVjdG9yeSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5p
dGlhbGl6ZShkYXRhYmFzZXNEaXJlY3RvcnkpOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDEz
NzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2lu
Y2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaD4KIAotY2xhc3Mg
V2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIElXZWJEYXRhYmFzZU1hbmFnZXIsIHByaXZhdGUg
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdl
ciA6IHB1YmxpYyBJV2ViRGF0YWJhc2VNYW5hZ2VyLCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkRhdGFiYXNlTWFuYWdlciog
Y3JlYXRlSW5zdGFuY2UoKTsKIApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBvcmlnaW4sCiAgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKTsKIAotICAgIC8vIERhdGFiYXNlVHJhY2tlckNsaWVudAorICAgIC8vIERhdGFi
YXNlTWFuYWdlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRhdGFiYXNlTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAJKHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
IldlYktpdERMTC5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogCiAjaWYgIUVOQUJMRShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CkBAIC0xMzQsNyArMTM0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJTZWN1cml0eU9yaQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogCi0gICAgKnJlc3VsdCA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3Jp
Z2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKIAog
ICAgIHJldHVybiBTX09LOwogI2Vsc2UKQEAgLTE1MCw3ICsxNTAsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgKnJlc3VsdCA9
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVz
dWx0KTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNl
Y3VyaXR5T3JpCiAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIAogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsK
IAogICAgIHJldHVybiBTX09LOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZp
c2lvbiAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0FYT2JqZWN0Q2FjaGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBs
Lmg+CkBAIC03Niw2ICs3NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DdXJzb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAg
LTQ4MDQsNyArNDgwNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2UKICAgICBociA9IHByZWZzUHJpdmF0ZS0+ZGF0YWJhc2VzRW5hYmxlZCgmZW5hYmxlZCk7CiAg
ICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBBYnN0cmFjdERhdGFi
YXNlOjpzZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5zZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKICNlbmRpZgogCiAgICAgaHIgPSBwcmVmc1By
aXZhdGUtPmxvY2FsU3RvcmFnZUVuYWJsZWQoJmVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEzNzQyNCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRh
YmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW90
YSk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OlNl
dERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6R2V0RGF0YWJh
c2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCk6CisK
IDIwMTItMTEtMjcgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENvbnNvbGlkYXRlIEZyYW1lTG9hZGVyOjpsb2FkKCkgaW50byBvbmUgZnVuY3Rpb24g
dGFraW5nIGEgRnJhbWVMb2FkUmVxdWVzdApJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lv
biAxMzc0MjQpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw4ICs3Niw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNlbmRpZgogCiAjaW5jbHVkZSAid3gvd3hwcmVjLmgiCkBAIC0xMTI2LDcgKzExMjUsNyBAQCBi
b29sIFdlYlZpZXc6OlNob3VsZENsb3NlKCkgY29uc3QKIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJh
c2VEaXJlY3RvcnkoY29uc3Qgd3hTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgo
ZGF0YWJhc2VEaXJlY3RvcnkpOwogI2VuZGlmCiB9CiAKQEAgLTExMzQsNyArMTEzMyw3IEBAIHZv
aWQgV2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3RvcnkoY29uc3QKIHd4U3RyaW5nIFdlYlZpZXc6
OkdldERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVj
dG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQogICAgIHJldHVybiB3eEVtcHR5U3Ry
aW5nOwogI2VuZGlmCkBAIC0xMTQ0LDcgKzExNDMsOCBAQCB3eFN0cmluZyBXZWJWaWV3OjpHZXRE
YXRhYmFzZURpcmVjdG9yeSgpCiB2b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6QWJz
dHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKTsKKyAgICBtYW5hZ2VyLnNldElzQXZhaWxhYmxlKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAK
QEAgLTExNTIsNyArMTE1Miw4IEBAIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZChi
b29sIGUKIGJvb2wgV2ViVmlldzo6QXJlRGF0YWJhc2VzRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6aXNB
dmFpbGFibGUoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworICAgIHJldHVybiBkYk1hbmFnZXIu
aXNBdmFpbGFibGUoKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2
aXNpb24gMTM3NDI0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudFd4LmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjZW5kaWYKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZp
bGVJY29uTG9hZGVyLmgiCkBAIC00MjcsOCArNDI3LDggQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6
ZXhjZWVkZWREYXRhYmFzZVF1bwogICAgIGlmIChXZWJGcmFtZSogd2ViRnJhbWUgPSBtX3dlYlZp
ZXctPkdldE1haW5GcmFtZSgpKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gd2ViRnJhbWUt
PkdldEZyYW1lKCkpCiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAg
ICAgICAgICAgICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CisgICAgICAgICAgICAgICAgaWYgKCFEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSkpCisgICAgICAgICAgICAgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnNldFF1b3RhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CiB9CiAjZW5k
aWYKIAo=
</data>
<flag name="commit-queue"
          id="195714"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179035</attachid>
            <date>2012-12-12 07:25:02 -0800</date>
            <delta_ts>2012-12-12 09:47:55 -0800</delta_ts>
            <desc>5th time&apos;s the charm: svn up, updated ChangeLog comments.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>152544</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEyLTExICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBp
bnN0ZWFkIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAg
ICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3Ig
dXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6RGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNldENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKERh
dGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6On5EYXRh
YmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXJDbGllbnQ6On5EYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5
bmNFbmFibGVkKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BM
b2FkaW5nKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1dGRv
d25TdGFydFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZDo6c3RvcCk6CisKIDIwMTItMTItMTIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ3Jhc2hdIENsZWFyIGNhY2hlZCBz
dHlsZXNoZWV0IHJ1bGVzIGluIEluc3BlY3RvclN0eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NDUsNiArOTQ1LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCiAgICAg
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUF1dGhvcml6ZXIuY3BwCiAgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZU1hbmFnZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMu
Y3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjA5MywxMyArMjA5MywxNSBAQCB3ZWJjb3Jl
X21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUNvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlRGV0YWlscy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MTMsNiArMTQxMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VBdXRob3JpemVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuaCBcCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAor
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBc
CkBAIC0yOTY4LDYgKzI5NjksNyBAQCB1c2U/KFBMVUdJTl9CQUNLRU5EX1hMSUIpIHsKIGVuYWJs
ZT8oU1FMX0RBVEFCQVNFKSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRhc2suY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsMTkgKzM2
NCwyMCBAQCBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybUMxRXYKIF9fWk43V2ViQ29yZTE1
QXJjaGl2ZVJlc291cmNlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNoYXJlZEJ1ZmZl
ckVFRVJLTlNfNEtVUkxFUktOUzFfNlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNwb25z
ZUUKIF9fWk43V2ViQ29yZTE1RE9NV3JhcHBlcldvcmxkMTNjbGVhcldyYXBwZXJzRXYKIF9fWk43
V2ViQ29yZTE1RE9NV3JhcHBlcldvcmxkRDFFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZUNvbnRl
eHQxNmhhc09wZW5EYXRhYmFzZXNFUE5TXzIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dEUKLV9fWk43
V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTJkZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmln
aW5FCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE0ZGVsZXRlRGF0YWJhc2VFUE5TXzE0
U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJh
Y2tlcjE0cXVvdGFGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUx
NURhdGFiYXNlVHJhY2tlcjE0dXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1f
X1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZT
dHJpbmdFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE4ZGVsZXRlQWxsRGF0YWJhc2Vz
RXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMjJkYXRhYmFzZU5hbWVzRm9yT3JpZ2lu
RVBOU18xNFNlY3VyaXR5T3JpZ2luRVJOM1dURjZWZWN0b3JJTlMzXzZTdHJpbmdFTG0wRUVFCi1f
X1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjIzZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW5FUktO
M1dURjZTdHJpbmdFUE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9y
aWdpbkVFRUxtMEVFRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2Ci1f
X1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjhzZXRRdW90YUVQTlNfMTRTZWN1cml0eU9yaWdp
bkV5Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIxRGF0YWJh
c2VUcmFja2VyQ2xpZW50RQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNHNldElzQXZh
aWxhYmxlRWIKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTZoYXNPcGVuRGF0YWJhc2Vz
RVBOU18yMlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFu
YWdlcjEyZGVsZXRlT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVE
YXRhYmFzZU1hbmFnZXIxNGRlbGV0ZURhdGFiYXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNX
VEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNHF1b3RhRm9yT3JpZ2lu
RVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNHVz
YWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFz
ZU1hbmFnZXIxMGluaXRpYWxpemVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNURhdGFi
YXNlTWFuYWdlcjE4ZGVsZXRlQWxsRGF0YWJhc2VzRXYKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VN
YW5hZ2VyMjJkYXRhYmFzZU5hbWVzRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJOM1dU
RjZWZWN0b3JJTlMzXzZTdHJpbmdFTG0wRUVFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdl
cjIzZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW5FUktOM1dURjZTdHJpbmdFUE5TXzE0U2VjdXJpdHlP
cmlnaW5FCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjdvcmlnaW5zRVJOM1dURjZWZWN0
b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVFRQorX19aTjdXZWJDb3Jl
MTVEYXRhYmFzZU1hbmFnZXI3bWFuYWdlckV2CitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdl
cjhzZXRRdW90YUVQTlNfMTRTZWN1cml0eU9yaWdpbkV5CitfX1pON1dlYkNvcmUxNURhdGFiYXNl
TWFuYWdlcjlzZXRDbGllbnRFUE5TXzIxRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTVGb2N1c0NvbnRyb2xsZXIxMHNldEZvY3VzZWRFYgogX19aTjdXZWJDb3JlMTVGb2N1c0Nv
bnRyb2xsZXIxNHNldEZvY3VzZWROb2RlRVBOU180Tm9kZUVOM1dURjEwUGFzc1JlZlB0cklOU181
RnJhbWVFRUUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTVzZXRGb2N1c2VkRnJhbWVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCkBAIC00MzEsNyArNDMyLDYgQEAgX19aTjdX
ZWJDb3JlMTVzZXRET01FeGNlcHRpb25FUE4zSlNDOUV4ZQogX19aTjdXZWJDb3JlMTV0b0RPTVN0
cmluZ0xpc3RFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxNXZp
c2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVSS04zV1RG
NlN0cmluZ0UKLV9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTE0c2V0SXNBdmFpbGFibGVF
YgogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5T
XzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0
ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZEZXZp
Y2VNb3Rpb25EYXRhMTJBY2NlbGVyYXRpb242Y3JlYXRlRWJkYmRiZApAQCAtMTkxNywxMSArMTkx
Nyw2IEBAIF9fWk43V2ViQ29yZTE0SWNvbkNvbnRyb2xsZXIzdXJsRXYKIF9fWk43V2ViQ29yZTE0
UmVzb3VyY2VIYW5kbGU2Y2FuY2VsRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU5c2V0
Q2xpZW50RVBOU18yMFJlc291cmNlSGFuZGxlQ2xpZW50RQogX19aTjdXZWJDb3JlMTRSZXNvdXJj
ZUhhbmRsZUQxRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMTZvcmlnaW5zRGlkQ2hh
bmdlRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMjVkZWxldGVEYXRhYmFzZUZpbGVJ
ZkVtcHR5RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyOHJl
bW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXNFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNr
ZXIzOGVtcHR5RGF0YWJhc2VGaWxlc1JlbW92YWxUYXNrRGlkRmluaXNoRXYKLV9fWk43V2ViQ29y
ZTE1RGF0YWJhc2VUcmFja2VyNDRlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza1dpbGxCZVNj
aGVkdWxlZEV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEyZHJhd0JpZGlUZXh0RVJL
TlNfNEZvbnRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVQTlNfMTBCaWRpU3RhdHVz
RWkKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3TGluZUZvclRleHRFUktOU18x
MEZsb2F0UG9pbnRFZmIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJzZXRFbW9qaURy
YXdpbmdFbmFibGVkRWIKQEAgLTE5NjMsOCArMTk1OCw2IEBAIF9fWk43V2ViQ29yZTIxTWVtb3J5
UHJlc3N1cmVIYW5kbGVyMTljbGUKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVy
MjVoYXNSZWNlaXZlZE1lbW9yeVByZXNzdXJlRXYKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1
cmVIYW5kbGVyMjVpbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrRVUxM2Jsb2NrX3BvaW50ZXJGdnZF
YgogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXIyNXNldFJlY2VpdmVkTWVtb3J5
UHJlc3N1cmVFdgotX19aTjdXZWJDb3JlMjFTUUxpdGVEYXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2
Ci1fX1pON1dlYkNvcmUyMVNRTGl0ZURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzI3U1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzRmFj
ZWJvb2tFdgogX19aTjdXZWJDb3JlMjFuZXh0QnJlYWthYmxlUG9zaXRpb25FUk5TXzIxTGF6eUxp
bmVCcmVha0l0ZXJhdG9yRWliCiBfX1pON1dlYkNvcmUyMW5leHRQYXJhZ3JhcGhQb3NpdGlvbkVS
S05TXzE1VmlzaWJsZVBvc2l0aW9uRWkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEz
NzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
OTg3LDYgKzk4Nyw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VD
b250ZXh0LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5j
cHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBfX1pON1dlYkNv
cmUxNURhdGFiYXNlVHJhY2tlcjE5b3BlblRyYWNrCiBfX1pON1dlYkNvcmUxNlNRTGl0ZUZpbGVT
eXN0ZW0yOGFwcGVuZERhdGFiYXNlRmlsZU5hbWVUb1BhdGhFUktOM1dURjZTdHJpbmdFUzRfCiBf
X1pON1dlYkNvcmUxNlNRTGl0ZUZpbGVTeXN0ZW0yNGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0c0VS
S04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjd0cmFja2VyRXYK
LV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyOXNldENsaWVudEVQTlNfMjFEYXRhYmFzZVRy
YWNrZXJDbGllbnRFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5T
XzIxRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3
aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxM1N0b3JhZ2VU
aHJlYWQ2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIyM3NldFN0b3JhZ2VE
aXJlY3RvcnlQYXRoRVJLTjNXVEY2U3RyaW5nRQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEYXRh
YmFzZU1hbmFnZXImIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpCit7CisgICAgc3RhdGljIERh
dGFiYXNlTWFuYWdlciogZGJNYW5hZ2VyID0gMDsKKyAgICBpZiAoIWRiTWFuYWdlcikKKyAgICAg
ICAgZGJNYW5hZ2VyID0gbmV3IERhdGFiYXNlTWFuYWdlcigpOworCisgICAgcmV0dXJuICpkYk1h
bmFnZXI7Cit9CisKK0RhdGFiYXNlTWFuYWdlcjo6RGF0YWJhc2VNYW5hZ2VyKCkKK3sKK30KKwor
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBh
dGgpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBh
dGgpOworfQorCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQoY2xpZW50KTsKK30KKworU3RyaW5nIERhdGFi
YXNlTWFuYWdlcjo6ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7Cit9CisK
K3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNl
RGlyZWN0b3J5UGF0aChwYXRoKTsKK30KKyNlbmRpZgorCitib29sIERhdGFiYXNlTWFuYWdlcjo6
aXNBdmFpbGFibGUoKQoreworICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJs
ZSgpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFp
bGFibGUpCit7CisgICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoYXZhaWxhYmxl
KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VDb250ZXh0Ojpo
YXNPcGVuRGF0YWJhc2VzKGNvbnRleHQpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c3Rv
cERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIqIHN5bmNocm9uaXplcikKK3sKKyAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BE
YXRhYmFzZXMoY29udGV4dCwgc3luY2hyb25pemVyKTsKK30KKworU3RyaW5nIERhdGFiYXNlTWFu
YWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCit7CisgICAgcmV0dXJuIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1l
LCBjcmVhdGVJZkRvZXNOb3RFeGlzdCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiti
b29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlG
b3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMoVmVj
dG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KQoreworICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLm9yaWdpbnMocmVzdWx0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFn
ZXI6OmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9y
PFN0cmluZz4mIHJlc3VsdCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4sIHJlc3VsdCk7Cit9CisKK0RhdGFiYXNl
RGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0
cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2lu
KTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmln
aW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9uZyBs
b25nIERhdGFiYXNlTWFuYWdlcjo6cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmln
aW4ob3JpZ2luKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YVNpemUpCit7CisgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YVNpemUpOworfQor
Cit2b2lkIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKK3sKKyAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKK30KKworYm9vbCBE
YXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorewor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2lu
KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKK30KKworI2Vs
c2UgLy8gUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VEYXRh
YmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFi
YXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBM
QVRGT1JNKENIUk9NSVVNKQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0
YWJhc2VzRm9yQ29udGV4dChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoY29udGV4dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgRGF0YWJhc2VNYW5hZ2VyX2gKKyNkZWZpbmUgRGF0YWJh
c2VNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIERhdGFiYXNlVGFz
a1N5bmNocm9uaXplcjsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKworY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEYXRhYmFzZU1hbmFnZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworI2lmICFQTEFURk9STShDSFJP
TUlVTSkKKyAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREYXRhYmFz
ZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKworICAgIGJvb2wgaXNBdmFp
bGFibGUoKTsKKyAgICB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOworCisgICAgYm9vbCBoYXNP
cGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAvLyBXaGVuIHRoZSBk
YXRhYmFzZSBjbGVhbnVwIGlzIGRvbmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgor
ICAgIHZvaWQgc3RvcERhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyKik7CisKKyAgICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCA9IHRydWUpOworCisjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQorICAgIGJvb2wgaGFzRW50cnlG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gPiYgcmVzdWx0KTsKKyAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyAgICBEYXRh
YmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiwgU2VjdXJp
dHlPcmlnaW4qKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOworCisgICAgdm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdpbiosIHVuc2ln
bmVkIGxvbmcgbG9uZyk7CisKKyAgICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIGJv
b2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAgYm9vbCBkZWxldGVEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CisKKyNlbHNlIC8vIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIHZvaWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisjZW5kaWYgLy8g
UExBVEZPUk0oQ0hST01JVU0pCisKKyAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNv
bnRleHQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIERh
dGFiYXNlTWFuYWdlcigpOworICAgIH5EYXRhYmFzZU1hbmFnZXIoKSB7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNl
bmRpZiAvLyBEYXRhYmFzZU1hbmFnZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZp
c2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTM3MzM4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworI2lmbmRlZiBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorI2RlZmluZSBEYXRhYmFz
ZVRyYWNrZXJDbGllbnRfaAorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VjdXJpdHlP
cmlnaW47CisKK2NsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+RGF0YWJhc2VUcmFja2VyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisKKyNlbmRpZiAvLyBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaApJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdl
ckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMy
ICsxLDI5IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
LSNpZm5kZWYgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VUcmFja2Vy
Q2xpZW50X2gKKyNpZm5kZWYgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50X2gKKyNkZWZpbmUgRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50X2gKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKQEAgLTM2LDkg
KzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAot
Y2xhc3MgRGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RGF0YWJhc2VUcmFja2VyQ2xpZW50KCkgeyB9Cisg
ICAgdmlydHVhbCB+RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUpID0gMDsKIH07CkBAIC00Nyw0ICs0NCw0IEBAIHB1YmxpYzoK
IAogI2VuZGlmCiAKLSNlbmRpZiAvLyBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorI2VuZGlmIC8v
IERhdGFiYXNlTWFuYWdlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAxMzc0
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJDaHJvbWUu
aCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFz
ZVRocmVhZC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRl
RGF0YWJhc2VGaWxlCiAgICAgcmV0dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNl
RmlsZShmdWxsUGF0aCk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoRGF0
YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0Q2xp
ZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQogewogICAgIG1fY2xpZW50ID0gY2xp
ZW50OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3Jp
Z2luSGFzaDsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKLWNsYXNzIERhdGFiYXNlVHJhY2tl
ckNsaWVudDsKK2NsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudDsKIAogc3RydWN0IFNlY3VyaXR5
T3JpZ2luVHJhaXRzOwogI2VuZGlmIC8vICFQTEFURk9STShDSFJPTUlVTSkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsK
ICAgICBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAotICAgIHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlVHJhY2tlckNsaWVudCopOworICAg
IHZvaWQgc2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNsaWVudCopOwogCiAgICAgLy8gRnJvbSBh
IHNlY29uZGFyeSB0aHJlYWQsIG11c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQogICAg
IHZvaWQgc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJp
bmcgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGg7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXJDbGllbnQq
IG1fY2xpZW50OworICAgIERhdGFiYXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICB0
eXBlZGVmIHN0ZDo6cGFpcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBEYXRhYmFzZURldGFpbHM+
IFByb3Bvc2VkRGF0YWJhc2U7CiAgICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9w
b3NlZERhdGFiYXNlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaAkocmV2aXNpb24gMTM3NDY0
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2lmbmRlZiBEYXRhYmFzZVRy
YWNrZXJDbGllbnRfaAotI2RlZmluZSBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAotCi0jaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci0KLWNsYXNzIERhdGFiYXNlVHJh
Y2tlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RGF0YWJhc2VUcmFja2VyQ2xpZW50
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5
T3JpZ2luKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpID0gMDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBEYXRhYmFzZVRy
YWNrZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJ
KHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk1LDcgKzIwOTUsNyBAQAogCiAgICAgICAgIFsnZXhj
bHVkZScsICdNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtXFwuY3BwJCddLAogICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2VcXC5jcHAkJ10sCi0gICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlckNsaWVudFxcLmgkJ10sCisgICAgICAgIFsnZXhjbHVkZScsICdNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudFxcLmgkJ10sCiAgICAgICAgIFsn
ZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlclxcLmNwcCQnXSwK
ICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5h
Z2VyXFwuKGNwcHxoKSQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luVXNhZ2VSZWNvcmRcXC4oY3BwfGgpJCddLApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTIwOSw2ICsyNTIwOSwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZU1hbmFn
ZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZU1hbmFnZXIuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0
YWJhc2VcRGF0YWJhc2VTeW5jLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY4Myw2ICszNjgzLDggQEAKIAkJOTdCQzZBMjcx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VDb250ZXh0LmNwcCAqLzsgfTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTI5
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2
MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OworCQlGRTQ1NkYx
OTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyog
RGF0YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5oICovOyB9OwogCQk5N0JDNkEyRDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRhc2suY3BwICovOyB9OwpAQCAtMzY5MSw3
ICszNjkzLDcgQEAKIAkJOTdCQzZBMzAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlF
RTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLzsgfTsKIAkJOTdCQzZBMzEx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdCQzY5RjAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk3QkM2QTMz
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUYxMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdC
QzZBMzcxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlGNTE1MDVGMDgxMDAx
Qjc0QUMgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJOTdCQzZBMzgxNTA1RjA4
MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdp
blF1b3RhTWFuYWdlci5oICovOyB9OwogCQk5N0JDNkEzOTE1MDVGMDgxMDAxQjc0QUMgLyogT3Jp
Z2luVXNhZ2VSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTdCQzY5RjcxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNw
cCAqLzsgfTsKQEAgLTEwOTkwLDcgKzEwOTkyLDcgQEAKIAkJOTdCQzY5RUUxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERhdGFiYXNlVGhyZWFkLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUVGMTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRGF0YWJhc2VUcmFja2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5
RjAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVRyYWNrZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHBhdGgg
PSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNl
TWFuYWdlckNsaWVudC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjUxNTA1RjA4
MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBPcmlnaW5RdW90YU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5N0JDNjlGNjE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9yaWdpblF1b3RhTWFuYWdlci5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjcxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVz
YWdlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9yaWdp
blVzYWdlUmVjb3JkLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNzUsNiArMTQxNzcs
OCBAQAogCQlGREY2QkFGNzEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5
QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyog
SlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODYwRjY3NkU1NzAwMDkyODczIC8qIENvb3Jk
aW5hdGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb29yZGluYXRlcy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nv
b3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29v
cmRpbmF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyNDcsNiArMTgy
NTEsOSBAQAogCQkJCTk3QkM2OUU1MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQu
Y3BwICovLAogCQkJCTk3QkM2OUU2MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQu
aCAqLywKIAkJCQk5N0JDNjlFNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmgg
Ki8sCisJCQkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAg
Ki8sCisJCQkJRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICov
LAorCQkJCTk3QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQu
aCAqLywKIAkJCQk5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCAq
LywKIAkJCQk5N0JDNjlFOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmggKi8sCiAJ
CQkJOTdCQzY5RUExNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5pZGwgKi8sCkBAIC0x
ODI1Niw3ICsxODI2Myw2IEBACiAJCQkJOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlVGhyZWFkLmggKi8sCiAJCQkJOTdCQzY5RUYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
VHJhY2tlci5jcHAgKi8sCiAJCQkJOTdCQzY5RjAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
VHJhY2tlci5oICovLAotCQkJCTk3QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaCAqLywKIAkJCQlBOENDQkI0NjE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2lu
ZG93V2ViRGF0YWJhc2UuY3BwICovLAogCQkJCUE4Q0NCQjQ3MTUxRjgzMTYwMEFCN0NFOSAvKiBE
T01XaW5kb3dXZWJEYXRhYmFzZS5oICovLAogCQkJCUE4Q0NCQjRFMTUxRjgzNUEwMEFCN0NFOSAv
KiBET01XaW5kb3dXZWJEYXRhYmFzZS5pZGwgKi8sCkBAIC0yMjU0MSw2ICsyMjU0Nyw3IEBACiAJ
CQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDMxMDVCQjE2NzUwRjE2MDBEQjJG
QjggLyogTm9kZVRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzM3NUQ3RkUxNjYzOTUx
OTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxQUYxNTAxNjU2
RjE1MTAwQzZENEY3IC8qIEV4Y2x1c2lvblNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAt
MjI4OTksMTEgKzIyOTA2LDExIEBACiAJCQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI5MTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
QkM2QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QkM2QTJFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRh
c2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZVRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTdCQzZBMzMxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMyMjc0NkYwRTgzNjY0NTAwRTdGOTc1IC8qIERhdGFSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4MUFDNTk5OTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRl
bS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODk4Nyw2ICsyODk5NCw3IEBACiAJCQkJRDY0ODlEMjUx
NjZGRkNGMTAwN0MwMzFCIC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlENkY3OTYwRDE2NkZGRUNFMDA3NkREMTggLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxRDU5MUJCMTY2QzJFNkMwMEU2QkYwMiAv
KiBQbHVnSW5PcmlnaW5IYXNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFNDU2RjE4MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlICJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCkBA
IC0xNTAsMTIgKzE1MCwxMiBAQCBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNvY2tl
dEVuCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6b3BlbkRhdGFiYXNlRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6
OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlz
QXZhaWxhYmxlKCk7CiB9CiAKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFi
YXNlU3luY0VuYWJsZWQoKQogewotICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWls
YWJsZSgpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2YWlsYWJs
ZSgpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJ
KHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2lu
Y2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTQyLDcgKzE0
Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24KICAgICAgICAg
cmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1VubG9hZExpc3RlbmVyOwogICAgIH0KICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFz
ZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CisgICAgaWYgKERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgIFBDTE9H
KCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIpOwogICAgICAgICByZWplY3RS
ZWFzb25zIHw9IDEgPDwgSGFzRGF0YWJhc2VIYW5kbGVzOwogICAgIH0KQEAgLTM0NSw3ICszNDUs
NyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYm
ICghZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQogICAgICAg
ICAmJiAoIWRvY3VtZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5o
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgICAgICYmICFEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFz
ZXMoZG9jdW1lbnQpCisgICAgICAgICYmICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNP
cGVuRGF0YWJhc2VzKGRvY3VtZW50KQogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJT
KQogICAgICAgICAmJiAhU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVkV29ya2Vycyhk
b2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMTM3NDY0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTQ1MCw4ICs0NTAsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVuCiAgICAgICAgIGRvYy0+c2V0UmVhZHlT
dGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgRGF0YWJhc2VDb250ZXh0IHdhdGNoIGZvciBzb21l
dGhpbmcgbGlrZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSByYXRoZXIgdGhhbiBiZWluZyBzcGVj
aWFsLWNhc2VkIGhlcmU/Ci0gICAgICAgIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhk
b2MsIDApOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBEYXRhYmFzZU1hbmFnZXIgd2F0
Y2ggZm9yIHNvbWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIHJhdGhlciB0aGFu
IGJlaW5nIHNwZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuc3RvcERhdGFiYXNlcyhkb2MsIDApOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKIAotI2luY2x1ZGUgIkFi
c3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJCYXJJbmZvLmgiCiAjaW5jbHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQuaCIKQEAgLTQ2
LDggKzQ1LDYgQEAKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNsdWRlICJET01XaW5kb3dFeHRl
bnNpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0jaW5jbHVkZSAi
RGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRGV2
aWNlTW90aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTQzLDggKzQyLDgg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VU
YXNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQpAQCAtMjMxLDcgKzIzMCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFiYXNl
cyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAgIERhdGFi
YXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAgICAgRGF0YWJhc2VDb250ZXh0
OjpzdG9wRGF0YWJhc2VzKHdvcmtlckNvbnRleHQsICZjbGVhbnVwU3luYyk7CisgICAgICAgIERh
dGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwgJmNs
ZWFudXBTeW5jKTsKICNlbmRpZgogCiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3RpdmVE
T01PYmplY3RzKCk7CkBAIC0yNjYsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3Ao
KQogICAgICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5zY2hlZHVsZUV4ZWN1dGlvblRl
cm1pbmF0aW9uKCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29y
a2VyQ29udGV4dC5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlu
dGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJDb250ZXh0LmdldCgpKTsKICNl
bmRpZgogICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2soV29ya2VyVGhyZWFkU2h1dGRvd25TdGFy
dFRhc2s6OmNyZWF0ZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NjQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MCBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJh
c2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBhY2Nlc3NpbmcgRGF0YWJhc2VUcmFja2Vy
LCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRpcmVjdGx5
LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAgcmVmYWN0
b3JpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFi
YXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJh
c2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRh
YmFzZXNCeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0
RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0
YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChX
ZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAy
MDEyLTEyLTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM3NDM4LgpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yQ2hvb3Nl
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSWNvbkxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWUuaD4KQEAgLTU0OSw5ICs1NDksMTAgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZy
YW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7
CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpOwogCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZU5hbWUsIG9yaWdp
bik7Ci0gICAgdWludDY0X3QgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKLSAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihvcmlnaW4pOwor
ICAgIERhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBkYk1hbmFnZXIuZGV0YWlsc0Zvck5h
bWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOworICAgIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSA9IGRiTWFuYWdlci5xdW90YUZvck9yaWdpbihvcmlnaW4pOworICAgIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSA9IGRiTWFuYWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogICAg
IHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdl
YlNlY3VyaXR5T3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgbmV3UXVvdGEgPSBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKG1f
cGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFtZSwgZGV0YWlscy5kaXNw
bGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgZGV0YWlscy5jdXJy
ZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwpAQCAtNTYyLDcgKzU2Myw3IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXUKICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6UmVwbHkobmV3UXVv
dGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICB9CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIG5ld1F1b3RhKTsKKyAgICBkYk1hbmFnZXIuc2V0UXVv
dGEob3JpZ2luLCBuZXdRdW90YSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFi
YXNlRGV0YWlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsMTIgKzUwLDEy
IEBAIFdlYkRhdGFiYXNlTWFuYWdlciYgV2ViRGF0YWJhc2VNYW5hZ2VyOjoKIAogdm9pZCBXZWJE
YXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9y
eSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlRGly
ZWN0b3J5KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbml0aWFsaXplKGRhdGFi
YXNlRGlyZWN0b3J5KTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFn
ZXIoKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudCh0aGlzKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRDbGllbnQodGhpcyk7CiB9CiAKIFdl
YkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCkBAIC03MSwxMiArNzEsMTIg
QEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlc0J5TwogewogICAgIFdlYlBy
b2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlvbkRpc2FibGVyKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9y
ZSBlZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0YWJhc2VUcmFja2VyCisgICAg
Ly8gRklYTUU6IFRoaXMgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVudCBieSBhZGRpbmcgYSBm
dW5jdGlvbiB0byBEYXRhYmFzZU1hbmFnZXIKICAgICAvLyB0byBnZXQgYm90aCB0aGUgb3JpZ2lu
cyBhbmQgdGhlIFZlY3RvciBvZiBEYXRhYmFzZURldGFpbHMgZm9yIGVhY2ggb3JpZ2luIGluIG9u
ZQogICAgIC8vIHNob3QuICBUaGF0IHdvdWxkIGF2b2lkIHRha2luZyB0aGUgbnVtZXJvdXMgbG9j
a3MgdGhpcyByZXF1aXJlcy4KIAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4g
b3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAKICAg
ICBWZWN0b3I8T3JpZ2luQW5kRGF0YWJhc2VzPiBvcmlnaW5BbmREYXRhYmFzZXNWZWN0b3I7CiAg
ICAgb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2lu
cy5zaXplKCkpOwpAQCAtODUsMTMgKzg1LDEzIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpn
ZXREYXRhYmFzZXNCeU8KICAgICAgICAgT3JpZ2luQW5kRGF0YWJhc2VzIG9yaWdpbkFuZERhdGFi
YXNlczsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yOwotICAgICAgICBpZiAo
IURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2lu
c1tpXS5nZXQoKSwgbmFtZVZlY3RvcikpCisgICAgICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpLCBuYW1lVmVj
dG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFZlY3RvcjxEYXRhYmFzZURl
dGFpbHM+IGRldGFpbHNWZWN0b3I7CiAgICAgICAgIGRldGFpbHNWZWN0b3IucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShuYW1lVmVjdG9yLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgbmFtZVZlY3Rvci5zaXplKCk7IGorKykgewotICAgICAgICAgICAgRGF0YWJhc2VEZXRh
aWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihuYW1lVmVjdG9yW2pdLCBvcmlnaW5zW2ldLmdldCgpKTsKKyAgICAgICAgICAgIERh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2luc1tpXS5nZXQoKSk7CiAgICAg
ICAgICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0
RGF0YWJhc2VzQnlPCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBvcmlnaW5BbmRE
YXRhYmFzZXMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbnNbaV0tPmRhdGFiYXNlSWRlbnRpZmll
cigpOwotICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luUXVvdGEgPSBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKLSAgICAg
ICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7CisgICAgICAgIG9yaWdpbkFu
ZERhdGFiYXNlcy5vcmlnaW5RdW90YSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3Rh
Rm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMu
b3JpZ2luVXNhZ2UgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihv
cmlnaW5zW2ldLmdldCgpKTsKICAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLmRhdGFiYXNlcy5z
d2FwKGRldGFpbHNWZWN0b3IpOyAKICAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yLmFw
cGVuZChvcmlnaW5BbmREYXRhYmFzZXMpOwogICAgIH0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lk
IFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnCiAgICAgV2ViUHJvY2Vzczo6TG9j
YWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hh
cmVkKCkpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiBvcmlnaW5zOwot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMob3JpZ2lucyk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKIAogICAgIHNpemVfdCBu
dW1PcmlnaW5zID0gb3JpZ2lucy5zaXplKCk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFdl
YkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VXCiAgICAgaWYgKCFvcmlnaW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFi
YXNlKG9yaWdpbi5nZXQoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZXNGb3JP
cmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25zdApAQCAtMTQ1LDE0ICsx
NDUsMTQgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlcwogICAgIGlm
ICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpIGNvbnN0CiB7CiAgICAgV2ViUHJvY2Vzczo6
TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6
c2hhcmVkKCkpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0
YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJh
c2VzKCk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkg
Y29uc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVv
dGFGb3JPcmlnCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbi5nZXQoKSwgcXVvdGEpOworICAg
IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG9yaWdpbi5nZXQoKSwgcXVvdGEp
OwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAko
cmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDcgKzQxLDcgQEAgY2xh
c3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViRGF0YWJhc2VN
YW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7CitjbGFzcyBX
ZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEYXRhYmFzZU1hbmFnZXIpOwogcHVibGlj
OgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXImIHNoYXJlZCgpOwpAQCAtNjUsNyArNjUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VXaXRoTmFtZUZvck9yaWdpbihj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyQ2xpZW50CisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRl
bnRpZmllcikgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwx
MCArODAsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
cmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRh
YmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTIzMDMsNyArMjMwMyw3IEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBzZXR0aW5ncy0+c2V0SW50ZXJhY3Rp
dmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjppbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZEtleSgpKSk7CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxh
YmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGF0YWJhc2Vz
RW5hYmxlZEtleSgpKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFp
bGFibGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkYXRhYmFz
ZXNFbmFibGVkS2V5KCkpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNl
ZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3Rl
YWQgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAg
YW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNv
bWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTItMDUgIEhhbHRvbiBIdW8gIDxoYWx0
b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVuaWZ5IGNvZGluZyBzdHlsZSBm
b3IgQ01ha2UgZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIs
OCBAQAogCQk0QkY5OUY5MTBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJGOTlGOEYwQUUw
NTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSAqLzsgfTsKIAkJNTExRjNGRDUwQ0VD
Qzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQxMENFQ0M4OEYwMDg1MjU2NSAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXIubW0gKi87IH07CiAJCTUxMUYzRkQ2MENFQ0M4OEYwMDg1MjU2NSAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAq
LzsgfTsKLQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gKi87
IH07CisJCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYz
RkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLzsgfTsK
KwkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQ0
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gKi87IH07CiAJ
CTUxNDk0Q0Q2MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0Q0Q0MEM3RUJE
RTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCAqLzsgfTsKIAkJNTE0OTRDRDcw
QzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0Q0Q1MEM3RUJERTAwMDQxNzhD
NSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQubW0gKi87IH07CiAJCTUxNDk0RDI0MEM3RUMxQjcw
MDQxNzhDNSAvKiBXZWJOU05vdGlmaWNhdGlvbkNlbnRlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTREMjIwQzdFQzFCNjAwNDE3OEM1
IC8qIFdlYk5TTm90aWZpY2F0aW9uQ2VudGVyRXh0cmFzLmggKi87IH07CkBAIC00ODksOCArNDg5
LDggQEAKIAkJNEJGOTlGOEYwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYzRkQxMENFQ0M4OEYwMDg1MjU2
NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdl
clByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExRjNGRDMwQ0VDQzg4
RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExRjNGRDQwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzRDQyMkUwMzRDRjU1QTAwQ0EyQUNEIC8qIFdlYlJlc291
cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTQ0M0Y5QTA0MjkzOTJC
MDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlC
MDQyOTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvbGljeURlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKQEAgLTEwNDYsMTIgKzEwNDYsMTIgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFu
YWdlci5tbSAqLywKKwkJCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50LmggKi8sCisJCQkJNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQk1MUFFREVGMDBDRUNGNDU3MDA4NTQzMjgg
LyogV2ViRGF0YWJhc2VNYW5hZ2VySW50ZXJuYWwuaCAqLywKIAkJCQk1MTFGM0ZEMjBDRUNDODhG
MDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oICovLAogCQkJCUE1REVGQzBE
MTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oICovLAogCQkJCUE1
REVGQzBFMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSAqLywK
LQkJCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmggKi8sCi0JCQkJNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbSAqLywKIAkJCQkzQUIwMkFGNTEyQzEzMTlCMDBGQkI2OTQgLyogV2ViU3RvcmFn
ZU1hbmFnZXIubW0gKi8sCiAJCQkJM0FFMTVENEYxMkRCREVENDAwOTMyM0M4IC8qIFdlYlN0b3Jh
Z2VNYW5hZ2VySW50ZXJuYWwuaCAqLywKIAkJCQkzQUIwMkFGRjEyQzEzMkIyMDBGQkI2OTQgLyog
V2ViU3RvcmFnZU1hbmFnZXJQcml2YXRlLmggKi8sCkBAIC0xNDQ1LDEwICsxNDQ1LDEwIEBACiAJ
CQkJMDY1QUQ1QTMwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5Mzk4MTAxNjA4MjRCRjAxMDA4REYwMzggLyogV2ViQ29yZVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTJBMUE0MTIzQjBCM0MwMDlGRTEyQSAvKiBX
ZWJEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMUYzRkQ3MENFQ0M4OEYw
MDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQUVERUYxMENFQ0Y0NTcwMDg1NDMyOCAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjNGRDYwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1REVGQzBGMTFENTM0M0Uw
MDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRhdGFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OEE0MDk2MEExNDg1M0IwMDVFNjk4NyAvKiBXZWJE
YXRhU291cmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDRDMDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJEYXRhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODY5
LDggKzE4NjksOCBAQAogCQkJCTkzOTgxMEJGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJDb3JlU3Rh
dGlzdGljcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTJBMUE1MTIzQjBCM0MwMDlGRTEyQSAv
KiBXZWJEYXNoYm9hcmRSZWdpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTFGM0ZENTBDRUND
ODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUE1REVGQzEwMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFz
ZVF1b3RhTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxMUYzRkQ4MENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
Mzk4MTBFRDA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTgxMEVGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0Q29udGV4dE1lbnVE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTFCMDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJEZWZhdWx0RWRpdGluZ0RlbGVnYXRlLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNh
cHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFn
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3
NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3Ry
YWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMg
aXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3RvcmluZy4K
KworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisKIDIwMTItMTIt
MTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmli
cmF0aW9uIEFQSTogSURMIHR5cGUgZG9lc24ndCBtYXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEz
NzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRlICJDcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIkRPTVN1cHBvcnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlU3luYy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRlZmF1bHRUYXBIaWdobGln
aHQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRCbGFja0JlcnJ5LmgiCkBAIC01ODQzLDEzICs1ODQz
LDEzIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFcKICAgICBjb3Jl
U2V0dGluZ3MtPnNldENvb2tpZUVuYWJsZWQod2ViU2V0dGluZ3MtPmFyZUNvb2tpZXNFbmFibGVk
KCkpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAvLyBEYXRhYmFzZVRyYWNrZXIg
Y2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QKLSAgICAvLyBt
YWtlIHNlbnNlIHRvIGNoYW5nZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNlVHJhY2tlciBo
YXMKKyAgICAvLyBEYXRhYmFzZU1hbmFnZXIgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgZm9yIG9u
Y2UsIHNvIGl0IGRvZXNuJ3QKKyAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5nZSBkYXRhYmFzZSBw
YXRoIGFmdGVyIERhdGFiYXNlTWFuYWdlciBoYXMKICAgICAvLyBhbHJlYWR5IGJlZW4gaW5pdGlh
bGl6ZWQuCiAgICAgc3RhdGljIGJvb2wgZGJpbml0ID0gZmFsc2U7CiAgICAgaWYgKCFkYmluaXQg
JiYgIXdlYlNldHRpbmdzLT5kYXRhYmFzZVBhdGgoKS5lbXB0eSgpKSB7CiAgICAgICAgIGRiaW5p
dCA9IHRydWU7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIod2Vi
U2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjppbml0
aWFsaXplKHdlYlNldHRpbmdzLT5kYXRhYmFzZVBhdGgoKSk7CiAgICAgfQogCiAgICAgLy8gVGhl
IGRpcmVjdG9yeSBvZiBjYWNoZVN0b3JhZ2UgZm9yIG9uZSBwYWdlIGdyb3VwIGNhbiBvbmx5IGJl
IGluaXRpYWxpemVkIG9uY2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnku
Y3BwCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJC
YWNraW5nU3RvcmVfcC5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIKICNpbmNsdWRl
ICJEdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgQ2hy
b21lQ2xpZW50QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXQKICAgICB9CiAjZW5kaWYKIAotICAgIERh
dGFiYXNlVHJhY2tlciYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpOworICAg
IERhdGFiYXNlTWFuYWdlciYgbWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOwog
Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsVXNhZ2UgPSB0cmFja2VyLnRvdGFsRGF0YWJh
c2VVc2FnZSgpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5Vc2FnZSA9IHRyYWNrZXIu
dXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2Fn
ZSA9IG1hbmFnZXIudG90YWxEYXRhYmFzZVVzYWdlKCk7CisgICAgdW5zaWduZWQgbG9uZyBsb25n
IG9yaWdpblVzYWdlID0gbWFuYWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwogCi0gICAgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMgPSB0cmFja2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5h
bWUsIG9yaWdpbik7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBtYW5hZ2VyLmRldGFp
bHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25n
IGVzdGltYXRlZFNpemUgPSBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICAgICBjb25zdCBTdHJp
bmcmIG5hbWVTdHIgPSBkZXRhaWxzLmRpc3BsYXlOYW1lKCk7CiAKQEAgLTUxMCw3ICs1MTAsNyBA
QCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIHF1b3RhID0gbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPmRhdGFiYXNlUXVv
dGEob3JpZ2luU3RyLmNoYXJhY3RlcnMoKSwgb3JpZ2luU3RyLmxlbmd0aCgpLAogICAgICAgICBu
YW1lU3RyLmNoYXJhY3RlcnMoKSwgbmFtZVN0ci5sZW5ndGgoKSwgdG90YWxVc2FnZSwgb3JpZ2lu
VXNhZ2UsIGVzdGltYXRlZFNpemUpOwogCi0gICAgdHJhY2tlci5zZXRRdW90YShvcmlnaW4sIHF1
b3RhKTsKKyAgICBtYW5hZ2VyLnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIx
IEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFz
ZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIs
IEFic3RyYWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHku
IFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3Rv
cmluZy4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZTo6Y2xvc2VE
YXRhYmFzZUltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBzcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQp
OgorCiAyMDEyLTEyLTEyICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgog
CiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hhbmdlIHRoZSBkYXRhIGNoYW5uZWwgZGVzY3Jp
cHRvciBwYXR0ZXJuIHRvIGEgaGFuZGxlciBwYXR0ZXJuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTM3NDY0KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNlbmRpZgogI2luY2x1ZGUgIkNvbnNvbGUuaCIK
ICNpbmNsdWRlICJDdXJzb3IuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJEYXRlVGltZUNob29zZXIuaCIKICNpbmNsdWRlICJEYXRlVGltZUNob29zZXJJbXBsLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIldlYkRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNl
LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUXVvdGFUcmFja2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU9ic2VydmVyLmgiCkBAIC0xMjMsNyArMTIzLDcg
QEAgdm9pZCBXZWJEYXRhYmFzZTo6cmVzZXRTcGFjZUF2YWlsYWJsZShjbwogdm9pZCBXZWJEYXRh
YmFzZTo6Y2xvc2VEYXRhYmFzZUltbWVkaWF0ZWx5KGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgV2ViU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNl
c0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSk7CisgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVu
dGlmaWVyLCBkYXRhYmFzZU5hbWUpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAkocmV2aXNpb24gMTM3
NDY0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRh
YmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIK
ICNpbmNsdWRlICJNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgiCkBAIC00NSwxNCArNDUs
MTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxl
RGF0YWJhc2UoYm9vbCBlbmFibGUpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBB
YnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShlbmFibGUpOworICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CiAjZW5kaWYKIH0KIAogYm9v
bCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzRGF0YWJhc2VFbmFibGVkKCkKIHsKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgp
OworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2YWlsYWJsZSgpOwog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJh
c2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIGFjY2Vzc2lu
ZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRhYmFz
ZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0
MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3Bw
OgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfdXNhZ2VfZ2V0KToK
KyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX2dldCk6Cisg
ICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdW90YV9zZXQpOgorICAg
ICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfZ2V0X2FsbCk6CisgICAgICAg
ICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgIChld2tfc2V0dGluZ3Nfd2ViX2RhdGFi
YXNlX3BhdGhfc2V0KToKKyAgICAgICAgKiBld2svZXdrX3dlYl9kYXRhYmFzZS5jcHA6CisgICAg
ICAgIChld2tfd2ViX2RhdGFiYXNlX2Rpc3BsYXlfbmFtZV9nZXQpOgorICAgICAgICAoZXdrX3dl
Yl9kYXRhYmFzZV9leHBlY3RlZF9zaXplX2dldCk6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNl
X2ZpbGVuYW1lX2dldCk6CisgICAgICAgIChld2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KToKKyAg
ICAgICAgKGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJh
c2VfcmVtb3ZlX2FsbCk6CisKIDIwMTItMTItMTEgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgVmlicmF0aW9uIEFQSTogSURMIHR5cGUgZG9lc24ndCBt
YXRjaCBpbXBsZW1lbnRhdGlvbiB0eXBlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEzNzQ2NCkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50
RWZsOjpleGNlZWRlZERhdGFiYXNlUXUKICAgICB1aW50NjRfdCBxdW90YTsKICAgICBTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAK
LSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwgb3JpZ2luKTsKKyAgICBEYXRh
YmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNG
b3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwgb3JpZ2luKTsKICAgICBxdW90YSA9IGV3a192
aWV3X2V4Y2VlZGVkX2RhdGFiYXNlX3F1b3RhKG1fdmlldywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtpdChmcmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCku
ZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0
YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwpAQCAtNDMzLDEw
ICs0MzMsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAg
IC8qIGlmIGNsaWVudCBkaWQgbm90IHNldCBxdW90YSwgYW5kIGRhdGFiYXNlIGlzIGJlaW5nIGNy
ZWF0ZWQgbm93LCB0aGUKICAgICAgKiBkZWZhdWx0IHF1b3RhIGlzIGFwcGxpZWQKICAgICAgKi8K
LSAgICBpZiAoIXF1b3RhICYmICFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZv
ck9yaWdpbihvcmlnaW4pKQorICAgIGlmICghcXVvdGEgJiYgIURhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbikpCiAgICAgICAgIHF1b3RhID0gZXdrX3Nl
dHRpbmdzX3dlYl9kYXRhYmFzZV9kZWZhdWx0X3F1b3RhX2dldCgpOwogCi0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YSk7CiB9CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfb3JpZ2luLmNwcAko
cmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9v
cmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9v
cmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a193ZWJfZGF0YWJhc2UuaCIKQEAgLTY3LDcg
KzY3LDcgQEAgdWludDY0X3QgZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhcwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvcmlnaW4sIDApOwogCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9y
aWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRp
ZgpAQCAtNzgsNyArNzgsNyBAQCB1aW50NjRfdCBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRh
YmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgp
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFG
b3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVy
biAwOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgZXdrX3NlY3VyaXR5X29yaWdpbl93
ZWJfZGF0YWJhc2VfcXUKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvcmlnaW4pOwog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7
CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2lu
LT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOwogI2VuZGlmCiB9CiAKQEAgLTExMyw3ICsx
MTMsNyBAQCBFaW5hX0xpc3QqIGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG5hbWVzOwogCi0gICAg
aWYgKCFXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9y
T3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIG5hbWVzKSkKKyAgICBpZiAoIVdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4o
b3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgbmFtZXMpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lcy5zaXplKCk7IGkrKykgewpJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJKHJldmlzaW9uIDEzNzQ2NCkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIK
ICNpbmNsdWRlICJDYWlyb1V0aWxpdGllc0VmbC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNs
dWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKQEAgLTEzNiw3ICsxMzYs
NyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlCiB2b2lkIGV3a19z
ZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0aF9zZXQoY29uc3QgY2hhciogcGF0aCkKIHsKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkp
OworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGly
ZWN0b3J5UGF0aChXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGVpbmFfc3RyaW5n
c2hhcmVfcmVwbGFjZSgmc193ZWJEYXRhYmFzZVBhdGgsIHBhdGgpOwogI2VuZGlmCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193ZWJfZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAx
Mzc0NjQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJld2tfd2ViX2RhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKICNpbmNsdWRlICJld2tfc2VjdXJp
dHlfb3JpZ2luX3ByaXZhdGUuaCIKQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgY2hhciogZXdrX3dl
Yl9kYXRhYmFzZV9kaXNwbGF5X25hbQogICAgICAgICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlO
YW1lOwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5z
ZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWls
cyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0
YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CiAgICAgZGF0YWJhc2Ut
PmRpc3BsYXlOYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoZGV0YWlscy5kaXNwbGF5TmFtZSgp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGRhdGFiYXNlLT5kaXNwbGF5TmFtZTsKQEAg
LTU5LDcgKzU5LDcgQEAgdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9leHBlY3RlZF9zaXplXwog
ewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3JlOjpE
YXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOworICAg
IFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9y
aWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZGF0YWJhc2UpOwpAQCAtNzQsNyArNzQsNyBAQCBjb25zdCBjaGFyKiBld2tf
d2ViX2RhdGFiYXNlX2ZpbGVuYW1lX2dlCiAgICAgICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5h
bWU7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNl
Y3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdURjo6U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgZGF0YWJh
c2UtPmNvcmVOYW1lKTsKKyAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIGRhdGFiYXNlLT5j
b3JlTmFtZSk7CiAgICAgZGF0YWJhc2UtPmZpbGVuYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQo
cGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBkYXRhYmFzZS0+ZmlsZW5hbWU7CkBA
IC0xMDgsNyArMTA4LDcgQEAgdWludDY0X3QgZXdrX3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25z
dAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qIG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKTsKLSAgICBXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlLT5uYW1lLCBvcmlnaW4pOwor
ICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUs
IG9yaWdpbik7CiAgICAgcmV0dXJuIGRldGFpbHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CkBAIC0xMTksNyArMTE5LDcgQEAgdWludDY0X3QgZXdr
X3dlYl9kYXRhYmFzZV9zaXplX2dldChjb25zdAogdm9pZCBld2tfd2ViX2RhdGFiYXNlX3JlbW92
ZShFd2tfV2ViX0RhdGFiYXNlKiBkYXRhYmFzZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNl
KGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKKyAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShkYXRh
YmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlLT5jb3JlTmFtZSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CiAjZW5kaWYKQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3a19XZWJfRGF0CiB2b2lkIGV3a193ZWJfZGF0
YWJhc2VfcmVtb3ZlX2FsbCh2b2lkKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7
CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJh
c2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDY0
KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzYgQEAKKzIwMTItMTItMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgYWNjZXNzaW5nIERhdGFiYXNlVHJh
Y2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJl
Y3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJl
ZmFjdG9yaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEp
OgorICAgICAgICAqIHdlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRz
ZWN1cml0eW9yaWdpbi5jcHA6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF93
ZWJfZGF0YWJhc2VfdXNhZ2UpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
d2ViX2RhdGFiYXNlX3F1b3RhKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fc2V0
X3dlYl9kYXRhYmFzZV9xdW90YSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9hbGxfd2ViX2RhdGFiYXNlcyk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2Rpc3BsYXlfbmFtZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9leHBlY3RlZF9zaXplKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X3NpemUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRh
YmFzZV9nZXRfZmlsZW5hbWUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUp
OgorICAgICAgICAod2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcyk6CisgICAgICAgICh3
ZWJraXRfZ2V0X3dlYl9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCk6CisgICAgICAgICh3ZWJraXRf
c2V0X3dlYl9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0xMi0x
MiAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4KIAogICAgICAgICBbR1RLXVtBQ10g
R3JhcGhpY3NMYXllcnMgYXJlIG5vdCBzaG93biBvbiB0aGUgdmlld3BvcnQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIu
aCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTgxMiw3ICs4MTIsNyBA
QCB2b2lkIENocm9tZUNsaWVudDo6cHJpbnQoRnJhbWUqIGZyYW1lKQogdm9pZCBDaHJvbWVDbGll
bnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lKQogewogICAgIGd1aW50NjQgZGVmYXVsdFF1b3RhID0gd2Via2l0X2dldF9kZWZh
dWx0X3dlYl9kYXRhYmFzZV9xdW90YSgpOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNldFF1b3RhKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVv
dGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBkZWZhdWx0UXVvdGEpOwogCiAgICAgV2ViS2l0V2Vi
RnJhbWUqIHdlYkZyYW1lID0ga2l0KGZyYW1lKTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiog
b3JpZ2luID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfc2VjdXJpdHlfb3JpZ2luKHdlYkZyYW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0
YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGZhdmljb25kYXRhYmFzZS5o
IgogCi0jaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdka0NhaXJvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NDY0KQor
KysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJ3ZWJraXRpY29uZGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgpJbmRleDogU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwCShyZXZp
c2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c2VjdXJpdHlv
cmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW4uaCIKIAotI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUg
IndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5w
cml2YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTI5OCw3ICsyOTgsNyBA
QCBndWludDY0IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kCiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0g
Y29yZShzZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKGNvcmVPcmlnaW4pOworICAgIHJldHVybiBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihjb3JlT3JpZ2lu
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTMyMSw3ICszMjEsNyBAQCBndWlu
dDY0IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kCiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShz
ZWN1cml0eU9yaWdpbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnF1b3RhRm9yT3JpZ2luKGNvcmVPcmlnaW4pOworICAgIHJldHVybiBXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihjb3JlT3JpZ2luKTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fc2V0X3dlYl9kYXRhCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShzZWN1cml0
eU9yaWdpbik7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVv
dGEoY29yZU9yaWdpbiwgcXVvdGEpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnNldFF1b3RhKGNvcmVPcmlnaW4sIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0zNjYs
NyArMzY2LDcgQEAgR0xpc3QqIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2FsbF93ZQogICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luID0gY29yZShzZWN1cml0eU9yaWdp
bik7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBkYXRhYmFzZU5hbWVzOwogCi0gICAgaWYgKCFX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2lu
KGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQorICAgIGlmICghV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihjb3JlT3JpZ2luLCBkYXRh
YmFzZU5hbWVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGF0YWJhc2VOYW1lcy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMzc0NjQp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAid2Via2l0d2ViZGF0YWJhc2Uu
aCIKIAogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIndlYmtpdGds
b2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KQEAgLTMyNyw3ICszMjcsNyBAQCBjb25zdCBn
Y2hhciogd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZGlzCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5w
cml2OwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFt
ZSwgY29yZShwcml2LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0
YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgV1RGOjpTdHJp
bmcgZGlzcGxheU5hbWUgPSAgZGV0YWlscy5kaXNwbGF5TmFtZSgpOwogCiAgICAgaWYgKGRpc3Bs
YXlOYW1lLmlzRW1wdHkoKSkKQEAgLTM1OSw3ICszNTksNyBAQCBndWludDY0IHdlYmtpdF93ZWJf
ZGF0YWJhc2VfZ2V0X2V4cGVjdGVkCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdl
YktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5wcml2OwotICAgIFdl
YkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2
LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKHBy
aXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgcmV0dXJuIGRldGFpbHMuZXhwZWN0
ZWRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTM4Miw3ICszODIsNyBAQCBndWlu
dDY0IHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X3NpemUoV2ViCiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNl
LT5wcml2OwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+
bmFtZSwgY29yZShwcml2LT5vcmlnaW4pKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CiAgICAgcmV0dXJu
IGRldGFpbHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAtNDA2LDcg
KzQwNiw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9maWwKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9
IHdlYkRhdGFiYXNlLT5wcml2OwogICAgIFdURjo6U3RyaW5nIGNvcmVOYW1lID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHByaXYtPm5hbWUpOwotICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShjb3Jl
KHByaXYtPm9yaWdpbiksIGNvcmVOYW1lKTsKKyAgICBXVEY6OlN0cmluZyBjb3JlUGF0aCA9IFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoY29y
ZShwcml2LT5vcmlnaW4pLCBjb3JlTmFtZSk7CiAKICAgICBpZiAoY29yZVBhdGguaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4iIjsKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIHdlYmtpdF93ZWJf
ZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAg
IFdlYktpdFdlYkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IHdlYkRhdGFiYXNlLT5wcml2OwotICAg
IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGNvcmUo
cHJpdi0+b3JpZ2luKSwgcHJpdi0+bmFtZSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5uYW1l
KTsKICNlbmRpZgogfQogCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2RhdGFi
YXNlX3JlbW92ZShXZWJLaXRXZQogdm9pZCB3ZWJraXRfcmVtb3ZlX2FsbF93ZWJfZGF0YWJhc2Vz
KCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIFdlYkNvcmU6OkRhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwogI2VuZGlmCiB9CiAK
QEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIHdlYmtpdF9yZW1vdmVfYWxsX3dlYl9kYXRhYmFzZXMo
KQogY29uc3QgZ2NoYXIqIHdlYmtpdF9nZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoKCkK
IHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdURjo6U3RyaW5nIHBhdGggPSBXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsK
KyAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAiIjsKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIHdlYmtpdF9zZXRfd2Vi
X2RhdGFiYXNlX2RpcmVjdG9yeV9wCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBX
VEY6OlN0cmluZyBjb3JlUGF0aCA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKLSAgICBX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBh
dGgoY29yZVBhdGgpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CiAKICAgICBnX2ZyZWUod2Via2l0X2Rh
dGFiYXNlX2RpcmVjdG9yeV9wYXRoKTsKICAgICB3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3Bh
dGggPSBnX3N0cmR1cChjb3JlUGF0aC51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKIAogI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5oIgogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0Fj
dGlvbnMuaCIKQEAgLTM0MTEsNyArMzQxMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d191cGRhdGVfc2V0dGkKICAgICBjb3JlU2V0dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50
KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0
SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVIVE1MNURhdGFiYXNlKTsKKyAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShzZXR0aW5nc1ByaXZhdGUt
PmVuYWJsZUhUTUw1RGF0YWJhc2UpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCkBAIC0zNTE1LDcgKzM1MTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0
dGluZ3Nfbm90CiAgICAgICAgIHNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1odG1sNS1kYXRhYmFzZSIp
KSB7Ci0gICAgICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGdfdmFsdWVfZ2V0
X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dElzQXZhaWxhYmxlKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgfQogI2VuZGlm
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1odG1sNS1sb2Nh
bC1zdG9yYWdlIikpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NjQpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBA
QAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VN
YW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBhY2Nlc3NpbmcgRGF0YWJhc2VUcmFja2VyLCBB
YnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBU
aGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAgcmVmYWN0b3Jp
bmcuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbToKKyAgICAgICAg
KC1bV2ViRGF0YWJhc2VNYW5hZ2VyIG9yaWdpbnNdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VN
YW5hZ2VyIGRhdGFiYXNlc1dpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFu
YWdlciBkZXRhaWxzRm9yRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAgICAgKC1bV2ViRGF0
YWJhc2VNYW5hZ2VyIGRlbGV0ZUFsbERhdGFiYXNlc10pOgorICAgICAgICAoLVtXZWJEYXRhYmFz
ZU1hbmFnZXIgZGVsZXRlT3JpZ2luOl0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIg
ZGVsZXRlRGF0YWJhc2U6d2l0aE9yaWdpbjpdKToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemVE
YXRhYmFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCk6
CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1t
LgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OkRp
ZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAg
ICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToK
KyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbToKKyAg
ICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgdXNhZ2VdKToKKyAgICAgICAgKC1bV2Vi
RGF0YWJhc2VRdW90YU1hbmFnZXIgcXVvdGFdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90
YU1hbmFnZXIgc2V0UXVvdGE6XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gdXNhZ2VdKToKKyAgICAg
ICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVvdGFdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlP
cmlnaW4gc2V0UXVvdGE6XSk6CisgICAgICAgICogV2ViS2l0Lm9yZGVyOgorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9jYWNoZWFiaWxpdHlEaWN0
aW9uYXJ5XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1r
d3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlwZXMg
c2hvdWxkIG5vdCBleHBvc2UgTWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0byBp
bnNwZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCShyZXZpc2lvbiAxMzc0NjQpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw5
ICsyMjEsOSBAQCBfaW5pdGlhbGl6ZUxvZ0NoYW5uZWwKICtbV2ViSGlzdG9yeUl0ZW0gaW5pdGlh
bGl6ZV0KICtbV2ViSGlzdG9yeUl0ZW0oV2ViSW50ZXJuYWwpIGluaXRXaW5kb3dXYXRjaGVySWZO
ZWNlc3NhcnldCiBfX1ozNldlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vzc2FyeXYKLV9f
Wk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDMwc2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50RXYKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDMwc2hhcmVkV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50RXYKIF9fWjM0V2ViS2l0SW5pdGlhbGl6ZVN0b3JhZ2VJZk5lY2Vzc2FyeXYK
LV9fWk4yM1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50MjlzaGFyZWRXZWJTdG9yYWdlVHJhY2tlckNs
aWVudEV2CitfX1pOMjNXZWJTdG9yYWdlTWFuYWdlckNsaWVudDI5c2hhcmVkV2ViU3RvcmFnZU1h
bmFnZXJDbGllbnRFdgogX19aTjIxV2ViUGxhdGZvcm1TdHJhdGVnaWVzMTBpbml0aWFsaXplRXYK
IF9fWk4xNVdlYkNocm9tZUNsaWVudEMxRVA3V2ViVmlldwogX19aTjIwV2ViQ29udGV4dE1lbnVD
bGllbnRDMUVQN1dlYlZpZXcKQEAgLTE5MzUsOCArMTkzNSw4IEBAIF9fWk4xNVdlYkNocm9tZUNs
aWVudDIxZXhjZWVkZWREYXRhYmFzZVEKIC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgaW5pdFdp
dGhPcmlnaW46XQogLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciBzZXRRdW90YTpdCiAtW1dlYlNl
Y3VyaXR5T3JpZ2luKFdlYkludGVybmFsKSBfY29yZV0KLV9fWk4yNFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDIzZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5FUE43V2ViQ29yZTE0U2VjdXJpdHlPcmln
aW5FCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQyNWRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2VFUE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJpbmdFCitfX1pOMjRX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQyM2Rpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luRVBON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjI0V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50MjVkaXNw
YXRjaERpZE1vZGlmeURhdGFiYXNlRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudDE3ZGlkTm90QWxsb3dTY3Jp
cHRFdgogLVtXZWJCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExpc3RDb3VudF0KIC1bV2ViQmFja0Zv
cndhcmRMaXN0IGJhY2tMaXN0Q291bnRdCkBAIC0xOTgwLDcgKzE5ODAsNyBAQCBfX1pOM1dURjlI
YXNoVGFibGVJeFN0NHBhaXJJeE5TXzlSZXRhaW5QCiBfX1pOM1dURjlIYXNoVGFibGVJeFN0NHBh
aXJJeE5TXzlSZXRhaW5QdHJJMTROU011dGFibGVBcnJheUVFRU5TXzE4UGFpckZpcnN0RXh0cmFj
dG9ySVM1X0VFTlNfN0ludEhhc2hJeUVFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFp
dHNJeEVFTlNCX0lTNF9FRUVFU0NfRTZyZWhhc2hFaQogLVtXZWJGcmFtZVZpZXcoV2ViUHJpdmF0
ZSkgX2FyZWFdCiArW1dlYldvcmtlcnNQcml2YXRlIHdvcmtlclRocmVhZENvdW50XQotX19aTjE5
RGlkTW9kaWZ5T3JpZ2luRGF0YTIwZGlzcGF0Y2hUb01haW5UaHJlYWRFUDI0V2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50UE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FCitfX1pOMTlEaWRNb2RpZnlP
cmlnaW5EYXRhMjBkaXNwYXRjaFRvTWFpblRocmVhZEVQMjRXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnRQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkUKIF9fWk4xOURpZE1vZGlmeU9yaWdpbkRhdGEz
NWRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkRVB2CiBfX1pOMTVXZWJDaHJvbWVD
bGllbnQyNWVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRFUE43V2ViQ29yZTdFbGVtZW50RQogLVtX
ZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgLmN4eF9jb25zdHJ1Y3RdCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQkocmV2aXNpb24gMTM3
NDY0KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCisjaW1wb3J0ICJX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjIsNyArNjIsNyBAQCArIChX
ZWJEYXRhYmFzZU1hbmFnZXIgKikgc2hhcmVkV2ViRGF0YWJhCiAtIChOU0FycmF5ICopb3JpZ2lu
cwogewogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gY29yZU9yaWdpbnM7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CisgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CiAgICAgTlNN
dXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OmNvcmVPcmlnaW5zLnNpemUoKV07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTc3LDcgKzc3LDcgQEAgLSAoTlNB
cnJheSAqKW9yaWdpbnMKIC0gKE5TQXJyYXkgKilkYXRhYmFzZXNXaXRoT3JpZ2luOihXZWJTZWN1
cml0eU9yaWdpbiAqKW9yaWdpbgogewogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3I7Ci0g
ICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2lu
KFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9yKSkKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oW29yaWdpbiBfY29yZV0sIG5hbWVWZWN0
b3IpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIE5TTXV0YWJsZUFycmF5ICpuYW1l
cyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bmFtZVZlY3Rvci5z
aXplKCldOwpAQCAtOTIsNyArOTIsNyBAQCAtIChOU0RpY3Rpb25hcnkgKilkZXRhaWxzRm9yRGF0
YWJhc2U6KE5TCiB7CiAgICAgc3RhdGljIGlkIGtleXNbM10gPSB7V2ViRGF0YWJhc2VEaXNwbGF5
TmFtZUtleSwgV2ViRGF0YWJhc2VFeHBlY3RlZFNpemVLZXksIFdlYkRhdGFiYXNlVXNhZ2VLZXl9
OwogICAgIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBbb3Jp
Z2luIF9jb3JlXSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZUlkZW50aWZpZXIs
IFtvcmlnaW4gX2NvcmVdKTsKICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgICAgIApAQCAtMTA2LDE3ICsxMDYsMTcgQEAgLSAoTlNEaWN0
aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFiYXNlOihOUwogCiAtICh2b2lkKWRlbGV0ZUFsbERhdGFi
YXNlcwogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNl
cygpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygp
OwogfQogCiAtIChCT09MKWRlbGV0ZU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4K
IHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFtv
cmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVs
ZXRlT3JpZ2luKFtvcmlnaW4gX2NvcmVdKTsKIH0KIAogLSAoQk9PTClkZWxldGVEYXRhYmFzZToo
TlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVs
ZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0sIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgcmV0
dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKFtvcmlnaW4gX2Nv
cmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiBAZW5kCkBAIC0xMzcsMTEgKzEzNywxMyBA
QCB2b2lkIFdlYktpdEluaXRpYWxpemVEYXRhYmFzZXNJZk5lY2Vzc2FyCiAgICAgaWYgKGluaXRp
YWxpemVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBEYXRhYmFzZU1hbmFnZXImIGRiTWFuYWdl
ciA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOworCiAgICAgLy8gU2V0IHRoZSBkYXRhYmFz
ZSByb290IHBhdGggaW4gV2ViQ29yZQotICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRy
YWNrZXIoZGF0YWJhc2VzRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBkYk1hbmFnZXIuaW5pdGlhbGl6
ZShkYXRhYmFzZXNEaXJlY3RvcnlQYXRoKCkpOwogCi0gICAgLy8gU2V0IHRoZSBEYXRhYmFzZVRy
YWNrZXJDbGllbnQKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRDbGllbnQoV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKSk7
CisgICAgLy8gU2V0IHRoZSBEYXRhYmFzZU1hbmFnZXJDbGllbnQKKyAgICBkYk1hbmFnZXIuc2V0
Q2xpZW50KFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50KCkpOwogICAgIAogICAgIGluaXRpYWxpemVkID0gWUVTOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5o
CShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lmg6MTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpIAorCisjaW1wb3J0IDxXZWJDb3JlL0RhdGFi
YXNlVHJhY2tlckNsaWVudC5oPgorCitjbGFzcyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQoKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZp
ZXIpOworcHJpdmF0ZToKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKK307CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ0ICsxLDQxIEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgCiAKLSNpbXBvcnQgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlckNs
aWVudC5oPgogCi1jbGFzcyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudCgpOworICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIHNoYXJlZFdl
YkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIAotICAgIHZpcnR1YWwgfldlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCgpOworICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNl
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlSWRl
bnRpZmllcik7CiBwcml2YXRlOgotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAg
IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpOwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bQkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlVHJhY2tlckNsaWVudC5tbToxMzczMzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisgCisjaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCIKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisKKyNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUu
aCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAg
cmV0dXJuIHNoYXJlZENsaWVudDsKK30KKworV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQorCitXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworfQorCitjbGFzcyBEaWRNb2RpZnlPcmln
aW5EYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKKyAgICB7Cisg
ICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2lu
RGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFp
blRocmVhZCwgY29udGV4dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIERpZE1vZGlmeU9yaWdp
bkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbikKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQorICAgICAgICAsIG9y
aWdpbihvcmlnaW4pCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCisgICAgeworICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZv
ID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOworICAgICAgICBp
bmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdpbi5nZXQoKSk7
CisgICAgICAgIGRlbGV0ZSBpbmZvOworICAgIH0KKworICAgIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCogY2xpZW50OworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOworfTsKKwor
dm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAg
ICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmln
aW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CisKKyAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldl
YkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlP
cmlnaW4uZ2V0KCldOworfQorCit2b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0
Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAg
ICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdp
bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlP
cmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxs
b2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKKyAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBbW05TRGljdGlvbmFyeSBhbGxvY10g
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRo
T2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyLCBXZWJEYXRhYmFz
ZUlkZW50aWZpZXJLZXksIG5pbF0pOworICAgIAorICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlE
YXRhYmFzZU5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJbmZv
OnVzZXJJbmZvLmdldCgpXTsKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkocmV2aXNpb24g
MTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzIgKzEsMjkgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNywyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CiAgKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAgCi0jaW1wb3J0ICJXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaCIKKyNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIApAQCAtMzgsMzEgKzM1LDMxIEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpzaGFyZWRXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQoKQogewotICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQqIHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAg
ICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgcmV0dXJuIHNoYXJlZENsaWVudDsKIH0KIAot
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQorV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogewogfQog
Ci1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQor
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsK
IH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAg
ICAgewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlm
eU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEaWRNb2Rp
ZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luKQogICAgICAgICA6IGNsaWVudChjbGllbnQpCiAgICAgICAgICwgb3JpZ2luKG9yaWdpbikK
ICAgICB7CkBAIC03NiwxMSArNzMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgZGVsZXRlIGluZm87
CiAgICAgfQogCi0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQ7CisgICAgV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQ7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW47CiB9OwogCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3Jp
Z2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKQEAgLTkzLDcgKzkw
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2Vi
U2VjdXJpdHlPcmlnaW4uZ2V0KCldOwogfQogCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewogICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQo
dGhpcywgb3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIu
aCIKIAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgotI2ltcG9ydCA8V2Vi
Q29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2Vy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MCw3ICs1MCw3IEBAIC0gKFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOworICAgIHJldHVybiBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNTksNyArNTksNyBAQCAtICh1bnNpZ25l
ZCBsb25nIGxvbmcpdXNhZ2UKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSk7CiAjZWxzZQog
ICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC03MSw3ICs3MSw3IEBAIC0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsKICNlbmRpZgogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAKLQotI2ltcG9ydCA8V2ViQ29yZS9E
YXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KLQotY2xhc3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KCk7Ci0gICAgCi0gICAgdmlydHVhbCB+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVu
dGlmaWVyKTsKLXByaXZhdGU6Ci0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Ci19Owot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0gCi0jaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQu
aCIKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbXBvcnQgIldlYkRhdGFiYXNlTWFu
YWdlclByaXZhdGUuaCIKLSNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKLSNp
bXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6
c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLSAgICBzdGF0aWMgV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KCk7Ci0gICAgcmV0dXJuIHNoYXJlZENsaWVudDsKLX0KLQotV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50OjpXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQotewotfQotCi1XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQotewotfQotCi1jbGFzcyBE
aWRNb2RpZnlPcmlnaW5EYXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlP
cmlnaW5EYXRhKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVh
ZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKLSAgICB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlk
TW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0ZWRDb3B5KCkpOwotICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIERp
ZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKLSAgICAgICAgOiBjbGllbnQoY2xpZW50KQot
ICAgICAgICAsIG9yaWdpbihvcmlnaW4pCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBEaWRNb2RpZnlPcmln
aW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQp
OwotICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9y
aWdpbi5nZXQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpbmZvOwotICAgIH0KLQotICAgIFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCogY2xpZW50OwotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luOwotfTsKLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCi17Ci0gICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVh
ZCh0aGlzLCBvcmlnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRy
PFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3Vy
aXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7
Ci0KLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmlj
YXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6
d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwotfQotCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKLXsKLSAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFk
KHRoaXMsIG9yaWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8
V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJp
dHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsK
LSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBbW05TRGljdGlv
bmFyeSBhbGxvY10gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVy
LCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOwotICAgIAotICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJh
c2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4u
Z2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXTsKLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU2VjdXJpdHlPcmlnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJRdW90YU1hbmFn
ZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFz
ZVRyYWNrZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTYxLDE0ICsxNjEsMTQgQEAgLSAoaWQ8V2ViUXVvdGFNYW5hZ2VyPilkYXRhYmFzZVF1b3Rh
TWFuYQogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBkZXByZWNhdGVkIGFu
ZCBzaG91bGQgcmVtb3ZlZCBsYXRlci4KIC8vIENsaWVudHMgc2hvdWxkIGluc3RlYWQgZ2V0IGEg
V2ViUXVvdGFNYW5hZ2VyLCBhbmQgcXVlcnkgLyBzZXQgdGhlIHF1b3RhIHZpYSB0aGUgTWFuYWdl
ci4KLS8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4gI2luY2x1ZGUgc2hv
dWxkIGJlIHJlbW92ZWQgYXMgd2VsbC4KKy8vIE5PVEU6IHRoZSA8V2ViQ29yZS9EYXRhYmFzZU1h
bmFnZXIuaD4gI2luY2x1ZGUgc2hvdWxkIGJlIHJlbW92ZWQgYXMgd2VsbC4KIAogQGltcGxlbWVu
dGF0aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVkKQogCiAtICh1bnNpZ25lZCBsb25n
IGxvbmcpdXNhZ2UKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNl
Y3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+
KF9wcml2YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNzcsNyArMTc3
LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiAtICh1bnNpZ25lZCBsb25nIGxvbmcp
cXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5
T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xODYsNyArMTg2LDcgQEAg
LSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBs
b25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmln
aW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90
YSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CShyZXZpc2lvbiAxMzc0NjQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0No
cm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
T01JbXBsZW1lbnRhdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZUNvbnRleHQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CkBAIC0xMDY5LDcgKzEw
NjksNyBAQCAtIChOU011dGFibGVEaWN0aW9uYXJ5ICopX2NhY2hlYWJpbGl0eURpCiAgICAgCiAg
ICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50
KCkpIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBpZiAoRGF0YWJhc2VDb250
ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKKyAgICAgICAgaWYgKERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpKQogICAgICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5Oldl
YkZyYW1lVXNlc0RhdGFiYXNlc107CiAjZW5kaWYKICAgICAgICAgaWYgKCFkb2N1bWVudC0+Y2Fu
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBACiAjaW1wb3J0IDxG
b3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJ
Q2FzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgotI2ltcG9ydCA8
V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBsLmg+CkBAIC0xMTks
NiArMTE4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNv
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTE0NjgsNyArMTQ2OCw3IEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy0+c2V0UGlj
dG9ncmFwaEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHBpY3RvZ3JhcGhGb250RmFtaWx5XSk7CiAg
ICAgc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBhcmVQbHVnSW5zRW5h
YmxlZF0pOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6
c2V0SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNlc0VuYWJsZWRdKTsKKyAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShbcHJlZmVyZW5jZXMgZGF0YWJh
c2VzRW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZUVuYWJs
ZWQoW3ByZWZlcmVuY2VzIGxvY2FsU3RvcmFnZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0
RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGV4cGVyaW1lbnRh
bE5vdGlmaWNhdGlvbnNFbmFibGVkXSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3
NDY0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMyBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4g
RGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBhY2Nlc3NpbmcgRGF0YWJhc2VU
cmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRp
cmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAg
cmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFFXZWJEYXRhYmFzZTo6ZGlzcGxheU5hbWUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpleHBl
Y3RlZFNpemUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpzaXplKToKKyAgICAgICAgKFFXZWJE
YXRhYmFzZTo6ZmlsZU5hbWUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVEYXRhYmFz
ZSk6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcyk6CisgICAgICAg
ICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlVXNhZ2UpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFz
ZVF1b3RhKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6c2V0RGF0YWJhc2VRdW90YSk6
CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmFsbE9yaWdpbnMpOgorICAgICAgICAoUVdl
YlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZXMpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpzZXRPZmZsaW5lU3RvcmFnZVBhdGgpOgorICAgICAgICAoUVdlYlNldHRpbmdz
OjpvZmZsaW5lU3RvcmFnZVBhdGgpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKwogMjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9z
ZSBNZXNzYWdlVHlwZSAtIGl0IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NDY0KQorKysg
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNyBAQAogI2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgogI2luY2x1ZGUg
InF3ZWJzZWN1cml0eW9yaWdpbl9wLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0j
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC04Nyw3ICs4Nyw3IEBAIFFTdHJpbmcg
UVdlYkRhdGFiYXNlOjpuYW1lKCkgY29uc3QKIFFTdHJpbmcgUVdlYkRhdGFiYXNlOjpkaXNwbGF5
TmFtZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURl
dGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1l
QW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9y
aWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOwogICAgIHJldHVybiBkZXRhaWxzLmRpc3Bs
YXlOYW1lKCk7CiAjZWxzZQogICAgIHJldHVybiBRU3RyaW5nKCk7CkBAIC0xMDAsNyArMTAwLDcg
QEAgUVN0cmluZyBRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29ucwogcWludDY0IFFXZWJE
YXRhYmFzZTo6ZXhwZWN0ZWRTaXplKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKKyAg
ICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRl
dGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7CiAgICAgcmV0
dXJuIGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTEx
Myw3ICsxMTMsNyBAQCBxaW50NjQgUVdlYkRhdGFiYXNlOjpleHBlY3RlZFNpemUoKSBjb25zCiBx
aW50NjQgUVdlYkRhdGFiYXNlOjpzaXplKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsK
KyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7CiAgICAg
cmV0dXJuIGRldGFpbHMuY3VycmVudFVzYWdlKCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAt
MTQ4LDcgKzE0OCw3IEBAIFFXZWJEYXRhYmFzZTo6UVdlYkRhdGFiYXNlKFFXZWJEYXRhYmFzZVAK
IFFTdHJpbmcgUVdlYkRhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZnVsbFBh
dGhGb3JEYXRhYmFzZShkLT5vcmlnaW4uZ2V0KCksIGQtPm5hbWUsIGZhbHNlKTsKKyAgICByZXR1
cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVsbFBhdGhGb3JEYXRhYmFzZShkLT5vcmln
aW4uZ2V0KCksIGQtPm5hbWUsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIFFTdHJpbmcoKTsK
ICNlbmRpZgpAQCAtMTcxLDcgKzE3MSw3IEBAIFFXZWJTZWN1cml0eU9yaWdpbiBRV2ViRGF0YWJh
c2U6Om9yaWdpbigKIHZvaWQgUVdlYkRhdGFiYXNlOjpyZW1vdmVEYXRhYmFzZShjb25zdCBRV2Vi
RGF0YWJhc2UmIGRiKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoZGIuZC0+b3JpZ2luLmdldCgpLCBkYi5k
LT5uYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShk
Yi5kLT5vcmlnaW4uZ2V0KCksIGRiLmQtPm5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoY29uc3QgCiB2b2lkIFFX
ZWJEYXRhYmFzZTo6cmVtb3ZlQWxsRGF0YWJhc2VzKCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3Jp
Z2luLmNwcAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1
ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnku
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtMTIxLDcgKzEyMSw3IEBAIGludCBR
V2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoKSBjb25zdAogcWludDY0IFFXZWJTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VVc2FnZSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAg
ICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4oZC0+b3Jp
Z2luLmdldCgpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VG
b3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
QEAgLTEzMyw3ICsxMzMsNyBAQCBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVz
YWdlCiBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVF1b3RhKCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5xdW90YUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHFpbnQ2NCBR
V2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlUXVvdGEKIHZvaWQgUVdlYlNlY3VyaXR5T3JpZ2lu
OjpzZXREYXRhYmFzZVF1b3RhKHFpbnQ2NCBxdW90YSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGQtPm9yaWdpbi5n
ZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGQt
Pm9yaWdpbi5nZXQoKSwgcXVvdGEpOwogI2VuZGlmCiB9CiAKQEAgLTE4MSw3ICsxODEsNyBAQCBR
TGlzdDxRV2ViU2VjdXJpdHlPcmlnaW4+IFFXZWJTZWN1cml0eU9yCiAKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gY29yZU9yaWdp
bnM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7
CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgUVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSogcHJpdiA9IG5ldyBRV2ViU2VjdXJp
dHlPcmlnaW5Qcml2YXRlKGNvcmVPcmlnaW5zW2ldLmdldCgpKTsKQEAgLTIwMiw3ICsyMDIsNyBA
QCBRTGlzdDxRV2ViRGF0YWJhc2U+IFFXZWJTZWN1cml0eU9yaWdpbjo6CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yOwogCi0gICAgaWYgKCFE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKGQtPm9yaWdp
bi5nZXQoKSwgbmFtZVZlY3RvcikpCisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSwgbmFtZVZlY3RvcikpCiAg
ICAgICAgIHJldHVybiBkYXRhYmFzZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5h
bWVWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUVdlYkRhdGFiYXNlUHJpdmF0ZSogcHJp
diA9IG5ldyBRV2ViRGF0YWJhc2VQcml2YXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiw5IEBACiAKICNp
bmNsdWRlICJxd2VicGx1Z2luZGF0YWJhc2VfcC5oIgogCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRh
YmFzZS5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAi
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIK
QEAgLTIzMSw3ICsyMzAsNyBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUo
UVdlYlNldHRpbmdzOjpPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJT
ZXR0aW5nczo6T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQpKTsKLSAgICAgICAgV2ViQ29y
ZTo6QWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUodmFsdWUpOworICAgICAgICBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZSh2YWx1ZSk7CiAj
ZW5kaWYKIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsCkBAIC0xMDA0LDcgKzEwMDMsNyBAQCB2
b2lkIFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoCiB7CiAgICAgV2ViQ29yZTo6
aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRo
KHBhdGgpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFi
YXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKICNlbmRpZgogfQogCkBAIC0xMDIwLDcgKzEwMTksNyBA
QCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoCiB7CiAgICAgV2ViQ29y
ZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
cmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0
b3J5UGF0aCgpOworICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKICNlbHNlCiAgICAgcmV0dXJuIFFTdHJpbmcoKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRl
ICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAi
RmlsZUljb25Mb2FkZXIuaCIKQEAgLTUzOSw4ICs1MzksOCBAQCB2b2lkIENocm9tZUNsaWVudFF0
OjpleGNlZWRlZERhdGFiYXNlUXVvCiB7CiAgICAgcXVpbnQ2NCBxdW90YSA9IFFXZWJTZXR0aW5n
czo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEoKTsKIAotICAgIGlmICghRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4oZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpKQotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90
YShmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcXVvdGEpOworICAgIGlmICgh
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JPcmlnaW4oZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5zZXRRdW90YShmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcXVvdGEp
OwogCiAgICAgbV93ZWJQYWdlLT5kYXRhYmFzZVF1b3RhRXhjZWVkZWQoUVdlYkZyYW1lQWRhcHRl
cjo6a2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJh
c2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAo
V2ViRGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6ZGF0YWJhc2VzV2l0aE9yaWdpbik6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRl
dGFpbHNGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcyk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbik6
CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAg
KFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6
ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIu
aDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogV2ViU2VjdXJpdHlP
cmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnVzYWdlKToKKyAgICAgICAg
KFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6
c2V0UXVvdGEpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90
aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91
bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAtIGl0IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3Bl
Y3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2
aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yMDIsNyArMjAy
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogewogICAgIGlm
ICghc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpIHsKICAgICAgICAgc19zaGFyZWRXZWJEYXRh
YmFzZU1hbmFnZXIuYWRvcHRSZWYoV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgp
KTsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KHNfc2hhcmVk
V2ViRGF0YWJhc2VNYW5hZ2VyLmdldCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuc2V0Q2xpZW50KHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmdldCgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIuY29weVJlZlRvKHJlc3Vs
dCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRh
YmFzZU1hbgogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gPiBvcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9y
aWdpbnMob3JpZ2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhv
cmlnaW5zKTsKICAgICAgICAgQ09NUHRyPENPTUVudW1WYXJpYW50PFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+ID4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxW
ZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+ID46OmFkb3B0KG9yaWdpbnMpKTsKIAogICAg
ICpyZXN1bHQgPSBlbnVtVmFyaWFudC5sZWFrUmVmKCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2lu
LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWVzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWVzKTsKIAogICAgIENPTVB0cjxDT01FbnVtVmFyaWFu
dDxWZWN0b3I8U3RyaW5nPiA+ID4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENPTUVudW1WYXJpYW50
PFZlY3RvcjxTdHJpbmc+ID46OmFkb3B0KGRhdGFiYXNlTmFtZXMpKTsKIApAQCAtMjY5LDcgKzI2
OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAo
IXdlYlNlY3VyaXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJh
c2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VO
YW1lKSksCisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNT
dHJpbmdMZW4oZGF0YWJhc2VOYW1lKSksCiAgICAgICAgIHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1
cml0eU9yaWdpbigpKTsKIAogICAgIGlmIChkZXRhaWxzLm5hbWUoKS5pc051bGwoKSkKQEAgLTI4
NCw3ICsyODQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAg
ICAgaWYgKHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRh
YmFzZXMoKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFz
ZXMoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAoIXdlYlNlY3VyaXR5T3Jp
Z2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVPcmlnaW4od2ViU2VjdXJpdHlP
cmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMjQs
NyArMzI0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAg
IGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZSh3ZWJTZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRh
dGFiYXNlTmFtZSkpKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRh
YmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwgU3RyaW5nKGRhdGFiYXNl
TmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpKTsKIAogICAgIHJldHVybiBTX09LOwog
fQpAQCAtMzgxLDcgKzM4MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJh
c2VNYW4KICAgICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcikKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1
b3RhKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCksIHF1b3Rh
KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpLCBxdW90YSk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVXZWJEYXRh
YmFzZXNJZk5lY2VzCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6U3RyaW5nIGRhdGFiYXNl
c0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwotICAgIFdl
YkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VzRGlyZWN0
b3J5KTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbml0aWFsaXpl
KGRhdGFiYXNlc0RpcmVjdG9yeSk7CiAKICAgICBpbml0aWFsaXplZCA9IHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NDY0KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDkgKzMyLDkgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogCi1jbGFzcyBXZWJEYXRh
YmFzZU1hbmFnZXIgOiBwdWJsaWMgSVdlYkRhdGFiYXNlTWFuYWdlciwgcHJpdmF0ZSBXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgeworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVi
bGljIElXZWJEYXRhYmFzZU1hbmFnZXIsIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyKiBjcmVhdGVJ
bnN0YW5jZSgpOwogCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIG9yaWdpbiwKICAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVv
dGEpOwogCi0gICAgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50CisgICAgLy8gRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5
RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0
YWJhc2VOYW1lKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
RExMLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+
CiAKICNpZiAhRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KQEAgLTEzNCw3ICsxMzQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3Vy
aXR5T3JpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAg
ICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4obV9z
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnVzYWdlRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiAjZWxzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90
YUZvck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpA
QCAtMTYyLDcgKzE2Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlP
cmkKICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90
YShtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuc2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOwogCiAgICAg
cmV0dXJuIFNfT0s7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEz
NzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmpl
Y3RDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdEltcGwuaD4KQEAg
LTc2LDYgKzc1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1
cnNvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtNDgwNCw3
ICs0ODA0LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAg
IGhyID0gcHJlZnNQcml2YXRlLT5kYXRhYmFzZXNFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNl
dElzQXZhaWxhYmxlKGVuYWJsZWQpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNl
dElzQXZhaWxhYmxlKGVuYWJsZWQpOwogI2VuZGlmCiAKICAgICBociA9IHByZWZzUHJpdmF0ZS0+
bG9jYWxTdG9yYWdlRW5hYmxlZCgmZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNp
b24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxMi0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQ
SXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBhY2Nlc3NpbmcgRGF0
YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250
ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAg
ICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpleGNlZWRlZERhdGFi
YXNlUXVvdGEpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Okdl
dERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6U2V0RGF0YWJh
c2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkFyZURhdGFiYXNlc0VuYWJs
ZWQpOgorCiAyMDEyLTExLTI3ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGludG8gb25lIGZ1
bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAko
cmV2aXNpb24gMTM3NDY0KQorKysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsOCArNzYsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNl
LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgInd4L3d4cHJlYy5oIgpAQCAtMTEyNiw3ICsxMTI1
LDcgQEAgYm9vbCBXZWJWaWV3OjpTaG91bGRDbG9zZSgpIGNvbnN0CiB2b2lkIFdlYlZpZXc6OlNl
dERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IHd4U3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKIHsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRhYmFzZURpcmVjdG9yeSk7Cisg
ICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKGRhdGFiYXNlRGlyZWN0b3J5KTsKICNlbmRpZgogfQogCkBAIC0xMTM0LDcgKzExMzMs
NyBAQCB2b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0CiB3eFN0cmluZyBX
ZWJWaWV3OjpHZXREYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogI2Vsc2UKICAgICByZXR1cm4gd3hF
bXB0eVN0cmluZzsKICNlbmRpZgpAQCAtMTE0NCw3ICsxMTQzLDggQEAgd3hTdHJpbmcgV2ViVmll
dzo6R2V0RGF0YWJhc2VEaXJlY3RvcnkoKQogdm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNv
cmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZWQpOworICAgIFdlYkNv
cmU6OkRhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCk7CisgICAgbWFuYWdlci5zZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKICNlbmRp
ZgogfQogCkBAIC0xMTUyLDcgKzExNTIsOCBAQCB2b2lkIFdlYlZpZXc6OlNldERhdGFiYXNlc0Vu
YWJsZWQoYm9vbCBlCiBib29sIFdlYlZpZXc6OkFyZURhdGFiYXNlc0VuYWJsZWQoKQogewogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJh
c2U6OmlzQXZhaWxhYmxlKCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFn
ZXIgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKyAgICByZXR1cm4gZGJN
YW5hZ2VyLmlzQXZhaWxhYmxlKCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5j
cHAJKHJldmlzaW9uIDEzNzQ2NCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJDaHJvbWVDbGllbnRXeC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNs
dWRlICJGaWxlSWNvbkxvYWRlci5oIgpAQCAtNDI3LDggKzQyNyw4IEBAIHZvaWQgQ2hyb21lQ2xp
ZW50V3g6OmV4Y2VlZGVkRGF0YWJhc2VRdW8KICAgICBpZiAoV2ViRnJhbWUqIHdlYkZyYW1lID0g
bV93ZWJWaWV3LT5HZXRNYWluRnJhbWUoKSkKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdl
YkZyYW1lLT5HZXRGcmFtZSgpKQogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIGlmICghRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkp
KQotICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90
YShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgcXVvdGEpOworICAgICAgICAgICAgICAgIGlm
ICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JPcmlnaW4oZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgICAgICAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5zZXRRdW90YShkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgcXVvdGEpOwog
fQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="195784"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179070</attachid>
            <date>2012-12-12 09:47:55 -0800</date>
            <delta_ts>2012-12-12 12:48:29 -0800</delta_ts>
            <desc>Added a #include to make the elf port happy.  Also updated ChangeLog dates and fixed a typo.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>152932</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEyLTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBp
bnN0ZWFkIG9mIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisg
ICAgICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBm
b3IgdXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6RGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6On5E
YXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6On5EYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZVN5bmNFbmFibGVkKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0
b3BMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1
dGRvd25TdGFydFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZDo6c3RvcCk6CisKIDIwMTItMTItMTIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUG9zc2liaWxpdHkgdG8gdHVybiBvZmYgYWNjZXNz
aWJpbGl0eSBmZWF0dXJlIGZvciBXZWJLaXQtRUZMLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC05NDUsNiArOTQ1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZUF1dGhvcml6ZXIuY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNv
bnRleHQuY3BwCisgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCiAg
ICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCiAgICAgTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCiAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTM3NDc2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjA5MywxMyArMjA5MywxNSBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
eW5jLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5
bmMuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2su
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNs
aWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVv
dGFNYW5hZ2VyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE0MTMsNiArMTQxMyw3
IEBAIEhFQURFUlMgKz0gXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRob3Jp
emVyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBcCiAgICAgTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmggXAorICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VT
eW5jLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmggXAogICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCkBAIC0yOTY4LDYgKzI5NjksNyBA
QCB1c2U/KFBMVUdJTl9CQUNLRU5EX1hMSUIpIHsKIGVuYWJsZT8oU1FMX0RBVEFCQVNFKSB7CiAg
ICAgU09VUkNFUyArPSBcCiAgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXAogICAgICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsMTkgKzM2NCwyMCBAQCBfX1pON1dlYkNvcmUx
NUFmZmluZVRyYW5zZm9ybUMxRXYKIF9fWk43V2ViQ29yZTE1QXJjaGl2ZVJlc291cmNlNmNyZWF0
ZUVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRVJLTlNfNEtVUkxFUktOUzFf
NlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29yZTE1RE9N
V3JhcHBlcldvcmxkMTNjbGVhcldyYXBwZXJzRXYKIF9fWk43V2ViQ29yZTE1RE9NV3JhcHBlcldv
cmxkRDFFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZUNvbnRleHQxNmhhc09wZW5EYXRhYmFzZXNF
UE5TXzIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dEUKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFj
a2VyMTJkZWxldGVPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUxNURh
dGFiYXNlVHJhY2tlcjE0ZGVsZXRlRGF0YWJhc2VFUE5TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE0cXVvdGFGb3JPcmlnaW5F
UE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE0dXNh
Z2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUx
NURhdGFiYXNlVHJhY2tlcjE4ZGVsZXRlQWxsRGF0YWJhc2VzRXYKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VUcmFja2VyMjJkYXRhYmFzZU5hbWVzRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RVJOM1dURjZWZWN0b3JJTlMzXzZTdHJpbmdFTG0wRUVFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjIzZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW5FUktOM1dURjZTdHJpbmdFUE5TXzE0U2Vj
dXJpdHlPcmlnaW5FCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjdvcmlnaW5zRVJOM1dU
RjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVFRQotX19aTjdX
ZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNl
VHJhY2tlcjhzZXRRdW90YUVQTlNfMTRTZWN1cml0eU9yaWdpbkV5Ci1fX1pON1dlYkNvcmUxNURh
dGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIxRGF0YWJhc2VUcmFja2VyQ2xpZW50RQorX19a
TjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNHNldElzQXZhaWxhYmxlRWIKK19fWk43V2ViQ29y
ZTE1RGF0YWJhc2VNYW5hZ2VyMTZoYXNPcGVuRGF0YWJhc2VzRVBOU18yMlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjEyZGVsZXRlT3JpZ2luRVBO
U18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNGRlbGV0
ZURhdGFiYXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJD
b3JlMTVEYXRhYmFzZU1hbmFnZXIxNHF1b3RhRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxNHVzYWdlRm9yT3JpZ2luRVBOU18xNFNl
Y3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxMGluaXRpYWxpemVF
UktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjE4ZGVsZXRlQWxs
RGF0YWJhc2VzRXYKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMjJkYXRhYmFzZU5hbWVz
Rm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJOM1dURjZWZWN0b3JJTlMzXzZTdHJpbmdF
TG0wRUVFCitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjIzZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW5FUktOM1dURjZTdHJpbmdFUE5TXzE0U2VjdXJpdHlPcmlnaW5FCitfX1pON1dlYkNvcmUx
NURhdGFiYXNlTWFuYWdlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRT
ZWN1cml0eU9yaWdpbkVFRUxtMEVFRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI3bWFu
YWdlckV2CitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjhzZXRRdW90YUVQTlNfMTRTZWN1
cml0eU9yaWdpbkV5CitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjlzZXRDbGllbnRFUE5T
XzIxRGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIx
MHNldEZvY3VzZWRFYgogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNHNldEZvY3VzZWRO
b2RlRVBOU180Tm9kZUVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29y
ZTE1Rm9jdXNDb250cm9sbGVyMTVzZXRGb2N1c2VkRnJhbWVFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NUZyYW1lRUVFCkBAIC00MzEsNyArNDMyLDYgQEAgX19aTjdXZWJDb3JlMTVzZXRET01FeGNlcHRp
b25FUE4zSlNDOUV4ZQogX19aTjdXZWJDb3JlMTV0b0RPTVN0cmluZ0xpc3RFUE4zSlNDOUV4ZWNT
dGF0ZUVOUzBfN0pTVmFsdWVFCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBf
X1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29y
ZTE2QWJzdHJhY3REYXRhYmFzZTE0c2V0SXNBdmFpbGFibGVFYgogX19aTjdXZWJDb3JlMTZBcHBs
aWNhdGlvbkNhY2hlMThkaXNrVXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBf
X1pON1dlYkNvcmUxNkFwcGxpY2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18x
NFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZEZXZpY2VNb3Rpb25EYXRhMTJBY2NlbGVy
YXRpb242Y3JlYXRlRWJkYmRiZApAQCAtMTkxNywxMSArMTkxNyw2IEBAIF9fWk43V2ViQ29yZTE0
SWNvbkNvbnRyb2xsZXIzdXJsRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU2Y2FuY2Vs
RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGU5c2V0Q2xpZW50RVBOU18yMFJlc291cmNl
SGFuZGxlQ2xpZW50RQogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZUQxRXYKLV9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyMTZvcmlnaW5zRGlkQ2hhbmdlRXYKLV9fWk43V2ViQ29yZTE1
RGF0YWJhc2VUcmFja2VyMjVkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5RVJLTjNXVEY2U3RyaW5n
RQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyOHJlbW92ZURlbGV0ZWRPcGVuZWREYXRh
YmFzZXNFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIzOGVtcHR5RGF0YWJhc2VGaWxl
c1JlbW92YWxUYXNrRGlkRmluaXNoRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyNDRl
bXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFza1dpbGxCZVNjaGVkdWxlZEV2CiBfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDEyZHJhd0JpZGlUZXh0RVJLTlNfNEZvbnRFUktOU183VGV4dFJ1
bkVSS05TXzEwRmxvYXRQb2ludEVQTlNfMTBCaWRpU3RhdHVzRWkKIF9fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0MTVkcmF3TGluZUZvclRleHRFUktOU18xMEZsb2F0UG9pbnRFZmIKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjJzZXRFbW9qaURyYXdpbmdFbmFibGVkRWIKQEAgLTE5
NjMsOCArMTk1OCw2IEBAIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTljbGUK
IF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMjVoYXNSZWNlaXZlZE1lbW9yeVBy
ZXNzdXJlRXYKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMjVpbnN0YWxsTWVt
b3J5UmVsZWFzZUJsb2NrRVUxM2Jsb2NrX3BvaW50ZXJGdnZFYgogX19aTjdXZWJDb3JlMjFNZW1v
cnlQcmVzc3VyZUhhbmRsZXIyNXNldFJlY2VpdmVkTWVtb3J5UHJlc3N1cmVFdgotX19aTjdXZWJD
b3JlMjFTUUxpdGVEYXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUyMVNRTGl0
ZURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzI3U1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50RQogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzRmFjZWJvb2tFdgogX19aTjdXZWJDb3Jl
MjFuZXh0QnJlYWthYmxlUG9zaXRpb25FUk5TXzIxTGF6eUxpbmVCcmVha0l0ZXJhdG9yRWliCiBf
X1pON1dlYkNvcmUyMW5leHRQYXJhZ3JhcGhQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9u
RWkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtOTg3LDYgKzk4Nyw3IEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIJKHJl
dmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjE5
b3BlblRyYWNrCiBfX1pON1dlYkNvcmUxNlNRTGl0ZUZpbGVTeXN0ZW0yOGFwcGVuZERhdGFiYXNl
RmlsZU5hbWVUb1BhdGhFUktOM1dURjZTdHJpbmdFUzRfCiBfX1pON1dlYkNvcmUxNlNRTGl0ZUZp
bGVTeXN0ZW0yNGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0c0VSS04zV1RGNlN0cmluZ0ViCiBfX1pO
N1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjd0cmFja2VyRXYKLV9fWk43V2ViQ29yZTE1RGF0YWJh
c2VUcmFja2VyOXNldENsaWVudEVQTlNfMjFEYXRhYmFzZVRyYWNrZXJDbGllbnRFCitfX1pON1dl
YkNvcmUxNURhdGFiYXNlVHJhY2tlcjlzZXRDbGllbnRFUE5TXzIxRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50RQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjE3aW5pdGlhbGl6ZVRyYWNrZXJFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxM1N0b3JhZ2VUaHJlYWQ2Y3JlYXRlRXYKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIyM3NldFN0b3JhZ2VEaXJlY3RvcnlQYXRoRVJLTjNXVEY2
U3RyaW5nRQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgor
CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2Uu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRyYWNr
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEYXRhYmFzZU1hbmFnZXImIERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpCit7CisgICAgc3RhdGljIERhdGFiYXNlTWFuYWdlciogZGJNYW5h
Z2VyID0gMDsKKyAgICBpZiAoIWRiTWFuYWdlcikKKyAgICAgICAgZGJNYW5hZ2VyID0gbmV3IERh
dGFiYXNlTWFuYWdlcigpOworCisgICAgcmV0dXJuICpkYk1hbmFnZXI7Cit9CisKK0RhdGFiYXNl
TWFuYWdlcjo6RGF0YWJhc2VNYW5hZ2VyKCkKK3sKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCit7CisgICAgRGF0YWJhc2VU
cmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZVBhdGgpOworfQorCisjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKQordm9pZCBEYXRhYmFzZU1hbmFnZXI6OnNldENsaWVudChEYXRhYmFzZU1h
bmFnZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRDbGllbnQoY2xpZW50KTsKK30KKworU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2Vy
OjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsK
K30KKyNlbmRpZgorCitib29sIERhdGFiYXNlTWFuYWdlcjo6aXNBdmFpbGFibGUoKQoreworICAg
IHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworfQorCit2b2lkIERhdGFi
YXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCit7CisgICAgQWJzdHJh
Y3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoYXZhaWxhYmxlKTsKK30KKworYm9vbCBEYXRhYmFz
ZU1hbmFnZXI6Omhhc09wZW5EYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VDb250ZXh0OjpoYXNPcGVuRGF0YWJhc2VzKGNvbnRl
eHQpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHN5bmNocm9u
aXplcikKK3sKKyAgICBEYXRhYmFzZUNvbnRleHQ6OnN0b3BEYXRhYmFzZXMoY29udGV4dCwgc3lu
Y2hyb25pemVyKTsKK30KKworU3RyaW5nIERhdGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3Jl
YXRlSWZEb2VzTm90RXhpc3QpCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBjcmVhdGVJZkRvZXNOb3RFeGlz
dCk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCitib29sIERhdGFiYXNlTWFuYWdlcjo6
aGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKTsKK30K
Kwordm9pZCBEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gPiYgcmVzdWx0KQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdp
bnMocmVzdWx0KTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKK3sK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9y
aWdpbihvcmlnaW4sIHJlc3VsdCk7Cit9CisKK0RhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFn
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9u
ZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6dXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JP
cmlnaW4ob3JpZ2luKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlTWFuYWdlcjo6
cXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKK30KKwordm9p
ZCBEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHVuc2ln
bmVkIGxvbmcgbG9uZyBxdW90YVNpemUpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuc2V0UXVvdGEob3JpZ2luLCBxdW90YVNpemUpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdl
cjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKK30KKworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIHJldHVybiBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luKTsKK30KKworYm9vbCBEYXRhYmFz
ZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVs
ZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKK30KKworI2Vsc2UgLy8gUExBVEZPUk0oQ0hST01J
VU0pCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6Y2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdp
bklkZW50aWZpZXIsIG5hbWUpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCit2
b2lkIERhdGFiYXNlTWFuYWdlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25z
dCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29udGV4dCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJB
U0UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgRGF0YWJhc2VNYW5hZ2VyX2gKKyNkZWZpbmUgRGF0YWJhc2VNYW5hZ2VyX2gKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERhdGFi
YXNlTWFuYWdlckNsaWVudDsKK2NsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKK2NsYXNz
IFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3Mg
RGF0YWJhc2VNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZU1hbmFn
ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGF0YWJh
c2VNYW5hZ2VyJiBtYW5hZ2VyKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZVBhdGgpOworI2lmICFQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIHNldENs
aWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3Qg
U3RyaW5nJik7CisjZW5kaWYKKworICAgIGJvb2wgaXNBdmFpbGFibGUoKTsKKyAgICB2b2lkIHNl
dElzQXZhaWxhYmxlKGJvb2wpOworCisgICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAvLyBXaGVuIHRoZSBkYXRhYmFzZSBjbGVhbnVwIGlzIGRv
bmUsIGNsZWFudXBTeW5jIHdpbGwgYmUgc2lnbmFsbGVkLgorICAgIHZvaWQgc3RvcERhdGFiYXNl
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKik7CisK
KyAgICBTdHJpbmcgZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0
cmluZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCA9IHRydWUpOworCisjaWYgIVBM
QVRGT1JNKENIUk9NSVVNKQorICAgIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmln
aW4qKTsKKyAgICB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYg
cmVzdWx0KTsKKyAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4q
LCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKTsKKworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOworCisgICAg
dm9pZCBzZXRRdW90YShTZWN1cml0eU9yaWdpbiosIHVuc2lnbmVkIGxvbmcgbG9uZyk7CisKKyAg
ICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOworICAgIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKik7CisgICAgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIHZv
aWQgY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisjZW5kaWYgLy8gUExBVEZPUk0oQ0hST01JVU0pCisK
KyAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworCitwcml2YXRlOgorICAgIERhdGFiYXNlTWFuYWdlcigpOworICAg
IH5EYXRhYmFzZU1hbmFnZXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBEYXRhYmFzZU1hbmFn
ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6
MTM3MzM4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1h
bmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRlZiBEYXRh
YmFzZVRyYWNrZXJDbGllbnRfaAorI2RlZmluZSBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorCisj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VjdXJpdHlPcmlnaW47CisKK2NsYXNzIERhdGFi
YXNlVHJhY2tlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGF0YWJhc2VUcmFja2Vy
Q2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURh
dGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisKKyNlbmRpZiAvLyBEYXRh
YmFzZVRyYWNrZXJDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oCShyZXZpc2lvbiAx
MzczMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICsxLDI5IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNywyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KICAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KLSNpZm5kZWYgRGF0YWJhc2VUcmFj
a2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKyNpZm5kZWYgRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50X2gKKyNkZWZpbmUgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50X2gKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKQEAgLTM2LDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAotY2xhc3MgRGF0YWJhc2VUcmFja2Vy
Q2xpZW50IHsKK2NsYXNzIERhdGFiYXNlTWFuYWdlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+RGF0YWJhc2VUcmFja2VyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB+RGF0YWJhc2VN
YW5hZ2VyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
ID0gMDsKIH07CkBAIC00Nyw0ICs0NCw0IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKLSNlbmRpZiAv
LyBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAorI2VuZGlmIC8vIERhdGFiYXNlTWFuYWdlckNsaWVu
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJh
Y2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKKyNpbmNsdWRlICJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgotI2luY2x1ZGUg
IkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMDQ2LDcgKzEw
NDYsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlCiAgICAgcmV0
dXJuIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShmdWxsUGF0aCk7CiB9CiAK
LXZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBj
bGllbnQpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlTWFuYWdlckNs
aWVudCogY2xpZW50KQogewogICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5o
CShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFzaDsKIAogI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudDsKK2NsYXNzIERhdGFi
YXNlTWFuYWdlckNsaWVudDsKIAogc3RydWN0IFNlY3VyaXR5T3JpZ2luVHJhaXRzOwogI2VuZGlm
IC8vICFQTEFURk9STShDSFJPTUlVTSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBib29sIGRlbGV0ZURhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZvaWQgc2V0
Q2xpZW50KERhdGFiYXNlVHJhY2tlckNsaWVudCopOworICAgIHZvaWQgc2V0Q2xpZW50KERhdGFi
YXNlTWFuYWdlckNsaWVudCopOwogCiAgICAgLy8gRnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIG11
c3QgYmUgdGhyZWFkIHNhZmUgd2l0aCBpdHMgZGF0YQogICAgIHZvaWQgc2NoZWR1bGVOb3RpZnlE
YXRhYmFzZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9kYXRhYmFzZURpcmVjdG9y
eVBhdGg7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXJDbGllbnQqIG1fY2xpZW50OworICAgIERhdGFi
YXNlTWFuYWdlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+LCBEYXRhYmFzZURldGFpbHM+IFByb3Bvc2VkRGF0YWJhc2U7CiAg
ICAgSGFzaFNldDxQcm9wb3NlZERhdGFiYXNlKj4gbV9wcm9wb3NlZERhdGFiYXNlczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRyYWNrZXJDbGllbnQuaAkocmV2aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotI2lmbmRlZiBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAotI2RlZmlu
ZSBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaAotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLQot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci0KLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+RGF0YWJhc2VUcmFja2VyQ2xpZW50KCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBEYXRhYmFzZVRyYWNrZXJDbGllbnRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDEzNzQ3NikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDk1LDcgKzIwOTUsNyBAQAogCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL2ZpbGVz
eXN0ZW0vTG9jYWxGaWxlU3lzdGVtXFwuY3BwJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2VcXC5jcHAkJ10sCi0gICAg
ICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVu
dFxcLmgkJ10sCisgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlckNsaWVudFxcLmgkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlclxcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywg
J01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyXFwuKGNwcHxoKSQnXSwKICAg
ICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmRc
XC4oY3BwfGgpJCddLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIwOSw2ICsyNTIwOSwx
NCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cTW9kdWxlc1x3ZWJkYXRhYmFzZVxEYXRhYmFzZU1hbmFnZXIuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJkYXRh
YmFzZVxEYXRhYmFzZU1hbmFnZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJhc2VTeW5jLmNw
cCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMzY4Myw2ICszNjgzLDggQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAq
LzsgfTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTQ1NkYxODE2
NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OworCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyog
RGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkEx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2VTeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JD
NkEyRDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAv
KiBEYXRhYmFzZVRhc2suY3BwICovOyB9OwpAQCAtMzY5MSw3ICszNjkzLDcgQEAKIAkJOTdCQzZB
MzAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFRTE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VUaHJlYWQuaCAqLzsgfTsKIAkJOTdCQzZBMzExNTA1RjA4MTAwMUI3NEFDIC8qIERh
dGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAq
LzsgfTsKIAkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjAxNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk3QkM2QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlGMTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMzcxNTA1RjA4MTAwMUI3NEFD
IC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlGNTE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luUXVvdGFN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJOTdCQzZBMzgxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1
b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5oICovOyB9
OwogCQk5N0JDNkEzOTE1MDVGMDgxMDAxQjc0QUMgLyogT3JpZ2luVXNhZ2VSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjcxNTA1
RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTEwOTkwLDcg
KzEwOTkyLDcgQEAKIAkJOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlVGhyZWFkLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3QkM2OUVGMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VUcmFj
a2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjAxNTA1RjA4MTAwMUI3NEFDIC8q
IERhdGFiYXNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRh
YmFzZVRyYWNrZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3QkM2OUYxMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjUxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1
b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPcmln
aW5RdW90YU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5RdW90
YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlGNjE1MDVG
MDgxMDAxQjc0QUMgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE9yaWdpblF1b3RhTWFuYWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9PcmlnaW5RdW90YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdCQzY5RjcxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE9yaWdpblVzYWdlUmVjb3JkLmNwcDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNzUsNiArMTQxNzcsOCBAQAogCQlGREY2QkFGNzEzNEE0
Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRGN0U5QzExM0FDMjFEQjAwQTUxRUFDIC8q
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGREY3RTlDMjEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9CdWZmZXJDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1NkYxNjE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNDU2RjE3
MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZG
RDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29vcmRpbmF0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU2RkQ0ODYwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBDb29yZGluYXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29vcmRpbmF0ZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyNDcsNiArMTgyNTEsOSBAQAogCQkJCTk3QkM2OUU1
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwICovLAogCQkJCTk3QkM2OUU2
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLywKIAkJCQk5N0JDNjlFNzE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8sCisJCQkJRkU0NTZGMTYxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi8sCisJCQkJRkU0NTZGMTcxNjc3
RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovLAorCQkJCTk3QkM2OUYxMTUwNUYw
ODEwMDFCNzRBQyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCAqLywKIAkJCQk5N0JDNjlFODE1
MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmNwcCAqLywKIAkJCQk5N0JDNjlFOTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VTeW5jLmggKi8sCiAJCQkJOTdCQzY5RUExNTA1RjA4MTAw
MUI3NEFDIC8qIERhdGFiYXNlU3luYy5pZGwgKi8sCkBAIC0xODI1Niw3ICsxODI2Myw2IEBACiAJ
CQkJOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhyZWFkLmggKi8sCiAJCQkJ
OTdCQzY5RUYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi8sCiAJCQkJ
OTdCQzY5RjAxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oICovLAotCQkJCTk3
QkM2OUYxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJ
CQlBOENDQkI0NjE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuY3BwICov
LAogCQkJCUE4Q0NCQjQ3MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFzZS5o
ICovLAogCQkJCUE4Q0NCQjRFMTUxRjgzNUEwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJEYXRhYmFz
ZS5pZGwgKi8sCkBAIC0yMjU0MSw2ICsyMjU0Nyw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDMxMDVCQjE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVh
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxQUYxNTAxNjU2RjE1MTAwQzZENEY3IC8qIEV4Y2x1
c2lvblNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMjI4OTksMTEgKzIyOTA2LDExIEBA
CiAJCQkJOTdCQzZBMjUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3QkM2QTMzMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTJC
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
QkM2QTJFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRhc2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3QkM2QTMwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJOTdCQzZBMzMxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
VHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMjc0NkYwRTgzNjY0NTAwRTdG
OTc1IC8qIERhdGFSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0
NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5
OTEzMTYzNkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODk4Nyw2ICsyODk5NCw3IEBACiAJCQkJRDY0ODlEMjUxNjZGRkNGMTAwN0MwMzFCIC8qIEpT
SFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENkY3OTYwRDE2NkZG
RUNFMDA3NkREMTggLyogSlNIVE1MVGVtcGxhdGVFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxRDU5MUJCMTY2QzJFNkMwMEU2QkYwMiAvKiBQbHVnSW5PcmlnaW5IYXNoLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFz
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJl
dmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAK
LSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCBi
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNvY2tldEVuCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxl
ZCgpCiB7Ci0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAg
cmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiB9CiAKIGJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlU3luY0VuYWJsZWQoKQogewot
ICAgIHJldHVybiBBYnN0cmFjdERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDEzNzQ3NikKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UGFnZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4
dC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24KICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8
IEhhc1VubG9hZExpc3RlbmVyOwogICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAg
IGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkp
KSB7CisgICAgaWYgKERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMo
ZnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIG9wZW4g
ZGF0YWJhc2UgaGFuZGxlcyIpOwogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzRGF0
YWJhc2VIYW5kbGVzOwogICAgIH0KQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFBhZ2VDYWNoZTo6
Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgfHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNv
bnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2Fj
aGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpKQogICAgICAgICAmJiAoIWRvY3VtZW50LT5kb21X
aW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAg
ICYmICFEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCisgICAgICAg
ICYmICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50
KQogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICAmJiAhU2hhcmVk
V29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVkV29ya2Vycyhkb2N1bWVudCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTM3NDc2KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSAr
NDYsOSBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIK
ICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNv
bnRleHQuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKQEAgLTQ1MCw4ICs0NTAsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGlu
ZyhVbmxvYWRFdmVuCiAgICAgICAgIGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxl
dGUpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGUgRGF0YWJhc2VDb250ZXh0IHdhdGNoIGZvciBzb21ldGhpbmcgbGlrZSBBY3RpdmVET01P
YmplY3Q6OnN0b3AoKSByYXRoZXIgdGhhbiBiZWluZyBzcGVjaWFsLWNhc2VkIGhlcmU/Ci0gICAg
ICAgIERhdGFiYXNlQ29udGV4dDo6c3RvcERhdGFiYXNlcyhkb2MsIDApOworICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoZSBEYXRhYmFzZU1hbmFnZXIgd2F0Y2ggZm9yIHNvbWV0aGluZyBsaWtl
IEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpIHJhdGhlciB0aGFuIGJlaW5nIHNwZWNpYWwtY2FzZWQg
aGVyZT8KKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERhdGFiYXNlcyhk
b2MsIDApOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJET01XaW5kb3cuaCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNp
bmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJCYXJJbmZvLmgiCiAj
aW5jbHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQuaCIKQEAgLTQ2LDggKzQ1LDYgQEAKICNpbmNsdWRl
ICJET01VUkwuaCIKICNpbmNsdWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJE
T01XaW5kb3dOb3RpZmljYXRpb25zLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRl
ICJEYXRhYmFzZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShy
ZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTQzLDggKzQyLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisjaW5jbHVkZSAiRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCi0jaW5jbHVkZSAiRGF0
YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMjMx
LDcgKzIzMCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIHN0b3AgdGhlIGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3Rp
dmVET01PYmplY3RzKCkgYmVsb3c/CiAgICAgICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBj
bGVhbnVwU3luYzsKLSAgICAgICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKHdvcmtl
ckNvbnRleHQsICZjbGVhbnVwU3luYyk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLnN0b3BEYXRhYmFzZXMod29ya2VyQ29udGV4dCwgJmNsZWFudXBTeW5jKTsKICNlbmRpZgog
CiAgICAgICAgIHdvcmtlckNvbnRleHQtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7CkBAIC0yNjYs
NyArMjY1LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogICAgICAgICBtX3dvcmtlckNv
bnRleHQtPnNjcmlwdCgpLT5zY2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7CiAKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5p
bnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KG1fd29ya2VyQ29udGV4dC5nZXQoKSk7Cisg
ICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQobV93b3JrZXJDb250ZXh0LmdldCgpKTsKICNlbmRpZgogICAgICAgICBtX3J1bkxv
b3AucG9zdFRhc2soV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OmNyZWF0ZSgpKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMi0xMiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJu
YWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFn
ZXIgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgRGF0YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNl
LAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBh
cmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZVdpdGhO
YW1lRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFn
ZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFu
YWdlcjo6c2V0UXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDEyLTEyLTEyICBTaW1vbiBQ
ZW5hICA8c3BlbmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgc2VjdGlvbnMgZG9j
dW1lbnRhdGlvbiB0byBXZWJLaXQyIEdUSysgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JDaG9vc2VyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFi
YXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVJY29uTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpA
QCAtNTQ5LDkgKzU0OSwxMCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFz
ZVF1CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJD
bGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKICAgICBTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7
CiAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlTmFtZSwgb3JpZ2luKTsKLSAgICB1
aW50NjRfdCBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZv
ck9yaWdpbihvcmlnaW4pOwotICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSA9IERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CisgICAgRGF0YWJh
c2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKyAgICBE
YXRhYmFzZURldGFpbHMgZGV0YWlscyA9IGRiTWFuYWdlci5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkYXRhYmFzZU5hbWUsIG9yaWdpbik7CisgICAgdWludDY0X3QgY3VycmVudFF1b3RhID0gZGJN
YW5hZ2VyLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7CisgICAgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlID0gZGJNYW5hZ2VyLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAgICAgdWludDY0X3Qg
bmV3UXVvdGEgPSAwOwogICAgIFJlZlB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlP
cmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihv
cmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBuZXdRdW90YSA9IG1fcGFnZS0+aW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudCgpLmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEobV9wYWdlLCB3ZWJT
ZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCks
IGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgp
LCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CkBAIC01NjIsNyArNTYzLDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpSZXBseShuZXdRdW90YSksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogICAgIH0KIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNl
dFF1b3RhKG9yaWdpbiwgbmV3UXVvdGEpOworICAgIGRiTWFuYWdlci5zZXRRdW90YShvcmlnaW4s
IG5ld1F1b3RhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VEZXRhaWxz
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MCwxMiArNTAsMTIgQEAgV2ViRGF0
YWJhc2VNYW5hZ2VyJiBXZWJEYXRhYmFzZU1hbmFnZXI6OgogCiB2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KQogewotICAg
IERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VEaXJlY3RvcnkpOwor
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmluaXRpYWxpemUoZGF0YWJhc2VEaXJlY3Rv
cnkpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7Ci0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KHRoaXMpOworICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldENsaWVudCh0aGlzKTsKIH0KIAogV2ViRGF0YWJhc2VN
YW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIFdl
YkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiB7CiAgICAgV2ViUHJvY2Vzczo6TG9j
YWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIoV2ViUHJvY2Vzczo6c2hh
cmVkKCkpOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVu
dCBieSBhZGRpbmcgYSBmdW5jdGlvbiB0byBEYXRhYmFzZVRyYWNrZXIKKyAgICAvLyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBtYWRlIG1vcmUgZWZmaWNpZW50IGJ5IGFkZGluZyBhIGZ1bmN0aW9uIHRv
IERhdGFiYXNlTWFuYWdlcgogICAgIC8vIHRvIGdldCBib3RoIHRoZSBvcmlnaW5zIGFuZCB0aGUg
VmVjdG9yIG9mIERhdGFiYXNlRGV0YWlscyBmb3IgZWFjaCBvcmlnaW4gaW4gb25lCiAgICAgLy8g
c2hvdC4gIFRoYXQgd291bGQgYXZvaWQgdGFraW5nIHRoZSBudW1lcm91cyBsb2NrcyB0aGlzIHJl
cXVpcmVzLgogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiBvcmlnaW5zOwot
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMob3JpZ2lucyk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKIAogICAgIFZlY3RvcjxP
cmlnaW5BbmREYXRhYmFzZXM+IG9yaWdpbkFuZERhdGFiYXNlc1ZlY3RvcjsKICAgICBvcmlnaW5B
bmREYXRhYmFzZXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShvcmlnaW5zLnNpemUoKSk7
CkBAIC04NSwxMyArODUsMTMgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNl
c0J5TwogICAgICAgICBPcmlnaW5BbmREYXRhYmFzZXMgb3JpZ2luQW5kRGF0YWJhc2VzOwogCiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3I7Ci0gICAgICAgIGlmICghRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW5zW2ldLmdldCgp
LCBuYW1lVmVjdG9yKSkKKyAgICAgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5k
YXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCksIG5hbWVWZWN0b3IpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVmVjdG9yPERhdGFiYXNlRGV0YWlscz4gZGV0
YWlsc1ZlY3RvcjsKICAgICAgICAgZGV0YWlsc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG5hbWVWZWN0b3Iuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBuYW1l
VmVjdG9yLnNpemUoKTsgaisrKSB7Ci0gICAgICAgICAgICBEYXRhYmFzZURldGFpbHMgZGV0YWls
cyA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5h
bWVWZWN0b3Jbal0sIG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgRGF0YWJhc2VEZXRh
aWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihuYW1lVmVjdG9yW2pdLCBvcmlnaW5zW2ldLmdldCgpKTsKICAgICAgICAgICAgIGlm
IChkZXRhaWxzLm5hbWUoKS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApA
QCAtMTAyLDggKzEwMiw4IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNC
eU8KICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5v
cmlnaW5JZGVudGlmaWVyID0gb3JpZ2luc1tpXS0+ZGF0YWJhc2VJZGVudGlmaWVyKCk7Ci0gICAg
ICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5RdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOwotICAgICAgICBvcmlnaW5B
bmREYXRhYmFzZXMub3JpZ2luVXNhZ2UgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2Fn
ZUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKKyAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2Vz
Lm9yaWdpblF1b3RhID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4o
b3JpZ2luc1tpXS5nZXQoKSk7CisgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5Vc2Fn
ZSA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdpbnNbaV0u
Z2V0KCkpOwogICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMuZGF0YWJhc2VzLnN3YXAoZGV0YWls
c1ZlY3Rvcik7IAogICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXNWZWN0b3IuYXBwZW5kKG9yaWdp
bkFuZERhdGFiYXNlcyk7CiAgICAgfQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyOjpnZXREYXRhYmFzZU9yaWcKICAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1pbmF0
aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IG9yaWdpbnM7Ci0gICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5vcmlnaW5zKG9yaWdpbnMpOwogCiAgICAgc2l6ZV90IG51bU9yaWdpbnMg
PSBvcmlnaW5zLnNpemUoKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgV2ViRGF0YWJhc2VN
YW5hZ2VyOjpkZWxldGVEYXRhYmFzZVcKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uob3JpZ2lu
LmdldCgpLCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbi5nZXQoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0CkBAIC0xNDUsMTQgKzE0NSwxNCBAQCB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VzCiAgICAgaWYgKCFvcmlnaW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0
ZU9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRl
bGV0ZU9yaWdpbihvcmlnaW4uZ2V0KCkpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6
ZGVsZXRlQWxsRGF0YWJhc2VzKCkgY29uc3QKIHsKICAgICBXZWJQcm9jZXNzOjpMb2NhbFRlcm1p
bmF0aW9uRGlzYWJsZXIgdGVybWluYXRpb25EaXNhYmxlcihXZWJQcm9jZXNzOjpzaGFyZWQoKSk7
CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKIH0K
IAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdApAQCAt
MTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRRdW90YUZvck9yaWcK
ICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuc2V0UXVvdGEob3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEob3JpZ2luLmdldCgpLCBxdW90YSk7CiB9CiAKIHZv
aWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiAx
Mzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRh
dGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFz
ZU1hbmFnZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNZXNzYWdl
SUQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBw
dWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50IHsKK2NsYXNzIFdlYkRhdGFiYXNl
TWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJDbGllbnQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkRhdGFiYXNlTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYkRhdGFiYXNlTWFuYWdlciYgc2hhcmVkKCk7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNv
bnN0OwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcikgY29uc3Q7CiAKLSAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJD
bGllbnQKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXJDbGllbnQKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKSBP
VkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEwICs4MCwxMCBA
QAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNv
dXJjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oPgpAQCAtMjMwMyw3ICsyMzAzLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkS2V5KCkpKTsKIAogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkYXRhYmFzZXNFbmFibGVkS2V5
KCkpKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRhdGFiYXNlc0VuYWJsZWRL
ZXkoKSkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFi
YXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBvZiBhY2Nl
c3NpbmcgRGF0YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0
YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdl
YmtpdDIKKyAgICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAxMi0xMi0wNSAgSGFsdG9uIEh1byAgPGhhbHRvbi5odW9A
aW50ZWwuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5pZnkgY29kaW5nIHN0eWxlIGZvciBDTWFr
ZSBmaWxlcwpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBACiAJ
CTRCRjk5RjkxMEFFMDUwQkMwMDgxNUMyQiAvKiBXZWJFZGl0b3JDbGllbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RjBBRTA1MEJDMDA4
MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovOyB9OwogCQk1MTFGM0ZENTBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJNTExRjNGRDYwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRh
dGFiYXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNG
RDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovOyB9Owot
CQk1MTFGM0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLzsgfTsKKwkJ
NTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDMwQ0VD
Qzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oICovOyB9OworCQk1MTFG
M0ZEODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDQwQ0VDQzg4
RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLzsgfTsKIAkJNTE0OTRD
RDYwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDQwQzdFQkRFMDAwNDE3
OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovOyB9OwogCQk1MTQ5NENENzBDN0VCREUw
MDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8qIFdl
Ykljb25EYXRhYmFzZUNsaWVudC5tbSAqLzsgfTsKIAkJNTE0OTREMjQwQzdFQzFCNzAwNDE3OEM1
IC8qIFdlYk5TTm90aWZpY2F0aW9uQ2VudGVyRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ5NEQyMjBDN0VDMUI2MDA0MTc4QzUgLyogV2Vi
TlNOb3RpZmljYXRpb25DZW50ZXJFeHRyYXMuaCAqLzsgfTsKQEAgLTQ4OSw4ICs0ODksOCBAQAog
CQk0QkY5OUY4RjBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkVkaXRvckNsaWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdl
YkRhdGFiYXNlTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkRhdGFiYXNlTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTExRjNGRDIwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1
NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFG
M0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyog
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTNENDIyRTAzNENGNTVBMDBDQTJBQ0QgLyogV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlBMDQyOTM5MkIwMENBMkQz
QSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE0NDNGOUIwNDI5Mzky
QjAwQ0EyRDNBIC8qIFdlYlBvbGljeURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpA
QCAtMTA0NiwxMiArMTA0NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk1MTFGM0ZEMTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1t
ICovLAorCQkJCTUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQuaCAqLywKKwkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCTUxQUVERUYwMENFQ0Y0NTcwMDg1NDMyOCAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJJbnRlcm5hbC5oICovLAogCQkJCTUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2
NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8sCiAJCQkJQTVERUZDMEQxMUQ1MzQz
RTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJQTVERUZDMEUx
MUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAotCQkJCTUx
MUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywK
LQkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lm1tICovLAogCQkJCTNBQjAyQUY1MTJDMTMxOUIwMEZCQjY5NCAvKiBXZWJTdG9yYWdlTWFuYWdl
ci5tbSAqLywKIAkJCQkzQUUxNUQ0RjEyREJERUQ0MDA5MzIzQzggLyogV2ViU3RvcmFnZU1hbmFn
ZXJJbnRlcm5hbC5oICovLAogCQkJCTNBQjAyQUZGMTJDMTMyQjIwMEZCQjY5NCAvKiBXZWJTdG9y
YWdlTWFuYWdlclByaXZhdGUuaCAqLywKQEAgLTE0NDUsMTAgKzE0NDUsMTAgQEAKIAkJCQkwNjVB
RDVBMzBCMEMzMkM3MDA1QTJCMUQgLyogV2ViQ29udGV4dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzOTgxMDE2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJDb3JlU3RhdGlzdGljcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMkExQTQxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRhc2hi
b2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1
IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBRURF
RjEwQ0VDRjQ1NzAwODU0MzI4IC8qIFdlYkRhdGFiYXNlTWFuYWdlckludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTFGM0ZENjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5h
Z2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZDMEYxMUQ1MzQzRTAwODg1Mjcz
IC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFGM0ZE
NzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTA0QjA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU4QTQwOTYwQTE0ODUzQjAwNUU2OTg3IC8qIFdlYkRhdGFTb3Vy
Y2VJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEMwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkRhdGFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTE4NjksOCArMTg2
OSw4IEBACiAJCQkJOTM5ODEwQkYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkNvcmVTdGF0aXN0aWNz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMkExQTUxMjNCMEIzQzAwOUZFMTJBIC8qIFdlYkRh
c2hib2FyZFJlZ2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMUYzRkQ1MENFQ0M4OEYwMDg1
MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTFGM0ZE
ODBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8q
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEVE
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRhU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTM5ODEwRUYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMUIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkRl
ZmF1bHRFZGl0aW5nRGVsZWdhdGUubSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTIt
MTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRl
IGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJh
c2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3RE
YXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0
byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGluZ3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKwogMjAxMi0xMi0xMSAg
S2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBWaWJyYXRp
b24gQVBJOiBJREwgdHlwZSBkb2Vzbid0IG1hdGNoIGltcGxlbWVudGF0aW9uIHR5cGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTM3NDc2
KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksOCArMzksOCBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRh
LmgiCiAjaW5jbHVkZSAiRE9NU3VwcG9ydC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VTeW5jLmgiCi0jaW5j
bHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRGVmYXVsdFRhcEhpZ2hsaWdodC5o
IgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEJsYWNrQmVycnkuaCIKQEAgLTU4NDMsMTMgKzU4NDMsMTMg
QEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZGlkQ2hhbmdlU2V0dGluZ3MoVwogICAgIGNvcmVTZXR0
aW5ncy0+c2V0Q29va2llRW5hYmxlZCh3ZWJTZXR0aW5ncy0+YXJlQ29va2llc0VuYWJsZWQoKSk7
CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIC8vIERhdGFiYXNlVHJhY2tlciBjYW4g
b25seSBiZSBpbml0aWFsaXplZCBmb3Igb25jZSwgc28gaXQgZG9lc24ndAotICAgIC8vIG1ha2Ug
c2Vuc2UgdG8gY2hhbmdlIGRhdGFiYXNlIHBhdGggYWZ0ZXIgRGF0YWJhc2VUcmFja2VyIGhhcwor
ICAgIC8vIERhdGFiYXNlTWFuYWdlciBjYW4gb25seSBiZSBpbml0aWFsaXplZCBmb3Igb25jZSwg
c28gaXQgZG9lc24ndAorICAgIC8vIG1ha2Ugc2Vuc2UgdG8gY2hhbmdlIGRhdGFiYXNlIHBhdGgg
YWZ0ZXIgRGF0YWJhc2VNYW5hZ2VyIGhhcwogICAgIC8vIGFscmVhZHkgYmVlbiBpbml0aWFsaXpl
ZC4KICAgICBzdGF0aWMgYm9vbCBkYmluaXQgPSBmYWxzZTsKICAgICBpZiAoIWRiaW5pdCAmJiAh
d2ViU2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpLmVtcHR5KCkpIHsKICAgICAgICAgZGJpbml0ID0g
dHJ1ZTsKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcih3ZWJTZXR0
aW5ncy0+ZGF0YWJhc2VQYXRoKCkpOworICAgICAgICBEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxp
emUod2ViU2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpKTsKICAgICB9CiAKICAgICAvLyBUaGUgZGly
ZWN0b3J5IG9mIGNhY2hlU3RvcmFnZSBmb3Igb25lIHBhZ2UgZ3JvdXAgY2FuIG9ubHkgYmUgaW5p
dGlhbGl6ZWQgb25jZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAJ
KHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsNyBAQAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tp
bmdTdG9yZV9wLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZUNsaWVudC5oIgogI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBDaHJvbWVD
bGllbnRCbGFja0JlcnJ5OjpleGNlZWRlZERhdAogICAgIH0KICNlbmRpZgogCi0gICAgRGF0YWJh
c2VUcmFja2VyJiB0cmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCk7CisgICAgRGF0
YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CiAKLSAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxVc2FnZSA9IHRyYWNrZXIudG90YWxEYXRhYmFzZVVz
YWdlKCk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpblVzYWdlID0gdHJhY2tlci51c2Fn
ZUZvck9yaWdpbihvcmlnaW4pOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbFVzYWdlID0g
bWFuYWdlci50b3RhbERhdGFiYXNlVXNhZ2UoKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgb3Jp
Z2luVXNhZ2UgPSBtYW5hZ2VyLnVzYWdlRm9yT3JpZ2luKG9yaWdpbik7CiAKLSAgICBEYXRhYmFz
ZURldGFpbHMgZGV0YWlscyA9IHRyYWNrZXIuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZSwg
b3JpZ2luKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IG1hbmFnZXIuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4obmFtZSwgb3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZXN0
aW1hdGVkU2l6ZSA9IGRldGFpbHMuZXhwZWN0ZWRVc2FnZSgpOwogICAgIGNvbnN0IFN0cmluZyYg
bmFtZVN0ciA9IGRldGFpbHMuZGlzcGxheU5hbWUoKTsKIApAQCAtNTEwLDcgKzUxMCw3IEBAIHZv
aWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXQKICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+ZGF0YWJhc2VRdW90YShv
cmlnaW5TdHIuY2hhcmFjdGVycygpLCBvcmlnaW5TdHIubGVuZ3RoKCksCiAgICAgICAgIG5hbWVT
dHIuY2hhcmFjdGVycygpLCBuYW1lU3RyLmxlbmd0aCgpLCB0b3RhbFVzYWdlLCBvcmlnaW5Vc2Fn
ZSwgZXN0aW1hdGVkU2l6ZSk7CiAKLSAgICB0cmFja2VyLnNldFF1b3RhKG9yaWdpbiwgcXVvdGEp
OworICAgIG1hbmFnZXIuc2V0UXVvdGEob3JpZ2luLCBxdW90YSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVu
Y2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFu
YWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwg
QWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4g
VGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9y
aW5nLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNy
Yy9XZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjpjbG9zZURh
dGFiYXNlSW1tZWRpYXRlbHkpOgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURhdGFiYXNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjppc0RhdGFiYXNlRW5hYmxlZCk6
CisKIDIwMTItMTItMTIgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAK
ICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgdGhlIGRhdGEgY2hhbm5lbCBkZXNjcmlw
dG9yIHBhdHRlcm4gdG8gYSBoYW5kbGVyIHBhdHRlcm4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzc0NzYpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgog
I2luY2x1ZGUgIkN1cnNvci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIkRhdGVUaW1lQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiV2ViRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2Uu
aCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIFdlYkRhdGFiYXNlOjpyZXNldFNwYWNlQXZhaWxhYmxlKGNvCiB2b2lkIFdlYkRhdGFi
YXNlOjpjbG9zZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2Vz
SW1tZWRpYXRlbHkob3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50
aWZpZXIsIGRhdGFiYXNlTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc0
NzYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFi
YXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgog
I2luY2x1ZGUgIk1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKQEAgLTQ1LDE0ICs0NSwx
NCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVE
YXRhYmFzZShib29sIGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFi
c3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZW5hYmxlKTsKICNlbmRpZgogfQogCiBib29s
IFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7
CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiAj
ZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2
aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFz
ZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNz
aW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFi
YXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJr
aXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5j
cHA6CisgICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91c2FnZV9nZXQp
OgorICAgICAgICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KToK
KyAgICAgICAgKGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX3NldCk6Cisg
ICAgICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKKyAgICAg
ICAgKiBld2svZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0
YWJhc2VfcGF0aF9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKGV3a193ZWJfZGF0YWJhc2VfZGlzcGxheV9uYW1lX2dldCk6CisgICAgICAgIChld2tf
d2ViX2RhdGFiYXNlX2V4cGVjdGVkX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJh
c2VfZmlsZW5hbWVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2Vfc2l6ZV9nZXQpOgor
ICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUpOgorICAgICAgICAoZXdrX3dlYl9kYXRh
YmFzZV9yZW1vdmVfYWxsKToKKwogMjAxMi0xMi0xMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBWaWJyYXRpb24gQVBJOiBJREwgdHlwZSBkb2Vzbid0
IG1hdGNoIGltcGxlbWVudGF0aW9uIHR5cGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTM3NDc2
KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBDaHJvbWVDbGll
bnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIHVpbnQ2NF90IHF1b3RhOwogICAgIFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsK
IAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOworICAgIERh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOwogICAgIHF1b3RhID0gZXdr
X3ZpZXdfZXhjZWVkZWRfZGF0YWJhc2VfcXVvdGEobV92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lLnV0Zjgo
KS5kYXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CkBAIC00MzMs
MTAgKzQzMywxMCBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRhYmFzZVF1CiAg
ICAgLyogaWYgY2xpZW50IGRpZCBub3Qgc2V0IHF1b3RhLCBhbmQgZGF0YWJhc2UgaXMgYmVpbmcg
Y3JlYXRlZCBub3csIHRoZQogICAgICAqIGRlZmF1bHQgcXVvdGEgaXMgYXBwbGllZAogICAgICAq
LwotICAgIGlmICghcXVvdGEgJiYgIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5
Rm9yT3JpZ2luKG9yaWdpbikpCisgICAgaWYgKCFxdW90YSAmJiAhRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuaGFzRW50cnlGb3JPcmlnaW4ob3JpZ2luKSkKICAgICAgICAgcXVvdGEgPSBld2tf
c2V0dGluZ3Nfd2ViX2RhdGFiYXNlX2RlZmF1bHRfcXVvdGFfZ2V0KCk7CiAKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKKyAgICBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKIH0KICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3Bw
CShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5
X29yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUg
IkFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5
X29yaWdpbl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9kYXRhYmFzZS5oIgpAQCAtNjcs
NyArNjcsNyBAQCB1aW50NjRfdCBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzCiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS51c2FnZUZvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4o
b3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2Vu
ZGlmCkBAIC03OCw3ICs3OCw3IEBAIHVpbnQ2NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2Rh
dGFiYXMKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob3JpZ2luLCAwKTsKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0
KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90
YUZvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0
dXJuIDA7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBld2tfc2VjdXJpdHlfb3JpZ2lu
X3dlYl9kYXRhYmFzZV9xdQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7
CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3Rh
KTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmln
aW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CiAjZW5kaWYKIH0KIApAQCAtMTEzLDcg
KzExMyw3IEBAIEVpbmFfTGlzdCogZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWIKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbmFtZXM7CiAKLSAg
ICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNG
b3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgbmFtZXMpKQorICAgIGlmICgh
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdp
bihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1lcykpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgaSsrKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAkocmV2aXNpb24gMTM3NDc2
KQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IgogI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzRWZsLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2lu
Y2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgpAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgZXdrX3NldHRpbmdzX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2UKIHZvaWQgZXdr
X3NldHRpbmdzX3dlYl9kYXRhYmFzZV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQogewogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRo
KSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VE
aXJlY3RvcnlQYXRoKFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKSk7CiAgICAgZWluYV9zdHJp
bmdzaGFyZV9yZXBsYWNlKCZzX3dlYkRhdGFiYXNlUGF0aCwgcGF0aCk7CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHJldmlzaW9u
IDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgImV3a193ZWJfZGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1
cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPEVpbmEu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBzdHJ1Y3QgX0V3a19XZWJfRGF0YWJhc2UgewpAQCAtNDUsNyArNDYsNyBAQCBj
b25zdCBjaGFyKiBld2tfd2ViX2RhdGFiYXNlX2Rpc3BsYXlfbmFtCiAgICAgICAgIHJldHVybiBk
YXRhYmFzZS0+ZGlzcGxheU5hbWU7CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdlYkNvcmU6OkRhdGFi
YXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2lu
KTsKICAgICBkYXRhYmFzZS0+ZGlzcGxheU5hbWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChkZXRh
aWxzLmRpc3BsYXlOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gZGF0YWJhc2Ut
PmRpc3BsYXlOYW1lOwpAQCAtNTksNyArNjAsNyBAQCB1aW50NjRfdCBld2tfd2ViX2RhdGFiYXNl
X2V4cGVjdGVkX3NpemVfCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgp
OwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5h
bWUsIG9yaWdpbik7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
YXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdl
KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhYmFzZSk7CkBAIC03NCw3ICs3NSw3IEBA
IGNvbnN0IGNoYXIqIGV3a193ZWJfZGF0YWJhc2VfZmlsZW5hbWVfZ2UKICAgICAgICAgcmV0dXJu
IGRhdGFiYXNlLT5maWxlbmFtZTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4uZ2V0KCk7Ci0gICAgV1RGOjpTdHJpbmcgcGF0
aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJh
c2Uob3JpZ2luLCBkYXRhYmFzZS0+Y29yZU5hbWUpOworICAgIFdURjo6U3RyaW5nIHBhdGggPSBX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9y
aWdpbiwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKICAgICBkYXRhYmFzZS0+ZmlsZW5hbWUgPSBlaW5h
X3N0cmluZ3NoYXJlX2FkZChwYXRoLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGRhdGFi
YXNlLT5maWxlbmFtZTsKQEAgLTEwOCw3ICsxMDksNyBAQCB1aW50NjRfdCBld2tfd2ViX2RhdGFi
YXNlX3NpemVfZ2V0KGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdl
dCgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2Ut
Pm5hbWUsIG9yaWdpbik7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNh
Z2UoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNlKTsKQEAgLTExOSw3ICsxMjAs
NyBAQCB1aW50NjRfdCBld2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KGNvbnN0CiB2b2lkIGV3a193
ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNlKQogewogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGVsZXRlRGF0YWJhc2UoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFz
ZS0+Y29yZU5hbWUpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRl
bGV0ZURhdGFiYXNlKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2UtPmNv
cmVOYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGFiYXNlKTsKICNlbmRpZgpAQCAt
MTI4LDcgKzEyOSw3IEBAIHZvaWQgZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUoRXdrX1dlYl9EYXQK
IHZvaWQgZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmVfYWxsKHZvaWQpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxl
dGVBbGxEYXRhYmFzZXMoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRh
dGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBvZiBh
Y2Nlc3NpbmcgRGF0YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQg
RGF0YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5n
IHdlYmtpdDIKKyAgICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmV4
Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdGZhdmljb25kYXRh
YmFzZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHA6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3dlYl9kYXRhYmFzZV91c2FnZSk6CisgICAgICAgICh3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF93ZWJfZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9zZXRfd2ViX2RhdGFiYXNlX3F1b3RhKToKKyAgICAgICAgKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fZ2V0X2FsbF93ZWJfZGF0YWJhc2VzKToKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9n
ZXRfZGlzcGxheV9uYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2V4cGVj
dGVkX3NpemUpOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfc2l6ZSk6CisgICAg
ICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9maWxlbmFtZSk6CisgICAgICAgICh3ZWJraXRf
d2ViX2RhdGFiYXNlX3JlbW92ZSk6CisgICAgICAgICh3ZWJraXRfcmVtb3ZlX2FsbF93ZWJfZGF0
YWJhc2VzKToKKyAgICAgICAgKHdlYmtpdF9nZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRo
KToKKyAgICAgICAgKHdlYmtpdF9zZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoKToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfdXBkYXRlX3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19u
b3RpZnkpOgorCiAyMDEyLTEyLTEyICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPgog
CiAgICAgICAgIFtHVEtdW0FDXSBHcmFwaGljc0xheWVycyBhcmUgbm90IHNob3duIG9uIHRoZSB2
aWV3cG9ydApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw3ICs3NCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtODEyLDcgKzgxMiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpwcmludChGcmFtZSogZnJh
bWUpCiB2b2lkIENocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CiAgICAgZ3VpbnQ2NCBkZWZhdWx0UXVv
dGEgPSB3ZWJraXRfZ2V0X2RlZmF1bHRfd2ViX2RhdGFiYXNlX3F1b3RhKCk7Ci0gICAgRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIGRlZmF1bHRRdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
c2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGRlZmF1bHRRdW90
YSk7CiAKICAgICBXZWJLaXRXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoZnJhbWUpOwogICAgIFdl
YktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9zZWN1cml0
eV9vcmlnaW4od2ViRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGZhdmljb25kYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw4ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAid2Vi
a2l0ZmF2aWNvbmRhdGFiYXNlLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNp
bmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3Bw
CShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aWNv
bmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIndlYmtpdGljb25kYXRhYmFzZS5oIgogCi0jaW5jbHVkZSAi
RGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c2VjdXJpdHlvcmln
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzZWN1
cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdp
bi5oIgogCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3
ZWJraXRzZWN1cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5o
PgpAQCAtMjk4LDcgKzI5OCw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
d2ViX2QKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4oY29yZU9yaWdp
bik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdl
Rm9yT3JpZ2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAt
MzIxLDcgKzMyMSw3IEBAIGd1aW50NjQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfd2ViX2QK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IGNvcmVPcmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oY29yZU9yaWdpbik7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9yT3Jp
Z2luKGNvcmVPcmlnaW4pOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMzQyLDcg
KzM0Miw3IEBAIHZvaWQgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRfd2ViX2RhdGEKIAogI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVP
cmlnaW4gPSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zZXRRdW90YShjb3JlT3JpZ2luLCBxdW90YSk7CisgICAgV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoY29yZU9yaWdpbiwgcXVvdGEpOwog
I2VuZGlmCiB9CiAKQEAgLTM2Niw3ICszNjYsNyBAQCBHTGlzdCogd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfYWxsX3dlCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4g
PSBjb3JlKHNlY3VyaXR5T3JpZ2luKTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGRhdGFiYXNl
TmFtZXM7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4oY29yZU9yaWdpbiwgZGF0YWJhc2VOYW1lcykpCisgICAgaWYg
KCFXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3Jp
Z2luKGNvcmVPcmlnaW4sIGRhdGFiYXNlTmFtZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNpemUoKTsgKytpKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YWJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJkYXRhYmFzZS5j
cHAJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJkYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJkYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0j
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRzZWN1
cml0eW9yaWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgpAQCAtMzI3
LDcgKzMyNyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9kaXMKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRl
dGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFt
ZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNvcmU6
OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5vcmln
aW4pKTsKICAgICBXVEY6OlN0cmluZyBkaXNwbGF5TmFtZSA9ICBkZXRhaWxzLmRpc3BsYXlOYW1l
KCk7CiAKICAgICBpZiAoZGlzcGxheU5hbWUuaXNFbXB0eSgpKQpAQCAtMzU5LDcgKzM1OSw3IEBA
IGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZXhwZWN0ZWQKIAogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0
YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihw
cml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0
YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5vcmlnaW4pKTsKICAgICBy
ZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpAQCAt
MzgyLDcgKzM4Miw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfc2l6ZShXZWIK
IAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRl
KiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOworICAgIFdlYkNv
cmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4ocHJpdi0+bmFtZSwgY29yZShwcml2LT5v
cmlnaW4pKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2UoKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CkBAIC00MDYsNyArNDA2LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZGF0
YWJhc2VfZ2V0X2ZpbAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0
YWJhc2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YWJhc2UtPnByaXY7CiAgICAgV1RGOjpTdHJpbmcg
Y29yZU5hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJpdi0+bmFtZSk7Ci0gICAgV1RGOjpT
dHJpbmcgY29yZVBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxs
UGF0aEZvckRhdGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgY29yZU5hbWUpOworICAgIFdURjo6
U3RyaW5nIGNvcmVQYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZnVs
bFBhdGhGb3JEYXRhYmFzZShjb3JlKHByaXYtPm9yaWdpbiksIGNvcmVOYW1lKTsKIAogICAgIGlm
IChjb3JlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiIiOwpAQCAtNDM1LDcgKzQzNSw3
IEBAIHZvaWQgd2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUoV2ViS2l0V2UKIAogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCiAgICAgV2ViS2l0V2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gd2Vi
RGF0YWJhc2UtPnByaXY7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGVsZXRlRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBwcml2LT5uYW1lKTsKKyAgICBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShjb3JlKHByaXYt
Pm9yaWdpbiksIHByaXYtPm5hbWUpOwogI2VuZGlmCiB9CiAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2
b2lkIHdlYmtpdF93ZWJfZGF0YWJhc2VfcmVtb3ZlKFdlYktpdFdlCiB2b2lkIHdlYmtpdF9yZW1v
dmVfYWxsX3dlYl9kYXRhYmFzZXMoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7
CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJh
c2VzKCk7CiAjZW5kaWYKIH0KIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgd2Via2l0X3JlbW92
ZV9hbGxfd2ViX2RhdGFiYXNlcygpCiBjb25zdCBnY2hhciogd2Via2l0X2dldF93ZWJfZGF0YWJh
c2VfZGlyZWN0b3J5X3BhdGgoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV1RG
OjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFi
YXNlRGlyZWN0b3J5UGF0aCgpOworICAgIFdURjo6U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKIAogICAgIGlm
IChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAtNDkzLDcgKzQ5Myw3IEBA
IHZvaWQgd2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3AKIHsKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogICAgIFdURjo6U3RyaW5nIGNvcmVQYXRoID0gV1RGOjpTdHJpbmc6OmZy
b21VVEY4KHBhdGgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNl
dERhdGFiYXNlRGlyZWN0b3J5UGF0aChjb3JlUGF0aCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvcmVQYXRoKTsKIAog
ICAgIGdfZnJlZSh3ZWJraXRfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgpOwogICAgIHdlYmtpdF9k
YXRhYmFzZV9kaXJlY3RvcnlfcGF0aCA9IGdfc3RyZHVwKGNvcmVQYXRoLnV0ZjgoKS5kYXRhKCkp
OwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2
aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAid2Via2l0d2Vi
dmlldy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIkFic3RyYWN0
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RJbXBsLmgiCiAjaW5jbHVkZSAi
Q2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKQEAgLTQyLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgpAQCAtMzQxMSw3ICszNDExLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogICAgIGNvcmVTZXR0aW5ncy0+c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVSdW5u
aW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBB
YnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUhU
TUw1RGF0YWJhc2UpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxh
YmxlKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTM1MTUsNyArMzUxNSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3QKICAgICAgICAgc2V0dGluZ3MtPnNldENhcmV0
QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5h
YmxlLWh0bWw1LWRhdGFiYXNlIikpIHsKLSAgICAgICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNB
dmFpbGFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKKyAgICAgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFs
dWUpKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmlu
ZygiZW5hYmxlLWh0bWw1LWxvY2FsLXN0b3JhZ2UiKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJh
c2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIG9mIGFjY2Vz
c2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRh
YmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Vi
a2l0MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJh
c2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgb3JpZ2luc10pOgor
ICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGF0YWJhc2VzV2l0aE9yaWdpbjpdKToKKyAg
ICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRldGFpbHNGb3JEYXRhYmFzZTp3aXRoT3JpZ2lu
Ol0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGVsZXRlQWxsRGF0YWJhc2VzXSk6
CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVPcmlnaW46XSk6CisgICAgICAg
ICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxldGVEYXRhYmFzZTp3aXRoT3JpZ2luOl0pOgorICAg
ICAgICAoV2ViS2l0SW5pdGlhbGl6ZURhdGFiYXNlc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBT
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oLgorICAgICAgICAoV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlckNsaWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQubW0uCisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQ6OnNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCk6CisgICAgICAgIChXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6OldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCk6CisgICAgICAgIChXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAg
ICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAo
RGlkTW9kaWZ5T3JpZ2luRGF0YTo6RGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRN
b2RpZnlPcmlnaW5EYXRhKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciB1
c2FnZV0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciBxdW90YV0pOgorICAg
ICAgICAoLVtXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciBzZXRRdW90YTpdKToKKyAgICAgICAgKiBT
dG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFN0
b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtXZWJTZWN1cml0
eU9yaWdpbiB1c2FnZV0pOgorICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBxdW90YV0pOgor
ICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBzZXRRdW90YTpdKToKKyAgICAgICAgKiBXZWJL
aXQub3JkZXI6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2NhY2hlYWJpbGl0eURpY3Rpb25hcnldKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKwogMjAx
Mi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBNZXNzYWdlVHlwZSAtIGl0
IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYktpdC5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3Jk
ZXIJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgko
d29ya2luZyBjb3B5KQpAQCAtMjIxLDkgKzIyMSw5IEBAIF9pbml0aWFsaXplTG9nQ2hhbm5lbAog
K1tXZWJIaXN0b3J5SXRlbSBpbml0aWFsaXplXQogK1tXZWJIaXN0b3J5SXRlbShXZWJJbnRlcm5h
bCkgaW5pdFdpbmRvd1dhdGNoZXJJZk5lY2Vzc2FyeV0KIF9fWjM2V2ViS2l0SW5pdGlhbGl6ZURh
dGFiYXNlc0lmTmVjZXNzYXJ5dgotX19aTjI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50MzBzaGFy
ZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnRFdgorX19aTjI0V2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50MzBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnRFdgogX19aMzRXZWJLaXRJbml0aWFs
aXplU3RvcmFnZUlmTmVjZXNzYXJ5dgotX19aTjIzV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQyOXNo
YXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50RXYKK19fWk4yM1dlYlN0b3JhZ2VNYW5hZ2VyQ2xp
ZW50MjlzaGFyZWRXZWJTdG9yYWdlTWFuYWdlckNsaWVudEV2CiBfX1pOMjFXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMxMGluaXRpYWxpemVFdgogX19aTjE1V2ViQ2hyb21lQ2xpZW50QzFFUDdXZWJWaWV3
CiBfX1pOMjBXZWJDb250ZXh0TWVudUNsaWVudEMxRVA3V2ViVmlldwpAQCAtMTkzNSw4ICsxOTM1
LDggQEAgX19aTjE1V2ViQ2hyb21lQ2xpZW50MjFleGNlZWRlZERhdGFiYXNlUQogLVtXZWJEYXRh
YmFzZVF1b3RhTWFuYWdlciBpbml0V2l0aE9yaWdpbjpdCiAtW1dlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyIHNldFF1b3RhOl0KIC1bV2ViU2VjdXJpdHlPcmlnaW4oV2ViSW50ZXJuYWwpIF9jb3JlXQot
X19aTjI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50MjNkaXNwYXRjaERpZE1vZGlmeU9yaWdpbkVQ
TjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkUKLV9fWk4yNFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dDI1ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZUVQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVS
S04zV1RGNlN0cmluZ0UKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDIzZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW5FUE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FCitfX1pOMjRXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQyNWRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VFUE43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW5FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxN0ZyYW1lTG9hZGVy
Q2xpZW50MTdkaWROb3RBbGxvd1NjcmlwdEV2CiAtW1dlYkJhY2tGb3J3YXJkTGlzdCBmb3J3YXJk
TGlzdENvdW50XQogLVtXZWJCYWNrRm9yd2FyZExpc3QgYmFja0xpc3RDb3VudF0KQEAgLTE5ODAs
NyArMTk4MCw3IEBAIF9fWk4zV1RGOUhhc2hUYWJsZUl4U3Q0cGFpckl4TlNfOVJldGFpblAKIF9f
Wk4zV1RGOUhhc2hUYWJsZUl4U3Q0cGFpckl4TlNfOVJldGFpblB0ckkxNE5TTXV0YWJsZUFycmF5
RUVFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzVfRUVOU183SW50SGFzaEl5RUVOU18xNFBhaXJI
YXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0l4RUVOU0JfSVM0X0VFRUVTQ19FNnJlaGFzaEVpCiAt
W1dlYkZyYW1lVmlldyhXZWJQcml2YXRlKSBfYXJlYV0KICtbV2ViV29ya2Vyc1ByaXZhdGUgd29y
a2VyVGhyZWFkQ291bnRdCi1fX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMjBkaXNwYXRjaFRvTWFp
blRocmVhZEVQMjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnRQTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbkUKK19fWk4xOURpZE1vZGlmeU9yaWdpbkRhdGEyMGRpc3BhdGNoVG9NYWluVGhyZWFkRVAy
NFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudFBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQogX19a
TjE5RGlkTW9kaWZ5T3JpZ2luRGF0YTM1ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJl
YWRFUHYKIF9fWk4xNVdlYkNocm9tZUNsaWVudDI1ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQ
TjdXZWJDb3JlN0VsZW1lbnRFCiAtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciAuY3h4X2NvbnN0
cnVjdF0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VN
YW5hZ2VyLm1tCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdl
L1dlYkRhdGFiYXNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCi0jaW1wb3J0ICJXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQuaCIKKyNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oIgogI2ltcG9y
dCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFi
YXNlVHJhY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC02Miw3ICs2Miw3IEBAICsgKFdlYkRhdGFiYXNlTWFuYWdlciAqKSBzaGFyZWRXZWJEYXRh
YmEKIC0gKE5TQXJyYXkgKilvcmlnaW5zCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gPiBjb3JlT3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmln
aW5zKGNvcmVPcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5z
KGNvcmVPcmlnaW5zKTsKICAgICBOU011dGFibGVBcnJheSAqd2ViT3JpZ2lucyA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29yZU9yaWdpbnMuc2l6ZSgpXTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3JlT3JpZ2lucy5zaXplKCk7ICsraSkgewpA
QCAtNzcsNyArNzcsNyBAQCAtIChOU0FycmF5ICopb3JpZ2lucwogLSAoTlNBcnJheSAqKWRhdGFi
YXNlc1dpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZVZlY3RvcjsKLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oW29yaWdpbiBfY29yZV0sIG5hbWVWZWN0b3IpKQorICAg
IGlmICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihb
b3JpZ2luIF9jb3JlXSwgbmFtZVZlY3RvcikpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAg
ICAgTlNNdXRhYmxlQXJyYXkgKm5hbWVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpuYW1lVmVjdG9yLnNpemUoKV07CkBAIC05Miw3ICs5Miw3IEBAIC0gKE5TRGlj
dGlvbmFyeSAqKWRldGFpbHNGb3JEYXRhYmFzZTooTlMKIHsKICAgICBzdGF0aWMgaWQga2V5c1sz
XSA9IHtXZWJEYXRhYmFzZURpc3BsYXlOYW1lS2V5LCBXZWJEYXRhYmFzZUV4cGVjdGVkU2l6ZUtl
eSwgV2ViRGF0YWJhc2VVc2FnZUtleX07CiAgICAgCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
YXRhYmFzZUlkZW50aWZpZXIsIFtvcmlnaW4gX2NvcmVdKTsKKyAgICBEYXRhYmFzZURldGFpbHMg
ZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGRhdGFiYXNlSWRlbnRpZmllciwgW29yaWdpbiBfY29yZV0pOwogICAgIGlmIChkZXRhaWxz
Lm5hbWUoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgCkBAIC0xMDYs
MTcgKzEwNiwxNyBAQCAtIChOU0RpY3Rpb25hcnkgKilkZXRhaWxzRm9yRGF0YWJhc2U6KE5TCiAK
IC0gKHZvaWQpZGVsZXRlQWxsRGF0YWJhc2VzCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAKIC0gKEJPT0wpZGVsZXRlT3JpZ2luOihXZWJT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0pOworICAgIHJldHVybiBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0pOwogfQogCiAt
IChCT09MKWRlbGV0ZURhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciB3aXRo
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3JlXSwgZGF0YWJh
c2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVs
ZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0sIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKIEBl
bmQKQEAgLTEzNywxMSArMTM3LDEzIEBAIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZURhdGFiYXNlc0lm
TmVjZXNzYXIKICAgICBpZiAoaW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybjsKIAorICAgIERh
dGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CisK
ICAgICAvLyBTZXQgdGhlIGRhdGFiYXNlIHJvb3QgcGF0aCBpbiBXZWJDb3JlCi0gICAgRGF0YWJh
c2VUcmFja2VyOjppbml0aWFsaXplVHJhY2tlcihkYXRhYmFzZXNEaXJlY3RvcnlQYXRoKCkpOwor
ICAgIGRiTWFuYWdlci5pbml0aWFsaXplKGRhdGFiYXNlc0RpcmVjdG9yeVBhdGgoKSk7CiAKLSAg
ICAvLyBTZXQgdGhlIERhdGFiYXNlVHJhY2tlckNsaWVudAotICAgIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnNldENsaWVudChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCgpKTsKKyAgICAvLyBTZXQgdGhlIERhdGFiYXNlTWFuYWdlckNs
aWVudAorICAgIGRiTWFuYWdlci5zZXRDbGllbnQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojpz
aGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZWQg
PSBZRVM7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzMzOCkJKGZyb20gU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDoxMzczMzgpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgCisK
KyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisKK2NsYXNzIFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGll
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJl
ZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIAorICAgIHZpcnR1YWwgfldlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZE1vZGlmeURhdGFiYXNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcik7Citwcml2YXRlOgorICAgIFdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudCgpOworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHJldmlzaW9uIDEzNzMz
OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzEsNDEgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAK
IAotI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg+CiAKLWNsYXNzIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgeworY2xhc3Mg
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
ckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCog
c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgc3RhdGljIFdlYkRhdGFiYXNl
TWFuYWdlckNsaWVudCogc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgCi0g
ICAgdmlydHVhbCB+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgdmlydHVhbCB+V2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBX
VEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKIHByaXZhdGU6Ci0gICAgV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50KCk7CisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCk7CiB9Owog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMzczMzgpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOjEzNzMzOCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpbXBvcnQgIldlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudC5oIgorCisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKworI2ltcG9ydCAiV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRl
cm5hbC5oIgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQoreworICAgIHN0YXRp
YyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKKyAgICByZXR1cm4gc2hhcmVkQ2xpZW50OworfQorCitXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQ6OldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCit7Cit9CisKK1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCit7Cit9
CisKK2NsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERpZE1vZGlmeU9yaWdpbkRhdGEpOworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
VG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQorICAgIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4
dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGNsaWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHko
KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkLCBjb250ZXh0KTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNs
aWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQorICAgICAgICA6IGNsaWVu
dChjbGllbnQpCisgICAgICAgICwgb3JpZ2luKG9yaWdpbikKKyAgICB7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQodm9pZCogY29u
dGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERp
ZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8gPSBzdGF0aWNfY2FzdDxEaWRNb2RpZnlPcmlnaW5EYXRh
Kj4oY29udGV4dCk7CisgICAgICAgIGluZm8tPmNsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oaW5mby0+b3JpZ2luLmdldCgpKTsKKyAgICAgICAgZGVsZXRlIGluZm87CisgICAgfQorCisg
ICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQ7CisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW47Cit9OworCit2b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICBpZiAo
IWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNo
VG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMs
IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdp
bjpvcmlnaW5dKTsKKworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmljYXRp
b24gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdDp3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKV07Cit9CisKK3ZvaWQgV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQoreworICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hU
b01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywg
W1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2lu
Om9yaWdpbl0pOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHVzZXJJbmZvKEFkb3B0TlMs
IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5pdFdpdGhPYmplY3RzQW5kS2V5czooTlNTdHJpbmcgKilkYXRhYmFz
ZUlkZW50aWZpZXIsIFdlYkRhdGFiYXNlSWRlbnRpZmllcktleSwgbmlsXSk7CisgICAgCisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpXZWJEYXRhYmFzZURpZE1vZGlmeURhdGFiYXNlTm90aWZpY2F0aW9uCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDp3ZWJTZWN1
cml0eU9yaWdpbi5nZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlckluZm86dXNlckluZm8uZ2V0KCldOworfQorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50Lm1tCShyZXZpc2lvbiAxMzczMzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwzMiAr
MSwyOSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
ICAKLSNpbXBvcnQgIldlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgorI2ltcG9ydCAiV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCkBAIC0z
OCwzMSArMzUsMzEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKQorV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBXZWJEYXRhYmFzZU1h
bmFnZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB7Ci0gICAgc3Rh
dGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpOworICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQq
IHNoYXJlZENsaWVudCA9IG5ldyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAgICByZXR1
cm4gc2hhcmVkQ2xpZW50OwogfQogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OldlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpCitXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OldlYkRhdGFiYXNl
TWFuYWdlckNsaWVudCgpCiB7CiB9CiAKLVdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCgpCitXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQoKQogewogfQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKKyAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudCwgU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEq
IGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+aXNvbGF0
ZWRDb3B5KCkpOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRh
OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7CiAgICAgfQog
CiBwcml2YXRlOgotICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKKyAgICBEaWRN
b2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCiAgICAgICAgIDogY2xpZW50KGNsaWVudCkKICAg
ICAgICAgLCBvcmlnaW4ob3JpZ2luKQogICAgIHsKQEAgLTc2LDExICs3MywxMSBAQCBwcml2YXRl
OgogICAgICAgICBkZWxldGUgaW5mbzsKICAgICB9CiAKLSAgICBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQqIGNsaWVudDsKKyAgICBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVudDsKICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKIH07CiAKLXZvaWQgV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkg
ewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlz
LCBvcmlnaW4pOwpAQCAtOTMsNyArOTAsNyBAQCB2b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dDo6ZGlzcGF0Y2hECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdDp3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKV07CiB9CiAKLXZvaWQg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQordm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7
CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
OjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tCShyZXZp
c2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVv
dGFNYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJX
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIgogCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbklu
dGVybmFsLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTUwLDcgKzUwLDcgQEAgLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0
dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKFtfb3JpZ2luIF9j
b3JlXSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVzYWdlRm9yT3Jp
Z2luKFtfb3JpZ2luIF9jb3JlXSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC01
OSw3ICs1OSw3IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogLSAodW5zaWduZWQgbG9u
ZyBsb25nKXF1b3RhCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsK
KyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oW19v
cmlnaW4gX2NvcmVdKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTcxLDcgKzcx
LDcgQEAgLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiAtICh2b2lkKXNldFF1b3RhOih1bnNp
Z25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKFtfb3JpZ2luIF9jb3JlXSwgcXVvdGEp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKFtfb3JpZ2luIF9jb3Jl
XSwgcXVvdGEpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAkocmV2aXNpb24gMTM3NDc2KQor
KysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
IAotCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgotCi1jbGFzcyBX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Q2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBz
aGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKLSAgICAKLSAgICB2aXJ0dWFsIH5XZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2Rp
ZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdU
Rjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpOwotcHJpdmF0ZToKLSAgICBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKTsKLX07Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHJldmlzaW9u
IDEzNzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSAKLSNpbXBvcnQgIldl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLQot
I2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgotI2ltcG9ydCAiV2ViU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oIgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50OjpzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQot
ewotICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZENsaWVudCA9IG5l
dyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKLSAgICByZXR1cm4gc2hhcmVkQ2xpZW50Owot
fQotCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgp
Ci17Ci19Ci0KLVdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCgpCi17Ci19Ci0KLWNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwotcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50
LCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQotICAgIHsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2lu
RGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGNsaWVudCwgb3JpZ2luLT5p
c29sYXRlZENvcHkoKSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdp
bkRhdGE6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkLCBjb250ZXh0KTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQotICAg
ICAgICA6IGNsaWVudChjbGllbnQpCi0gICAgICAgICwgb3JpZ2luKG9yaWdpbikKLSAgICB7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJl
YWQodm9pZCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8gPSBzdGF0aWNfY2FzdDxEaWRNb2Rp
ZnlPcmlnaW5EYXRhKj4oY29udGV4dCk7Ci0gICAgICAgIGluZm8tPmNsaWVudC0+ZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oaW5mby0+b3JpZ2luLmdldCgpKTsKLSAgICAgICAgZGVsZXRlIGluZm87
Ci0gICAgfQotCi0gICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQ7Ci0gICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW47Ci19OwotCi12b2lkIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
LXsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIERpZE1vZGlmeU9yaWdpbkRh
dGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3Jp
Z2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVT
ZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKLQotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlPcmln
aW5Ob3RpZmljYXRpb24gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdDp3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKV07Ci19Ci0KLXZv
aWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQot
ewotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0
YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmln
aW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNl
Y3VyaXR5T3JpZ2luOm9yaWdpbl0pOwotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHVzZXJJ
bmZvKEFkb3B0TlMsIFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFdpdGhPYmplY3RzQW5kS2V5czooTlNTdHJp
bmcgKilkYXRhYmFzZUlkZW50aWZpZXIsIFdlYkRhdGFiYXNlSWRlbnRpZmllcktleSwgbmlsXSk7
Ci0gICAgCi0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90
aWZpY2F0aW9uTmFtZTpXZWJEYXRhYmFzZURpZE1vZGlmeURhdGFiYXNlTm90aWZpY2F0aW9uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9i
amVjdDp3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckluZm86dXNlckluZm8uZ2V0KCldOwotfQot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogI2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIK
ICNpbXBvcnQgIldlYlF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRh
YmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNjEsMTQgKzE2MSwxNCBAQCAtIChpZDxXZWJRdW90
YU1hbmFnZXI+KWRhdGFiYXNlUXVvdGFNYW5hCiAKIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIG1l
dGhvZHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCByZW1vdmVkIGxhdGVyLgogLy8gQ2xpZW50
cyBzaG91bGQgaW5zdGVhZCBnZXQgYSBXZWJRdW90YU1hbmFnZXIsIGFuZCBxdWVyeSAvIHNldCB0
aGUgcXVvdGEgdmlhIHRoZSBNYW5hZ2VyLgotLy8gTk9URTogdGhlIDxXZWJDb3JlL0RhdGFiYXNl
VHJhY2tlci5oPiAjaW5jbHVkZSBzaG91bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLgorLy8gTk9URTog
dGhlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPiAjaW5jbHVkZSBzaG91bGQgYmUgcmVtb3Zl
ZCBhcyB3ZWxsLgogCiBAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJpdHlPcmlnaW4gKERlcHJlY2F0
ZWQpCiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogewogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3Jp
Z2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpOworICAgIHJl
dHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihyZWludGVycHJl
dF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKQEAgLTE3Nyw3ICsxNzcsNyBAQCAtICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UK
IC0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKHJl
aW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpOworICAgIHJldHVybiBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9jYXN0
PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKQEAgLTE4Niw3ICsxODYsNyBAQCAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIC0gKHZv
aWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEocmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpOworICAgIERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlP
cmlnaW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFj
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL0RhdGFiYXNlQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaD4KQEAgLTEwNjksNyArMTA2OSw3IEBAIC0gKE5TTXV0YWJsZURpY3Rpb25hcnkgKilf
Y2FjaGVhYmlsaXR5RGkKICAgICAKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkgewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgICAgIGlmIChEYXRhYmFzZUNvbnRleHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpKQor
ICAgICAgICBpZiAoRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzT3BlbkRhdGFiYXNlcyhk
b2N1bWVudCkpCiAgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSBmb3JLZXk6V2ViRnJhbWVVc2VzRGF0YWJhc2VzXTsKICNlbmRpZgogICAg
ICAgICBpZiAoIWRvY3VtZW50LT5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTM3NDc2KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NyArMTExLDYgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+CiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U1ZhbHVlUmVmLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3
YXJkTGlzdEltcGwuaD4KQEAgLTExOSw2ICsxMTgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFu
YWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
b2N1bWVudExvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAt
MTQ2OCw3ICsxNDY4LDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJl
bgogICAgIHNldHRpbmdzLT5zZXRQaWN0b2dyYXBoRm9udEZhbWlseShbcHJlZmVyZW5jZXMgcGlj
dG9ncmFwaEZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGFyZVBsdWdJbnNFbmFibGVkXSk7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
LSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShbcHJlZmVyZW5jZXMgZGF0YWJh
c2VzRW5hYmxlZF0pOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxh
YmxlKFtwcmVmZXJlbmNlcyBkYXRhYmFzZXNFbmFibGVkXSk7CiAjZW5kaWYKICAgICBzZXR0aW5n
cy0+c2V0TG9jYWxTdG9yYWdlRW5hYmxlZChbcHJlZmVyZW5jZXMgbG9jYWxTdG9yYWdlRW5hYmxl
ZF0pOwogICAgIHNldHRpbmdzLT5zZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZChb
cHJlZmVyZW5jZXMgZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWRdKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEyLTEyICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVz
ZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0
ZWFkIG9mIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAg
ICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3Ig
dXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICAqIEFwaS9x
d2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSk6Cisg
ICAgICAgIChRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSk6CisgICAgICAgIChRV2ViRGF0YWJh
c2U6OnNpemUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpmaWxlTmFtZSk6CisgICAgICAgIChR
V2ViRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVt
b3ZlQWxsRGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoK
KyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VVc2FnZSk6CisgICAgICAgIChR
V2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5
T3JpZ2luOjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6
YWxsT3JpZ2lucyk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlcyk6Cisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0
aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorCiAyMDEyLTEyLTExICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29u
c29sZVR5cGVzIHNob3VsZCBub3QgZXhwb3NlIE1lc3NhZ2VUeXBlIC0gaXQgc2hvdWxkIGJlIHBy
aXZhdGUgdG8gaW5zcGVjdG9yLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFi
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2Uu
Y3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYnNl
Y3VyaXR5b3JpZ2luLmgiCiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luX3AuaCIKICNpbmNs
dWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTg3LDcgKzg3LDcgQEAgUVN0cmluZyBRV2ViRGF0YWJhc2U6Om5hbWUoKSBjb25zdAogUVN0
cmluZyBRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdl
dCgpKTsKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdpbi5nZXQoKSk7
CiAgICAgcmV0dXJuIGRldGFpbHMuZGlzcGxheU5hbWUoKTsKICNlbHNlCiAgICAgcmV0dXJuIFFT
dHJpbmcoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZGlzcGxh
eU5hbWUoKSBjb25zCiBxaW50NjQgUVdlYkRhdGFiYXNlOjpleHBlY3RlZFNpemUoKSBjb25zdAog
ewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMg
PSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5u
YW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwg
ZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwpAQCAtMTEzLDcgKzExMyw3IEBAIHFpbnQ2NCBRV2ViRGF0YWJh
c2U6OmV4cGVjdGVkU2l6ZSgpIGNvbnMKIHFpbnQ2NCBRV2ViRGF0YWJhc2U6OnNpemUoKSBjb25z
dAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFp
bHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihk
LT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0g
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFt
ZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2UoKTsK
ICNlbHNlCiAgICAgcmV0dXJuIDA7CkBAIC0xNDgsNyArMTQ4LDcgQEAgUVdlYkRhdGFiYXNlOjpR
V2ViRGF0YWJhc2UoUVdlYkRhdGFiYXNlUAogUVN0cmluZyBRV2ViRGF0YWJhc2U6OmZpbGVOYW1l
KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGQtPm9yaWdpbi5nZXQoKSwg
ZC0+bmFtZSwgZmFsc2UpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5m
dWxsUGF0aEZvckRhdGFiYXNlKGQtPm9yaWdpbi5nZXQoKSwgZC0+bmFtZSwgZmFsc2UpOwogI2Vs
c2UKICAgICByZXR1cm4gUVN0cmluZygpOwogI2VuZGlmCkBAIC0xNzEsNyArMTcxLDcgQEAgUVdl
YlNlY3VyaXR5T3JpZ2luIFFXZWJEYXRhYmFzZTo6b3JpZ2luKAogdm9pZCBRV2ViRGF0YWJhc2U6
OnJlbW92ZURhdGFiYXNlKGNvbnN0IFFXZWJEYXRhYmFzZSYgZGIpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFz
ZShkYi5kLT5vcmlnaW4uZ2V0KCksIGRiLmQtPm5hbWUpOworICAgIERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQoKSwgZGIuZC0+bmFtZSk7
CiAjZW5kaWYKIH0KIApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUVdlYkRhdGFiYXNlOjpyZW1v
dmVEYXRhYmFzZShjb25zdCAKIHZvaWQgUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMo
KQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luLmgiCiAKICNp
bmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CkBAIC0xMjEsNyArMTIxLDcgQEAgaW50IFFXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCgpIGNvbnN0
CiBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS51c2FnZUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiBEYXRhYmFz
ZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTMzLDcgKzEzMyw3IEBAIHFpbnQ2NCBRV2Vi
U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlVXNhZ2UKIHFpbnQ2NCBRV2ViU2VjdXJpdHlPcmlnaW46
OmRhdGFiYXNlUXVvdGEoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAg
cmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKGQtPm9yaWdp
bi5nZXQoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnF1b3RhRm9y
T3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBA
IC0xNDksNyArMTQ5LDcgQEAgcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VRdW90
YQogdm9pZCBRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNlUXVvdGEocWludDY0IHF1b3Rh
KQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuc2V0UXVvdGEoZC0+b3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZC0+b3JpZ2luLmdldCgpLCBxdW90YSk7CiAjZW5kaWYK
IH0KIApAQCAtMTgxLDcgKzE4MSw3IEBAIFFMaXN0PFFXZWJTZWN1cml0eU9yaWdpbj4gUVdlYlNl
Y3VyaXR5T3IKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gPiBjb3JlT3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b3JlT3JpZ2lucy5zaXplKCk7ICsraSkgewogICAgICAgICBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2
YXRlKiBwcml2ID0gbmV3IFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUoY29yZU9yaWdpbnNbaV0u
Z2V0KCkpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIFFMaXN0PFFXZWJEYXRhYmFzZT4gUVdlYlNlY3Vy
aXR5T3JpZ2luOjoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFZlY3RvcjxTdHJpbmc+
IG5hbWVWZWN0b3I7CiAKLSAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFi
YXNlTmFtZXNGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpLCBuYW1lVmVjdG9yKSkKKyAgICBpZiAo
IURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oZC0+b3Jp
Z2luLmdldCgpLCBuYW1lVmVjdG9yKSkKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlczsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZVZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAg
ICBRV2ViRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gbmV3IFFXZWJEYXRhYmFzZVByaXZhdGUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gMTM3NDc2
KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsMTAgKzIyLDkgQEAKIAogI2luY2x1ZGUgInF3ZWJwbHVnaW5kYXRhYmFzZV9wLmgi
CiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgog
I2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgpAQCAtMjMxLDcgKzIzMCw3IEBAIHZvaWQgUVdlYlNl
dHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAg
IHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0
YWJhc2VFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpPZmZsaW5lU3RvcmFnZURhdGFiYXNl
RW5hYmxlZCkpOwotICAgICAgICBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWls
YWJsZSh2YWx1ZSk7CisgICAgICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnNldElzQXZhaWxhYmxlKHZhbHVlKTsKICNlbmRpZgogCiAgICAgICAgIHZhbHVlID0gYXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCwKQEAgLTEwMDQsNyArMTAwMyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lU3Rv
cmFnZVBhdGgKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKHBhdGgpOwogI2VuZGlm
CiB9CiAKQEAgLTEwMjAsNyArMTAxOSw3IEBAIFFTdHJpbmcgUVdlYlNldHRpbmdzOjpvZmZsaW5l
U3RvcmFnZVBhdGgKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOwogI2Vs
c2UKICAgICByZXR1cm4gUVN0cmluZygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gMTM3
NDc2KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkNv
bG9yQ2hvb3NlckNsaWVudC5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGaWxlSWNvbkxvYWRlci5oIgpAQCAtNTM5LDggKzUz
OSw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW8KIHsKICAgICBx
dWludDY0IHF1b3RhID0gUVdlYlNldHRpbmdzOjpvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSgp
OwogCi0gICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdp
bihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCBxdW90YSk7CisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNF
bnRyeUZvck9yaWdpbihmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAg
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7CiAKICAgICBtX3dlYlBhZ2UtPmRhdGFiYXNlUXVv
dGFFeGNlZWRlZChRV2ViRnJhbWVBZGFwdGVyOjpraXQoZnJhbWUpLCBkYXRhYmFzZU5hbWUpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDc2KQorKysgU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMTIt
MTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRl
IGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJh
c2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3RE
YXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0
byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisg
ICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFu
YWdlcjo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFu
YWdlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlc1dp
dGhPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yRGF0YWJh
c2UpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgor
ICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJEYXRhYmFzZU1h
bmFnZXI6OnNldFF1b3RhKToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgIChX
ZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAg
ICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjp1c2FnZSk6CisgICAgICAgIChXZWJTZWN1cml0eU9y
aWdpbjo6cXVvdGEpOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnNldFF1b3RhKToKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2Vz
Q2hhbmdlZCk6CisKIDIwMTItMTItMTEgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlVHlwZXMgc2hvdWxkIG5vdCBleHBvc2Ug
TWVzc2FnZVR5cGUgLSBpdCBzaG91bGQgYmUgcHJpdmF0ZSB0byBpbnNwZWN0b3IuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzNzQ3NikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNr
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjAyLDcgKzIwMiw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KIHsKICAgICBpZiAoIXNfc2hhcmVkV2Vi
RGF0YWJhc2VNYW5hZ2VyKSB7CiAgICAgICAgIHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmFk
b3B0UmVmKFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKSk7Ci0gICAgICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldENsaWVudChzX3NoYXJlZFdlYkRhdGFiYXNlTWFu
YWdlci5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldENsaWVu
dChzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlci5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmNvcHlSZWZUbyhyZXN1bHQpOwpAQCAtMjIwLDcg
KzIyMCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4g
b3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKG9yaWdpbnMp
OworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMob3JpZ2lucyk7CiAgICAg
ICAgIENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+
ID4gPiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVjdG9yPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gPiA+OjphZG9wdChvcmlnaW5zKSk7CiAKICAgICAqcmVzdWx0ID0gZW51
bVZhcmlhbnQubGVha1JlZigpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGRhdGFiYXNlTmFtZXM7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKSwgZGF0YWJhc2VOYW1lcyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0
YWJhc2VOYW1lc0Zvck9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwg
ZGF0YWJhc2VOYW1lcyk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8VmVjdG9yPFN0cmlu
Zz4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5n
PiA+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9y
aWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlRGV0YWlscyBkZXRh
aWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4o
U3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpLAorICAgIERh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWls
c0Zvck5hbWVBbmRPcmlnaW4oU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFi
YXNlTmFtZSkpLAogICAgICAgICB3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAKICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCkBAIC0yODQsNyArMjg0LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIGlmICh0aGlzICE9
IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAg
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAKICAgICBy
ZXR1cm4gU19PSzsKIH0KQEAgLTMwMiw3ICszMDIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9y
aWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0
eU9yaWdpbigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzI0LDcgKzMyNCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAoIXdlYlNlY3Vy
aXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7
CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGVsZXRlRGF0YWJhc2Uod2ViU2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmlu
Z0xlbihkYXRhYmFzZU5hbWUpKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM4MSw3ICsz
ODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYg
KHRoaXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcob3JpZ2luKS5nZXQoKSwgcXVvdGEpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00
MTYsNyArNDE2LDcgQEAgdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlcwog
ICAgICAgICByZXR1cm47CiAKICAgICBXVEY6OlN0cmluZyBkYXRhYmFzZXNEaXJlY3RvcnkgPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKLSAgICBXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGRhdGFiYXNlc0RpcmVjdG9yeSk7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaW5pdGlhbGl6ZShkYXRhYmFzZXNEaXJl
Y3RvcnkpOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDEzNzQ3NikKKysrIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5
IEBACiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIldlYktpdC5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaD4KIAotY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDog
cHVibGljIElXZWJEYXRhYmFzZU1hbmFnZXIsIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyQ2xpZW50IHsKK2NsYXNzIFdlYkRhdGFiYXNlTWFuYWdlciA6IHB1YmxpYyBJV2ViRGF0YWJh
c2VNYW5hZ2VyLCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYkRhdGFiYXNlTWFuYWdlciogY3JlYXRlSW5zdGFuY2UoKTsKIApA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBvcmlnaW4s
CiAgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKIAotICAgIC8v
IERhdGFiYXNlVHJhY2tlckNsaWVudAorICAgIC8vIERhdGFiYXNlTWFuYWdlckNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDEz
NzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogCiAjaW5j
bHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNr
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogCiAjaWYgIUVOQUJM
RShTUUxfREFUQUJBU0UpCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xMzQsNyAr
MTM0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJTZWN1cml0eU9yaQogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCkpOworICAgICpyZXN1bHQgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51c2FnZUZv
ck9yaWdpbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKIAogICAgIHJldHVybiBTX09LOwogI2Vs
c2UKQEAgLTE1MCw3ICsxNTAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3Vy
aXR5T3JpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAg
ICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4obV9z
ZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnF1b3RhRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogICAgIHJldHVy
biBTX09LOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKQEAgLTE2Miw3ICsxNjIs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAgICAgLyogW2lu
XSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIAogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEobV9zZWN1cml0eU9y
aWdpbi5nZXQoKSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1
b3RhKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsKIAogICAgIHJldHVybiBTX09LOwog
I2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMzc0NzYpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTVmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Fic3RyYWN0RGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBsLmg+CkBAIC03Niw2ICs3NSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTQ4MDQsNyArNDgwNCw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICBociA9IHByZWZzUHJp
dmF0ZS0+ZGF0YWJhc2VzRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAg
ICAgICAgIHJldHVybiBocjsKLSAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShl
bmFibGVkKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShl
bmFibGVkKTsKICNlbmRpZgogCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmxvY2FsU3RvcmFnZUVu
YWJsZWQoJmVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzQ3NikKKysr
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNl
TWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tl
ciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3Rs
eS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFj
dG9yaW5nLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRXeDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToK
KyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6U2V0RGF0
YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpHZXREYXRhYmFzZURp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OlNldERhdGFiYXNlc0VuYWJsZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpBcmVEYXRhYmFzZXNFbmFibGVkKToKKwogMjAx
Mi0xMS0yNyAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ29uc29saWRhdGUgRnJhbWVMb2FkZXI6OmxvYWQoKSBpbnRvIG9uZSBmdW5jdGlvbiB0YWtp
bmcgYSBGcmFtZUxvYWRSZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDEz
NzQ3NikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDggKzc2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgotI2luY2x1
ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2Vu
ZGlmCiAKICNpbmNsdWRlICJ3eC93eHByZWMuaCIKQEAgLTExMjYsNyArMTEyNSw3IEBAIGJvb2wg
V2ViVmlldzo6U2hvdWxkQ2xvc2UoKSBjb25zdAogdm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZURp
cmVjdG9yeShjb25zdCB3eFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpCiB7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJhc2VEaXJlY3RvcnkpOworICAgIFdlYkNvcmU6
OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRh
YmFzZURpcmVjdG9yeSk7CiAjZW5kaWYKIH0KIApAQCAtMTEzNCw3ICsxMTMzLDcgQEAgdm9pZCBX
ZWJWaWV3OjpTZXREYXRhYmFzZURpcmVjdG9yeShjb25zdAogd3hTdHJpbmcgV2ViVmlldzo6R2V0
RGF0YWJhc2VEaXJlY3RvcnkoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0
dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlRGlyZWN0b3J5
UGF0aCgpOworICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5k
YXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKICNlbHNlCiAgICAgcmV0dXJuIHd4RW1wdHlTdHJpbmc7
CiAjZW5kaWYKQEAgLTExNDQsNyArMTE0Myw4IEBAIHd4U3RyaW5nIFdlYlZpZXc6OkdldERhdGFi
YXNlRGlyZWN0b3J5KCkKIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZChib29sIGVu
YWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpBYnN0cmFj
dERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShlbmFibGVkKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXImIGRiTWFuYWdlciA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
OworICAgIG1hbmFnZXIuc2V0SXNBdmFpbGFibGUoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIApAQCAt
MTE1Miw3ICsxMTUyLDggQEAgdm9pZCBXZWJWaWV3OjpTZXREYXRhYmFzZXNFbmFibGVkKGJvb2wg
ZQogYm9vbCBXZWJWaWV3OjpBcmVEYXRhYmFzZXNFbmFibGVkKCkKIHsKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjppc0F2YWls
YWJsZSgpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CisgICAgcmV0dXJuIGRiTWFuYWdlci5pc0F2
YWlsYWJsZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lv
biAxMzc0NzYpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50V3guaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFn
ZXIuaCIKICNlbmRpZgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmlsZUlj
b25Mb2FkZXIuaCIKQEAgLTQyNyw4ICs0MjcsOCBAQCB2b2lkIENocm9tZUNsaWVudFd4OjpleGNl
ZWRlZERhdGFiYXNlUXVvCiAgICAgaWYgKFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fd2ViVmlldy0+
R2V0TWFpbkZyYW1lKCkpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB3ZWJGcmFtZS0+R2V0
RnJhbWUoKSkKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgICAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
Lmhhc0VudHJ5Rm9yT3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAg
ICAgICAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEoZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKKyAgICAgICAgICAgICAgICBpZiAoIURhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKSkKKyAgICAgICAgICAgICAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
c2V0UXVvdGEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIHF1b3RhKTsKIH0KICNlbmRpZgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179105</attachid>
            <date>2012-12-12 12:48:29 -0800</date>
            <delta_ts>2012-12-12 14:44:32 -0800</delta_ts>
            <desc>svn up again to get the patch to apply.</desc>
            <filename>bug-104741.patch</filename>
            <type>text/plain</type>
            <size>152735</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTEyLTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5
IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBp
bnN0ZWFkIG9mIGFjY2Vzc2luZyBEYXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisg
ICAgICAgIGFuZCBEYXRhYmFzZUNvbnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBm
b3IgdXBjb21pbmcgd2Via2l0MgorICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
TWFuYWdlcjo6RGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFu
YWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0SXNBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNPcGVuRGF0YWJhc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZURpcmVjdG9yeVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpoYXNFbnRyeUZvck9yaWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjp1c2FnZUZvck9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAg
KERhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6On5E
YXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6On5EYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAoRGF0YWJhc2VUcmFja2VyKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZVN5bmNFbmFibGVkKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0
b3BMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkU2h1
dGRvd25TdGFydFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZDo6c3RvcCk6CisKIDIwMTItMTItMTIgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50
aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiByMTM3NDgxIGNhdXNlZCBhIGJ1
aWxkIGZhaWx1cmUgd2l0aCBHVEsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
Mzc1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOTQ1LDYgKzk0NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VBdXRo
b3JpemVyLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAor
ICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAogICAgIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmNwcAogICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzUwMikKKysr
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
OTMsMTMgKzIwOTMsMTUgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTeW5jLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaCBcCiAJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBcCi0JU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlci5j
cHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE0LDYgKzE0MTQsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQXV0aG9yaXplci5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmggXAogICAgIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDYWxsYmFjay5oIFwKKyAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5oIFwKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU3luYy5oIFwKICAg
ICBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oIFwKICAgICBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggXApAQCAtMjk3MCw2ICsyOTcxLDcgQEAgdXNlPyhQTFVH
SU5fQkFDS0VORF9YTElCKSB7CiBlbmFibGU/KFNRTF9EQVRBQkFTRSkgewogICAgIFNPVVJDRVMg
Kz0gXAogICAgICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNw
cCBcCisgICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBcCiAg
ICAgICAgIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcCBcCiAgICAgICAgIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIFwKICAgICAgICAgTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzY0LDE5ICszNjQsMjAgQEAgX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm1DMUV2CiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlMxXzZTdHJpbmdFU0Ff
U0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3Js
ZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdyYXBwZXJXb3JsZEQxRXYKLV9f
Wk43V2ViQ29yZTE1RGF0YWJhc2VDb250ZXh0MTZoYXNPcGVuRGF0YWJhc2VzRVBOU18yMlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRFCi1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjEyZGVsZXRl
T3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNr
ZXIxNGRlbGV0ZURhdGFiYXNlRVBOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQot
X19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHF1b3RhRm9yT3JpZ2luRVBOU18xNFNlY3Vy
aXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxNHVzYWdlRm9yT3JpZ2lu
RVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxN2lu
aXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRy
YWNrZXIxOGRlbGV0ZUFsbERhdGFiYXNlc0V2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tl
cjIyZGF0YWJhc2VOYW1lc0Zvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkVSTjNXVEY2VmVj
dG9ySU5TM182U3RyaW5nRUxtMEVFRQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIyM2Rl
dGFpbHNGb3JOYW1lQW5kT3JpZ2luRVJLTjNXVEY2U3RyaW5nRVBOU18xNFNlY3VyaXR5T3JpZ2lu
RQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5T
MV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKLV9fWk43V2ViQ29yZTE1RGF0
YWJhc2VUcmFja2VyN3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXI4c2V0
UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5FeQotX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNr
ZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlVHJhY2tlckNsaWVudEUKK19fWk43V2ViQ29yZTE1
RGF0YWJhc2VNYW5hZ2VyMTRzZXRJc0F2YWlsYWJsZUViCitfX1pON1dlYkNvcmUxNURhdGFiYXNl
TWFuYWdlcjE2aGFzT3BlbkRhdGFiYXNlc0VQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQor
X19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxMmRlbGV0ZU9yaWdpbkVQTlNfMTRTZWN1cml0
eU9yaWdpbkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTRkZWxldGVEYXRhYmFzZUVQ
TlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE1RGF0YWJh
c2VNYW5hZ2VyMTRxdW90YUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKK19fWk43V2Vi
Q29yZTE1RGF0YWJhc2VNYW5hZ2VyMTR1c2FnZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdp
bkUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXplRVJLTjNXVEY2U3Ry
aW5nRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIxOGRlbGV0ZUFsbERhdGFiYXNlc0V2
CitfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjIyZGF0YWJhc2VOYW1lc0Zvck9yaWdpbkVQ
TlNfMTRTZWN1cml0eU9yaWdpbkVSTjNXVEY2VmVjdG9ySU5TM182U3RyaW5nRUxtMEVFRQorX19a
TjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXIyM2RldGFpbHNGb3JOYW1lQW5kT3JpZ2luRVJLTjNX
VEY2U3RyaW5nRVBOU18xNFNlY3VyaXR5T3JpZ2luRQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1h
bmFnZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmln
aW5FRUVMbTBFRUUKK19fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyN21hbmFnZXJFdgorX19a
TjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5F
eQorX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNl
TWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTBzZXRGb2N1c2Vk
RWIKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTRzZXRGb2N1c2VkTm9kZUVQTlNfNE5v
ZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29u
dHJvbGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4zV1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQpA
QCAtNDMxLDcgKzQzMiw2IEBAIF9fWk43V2ViQ29yZTE1c2V0RE9NRXhjZXB0aW9uRVBOM0pTQzlF
eGUKIF9fWk43V2ViQ29yZTE1dG9ET01TdHJpbmdMaXN0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdK
U1ZhbHVlRQogX19aTjdXZWJDb3JlMTV2aXNpdGVkTGlua0hhc2hFUEt0agogX19aTjdXZWJDb3Jl
MTV2aXNpdGVkTGlua0hhc2hFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNkFic3RyYWN0
RGF0YWJhc2UxNHNldElzQXZhaWxhYmxlRWIKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNo
ZTE4ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3Jl
MTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9y
aWdpbkUKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9uRGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0
ZUViZGJkYmQKQEAgLTE5MTcsMTEgKzE5MTcsNiBAQCBfX1pON1dlYkNvcmUxNEljb25Db250cm9s
bGVyM3VybEV2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlNmNhbmNlbEV2CiBfX1pON1dl
YkNvcmUxNFJlc291cmNlSGFuZGxlOXNldENsaWVudEVQTlNfMjBSZXNvdXJjZUhhbmRsZUNsaWVu
dEUKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGVEMUV2Ci1fX1pON1dlYkNvcmUxNURhdGFi
YXNlVHJhY2tlcjE2b3JpZ2luc0RpZENoYW5nZUV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJh
Y2tlcjI1ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eUVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE1RGF0YWJhc2VUcmFja2VyMjhyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzRXYKLV9f
Wk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyMzhlbXB0eURhdGFiYXNlRmlsZXNSZW1vdmFsVGFz
a0RpZEZpbmlzaEV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjQ0ZW1wdHlEYXRhYmFz
ZUZpbGVzUmVtb3ZhbFRhc2tXaWxsQmVTY2hlZHVsZWRFdgogX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0NvbnRleHQxMmRyYXdCaWRpVGV4dEVSS05TXzRGb250RVJLTlNfN1RleHRSdW5FUktOU18xMEZs
b2F0UG9pbnRFUE5TXzEwQmlkaVN0YXR1c0VpCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDE1ZHJhd0xpbmVGb3JUZXh0RVJLTlNfMTBGbG9hdFBvaW50RWZiCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDIyc2V0RW1vamlEcmF3aW5nRW5hYmxlZEViCkBAIC0xOTYzLDggKzE5NTgs
NiBAQCBfX1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjE5Y2xlCiBfX1pON1dlYkNv
cmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjI1aGFzUmVjZWl2ZWRNZW1vcnlQcmVzc3VyZUV2CiBf
X1pON1dlYkNvcmUyMU1lbW9yeVByZXNzdXJlSGFuZGxlcjI1aW5zdGFsbE1lbW9yeVJlbGVhc2VC
bG9ja0VVMTNibG9ja19wb2ludGVyRnZ2RWIKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVI
YW5kbGVyMjVzZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlRXYKLV9fWk43V2ViQ29yZTIxU1FMaXRl
RGF0YWJhc2VUcmFja2VyN3RyYWNrZXJFdgotX19aTjdXZWJDb3JlMjFTUUxpdGVEYXRhYmFzZVRy
YWNrZXI5c2V0Q2xpZW50RVBOU18yN1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudEUKIF9fWk43
V2ViQ29yZTIxYXBwbGljYXRpb25Jc0ZhY2Vib29rRXYKIF9fWk43V2ViQ29yZTIxbmV4dEJyZWFr
YWJsZVBvc2l0aW9uRVJOU18yMUxhenlMaW5lQnJlYWtJdGVyYXRvckVpYgogX19aTjdXZWJDb3Jl
MjFuZXh0UGFyYWdyYXBoUG9zaXRpb25FUktOU18xNVZpc2libGVQb3NpdGlvbkVpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk4Nyw2ICs5ODcsNyBAQAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlU3luYy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGFzay5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAxMzc1
MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC00
NDIsNyArNDQyLDcgQEAgX19aTjdXZWJDb3JlMTVEYXRhYmFzZVRyYWNrZXIxOW9wZW5UcmFjawog
X19aTjdXZWJDb3JlMTZTUUxpdGVGaWxlU3lzdGVtMjhhcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9Q
YXRoRVJLTjNXVEY2U3RyaW5nRVM0XwogX19aTjdXZWJDb3JlMTZTUUxpdGVGaWxlU3lzdGVtMjRl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHNFUktOM1dURjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTVE
YXRhYmFzZVRyYWNrZXI3dHJhY2tlckV2Ci1fX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjlz
ZXRDbGllbnRFUE5TXzIxRGF0YWJhc2VUcmFja2VyQ2xpZW50RQorX19aTjdXZWJDb3JlMTVEYXRh
YmFzZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXIxN2luaXRpYWxpemVUcmFja2VyRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTNTdG9yYWdlVGhyZWFkNmNyZWF0ZUV2CiBfX1pON1dlYkNvcmUxNFN0
b3JhZ2VUcmFja2VyMjNzZXRTdG9yYWdlRGlyZWN0b3J5UGF0aEVSS04zV1RGNlN0cmluZ0UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKKworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisKKyNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGF0YWJhc2VNYW5hZ2VyJiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKQoreworICAgIHN0YXRpYyBEYXRhYmFzZU1hbmFnZXIqIGRiTWFuYWdlciA9IDA7Cisg
ICAgaWYgKCFkYk1hbmFnZXIpCisgICAgICAgIGRiTWFuYWdlciA9IG5ldyBEYXRhYmFzZU1hbmFn
ZXIoKTsKKworICAgIHJldHVybiAqZGJNYW5hZ2VyOworfQorCitEYXRhYmFzZU1hbmFnZXI6OkRh
dGFiYXNlTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbml0aWFsaXpl
KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6aW5p
dGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VQYXRoKTsKK30KKworI2lmICFQTEFURk9STShDSFJPTUlV
TSkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRDbGllbnQoRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
KiBjbGllbnQpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KGNs
aWVudCk7Cit9CisKK1N0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmRhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFi
YXNlRGlyZWN0b3J5UGF0aCgpOworfQorCit2b2lkIERhdGFiYXNlTWFuYWdlcjo6c2V0RGF0YWJh
c2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7Cit9CisjZW5kaWYK
KworYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1cm4gQWJz
dHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6
OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQoreworICAgIEFic3RyYWN0RGF0YWJhc2U6
OnNldElzQXZhaWxhYmxlKGF2YWlsYWJsZSk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpo
YXNPcGVuRGF0YWJhc2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIERhdGFiYXNlQ29udGV4dDo6aGFzT3BlbkRhdGFiYXNlcyhjb250ZXh0KTsKK30KKwor
dm9pZCBEYXRhYmFzZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiBzeW5jaHJvbml6ZXIpCit7Cisg
ICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKGNvbnRleHQsIHN5bmNocm9uaXplcik7
Cit9CisKK1N0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlmRG9lc05v
dEV4aXN0KQoreworICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5mdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgY3JlYXRlSWZEb2VzTm90RXhpc3QpOworfQorCisj
aWYgIVBMQVRGT1JNKENIUk9NSVVNKQorYm9vbCBEYXRhYmFzZU1hbmFnZXI6Omhhc0VudHJ5Rm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0
YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJl
c3VsdCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5zKHJlc3VsdCk7
Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpCit7CisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2lu
LCByZXN1bHQpOworfQorCitEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxz
Rm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JO
YW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRh
YmFzZU1hbmFnZXI6OnVzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7Cisg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKG9yaWdp
bik7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBEYXRhYmFzZU1hbmFnZXI6OnF1b3RhRm9yT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7Cit9CisKK3ZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpzZXRRdW90YShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCB1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGFTaXplKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3Rh
KG9yaWdpbiwgcXVvdGFTaXplKTsKK30KKwordm9pZCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcygpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlQWxs
RGF0YWJhc2VzKCk7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGVsZXRlT3JpZ2luKG9yaWdpbik7Cit9CisKK2Jvb2wgRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNl
KG9yaWdpbiwgbmFtZSk7Cit9CisKKyNlbHNlIC8vIFBMQVRGT1JNKENIUk9NSVVNKQordm9pZCBE
YXRhYmFzZU1hbmFnZXI6OmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuY2xvc2VEYXRhYmFzZXNJbW1lZGlhdGVseShvcmlnaW5JZGVudGlmaWVy
LCBuYW1lKTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKwordm9pZCBEYXRhYmFz
ZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFu
YWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERhdGFiYXNl
TWFuYWdlcl9oCisjZGVmaW5lIERhdGFiYXNlTWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRhYmFzZU1hbmFnZXJD
bGllbnQ7CitjbGFzcyBEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXI7CitjbGFzcyBTZWN1cml0eU9y
aWdpbjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFiYXNlTWFu
YWdlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VNYW5hZ2VyKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIERhdGFiYXNlTWFuYWdlciYg
bWFuYWdlcigpOworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQ
YXRoKTsKKyNpZiAhUExBVEZPUk0oQ0hST01JVU0pCisgICAgdm9pZCBzZXRDbGllbnQoRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Kik7CisgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNv
bnN0OworICAgIHZvaWQgc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYpOwor
I2VuZGlmCisKKyAgICBib29sIGlzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBzZXRJc0F2YWlsYWJs
ZShib29sKTsKKworICAgIGJvb2wgaGFzT3BlbkRhdGFiYXNlcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisgICAgLy8gV2hlbiB0aGUgZGF0YWJhc2UgY2xlYW51cCBpcyBkb25lLCBjbGVhbnVw
U3luYyB3aWxsIGJlIHNpZ25hbGxlZC4KKyAgICB2b2lkIHN0b3BEYXRhYmFzZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIERhdGFiYXNlVGFza1N5bmNocm9uaXplciopOworCisgICAgU3RyaW5n
IGZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QgPSB0cnVlKTsKKworI2lmICFQTEFURk9STShDSFJP
TUlVTSkKKyAgICBib29sIGhhc0VudHJ5Rm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CisgICAg
dm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7Cisg
ICAgYm9vbCBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHNGb3JOYW1lQW5kT3Jp
Z2luKGNvbnN0IFN0cmluZyYsIFNlY3VyaXR5T3JpZ2luKik7CisKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgdXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGFGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKKworICAgIHZvaWQgc2V0UXVv
dGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25lZCBsb25nIGxvbmcpOworCisgICAgdm9pZCBkZWxl
dGVBbGxEYXRhYmFzZXMoKTsKKyAgICBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiop
OworICAgIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOworCisjZWxzZSAvLyBQTEFURk9STShDSFJPTUlVTSkKKyAgICB2b2lkIGNsb3NlRGF0
YWJhc2VzSW1tZWRpYXRlbHkoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5hbWUpOworI2VuZGlmIC8vIFBMQVRGT1JNKENIUk9NSVVNKQorCisgICAgdm9pZCBp
bnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKworcHJpdmF0ZToKKyAgICBEYXRhYmFzZU1hbmFnZXIoKTsKKyAgICB+RGF0YWJhc2VN
YW5hZ2VyKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU1FMX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gRGF0YWJhc2VNYW5hZ2VyX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oOjEzNzMzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRGF0YWJhc2VUcmFja2Vy
Q2xpZW50X2gKKyNkZWZpbmUgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKKworI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBEYXRhYmFzZVRyYWNrZXJD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVudCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdp
biopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYgLy8gRGF0YWJhc2VUcmFja2Vy
Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3MzM4KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMSwyOSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKICAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCi0jaWZuZGVmIERhdGFiYXNlVHJhY2tlckNsaWVudF9o
Ci0jZGVmaW5lIERhdGFiYXNlVHJhY2tlckNsaWVudF9oCisjaWZuZGVmIERhdGFiYXNlTWFuYWdl
ckNsaWVudF9oCisjZGVmaW5lIERhdGFiYXNlTWFuYWdlckNsaWVudF9oCiAKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogCkBAIC0zNiw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLWNsYXNzIERhdGFiYXNlVHJhY2tlckNsaWVudCB7Citj
bGFzcyBEYXRhYmFzZU1hbmFnZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfkRhdGFiYXNlTWFuYWdlckNsaWVu
dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0
eU9yaWdpbiopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKSA9IDA7CiB9OwpA
QCAtNDcsNCArNDQsNCBAQCBwdWJsaWM6CiAKICNlbmRpZgogCi0jZW5kaWYgLy8gRGF0YWJhc2VU
cmFja2VyQ2xpZW50X2gKKyNlbmRpZiAvLyBEYXRhYmFzZU1hbmFnZXJDbGllbnRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICsz
NSw4IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiT3JpZ2luUXVv
dGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZQogICAgIHJldHVybiBTUUxpdGVG
aWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZnVsbFBhdGgpOwogfQogCi12b2lkIERhdGFi
YXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50KQordm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudChEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNsaWVu
dCkKIHsKICAgICBtX2NsaWVudCA9IGNsaWVudDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuaAkocmV2aXNpb24g
MTM3NTAyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2g7CiAKICNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCi1jbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQ7CitjbGFzcyBEYXRhYmFzZU1hbmFnZXJD
bGllbnQ7CiAKIHN0cnVjdCBTZWN1cml0eU9yaWdpblRyYWl0czsKICNlbmRpZiAvLyAhUExBVEZP
Uk0oQ0hST01JVU0pCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIGJvb2wgZGVsZXRl
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2b2lkIHNldENsaWVudChEYXRh
YmFzZVRyYWNrZXJDbGllbnQqKTsKKyAgICB2b2lkIHNldENsaWVudChEYXRhYmFzZU1hbmFnZXJD
bGllbnQqKTsKIAogICAgIC8vIEZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCBtdXN0IGJlIHRocmVh
ZCBzYWZlIHdpdGggaXRzIGRhdGEKICAgICB2b2lkIHNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFu
Z2VkKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTE0NSw3ICsxNDUs
NyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoOwogCi0g
ICAgRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBEYXRhYmFzZU1hbmFnZXJD
bGllbnQqIG1fY2xpZW50OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRGF0YWJhc2VEZXRhaWxzPiBQcm9wb3NlZERhdGFiYXNlOwogICAgIEhhc2hTZXQ8
UHJvcG9zZWREYXRhYmFzZSo+IG1fcHJvcG9zZWREYXRhYmFzZXM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2Vy
Q2xpZW50LmgJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLSNpZm5kZWYgRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKLSNkZWZpbmUgRGF0YWJhc2VU
cmFja2VyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KLSNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwotCi1jbGFzcyBEYXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1
YWwgfkRhdGFiYXNlVHJhY2tlckNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgotCi0jZW5kaWYgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtMjA5NSw3ICsy
MDk1LDcgQEAKIAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy9maWxlc3lzdGVtL0xvY2Fs
RmlsZVN5c3RlbVxcLmNwcCQnXSwKICAgICAgICAgWydleGNsdWRlJywgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlXFwuY3BwJCddLAotICAgICAgICBbJ2V4Y2x1
ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXJDbGllbnRcXC5oJCddLAor
ICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXJD
bGllbnRcXC5oJCddLAogICAgICAgICBbJ2V4Y2x1ZGUnLCAnTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRyYWNrZXJcXC5jcHAkJ10sCiAgICAgICAgIFsnZXhjbHVkZScsICdNb2R1bGVzL3dl
YmRhdGFiYXNlL09yaWdpblF1b3RhTWFuYWdlclxcLihjcHB8aCkkJ10sCiAgICAgICAgIFsnZXhj
bHVkZScsICdNb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkXFwuKGNwcHxoKSQn
XSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUyMDksNiArMjUyMDksMTQgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNc
d2ViZGF0YWJhc2VcRGF0YWJhc2VNYW5hZ2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2ViZGF0YWJhc2VcRGF0YWJh
c2VNYW5hZ2VyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxNb2R1bGVzXHdlYmRhdGFiYXNlXERhdGFiYXNlU3luYy5jcHAiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2ODMs
NiArMzY4Myw4IEBACiAJCTk3QkM2QTI3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RTUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5jcHAgKi87IH07CiAJCTk3
QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU2MTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRh
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JD
NjlFNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU0NTZGMTgxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5h
Z2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0
NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTJBMTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdCQzY5RTgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5j
cHAgKi87IH07CiAJCTk3QkM2QTJCMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUU5MTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBMkQxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFQjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VU
YXNrLmNwcCAqLzsgfTsKQEAgLTM2OTEsNyArMzY5Myw3IEBACiAJCTk3QkM2QTMwMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RUUxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVGhy
ZWFkLmggKi87IH07CiAJCTk3QkM2QTMxMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RUYxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTk3
QkM2QTMyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUYwMTUwNUYwODEwMDFCNzRB
QyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFj
a2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTdCQzZBMzMx
NTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RjExNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTM3MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5R
dW90YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdCQzY5RjUxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAg
Ki87IH07CiAJCTk3QkM2QTM4MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY2
MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIuaCAqLzsgfTsKIAkJOTdCQzZB
MzkxNTA1RjA4MTAwMUI3NEFDIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUY3MTUwNUYwODEwMDFCNzRB
QyAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi87IH07CkBAIC0xMDk5Miw3ICsxMDk5NCw3IEBA
CiAJCTk3QkM2OUVFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVRocmVhZC5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5N0JDNjlFRjE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlVHJhY2tlci5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUYwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRy
YWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VUcmFja2Vy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFi
YXNlVHJhY2tlckNsaWVudC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCQzY5RjExNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgcGF0aCA9IE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3QkM2OUY1MTUwNUYwODEwMDFCNzRBQyAvKiBPcmlnaW5RdW90YU1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT3JpZ2luUXVvdGFNYW5h
Z2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RjYxNTA1RjA4MTAwMUI3NEFD
IC8qIE9yaWdpblF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBPcmlnaW5RdW90YU1hbmFnZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2lu
UXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUY3MTUw
NUYwODEwMDFCNzRBQyAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBPcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHBhdGggPSBNb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpblVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0MTc5LDYgKzE0MTgxLDggQEAKIAkJRkRGNkJBRjcxMzRBNEM5ODAwODIyOTIw
IC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZERjdFOUMxMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dWRpb0J1ZmZlckNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkRG
N0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFi
YXNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZU1hbmFnZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTQ1NkYxNzE2NzdENzRFMDA1
RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERhdGFiYXNlTWFuYWdlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODUwRjY3NkU1
NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZENDg2
MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQ29vcmRpbmF0ZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTZGRDQ4
QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4MjUxLDYgKzE4MjU1LDkgQEAKIAkJCQk5N0JDNjlFNTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLywKIAkJCQk5N0JDNjlFNjE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggKi8sCiAJCQkJOTdCQzY5RTcxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlRGV0YWlscy5oICovLAorCQkJCUZFNDU2RjE2MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovLAorCQkJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLywKKwkJCQk5N0JDNjlGMTE1MDVGMDgxMDAxQjc0QUMg
LyogRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8sCiAJCQkJOTdCQzY5RTgxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgKi8sCiAJCQkJOTdCQzY5RTkxNTA1RjA4MTAwMUI3NEFD
IC8qIERhdGFiYXNlU3luYy5oICovLAogCQkJCTk3QkM2OUVBMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVN5bmMuaWRsICovLApAQCAtMTgyNjAsNyArMTgyNjcsNiBAQAogCQkJCTk3QkM2OUVF
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRocmVhZC5oICovLAogCQkJCTk3QkM2OUVGMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuY3BwICovLAogCQkJCTk3QkM2OUYwMTUw
NUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCAqLywKLQkJCQk5N0JDNjlGMTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCiAJCQkJQThDQ0JCNDYx
NTFGODMxNjAwQUI3Q0U5IC8qIERPTVdpbmRvd1dlYkRhdGFiYXNlLmNwcCAqLywKIAkJCQlBOEND
QkI0NzE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCAqLywKIAkJCQlB
OENDQkI0RTE1MUY4MzVBMDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaWRsICovLApA
QCAtMjI1NDcsNiArMjI1NTMsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJRkU0NTZG
MTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQzMTA1QkIxNjc1MEYxNjAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMzNzVEN0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZh
bHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyOTA1LDExICsyMjkxMiwxMSBAQAogCQkJCTk3QkM2
QTI1MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VEZXRhaWxz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0JDNkEzMzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyQjE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2VTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyRTE1MDVG
MDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEz
MDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3QkM2QTMyMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTk3QkM2QTMzMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjI3NDZGMEU4MzY2NDUwMEU3Rjk3NSAvKiBEYXRh
UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0
YXNldERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAw
MDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAtMjg5OTUsNiAr
MjkwMDIsNyBAQAogCQkJCUQ2Rjc5NjBEMTY2RkZFQ0UwMDc2REQxOCAvKiBKU0hUTUxUZW1wbGF0
ZUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFENTkxQkIxNjZDMkU2QzAw
RTZCRjAyIC8qIFBsdWdJbk9yaWdpbkhhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1MTNE
NTExNjc3RjA4ODAwMTQ5RkNCIC8qIE5vdEltcGxlbWVudGVkLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFj
dERhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0LmgiCkBAIC0xNTAsMTIgKzE1MCwxMiBAQCBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYlNvY2tldEVuCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIGJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJu
IEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiB9CiAKIGJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6b3BlbkRhdGFiYXNlU3luY0VuYWJsZWQoKQogewotICAgIHJldHVybiBBYnN0cmFj
dERhdGFiYXNlOjppc0F2YWlsYWJsZSgpOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24KICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IEhhc1VubG9hZExpc3RlbmVy
OwogICAgIH0KICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIGlmIChEYXRhYmFzZUNvbnRl
eHQ6Omhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkpKSB7CisgICAgaWYgKERhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc09wZW5EYXRhYmFzZXMoZnJhbWUtPmRvY3VtZW50KCkp
KSB7CiAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgaGFzIG9wZW4gZGF0YWJhc2UgaGFuZGxlcyIp
OwogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzRGF0YWJhc2VIYW5kbGVzOwogICAg
IH0KQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFp
bmluZ1RoCiAgICAgICAgICYmICghZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikg
fHwgKCFkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2Fj
aGUoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNO
b1N0b3JlKCkpKQogICAgICAgICAmJiAoIWRvY3VtZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZl
bnQpKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgICAgICYmICFEYXRhYmFzZUNvbnRl
eHQ6Omhhc09wZW5EYXRhYmFzZXMoZG9jdW1lbnQpCisgICAgICAgICYmICFEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KQogI2VuZGlmCiAjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICAmJiAhU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
aGFzU2hhcmVkV29ya2Vycyhkb2N1bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQAogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTQ1MCw4
ICs0NTAsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVuCiAgICAg
ICAgIGRvYy0+c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwogCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgRGF0YWJhc2VDb250
ZXh0IHdhdGNoIGZvciBzb21ldGhpbmcgbGlrZSBBY3RpdmVET01PYmplY3Q6OnN0b3AoKSByYXRo
ZXIgdGhhbiBiZWluZyBzcGVjaWFsLWNhc2VkIGhlcmU/Ci0gICAgICAgIERhdGFiYXNlQ29udGV4
dDo6c3RvcERhdGFiYXNlcyhkb2MsIDApOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBE
YXRhYmFzZU1hbmFnZXIgd2F0Y2ggZm9yIHNvbWV0aGluZyBsaWtlIEFjdGl2ZURPTU9iamVjdDo6
c3RvcCgpIHJhdGhlciB0aGFuIGJlaW5nIHNwZWNpYWwtY2FzZWQgaGVyZT8KKyAgICAgICAgRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc3RvcERhdGFiYXNlcyhkb2MsIDApOwogI2VuZGlmCiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMzc1MDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKIAotI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJCYWNrRm9yd2Fy
ZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJCYXJJbmZvLmgiCiAjaW5jbHVkZSAiQmVmb3JlVW5s
b2FkRXZlbnQuaCIKQEAgLTQ2LDggKzQ1LDYgQEAKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNs
dWRlICJET01XaW5kb3dFeHRlbnNpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3dOb3RpZmljYXRp
b25zLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZUNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisr
KyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogCi0jaW5jbHVk
ZSAiRGF0YWJhc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwu
aCIKQEAgLTQzLDggKzQyLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQpAQCAtMjMxLDcgKzIzMCw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IHN0b3AgdGhlIGRhdGFiYXNlcyBhcyBwYXJ0IG9mIHN0b3BBY3RpdmVET01PYmplY3RzKCkgYmVs
b3c/CiAgICAgICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBjbGVhbnVwU3luYzsKLSAgICAg
ICAgRGF0YWJhc2VDb250ZXh0OjpzdG9wRGF0YWJhc2VzKHdvcmtlckNvbnRleHQsICZjbGVhbnVw
U3luYyk7CisgICAgICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnN0b3BEYXRhYmFzZXMo
d29ya2VyQ29udGV4dCwgJmNsZWFudXBTeW5jKTsKICNlbmRpZgogCiAgICAgICAgIHdvcmtlckNv
bnRleHQtPnN0b3BBY3RpdmVET01PYmplY3RzKCk7CkBAIC0yNjYsNyArMjY1LDcgQEAgdm9pZCBX
b3JrZXJUaHJlYWQ6OnN0b3AoKQogICAgICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5z
Y2hlZHVsZUV4ZWN1dGlvblRlcm1pbmF0aW9uKCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgICAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KG1fd29ya2VyQ29udGV4dC5nZXQoKSk7CisgICAgICAgIERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQobV93b3JrZXJD
b250ZXh0LmdldCgpKTsKICNlbmRpZgogICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2soV29ya2Vy
VGhyZWFkU2h1dGRvd25TdGFydFRhc2s6OmNyZWF0ZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFi
YXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBvZiBhY2Nl
c3NpbmcgRGF0YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0
YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdl
YmtpdDIKKyAgICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFiYXNlTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFi
YXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0
YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9yT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZXNGb3JPcmln
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFi
YXNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UXVvdGFGb3JP
cmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMpOgorCiAyMDEyLTEyLTEyICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVj
c2lAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBGaXggdGhlIGJ1aWxkIG9uIE1hYwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yQ2hvb3Nlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbGVDaG9vc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlSWNvbkxvYWRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTU0OSw5ICs1NDksMTAgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0
YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KSktPndlYkZyYW1lKCk7CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogCi0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMg
PSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRh
YmFzZU5hbWUsIG9yaWdpbik7Ci0gICAgdWludDY0X3QgY3VycmVudFF1b3RhID0gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKLSAgICB1aW50NjRfdCBj
dXJyZW50T3JpZ2luVXNhZ2UgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9y
aWdpbihvcmlnaW4pOworICAgIERhdGFiYXNlTWFuYWdlciYgZGJNYW5hZ2VyID0gRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBkYk1hbmFn
ZXIuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOworICAgIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSA9IGRiTWFuYWdlci5xdW90YUZvck9yaWdpbihvcmlnaW4pOwor
ICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSA9IGRiTWFuYWdlci51c2FnZUZvck9yaWdp
bihvcmlnaW4pOwogICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBSZWZQdHI8V2ViU2Vj
dXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgbmV3UXVvdGEgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKG1fcGFnZSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIGRhdGFiYXNlTmFt
ZSwgZGV0YWlscy5kaXNwbGF5TmFtZSgpLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2Fn
ZSwgZGV0YWlscy5jdXJyZW50VXNhZ2UoKSwgZGV0YWlscy5leHBlY3RlZFVzYWdlKCkpOwpAQCAt
NTYyLDcgKzU2Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXUK
ICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YTo6UmVwbHkobmV3UXVvdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICB9CiAKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShvcmlnaW4sIG5ld1F1b3RhKTsKKyAgICBk
Yk1hbmFnZXIuc2V0UXVvdGEob3JpZ2luLCBuZXdRdW90YSk7CiB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RhdGFiYXNlRGV0YWlscy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VU
cmFja2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtNTAsMTIgKzUwLDEyIEBAIFdlYkRhdGFiYXNlTWFuYWdlciYgV2ViRGF0YWJhc2VNYW5hZ2Vy
OjoKIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeSkKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFj
a2VyKGRhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
bml0aWFsaXplKGRhdGFiYXNlRGlyZWN0b3J5KTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyOjpX
ZWJEYXRhYmFzZU1hbmFnZXIoKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNl
dENsaWVudCh0aGlzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRDbGllbnQo
dGhpcyk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCkBA
IC03MSwxMiArNzEsMTIgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmdldERhdGFiYXNlc0J5
TwogewogICAgIFdlYlByb2Nlc3M6OkxvY2FsVGVybWluYXRpb25EaXNhYmxlciB0ZXJtaW5hdGlv
bkRpc2FibGVyKFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKIAotICAgIC8vIEZJWE1FOiBUaGlzIGNv
dWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgYWRkaW5nIGEgZnVuY3Rpb24gdG8gRGF0YWJh
c2VUcmFja2VyCisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgbWFkZSBtb3JlIGVmZmljaWVu
dCBieSBhZGRpbmcgYSBmdW5jdGlvbiB0byBEYXRhYmFzZU1hbmFnZXIKICAgICAvLyB0byBnZXQg
Ym90aCB0aGUgb3JpZ2lucyBhbmQgdGhlIFZlY3RvciBvZiBEYXRhYmFzZURldGFpbHMgZm9yIGVh
Y2ggb3JpZ2luIGluIG9uZQogICAgIC8vIHNob3QuICBUaGF0IHdvdWxkIGF2b2lkIHRha2luZyB0
aGUgbnVtZXJvdXMgbG9ja3MgdGhpcyByZXF1aXJlcy4KIAogICAgIFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+ID4gb3JpZ2luczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5v
cmlnaW5zKG9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMo
b3JpZ2lucyk7CiAKICAgICBWZWN0b3I8T3JpZ2luQW5kRGF0YWJhc2VzPiBvcmlnaW5BbmREYXRh
YmFzZXNWZWN0b3I7CiAgICAgb3JpZ2luQW5kRGF0YWJhc2VzVmVjdG9yLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkob3JpZ2lucy5zaXplKCkpOwpAQCAtODUsMTMgKzg1LDEzIEBAIHZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyOjpnZXREYXRhYmFzZXNCeU8KICAgICAgICAgT3JpZ2luQW5kRGF0YWJhc2Vz
IG9yaWdpbkFuZERhdGFiYXNlczsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9y
OwotICAgICAgICBpZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNG
b3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSwgbmFtZVZlY3RvcikpCisgICAgICAgIGlmICghRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW5zW2ld
LmdldCgpLCBuYW1lVmVjdG9yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFZl
Y3RvcjxEYXRhYmFzZURldGFpbHM+IGRldGFpbHNWZWN0b3I7CiAgICAgICAgIGRldGFpbHNWZWN0
b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuYW1lVmVjdG9yLnNpemUoKSk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgbmFtZVZlY3Rvci5zaXplKCk7IGorKykgewotICAgICAgICAg
ICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lVmVjdG9yW2pdLCBvcmlnaW5zW2ldLmdldCgpKTsK
KyAgICAgICAgICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4obmFtZVZlY3RvcltqXSwgb3JpZ2luc1tp
XS5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoZGV0YWlscy5uYW1lKCkuaXNOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEwMiw4ICsxMDIsOCBAQCB2b2lkIFdlYkRhdGFi
YXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VzQnlPCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbnNbaV0tPmRh
dGFiYXNlSWRlbnRpZmllcigpOwotICAgICAgICBvcmlnaW5BbmREYXRhYmFzZXMub3JpZ2luUXVv
dGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW5zW2ld
LmdldCgpKTsKLSAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzLm9yaWdpblVzYWdlID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luc1tpXS5nZXQoKSk7Cisg
ICAgICAgIG9yaWdpbkFuZERhdGFiYXNlcy5vcmlnaW5RdW90YSA9IERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbnNbaV0uZ2V0KCkpOworICAgICAgICBvcmln
aW5BbmREYXRhYmFzZXMub3JpZ2luVXNhZ2UgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS51
c2FnZUZvck9yaWdpbihvcmlnaW5zW2ldLmdldCgpKTsKICAgICAgICAgb3JpZ2luQW5kRGF0YWJh
c2VzLmRhdGFiYXNlcy5zd2FwKGRldGFpbHNWZWN0b3IpOyAKICAgICAgICAgb3JpZ2luQW5kRGF0
YWJhc2VzVmVjdG9yLmFwcGVuZChvcmlnaW5BbmREYXRhYmFzZXMpOwogICAgIH0KQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnCiAgICAg
V2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJsZXIo
V2ViUHJvY2Vzczo6c2hhcmVkKCkpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gPiBvcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMob3Jp
Z2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhvcmlnaW5zKTsK
IAogICAgIHNpemVfdCBudW1PcmlnaW5zID0gb3JpZ2lucy5zaXplKCk7CiAKQEAgLTEzNCw3ICsx
MzQsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlRGF0YWJhc2VXCiAgICAgaWYg
KCFvcmlnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbi5nZXQoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAg
ICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShvcmlnaW4uZ2V0KCks
IGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxl
dGVEYXRhYmFzZXNGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25z
dApAQCAtMTQ1LDE0ICsxNDUsMTQgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURh
dGFiYXNlcwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAKLSAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVPcmlnaW4ob3JpZ2luLmdldCgpKTsKIH0KIAog
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpIGNvbnN0CiB7CiAg
ICAgV2ViUHJvY2Vzczo6TG9jYWxUZXJtaW5hdGlvbkRpc2FibGVyIHRlcm1pbmF0aW9uRGlzYWJs
ZXIoV2ViUHJvY2Vzczo6c2hhcmVkKCkpOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRR
dW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSkgY29uc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkRhdGFiYXNl
TWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnCiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKG9yaWdpbi5nZXQo
KSwgcXVvdGEpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKG9yaWdp
bi5nZXQoKSwgcXVvdGEpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJB
cmd1bWVudHMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQx
LDcgKzQxLDcgQEAgY2xhc3MgTWVzc2FnZUlEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNs
aWVudCB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJEYXRhYmFzZU1h
bmFnZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZU1hbmFnZXImIHNoYXJlZCgp
OwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VXaXRo
TmFtZUZvck9yaWdpbihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgLy8g
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50CisgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWRlbnRpZmllcikgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTM3NTAyKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCwxMCArODAsMTAgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BYnN0cmFjdERhdGFiYXNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
RnJhZ21lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KQEAgLTIzMDMsNyArMjMwMyw3
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBzZXR0aW5n
cy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjppbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxl
ZEtleSgpKSk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJh
c2U6OnNldElzQXZhaWxhYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6ZGF0YWJhc2VzRW5hYmxlZEtleSgpKSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuc2V0SXNBdmFpbGFibGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpkYXRhYmFzZXNFbmFibGVkS2V5KCkpKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRl
IGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJh
c2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3RE
YXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0
byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTItMTItMDUg
IEhhbHRvbiBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVu
aWZ5IGNvZGluZyBzdHlsZSBmb3IgQ01ha2UgZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM3NTAyKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTIsOCArOTIsOCBAQAogCQk0QkY5OUY5MTBBRTA1MEJDMDA4MTVDMkIgLyogV2Vi
RWRpdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEJGOTlGOEYwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSAqLzsg
fTsKIAkJNTExRjNGRDUwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQxMENF
Q0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gKi87IH07CiAJCTUxMUYzRkQ2
MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGM0ZEMjBDRUNDODhGMDA4
NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAv
KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaCAqLzsgfTsKLQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQubW0gKi87IH07CisJCTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQuaCAqLzsgfTsKKwkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW0gKi87IH07CiAJCTUxNDk0Q0Q2MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0
YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNDk0Q0Q0MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCAq
LzsgfTsKIAkJNTE0OTRDRDcwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDk0
Q0Q1MEM3RUJERTAwMDQxNzhDNSAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQubW0gKi87IH07CiAJ
CTUxNDk0RDI0MEM3RUMxQjcwMDQxNzhDNSAvKiBXZWJOU05vdGlmaWNhdGlvbkNlbnRlckV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0OTRE
MjIwQzdFQzFCNjAwNDE3OEM1IC8qIFdlYk5TTm90aWZpY2F0aW9uQ2VudGVyRXh0cmFzLmggKi87
IH07CkBAIC00ODksOCArNDg5LDggQEAKIAkJNEJGOTlGOEYwQUUwNTBCQzAwODE1QzJCIC8qIFdl
YkVkaXRvckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJFZGl0b3JDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYz
RkQxMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExRjNGRDQwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEx
RjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzRDQyMkUwMzRDRjU1QTAw
Q0EyQUNEIC8qIFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk1MTQ0M0Y5QTA0MjkzOTJCMDBDQTJEM0EgLyogV2ViUG9saWN5RGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9saWN5RGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTUxNDQzRjlCMDQyOTM5MkIwMENBMkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlBvbGljeURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTEwNDYsMTIgKzEwNDYsMTIgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1
IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAqLywKKwkJCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1
NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmggKi8sCisJCQkJNTExRjNGRDQwQ0VDQzg4
RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQk1MUFFREVG
MDBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50ZXJuYWwuaCAqLywKIAkJ
CQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5o
ICovLAogCQkJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFu
YWdlci5oICovLAogCQkJCUE1REVGQzBFMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1
b3RhTWFuYWdlci5tbSAqLywKLQkJCQk1MTFGM0ZEMzBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmggKi8sCi0JCQkJNTExRjNGRDQwQ0VDQzg4RjAwODUyNTY1IC8q
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbSAqLywKIAkJCQkzQUIwMkFGNTEyQzEzMTlCMDBG
QkI2OTQgLyogV2ViU3RvcmFnZU1hbmFnZXIubW0gKi8sCiAJCQkJM0FFMTVENEYxMkRCREVENDAw
OTMyM0M4IC8qIFdlYlN0b3JhZ2VNYW5hZ2VySW50ZXJuYWwuaCAqLywKIAkJCQkzQUIwMkFGRjEy
QzEzMkIyMDBGQkI2OTQgLyogV2ViU3RvcmFnZU1hbmFnZXJQcml2YXRlLmggKi8sCkBAIC0xNDQ1
LDEwICsxNDQ1LDEwIEBACiAJCQkJMDY1QUQ1QTMwQjBDMzJDNzAwNUEyQjFEIC8qIFdlYkNvbnRl
eHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAxNjA4MjRCRjAxMDA4REYw
MzggLyogV2ViQ29yZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTJBMUE0MTIz
QjBCM0MwMDlGRTEyQSAvKiBXZWJEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMUYzRkQ3MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxQUVERUYxMENFQ0Y0NTcwMDg1NDMyOCAvKiBXZWJEYXRhYmFz
ZU1hbmFnZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRjNGRDYwQ0VDQzg4RjAw
ODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1REVGQzBGMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNEIwODI0QkYwMTAwOERG
MDM4IC8qIFdlYkRhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1OEE0MDk2MEExNDg1
M0IwMDVFNjk4NyAvKiBXZWJEYXRhU291cmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDRDMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEYXRhU291cmNlUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xODY5LDggKzE4NjksOCBAQAogCQkJCTkzOTgxMEJGMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJDb3JlU3RhdGlzdGljcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRTJBMUE1
MTIzQjBCM0MwMDlGRTEyQSAvKiBXZWJEYXNoYm9hcmRSZWdpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTFGM0ZENTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTExRjNGRDgwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNl
TWFuYWdlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1REVGQzEwMTFENTM0M0UwMDg4
NTI3MyAvKiBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUx
MUYzRkQ4MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5Mzk4MTBFRDA4MjRCRjAxMDA4REYwMzggLyogV2ViRGF0YVNvdXJj
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEVGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJE
ZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTFC
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJEZWZhdWx0RWRpdGluZ0RlbGVnYXRlLm0gaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NTAy
KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJ
cyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBE
YXRhYmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRhYmFzZUNv
bnRleHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0Mgor
ICAgICAgICByZWZhY3RvcmluZy4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdz
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0YWJh
c2VRdW90YSk6CisKIDIwMTItMTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBMT0coKSB3b3JrIGluIFdlYlByb2Nlc3MgYW5kIE5ldHdvcmtQ
cm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAKICNpbmNsdWRlICJDcmVkZW50aWFs
VHJhbnNmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkRPTVN1cHBvcnQuaCIKICNpbmNsdWRlICJEYXRh
YmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
U3luYy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRlZmF1bHRU
YXBIaWdobGlnaHQuaCIKICNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnRCbGFja0JlcnJ5Lmgi
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRCbGFja0JlcnJ5LmgiCkBAIC01ODQz
LDEzICs1ODQzLDEzIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFcK
ICAgICBjb3JlU2V0dGluZ3MtPnNldENvb2tpZUVuYWJsZWQod2ViU2V0dGluZ3MtPmFyZUNvb2tp
ZXNFbmFibGVkKCkpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAvLyBEYXRhYmFz
ZVRyYWNrZXIgY2FuIG9ubHkgYmUgaW5pdGlhbGl6ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QK
LSAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5nZSBkYXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNl
VHJhY2tlciBoYXMKKyAgICAvLyBEYXRhYmFzZU1hbmFnZXIgY2FuIG9ubHkgYmUgaW5pdGlhbGl6
ZWQgZm9yIG9uY2UsIHNvIGl0IGRvZXNuJ3QKKyAgICAvLyBtYWtlIHNlbnNlIHRvIGNoYW5nZSBk
YXRhYmFzZSBwYXRoIGFmdGVyIERhdGFiYXNlTWFuYWdlciBoYXMKICAgICAvLyBhbHJlYWR5IGJl
ZW4gaW5pdGlhbGl6ZWQuCiAgICAgc3RhdGljIGJvb2wgZGJpbml0ID0gZmFsc2U7CiAgICAgaWYg
KCFkYmluaXQgJiYgIXdlYlNldHRpbmdzLT5kYXRhYmFzZVBhdGgoKS5lbXB0eSgpKSB7CiAgICAg
ICAgIGRiaW5pdCA9IHRydWU7Ci0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRy
YWNrZXIod2ViU2V0dGluZ3MtPmRhdGFiYXNlUGF0aCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5h
Z2VyOjppbml0aWFsaXplKHdlYlNldHRpbmdzLT5kYXRhYmFzZVBhdGgoKSk7CiAgICAgfQogCiAg
ICAgLy8gVGhlIGRpcmVjdG9yeSBvZiBjYWNoZVN0b3JhZ2UgZm9yIG9uZSBwYWdlIGdyb3VwIGNh
biBvbmx5IGJlIGluaXRpYWxpemVkIG9uY2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJs
YWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVDbGllbnQuaCIKICNp
bmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgotI2lu
Y2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVDbGllbnQuaCIK
ICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnQuaCIKQEAgLTQ5NiwxMiArNDk2LDEyIEBA
IHZvaWQgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6ZXhjZWVkZWREYXQKICAgICB9CiAjZW5kaWYK
IAotICAgIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpOworICAgIERhdGFiYXNlTWFuYWdlciYgbWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpOwogCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsVXNhZ2UgPSB0cmFja2VyLnRv
dGFsRGF0YWJhc2VVc2FnZSgpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBvcmlnaW5Vc2FnZSA9
IHRyYWNrZXIudXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxVc2FnZSA9IG1hbmFnZXIudG90YWxEYXRhYmFzZVVzYWdlKCk7CisgICAgdW5zaWduZWQg
bG9uZyBsb25nIG9yaWdpblVzYWdlID0gbWFuYWdlci51c2FnZUZvck9yaWdpbihvcmlnaW4pOwog
Ci0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSB0cmFja2VyLmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKG5hbWUsIG9yaWdpbik7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBtYW5h
Z2VyLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUsIG9yaWdpbik7CiAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGVzdGltYXRlZFNpemUgPSBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICAgICBj
b25zdCBTdHJpbmcmIG5hbWVTdHIgPSBkZXRhaWxzLmRpc3BsYXlOYW1lKCk7CiAKQEAgLTUxMCw3
ICs1MTAsNyBAQCB2b2lkIENocm9tZUNsaWVudEJsYWNrQmVycnk6OmV4Y2VlZGVkRGF0CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhID0gbV93ZWJQYWdlUHJpdmF0ZS0+bV9jbGllbnQtPmRh
dGFiYXNlUXVvdGEob3JpZ2luU3RyLmNoYXJhY3RlcnMoKSwgb3JpZ2luU3RyLmxlbmd0aCgpLAog
ICAgICAgICBuYW1lU3RyLmNoYXJhY3RlcnMoKSwgbmFtZVN0ci5sZW5ndGgoKSwgdG90YWxVc2Fn
ZSwgb3JpZ2luVXNhZ2UsIGVzdGltYXRlZFNpemUpOwogCi0gICAgdHJhY2tlci5zZXRRdW90YShv
cmlnaW4sIHF1b3RhKTsKKyAgICBtYW5hZ2VyLnNldFF1b3RhKG9yaWdpbiwgcXVvdGEpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc1MDIp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBp
biBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIERhdGFiYXNlTWFuYWdlciBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBEYXRh
YmFzZVRyYWNrZXIsIEFic3RyYWN0RGF0YWJhc2UsCisgICAgICAgIGFuZCBEYXRhYmFzZUNvbnRl
eHQgZGlyZWN0bHkuIFRoaXMgaXMgdG8gcHJlcGFyZSBmb3IgdXBjb21pbmcgd2Via2l0MgorICAg
ICAgICByZWZhY3RvcmluZy4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKiBzcmMvV2ViRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRh
YmFzZTo6Y2xvc2VEYXRhYmFzZUltbWVkaWF0ZWx5KToKKyAgICAgICAgKiBzcmMvV2ViUnVudGlt
ZUZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFi
bGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVGZWF0dXJlczo6aXNEYXRh
YmFzZUVuYWJsZWQpOgorCiAyMDEyLTEyLTEyICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBz
aGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNiBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUg
IkN1cnNvci5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRhdGVU
aW1lQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkRhdGVUaW1lQ2hvb3NlckltcGwuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFi
YXNlLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVk
ZSAiV2ViRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJRdW90YVRyYWNrZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldlYkRhdGFiYXNlT2JzZXJ2ZXIuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFdl
YkRhdGFiYXNlOjpyZXNldFNwYWNlQXZhaWxhYmxlKGNvCiB2b2lkIFdlYkRhdGFiYXNlOjpjbG9z
ZURhdGFiYXNlSW1tZWRpYXRlbHkoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNsb3NlRGF0YWJhc2VzSW1tZWRpYXRl
bHkob3JpZ2luSWRlbnRpZmllciwgZGF0YWJhc2VOYW1lKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5jbG9zZURhdGFiYXNlc0ltbWVkaWF0ZWx5KG9yaWdpbklkZW50aWZpZXIsIGRh
dGFiYXNlTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViUnVudGltZUZlYXR1cmVzLmgiCiAKLSNpbmNsdWRlICJBYnN0cmFjdERhdGFiYXNlLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
Ik1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCIKQEAgLTQ1LDE0ICs0NSwxNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEYXRhYmFzZShi
b29sIGVuYWJsZSkKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0
YWJhc2U6OnNldElzQXZhaWxhYmxlKGVuYWJsZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuc2V0SXNBdmFpbGFibGUoZW5hYmxlKTsKICNlbmRpZgogfQogCiBib29sIFdlYlJ1bnRp
bWVGZWF0dXJlczo6aXNEYXRhYmFzZUVuYWJsZWQoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgcmV0dXJuIEFic3RyYWN0RGF0YWJhc2U6OmlzQXZhaWxhYmxlKCk7CisgICAgcmV0
dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlzQXZhaWxhYmxlKCk7CiAjZWxzZQogICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3
NTAyKQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGlu
IERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFi
YXNlVHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4
dCBkaXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAg
ICAgIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKToKKyAgICAgICAgKiBld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHA6CisgICAg
ICAgIChld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV91c2FnZV9nZXQpOgorICAgICAg
ICAoZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWJhc2VfcXVvdGFfZ2V0KToKKyAgICAgICAg
KGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXNlX3F1b3RhX3NldCk6CisgICAgICAgIChl
d2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9nZXRfYWxsKToKKyAgICAgICAgKiBld2sv
ZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAgKGV3a19zZXR0aW5nc193ZWJfZGF0YWJhc2VfcGF0
aF9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcDoKKyAgICAgICAgKGV3
a193ZWJfZGF0YWJhc2VfZGlzcGxheV9uYW1lX2dldCk6CisgICAgICAgIChld2tfd2ViX2RhdGFi
YXNlX2V4cGVjdGVkX3NpemVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2VfZmlsZW5h
bWVfZ2V0KToKKyAgICAgICAgKGV3a193ZWJfZGF0YWJhc2Vfc2l6ZV9nZXQpOgorICAgICAgICAo
ZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUpOgorICAgICAgICAoZXdrX3dlYl9kYXRhYmFzZV9yZW1v
dmVfYWxsKToKKwogMjAxMi0xMi0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIExPRygpIHdvcmsgaW4gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1By
b2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjgsNyArNjgsNyBAQAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJh
c2VRdQogICAgIHVpbnQ2NF90IHF1b3RhOwogICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKIAotICAgIERhdGFiYXNlRGV0YWls
cyBkZXRhaWxzID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oZGF0YWJhc2VOYW1lLCBvcmlnaW4pOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxz
ID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0
YWJhc2VOYW1lLCBvcmlnaW4pOwogICAgIHF1b3RhID0gZXdrX3ZpZXdfZXhjZWVkZWRfZGF0YWJh
c2VfcXVvdGEobV92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmN1cnJlbnRVc2FnZSgp
LCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSk7CkBAIC00MzMsMTAgKzQzMywxMCBAQCB2b2lkIENo
cm9tZUNsaWVudEVmbDo6ZXhjZWVkZWREYXRhYmFzZVF1CiAgICAgLyogaWYgY2xpZW50IGRpZCBu
b3Qgc2V0IHF1b3RhLCBhbmQgZGF0YWJhc2UgaXMgYmVpbmcgY3JlYXRlZCBub3csIHRoZQogICAg
ICAqIGRlZmF1bHQgcXVvdGEgaXMgYXBwbGllZAogICAgICAqLwotICAgIGlmICghcXVvdGEgJiYg
IURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbikpCisg
ICAgaWYgKCFxdW90YSAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JP
cmlnaW4ob3JpZ2luKSkKICAgICAgICAgcXVvdGEgPSBld2tfc2V0dGluZ3Nfd2ViX2RhdGFiYXNl
X2RlZmF1bHRfcXVvdGFfZ2V0KCk7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5z
ZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5z
ZXRRdW90YShvcmlnaW4sIHF1b3RhKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9vcmlnaW4uY3BwCShyZXZpc2lvbiAxMzc1MDIpCisr
KyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X29yaWdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGUuaCIK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkRhdGFiYXNl
VHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX3dlYl9kYXRhYmFzZS5oIgpAQCAtNjcsNyArNjcsNyBAQCB1aW50NjRfdCBl
d2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKG9yaWdpbiwgMCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJl
dHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihv
cmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdp
bi5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC03OCw3ICs3OCw3IEBA
IHVpbnQ2NF90IGV3a19zZWN1cml0eV9vcmlnaW5fd2ViX2RhdGFiYXMKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwob3JpZ2luLCAwKTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3Rh
Rm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTg5
LDcgKzg5LDcgQEAgdm9pZCBld2tfc2VjdXJpdHlfb3JpZ2luX3dlYl9kYXRhYmFzZV9xdQogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKG9yaWdpbik7CiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3Rh
KG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAgICBXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShvcmlnaW4tPnNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBxdW90YSk7CiAjZW5kaWYKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBAIEVpbmFfTGlzdCog
ZXdrX3NlY3VyaXR5X29yaWdpbl93ZWJfZGF0YWIKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbmFtZXM7CiAKLSAgICBpZiAoIVdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1
cml0eU9yaWdpbi5nZXQoKSwgbmFtZXMpKQorICAgIGlmICghV2ViQ29yZTo6RGF0YWJhc2VNYW5h
Z2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihvcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luLmdldCgpLCBuYW1lcykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhaXJvVXRp
bGl0aWVzRWZsLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
IgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkljb25EYXRhYmFzZS5oIgpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgZXdrX3NldHRp
bmdzX2xvY2FsX3N0b3JhZ2VfZGF0YWJhc2UKIHZvaWQgZXdrX3NldHRpbmdzX3dlYl9kYXRhYmFz
ZV9wYXRoX3NldChjb25zdCBjaGFyKiBwYXRoKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKFdURjo6U3RyaW5nOjpmcm9tVVRGOChwYXRoKSk7CisgICAgV2ViQ29yZTo6RGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChwYXRoKSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZzX3dl
YkRhdGFiYXNlUGF0aCwgcGF0aCk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3dlYl9kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfd2ViX2RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a193ZWJfZGF0YWJh
c2UuaCIKIAotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
Y3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5o
IgpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdHJ1Y3QgX0V3
a19XZWJfRGF0YWJhc2UgewpAQCAtNDUsNyArNDYsNyBAQCBjb25zdCBjaGFyKiBld2tfd2ViX2Rh
dGFiYXNlX2Rpc3BsYXlfbmFtCiAgICAgICAgIHJldHVybiBkYXRhYmFzZS0+ZGlzcGxheU5hbWU7
CiAKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZGF0YWJhc2UtPnNlY3Vy
aXR5T3JpZ2luLmdldCgpOwotICAgIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0g
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmln
aW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9y
TmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2luKTsKICAgICBkYXRhYmFzZS0+ZGlz
cGxheU5hbWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChkZXRhaWxzLmRpc3BsYXlOYW1lKCkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gZGF0YWJhc2UtPmRpc3BsYXlOYW1lOwpAQCAtNTks
NyArNjAsNyBAQCB1aW50NjRfdCBld2tfd2ViX2RhdGFiYXNlX2V4cGVjdGVkX3NpemVfCiB7CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdlYkNvcmU6OkRhdGFi
YXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3JpZ2lu
KTsKICAgICByZXR1cm4gZGV0YWlscy5leHBlY3RlZFVzYWdlKCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShkYXRhYmFzZSk7CkBAIC03NCw3ICs3NSw3IEBAIGNvbnN0IGNoYXIqIGV3a193ZWJf
ZGF0YWJhc2VfZmlsZW5hbWVfZ2UKICAgICAgICAgcmV0dXJuIGRhdGFiYXNlLT5maWxlbmFtZTsK
IAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJp
dHlPcmlnaW4uZ2V0KCk7Ci0gICAgV1RGOjpTdHJpbmcgcGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBkYXRhYmFzZS0+
Y29yZU5hbWUpOworICAgIFdURjo6U3RyaW5nIHBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgZGF0YWJhc2UtPmNvcmVO
YW1lKTsKICAgICBkYXRhYmFzZS0+ZmlsZW5hbWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChwYXRo
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGRhdGFiYXNlLT5maWxlbmFtZTsKQEAgLTEw
OCw3ICsxMDksNyBAQCB1aW50NjRfdCBld2tfd2ViX2RhdGFiYXNlX3NpemVfZ2V0KGNvbnN0CiB7
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiog
b3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpOwotICAgIFdlYkNvcmU6OkRh
dGFiYXNlRGV0YWlscyBkZXRhaWxzID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2UtPm5hbWUsIG9yaWdpbik7CisgICAg
V2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkYXRhYmFzZS0+bmFtZSwgb3Jp
Z2luKTsKICAgICByZXR1cm4gZGV0YWlscy5jdXJyZW50VXNhZ2UoKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGRhdGFiYXNlKTsKQEAgLTExOSw3ICsxMjAsNyBAQCB1aW50NjRfdCBld2tfd2Vi
X2RhdGFiYXNlX3NpemVfZ2V0KGNvbnN0CiB2b2lkIGV3a193ZWJfZGF0YWJhc2VfcmVtb3ZlKEV3
a19XZWJfRGF0YWJhc2UqIGRhdGFiYXNlKQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0YWJhc2UoZGF0
YWJhc2UtPnNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZS0+Y29yZU5hbWUpOworICAgIFdl
YkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKGRhdGFiYXNl
LT5zZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YWJhc2UtPmNvcmVOYW1lKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGRhdGFiYXNlKTsKICNlbmRpZgpAQCAtMTI4LDcgKzEyOSw3IEBAIHZvaWQg
ZXdrX3dlYl9kYXRhYmFzZV9yZW1vdmUoRXdrX1dlYl9EYXQKIHZvaWQgZXdrX3dlYl9kYXRhYmFz
ZV9yZW1vdmVfYWxsKHZvaWQpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKKyAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMo
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc1MDIpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
NiBAQAorMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJh
c2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgRGF0YWJhc2VUcmFj
a2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRpcmVj
dGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHA6CisgICAgICAgICog
d2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHNl
Y3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3dl
Yl9kYXRhYmFzZV91c2FnZSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF93
ZWJfZGF0YWJhc2VfcXVvdGEpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X29yaWdpbl9zZXRf
d2ViX2RhdGFiYXNlX3F1b3RhKToKKyAgICAgICAgKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0
X2FsbF93ZWJfZGF0YWJhc2VzKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZGF0YWJhc2Uu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZGlzcGxheV9uYW1lKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfZGF0YWJhc2VfZ2V0X2V4cGVjdGVkX3NpemUpOgorICAgICAgICAo
d2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfc2l6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFi
YXNlX2dldF9maWxlbmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2RhdGFiYXNlX3JlbW92ZSk6
CisgICAgICAgICh3ZWJraXRfcmVtb3ZlX2FsbF93ZWJfZGF0YWJhc2VzKToKKyAgICAgICAgKHdl
YmtpdF9nZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoKToKKyAgICAgICAgKHdlYmtpdF9z
ZXRfd2ViX2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKToK
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOgorCiAyMDEyLTEyLTEy
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBBZGQgYXV0aGVudGljYXRpb24gc3VwcG9ydCB0byBEUlQgYW5kIGZpeCBleHBvc2VkIGlzc3Vl
cyBpbiB0aGUgbGlic291cCBiYWNrZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDEzNzUwMikK
KysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2VU
cmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6
OnByaW50KEZyYW1lKiBmcmFtZSkKIHZvaWQgQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNl
UXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKICAgICBn
dWludDY0IGRlZmF1bHRRdW90YSA9IHdlYmtpdF9nZXRfZGVmYXVsdF93ZWJfZGF0YWJhc2VfcXVv
dGEoKTsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZGVmYXVsdFF1b3RhKTsKKyAgICBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgZGVmYXVsdFF1b3RhKTsKIAogICAgIFdlYktpdFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGtp
dChmcmFtZSk7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF93ZWJf
ZnJhbWVfZ2V0X3NlY3VyaXR5X29yaWdpbih3ZWJGcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcAkocmV2aXNpb24g
MTM3NTAyKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJ3ZWJraXRmYXZpY29uZGF0YWJhc2UuaCIKIAotI2luY2x1ZGUgIkRhdGFi
YXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklj
b25EYXRhYmFzZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25k
YXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGljb25kYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsy
MCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAid2Via2l0aWNvbmRhdGFiYXNl
LmgiCiAKLSNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRy
YWNrZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRzZWN1cml0eW9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNlY3VyaXR5b3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIndl
YmtpdHNlY3VyaXR5b3JpZ2luLmgiCiAKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0
ZS5oIgogI2luY2x1ZGUgIndlYmtpdHNlY3VyaXR5b3JpZ2lucHJpdmF0ZS5oIgogI2luY2x1ZGUg
PGdsaWIvZ2kxOG4tbGliLmg+CkBAIC0yOTgsNyArMjk4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF93ZWJfZAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogY29yZU9yaWdpbiA9IGNvcmUoc2VjdXJpdHlPcmlnaW4p
OwotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZv
ck9yaWdpbihjb3JlT3JpZ2luKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4oY29yZU9yaWdpbik7CiAjZWxzZQogICAgIHJldHVy
biAwOwogI2VuZGlmCkBAIC0zMjEsNyArMzIxLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2dldF93ZWJfZAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogY29yZU9yaWdpbiA9IGNvcmUoc2VjdXJpdHlPcmlnaW4pOwotICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihjb3JlT3JpZ2luKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkucXVvdGFGb3JPcmlnaW4oY29yZU9yaWdpbik7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3Nl
dF93ZWJfZGF0YQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiogY29yZU9yaWdpbiA9IGNvcmUoc2VjdXJpdHlPcmlnaW4pOwotICAgIFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKGNvcmVPcmlnaW4sIHF1b3Rh
KTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShjb3Jl
T3JpZ2luLCBxdW90YSk7CiAjZW5kaWYKIH0KIApAQCAtMzY2LDcgKzM2Niw3IEBAIEdMaXN0KiB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9hbGxfd2UKICAgICBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiogY29yZU9yaWdpbiA9IGNvcmUoc2VjdXJpdHlPcmlnaW4pOwogICAgIFZlY3RvcjxXVEY6
OlN0cmluZz4gZGF0YWJhc2VOYW1lczsKIAotICAgIGlmICghV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihjb3JlT3JpZ2luLCBkYXRhYmFz
ZU5hbWVzKSkKKyAgICBpZiAoIVdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRh
dGFiYXNlTmFtZXNGb3JPcmlnaW4oY29yZU9yaWdpbiwgZGF0YWJhc2VOYW1lcykpCiAgICAgICAg
IHJldHVybiBOVUxMOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGFiYXNlTmFt
ZXMuc2l6ZSgpOyArK2kpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJkYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYmRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyAr
MjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYmRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJEYXRh
YmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZU1hbmFnZXIuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIndlYmtpdHNlY3VyaXR5b3JpZ2lucHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kx
OG4tbGliLmg+CkBAIC0zMjcsNyArMzI3LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZGF0
YWJhc2VfZ2V0X2RpcwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJLaXRXZWJE
YXRhYmFzZVByaXZhdGUqIHByaXYgPSB3ZWJEYXRhYmFzZS0+cHJpdjsKLSAgICBXZWJDb3JlOjpE
YXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2lu
KSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1l
LCBjb3JlKHByaXYtPm9yaWdpbikpOwogICAgIFdURjo6U3RyaW5nIGRpc3BsYXlOYW1lID0gIGRl
dGFpbHMuZGlzcGxheU5hbWUoKTsKIAogICAgIGlmIChkaXNwbGF5TmFtZS5pc0VtcHR5KCkpCkBA
IC0zNTksNyArMzU5LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX2RhdGFiYXNlX2dldF9leHBlY3Rl
ZAogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJLaXRXZWJEYXRhYmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJEYXRhYmFzZS0+cHJpdjsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZURldGFp
bHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNG
b3JOYW1lQW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3JpZ2luKSk7CisgICAgV2Vi
Q29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6
Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5uYW1lLCBjb3JlKHByaXYt
Pm9yaWdpbikpOwogICAgIHJldHVybiBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICNlbHNlCiAg
ICAgcmV0dXJuIDA7CkBAIC0zODIsNyArMzgyLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX2RhdGFi
YXNlX2dldF9zaXplKFdlYgogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJLaXRX
ZWJEYXRhYmFzZVByaXZhdGUqIHByaXYgPSB3ZWJEYXRhYmFzZS0+cHJpdjsKLSAgICBXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKHByaXYtPm5hbWUsIGNvcmUocHJpdi0+b3Jp
Z2luKSk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihwcml2LT5u
YW1lLCBjb3JlKHByaXYtPm9yaWdpbikpOwogICAgIHJldHVybiBkZXRhaWxzLmN1cnJlbnRVc2Fn
ZSgpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKQEAgLTQwNiw3ICs0MDYsNyBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3dlYl9kYXRhYmFzZV9nZXRfZmlsCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICBXZWJLaXRXZWJEYXRhYmFzZVByaXZhdGUqIHByaXYgPSB3ZWJEYXRhYmFzZS0+cHJpdjsK
ICAgICBXVEY6OlN0cmluZyBjb3JlTmFtZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChwcml2LT5u
YW1lKTsKLSAgICBXVEY6OlN0cmluZyBjb3JlUGF0aCA9IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoY29yZShwcml2LT5vcmlnaW4pLCBjb3Jl
TmFtZSk7CisgICAgV1RGOjpTdHJpbmcgY29yZVBhdGggPSBXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5mdWxsUGF0aEZvckRhdGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgY29y
ZU5hbWUpOwogCiAgICAgaWYgKGNvcmVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIiI7
CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2RhdGFiYXNlX3JlbW92ZShXZWJL
aXRXZQogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBXZWJLaXRXZWJEYXRhYmFzZVBy
aXZhdGUqIHByaXYgPSB3ZWJEYXRhYmFzZS0+cHJpdjsKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZShjb3JlKHByaXYtPm9yaWdpbiksIHByaXYt
Pm5hbWUpOworICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURh
dGFiYXNlKGNvcmUocHJpdi0+b3JpZ2luKSwgcHJpdi0+bmFtZSk7CiAjZW5kaWYKIH0KIApAQCAt
NDQ5LDcgKzQ0OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9kYXRhYmFzZV9yZW1vdmUoV2ViS2l0V2UK
IHZvaWQgd2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcygpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxl
dGVBbGxEYXRhYmFzZXMoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKICNlbmRpZgogfQogCkBAIC00NjcsNyArNDY3LDcgQEAg
dm9pZCB3ZWJraXRfcmVtb3ZlX2FsbF93ZWJfZGF0YWJhc2VzKCkKIGNvbnN0IGdjaGFyKiB3ZWJr
aXRfZ2V0X3dlYl9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0aCgpCiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBXVEY6OlN0cmluZyBwYXRoID0gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgV1RGOjpTdHJpbmcgcGF0
aCA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5
UGF0aCgpOwogCiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiI7CkBA
IC00OTMsNyArNDkzLDcgQEAgdm9pZCB3ZWJraXRfc2V0X3dlYl9kYXRhYmFzZV9kaXJlY3Rvcnlf
cAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgV1RGOjpTdHJpbmcgY29yZVBhdGgg
PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocGF0aCk7Ci0gICAgV2ViQ29yZTo6RGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGNvcmVQYXRoKTsKKyAgICBX
ZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBh
dGgoY29yZVBhdGgpOwogCiAgICAgZ19mcmVlKHdlYmtpdF9kYXRhYmFzZV9kaXJlY3RvcnlfcGF0
aCk7CiAgICAgd2Via2l0X2RhdGFiYXNlX2RpcmVjdG9yeV9wYXRoID0gZ19zdHJkdXAoY29yZVBh
dGgudXRmOCgpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNp
bmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0j
aW5jbHVkZSAiQWJzdHJhY3REYXRhYmFzZS5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdElt
cGwuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpA
QCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50R3RrLmgiCiAjaW5j
bHVkZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5j
bHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCkBAIC0zNDExLDcg
KzM0MTEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpCiAgICAg
Y29yZVNldHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCk7CiAKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKHNldHRpbmdz
UHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5h
Z2VyKCkuc2V0SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVIVE1MNURhdGFiYXNl
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMzUxNSw3ICszNTE1
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdAogICAgICAgICBz
ZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFs
dWUpKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19p
bnRlcm5fc3RyaW5nKCJlbmFibGUtaHRtbDUtZGF0YWJhc2UiKSkgewotICAgICAgICBBYnN0cmFj
dERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwor
ICAgICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZShnX3ZhbHVl
X2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFnZSIpKQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMTItMTIgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFs
bHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDc0MS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2Vy
IGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwK
KyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJl
IGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAgIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFu
YWdlciBvcmlnaW5zXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkYXRhYmFzZXNX
aXRoT3JpZ2luOl0pOgorICAgICAgICAoLVtXZWJEYXRhYmFzZU1hbmFnZXIgZGV0YWlsc0ZvckRh
dGFiYXNlOndpdGhPcmlnaW46XSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlTWFuYWdlciBkZWxl
dGVBbGxEYXRhYmFzZXNdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZU9y
aWdpbjpdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIGRlbGV0ZURhdGFiYXNlOndp
dGhPcmlnaW46XSk6CisgICAgICAgIChXZWJLaXRJbml0aWFsaXplRGF0YWJhc2VzSWZOZWNlc3Nh
cnkpOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
LmguCisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQpOgorICAgICAgICAqIFN0b3Jh
Z2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbS4KKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
KToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRo
cmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpEaWRNb2RpZnlPcmlnaW5EYXRh
KToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorICAgICAgICAq
IFN0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06CisgICAgICAgICgtW1dlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyIHVzYWdlXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIHNldFF1b3Rh
Ol0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg6IFJlbW92
ZWQuCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW06IFJlbW92
ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAg
ICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHVzYWdlXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5
T3JpZ2luIHF1b3RhXSk6CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHNldFF1b3RhOl0p
OgorICAgICAgICAqIFdlYktpdC5vcmRlcjoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1t
OgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FjaGVhYmlsaXR5RGljdGlvbmFyeV0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXND
aGFuZ2VkOl0pOgorCiAyMDEyLTEyLTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgTE9HKCkgd29yayBpbiBXZWJQcm9jZXNzIGFuZCBOZXR3b3Jr
UHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgkocmV2aXNpb24gMTM3NTAyKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsOSAr
MjIxLDkgQEAgX2luaXRpYWxpemVMb2dDaGFubmVsCiArW1dlYkhpc3RvcnlJdGVtIGluaXRpYWxp
emVdCiArW1dlYkhpc3RvcnlJdGVtKFdlYkludGVybmFsKSBpbml0V2luZG93V2F0Y2hlcklmTmVj
ZXNzYXJ5XQogX19aMzZXZWJLaXRJbml0aWFsaXplRGF0YWJhc2VzSWZOZWNlc3Nhcnl2Ci1fX1pO
MjRXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQzMHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dEV2CitfX1pOMjRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQzMHNoYXJlZFdlYkRhdGFiYXNlTWFu
YWdlckNsaWVudEV2CiBfX1ozNFdlYktpdEluaXRpYWxpemVTdG9yYWdlSWZOZWNlc3Nhcnl2Ci1f
X1pOMjNXZWJTdG9yYWdlVHJhY2tlckNsaWVudDI5c2hhcmVkV2ViU3RvcmFnZVRyYWNrZXJDbGll
bnRFdgorX19aTjIzV2ViU3RvcmFnZU1hbmFnZXJDbGllbnQyOXNoYXJlZFdlYlN0b3JhZ2VNYW5h
Z2VyQ2xpZW50RXYKIF9fWk4yMVdlYlBsYXRmb3JtU3RyYXRlZ2llczEwaW5pdGlhbGl6ZUV2CiBf
X1pOMTVXZWJDaHJvbWVDbGllbnRDMUVQN1dlYlZpZXcKIF9fWk4yMFdlYkNvbnRleHRNZW51Q2xp
ZW50QzFFUDdXZWJWaWV3CkBAIC0xOTM1LDggKzE5MzUsOCBAQCBfX1pOMTVXZWJDaHJvbWVDbGll
bnQyMWV4Y2VlZGVkRGF0YWJhc2VRCiAtW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIGluaXRXaXRo
T3JpZ2luOl0KIC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XQogLVtXZWJTZWN1
cml0eU9yaWdpbihXZWJJbnRlcm5hbCkgX2NvcmVdCi1fX1pOMjRXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQyM2Rpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
RQotX19aTjI0V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50MjVkaXNwYXRjaERpZE1vZGlmeURhdGFi
YXNlRVBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRQorX19aTjI0V2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50MjNkaXNwYXRjaERpZE1vZGlmeU9yaWdpbkVQTjdXZWJDb3Jl
MTRTZWN1cml0eU9yaWdpbkUKK19fWk4yNFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDI1ZGlzcGF0
Y2hEaWRNb2RpZnlEYXRhYmFzZUVQTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnQxN2RpZE5vdEFsbG93U2NyaXB0
RXYKIC1bV2ViQmFja0ZvcndhcmRMaXN0IGZvcndhcmRMaXN0Q291bnRdCiAtW1dlYkJhY2tGb3J3
YXJkTGlzdCBiYWNrTGlzdENvdW50XQpAQCAtMTk4MCw3ICsxOTgwLDcgQEAgX19aTjNXVEY5SGFz
aFRhYmxlSXhTdDRwYWlySXhOU185UmV0YWluUAogX19aTjNXVEY5SGFzaFRhYmxlSXhTdDRwYWly
SXhOU185UmV0YWluUHRySTE0TlNNdXRhYmxlQXJyYXlFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3Rv
cklTNV9FRU5TXzdJbnRIYXNoSXlFRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRz
SXhFRU5TQl9JUzRfRUVFRVNDX0U2cmVoYXNoRWkKIC1bV2ViRnJhbWVWaWV3KFdlYlByaXZhdGUp
IF9hcmVhXQogK1tXZWJXb3JrZXJzUHJpdmF0ZSB3b3JrZXJUaHJlYWRDb3VudF0KLV9fWk4xOURp
ZE1vZGlmeU9yaWdpbkRhdGEyMGRpc3BhdGNoVG9NYWluVGhyZWFkRVAyNFdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudFBON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luRQorX19aTjE5RGlkTW9kaWZ5T3Jp
Z2luRGF0YTIwZGlzcGF0Y2hUb01haW5UaHJlYWRFUDI0V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
UE43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW5FCiBfX1pOMTlEaWRNb2RpZnlPcmlnaW5EYXRhMzVk
aXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZEVQdgogX19aTjE1V2ViQ2hyb21lQ2xp
ZW50MjVlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBON1dlYkNvcmU3RWxlbWVudEUKIC1bV2Vi
S2l0RnVsbFNjcmVlbkxpc3RlbmVyIC5jeHhfY29uc3RydWN0XQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXIubW0JKHJldmlzaW9uIDEzNzUw
MikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAKLSNpbXBvcnQgIldlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oIgorI2ltcG9ydCAiV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVy
bmFsLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTYyLDcgKzYyLDcgQEAgKyAoV2Vi
RGF0YWJhc2VNYW5hZ2VyICopIHNoYXJlZFdlYkRhdGFiYQogLSAoTlNBcnJheSAqKW9yaWdpbnMK
IHsKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNvcmVPcmlnaW5zOwotICAg
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOworICAgIERh
dGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMoY29yZU9yaWdpbnMpOwogICAgIE5TTXV0
YWJsZUFycmF5ICp3ZWJPcmlnaW5zID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpjb3JlT3JpZ2lucy5zaXplKCldOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNvcmVPcmlnaW5zLnNpemUoKTsgKytpKSB7CkBAIC03Nyw3ICs3Nyw3IEBAIC0gKE5TQXJy
YXkgKilvcmlnaW5zCiAtIChOU0FycmF5ICopZGF0YWJhc2VzV2l0aE9yaWdpbjooV2ViU2VjdXJp
dHlPcmlnaW4gKilvcmlnaW4KIHsKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lVmVjdG9yOwotICAg
IGlmICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihb
b3JpZ2luIF9jb3JlXSwgbmFtZVZlY3RvcikpCisgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKFtvcmlnaW4gX2NvcmVdLCBuYW1lVmVjdG9y
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBOU011dGFibGVBcnJheSAqbmFtZXMg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6
ZSgpXTsKQEAgLTkyLDcgKzkyLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGV0YWlsc0ZvckRhdGFi
YXNlOihOUwogewogICAgIHN0YXRpYyBpZCBrZXlzWzNdID0ge1dlYkRhdGFiYXNlRGlzcGxheU5h
bWVLZXksIFdlYkRhdGFiYXNlRXhwZWN0ZWRTaXplS2V5LCBXZWJEYXRhYmFzZVVzYWdlS2V5fTsK
ICAgICAKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGRhdGFiYXNlSWRlbnRpZmllciwgW29yaWdp
biBfY29yZV0pOworICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBb
b3JpZ2luIF9jb3JlXSk7CiAgICAgaWYgKGRldGFpbHMubmFtZSgpLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgICAgICAKQEAgLTEwNiwxNyArMTA2LDE3IEBAIC0gKE5TRGljdGlv
bmFyeSAqKWRldGFpbHNGb3JEYXRhYmFzZTooTlMKIAogLSAodm9pZClkZWxldGVBbGxEYXRhYmFz
ZXMKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMo
KTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsK
IH0KIAogLSAoQk9PTClkZWxldGVPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiB7
Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihbb3Jp
Z2luIF9jb3JlXSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0
ZU9yaWdpbihbb3JpZ2luIF9jb3JlXSk7CiB9CiAKIC0gKEJPT0wpZGVsZXRlRGF0YWJhc2U6KE5T
U3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0
ZURhdGFiYXNlKFtvcmlnaW4gX2NvcmVdLCBkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIHJldHVy
biBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZShbb3JpZ2luIF9jb3Jl
XSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKIH0KIAogQGVuZApAQCAtMTM3LDExICsxMzcsMTMgQEAg
dm9pZCBXZWJLaXRJbml0aWFsaXplRGF0YWJhc2VzSWZOZWNlc3NhcgogICAgIGlmIChpbml0aWFs
aXplZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgRGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIg
PSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKwogICAgIC8vIFNldCB0aGUgZGF0YWJhc2Ug
cm9vdCBwYXRoIGluIFdlYkNvcmUKLSAgICBEYXRhYmFzZVRyYWNrZXI6OmluaXRpYWxpemVUcmFj
a2VyKGRhdGFiYXNlc0RpcmVjdG9yeVBhdGgoKSk7CisgICAgZGJNYW5hZ2VyLmluaXRpYWxpemUo
ZGF0YWJhc2VzRGlyZWN0b3J5UGF0aCgpKTsKIAotICAgIC8vIFNldCB0aGUgRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Ci0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudDo6c2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkpOwor
ICAgIC8vIFNldCB0aGUgRGF0YWJhc2VNYW5hZ2VyQ2xpZW50CisgICAgZGJNYW5hZ2VyLnNldENs
aWVudChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlckNs
aWVudCgpKTsKICAgICAKICAgICBpbml0aWFsaXplZCA9IFlFUzsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAko
cmV2aXNpb24gMTM3MzM4KQkoZnJvbSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlVHJhY2tlckNsaWVudC5oOjEzNzMzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAKKworI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaD4KKworY2xhc3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogc2hhcmVkV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
KCk7CisgICAgCisgICAgdmlydHVhbCB+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVy
KTsKK3ByaXZhdGU6CisgICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7Cit9OworCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQuaAkocmV2aXNpb24gMTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0
NCArMSw0MSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LDIwMTIgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpIAogCi0jaW1wb3J0IDxXZWJDb3JlL0RhdGFi
YXNlVHJhY2tlckNsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXJDbGll
bnQuaD4KIAotY2xhc3MgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlckNsaWVudCB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBzaGFyZWRXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQoKTsKKyAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KiBzaGFyZWRXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAgICAKLSAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQoKTsKKyAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIpOwogcHJpdmF0ZToKLSAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKKyAgICBX
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0J
KHJldmlzaW9uIDEzNzMzOCkJKGZyb20gU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQubW06MTM3MzM4KQorKysgU291cmNlL1dlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworIAorI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgiCisKKyNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgi
CisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFi
YXNlVHJhY2tlckNsaWVudCgpCit7CisgICAgc3RhdGljIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworICAgIHJl
dHVybiBzaGFyZWRDbGllbnQ7Cit9CisKK1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6V2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKK30KKworV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK3sKK30KKworY2xhc3MgRGlkTW9kaWZ5T3JpZ2lu
RGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7Citw
dWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgeworICAg
ICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRh
dGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5U
aHJlYWQsIGNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5E
YXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4pCisgICAgICAgIDogY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBvcmln
aW4ob3JpZ2luKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9
IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5m
by0+Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOwor
ICAgICAgICBkZWxldGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQqIGNsaWVudDsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKK3Zv
aWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1
cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAg
ICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2lu
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9y
aWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxv
Y10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOworCisgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJE
YXRhYmFzZURpZE1vZGlmeU9yaWdpbk5vdGlmaWNhdGlvbiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3Jp
Z2luLmdldCgpXTsKK30KKwordm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNo
RGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3Jp
Z2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9j
XSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CisgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9i
amVjdHNBbmRLZXlzOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJ
ZGVudGlmaWVyS2V5LCBuaWxdKTsKKyAgICAKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0
YWJhc2VOb3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzp1
c2VySW5mby5nZXQoKV07Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0JKHJldmlzaW9uIDEz
NzMzOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMyICsxLDI5IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgog
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50LmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaCIKIAog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKQEAgLTM4LDMxICszNSwzMSBAQAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCitXZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQqIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6c2hhcmVkV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKLSAgICBzdGF0aWMgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBzaGFyZWRDbGllbnQgPSBuZXcgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAg
c3RhdGljIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCgpOwogICAgIHJldHVybiBzaGFyZWRDbGllbnQ7CiB9CiAKLVdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudDo6V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudDo6V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIHsKIH0KIAot
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKK1dl
YkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB7CiB9
CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
VG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAg
IHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlP
cmlnaW5EYXRhKGNsaWVudCwgb3JpZ2luLT5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
T25NYWluVGhyZWFkLCBjb250ZXh0KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRGlkTW9kaWZ5
T3JpZ2luRGF0YShXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luKQorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
bikKICAgICAgICAgOiBjbGllbnQoY2xpZW50KQogICAgICAgICAsIG9yaWdpbihvcmlnaW4pCiAg
ICAgewpAQCAtNzYsMTEgKzczLDExIEBAIHByaXZhdGU6CiAgICAgICAgIGRlbGV0ZSBpbmZvOwog
ICAgIH0KIAotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFdlYkRh
dGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50OwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luOwogfTsKIAotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCit2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKIHsKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdp
bkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CkBAIC05Myw3ICs5MCw3
IEBAIHZvaWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaEQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNl
Y3VyaXR5T3JpZ2luLmdldCgpXTsKIH0KIAotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRo
aXMsIG9yaWdpbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0JKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgi
CiAKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTAsNyArNTAsNyBAQCAtIChXZWJT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkudXNhZ2VGb3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsKKyAgICByZXR1cm4gRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTU5LDcgKzU5LDcgQEAgLSAodW5zaWduZWQg
bG9uZyBsb25nKXVzYWdlCiAtICh1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKIHsKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5x
dW90YUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOworICAgIHJldHVybiBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5xdW90YUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0pOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNzEsNyArNzEsNyBAQCAtICh1bnNpZ25lZCBsb25nIGxv
bmcpcXVvdGEKIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogewog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
c2V0UXVvdGEoW19vcmlnaW4gX2NvcmVdLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjpt
YW5hZ2VyKCkuc2V0UXVvdGEoW19vcmlnaW4gX2NvcmVdLCBxdW90YSk7CiAjZW5kaWYKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudC5oCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkgCi0KLSNpbXBvcnQgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lmg+Ci0KLWNsYXNzIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgewotcHVibGljOgotICAgIHN0
YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCgpOwotICAgIAotICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV1RGOjpTdHJpbmcmIGRhdGFiYXNlSWRlbnRp
Zmllcik7Ci1wcml2YXRlOgotICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotfTsKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlVHJhY2tlckNsaWVudC5tbQkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktp
dC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotIAotI2ltcG9ydCAiV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmgi
Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotCi0jaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0jaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9y
dCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OnNo
YXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpCi17Ci0gICAgc3RhdGljIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCogc2hhcmVkQ2xpZW50ID0gbmV3IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCgpOwotICAgIHJldHVybiBzaGFyZWRDbGllbnQ7Ci19Ci0KLVdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudDo6V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLX0KLQotV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCkKLXsKLX0KLQotY2xhc3MgRGlk
TW9kaWZ5T3JpZ2luRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5T3Jp
Z2luRGF0YSk7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQo
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
Ci0gICAgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1v
ZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPmlzb2xhdGVkQ29weSgpKTsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlP
cmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBEaWRN
b2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCi0gICAgICAgIDogY2xpZW50KGNsaWVudCkKLSAg
ICAgICAgLCBvcmlnaW4ob3JpZ2luKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2lu
RGF0YSogaW5mbyA9IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsK
LSAgICAgICAgaW5mby0+Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmln
aW4uZ2V0KCkpOwotICAgICAgICBkZWxldGUgaW5mbzsKLSAgICB9Ci0KLSAgICBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQqIGNsaWVudDsKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
bjsKLX07Ci0KLXZvaWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQotewotICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKLSAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQo
dGhpcywgb3JpZ2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJldGFpblB0cjxX
ZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOwot
Ci0gICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0
aW9uTmFtZTpXZWJEYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5vdGlmaWNhdGlvbiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ondl
YlNlY3VyaXR5T3JpZ2luLmdldCgpXTsKLX0KLQotdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCi17Ci0gICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgewotICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0
aGlzLCBvcmlnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPFdl
YlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5
T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0g
ICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25h
cnkgYWxsb2NdIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbml0V2l0aE9iamVjdHNBbmRLZXlzOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwg
V2ViRGF0YWJhc2VJZGVudGlmaWVyS2V5LCBuaWxdKTsKLSAgICAKLSAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNl
RGlkTW9kaWZ5RGF0YWJhc2VOb3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdl
dCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Ci19Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0J
KHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW1w
b3J0ICJXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUXVvdGFNYW5hZ2Vy
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VU
cmFja2VyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAg
LTE2MSwxNCArMTYxLDE0IEBAIC0gKGlkPFdlYlF1b3RhTWFuYWdlcj4pZGF0YWJhc2VRdW90YU1h
bmEKIAogLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgZGVwcmVjYXRlZCBhbmQg
c2hvdWxkIHJlbW92ZWQgbGF0ZXIuCiAvLyBDbGllbnRzIHNob3VsZCBpbnN0ZWFkIGdldCBhIFdl
YlF1b3RhTWFuYWdlciwgYW5kIHF1ZXJ5IC8gc2V0IHRoZSBxdW90YSB2aWEgdGhlIE1hbmFnZXIu
Ci0vLyBOT1RFOiB0aGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+ICNpbmNsdWRlIHNob3Vs
ZCBiZSByZW1vdmVkIGFzIHdlbGwuCisvLyBOT1RFOiB0aGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyLmg+ICNpbmNsdWRlIHNob3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJTZWN1cml0eU9yaWdpbiAoRGVwcmVjYXRlZCkKIAogLSAodW5zaWduZWQgbG9uZyBs
b25nKXVzYWdlCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1
cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLnVzYWdlRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihf
cHJpdmF0ZSkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTc3LDcgKzE3Nyw3
IEBAIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogLSAodW5zaWduZWQgbG9uZyBsb25nKXF1
b3RhCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigp
LnF1b3RhRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTg2LDcgKzE4Niw3IEBAIC0g
KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQogLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9u
ZyBsb25nKXF1b3RhCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2lu
Kj4oX3ByaXZhdGUpLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0
UXVvdGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEp
OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQko
cmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9DaHJv
bWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9N
SW1wbGVtZW50YXRpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VDb250ZXh0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtMTA2OSw3ICsxMDY5
LDcgQEAgLSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9jYWNoZWFiaWxpdHlEaQogICAgIAogICAg
IGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
KSB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICAgICAgaWYgKERhdGFiYXNlQ29udGV4
dDo6aGFzT3BlbkRhdGFiYXNlcyhkb2N1bWVudCkpCisgICAgICAgIGlmIChEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJhc2VzKGRvY3VtZW50KSkKICAgICAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXZWJG
cmFtZVVzZXNEYXRhYmFzZXNdOwogI2VuZGlmCiAgICAgICAgIGlmICghZG9jdW1lbnQtPmNhblN1
c3BlbmRBY3RpdmVET01PYmplY3RzKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQAogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1VSTENvbm5lY3Rpb24uaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNh
c3QuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5oPgpAQCAtMTE5LDYg
KzExOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCAtICh2b2lk
KV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldFBpY3Rv
Z3JhcGhGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBwaWN0b2dyYXBoRm9udEZhbWlseV0pOwogICAg
IHNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChbcHJlZmVyZW5jZXMgYXJlUGx1Z0luc0VuYWJs
ZWRdKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNl
dElzQXZhaWxhYmxlKFtwcmVmZXJlbmNlcyBkYXRhYmFzZXNFbmFibGVkXSk7CisgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFpbGFibGUoW3ByZWZlcmVuY2VzIGRhdGFiYXNl
c0VuYWJsZWRdKTsKICNlbmRpZgogICAgIHNldHRpbmdzLT5zZXRMb2NhbFN0b3JhZ2VFbmFibGVk
KFtwcmVmZXJlbmNlcyBsb2NhbFN0b3JhZ2VFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEV4
cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBleHBlcmltZW50YWxO
b3RpZmljYXRpb25zRW5hYmxlZF0pOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzUw
MikKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERh
dGFiYXNlTWFuYWdlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDc0MS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5nIERhdGFiYXNl
VHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNlQ29udGV4dCBk
aXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQyCisgICAgICAg
IHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAg
IChRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6ZXhw
ZWN0ZWRTaXplKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6CisgICAgICAgIChRV2Vi
RGF0YWJhc2U6OmZpbGVOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJh
c2UpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMpOgorICAgICAg
ICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3Jp
Z2luOjpkYXRhYmFzZVVzYWdlKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJh
c2VRdW90YSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFiYXNlUXVvdGEp
OgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToKKyAgICAgICAgKFFX
ZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0aW5n
czo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CisKIDIwMTItMTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBMT0coKSB3b3JrIGluIFdlYlByb2Nlc3MgYW5kIE5ldHdv
cmtQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHJldmlz
aW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmln
aW4uaCIKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW5fcC5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlTWFuYWdlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODcsNyAr
ODcsNyBAQCBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6bmFtZSgpIGNvbnN0CiBRU3RyaW5nIFFXZWJE
YXRhYmFzZTo6ZGlzcGxheU5hbWUoKSBjb25zdAogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
Ci0gICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4uZ2V0KCkpOworICAg
IERhdGFiYXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0
YWlsc0Zvck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKICAgICByZXR1
cm4gZGV0YWlscy5kaXNwbGF5TmFtZSgpOwogI2Vsc2UKICAgICByZXR1cm4gUVN0cmluZygpOwpA
QCAtMTAwLDcgKzEwMCw3IEBAIFFTdHJpbmcgUVdlYkRhdGFiYXNlOjpkaXNwbGF5TmFtZSgpIGNv
bnMKIHFpbnQ2NCBRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9y
aWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFn
ZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmlnaW4u
Z2V0KCkpOwogICAgIHJldHVybiBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CkBAIC0xMTMsNyArMTEzLDcgQEAgcWludDY0IFFXZWJEYXRhYmFzZTo6ZXhwZWN0
ZWRTaXplKCkgY29ucwogcWludDY0IFFXZWJEYXRhYmFzZTo6c2l6ZSgpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQt
Pm9yaWdpbi5nZXQoKSk7CisgICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihkLT5uYW1lLCBkLT5vcmln
aW4uZ2V0KCkpOwogICAgIHJldHVybiBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKQEAgLTE0OCw3ICsxNDgsNyBAQCBRV2ViRGF0YWJhc2U6OlFXZWJEYXRhYmFz
ZShRV2ViRGF0YWJhc2VQCiBRU3RyaW5nIFFXZWJEYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAog
ewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLmZ1bGxQYXRoRm9yRGF0YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBm
YWxzZSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9y
RGF0YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7CiAjZWxzZQogICAgIHJl
dHVybiBRU3RyaW5nKCk7CiAjZW5kaWYKQEAgLTE3MSw3ICsxNzEsNyBAQCBRV2ViU2VjdXJpdHlP
cmlnaW4gUVdlYkRhdGFiYXNlOjpvcmlnaW4oCiB2b2lkIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0
YWJhc2UoY29uc3QgUVdlYkRhdGFiYXNlJiBkYikKIHsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9y
aWdpbi5nZXQoKSwgZGIuZC0+bmFtZSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
ZGVsZXRlRGF0YWJhc2UoZGIuZC0+b3JpZ2luLmdldCgpLCBkYi5kLT5uYW1lKTsKICNlbmRpZgog
fQogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNl
KGNvbnN0IAogdm9pZCBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpCiB7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxl
dGVBbGxEYXRhYmFzZXMoKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVB
bGxEYXRhYmFzZXMoKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2VjdXJpdHlvcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysrIFNvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcg
KzIxLDcgQEAKICNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW4uaCIKIAogI2luY2x1ZGUgIkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTEyMSw3
ICsxMjEsNyBAQCBpbnQgUVdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KCkgY29uc3QKIHFpbnQ2NCBR
V2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlVXNhZ2UoKSBjb25zdAogewogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdl
Rm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6
bWFuYWdlcigpLnVzYWdlRm9yT3JpZ2luKGQtPm9yaWdpbi5nZXQoKSk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwogI2VuZGlmCkBAIC0xMzMsNyArMTMzLDcgQEAgcWludDY0IFFXZWJTZWN1cml0eU9y
aWdpbjo6ZGF0YWJhc2VVc2FnZQogcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VR
dW90YSgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsK
KyAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4oZC0+
b3JpZ2luLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE0OSw3ICsx
NDksNyBAQCBxaW50NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVF1b3RhCiB2b2lkIFFX
ZWJTZWN1cml0eU9yaWdpbjo6c2V0RGF0YWJhc2VRdW90YShxaW50NjQgcXVvdGEpCiB7CiAjaWYg
RU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRR
dW90YShkLT5vcmlnaW4uZ2V0KCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFn
ZXIoKS5zZXRRdW90YShkLT5vcmlnaW4uZ2V0KCksIHF1b3RhKTsKICNlbmRpZgogfQogCkBAIC0x
ODEsNyArMTgxLDcgQEAgUUxpc3Q8UVdlYlNlY3VyaXR5T3JpZ2luPiBRV2ViU2VjdXJpdHlPcgog
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiA+IGNvcmVPcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdp
bnMoY29yZU9yaWdpbnMpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLm9yaWdpbnMo
Y29yZU9yaWdpbnMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvcmVPcmlnaW5z
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqIHByaXYg
PSBuZXcgUVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZShjb3JlT3JpZ2luc1tpXS5nZXQoKSk7CkBA
IC0yMDIsNyArMjAyLDcgQEAgUUxpc3Q8UVdlYkRhdGFiYXNlPiBRV2ViU2VjdXJpdHlPcmlnaW46
OgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZVZlY3Rv
cjsKIAotICAgIGlmICghRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGF0YWJhc2VOYW1lc0Zv
ck9yaWdpbihkLT5vcmlnaW4uZ2V0KCksIG5hbWVWZWN0b3IpKQorICAgIGlmICghRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VOYW1lc0Zvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCks
IG5hbWVWZWN0b3IpKQogICAgICAgICByZXR1cm4gZGF0YWJhc2VzOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBuYW1lVmVjdG9yLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFFXZWJEYXRh
YmFzZVByaXZhdGUqIHByaXYgPSBuZXcgUVdlYkRhdGFiYXNlUHJpdmF0ZSgpOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
MCArMjIsOSBAQAogCiAjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKIAotI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCIKLSNpbmNs
dWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAi
SWNvbkRhdGFiYXNlLmgiCkBAIC0yMzEsNyArMjMwLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSgpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgdmFsdWUgPSBh
dHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJs
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkKSk7
Ci0gICAgICAgIFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKHZhbHVl
KTsKKyAgICAgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0SXNBdmFp
bGFibGUodmFsdWUpOwogI2VuZGlmCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVl
KFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLApAQCAtMTAw
NCw3ICsxMDAzLDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aAog
ewogICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQotICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFi
YXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgocGF0aCk7CiAjZW5kaWYKIH0KIApAQCAt
MTAyMCw3ICsxMDE5LDcgQEAgUVN0cmluZyBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0
aAogewogICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNpZiBFTkFCTEUoU1FM
X0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQogICAgIHJl
dHVybiBRU3RyaW5nKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2Vy
Q2xpZW50LmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRGF0YWJh
c2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nl
ci5oIgogI2luY2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgiCkBAIC01MzksOCArNTM5LDggQEAgdm9p
ZCBDaHJvbWVDbGllbnRRdDo6ZXhjZWVkZWREYXRhYmFzZVF1bwogewogICAgIHF1aW50NjQgcXVv
dGEgPSBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKCk7CiAKLSAgICBp
ZiAoIURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmhhc0VudHJ5Rm9yT3JpZ2luKGZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKLSAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHF1
b3RhKTsKKyAgICBpZiAoIURhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmhhc0VudHJ5Rm9yT3Jp
Z2luKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgRGF0YWJh
c2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHF1b3RhKTsKIAogICAgIG1fd2ViUGFnZS0+ZGF0YWJhc2VRdW90YUV4Y2VlZGVk
KFFXZWJGcmFtZUFkYXB0ZXI6OmtpdChmcmFtZSksIGRhdGFiYXNlTmFtZSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0xMi0xMiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxs
eSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIg
aW5zdGVhZCBvZiBhY2Nlc3NpbmcgRGF0YWJhc2VUcmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAor
ICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRpcmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUg
Zm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBX
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpzaGFy
ZWRXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpvcmln
aW5zKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGF0YWJhc2VzV2l0aE9yaWdpbik6
CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNGb3JEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJEYXRhYmFzZU1h
bmFnZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0
UXVvdGEpOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkRhdGFiYXNl
TWFuYWdlcik6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2Vi
U2VjdXJpdHlPcmlnaW46OnVzYWdlKToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjpxdW90
YSk6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6c2V0UXVvdGEpOgorICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToK
KwogMjAxMi0xMi0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWtlIExPRygpIHdvcmsgaW4gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM3
NTAyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNl
VHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yMDIsNyArMjAyLDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogewogICAgIGlmICghc19zaGFy
ZWRXZWJEYXRhYmFzZU1hbmFnZXIpIHsKICAgICAgICAgc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFn
ZXIuYWRvcHRSZWYoV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpKTsKLSAgICAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0Q2xpZW50KHNfc2hhcmVkV2ViRGF0YWJh
c2VNYW5hZ2VyLmdldCgpKTsKKyAgICAgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0
Q2xpZW50KHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyLmdldCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIuY29weVJlZlRvKHJlc3VsdCk7CkBAIC0y
MjAsNyArMjIwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gPiBvcmlnaW5zOwotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpbnMob3Jp
Z2lucyk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkub3JpZ2lucyhvcmlnaW5zKTsK
ICAgICAgICAgQ09NUHRyPENPTUVudW1WYXJpYW50PFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+ID4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiA+ID46OmFkb3B0KG9yaWdpbnMpKTsKIAogICAgICpyZXN1bHQg
PSBlbnVtVmFyaWFudC5sZWFrUmVmKCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAg
ICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VOYW1lczsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0
eU9yaWdpbigpLCBkYXRhYmFzZU5hbWVzKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5kYXRhYmFzZU5hbWVzRm9yT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpLCBkYXRhYmFzZU5hbWVzKTsKIAogICAgIENPTVB0cjxDT01FbnVtVmFyaWFudDxWZWN0b3I8
U3RyaW5nPiA+ID4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENPTUVudW1WYXJpYW50PFZlY3RvcjxT
dHJpbmc+ID46OmFkb3B0KGRhdGFiYXNlTmFtZXMpKTsKIApAQCAtMjY5LDcgKzI2OSw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAoIXdlYlNlY3Vy
aXR5T3JpZ2luKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VEZXRhaWxz
IGRldGFpbHMgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZXRhaWxzRm9yTmFtZUFuZE9y
aWdpbihTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4oZGF0YWJhc2VOYW1lKSksCisg
ICAgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMgPSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5k
ZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihTdHJpbmcoZGF0YWJhc2VOYW1lLCBTeXNTdHJpbmdMZW4o
ZGF0YWJhc2VOYW1lKSksCiAgICAgICAgIHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpKTsKIAogICAgIGlmIChkZXRhaWxzLm5hbWUoKS5pc051bGwoKSkKQEAgLTI4NCw3ICsyODQs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgaWYgKHRo
aXMgIT0gc19zaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXIpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsK
KyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMoKTsKIAog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICBpZiAoIXdlYlNlY3VyaXR5T3JpZ2luKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVs
ZXRlT3JpZ2luKHdlYlNlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVPcmlnaW4od2ViU2VjdXJpdHlPcmlnaW4tPnNl
Y3VyaXR5T3JpZ2luKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zMjQsNyArMzI0LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIGlmICghd2Vi
U2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVEYXRhYmFzZSh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJp
dHlPcmlnaW4oKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFt
ZSkpKTsKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVEYXRhYmFzZSh3ZWJT
ZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSwgU3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lz
U3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzgx
LDcgKzM4MSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAg
ICBpZiAodGhpcyAhPSBzX3NoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcikKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdpbikuZ2V0KCksIHF1b3RhKTsKKyAgICBE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhvcmlnaW4pLmdldCgpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5l
Y2VzCiAgICAgICAgIHJldHVybjsKIAogICAgIFdURjo6U3RyaW5nIGRhdGFiYXNlc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwotICAgIFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6aW5pdGlhbGl6ZVRyYWNrZXIoZGF0YWJhc2VzRGlyZWN0b3J5KTsKKyAg
ICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5pbml0aWFsaXplKGRhdGFiYXNl
c0RpcmVjdG9yeSk7CiAKICAgICBpbml0aWFsaXplZCA9IHRydWU7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkg
KzMyLDkgQEAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiV2ViS2l0Lmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFiYXNlTWFuYWdlckNsaWVudC5oPgogCi1jbGFzcyBXZWJEYXRhYmFzZU1hbmFn
ZXIgOiBwdWJsaWMgSVdlYkRhdGFiYXNlTWFuYWdlciwgcHJpdmF0ZSBXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXJDbGllbnQgeworY2xhc3MgV2ViRGF0YWJhc2VNYW5hZ2VyIDogcHVibGljIElXZWJE
YXRhYmFzZU1hbmFnZXIsIHByaXZhdGUgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyKiBjcmVhdGVJbnN0YW5jZSgp
OwogCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG9y
aWdpbiwKICAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogCi0g
ICAgLy8gRGF0YWJhc2VUcmFja2VyQ2xpZW50CisgICAgLy8gRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VOYW1l
KTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNp
b24gMTM3NTAyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNl
VHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAKICNpZiAh
RU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTEz
NCw3ICsxMzQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlNlY3VyaXR5T3JpCiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkudXNhZ2VGb3JPcmlnaW4obV9zZWN1cml0eU9y
aWdpbi5nZXQoKSk7CisgICAgKnJlc3VsdCA9IERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnVz
YWdlRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogCiAgICAgcmV0dXJuIFNfT0s7
CiAjZWxzZQpAQCAtMTUwLDcgKzE1MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
U2VjdXJpdHlPcmkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
IAotICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihtX3NlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJhc2VNYW5hZ2Vy
OjptYW5hZ2VyKCkucXVvdGFGb3JPcmlnaW4obV9zZWN1cml0eU9yaWdpbi5nZXQoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpAQCAtMTYyLDcg
KzE2Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViU2VjdXJpdHlPcmkKICAgICAv
KiBbaW5dICovIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShtX3NlY3Vy
aXR5T3JpZ2luLmdldCgpLCBxdW90YSk7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCku
c2V0UXVvdGEobV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgcXVvdGEpOwogCiAgICAgcmV0dXJuIFNf
T0s7CiAjZWxzZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEzNzUwMikKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2
Nyw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdEltcGwuaD4KQEAgLTc2LDYgKzc1
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtNDgwNCw3ICs0ODA0LDcg
QEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0gcHJl
ZnNQcml2YXRlLT5kYXRhYmFzZXNFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxh
YmxlKGVuYWJsZWQpOworICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldElzQXZhaWxh
YmxlKGVuYWJsZWQpOwogI2VuZGlmCiAKICAgICBociA9IHByZWZzUHJpdmF0ZS0+bG9jYWxTdG9y
YWdlRW5hYmxlZCgmZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NTAy
KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRW5jYXBzdWxhdGUgZXh0ZXJuYWxseSB1c2VkIHdlYmRhdGFiYXNlIEFQSXMgaW4gRGF0
YWJhc2VNYW5hZ2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0NzQxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBEYXRhYmFzZU1hbmFnZXIgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgRGF0YWJhc2VU
cmFja2VyLCBBYnN0cmFjdERhdGFiYXNlLAorICAgICAgICBhbmQgRGF0YWJhc2VDb250ZXh0IGRp
cmVjdGx5LiBUaGlzIGlzIHRvIHByZXBhcmUgZm9yIHVwY29taW5nIHdlYmtpdDIKKyAgICAgICAg
cmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpT
ZXREYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkdldERhdGFi
YXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6U2V0RGF0YWJhc2VzRW5h
YmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OkFyZURhdGFiYXNlc0VuYWJsZWQpOgor
CiAyMDEyLTEyLTEyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1ha2UgTE9HKCkgd29yayBpbiBXZWJQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcwpJbmRl
eDogU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMzc1MDIpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw3IEBACiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotI2luY2x1
ZGUgIkFic3RyYWN0RGF0YWJhc2UuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCiAjaW5jbHVkZSAid3gvd3hwcmVj
LmgiCkBAIC0xMTI2LDcgKzExMjUsNyBAQCBib29sIFdlYlZpZXc6OlNob3VsZENsb3NlKCkgY29u
c3QKIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3RvcnkoY29uc3Qgd3hTdHJpbmcmIGRh
dGFiYXNlRGlyZWN0b3J5KQogewogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViQ29y
ZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEaXJlY3RvcnlQYXRoKGRh
dGFiYXNlRGlyZWN0b3J5KTsKKyAgICBXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIo
KS5zZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJhc2VEaXJlY3RvcnkpOwogI2VuZGlmCiB9
CiAKQEAgLTExMzQsNyArMTEzMyw3IEBAIHZvaWQgV2ViVmlldzo6U2V0RGF0YWJhc2VEaXJlY3Rv
cnkoY29uc3QKIHd4U3RyaW5nIFdlYlZpZXc6OkdldERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIHJldHVybiBXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5kYXRhYmFzZURpcmVjdG9yeVBhdGgoKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAj
ZWxzZQogICAgIHJldHVybiB3eEVtcHR5U3RyaW5nOwogI2VuZGlmCkBAIC0xMTQ0LDcgKzExNDMs
OCBAQCB3eFN0cmluZyBXZWJWaWV3OjpHZXREYXRhYmFzZURpcmVjdG9yeSgpCiB2b2lkIFdlYlZp
ZXc6OlNldERhdGFiYXNlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTUUxf
REFUQUJBU0UpCi0gICAgV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUo
ZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBXZWJD
b3JlOjpEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKKyAgICBtYW5hZ2VyLnNldElzQXZhaWxh
YmxlKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKQEAgLTExNTIsNyArMTE1Miw4IEBAIHZvaWQgV2Vi
Vmlldzo6U2V0RGF0YWJhc2VzRW5hYmxlZChib29sIGUKIGJvb2wgV2ViVmlldzo6QXJlRGF0YWJh
c2VzRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICByZXR1cm4gV2Vi
Q29yZTo6QWJzdHJhY3REYXRhYmFzZTo6aXNBdmFpbGFibGUoKTsKKyAgICBXZWJDb3JlOjpEYXRh
YmFzZU1hbmFnZXImIGRiTWFuYWdlciA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdl
cigpOworICAgIHJldHVybiBkYk1hbmFnZXIuaXNBdmFpbGFibGUoKTsKICNlbmRpZgogICAgIHJl
dHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4LmNwcAkocmV2aXNpb24gMTM3NTAyKQorKysgU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudFd4LmgiCiAjaW5jbHVkZSAiQ29u
c29sZS5oIgogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFj
a2VyLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKICNpbmNsdWRlICJG
aWxlQ2hvb3Nlci5oIgogI2luY2x1ZGUgIkZpbGVJY29uTG9hZGVyLmgiCkBAIC00MjcsOCArNDI3
LDggQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6ZXhjZWVkZWREYXRhYmFzZVF1bwogICAgIGlmIChX
ZWJGcmFtZSogd2ViRnJhbWUgPSBtX3dlYlZpZXctPkdldE1haW5GcmFtZSgpKQogICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gd2ViRnJhbWUtPkdldEZyYW1lKCkpCiAgICAgICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAg
aWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSkpCi0gICAgICAgICAgICAgICAgICAgIERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcigpLnNldFF1b3RhKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBxdW90YSk7
CisgICAgICAgICAgICAgICAgaWYgKCFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNFbnRy
eUZvck9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICAgICAg
ICAgIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldFF1b3RhKGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLCBxdW90YSk7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="195840"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>