<?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>189171</bug_id>
          
          <creation_ts>2018-08-30 13:43:06 -0700</creation_ts>
          <short_desc>Introduce LibWebRTC backends for sender and receiver</short_desc>
          <delta_ts>2018-09-04 11:49:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>alex</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1455391</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 13:43:06 -0700</bug_when>
    <thetext>This is a first step towards using libwebrtc sender and receiver objects when unified plan is on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455394</commentid>
    <comment_count>1</comment_count>
      <attachid>348541</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 13:53:37 -0700</bug_when>
    <thetext>Created attachment 348541
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455442</commentid>
    <comment_count>2</comment_count>
      <attachid>348558</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 15:46:06 -0700</bug_when>
    <thetext>Created attachment 348558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455447</commentid>
    <comment_count>3</comment_count>
      <attachid>348560</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 15:55:24 -0700</bug_when>
    <thetext>Created attachment 348560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455451</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 15:57:45 -0700</bug_when>
    <thetext>Attachment 348560 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455468</commentid>
    <comment_count>5</comment_count>
      <attachid>348565</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 16:34:20 -0700</bug_when>
    <thetext>Created attachment 348565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455469</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 16:36:03 -0700</bug_when>
    <thetext>Attachment 348565 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455476</commentid>
    <comment_count>7</comment_count>
      <attachid>348569</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 16:55:29 -0700</bug_when>
    <thetext>Created attachment 348569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455480</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 16:58:44 -0700</bug_when>
    <thetext>Attachment 348569 did not pass style-queue:


ERROR: Source/WebCore/CMakeLists.txt:1566:  The item &quot;Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp&quot; should be added only once to the list.  [list/duplicate] [5]
ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455534</commentid>
    <comment_count>9</comment_count>
      <attachid>348590</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 21:11:25 -0700</bug_when>
    <thetext>Created attachment 348590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455535</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 21:13:47 -0700</bug_when>
    <thetext>Attachment 348590 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455562</commentid>
    <comment_count>11</comment_count>
      <attachid>348603</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 21:50:44 -0700</bug_when>
    <thetext>Created attachment 348603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455563</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-30 21:52:58 -0700</bug_when>
    <thetext>Attachment 348603 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455587</commentid>
    <comment_count>13</comment_count>
      <attachid>348603</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-30 23:33:17 -0700</bug_when>
    <thetext>Comment on attachment 348603
Patch

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

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:55
&gt; +    RTCRtpParameters getParameters(RTCRtpSender&amp;) const final;

Can probably move these two as private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455661</commentid>
    <comment_count>14</comment_count>
      <attachid>348603</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2018-08-31 05:35:19 -0700</bug_when>
    <thetext>Comment on attachment 348603
Patch

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

LGTM, let&apos;s do it.

&gt; Source/WebCore/Modules/mediastream/RTCRtpReceiverBackend.h:2
&gt; + * Copyright (C) 2015 Ericsson AB. All rights reserved.

Probably you want to add Apple for this new file.

&gt; Source/WebCore/Modules/mediastream/RTCRtpReceiverBackend.h:16
&gt; + * 3. Neither the name of Ericsson nor the names of its contributors
&gt; + *    may be used to endorse or promote products derived from this
&gt; + *    software without specific prior written permission.

And remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456330</commentid>
    <comment_count>15</comment_count>
      <attachid>348821</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-04 09:48:36 -0700</bug_when>
    <thetext>Created attachment 348821
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456333</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-04 09:52:38 -0700</bug_when>
    <thetext>Attachment 348821 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456338</commentid>
    <comment_count>17</comment_count>
      <attachid>348823</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-04 10:01:13 -0700</bug_when>
    <thetext>Created attachment 348823
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456344</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-04 10:04:30 -0700</bug_when>
    <thetext>Attachment 348823 did not pass style-queue:


ERROR: Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456398</commentid>
    <comment_count>19</comment_count>
      <attachid>348823</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 11:48:46 -0700</bug_when>
    <thetext>Comment on attachment 348823
Patch for landing

Clearing flags on attachment: 348823

Committed r235623: &lt;https://trac.webkit.org/changeset/235623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456399</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-04 11:48:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456400</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 11:49:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/44106285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348541</attachid>
            <date>2018-08-30 13:53:37 -0700</date>
            <delta_ts>2018-08-30 15:46:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189171-20180830135336.patch</filename>
            <type>text/plain</type>
            <size>74277</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTNmOGJmMTE5MzgyNjEx
MTYwMDY4ZGNjODc1ODAzNzNlZTQxM2ZiZi4uN2Y1ZTBmNDNjN2I5ODBmNmFlNjdiN2JlMjQxZmRj
YmNhMzVmODQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFVwZGF0ZSBjb2RlIHNvIHRoYXQgbGlid2VicnRjIGNvZGUgc3BlY2lm
aWMgY29kZSBpcyBub3cgY3JlYXRpbmcgc2VuZGVycyBhbmQgcmVjZWl2ZXJzLgorICAgICAgICBU
aGlzIHdpbGwgYWxsb3cgdG8gY29ycmVjdGx5IHNldCB0aGUgbGlid2VicnRjIHNlbmRlci9yZWNl
aXZlciB0byBXZWJLaXQgRE9NIHNlbmRlci9yZWNlaXZlci4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFkZFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VU
cmFja1Rhc2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcik6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBS
ZWNlaXZlcjo6c2V0QmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlckJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNl
aXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRy
YWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpj
b21wbGV0ZUFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6
Z2V0UGFyYW1ldGVycyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQ
YXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpmaWxsRW5jb2RpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxDb2Rl
Y1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJ0cFBhcmFtZXRlcnMpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZnJvbVN0ZFN0cmluZyk6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE4LTA4LTI5ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBydW50aW1lIGZsYWcgZm9yIFdl
YlJUQyB1bmlmaWVkIHBsYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyODczNGIyMDNm
MmNjYzUzZmQxNmY0YTk2NzhlODY1N2FiZmJiZGYzLi4zMzMxMTNmMjBlM2M2NTdiNDMzYjE1OWE2
N2UxYWY0Mjg0ZjFjNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01MzAsNiArNTMw
LDIxIEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjptYXJrQXNOZWVkaW5nTmVnb3RpYXRp
b24oKQogICAgICAgICBtX3BlZXJDb25uZWN0aW9uLnNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRF
dmVudCgpOwogfQogCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpCit7CisgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH07Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFJUQ1J0
cFRyYW5zY2VpdmVySW5pdCYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRl
ZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH07Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKIFdURkxvZ0NoYW5uZWwmIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bG9nQ2hhbm5lbCgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmOGE5NzZiN2E1OGY1YzUxMGI3OWQw
OTc5ZjhhYTU3YThkZDBlNDNlLi45NWUwZjk5MzJjYWUwZTVhZjRmN2IyOTRlMzhkZDQxOTUwNjRm
YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgUlRDSWNl
Q2FuZGlkYXRlOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb247CiBjbGFzcyBSVENSdHBSZWNlaXZl
cjsKIGNsYXNzIFJUQ1J0cFNlbmRlcjsKK2NsYXNzIFJUQ1J0cFRyYW5zY2VpdmVyOwogY2xhc3Mg
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uOwogY2xhc3MgUlRDU3RhdHNSZXBvcnQ7CiAKQEAgLTU3LDYg
KzU4LDcgQEAgc3RydWN0IE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uOwogc3RydWN0IFJUQ0Fu
c3dlck9wdGlvbnM7CiBzdHJ1Y3QgUlRDRGF0YUNoYW5uZWxJbml0Owogc3RydWN0IFJUQ09mZmVy
T3B0aW9uczsKK3N0cnVjdCBSVENSdHBUcmFuc2NlaXZlckluaXQ7CiAKIG5hbWVzcGFjZSBQZWVy
Q29ubmVjdGlvbiB7CiB1c2luZyBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlID0gRE9NUHJvbWlz
ZURlZmVycmVkPElETERpY3Rpb25hcnk8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpJbml0Pj47CkBA
IC05OSwxMSArMTAxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoTWVk
aWFTdHJlYW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKIAogICAgIHZpcnR1
YWwgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5z
Y2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lk
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5QWRkZWRUcmFjayhSVENSdHBTZW5kZXImKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFk
ZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRDUnRwU2VuZGVy
JikgeyB9CiAKLSAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENS
dHBTZW5kZXImKSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpOwogCiAgICAgdm9pZCBtYXJrQXNOZWVk
aW5nTmVnb3RpYXRpb24oKTsKICAgICBib29sIGlzTmVnb3RpYXRpb25OZWVkZWQoKSBjb25zdCB7
IHJldHVybiBtX25lZ290aWF0aW9uTmVlZGVkOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBhMDRm
ODFlMWZiMTI3MjdjZmZiZDUwODkxOGIyM2M3NjBhMjJiYWVmLi4zMWU2OWUyMTZiNDllNDQ0NDNk
MjJiMmI0YzQxY2ExOGFlY2VlYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRk
VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6
IG1fdHJhbnNjZWl2ZXJTZXQtPmxpc3QoKSkgewogICAgICAgICBhdXRvJiBleGlzdGluZ1NlbmRl
ciA9IHRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKICAgICAgICAgaWYgKGV4aXN0aW5nU2VuZGVyLnRy
YWNrS2luZCgpID09IHRyYWNrLT5raW5kKCkgJiYgZXhpc3RpbmdTZW5kZXIudHJhY2tJZCgpLmlz
TnVsbCgpICYmICF0cmFuc2NlaXZlci0+aGFzU2VuZGluZ0RpcmVjdGlvbigpKSB7Ci0gICAgICAg
ICAgICBleGlzdGluZ1NlbmRlci5zZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CisgICAgICAgICAg
ICBleGlzdGluZ1NlbmRlci5zZXRUcmFjayh0cmFjay5jb3B5UmVmKCkpOwogICAgICAgICAgICAg
ZXhpc3RpbmdTZW5kZXIuc2V0TWVkaWFTdHJlYW1JZHMoV1RGTW92ZShtZWRpYVN0cmVhbUlkcykp
OwogICAgICAgICAgICAgdHJhbnNjZWl2ZXItPmVuYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAg
ICAgICAgICAgIHNlbmRlciA9ICZleGlzdGluZ1NlbmRlcjsKQEAgLTEzNywyNyArMTM3LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2Vu
ZGVyKSB7Ci0gICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVy
OjpnZXROZXh0TWlkKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2st
PmtpbmQoKTsKLSAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCk7Ci0KLSAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShX
VEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksICp0aGlzKTsKLSAgICAgICAg
YXV0byByZWNlaXZlciA9IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQs
IHRyYWNrS2luZCwgdHJhY2tJZCk7Ci0gICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBU
cmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlcikp
OwotCi0gICAgICAgIC8vIFRoaXMgdHJhbnNjZWl2ZXIgaXMgbm90IHlldCBhc3NvY2lhdGVkIHdp
dGggYW4gbS1saW5lIChudWxsIG1pZCksIGJ1dCB3ZSBuZWVkIGEKLSAgICAgICAgLy8gcHJvdmlz
aW9uYWwgbWlkIGlmIHRoZSB0cmFuc2NlaXZlciBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBvZmZlci4K
LSAgICAgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVyTWlkKTsK
LQotICAgICAgICBzZW5kZXIgPSAmdHJhbnNjZWl2ZXItPnNlbmRlcigpOwotICAgICAgICBtX3Ry
YW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwotICAgIH0KLQotICAg
IGlmICghbV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRyYWNrKCpzZW5kZXIpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJf
cyB9OwotCi0gICAgcmV0dXJuIFJlZjxSVENSdHBTZW5kZXI+IHsgKnNlbmRlciB9OworICAgIHJl
dHVybiBtX2JhY2tlbmQtPmFkZFRyYWNrKHNlbmRlciwgdHJhY2suZ2V0KCksIG1lZGlhU3RyZWFt
SWRzKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gUlRDUGVlckNvbm5lY3Rpb246OnJlbW92ZVRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpAQCAtMTkyLDMxICsxNzIsMTEgQEAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2Vp
dmVyKEFkZFRyYW5zY2UKICAgICAgICAgaWYgKGtpbmQgIT0gImF1ZGlvIiAmJiBraW5kICE9ICJ2
aWRlbyIpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKLSAg
ICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShTdHJpbmcoa2luZCksIFZl
Y3RvcjxTdHJpbmc+KCksICp0aGlzKTsKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNj
ZWl2ZXIoV1RGTW92ZShzZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCks
IGtpbmQpOworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFuc2NlaXZlcihraW5kLCBp
bml0KTsKICAgICB9CiAKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBXVEY6Omdl
dDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KHdpdGhUcmFjaykucmVsZWFzZU5vbk51bGwoKTsK
LSAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQgPSB0cmFjay0+aWQoKTsKLSAgICBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0KLSAgICBhdXRvIHNlbmRlciA9IFJUQ1J0
cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUodHJhY2spLCBWZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7
Ci0gICAgaWYgKCFtX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2soc2VuZGVyKSkKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJh
Y2siX3MgfTsKLQotICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2Vu
ZGVyKSwgaW5pdCwgdHJhY2tJZCwgdHJhY2tLaW5kKTsKLX0KLQotUmVmPFJUQ1J0cFRyYW5zY2Vp
dmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRw
U2VuZGVyPiYmIHNlbmRlciwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25z
dCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKQotewotICAgIFN0cmlu
ZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7Ci0gICAg
YXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5k
ZXIpLCBtX2JhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQs
IHRyYWNrSWQpKTsKLQotICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2Nl
aXZlck1pZCk7Ci0gICAgdHJhbnNjZWl2ZXItPnNldERpcmVjdGlvbihpbml0LmRpcmVjdGlvbik7
Ci0KLSAgICBtX3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQodHJhbnNjZWl2ZXIuY29weVJlZigpKTsK
LSAgICByZXR1cm4gdHJhbnNjZWl2ZXI7CisgICAgYXV0byB0cmFjayA9IFdURjo6Z2V0PFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJl
dHVybiBtX2JhY2tlbmQtPmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhY2spLCBpbml0KTsKIH0K
IAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRp
b25zJiYgb3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21pc2UpCkBAIC01
ODYsMjggKzU0NiwxMSBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjplbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmUHRyPE1lZAogICAgICAgICBib29sIGhh
c1RyYWNrID0gcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpOwogICAgICAgICBwcm90ZWN0ZWRTZW5k
ZXItPnNldFRyYWNrKHdpdGhUcmFjay5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFo
YXNUcmFjaykKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+bm90aWZ5QWRk
ZWRUcmFjayhwcm90ZWN0ZWRTZW5kZXIuZ2V0KCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV9iYWNrZW5kLT5hZGRUcmFjayhwcm90ZWN0ZWRTZW5kZXIucHRyKCksICpwcm90ZWN0ZWRT
ZW5kZXItPnRyYWNrKCksIHsgfSk7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAgIH0p
OwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKLXsKLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKLQotICAgIGlmICghc2VuZGVyLnRyYWNrKCkgJiYgd2l0aFRyYWNrKSB7Ci0gICAgICAgIGVu
cXVldWVSZXBsYWNlVHJhY2tUYXNrKHNlbmRlciwgd2l0aFRyYWNrLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUocHJvbWlzZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9iYWNr
ZW5kLT5yZXBsYWNlVHJhY2soc2VuZGVyLCBXVEZNb3ZlKHdpdGhUcmFjayksIFdURk1vdmUocHJv
bWlzZSkpOwotfQotCi1SVENSdHBQYXJhbWV0ZXJzIFJUQ1BlZXJDb25uZWN0aW9uOjpnZXRQYXJh
bWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAotewotICAgIHJldHVybiBtX2JhY2tl
bmQtPmdldFBhcmFtZXRlcnMoc2VuZGVyKTsKLX0KLQogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJ
RVIsICJkaXNwYXRjaGluZyAnIiwgZXZlbnQudHlwZSgpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4
IDQyN2JmMjIzZWI4ZTQxOWMzOWIyYjVlZjE0NWRmYTZkMTA4ZDFkZTcuLjg0ZWI5YmM5YTU1YTVh
NzE3NGM3ZTBmYjFlN2U5NGU3ZDMxNWQyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTY2LDcgKzY2LDYg
QEAgc3RydWN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCB7CiAKIGNsYXNzIFJUQ1BlZXJDb25uZWN0
aW9uIGZpbmFsCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlvbj4KLSAg
ICAsIHB1YmxpYyBSVENSdHBTZW5kZXI6OkJhY2tlbmQKICAgICAsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECkBAIC0xMDksNiArMTA4LDggQEAgcHVibGljOgogICAgIGJvb2wgaXND
bG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25TdGF0ZSA9PSBSVENQZWVyQ29ubmVj
dGlvblN0YXRlOjpDbG9zZWQ7IH0KICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdG9wcGVkOyB9CiAKKyAgICB2b2lkIGFkZEludGVybmFsVHJhbnNjZWl2ZXIoUmVmPFJU
Q1J0cFRyYW5zY2VpdmVyPiYmIHRyYW5zY2VpdmVyKSB7IG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVu
ZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7IH0KKwogICAgIC8vIDUuMSBSVENQZWVyQ29ubmVjdGlv
biBleHRlbnNpb25zCiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRD
UnRwU2VuZGVyPj4mIGdldFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0
LT5zZW5kZXJzKCk7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxS
VENSdHBSZWNlaXZlcj4+JiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2Vp
dmVyU2V0LT5yZWNlaXZlcnMoKTsgfQpAQCAtMTQ0LDcgKzE0NSw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50KCk7CiAKLSAgICBSVENSdHBTZW5k
ZXI6OkJhY2tlbmQmIHNlbmRlckJhY2tlbmQoKSB7IHJldHVybiAqdGhpczsgfQogICAgIHZvaWQg
ZmlyZUV2ZW50KEV2ZW50Jik7CiAKICAgICB2b2lkIGRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJp
bmcoKSB7IG1fYmFja2VuZC0+ZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygpOyB9CkBAIC0x
ODYsMTEgKzE4Niw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgUGVlckNv
bm5lY3Rpb25CYWNrZW5kIHRvIGJlIHRoZSBCYWNrZW5kCi0gICAgLy8gUlRDUnRwU2VuZGVyOjpC
YWNrZW5kCi0gICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKLSAgICBS
VENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgZmluYWw7
Ci0KICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb25TdGF0ZSgpOwogICAgIGJvb2wgZG9DbG9zZSgp
OwogICAgIHZvaWQgZG9TdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCmluZGV4IDNkNjczMTljOTFiYzYzYzU3N2Ji
ODIwYjBhODcwZTI2ZDc1ZTQwYTAuLjhmYmU5YTI5NTk2ZjZhZGQwNTk1ZDIxNzVjMDYwN2ZlMWI1
N2Q2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXIuY3BwCkBAIC0zNyw5ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUlRDUnRwUmVjZWl2ZXI6OlJUQ1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBCYWNrZW5kKiBiYWNrZW5kKQorUlRDUnRwUmVjZWl2ZXI6OlJUQ1J0cFJlY2Vp
dmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
UmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiAgICAgOiBSVENSdHBTZW5kZXJSZWNlaXZlckJh
c2UoV1RGTW92ZSh0cmFjaykpCi0gICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKKyAgICAsIG1fYmFj
a2VuZChXVEZNb3ZlKGJhY2tlbmQpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKaW5kZXggMTRhYjA2OTM0NzA5OWQ0
YzhmMjYxYzg5NjIyOTBhYjcxN2EyYjJhOS4uZGI2Yjc0OThiOWUwODM5MTlhYmI1N2FmNzFhY2I0
ZmI2NGRlNWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwUmVjZWl2ZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2lmIEVOQUJMRShXRUJfUlRD
KQogCiAjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwzMSArNDEsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSVENSdHBSZWNlaXZlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJh
c2UgewogcHVibGljOgotICAgIGNsYXNzIEJhY2tlbmQgewotICAgIHB1YmxpYzoKLSAgICAgICAg
dmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCBSVENSdHBQYXJh
bWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJldHVybiB7IH07IH0KLSAgICB9OwotCi0gICAgc3Rh
dGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrLCBCYWNrZW5kKiBiYWNrZW5kID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFJl
Y2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVl
X3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+JiYgYmFja2VuZCA9IG51bGxwdHIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWNlaXZlcihXVEZNb3ZlKHRyYWNr
KSwgYmFja2VuZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWNlaXZl
cihXVEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShiYWNrZW5kKSkpOwogICAgIH0KIAogICAgIHZvaWQg
c3RvcCgpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGEgVW5pcXVlUmVmIGhlcmUu
Ci0gICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kPiYmIGJhY2tlbmQp
IHsgbV9iYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKTsgfQotCi0gICAgYm9vbCBpc0Rpc3BhdGNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGlzcGF0Y2hlZDsgfQotICAgIHZvaWQgc2V0RGlzcGF0
Y2hlZChib29sIGlzRGlzcGF0Y2hlZCkgeyBtX2lzRGlzcGF0Y2hlZCA9IGlzRGlzcGF0Y2hlZDsg
fQorICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kPiYmIGJhY2tlbmQpIHsgbV9iYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKTsgfQogICAgIFJU
Q1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFj
a2VuZC0+Z2V0UGFyYW1ldGVycygpIDogUlRDUnRwUGFyYW1ldGVycygpOyB9CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgUlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIEJh
Y2tlbmQqKTsKKyAgICBSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJik7CiAKLSAgICBib29sIG1faXNE
aXNwYXRjaGVkIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZD4gbV9iYWNr
ZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+IG1fYmFja2Vu
ZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYwZmVmMzRhZWYwNDk3Y2M3ZmYxNjM5NGZmMmZhYzAwYTJmNWNlMmEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBSZWNlaXZlckJhY2tlbmQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgflJUQ1J0cFJlY2VpdmVyQmFja2VuZCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0
dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsgcmV0dXJuIHsgfTsgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5j
cHAKaW5kZXggMThkYzliZDY0ZGEzYjFlYTg5YzJjMDZjZjNjOTlhOTlhMDJlMDcxMS4uNmEzZDFi
Y2Q5MDg4NmUwMzNkNTEyNGRjOWQ0ZWI0YjZkZmRmYjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMzUsMjMgKzM1
LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJp
bmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQmIGJhY2tlbmQpCitSZWY8UlRDUnRwU2VuZGVy
PiBSVENSdHBTZW5kZXI6OmNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRl
ckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICBhdXRvIHNlbmRlciA9IGFkb3B0UmVmKCpuZXcg
UlRDUnRwU2VuZGVyKFN0cmluZyh0cmFjay0+a2luZCgpKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlk
cyksIGJhY2tlbmQpKTsKKyAgICBhdXRvIHNlbmRlciA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2Vu
ZGVyKFN0cmluZyh0cmFjay0+a2luZCgpKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1v
dmUoYmFja2VuZCkpKTsKICAgICBzZW5kZXItPnNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKICAg
ICByZXR1cm4gc2VuZGVyOwogfQogCi1SZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBTZW5kZXI6OmNy
ZWF0ZShTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMs
IEJhY2tlbmQmIGJhY2tlbmQpCitSZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBTZW5kZXI6OmNyZWF0
ZShTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0
ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RGTW92
ZShtZWRpYVN0cmVhbUlkcyksIGJhY2tlbmQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTZW5kZXIoV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwg
V1RGTW92ZShiYWNrZW5kKSkpOwogfQogCi1SVENSdHBTZW5kZXI6OlJUQ1J0cFNlbmRlcihTdHJp
bmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQm
IGJhY2tlbmQpCitSVENSdHBTZW5kZXI6OlJUQ1J0cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQs
IFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBT
ZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiAgICAgOiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2Uo
KQogICAgICwgbV90cmFja0tpbmQoV1RGTW92ZSh0cmFja0tpbmQpKQogICAgICwgbV9tZWRpYVN0
cmVhbUlkcyhXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSkKLSAgICAsIG1fYmFja2VuZCgmYmFja2Vu
ZCkKKyAgICAsIG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAppbmRleCA4OTU4
ZGY2NzkxMzJkNGY4ZTZmMjVkODRiZDBlYzExNzkzNjc2ZmNhLi40ZTFlNGI1ZTNhN2ZhNWY3ZDE3
YzBkZjczNDk2ZjZlYWQyMGVmMWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTMzLDIxICszMywxNSBAQAogI2lmIEVOQUJM
RShXRUJfUlRDKQogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVk
ZSAiUlRDUnRwU2VuZGVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFNlbmRlclJlY2VpdmVy
QmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1
YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgotICAgIGNsYXNzIEJhY2tl
bmQgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENS
dHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpID0gMDsKLSAgICAgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFt
ZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIH5CYWNrZW5k
KCkgPSBkZWZhdWx0OwotICAgIH07Ci0KLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3Jl
YXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBCYWNrZW5kJik7Ci0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShTdHJp
bmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQm
KTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMs
IHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgdHJhY2tJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tJZDsgfQogICAgIGNvbnN0IFN0
cmluZyYgdHJhY2tLaW5kKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0tpbmQ7IH0KQEAgLTY1LDEy
ICs1OSwxMiBAQCBwdWJsaWM6CiAgICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCk7
CiAKIHByaXZhdGU6Ci0gICAgUlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOworICAgIFJUQ1J0cFNlbmRlcihT
dHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKIAogICAgIFN0cmluZyBtX3RyYWNr
SWQ7CiAgICAgU3RyaW5nIG1fdHJhY2tLaW5kOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fbWVkaWFT
dHJlYW1JZHM7Ci0gICAgQmFja2VuZCogbV9iYWNrZW5kOworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
VENSdHBTZW5kZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMjU4YTRjM2U5Y2Y0OTE1MzgyNjQ4Njgx
NjYxNzJmZmM0MGE0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOworY2xhc3MgUlRDUnRwU2VuZGVyOworCitjbGFz
cyBSVENSdHBTZW5kZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFj
ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOworICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIH5SVENS
dHBTZW5kZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGJmMTIwZDAyOWI5ODBjMzUyOGZlYjA0MDk1YWJhMGU5
MjRhNzZhZDUuLmRlMzU5MTc5ZmRlMmI0YTE5NWVkZTYyNTUxNWNhYzY5NWU4NDQ0MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zMiw2ICszMiw5
IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJv
dmlkZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKyNpbmNs
dWRlICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDVXRp
bHMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgpAQCAtNTYsMTEgKzU5LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFN0cmluZyBmcm9tU3RkU3RyaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5k
YXRhKCksIHZhbHVlLmxlbmd0aCgpKTsKLX0KLQogTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIHBlZXJD
b25uZWN0aW9uLCBMaWJXZWJSVENQcm92aWRlciYgY2xpZW50KQogICAgIDogbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQocGVlckNvbm5lY3Rpb24pCiAgICAgLCBtX3BlZXJDb25uZWN0aW9uRmFjdG9y
eSgqY2xpZW50LmZhY3RvcnkoKSkKQEAgLTY0NSwxNiArNjQzLDYgQEAgdm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVTdHJlYW0od2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFj
ZSYpCiB7CiB9CiAKLWNsYXNzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBS
VENSdHBSZWNlaXZlcjo6QmFja2VuZCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJm
YWNlPiYmIHJ0Y1JlY2VpdmVyKSA6IG1fcnRjUmVjZWl2ZXIoV1RGTW92ZShydGNSZWNlaXZlcikp
IHsgfQotcHJpdmF0ZToKLSAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSBmaW5h
bDsKLQotICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNl
PiBtX3J0Y1JlY2VpdmVyOwotfTsKLQotCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFk
ZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJm
YWNlPiYmIHJ0Y1JlY2VpdmVyLCBjb25zdCBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpNZWRpYVN0cmVhbUludGVyZmFjZT4+JiBydGNTdHJlYW1zKQogewogICAgIEFTU0VS
VChydGNSZWNlaXZlcik7CkBAIC02ODQsNyArNjcyLDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNl
aXYKICAgICB9CiAgICAgfQogCi0gICAgcmVjZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAg
cmVjZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CiAgICAgCiAgICAgYXV0byogdHJhY2sg
PSByZWNlaXZlci0+dHJhY2soKTsKICAgICBBU1NFUlQodHJhY2spOwpAQCAtOTUyLDk0ICs5NDAs
NiBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnNldFJlbW90ZVNlc3Npb25EZXNjcmlw
dGlvbkZhaWxlZChjb25zdCBzdGQ6OnN0cmluZwogICAgIH0pOwogfQogCi1zdGF0aWMgaW5saW5l
IFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBmaWxsRW5jb2RpbmdQYXJhbWV0
ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwRW5jb2RpbmdQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQot
ewotICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwot
Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc3NyYykKLSAgICAgICAgcGFyYW1ldGVycy5zc3JjID0g
KnJ0Y1BhcmFtZXRlcnMuc3NyYzsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5ydHggJiYgcnRjUGFy
YW1ldGVycy5ydHgtPnNzcmMpCi0gICAgICAgIHBhcmFtZXRlcnMucnR4LnNzcmMgPSAqcnRjUGFy
YW1ldGVycy5ydHgtPnNzcmM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZmVjICYmIHJ0Y1BhcmFt
ZXRlcnMuZmVjLT5zc3JjKQotICAgICAgICBwYXJhbWV0ZXJzLmZlYy5zc3JjID0gKnJ0Y1BhcmFt
ZXRlcnMuZmVjLT5zc3JjOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLmR0eCkgewotICAgICAgICBz
d2l0Y2ggKCpydGNQYXJhbWV0ZXJzLmR0eCkgewotICAgICAgICBjYXNlIHdlYnJ0Yzo6RHR4U3Rh
dHVzOjpESVNBQkxFRDoKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1l
dGVyczo6RHR4U3RhdHVzOjpEaXNhYmxlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIHdlYnJ0Yzo6RHR4U3RhdHVzOjpFTkFCTEVEOgotICAgICAgICAgICAgcGFyYW1ldGVycy5k
dHggPSBSVENSdHBQYXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkVuYWJsZWQ7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcGFyYW1ldGVycy5hY3RpdmUgPSBydGNQYXJhbWV0ZXJzLmFjdGl2ZTsKLSAgICBp
ZiAocnRjUGFyYW1ldGVycy5tYXhfYml0cmF0ZV9icHMpCi0gICAgICAgIHBhcmFtZXRlcnMubWF4
Qml0cmF0ZSA9ICpydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwczsKLSAgICBpZiAocnRjUGFy
YW1ldGVycy5tYXhfZnJhbWVyYXRlKQotICAgICAgICBwYXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9
ICpydGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGU7Ci0gICAgcGFyYW1ldGVycy5yaWQgPSBmcm9t
U3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMucmlkKTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5zY2Fs
ZV9yZXNvbHV0aW9uX2Rvd25fYnkpCi0gICAgICAgIHBhcmFtZXRlcnMuc2NhbGVSZXNvbHV0aW9u
RG93bkJ5ID0gKnJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5OwotCi0gICAg
cmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6
SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyhj
b25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMp
Ci17Ci0gICAgUlRDUnRwUGFyYW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwotCi0gICAgcGFyYW1ldGVycy51cmkgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRl
cnMudXJpKTsKLSAgICBwYXJhbWV0ZXJzLmlkID0gcnRjUGFyYW1ldGVycy5pZDsKLQotICAgIHJl
dHVybiBwYXJhbWV0ZXJzOwotfQotCi1zdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkNv
ZGVjUGFyYW1ldGVycyBmaWxsQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwQ29kZWNQ
YXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkNvZGVj
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgcGFyYW1ldGVycy5wYXlsb2FkVHlwZSA9IHJ0
Y1BhcmFtZXRlcnMucGF5bG9hZF90eXBlOwotICAgIHBhcmFtZXRlcnMubWltZVR5cGUgPSBmcm9t
U3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMubWltZV90eXBlKCkpOwotICAgIGlmIChydGNQYXJhbWV0
ZXJzLmNsb2NrX3JhdGUpCi0gICAgICAgIHBhcmFtZXRlcnMuY2xvY2tSYXRlID0gKnJ0Y1BhcmFt
ZXRlcnMuY2xvY2tfcmF0ZTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5udW1fY2hhbm5lbHMpCi0g
ICAgICAgIHBhcmFtZXRlcnMuY2hhbm5lbHMgPSAqcnRjUGFyYW1ldGVycy5udW1fY2hhbm5lbHM7
Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIFJUQ1J0cFBhcmFtZXRlcnMg
ZmlsbFJ0cFBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBQYXJhbWV0ZXJzIHJ0Y1BhcmFtZXRl
cnMpCi17Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotCi0gICAgcGFyYW1ldGVy
cy50cmFuc2FjdGlvbklkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnRyYW5zYWN0aW9u
X2lkKTsKLSAgICBmb3IgKGF1dG8mIHJ0Y0VuY29kaW5nIDogcnRjUGFyYW1ldGVycy5lbmNvZGlu
Z3MpCi0gICAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmFwcGVuZChmaWxsRW5jb2RpbmdQYXJh
bWV0ZXJzKHJ0Y0VuY29kaW5nKSk7Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBydGNQYXJh
bWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zKQotICAgICAgICBwYXJhbWV0ZXJzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGV4dGVuc2lvbikpOwot
ICAgIGZvciAoYXV0byYgY29kZWMgOiBydGNQYXJhbWV0ZXJzLmNvZGVjcykKLSAgICAgICAgcGFy
YW1ldGVycy5jb2RlY3MuYXBwZW5kKGZpbGxDb2RlY1BhcmFtZXRlcnMoY29kZWMpKTsKLQotICAg
IHN3aXRjaCAocnRjUGFyYW1ldGVycy5kZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSB7Ci0gICAgLy8g
RklYTUU6IFN1cHBvcnQgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRC4KLSAgICBjYXNl
IHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRDoKLSAgICBjYXNlIHdlYnJ0
Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9GUkFNRVJBVEU6Ci0gICAgICAgIHBh
cmFtZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFk
YXRpb25QcmVmZXJlbmNlOjpNYWludGFpbkZyYW1lcmF0ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fUkVTT0xVVElPTjoK
LSAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0
ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1haW50YWluUmVzb2x1dGlvbjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QkFMQU5DRUQ6
Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1l
dGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCYWxhbmNlZDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfTsKLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotUlRDUnRwUGFyYW1ldGVycyBSVENS
dHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQotewotICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOwotfQotCiBSVENSdHBQ
YXJhbWV0ZXJzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFJUQ1J0cFNlbmRlclBhcmFtZXRl
cnMoUlRDUnRwU2VuZGVyJiBzZW5kZXIpCiB7CiAgICAgYXV0byBydGNTZW5kZXIgPSBtX3NlbmRl
cnMuZ2V0KCZzZW5kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjJiYTE1MGM0YjQ2NGRjMjlhYmY2MjJlNzliMTlm
NmQ4ZmMzMjE3Yy4uZTA3YTg1MzgxMmE2YWMxYTc3ODcxZGI4YjQ5YTkxMjhkNTZhZjQ2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSlNSVENTdGF0c1JlcG9ydC5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTWVk
aWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UlRDSWNlQ2FuZGlkYXRlLmgiCkBAIC0yNzUsNyArMjc3LDggQEAgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6dmkKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3Jl
YXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVh
dGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOwogCi0gICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0
cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoInZpZGVvIiwgeyB9LCBt
X3BlZXJDb25uZWN0aW9uKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKKyAgICBhdXRvIHNlbmRlckJh
Y2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlz
LCBudWxscHRyKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNy
ZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgidmlkZW8iLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFj
a2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCkpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2Vu
ZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RG
TW92ZSh0cmFuc2NlaXZlcikpOwogCkBAIC0yOTcsNyArMzAwLDggQEAgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YXUKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBj
cmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCkpOwogCi0gICAgYXV0byB0cmFuc2NlaXZlciA9IFJU
Q1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoImF1ZGlvIiwgeyB9
LCBtX3BlZXJDb25uZWN0aW9uKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKKyAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6
OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgiYXVkaW8iLCB7IH0sIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCkpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxl
U2VuZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIo
V1RGTW92ZSh0cmFuc2NlaXZlcikpOwogCkBAIC0zNDgsMTAgKzM1Miw1OSBAQCBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlbW90
ZURlc2NyaXB0aW9uKAogICAgIHJldHVybiBtX2VuZHBvaW50LT5yZW1vdGVEZXNjcmlwdGlvbigp
OwogfQogCi1ib29sIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5QWRkZWRU
cmFjayhSVENSdHBTZW5kZXImIHNlbmRlcikKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKFJUQ1J0cFNlbmRlciog
c2VuZGVyLCBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1l
ZGlhU3RyZWFtSWRzKQogewotICAgIEFTU0VSVChzZW5kZXIudHJhY2soKSk7Ci0gICAgcmV0dXJu
IG1fZW5kcG9pbnQtPmFkZFRyYWNrKHNlbmRlciwgKnNlbmRlci50cmFjaygpLCBzZW5kZXIubWVk
aWFTdHJlYW1JZHMoKSk7CisgICAgaWYgKCFzZW5kZXIpIHsKKyAgICAgICAgU3RyaW5nIHRyYW5z
Y2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKKyAgICAgICAgY29u
c3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay5raW5kKCk7CisgICAgICAgIFN0cmluZyB0cmFj
a0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgICAgIGF1dG8gc2VuZGVy
QmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKG1ha2VSZWYodHJhY2spLCBWZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdU
Rk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVj
ZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJZCk7CisgICAgICAgIGF1dG8g
dHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVy
KSwgV1RGTW92ZShyZWNlaXZlcikpOworCisgICAgICAgIC8vIFRoaXMgdHJhbnNjZWl2ZXIgaXMg
bm90IHlldCBhc3NvY2lhdGVkIHdpdGggYW4gbS1saW5lIChudWxsIG1pZCksIGJ1dCB3ZSBuZWVk
IGEKKyAgICAgICAgLy8gcHJvdmlzaW9uYWwgbWlkIGlmIHRoZSB0cmFuc2NlaXZlciBpcyB1c2Vk
IHRvIGNyZWF0ZSBhbiBvZmZlci4KKyAgICAgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFs
TWlkKHRyYW5zY2VpdmVyTWlkKTsKKworICAgICAgICBzZW5kZXIgPSAmdHJhbnNjZWl2ZXItPnNl
bmRlcigpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZEludGVybmFsVHJhbnNjZWl2ZXIo
V1RGTW92ZSh0cmFuc2NlaXZlcikpOworICAgIH0KKworICAgIGlmICghbV9lbmRwb2ludC0+YWRk
VHJhY2soKnNlbmRlciwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKKworICAgIHJl
dHVybiBtYWtlUmVmKCpzZW5kZXIpOworfQorCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQp
Cit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBuZXdTZW5kZXIgPSBS
VENSdHBTZW5kZXI6OmNyZWF0ZShTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9yPFN0cmluZz4oKSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CisgICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2
ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCks
IHRyYWNrS2luZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkKK3sK
KyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNl
bmRlcjo6Y3JlYXRlKHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShz
ZW5kZXJCYWNrZW5kKSk7CisgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5kZXIuZ2V0
KCksIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiB7IH0pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJfcyB9OworCisgICAg
cmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5kZXIpLCBpbml0LCB0cmFj
ay0+aWQoKSwgdHJhY2stPmtpbmQoKSk7Cit9CisKK1JlZjxSVENSdHBUcmFuc2NlaXZlcj4gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxS
VENSdHBTZW5kZXI+JiYgc2VuZGVyLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQs
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpCit7CisgICAg
U3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsK
KyAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3Zl
KHNlbmRlciksIGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNr
SWQpKTsKKworICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1p
ZCk7CisgICAgdHJhbnNjZWl2ZXItPnNldERpcmVjdGlvbihpbml0LmRpcmVjdGlvbik7CisKKyAg
ICBtX3BlZXJDb25uZWN0aW9uLmFkZEludGVybmFsVHJhbnNjZWl2ZXIodHJhbnNjZWl2ZXIuY29w
eVJlZigpKTsKKyAgICByZXR1cm4gdHJhbnNjZWl2ZXI7CiB9CiAKIHZvaWQgTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpub3RpZnlSZW1vdmVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5k
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCmluZGV4IGZhMGYwMTM3MDk1MjUyNjEyZjRiMGViNjExNjQ4NGQxNGZhMzMxMDEuLjFjNTU3
MjQ3NGRhMDI5YzU2MWI5NmM3Y2ZhM2ExZGYxNzkyNmNjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSB3ZWJydGMgewog
Y2xhc3MgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlOwpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2U7CiBjbGFzcyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U7CiBjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U7CiAKLWNsYXNzIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgeworY2xhc3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIGZpbmFsIDogcHVibGlj
IFBlZXJDb25uZWN0aW9uQmFja2VuZCwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlv
biYsIExpYldlYlJUQ1Byb3ZpZGVyJik7CkBAIC01NCw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0F1ZGlvU291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Tb3VyY2VzLnNpemUo
KTsgfQogICAgIGJvb2wgaGFzVmlkZW9Tb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1Nv
dXJjZXMuc2l6ZSgpOyB9CiAKKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwor
ICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICB2b2lkIGRvQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYpIGZp
bmFsOwogICAgIHZvaWQgZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKSBmaW5hbDsK
QEAgLTc0LDEzICs3OCwxMSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb24+IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IHBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0
IGZpbmFsOwogCi0gICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKLSAg
ICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgZmlu
YWw7Ci0KICAgICB2b2lkIGVtdWxhdGVQbGF0Zm9ybUV2ZW50KGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgfQogICAgIHZvaWQgYXBwbHlSb3RhdGlvbkZvck91dGdvaW5nVmlkZW9Tb3VyY2VzKCkgZmlu
YWw7CiAKLSAgICBmcmllbmQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDsKKyAgICBmcmllbmQgY2xh
c3MgTGliV2ViUlRDTWVkaWFFbmRwb2ludDsKKyAgICBmcmllbmQgY2xhc3MgTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZDsKICAgICBSVENQZWVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0
dXJuIG1fcGVlckNvbm5lY3Rpb247IH0KICAgICB2b2lkIGFkZEF1ZGlvU291cmNlKFJlZjxSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U+JiYpOwogICAgIHZvaWQgYWRkVmlkZW9Tb3VyY2UoUmVm
PFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZT4mJik7CkBAIC04OCw5ICs5MCwxMiBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0U3RhdHNTdWNjZWVkZWQoY29uc3QgRGVmZXJyZWRQcm9taXNlJiwg
UmVmPFJUQ1N0YXRzUmVwb3J0PiYmKTsKICAgICB2b2lkIGdldFN0YXRzRmFpbGVkKGNvbnN0IERl
ZmVycmVkUHJvbWlzZSYsIEV4Y2VwdGlvbiYmKTsKIAotICAgIGJvb2wgbm90aWZ5QWRkZWRUcmFj
ayhSVENSdHBTZW5kZXImKSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVy
Pj4gYWRkVHJhY2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlSZW1vdmVkVHJhY2soUlRDUnRwU2Vu
ZGVyJikgZmluYWw7CiAKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBh
ZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQm
KSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFu
c2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJ
bml0JikgZmluYWw7CisKICAgICBzdHJ1Y3QgVmlkZW9SZWNlaXZlciB7CiAgICAgICAgIFJlZjxS
VENSdHBSZWNlaXZlcj4gcmVjZWl2ZXI7CiAgICAgICAgIFJlZjxSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U+IHNvdXJjZTsKQEAgLTEwNSw2ICsxMTAsOCBAQCBwcml2YXRlOgogcHJpdmF0ZToK
ICAgICBib29sIGlzTG9jYWxEZXNjcmlwdGlvblNldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNMb2NhbERlc2NyaXB0aW9uU2V0OyB9CiAKKyAgICBSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IGNv
bXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiwgY29uc3QgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0JiwgY29uc3QgU3RyaW5nJiB0cmFja0lkLCBjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCk7CisKICAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gbV9lbmRwb2ludDsKICAg
ICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNS
ZW1vdGVEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGY0ZTdjY2FmZTYzMTMz
YjgzNWIwMWRiMmQwZjdiYWVhYTA5NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJS
VENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKworI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSVENSdHBQYXJhbWV0ZXJzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6Z2V0
UGFyYW1ldGVycygpCit7CisgICAgcmV0dXJuIGZpbGxSdHBQYXJhbWV0ZXJzKG1fcnRjUmVjZWl2
ZXItPkdldFBhcmFtZXRlcnMoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWNlMmU0MmRh
NjMxZWU5NzEyZDhhZDhlY2I2OWQ4NGI2Y2VhMmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRD
KSAmJiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5j
bHVkZSAiUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIi
CisKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3J0cHJlY2VpdmVyaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiYmIHJ0Y1JlY2VpdmVyKQorICAg
ICAgICA6IG1fcnRjUmVjZWl2ZXIoV1RGTW92ZShydGNSZWNlaXZlcikpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSBmaW5hbDsK
KworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlPiBt
X3J0Y1JlY2VpdmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2ODYzYTk0MmM4ZWQzMzY5
OWIwODEyNDZjZDY3ZDY4ODZjZmVjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorI2luY2x1
ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJSVENSdHBTZW5kZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNlbmRl
ciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKCFtX3BlZXJDb25uZWN0aW9uQmFja2VuZCkgewor
ICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5v
IFdlYlJUQyBiYWNrZW5kIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFzZW5kZXIudHJhY2soKSAmJiB0cmFjaykgeworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC0+Y29ubmVjdGlvbigpLmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKHNlbmRlciwgdHJhY2su
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC0+cmVwbGFjZVRyYWNrKHNlbmRlciwg
V1RGTW92ZSh0cmFjayksIFdURk1vdmUocHJvbWlzZSkpOworfQorCitSVENSdHBQYXJhbWV0ZXJz
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJiBz
ZW5kZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3J0Y1NlbmRlcikgeworICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGJhY2tlbmQgYW5kIHNob3Vs
ZCBkaXJlY3RseSBoYXZlIG1fcnRjU2VuZGVyIGhlcmUuCisgICAgICAgIGlmICghbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4g
bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmdldFBhcmFtZXRlcnMoc2VuZGVyKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGZpbGxSdHBQYXJhbWV0ZXJzKG1fcnRjU2VuZGVyLT5HZXRQYXJhbWV0ZXJzKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JU
QykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWI5Y2VhZjBjMmRlYWMxNzJmMDI0ZjQ1ZDgxMDAwNDQz
MGY0ZTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01h
Y3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRp
YWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRj
L2FwaS9ydHBzZW5kZXJpbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcnRjX2Jhc2Uvc2Nv
cGVkX3JlZl9wdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisKK2Ns
YXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwU2VuZGVy
QmFja2VuZCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIpCisgICAgICAgIDog
bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQobWFrZVdlYWtQdHIoJmJhY2tlbmQpKQorICAgICAgICAs
IG1fcnRjU2VuZGVyKFdURk1vdmUocnRjU2VuZGVyKSkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBzZXRSVENTZW5kZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJm
YWNlPiYmIHJ0Y1NlbmRlcikgeyBtX3J0Y1NlbmRlciA9IFdURk1vdmUocnRjU2VuZGVyKTsgfQor
ICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CisgICAgUlRDUnRwUGFy
YW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOworCitwcml2
YXRlOgorICAgIFdlYWtQdHI8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPiBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZDsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5k
ZXJJbnRlcmZhY2U+IG1fcnRjU2VuZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjNjNmNjNmQyNjJjMDE0YWYxYjU4NDc3OTE5OTIyZGZiMGYzMjBmZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1V0aWxzLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKworI2lmIFVT
RShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJS
VENSdHBQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8d2VicnRjL2FwaS9ydHBwYXJhbWV0ZXJzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJz
OjpFbmNvZGluZ1BhcmFtZXRlcnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6
OlJ0cEVuY29kaW5nUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKK3sKKyAgICBSVENSdHBQYXJh
bWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKKworICAgIGlmIChydGNQYXJh
bWV0ZXJzLnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNz
cmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
KQorICAgICAgICBwYXJhbWV0ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
OworICAgIGlmIChydGNQYXJhbWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykK
KyAgICAgICAgcGFyYW1ldGVycy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsK
KyAgICBpZiAocnRjUGFyYW1ldGVycy5kdHgpIHsKKyAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1l
dGVycy5kdHgpIHsKKyAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6
RGlzYWJsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0
YXR1czo6RU5BQkxFRDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1l
dGVyczo6RHR4U3RhdHVzOjpFbmFibGVkOworICAgICAgICB9CisgICAgfQorICAgIHBhcmFtZXRl
cnMuYWN0aXZlID0gcnRjUGFyYW1ldGVycy5hY3RpdmU7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMu
bWF4X2JpdHJhdGVfYnBzKQorICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFy
YW1ldGVycy5tYXhfYml0cmF0ZV9icHM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1l
cmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5t
YXhfZnJhbWVyYXRlOworICAgIHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLnJpZCk7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3du
X2J5KQorICAgICAgICBwYXJhbWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJh
bWV0ZXJzLnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieTsKKworICAgIHJldHVybiBwYXJhbWV0ZXJz
OworfQorCitzdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBh
cmFtZXRlcnMgZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBh
cmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKworICAgIHBh
cmFtZXRlcnMudXJpID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7CisgICAgcGFy
YW1ldGVycy5pZCA9IHJ0Y1BhcmFtZXRlcnMuaWQ7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsK
K30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmls
bENvZGVjUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFy
YW1ldGVycykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1l
dGVyczsKKworICAgIHBhcmFtZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxv
YWRfdHlwZTsKKyAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLm1pbWVfdHlwZSgpKTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQor
ICAgICAgICBwYXJhbWV0ZXJzLmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7
CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzKQorICAgICAgICBwYXJhbWV0ZXJz
LmNoYW5uZWxzID0gKnJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzOworCisgICAgcmV0dXJuIHBh
cmFtZXRlcnM7Cit9CisKK1JUQ1J0cFBhcmFtZXRlcnMgZmlsbFJ0cFBhcmFtZXRlcnMoY29uc3Qg
d2VicnRjOjpSdHBQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKKworICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7CisgICAgZm9yIChhdXRvJiBy
dGNFbmNvZGluZyA6IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQorICAgICAgICBwYXJhbWV0ZXJz
LmVuY29kaW5ncy5hcHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGluZykpOwor
ICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9u
cykKKyAgICAgICAgcGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxsSGVhZGVy
RXh0ZW5zaW9uUGFyYW1ldGVycyhleHRlbnNpb24pKTsKKyAgICBmb3IgKGF1dG8mIGNvZGVjIDog
cnRjUGFyYW1ldGVycy5jb2RlY3MpCisgICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFwcGVuZChm
aWxsQ29kZWNQYXJhbWV0ZXJzKGNvZGVjKSk7CisKKyAgICBzd2l0Y2ggKHJ0Y1BhcmFtZXRlcnMu
ZGVncmFkYXRpb25fcHJlZmVyZW5jZSkgeworICAgIC8vIEZJWE1FOiBTdXBwb3J0IERlZ3JhZGF0
aW9uUHJlZmVyZW5jZTo6RElTQUJMRUQuCisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZTo6RElTQUJMRUQ6CisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5j
ZTo6TUFJTlRBSU5fRlJBTUVSQVRFOgorICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRh
aW5GcmFtZXJhdGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlv
blByZWZlcmVuY2U6Ok1BSU5UQUlOX1JFU09MVVRJT046CisgICAgICAgIHBhcmFtZXRlcnMuZGVn
cmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJl
bmNlOjpNYWludGFpblJlc29sdXRpb247CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJBTEFOQ0VEOgorICAgICAgICBwYXJhbWV0ZXJzLmRl
Z3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVy
ZW5jZTo6QmFsYW5jZWQ7CisgICAgICAgIGJyZWFrOworICAgIH07CisgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQyMWRhMDFiNjc0
ZGY3YzRmNzBlMDE0MjY2NjNkMzQ2YzlhMWZmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShMSUJX
RUJSVEMpCisKK25hbWVzcGFjZSB3ZWJydGMgeworc3RydWN0IFJ0cFBhcmFtZXRlcnM7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJUQ1J0cFBhcmFtZXRlcnM7CisKK1JUQ1J0
cFBhcmFtZXRlcnMgZmlsbFJ0cFBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBQYXJhbWV0ZXJz
Jik7CisKK2lubGluZSBTdHJpbmcgZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFs
dWUpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5s
ZW5ndGgoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShM
SUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOGFhYjU1YzI3M2VlZTk1YTQ4NjRhZjVhNjg4YWJkOTE4MjRmODM4Yi4u
ZTcxOTIyMDAxYWFhYmI4MDJiYjM5NmFiMjc3OWY5NjU2OTU4NTVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMiw5ICsx
MTAyLDEzIEBACiAJCTQxOEEwNkQwMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNF
MTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNDE4Rjg4MDUw
RkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggKi87IH07CiAJCTQxOTI0MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOTI0MjQ3MjEyN0I3Q0MwMDYzNEZDRiAvKiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSAqLzsgfTsKKwkJNDE5NTgxNEIyMTM4NkVB
MDAwMERCQTYyIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QzFDQTQyMTM4NjhCMjAwQTIzNzUwIC8qIFdlYkF1
ZGlvQnVmZmVyTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxOUFDRjkyMUY5N0U3REEwMDlGMUE4MyAvKiBTZXJ2aWNlV29ya2VyRmV0Y2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUFDRjhF
MUY5N0U3RDUwMDlGMUE4MyAvKiBTZXJ2aWNlV29ya2VyRmV0Y2guaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTlCQzJERjE2ODUzMjk5MDBENjRE
NkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3Rh
dGUuaCAqLzsgfTsKIAkJNDE5QkU3NTkxQkM3RjQyQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGlu
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
OUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi87IH07CisJ
CTQxOUY4NDY5MjEzODVFQjcwMDUyREQwQiAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQjlBM0I0
MjEzNzk4N0MwMEFCMjM5RSAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAqLzsgfTsK
KwkJNDE5Rjg0NkIyMTM4NUVCQTAwNTJERDBCIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUI5
QTNCNjIxMzc5ODdEMDBBQjIzOUUgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCAq
LzsgfTsKKwkJNDE5Rjg0NkUyMTM4NjE0MTAwNTJERDBCIC8qIExpYldlYlJUQ1V0aWxzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUY4NDZEMjEz
ODYxM0UwMDUyREQwQiAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi87IH07CiAJCTQxQTFCMDFDMUU1
NDIzOUIwMDdGMzc2OSAvKiBKU0RPTUd1YXJkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQTFCMDFBMUU1NDIzOTYwMDdGMzc2OSAvKiBK
U0RPTUd1YXJkZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUEzRDU4RjEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2Vy
VGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi87IH07
CiAJCTQxQTdEMzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUE3
RDM1MDFGNDM4RDEwMDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICov
OyB9OwpAQCAtNDA1Miw4ICs0MDU2LDggQEAKIAkJQ0RFNTk1OTUxQkYxNkRGMzAwQTFDQkU4IC8q
IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTMxQkYxNjZBRDAwQTFDQkU4IC8qIENETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tICovOyB9OwogCQlDREU1OTU5NzFCRjI2RTIxMDBB
MUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OTYxQkYyNkUyMTAwQTFDQkU4IC8q
IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCAqLzsgfTsKIAkJQ0RFNTk1OUQxQkYyNzU3
MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5QzFCRjI3NTcxMDBBMUNC
RTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSAqLzsgfTsKLQkJQ0RFNjY3QTQx
RTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU2NjdBMjFFNEJCRjE1MDBFODE1NEEg
LyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCAqLzsgfTsKLQkJQ0RFNjY3QTUxRTRCQkYxNTAwRTgx
NTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVm
ZmVyTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUNERTY2N0E0MUU0QkJGMTUwMEU4MTU0QSAvKiBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNjY3
QTIxRTRCQkYxNTAwRTgxNTRBIC8qIGNvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi87IH07
CisJCUNERTY2N0E1MUU0QkJGMTUwMEU4MTU0QSAvKiBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTY2N0Ez
MUU0QkJGMTUwMEU4MTU0QSAvKiBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREU3RkM0NTE4MTkwNEIx
MDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
REU4M0RCMjE4M0M0NDA2MDAzMUVBQTMgLyogVmlkZW9QbGF5YmFja1F1YWxpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTgzREIwMTgzQzQ0MDYw
MDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5oICovOyB9OwogCQlDREU4QjVFQzFBNjk3
NzczMDBCNEI2NkEgLyogTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERThCNUVBMUE2OTc3NzMwMEI0QjY2
QSAvKiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwICovOyB9OwpAQCAtNzA2MSw3ICs3MDY1
LDcgQEAKIAkJMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWVzU3RyYXRlZ3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzY2MkY5ODQwNDdDRURCRTVERERBRkFBIC8qIFJlbmRl
ck1hdGhNTE1lbmNsb3NlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlck1hdGhNTE1lbmNsb3NlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzcxMTlBNzkyMENDQjYxMDAwMkM2REM5IC8qIFdlYktpdFRhcmdldENvbmRpdGlvbmFscy54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBXZWJLaXRUYXJnZXRDb25kaXRpb25hbHMueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2RCAvKiBl
eHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gZXh0cmFjdC1s
b2NhbGl6YWJsZS1zdHJpbmdzLnBsOyBwYXRoID0gIlNjcmlwdHMvZXh0cmFjdC1sb2NhbGl6YWJs
ZS1zdHJpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzcxN0Q3RTUxN0VD
QzNBNjAwM0MyNzZEIC8qIGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IG5hbWUgPSAiZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIjsgcGF0aCA9ICJTY3JpcHRz
L2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3MUE2N0NBMTFDNkM3REIwMDA0N0I4QiAvKiBIeXBoZW5hdGlvbkNGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEh5cGhlbmF0aW9uQ0YuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFFNjVDQjEzNjYxRURDMDBCRUVEQjAgLyogUGFn
ZVNlcmlhbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVNlcmlh
bGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRTY1Q0QxMzY2MUVFRDAw
QkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VTZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcyNzksNiArNzI4Myw4IEBACiAJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNp
dGVkTGlua1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZp
c2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJE
RDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVCdWlsdGluTmFtZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5Rjg0NkMyMTM4NjEzRDAwNTJERDBC
IC8qIExpYldlYlJUQ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExp
YldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5Rjg0NkQyMTM4NjEzRTAwNTJERDBCIC8qIExpYldl
YlJUQ1V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldl
YlJUQ1V0aWxzLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAvKiBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZB
RkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBS
ZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzMxMSw2ICs3MzE3LDEyIEBACiAJ
CTQxQjJBNjI1MUVGMUJGNjAwMDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFCNDU5REExRjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjQ1OUVEMUY1NUVCQzcwMDAwRjZGRCAvKiBSZWFk
YWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFk
YWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQjlBM0FFMjEz
NzdDQTYwMEFCMjM5RSAvKiBSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFCOUEzQjAyMTM3N0Y3MjAwQUIyMzlFIC8qIFJUQ1J0cFJlY2VpdmVyQmFj
a2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBSZWNlaXZlckJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFCOUEzQjMyMTM3OTg3QjAw
QUIyMzlFIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOyBwYXRoID0gbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDFCOUEzQjQyMTM3OTg3QzAwQUIyMzlFIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQjlBM0I1MjEzNzk4N0Mw
MEFCMjM5RSAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHBhdGggPSBs
aWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxQjlBM0I2MjEzNzk4N0QwMEFCMjM5RSAvKiBMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3
NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
N0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM0NSw4ICsxMzM1Nyw4
IEBACiAJCUNERTU5NTlDMUJGMjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RFNjU2MEUxN0NBNkU3NjAwNTI2QkE3IC8qIG1lZGlhQ29udHJvbHNBcHBsZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9IG1lZGlhQ29udHJvbHNBcHBsZS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0RFNjY3QTExRTRCQkE0RDAwRTgxNTRBIC8qIFBsYXRmb3JtQXVkaW9EYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQXVkaW9EYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNERTY2N0EyMUU0QkJGMTUwMEU4MTU0QSAv
KiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNjY3QTIxRTRCQkYxNTAwRTgx
NTRBIC8qIGNvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBjb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogY29jb2EvV2Vi
QXVkaW9CdWZmZXJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU3
RkM0MjE4MTkwNEIxMDAyQkJCNzcgLyogT3JkZXJJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmRlckl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RFN0ZDNDMxODE5MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JkZXJJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREU4M0RBRjE4M0M0NDA2MDAzMUVBQTMgLyogVmlk
ZW9QbGF5YmFja1F1YWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVmlkZW9QbGF5YmFja1F1YWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTUwOTQsOSArMTUxMDYsMTEgQEAKIAkJCQk1RTJDNDM1NjFCQ0VFMzBEMDAwMUUyQkMgLyog
UlRDUnRwUmVjZWl2ZXIuY3BwICovLAogCQkJCTVFMkM0MzU3MUJDRUUzMEQwMDAxRTJCQyAvKiBS
VENSdHBSZWNlaXZlci5oICovLAogCQkJCTVFMkM0MzU4MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENS
dHBSZWNlaXZlci5pZGwgKi8sCisJCQkJNDFCOUEzQjAyMTM3N0Y3MjAwQUIyMzlFIC8qIFJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oICovLAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAxRTJCQyAvKiBS
VENSdHBTZW5kZXIuY3BwICovLAogCQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENS
dHBTZW5kZXIuaCAqLywKIAkJCQk1RTJDNDM1QjFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2Vu
ZGVyLmlkbCAqLywKKwkJCQk0MUI5QTNBRTIxMzc3Q0E2MDBBQjIzOUUgLyogUlRDUnRwU2VuZGVy
QmFja2VuZC5oICovLAogCQkJCTVFMkM0MzVEMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5k
ZXJSZWNlaXZlckJhc2UuaCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRD
UnRwVHJhbnNjZWl2ZXIuY3BwICovLAogCQkJCTVFNUUyQjExMUNGQzNFNEIwMDBDMEQ4NSAvKiBS
VENSdHBUcmFuc2NlaXZlci5oICovLApAQCAtMTY4MDgsNiArMTY4MjIsMTIgQEAKIAkJCQk0MTc2
MTJBQzFFM0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovLAogCQkJ
CTQxNzYxMkFEMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwICovLAogCQkJCTQxNzYxMkFFMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuaCAqLywKKwkJCQk0MUI5QTNCNjIxMzc5ODdEMDBBQjIzOUUgLyog
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCAqLywKKwkJCQk0MUI5QTNCNTIxMzc5ODdD
MDBBQjIzOUUgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCisJCQkJNDFCOUEz
QjQyMTM3OTg3QzAwQUIyMzlFIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwICovLAor
CQkJCTQxQjlBM0IzMjEzNzk4N0IwMEFCMjM5RSAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmggKi8sCisJCQkJNDE5Rjg0NkQyMTM4NjEzRTAwNTJERDBCIC8qIExpYldlYlJUQ1V0aWxzLmNw
cCAqLywKKwkJCQk0MTlGODQ2QzIxMzg2MTNEMDA1MkREMEIgLyogTGliV2ViUlRDVXRpbHMuaCAq
LywKIAkJCSk7CiAJCQluYW1lID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTI0NTMyLDggKzI0NTUyLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNENjY5RDY2
MUQyMzJERkYwMDREMTg2NiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuY3BwICovLAogCQkJ
CUNEMjI3RTM2MjExM0FFRkEwMEQyODVBRiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCAq
LywKLQkJCQlDREU2NjdBMjFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNw
cCAqLywKLQkJCQlDREU2NjdBMzFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0
LmggKi8sCisJCQkJQ0RFNjY3QTIxRTRCQkYxNTAwRTgxNTRBIC8qIGNvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5jcHAgKi8sCisJCQkJQ0RFNjY3QTMxRTRCQkYxNTAwRTgxNTRBIC8qIGNvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBjb2NvYTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yODE3Nyw2ICsyODE5Nyw3IEBACiAJCQkJOEFCNEJDNzcx
MjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Mjc1MzU3MDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
OTU4MTRCMjEzODZFQTAwMDBEQkE2MiAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzE4MTVBMzExRjlBNkM4RjAwRkNCRjg5IC8qIEltYWdlQml0
bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzc5MDNCMzFGODZGOTVDMDA0NjNBNzAgLyogSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzI5LDcgKzMw
NzUwLDcgQEAKIAkJCQk3MTMyNDQ1MTIwMTA5REE1MDBBRTdGQjIgLyogV2ViQW5pbWF0aW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTg1MzY4NDFGNEU0ODE0MDBGRTA5MUIgLyog
V2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTE4QzM1NDQxRjcxOTcwQzAwRkY2MzJEIC8qIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJl
c291cmNlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RFNjY3QTUxRTRCQkYxNTAwRTgx
NTRBIC8qIFdlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFNjY3QTUx
RTRCQkYxNTAwRTgxNTRBIC8qIGNvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFCMkE2MjYxRUYxQkY2RDAwMkI5RDdBIC8qIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDYzNzQwMUJCMEIxMTMwMDI1NkNFOSAvKiBXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzNkVBOUMx
RTIxQkExNzAwNjIxRTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTM3Miw2ICszMTM5Myw5IEBACiAJCQkJNUNERDgzNjQxRTQzMjVBMDAwNjIx
RTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOUY4NDZCMjEz
ODVFQkEwMDUyREQwQiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDE5Rjg0NjkyMTM4NUVCNzAwNTJERDBCIC8qIExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE5Rjg0NkUyMTM4NjE0MTAwNTJERDBC
IC8qIExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNFMTRFRjFD
RjgwMDI2QTJERCAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
NDU3NzVFQTIwNDczMDNDMDA4RENFNUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZFMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMDU0LDcgKzMyMDc4LDcgQEAKIAkJCQlBMTQ4
MzJCOTE4N0Y2M0Q1MDBEQTYzQTYgLyogV0FLVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCURF
NUY4NjFFMUZBMjgxRkQwMDZEQjYzQSAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxRDFGQTI4MTVCMDA2REI2M0EgLyogV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQlDREU2
NjdBNDFFNEJCRjE1MDBFODE1NEEgLyogV2ViQXVkaW9CdWZmZXJMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNERTY2N0E0MUU0QkJGMTUwMEU4MTU0QSAvKiBjb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8q
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMjI1QzBC
MUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTNGMTlCMDcwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVWaWV3Lm0gaW4gU291cmNl
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348558</attachid>
            <date>2018-08-30 15:46:06 -0700</date>
            <delta_ts>2018-08-30 15:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830154605.patch</filename>
            <type>text/plain</type>
            <size>63560</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMjg3MzRiMjAzZjJjY2M1M2ZkMTZmNGE5Njc4ZTg2NTdhYmZiYmRmMy4uMzMz
MTEzZjIwZTNjNjU3YjQzM2IxNTlhNjdlMWFmNDI4NGYxYzcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcApAQCAtNTMwLDYgKzUzMCwyMSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soUlRDUnRwU2VuZGVyKiwg
TWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZl
ckluaXQmKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKQoreworICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQor
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXgg
ZjhhOTc2YjdhNThmNWM1MTBiNzlkMDk3OWY4YWE1N2E4ZGQwZTQzZS4uOTVlMGY5OTMyY2FlMGU1
YWY0ZjdiMjk0ZTM4ZGQ0MTk1MDY0ZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01MCw2
ICs1MCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9u
OwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CitjbGFzcyBSVENS
dHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0
YXRzUmVwb3J0OwogCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBNZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbjsKIHN0cnVjdCBSVENBbnN3ZXJPcHRpb25zOwogc3RydWN0IFJUQ0RhdGFDaGFubmVs
SW5pdDsKIHN0cnVjdCBSVENPZmZlck9wdGlvbnM7CitzdHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJ
bml0OwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewogdXNpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExEaWN0aW9uYXJ5PFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6SW5pdD4+OwpAQCAtOTksMTEgKzEwMSwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2
ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQs
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG5vdGlmeUFkZGVkVHJhY2so
UlRDUnRwU2VuZGVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRy
YWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVt
b3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCi0gICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgeyByZXR1cm4geyB9OyB9Cisg
ICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2Nl
aXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsKKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVy
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsK
IAogICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiAgICAgYm9vbCBpc05lZ290
aWF0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZWdvdGlhdGlvbk5lZWRlZDsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggYTA0ZjgxZTFmYjEyNzI3Y2ZmYmQ1MDg5MThiMjNjNzYwYTIyYmFl
Zi4uMzFlNjllMjE2YjQ5ZTQ0NDQzZDIyYjJiNGM0MWNhMThhZWNlZWJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCkpIHsKICAgICAg
ICAgYXV0byYgZXhpc3RpbmdTZW5kZXIgPSB0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAg
IGlmIChleGlzdGluZ1NlbmRlci50cmFja0tpbmQoKSA9PSB0cmFjay0+a2luZCgpICYmIGV4aXN0
aW5nU2VuZGVyLnRyYWNrSWQoKS5pc051bGwoKSAmJiAhdHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdE
aXJlY3Rpb24oKSkgewotICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2soV1RGTW92
ZSh0cmFjaykpOworICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2sodHJhY2suY29w
eVJlZigpKTsKICAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldE1lZGlhU3RyZWFtSWRzKFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5lbmFibGVT
ZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBzZW5kZXIgPSAmZXhpc3RpbmdTZW5kZXI7
CkBAIC0xMzcsMjcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoIXNlbmRlcikgewotICAgICAgICBTdHJpbmcgdHJhbnNjZWl2ZXJN
aWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwotICAgICAgICBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIFN0cmluZyB0cmFja0lkID0g
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAgICAgIGF1dG8gbmV3U2VuZGVyID0g
UlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1J
ZHMpLCAqdGhpcyk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBtX2JhY2tlbmQtPmNyZWF0ZVJl
Y2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNrSWQpOwotICAgICAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRl
ciksIFdURk1vdmUocmVjZWl2ZXIpKTsKLQotICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlz
IG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVl
ZCBhCi0gICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNl
ZCB0byBjcmVhdGUgYW4gb2ZmZXIuCi0gICAgICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25h
bE1pZCh0cmFuc2NlaXZlck1pZCk7Ci0KLSAgICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5z
ZW5kZXIoKTsKLSAgICAgICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjaygq
c2VuZGVyKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwg
IlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKLQotICAgIHJldHVybiBSZWY8UlRDUnRwU2VuZGVy
PiB7ICpzZW5kZXIgfTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayhzZW5kZXIsIHRy
YWNrLmdldCgpLCBtZWRpYVN0cmVhbUlkcyk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1Bl
ZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlcikKQEAgLTE5Miwz
MSArMTcyLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRUcmFuc2NlCiAgICAgICAgIGlmIChraW5kICE9
ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoU3RyaW5nKGtpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7Ci0gICAgICAgIHJl
dHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+
YWRkVHJhbnNjZWl2ZXIoa2luZCwgaW5pdCk7CiAgICAgfQogCi0gICAgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+IHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJh
Y2spLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2st
PmlkKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+a2luZCgpOwotCi0g
ICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgIGlmICghbV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRy
YWNrKHNlbmRlcikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07Ci0KLSAgICByZXR1cm4gY29tcGxldGVBZGRU
cmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNrSWQsIHRyYWNrS2luZCk7Ci19
Ci0KLVJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmNvbXBsZXRlQWRk
VHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIsIGNvbnN0IFJUQ1J0cFRyYW5z
Y2VpdmVySW5pdCYgaW5pdCwgY29uc3QgU3RyaW5nJiB0cmFja0lkLCBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCkKLXsKLSAgICBTdHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Z2V0TmV4dE1pZCgpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFu
c2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7Ci0KLSAgICB0cmFuc2NlaXZlci0+c2V0
UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotICAgIHRyYW5zY2VpdmVyLT5zZXREaXJl
Y3Rpb24oaW5pdC5kaXJlY3Rpb24pOwotCi0gICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKHRy
YW5zY2VpdmVyLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHRyYW5zY2VpdmVyOworICAgIGF1dG8g
dHJhY2sgPSBXVEY6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KHdpdGhUcmFjaykucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENy
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZXNjcmlwdGlvblBy
b21pc2UmJiBwcm9taXNlKQpAQCAtNTg2LDI4ICs1NDYsMTEgQEAgdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0
cjxNZWQKICAgICAgICAgYm9vbCBoYXNUcmFjayA9IHByb3RlY3RlZFNlbmRlci0+dHJhY2soKTsK
ICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFjayh3aXRoVHJhY2sucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIGlmICghaGFzVHJhY2spCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2socHJvdGVjdGVkU2VuZGVyLmdldCgpKTsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+YWRkVHJhY2socHJvdGVjdGVkU2Vu
ZGVyLnB0cigpLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpLCB7IH0pOwogICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCi17Ci0gICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIXNlbmRlci50cmFjaygpICYmIHdp
dGhUcmFjaykgewotICAgICAgICBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIHdpdGhU
cmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+cmVwbGFjZVRyYWNrKHNlbmRlciwgV1RGTW92ZSh3
aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotUlRDUnRwUGFyYW1ldGVycyBSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRlcik7Ci19Ci0KIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcgJyIsIGV2ZW50LnR5cGUoKSwg
IiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAppbmRleCA0MjdiZjIyM2ViOGU0MTljMzliMmI1ZWYxNDVkZmE2ZDEw
OGQxZGU3Li44NGViOWJjOWE1NWE1YTcxNzRjN2UwZmIxZTdlOTRlN2QzMTVkMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5oCkBAIC02Niw3ICs2Niw2IEBAIHN0cnVjdCBSVENSdHBUcmFuc2NlaXZlckluaXQgewog
CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbAogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UlRDUGVlckNvbm5lY3Rpb24+Ci0gICAgLCBwdWJsaWMgUlRDUnRwU2VuZGVyOjpCYWNrZW5kCiAg
ICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIEFjdGl2
ZURPTU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTA5LDYgKzEwOCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
U3RhdGUgPT0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2VkOyB9CiAgICAgYm9vbCBpc1N0
b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQogCisgICAgdm9pZCBhZGRJbnRl
cm5hbFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikgeyBt
X3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOyB9CisKICAgICAv
LyA1LjEgUlRDUGVlckNvbm5lY3Rpb24gZXh0ZW5zaW9ucwogICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2NlaXZlclNldC0+c2VuZGVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwUmVjZWl2ZXI+PiYgZ2V0UmVjZWl2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+cmVjZWl2ZXJzKCk7IH0KQEAgLTE0NCw3ICsx
NDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRFdmVu
dCgpOwogCi0gICAgUlRDUnRwU2VuZGVyOjpCYWNrZW5kJiBzZW5kZXJCYWNrZW5kKCkgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB2b2lkIGZpcmVFdmVudChFdmVudCYpOwogCiAgICAgdm9pZCBkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQtPmRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoKTsgfQpAQCAtMTg2LDExICsxODYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0byBiZSB0aGUgQmFja2VuZAot
ICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uU3RhdGUo
KTsKICAgICBib29sIGRvQ2xvc2UoKTsKICAgICB2b2lkIGRvU3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAppbmRl
eCAzZDY3MzE5YzkxYmM2M2M1NzdiYjgyMGIwYTg3MGUyNmQ3NWU0MGEwLi44ZmJlOWEyOTU5NmY2
YWRkMDU5NWQyMTc1YzA2MDdmZTFiNTdkNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZl
cihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCkKK1JUQ1J0
cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywg
c3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDog
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURk1vdmUodHJhY2spKQotICAgICwgbV9iYWNrZW5k
KGJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDE0YWIwNjkzNDcwOTlkNGM4ZjI2MWM4OTYyMjkwYWI3MTdhMmIyYTkuLmRiNmI3NDk4
YjllMDgzOTE5YWJiNTdhZjcxYWNiNGZiNjRkZTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSVENSdHBTZW5k
ZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMzEgKzQxLDIw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXIgOiBwdWJsaWMg
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQoKSA9IGRlZmF1bHQ7Ci0gICAg
ICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9
OyB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZShSZWY8
TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCA9IG51bGxwdHIpCisg
ICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tl
bmQgPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
UmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGJhY2tlbmQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIFdURk1vdmUoYmFja2VuZCkp
KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cGFzcyBhIFVuaXF1ZVJlZiBoZXJlLgotICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9w
dHI8QmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7IH0K
LQotICAgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rpc3BhdGNoZWQ7
IH0KLSAgICB2b2lkIHNldERpc3BhdGNoZWQoYm9vbCBpc0Rpc3BhdGNoZWQpIHsgbV9pc0Rpc3Bh
dGNoZWQgPSBpc0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVf
cHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1v
dmUoYmFja2VuZCk7IH0KICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJl
dHVybiBtX2JhY2tlbmQgPyBtX2JhY2tlbmQtPmdldFBhcmFtZXRlcnMoKSA6IFJUQ1J0cFBhcmFt
ZXRlcnMoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBCYWNrZW5kKik7CisgICAgUlRDUnRwUmVjZWl2ZXIoUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+
JiYpOwogCi0gICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlZjM0YWVmMDQ5N2NjN2ZmMTYzOTRmZjJm
YWMwMGEyZjVjZTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENSdHBQ
YXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENSdHBSZWNlaXZlckJhY2tlbmQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
KSB7IHJldHVybiB7IH07IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE4ZGM5YmQ2NGRhM2IxZWE4OWMyYzA2Y2Yz
Yzk5YTk5YTAyZTA3MTEuLjZhM2QxYmNkOTA4ODZlMDMzZDUxMjRkYzlkNGViNGI2ZGZkZmI3NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNr
ZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgYXV0byBz
ZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSks
IFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAgYXV0byBzZW5kZXIgPSBh
ZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSksIFdURk1vdmUo
bWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgc2VuZGVyLT5zZXRUcmFj
ayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsKIH0KIAotUmVmPFJUQ1J0cFNl
bmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRl
cj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5n
PiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4m
JiBiYWNrZW5kKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihXVEZN
b3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RG
TW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKIH0KIAotUlRDUnRwU2Vu
ZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5k
ZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDogUlRD
UnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKICAgICAsIG1fdHJhY2tLaW5kKFdURk1vdmUodHJhY2tL
aW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92ZShtZWRpYVN0cmVhbUlkcykpCi0g
ICAgLCBtX2JhY2tlbmQoJmJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5k
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKaW5kZXggODk1OGRmNjc5MTMyZDRmOGU2ZjI1ZDg0YmQwZWMxMTc5MzY3NmZj
YS4uNGUxZTRiNWUzYTdmYTVmN2QxN2MwZGY3MzQ5NmY2ZWFkMjBlZjFlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC0zMywy
MSArMzMsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlBlZXJDb25uZWN0
aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1
YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUlRD
UnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKLSAg
ICAgICAgdmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAgICB9OwotCi0gICAgc3RhdGlj
IFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwotICAgIHN0YXRpYyBSZWY8UlRD
UnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOworICAgIHN0YXRp
YyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2Vu
ZD4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3Ry
YWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhY2tLaW5kOyB9CkBAIC02NSwxMiArNTksMTIgQEAgcHVibGljOgogICAgIFJUQ1J0cFBhcmFt
ZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCiBwcml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihTdHJp
bmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQm
KTsKKyAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7
CiAKICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwotICAgIEJhY2tlbmQqIG1fYmFja2VuZDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4gbV9iYWNrZW5kOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDI1
OGE0YzNlOWNmNDkxNTM4MjY0ODY4MTY2MTcyZmZjNDBhNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKK2NsYXNz
IFJUQ1J0cFNlbmRlcjsKKworY2xhc3MgUlRDUnRwU2VuZGVyQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyQmFja2VuZCgpID0gZGVmYXVsdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBiZjEyMGQwMjli
OTgwYzM1MjhmZWIwNDA5NWFiYTBlOTI0YTc2YWQ1Li5kZTM1OTE3OWZkZTJiNGExOTVlZGU2MjU1
MTVjYWM2OTVlODQ0NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKQEAgLTU2LDEx
ICs1OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBTdHJpbmcg
ZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5ndGgoKSk7Ci19Ci0KIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2ViUlRDUHJvdmlkZXImIGNsaWVu
dCkKICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJDb25uZWN0aW9uKQogICAgICwg
bV9wZWVyQ29ubmVjdGlvbkZhY3RvcnkoKmNsaWVudC5mYWN0b3J5KCkpCkBAIC02NDUsMTYgKzY0
Myw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKHdlYnJ0
Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKQogewogfQogCi1jbGFzcyBSVENSdHBSZWNlaXZlckJh
Y2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXI6OkJhY2tlbmQgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlcikgOiBtX3J0Y1JlY2VpdmVy
KFdURk1vdmUocnRjUmVjZWl2ZXIpKSB7IH0KLXByaXZhdGU6Ci0gICAgUlRDUnRwUGFyYW1ldGVy
cyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7Ci0KLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKLX07Ci0KLQogdm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0
b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgcnRj
U3RyZWFtcykKIHsKICAgICBBU1NFUlQocnRjUmVjZWl2ZXIpOwpAQCAtNjg0LDcgKzY3Miw3IEBA
IHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0KIAotICAgIHJlY2VpdmVyLT5z
ZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwog
ICAgIAogICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNrKCk7CiAgICAgQVNTRVJUKHRy
YWNrKTsKQEAgLTk1Miw5NCArOTQwLDYgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
ZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcKICAgICB9
KTsKIH0KIAotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRl
cnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cEVuY29kaW5nUGFyYW1l
dGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1Bh
cmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmIChydGNQYXJhbWV0ZXJzLnNzcmMpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNzcmM7Ci0gICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjKQotICAgICAgICBwYXJhbWV0
ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjOwotICAgIGlmIChydGNQYXJh
bWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykKLSAgICAgICAgcGFyYW1ldGVy
cy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsKLSAgICBpZiAocnRjUGFyYW1l
dGVycy5kdHgpIHsKLSAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1ldGVycy5kdHgpIHsKLSAgICAg
ICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RGlzYWJsZWQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RU5BQkxFRDoKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1ldGVyczo6RHR4U3RhdHVzOjpF
bmFibGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHBhcmFtZXRlcnMuYWN0aXZlID0gcnRjUGFy
YW1ldGVycy5hY3RpdmU7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzKQot
ICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfYml0cmF0
ZV9icHM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZSkKLSAgICAgICAgcGFy
YW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfZnJhbWVyYXRlOwotICAg
IHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnJpZCk7Ci0gICAg
aWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5KQotICAgICAgICBwYXJh
bWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJhbWV0ZXJzLnNjYWxlX3Jlc29s
dXRpb25fZG93bl9ieTsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1zdGF0aWMgaW5s
aW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgZmlsbEhlYWRl
ckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25QYXJh
bWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4
dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMudXJpID0gZnJv
bVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7Ci0gICAgcGFyYW1ldGVycy5pZCA9IHJ0Y1Bh
cmFtZXRlcnMuaWQ7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIGlubGlu
ZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmlsbENvZGVjUGFyYW1ldGVycyhj
b25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBS
VENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFt
ZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxvYWRfdHlwZTsKLSAgICBwYXJh
bWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLm1pbWVfdHlwZSgp
KTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQotICAgICAgICBwYXJhbWV0ZXJz
LmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7Ci0gICAgaWYgKHJ0Y1BhcmFt
ZXRlcnMubnVtX2NoYW5uZWxzKQotICAgICAgICBwYXJhbWV0ZXJzLmNoYW5uZWxzID0gKnJ0Y1Bh
cmFtZXRlcnMubnVtX2NoYW5uZWxzOwotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0
YXRpYyBSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRw
UGFyYW1ldGVycyBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLQotICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9IGZyb21TdGRTdHJpbmcocnRj
UGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7Ci0gICAgZm9yIChhdXRvJiBydGNFbmNvZGluZyA6
IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQotICAgICAgICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5h
cHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGluZykpOwotICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucykKLSAgICAgICAg
cGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxsSGVhZGVyRXh0ZW5zaW9uUGFy
YW1ldGVycyhleHRlbnNpb24pKTsKLSAgICBmb3IgKGF1dG8mIGNvZGVjIDogcnRjUGFyYW1ldGVy
cy5jb2RlY3MpCi0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFwcGVuZChmaWxsQ29kZWNQYXJh
bWV0ZXJzKGNvZGVjKSk7Ci0KLSAgICBzd2l0Y2ggKHJ0Y1BhcmFtZXRlcnMuZGVncmFkYXRpb25f
cHJlZmVyZW5jZSkgewotICAgIC8vIEZJWE1FOiBTdXBwb3J0IERlZ3JhZGF0aW9uUHJlZmVyZW5j
ZTo6RElTQUJMRUQuCi0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6RElT
QUJMRUQ6Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5f
RlJBTUVSQVRFOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJU
Q1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5GcmFtZXJhdGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6
Ok1BSU5UQUlOX1JFU09MVVRJT046Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVm
ZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNYWludGFp
blJlc29sdXRpb247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlv
blByZWZlcmVuY2U6OkJBTEFOQ0VEOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QmFsYW5j
ZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0K
LVJUQ1J0cFBhcmFtZXRlcnMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKCkK
LXsKLSAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZlci0+R2V0UGFyYW1l
dGVycygpKTsKLX0KLQogUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpn
ZXRSVENSdHBTZW5kZXJQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogewogICAgIGF1
dG8gcnRjU2VuZGVyID0gbV9zZW5kZXJzLmdldCgmc2VuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIyYmExNTBj
NGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLmUwN2E4NTM4MTJhNmFjMWE3Nzg3MWRi
OGI0OWE5MTI4ZDU2YWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkpT
UlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgpAQCAtMjc1LDcgKzI3Nyw4
IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAg
ICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlSZWYo
KSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoInZpZGVvIiwg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAgICB0
cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0
aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjk3LDcgKzMw
MCw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsK
ICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAg
IGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRl
cjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlS
ZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoImF1ZGlv
IiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMzQ4LDEw
ICszNTIsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1cm4gbV9lbmRwb2lu
dC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCitFeGNlcHRp
b25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsKLSAgICBBU1NFUlQoc2VuZGVy
LnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5kZXIsICpzZW5k
ZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOworICAgIGlmICghc2VuZGVyKSB7
CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXRO
ZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgp
OworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
KworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBuZXdTZW5k
ZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4g
eyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICAgICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRy
YWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNy
ZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKworICAgICAgICAv
LyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAo
bnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0
aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCisgICAgICAgIHRyYW5z
Y2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7CisKKyAgICAgICAgc2Vu
ZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5h
ZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRyYWNrLCBtZWRpYVN0cmVhbUlk
cykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRk
IHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2VuZGVyKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKHRyYWNrS2lu
ZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIHJldHVy
biBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQorCitFeGNlcHRpb25PcjxSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRy
YW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFjay5jb3B5UmVmKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGlmICghbV9lbmRwb2lu
dC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBh
ZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1v
dmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5raW5kKCkpOworfQorCitSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxl
dGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNlbmRlciwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmlu
ZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZl
ck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlz
aW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2VpdmVyLT5zZXREaXJlY3Rpb24o
aW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5z
Y2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHRyYW5zY2VpdmVyOwog
fQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5UmVtb3ZlZFRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEzNzA5NTI1MjYxMmY0YjBlYjYx
MTY0ODRkMTRmYTMzMTAxLi4xYzU1NzI0NzRkYTAyOWM1NjFiOTZjN2NmYTNhMWRmMTc5MjZjYzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKQEAgLTQ1
LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwogY2xhc3MgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92aWRlciYpOwpAQCAtNTQsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhhc1ZpZGVvU291cmNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQogCisgICAgdm9pZCByZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
UlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkb0NyZWF0ZU9mZmVy
KFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fu
c3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwxMyArNzgsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBj
b25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJU
Q1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVu
dChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRn
b2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5kIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJp
ZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAgICAgUlRDUGVlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0aW9uOyB9CiAgICAgdm9pZCBh
ZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYmKTsKICAgICB2
b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiYpOwpA
QCAtODgsOSArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNv
bnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAgICAgdm9pZCBn
ZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAKLSAg
ICBib29sIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgZmluYWw7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3Ry
ZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5
UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCisgICAgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNv
bnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworCiAgICAgc3RydWN0IFZpZGVvUmVj
ZWl2ZXIgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwogICAgICAgICBS
ZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7CkBAIC0xMDUsNiArMTEwLDgg
QEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25TZXQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9jYWxEZXNjcmlwdGlvblNldDsgfQogCisgICAgUmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBTZW5k
ZXI+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYsIGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpOworCiAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRmNGU3Y2NhZmU2MzEzM2I4MzViMDFkYjJkMGY3YmFlYWEwOTQwNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisKKyNpbmNsdWRl
ICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJS
VEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQoreworICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2FjZTJlNDJkYTYzMWVlOTcxMmQ4YWQ4ZWNiNjlkODRiNmNlYTJiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxp
YldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIgorCisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRjL2FwaS9ydHByZWNlaXZl
cmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
PgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBS
ZWNlaXZlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFj
ZT4mJiBydGNSZWNlaXZlcikKKyAgICAgICAgOiBtX3J0Y1JlY2VpdmVyKFdURk1vdmUocnRjUmVj
ZWl2ZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKCkgZmluYWw7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNjg2M2E5NDJjOGVkMzM2OTliMDgxMjQ2Y2Q2N2Q2ODg2Y2ZlYzFmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIlJU
Q1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyBXZWJSVEMgYmFja2VuZCJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghc2VuZGVyLnRyYWNrKCkgJiYgdHJhY2spIHsKKyAgICAg
ICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmNvbm5lY3Rpb24oKS5lbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhzZW5kZXIsIHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUocHJvbWlzZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQt
PnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUodHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsK
K30KKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQYXJh
bWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAoreworICAgIGlmICghbV9ydGNTZW5k
ZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBnbyB0aHJvdWdo
IHRoZSBiYWNrZW5kIGFuZCBzaG91bGQgZGlyZWN0bHkgaGF2ZSBtX3J0Y1NlbmRlciBoZXJlLgor
ICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5nZXRQYXJhbWV0
ZXJzKHNlbmRlcik7CisgICAgfQorICAgIHJldHVybiBmaWxsUnRwUGFyYW1ldGVycyhtX3J0Y1Nl
bmRlci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliOWNlYWYwYzJk
ZWFjMTcyZjAyNGY0NWQ4MTAwMDQ0MzBmNGU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJSVENSdHBTZW5kZXJCYWNr
ZW5kLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRl
ciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOworCitjbGFzcyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kIGZpbmFs
IDogcHVibGljIFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBi
YWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYg
cnRjU2VuZGVyKQorICAgICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKG1ha2VXZWFrUHRy
KCZiYWNrZW5kKSkKKyAgICAgICAgLCBtX3J0Y1NlbmRlcihXVEZNb3ZlKHJ0Y1NlbmRlcikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIpIHsgbV9ydGNTZW5kZXIgPSBX
VEZNb3ZlKHJ0Y1NlbmRlcik7IH0KKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
IGZpbmFsOworICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXIm
KSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZD4gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiBtX3J0Y1NlbmRlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYzZjYzZkMjYyYzAxNGFmMWI1ODQ3
NzkxOTkyMmRmYjBmMzIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1V0aWxzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRD
TWFjcm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBp
bmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1Bh
cmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRl
cnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisKKyAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLnNz
cmMgPSAqcnRjUGFyYW1ldGVycy5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAg
ICAgIHN3aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIGNhc2Ugd2VicnRjOjpE
dHhTdGF0dXM6OkRJU0FCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQ
YXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKKyAgICAgICAg
fQorICAgIH0KKyAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOwor
ICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKKyAgICAgICAgcGFyYW1ldGVy
cy5tYXhCaXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOworICAgIGlmIChy
dGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGUpCisgICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVy
YXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOworICAgIGlmIChydGNQYXJhbWV0ZXJz
LnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieSkKKyAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29s
dXRpb25Eb3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7CisK
KyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0
ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0
ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1l
dGVycykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFy
YW1ldGVycy51cmkpOworICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOworCisg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVy
czo6Q29kZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBD
b2RlY1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6
Q29kZWNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBl
ID0gcnRjUGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7CisgICAgcGFyYW1ldGVycy5taW1lVHlwZSA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7CisgICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMuY2xvY2tfcmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRj
UGFyYW1ldGVycy5jbG9ja19yYXRlOworICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVs
cykKKyAgICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFu
bmVsczsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitSVENSdHBQYXJhbWV0ZXJzIGZp
bGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVy
cykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJz
LnRyYW5zYWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25f
aWQpOworICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5n
cykKKyAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFt
ZXRlcnMocnRjRW5jb2RpbmcpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFt
ZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpCisgICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5z
aW9ucy5hcHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7Cisg
ICAgZm9yIChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQorICAgICAgICBwYXJh
bWV0ZXJzLmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOworCisgICAg
c3dpdGNoIChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKKyAgICAvLyBG
SVhNRTogU3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgorICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgorICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKKyAgICAgICAgcGFy
YW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRh
dGlvblByZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRl
cnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoK
KyAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0
ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOworICAgICAgICBicmVhazsKKyAg
ICB9OworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0MjFkYTAxYjY3NGRmN2M0ZjcwZTAxNDI2NjYzZDM0NmM5YTFmZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVj
dCBSdHBQYXJhbWV0ZXJzOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENS
dHBQYXJhbWV0ZXJzOworCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0
IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYpOworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmco
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDYwZjFhNjU0YTc0ZjVkOTU2
YzkyZDU4MmYwN2I5OGVlZWYyZjMuLjY2ZWU5NDg5YjFmZmU5NzM4MzJiYzJkMWUxOTMwNjBhMGE5
OTBiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTczMjIsNiArNzMyMiwxNCBAQAogCQk0MUIyQTYyNTFFRjFCRjYwMDAyQjlE
N0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjQ1OURBMUY0
Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUI0NTlFRDFGNTVFQkM3MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGMTIxMzhBNjdFMDBDNURGMjcgLyogTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjQyMTM4QTY4MDAwQzVERjI3IC8qIExpYldl
YlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJS
VENSdHBSZWNlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFD
MjNGRjUyMTM4QTY4MTAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY2MjEzOEE2ODIwMEM1
REYyNyAvKiBMaWJXZWJSVENVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENVdGlscy5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY3MjEzOEE2ODMwMEM1REYyNyAvKiBM
aWJXZWJSVENVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
aWJXZWJSVENVdGlscy5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGODIxMzhBNjkyMDBDNURGMjcgLyog
UlRDUnRwU2VuZGVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
VENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIz
RkY5MjEzOEE2OTMwMEM1REYyNyAvKiBSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNTFFNkE1NDM2MDAyN0I0REUgLyog
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MDI2LDEyICsxNTAzNCwxMiBAQAogCQkwNzIyMUI0NjE3Q0VDMzI3MDA4NDhF
NTEgLyogbWVkaWFzdHJlYW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCTQxNzYxMkFBMUUzQTk5MjMwMEMzRDgxRCAvKiBsaWJ3ZWJydGMgKi8sCiAJCQkJ
NDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmNwcCAqLywKIAkJCQk0MUM3RTEwNjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suaCAqLywKIAkJCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovLAogCQkJCTkzQTgwNjExMUUwM0I1MUMw
MDhBMUYyNiAvKiBEb3VibGVSYW5nZS5oICovLAogCQkJCTkzQTgwNjEyMUUwM0I1MUMwMDhBMUYy
NiAvKiBEb3VibGVSYW5nZS5pZGwgKi8sCisJCQkJNDE3NjEyQUExRTNBOTkyMzAwQzNEODFEIC8q
IGxpYndlYnJ0YyAqLywKIAkJCQk5M0E4MDYxMzFFMDNCNTFDMDA4QTFGMjYgLyogTG9uZ1Jhbmdl
LmggKi8sCiAJCQkJOTNBODA2MTQxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5pZGwgKi8s
CiAJCQkJMTU5QUU4MkExQjNBNDAyRjAwMzc0NzhCIC8qIE1lZGlhRGV2aWNlSW5mby5jcHAgKi8s
CkBAIC0xNTExNiw5ICsxNTEyNCwxMSBAQAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFJlY2VpdmVyLmggKi8sCiAJCQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFJlY2VpdmVyLmlkbCAqLywKKwkJCQk0MUMyM0ZGOTIxMzhBNjkzMDBDNURGMjcgLyogUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFNlbmRlci5oICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBT
ZW5kZXIuaWRsICovLAorCQkJCTQxQzIzRkY4MjEzOEE2OTIwMEM1REYyNyAvKiBSVENSdHBTZW5k
ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNUQxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNl
bmRlclJlY2VpdmVyQmFzZS5oICovLAogCQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBS
VENSdHBUcmFuc2NlaXZlci5jcHAgKi8sCiAJCQkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMwRDg1IC8q
IFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8sCkBAIC0xNjgzMiw2ICsxNjg0MiwxMiBAQAogCQkJCTQx
NzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8sCiAJ
CQkJNDE3NjEyQUQxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgKi8sCiAJCQkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkY1MjEzOEE2ODEwMEM1REYyNyAv
KiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovLAorCQkJCTQxQzIzRkY0MjEzOEE2
ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKKwkJCQk0MUMy
M0ZGMTIxMzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8s
CisJCQkJNDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuaCAqLywKKwkJCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMu
Y3BwICovLAorCQkJCTQxQzIzRkY2MjEzOEE2ODIwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5o
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348560</attachid>
            <date>2018-08-30 15:55:24 -0700</date>
            <delta_ts>2018-08-30 16:03:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830155524.patch</filename>
            <type>text/plain</type>
            <size>65704</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMjg3MzRiMjAzZjJjY2M1M2ZkMTZmNGE5Njc4ZTg2NTdhYmZiYmRmMy4uMzMz
MTEzZjIwZTNjNjU3YjQzM2IxNTlhNjdlMWFmNDI4NGYxYzcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcApAQCAtNTMwLDYgKzUzMCwyMSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soUlRDUnRwU2VuZGVyKiwg
TWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZl
ckluaXQmKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKQoreworICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQor
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXgg
ZjhhOTc2YjdhNThmNWM1MTBiNzlkMDk3OWY4YWE1N2E4ZGQwZTQzZS4uOTVlMGY5OTMyY2FlMGU1
YWY0ZjdiMjk0ZTM4ZGQ0MTk1MDY0ZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01MCw2
ICs1MCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9u
OwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CitjbGFzcyBSVENS
dHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0
YXRzUmVwb3J0OwogCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBNZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbjsKIHN0cnVjdCBSVENBbnN3ZXJPcHRpb25zOwogc3RydWN0IFJUQ0RhdGFDaGFubmVs
SW5pdDsKIHN0cnVjdCBSVENPZmZlck9wdGlvbnM7CitzdHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJ
bml0OwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewogdXNpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExEaWN0aW9uYXJ5PFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6SW5pdD4+OwpAQCAtOTksMTEgKzEwMSwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2
ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQs
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG5vdGlmeUFkZGVkVHJhY2so
UlRDUnRwU2VuZGVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRy
YWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVt
b3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCi0gICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgeyByZXR1cm4geyB9OyB9Cisg
ICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2Nl
aXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsKKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVy
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsK
IAogICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiAgICAgYm9vbCBpc05lZ290
aWF0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZWdvdGlhdGlvbk5lZWRlZDsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggYTA0ZjgxZTFmYjEyNzI3Y2ZmYmQ1MDg5MThiMjNjNzYwYTIyYmFl
Zi4uMzFlNjllMjE2YjQ5ZTQ0NDQzZDIyYjJiNGM0MWNhMThhZWNlZWJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCkpIHsKICAgICAg
ICAgYXV0byYgZXhpc3RpbmdTZW5kZXIgPSB0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAg
IGlmIChleGlzdGluZ1NlbmRlci50cmFja0tpbmQoKSA9PSB0cmFjay0+a2luZCgpICYmIGV4aXN0
aW5nU2VuZGVyLnRyYWNrSWQoKS5pc051bGwoKSAmJiAhdHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdE
aXJlY3Rpb24oKSkgewotICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2soV1RGTW92
ZSh0cmFjaykpOworICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2sodHJhY2suY29w
eVJlZigpKTsKICAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldE1lZGlhU3RyZWFtSWRzKFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5lbmFibGVT
ZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBzZW5kZXIgPSAmZXhpc3RpbmdTZW5kZXI7
CkBAIC0xMzcsMjcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoIXNlbmRlcikgewotICAgICAgICBTdHJpbmcgdHJhbnNjZWl2ZXJN
aWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwotICAgICAgICBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIFN0cmluZyB0cmFja0lkID0g
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAgICAgIGF1dG8gbmV3U2VuZGVyID0g
UlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1J
ZHMpLCAqdGhpcyk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBtX2JhY2tlbmQtPmNyZWF0ZVJl
Y2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNrSWQpOwotICAgICAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRl
ciksIFdURk1vdmUocmVjZWl2ZXIpKTsKLQotICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlz
IG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVl
ZCBhCi0gICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNl
ZCB0byBjcmVhdGUgYW4gb2ZmZXIuCi0gICAgICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25h
bE1pZCh0cmFuc2NlaXZlck1pZCk7Ci0KLSAgICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5z
ZW5kZXIoKTsKLSAgICAgICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjaygq
c2VuZGVyKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwg
IlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKLQotICAgIHJldHVybiBSZWY8UlRDUnRwU2VuZGVy
PiB7ICpzZW5kZXIgfTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayhzZW5kZXIsIHRy
YWNrLmdldCgpLCBtZWRpYVN0cmVhbUlkcyk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1Bl
ZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlcikKQEAgLTE5Miwz
MSArMTcyLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRUcmFuc2NlCiAgICAgICAgIGlmIChraW5kICE9
ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoU3RyaW5nKGtpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7Ci0gICAgICAgIHJl
dHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+
YWRkVHJhbnNjZWl2ZXIoa2luZCwgaW5pdCk7CiAgICAgfQogCi0gICAgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+IHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJh
Y2spLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2st
PmlkKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+a2luZCgpOwotCi0g
ICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgIGlmICghbV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRy
YWNrKHNlbmRlcikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07Ci0KLSAgICByZXR1cm4gY29tcGxldGVBZGRU
cmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNrSWQsIHRyYWNrS2luZCk7Ci19
Ci0KLVJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmNvbXBsZXRlQWRk
VHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIsIGNvbnN0IFJUQ1J0cFRyYW5z
Y2VpdmVySW5pdCYgaW5pdCwgY29uc3QgU3RyaW5nJiB0cmFja0lkLCBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCkKLXsKLSAgICBTdHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Z2V0TmV4dE1pZCgpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFu
c2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7Ci0KLSAgICB0cmFuc2NlaXZlci0+c2V0
UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotICAgIHRyYW5zY2VpdmVyLT5zZXREaXJl
Y3Rpb24oaW5pdC5kaXJlY3Rpb24pOwotCi0gICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKHRy
YW5zY2VpdmVyLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHRyYW5zY2VpdmVyOworICAgIGF1dG8g
dHJhY2sgPSBXVEY6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KHdpdGhUcmFjaykucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENy
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZXNjcmlwdGlvblBy
b21pc2UmJiBwcm9taXNlKQpAQCAtNTg2LDI4ICs1NDYsMTEgQEAgdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0
cjxNZWQKICAgICAgICAgYm9vbCBoYXNUcmFjayA9IHByb3RlY3RlZFNlbmRlci0+dHJhY2soKTsK
ICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFjayh3aXRoVHJhY2sucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIGlmICghaGFzVHJhY2spCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2socHJvdGVjdGVkU2VuZGVyLmdldCgpKTsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+YWRkVHJhY2socHJvdGVjdGVkU2Vu
ZGVyLnB0cigpLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpLCB7IH0pOwogICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCi17Ci0gICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIXNlbmRlci50cmFjaygpICYmIHdp
dGhUcmFjaykgewotICAgICAgICBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIHdpdGhU
cmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+cmVwbGFjZVRyYWNrKHNlbmRlciwgV1RGTW92ZSh3
aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotUlRDUnRwUGFyYW1ldGVycyBSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRlcik7Ci19Ci0KIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcgJyIsIGV2ZW50LnR5cGUoKSwg
IiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAppbmRleCA0MjdiZjIyM2ViOGU0MTljMzliMmI1ZWYxNDVkZmE2ZDEw
OGQxZGU3Li44NGViOWJjOWE1NWE1YTcxNzRjN2UwZmIxZTdlOTRlN2QzMTVkMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5oCkBAIC02Niw3ICs2Niw2IEBAIHN0cnVjdCBSVENSdHBUcmFuc2NlaXZlckluaXQgewog
CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbAogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UlRDUGVlckNvbm5lY3Rpb24+Ci0gICAgLCBwdWJsaWMgUlRDUnRwU2VuZGVyOjpCYWNrZW5kCiAg
ICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIEFjdGl2
ZURPTU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTA5LDYgKzEwOCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
U3RhdGUgPT0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2VkOyB9CiAgICAgYm9vbCBpc1N0
b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQogCisgICAgdm9pZCBhZGRJbnRl
cm5hbFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikgeyBt
X3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOyB9CisKICAgICAv
LyA1LjEgUlRDUGVlckNvbm5lY3Rpb24gZXh0ZW5zaW9ucwogICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2NlaXZlclNldC0+c2VuZGVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwUmVjZWl2ZXI+PiYgZ2V0UmVjZWl2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+cmVjZWl2ZXJzKCk7IH0KQEAgLTE0NCw3ICsx
NDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRFdmVu
dCgpOwogCi0gICAgUlRDUnRwU2VuZGVyOjpCYWNrZW5kJiBzZW5kZXJCYWNrZW5kKCkgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB2b2lkIGZpcmVFdmVudChFdmVudCYpOwogCiAgICAgdm9pZCBkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQtPmRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoKTsgfQpAQCAtMTg2LDExICsxODYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0byBiZSB0aGUgQmFja2VuZAot
ICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uU3RhdGUo
KTsKICAgICBib29sIGRvQ2xvc2UoKTsKICAgICB2b2lkIGRvU3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAppbmRl
eCAzZDY3MzE5YzkxYmM2M2M1NzdiYjgyMGIwYTg3MGUyNmQ3NWU0MGEwLi44ZmJlOWEyOTU5NmY2
YWRkMDU5NWQyMTc1YzA2MDdmZTFiNTdkNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZl
cihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCkKK1JUQ1J0
cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywg
c3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDog
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURk1vdmUodHJhY2spKQotICAgICwgbV9iYWNrZW5k
KGJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDE0YWIwNjkzNDcwOTlkNGM4ZjI2MWM4OTYyMjkwYWI3MTdhMmIyYTkuLmRiNmI3NDk4
YjllMDgzOTE5YWJiNTdhZjcxYWNiNGZiNjRkZTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSVENSdHBTZW5k
ZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMzEgKzQxLDIw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXIgOiBwdWJsaWMg
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQoKSA9IGRlZmF1bHQ7Ci0gICAg
ICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9
OyB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZShSZWY8
TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCA9IG51bGxwdHIpCisg
ICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tl
bmQgPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
UmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGJhY2tlbmQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIFdURk1vdmUoYmFja2VuZCkp
KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cGFzcyBhIFVuaXF1ZVJlZiBoZXJlLgotICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9w
dHI8QmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7IH0K
LQotICAgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rpc3BhdGNoZWQ7
IH0KLSAgICB2b2lkIHNldERpc3BhdGNoZWQoYm9vbCBpc0Rpc3BhdGNoZWQpIHsgbV9pc0Rpc3Bh
dGNoZWQgPSBpc0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVf
cHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1v
dmUoYmFja2VuZCk7IH0KICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJl
dHVybiBtX2JhY2tlbmQgPyBtX2JhY2tlbmQtPmdldFBhcmFtZXRlcnMoKSA6IFJUQ1J0cFBhcmFt
ZXRlcnMoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBCYWNrZW5kKik7CisgICAgUlRDUnRwUmVjZWl2ZXIoUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+
JiYpOwogCi0gICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlZjM0YWVmMDQ5N2NjN2ZmMTYzOTRmZjJm
YWMwMGEyZjVjZTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENSdHBQ
YXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENSdHBSZWNlaXZlckJhY2tlbmQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
KSB7IHJldHVybiB7IH07IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE4ZGM5YmQ2NGRhM2IxZWE4OWMyYzA2Y2Yz
Yzk5YTk5YTAyZTA3MTEuLjZhM2QxYmNkOTA4ODZlMDMzZDUxMjRkYzlkNGViNGI2ZGZkZmI3NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNr
ZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgYXV0byBz
ZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSks
IFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAgYXV0byBzZW5kZXIgPSBh
ZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSksIFdURk1vdmUo
bWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgc2VuZGVyLT5zZXRUcmFj
ayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsKIH0KIAotUmVmPFJUQ1J0cFNl
bmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRl
cj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5n
PiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4m
JiBiYWNrZW5kKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihXVEZN
b3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RG
TW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKIH0KIAotUlRDUnRwU2Vu
ZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5k
ZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDogUlRD
UnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKICAgICAsIG1fdHJhY2tLaW5kKFdURk1vdmUodHJhY2tL
aW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92ZShtZWRpYVN0cmVhbUlkcykpCi0g
ICAgLCBtX2JhY2tlbmQoJmJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5k
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKaW5kZXggODk1OGRmNjc5MTMyZDRmOGU2ZjI1ZDg0YmQwZWMxMTc5MzY3NmZj
YS4uNGUxZTRiNWUzYTdmYTVmN2QxN2MwZGY3MzQ5NmY2ZWFkMjBlZjFlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC0zMywy
MSArMzMsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlBlZXJDb25uZWN0
aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1
YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUlRD
UnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKLSAg
ICAgICAgdmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAgICB9OwotCi0gICAgc3RhdGlj
IFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwotICAgIHN0YXRpYyBSZWY8UlRD
UnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOworICAgIHN0YXRp
YyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2Vu
ZD4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3Ry
YWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhY2tLaW5kOyB9CkBAIC02NSwxMiArNTksMTIgQEAgcHVibGljOgogICAgIFJUQ1J0cFBhcmFt
ZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCiBwcml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihTdHJp
bmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQm
KTsKKyAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7
CiAKICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwotICAgIEJhY2tlbmQqIG1fYmFja2VuZDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4gbV9iYWNrZW5kOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDI1
OGE0YzNlOWNmNDkxNTM4MjY0ODY4MTY2MTcyZmZjNDBhNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKK2NsYXNz
IFJUQ1J0cFNlbmRlcjsKKworY2xhc3MgUlRDUnRwU2VuZGVyQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyQmFja2VuZCgpID0gZGVmYXVsdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBiZjEyMGQwMjli
OTgwYzM1MjhmZWIwNDA5NWFiYTBlOTI0YTc2YWQ1Li5kZTM1OTE3OWZkZTJiNGExOTVlZGU2MjU1
MTVjYWM2OTVlODQ0NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKQEAgLTU2LDEx
ICs1OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBTdHJpbmcg
ZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5ndGgoKSk7Ci19Ci0KIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2ViUlRDUHJvdmlkZXImIGNsaWVu
dCkKICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJDb25uZWN0aW9uKQogICAgICwg
bV9wZWVyQ29ubmVjdGlvbkZhY3RvcnkoKmNsaWVudC5mYWN0b3J5KCkpCkBAIC02NDUsMTYgKzY0
Myw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKHdlYnJ0
Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKQogewogfQogCi1jbGFzcyBSVENSdHBSZWNlaXZlckJh
Y2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXI6OkJhY2tlbmQgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlcikgOiBtX3J0Y1JlY2VpdmVy
KFdURk1vdmUocnRjUmVjZWl2ZXIpKSB7IH0KLXByaXZhdGU6Ci0gICAgUlRDUnRwUGFyYW1ldGVy
cyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7Ci0KLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKLX07Ci0KLQogdm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0
b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgcnRj
U3RyZWFtcykKIHsKICAgICBBU1NFUlQocnRjUmVjZWl2ZXIpOwpAQCAtNjg0LDcgKzY3Miw3IEBA
IHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0KIAotICAgIHJlY2VpdmVyLT5z
ZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwog
ICAgIAogICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNrKCk7CiAgICAgQVNTRVJUKHRy
YWNrKTsKQEAgLTk1Miw5NCArOTQwLDYgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
ZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcKICAgICB9
KTsKIH0KIAotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRl
cnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cEVuY29kaW5nUGFyYW1l
dGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1Bh
cmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmIChydGNQYXJhbWV0ZXJzLnNzcmMpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNzcmM7Ci0gICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjKQotICAgICAgICBwYXJhbWV0
ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjOwotICAgIGlmIChydGNQYXJh
bWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykKLSAgICAgICAgcGFyYW1ldGVy
cy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsKLSAgICBpZiAocnRjUGFyYW1l
dGVycy5kdHgpIHsKLSAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1ldGVycy5kdHgpIHsKLSAgICAg
ICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RGlzYWJsZWQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RU5BQkxFRDoKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1ldGVyczo6RHR4U3RhdHVzOjpF
bmFibGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHBhcmFtZXRlcnMuYWN0aXZlID0gcnRjUGFy
YW1ldGVycy5hY3RpdmU7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzKQot
ICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfYml0cmF0
ZV9icHM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZSkKLSAgICAgICAgcGFy
YW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfZnJhbWVyYXRlOwotICAg
IHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnJpZCk7Ci0gICAg
aWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5KQotICAgICAgICBwYXJh
bWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJhbWV0ZXJzLnNjYWxlX3Jlc29s
dXRpb25fZG93bl9ieTsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1zdGF0aWMgaW5s
aW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgZmlsbEhlYWRl
ckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25QYXJh
bWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4
dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMudXJpID0gZnJv
bVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7Ci0gICAgcGFyYW1ldGVycy5pZCA9IHJ0Y1Bh
cmFtZXRlcnMuaWQ7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIGlubGlu
ZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmlsbENvZGVjUGFyYW1ldGVycyhj
b25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBS
VENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFt
ZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxvYWRfdHlwZTsKLSAgICBwYXJh
bWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLm1pbWVfdHlwZSgp
KTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQotICAgICAgICBwYXJhbWV0ZXJz
LmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7Ci0gICAgaWYgKHJ0Y1BhcmFt
ZXRlcnMubnVtX2NoYW5uZWxzKQotICAgICAgICBwYXJhbWV0ZXJzLmNoYW5uZWxzID0gKnJ0Y1Bh
cmFtZXRlcnMubnVtX2NoYW5uZWxzOwotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0
YXRpYyBSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRw
UGFyYW1ldGVycyBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLQotICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9IGZyb21TdGRTdHJpbmcocnRj
UGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7Ci0gICAgZm9yIChhdXRvJiBydGNFbmNvZGluZyA6
IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQotICAgICAgICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5h
cHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGluZykpOwotICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucykKLSAgICAgICAg
cGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxsSGVhZGVyRXh0ZW5zaW9uUGFy
YW1ldGVycyhleHRlbnNpb24pKTsKLSAgICBmb3IgKGF1dG8mIGNvZGVjIDogcnRjUGFyYW1ldGVy
cy5jb2RlY3MpCi0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFwcGVuZChmaWxsQ29kZWNQYXJh
bWV0ZXJzKGNvZGVjKSk7Ci0KLSAgICBzd2l0Y2ggKHJ0Y1BhcmFtZXRlcnMuZGVncmFkYXRpb25f
cHJlZmVyZW5jZSkgewotICAgIC8vIEZJWE1FOiBTdXBwb3J0IERlZ3JhZGF0aW9uUHJlZmVyZW5j
ZTo6RElTQUJMRUQuCi0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6RElT
QUJMRUQ6Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5f
RlJBTUVSQVRFOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJU
Q1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5GcmFtZXJhdGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6
Ok1BSU5UQUlOX1JFU09MVVRJT046Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVm
ZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNYWludGFp
blJlc29sdXRpb247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlv
blByZWZlcmVuY2U6OkJBTEFOQ0VEOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QmFsYW5j
ZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0K
LVJUQ1J0cFBhcmFtZXRlcnMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKCkK
LXsKLSAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZlci0+R2V0UGFyYW1l
dGVycygpKTsKLX0KLQogUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpn
ZXRSVENSdHBTZW5kZXJQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogewogICAgIGF1
dG8gcnRjU2VuZGVyID0gbV9zZW5kZXJzLmdldCgmc2VuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIyYmExNTBj
NGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLmUwN2E4NTM4MTJhNmFjMWE3Nzg3MWRi
OGI0OWE5MTI4ZDU2YWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkpT
UlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgpAQCAtMjc1LDcgKzI3Nyw4
IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAg
ICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlSZWYo
KSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoInZpZGVvIiwg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAgICB0
cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0
aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjk3LDcgKzMw
MCw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsK
ICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAg
IGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRl
cjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlS
ZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoImF1ZGlv
IiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMzQ4LDEw
ICszNTIsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1cm4gbV9lbmRwb2lu
dC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCitFeGNlcHRp
b25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsKLSAgICBBU1NFUlQoc2VuZGVy
LnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5kZXIsICpzZW5k
ZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOworICAgIGlmICghc2VuZGVyKSB7
CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXRO
ZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgp
OworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
KworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBuZXdTZW5k
ZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4g
eyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICAgICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRy
YWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNy
ZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKworICAgICAgICAv
LyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAo
bnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0
aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCisgICAgICAgIHRyYW5z
Y2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7CisKKyAgICAgICAgc2Vu
ZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5h
ZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRyYWNrLCBtZWRpYVN0cmVhbUlk
cykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRk
IHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2VuZGVyKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKHRyYWNrS2lu
ZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIHJldHVy
biBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQorCitFeGNlcHRpb25PcjxSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRy
YW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFjay5jb3B5UmVmKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGlmICghbV9lbmRwb2lu
dC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBh
ZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1v
dmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5raW5kKCkpOworfQorCitSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxl
dGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNlbmRlciwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmlu
ZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZl
ck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlz
aW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2VpdmVyLT5zZXREaXJlY3Rpb24o
aW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5z
Y2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHRyYW5zY2VpdmVyOwog
fQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5UmVtb3ZlZFRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEzNzA5NTI1MjYxMmY0YjBlYjYx
MTY0ODRkMTRmYTMzMTAxLi4xYzU1NzI0NzRkYTAyOWM1NjFiOTZjN2NmYTNhMWRmMTc5MjZjYzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKQEAgLTQ1
LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwogY2xhc3MgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92aWRlciYpOwpAQCAtNTQsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhhc1ZpZGVvU291cmNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQogCisgICAgdm9pZCByZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
UlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkb0NyZWF0ZU9mZmVy
KFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fu
c3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwxMyArNzgsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBj
b25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJU
Q1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVu
dChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRn
b2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5kIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJp
ZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAgICAgUlRDUGVlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0aW9uOyB9CiAgICAgdm9pZCBh
ZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYmKTsKICAgICB2
b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiYpOwpA
QCAtODgsOSArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNv
bnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAgICAgdm9pZCBn
ZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAKLSAg
ICBib29sIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgZmluYWw7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3Ry
ZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5
UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCisgICAgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNv
bnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworCiAgICAgc3RydWN0IFZpZGVvUmVj
ZWl2ZXIgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwogICAgICAgICBS
ZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7CkBAIC0xMDUsNiArMTEwLDgg
QEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25TZXQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9jYWxEZXNjcmlwdGlvblNldDsgfQogCisgICAgUmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBTZW5k
ZXI+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYsIGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpOworCiAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRmNGU3Y2NhZmU2MzEzM2I4MzViMDFkYjJkMGY3YmFlYWEwOTQwNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisKKyNpbmNsdWRl
ICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJS
VEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQoreworICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2FjZTJlNDJkYTYzMWVlOTcxMmQ4YWQ4ZWNiNjlkODRiNmNlYTJiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxp
YldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIgorCisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRjL2FwaS9ydHByZWNlaXZl
cmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
PgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBS
ZWNlaXZlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFj
ZT4mJiBydGNSZWNlaXZlcikKKyAgICAgICAgOiBtX3J0Y1JlY2VpdmVyKFdURk1vdmUocnRjUmVj
ZWl2ZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKCkgZmluYWw7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNjg2M2E5NDJjOGVkMzM2OTliMDgxMjQ2Y2Q2N2Q2ODg2Y2ZlYzFmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIlJU
Q1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyBXZWJSVEMgYmFja2VuZCJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghc2VuZGVyLnRyYWNrKCkgJiYgdHJhY2spIHsKKyAgICAg
ICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmNvbm5lY3Rpb24oKS5lbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhzZW5kZXIsIHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUocHJvbWlzZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQt
PnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUodHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsK
K30KKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQYXJh
bWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAoreworICAgIGlmICghbV9ydGNTZW5k
ZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBnbyB0aHJvdWdo
IHRoZSBiYWNrZW5kIGFuZCBzaG91bGQgZGlyZWN0bHkgaGF2ZSBtX3J0Y1NlbmRlciBoZXJlLgor
ICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5nZXRQYXJhbWV0
ZXJzKHNlbmRlcik7CisgICAgfQorICAgIHJldHVybiBmaWxsUnRwUGFyYW1ldGVycyhtX3J0Y1Nl
bmRlci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliOWNlYWYwYzJk
ZWFjMTcyZjAyNGY0NWQ4MTAwMDQ0MzBmNGU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJSVENSdHBTZW5kZXJCYWNr
ZW5kLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRl
ciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOworCitjbGFzcyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kIGZpbmFs
IDogcHVibGljIFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBi
YWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYg
cnRjU2VuZGVyKQorICAgICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKG1ha2VXZWFrUHRy
KCZiYWNrZW5kKSkKKyAgICAgICAgLCBtX3J0Y1NlbmRlcihXVEZNb3ZlKHJ0Y1NlbmRlcikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIpIHsgbV9ydGNTZW5kZXIgPSBX
VEZNb3ZlKHJ0Y1NlbmRlcik7IH0KKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
IGZpbmFsOworICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXIm
KSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZD4gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiBtX3J0Y1NlbmRlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYzZjYzZkMjYyYzAxNGFmMWI1ODQ3
NzkxOTkyMmRmYjBmMzIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1V0aWxzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRD
TWFjcm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBp
bmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1Bh
cmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRl
cnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisKKyAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLnNz
cmMgPSAqcnRjUGFyYW1ldGVycy5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAg
ICAgIHN3aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIGNhc2Ugd2VicnRjOjpE
dHhTdGF0dXM6OkRJU0FCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQ
YXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKKyAgICAgICAg
fQorICAgIH0KKyAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOwor
ICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKKyAgICAgICAgcGFyYW1ldGVy
cy5tYXhCaXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOworICAgIGlmIChy
dGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGUpCisgICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVy
YXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOworICAgIGlmIChydGNQYXJhbWV0ZXJz
LnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieSkKKyAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29s
dXRpb25Eb3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7CisK
KyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0
ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0
ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1l
dGVycykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFy
YW1ldGVycy51cmkpOworICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOworCisg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVy
czo6Q29kZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBD
b2RlY1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6
Q29kZWNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBl
ID0gcnRjUGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7CisgICAgcGFyYW1ldGVycy5taW1lVHlwZSA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7CisgICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMuY2xvY2tfcmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRj
UGFyYW1ldGVycy5jbG9ja19yYXRlOworICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVs
cykKKyAgICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFu
bmVsczsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitSVENSdHBQYXJhbWV0ZXJzIGZp
bGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVy
cykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJz
LnRyYW5zYWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25f
aWQpOworICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5n
cykKKyAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFt
ZXRlcnMocnRjRW5jb2RpbmcpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFt
ZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpCisgICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5z
aW9ucy5hcHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7Cisg
ICAgZm9yIChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQorICAgICAgICBwYXJh
bWV0ZXJzLmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOworCisgICAg
c3dpdGNoIChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKKyAgICAvLyBG
SVhNRTogU3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgorICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgorICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKKyAgICAgICAgcGFy
YW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRh
dGlvblByZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRl
cnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoK
KyAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0
ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOworICAgICAgICBicmVhazsKKyAg
ICB9OworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0MjFkYTAxYjY3NGRmN2M0ZjcwZTAxNDI2NjYzZDM0NmM5YTFmZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVj
dCBSdHBQYXJhbWV0ZXJzOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENS
dHBQYXJhbWV0ZXJzOworCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0
IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYpOworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmco
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDYwZjFhNjU0YTc0ZjVkOTU2
YzkyZDU4MmYwN2I5OGVlZWYyZjMuLjczODViYjg0NmRlYzdmYTYyYTNmZGIxY2RiMzRkYWU4Yzg4
NjA1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExMDEsNiArMTEwMSw5IEBACiAJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFB
NCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYy
MjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTg0RjUxNjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRpb25O
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg1NDNFRjIxMzhB
QjQxMDBDNDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMjNGRjcyMTM4QTY4MzAwQzVERjI3IC8qIExpYldl
YlJUQ1V0aWxzLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldl
YlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUMyM0ZGNTIxMzhBNjgxMDBDNURGMjcgLyogTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjIyMTM4QUI4QTAwQzQxQ0MxIC8q
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwICovOyB9OwogCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIg
LyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxOEEwNkQw
MTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBF
dmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87
IH07CkBAIC03MzIyLDYgKzczMjUsMTQgQEAKIAkJNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI0NTlEQTFGNENBREI5
MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFC
NDU5RUQxRjU1RUJDNzAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIz
RkYzMjEzOEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY0MjEzOEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY1
MjEzOEE2ODEwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNjIxMzhBNjgyMDBDNURGMjcg
LyogTGliV2ViUlRDVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDVXRpbHMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2Vi
UlRDVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDVXRpbHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjgyMTM4QTY5MjAwQzVERjI3IC8qIFJUQ1J0
cFNlbmRlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRw
U2VuZGVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGOTIx
MzhBNjkzMDBDNURGMjcgLyogUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTExNiw5ICsxNTEyNywxMSBAQAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFJlY2VpdmVyLmggKi8sCiAJCQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFJlY2VpdmVyLmlkbCAqLywKKwkJCQk0MUMyM0ZGOTIxMzhBNjkzMDBDNURGMjcgLyogUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFNlbmRlci5oICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBT
ZW5kZXIuaWRsICovLAorCQkJCTQxQzIzRkY4MjEzOEE2OTIwMEM1REYyNyAvKiBSVENSdHBTZW5k
ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNUQxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNl
bmRlclJlY2VpdmVyQmFzZS5oICovLAogCQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBS
VENSdHBUcmFuc2NlaXZlci5jcHAgKi8sCiAJCQkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMwRDg1IC8q
IFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8sCkBAIC0xNjgzMiw2ICsxNjg0NSwxMiBAQAogCQkJCTQx
NzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8sCiAJ
CQkJNDE3NjEyQUQxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgKi8sCiAJCQkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkY1MjEzOEE2ODEwMEM1REYyNyAv
KiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovLAorCQkJCTQxQzIzRkY0MjEzOEE2
ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKKwkJCQk0MUMy
M0ZGMTIxMzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8s
CisJCQkJNDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuaCAqLywKKwkJCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMu
Y3BwICovLAorCQkJCTQxQzIzRkY2MjEzOEE2ODIwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5o
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMzE2MzksOCArMzE2NTgsMTAgQEAKIAkJCQk1MzhFQzhDQzFGOTkzRjlEMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTkxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOENEMUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOTIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4Q0UxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U5My5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MTg1NDNGMjIxMzhBQjhBMDBDNDFDQzEgLyogTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhDRjFGOTkzRjlEMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTk0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQwMUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOTUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4
NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhEMTFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTk2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQyMUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4RDMxRjk5M0Y5
RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxOTE4
LDYgKzMxOTM5LDcgQEAKIAkJCQlERTVGODQ1QjFGQTE4NkVBMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM3MC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1QzFGQTE4NkVBMDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTM3MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1RDFGQTE4
NkVBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MTg1NDNFRjIxMzhBQjQxMDBDNDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJREU1Rjg0NUUxRkExODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNzMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NUYxRkExODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzNzQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NjAxRkExODZFQTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNzUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348565</attachid>
            <date>2018-08-30 16:34:20 -0700</date>
            <delta_ts>2018-08-30 16:55:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830163419.patch</filename>
            <type>text/plain</type>
            <size>65704</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMjg3MzRiMjAzZjJjY2M1M2ZkMTZmNGE5Njc4ZTg2NTdhYmZiYmRmMy4uMzMz
MTEzZjIwZTNjNjU3YjQzM2IxNTlhNjdlMWFmNDI4NGYxYzcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcApAQCAtNTMwLDYgKzUzMCwyMSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soUlRDUnRwU2VuZGVyKiwg
TWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZl
ckluaXQmKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5v
dCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKQoreworICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQor
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXgg
ZjhhOTc2YjdhNThmNWM1MTBiNzlkMDk3OWY4YWE1N2E4ZGQwZTQzZS4uOTVlMGY5OTMyY2FlMGU1
YWY0ZjdiMjk0ZTM4ZGQ0MTk1MDY0ZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01MCw2
ICs1MCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9u
OwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CitjbGFzcyBSVENS
dHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0
YXRzUmVwb3J0OwogCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBNZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbjsKIHN0cnVjdCBSVENBbnN3ZXJPcHRpb25zOwogc3RydWN0IFJUQ0RhdGFDaGFubmVs
SW5pdDsKIHN0cnVjdCBSVENPZmZlck9wdGlvbnM7CitzdHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJ
bml0OwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewogdXNpbmcgU2Vzc2lvbkRlc2NyaXB0
aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExEaWN0aW9uYXJ5PFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6SW5pdD4+OwpAQCAtOTksMTEgKzEwMSwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2
ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQs
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIG5vdGlmeUFkZGVkVHJhY2so
UlRDUnRwU2VuZGVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRy
YWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UmVt
b3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCi0gICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgeyByZXR1cm4geyB9OyB9Cisg
ICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2Nl
aXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsKKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVy
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKTsK
IAogICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiAgICAgYm9vbCBpc05lZ290
aWF0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZWdvdGlhdGlvbk5lZWRlZDsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggYTA0ZjgxZTFmYjEyNzI3Y2ZmYmQ1MDg5MThiMjNjNzYwYTIyYmFl
Zi4uMzFlNjllMjE2YjQ5ZTQ0NDQzZDIyYjJiNGM0MWNhMThhZWNlZWJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCkpIHsKICAgICAg
ICAgYXV0byYgZXhpc3RpbmdTZW5kZXIgPSB0cmFuc2NlaXZlci0+c2VuZGVyKCk7CiAgICAgICAg
IGlmIChleGlzdGluZ1NlbmRlci50cmFja0tpbmQoKSA9PSB0cmFjay0+a2luZCgpICYmIGV4aXN0
aW5nU2VuZGVyLnRyYWNrSWQoKS5pc051bGwoKSAmJiAhdHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdE
aXJlY3Rpb24oKSkgewotICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2soV1RGTW92
ZSh0cmFjaykpOworICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIuc2V0VHJhY2sodHJhY2suY29w
eVJlZigpKTsKICAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNldE1lZGlhU3RyZWFtSWRzKFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKICAgICAgICAgICAgIHRyYW5zY2VpdmVyLT5lbmFibGVT
ZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBzZW5kZXIgPSAmZXhpc3RpbmdTZW5kZXI7
CkBAIC0xMzcsMjcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoIXNlbmRlcikgewotICAgICAgICBTdHJpbmcgdHJhbnNjZWl2ZXJN
aWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwotICAgICAgICBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIFN0cmluZyB0cmFja0lkID0g
Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAgICAgIGF1dG8gbmV3U2VuZGVyID0g
UlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1J
ZHMpLCAqdGhpcyk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBtX2JhY2tlbmQtPmNyZWF0ZVJl
Y2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNrSWQpOwotICAgICAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRl
ciksIFdURk1vdmUocmVjZWl2ZXIpKTsKLQotICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlz
IG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVl
ZCBhCi0gICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNl
ZCB0byBjcmVhdGUgYW4gb2ZmZXIuCi0gICAgICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25h
bE1pZCh0cmFuc2NlaXZlck1pZCk7Ci0KLSAgICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5z
ZW5kZXIoKTsKLSAgICAgICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjaygq
c2VuZGVyKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwg
IlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKLQotICAgIHJldHVybiBSZWY8UlRDUnRwU2VuZGVy
PiB7ICpzZW5kZXIgfTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFjayhzZW5kZXIsIHRy
YWNrLmdldCgpLCBtZWRpYVN0cmVhbUlkcyk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1Bl
ZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXImIHNlbmRlcikKQEAgLTE5Miwz
MSArMTcyLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRUcmFuc2NlCiAgICAgICAgIGlmIChraW5kICE9
ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoU3RyaW5nKGtpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7Ci0gICAgICAgIHJl
dHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBraW5kKTsKKyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+
YWRkVHJhbnNjZWl2ZXIoa2luZCwgaW5pdCk7CiAgICAgfQogCi0gICAgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+IHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJh
Y2spLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2st
PmlkKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+a2luZCgpOwotCi0g
ICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgIGlmICghbV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRy
YWNrKHNlbmRlcikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJy
b3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07Ci0KLSAgICByZXR1cm4gY29tcGxldGVBZGRU
cmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNrSWQsIHRyYWNrS2luZCk7Ci19
Ci0KLVJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmNvbXBsZXRlQWRk
VHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIsIGNvbnN0IFJUQ1J0cFRyYW5z
Y2VpdmVySW5pdCYgaW5pdCwgY29uc3QgU3RyaW5nJiB0cmFja0lkLCBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCkKLXsKLSAgICBTdHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Z2V0TmV4dE1pZCgpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFu
c2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7Ci0KLSAgICB0cmFuc2NlaXZlci0+c2V0
UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotICAgIHRyYW5zY2VpdmVyLT5zZXREaXJl
Y3Rpb24oaW5pdC5kaXJlY3Rpb24pOwotCi0gICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKHRy
YW5zY2VpdmVyLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHRyYW5zY2VpdmVyOworICAgIGF1dG8g
dHJhY2sgPSBXVEY6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KHdpdGhUcmFjaykucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENy
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMsIFNlc3Npb25EZXNjcmlwdGlvblBy
b21pc2UmJiBwcm9taXNlKQpAQCAtNTg2LDI4ICs1NDYsMTEgQEAgdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0
cjxNZWQKICAgICAgICAgYm9vbCBoYXNUcmFjayA9IHByb3RlY3RlZFNlbmRlci0+dHJhY2soKTsK
ICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFjayh3aXRoVHJhY2sucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIGlmICghaGFzVHJhY2spCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2socHJvdGVjdGVkU2VuZGVyLmdldCgpKTsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+YWRkVHJhY2socHJvdGVjdGVkU2Vu
ZGVyLnB0cigpLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpLCB7IH0pOwogICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVw
bGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4m
JiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCi17Ci0gICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIXNlbmRlci50cmFjaygpICYmIHdp
dGhUcmFjaykgewotICAgICAgICBlbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIHdpdGhU
cmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+cmVwbGFjZVRyYWNrKHNlbmRlciwgV1RGTW92ZSh3
aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotUlRDUnRwUGFyYW1ldGVycyBSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRlcik7Ci19Ci0KIHZv
aWQgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAg
IERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcgJyIsIGV2ZW50LnR5cGUoKSwg
IiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAppbmRleCA0MjdiZjIyM2ViOGU0MTljMzliMmI1ZWYxNDVkZmE2ZDEw
OGQxZGU3Li44NGViOWJjOWE1NWE1YTcxNzRjN2UwZmIxZTdlOTRlN2QzMTVkMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5oCkBAIC02Niw3ICs2Niw2IEBAIHN0cnVjdCBSVENSdHBUcmFuc2NlaXZlckluaXQgewog
CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbAogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UlRDUGVlckNvbm5lY3Rpb24+Ci0gICAgLCBwdWJsaWMgUlRDUnRwU2VuZGVyOjpCYWNrZW5kCiAg
ICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIEFjdGl2
ZURPTU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTA5LDYgKzEwOCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9u
U3RhdGUgPT0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2VkOyB9CiAgICAgYm9vbCBpc1N0
b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQogCisgICAgdm9pZCBhZGRJbnRl
cm5hbFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikgeyBt
X3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2NlaXZlcikpOyB9CisKICAgICAv
LyA1LjEgUlRDUGVlckNvbm5lY3Rpb24gZXh0ZW5zaW9ucwogICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNlbmRlcj4+JiBnZXRTZW5kZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2NlaXZlclNldC0+c2VuZGVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwUmVjZWl2ZXI+PiYgZ2V0UmVjZWl2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+cmVjZWl2ZXJzKCk7IH0KQEAgLTE0NCw3ICsx
NDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTmVnb3RpYXRpb25OZWVkZWRFdmVu
dCgpOwogCi0gICAgUlRDUnRwU2VuZGVyOjpCYWNrZW5kJiBzZW5kZXJCYWNrZW5kKCkgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB2b2lkIGZpcmVFdmVudChFdmVudCYpOwogCiAgICAgdm9pZCBkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQtPmRpc2FibGVJQ0VDYW5kaWRh
dGVGaWx0ZXJpbmcoKTsgfQpAQCAtMTg2LDExICsxODYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0byBiZSB0aGUgQmFja2VuZAot
ICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uU3RhdGUo
KTsKICAgICBib29sIGRvQ2xvc2UoKTsKICAgICB2b2lkIGRvU3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAppbmRl
eCAzZDY3MzE5YzkxYmM2M2M1NzdiYjgyMGIwYTg3MGUyNmQ3NWU0MGEwLi44ZmJlOWEyOTU5NmY2
YWRkMDU5NWQyMTc1YzA2MDdmZTFiNTdkNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcApAQCAtMzcsOSArMzcsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZl
cihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCkKK1JUQ1J0
cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywg
c3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDog
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURk1vdmUodHJhY2spKQotICAgICwgbV9iYWNrZW5k
KGJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDE0YWIwNjkzNDcwOTlkNGM4ZjI2MWM4OTYyMjkwYWI3MTdhMmIyYTkuLmRiNmI3NDk4
YjllMDgzOTE5YWJiNTdhZjcxYWNiNGZiNjRkZTVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRlcnMuaCIK
KyNpbmNsdWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSVENSdHBTZW5k
ZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMzEgKzQxLDIw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXIgOiBwdWJsaWMg
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQoKSA9IGRlZmF1bHQ7Ci0gICAg
ICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9
OyB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZShSZWY8
TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFja2VuZCA9IG51bGxwdHIpCisg
ICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tl
bmQgPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
UmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGJhY2tlbmQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIFdURk1vdmUoYmFja2VuZCkp
KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cGFzcyBhIFVuaXF1ZVJlZiBoZXJlLgotICAgIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9w
dHI8QmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7IH0K
LQotICAgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rpc3BhdGNoZWQ7
IH0KLSAgICB2b2lkIHNldERpc3BhdGNoZWQoYm9vbCBpc0Rpc3BhdGNoZWQpIHsgbV9pc0Rpc3Bh
dGNoZWQgPSBpc0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVf
cHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdURk1v
dmUoYmFja2VuZCk7IH0KICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJl
dHVybiBtX2JhY2tlbmQgPyBtX2JhY2tlbmQtPmdldFBhcmFtZXRlcnMoKSA6IFJUQ1J0cFBhcmFt
ZXRlcnMoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBCYWNrZW5kKik7CisgICAgUlRDUnRwUmVjZWl2ZXIoUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+
JiYpOwogCi0gICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlZjM0YWVmMDQ5N2NjN2ZmMTYzOTRmZjJm
YWMwMGEyZjVjZTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENSdHBQ
YXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENSdHBSZWNlaXZlckJhY2tlbmQo
KSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
KSB7IHJldHVybiB7IH07IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE4ZGM5YmQ2NGRhM2IxZWE4OWMyYzA2Y2Yz
Yzk5YTk5YTAyZTA3MTEuLjZhM2QxYmNkOTA4ODZlMDMzZDUxMjRkYzlkNGViNGI2ZGZkZmI3NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNr
ZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgYXV0byBz
ZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSks
IFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAgYXV0byBzZW5kZXIgPSBh
ZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSksIFdURk1vdmUo
bWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgc2VuZGVyLT5zZXRUcmFj
ayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsKIH0KIAotUmVmPFJUQ1J0cFNl
bmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRl
cj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5n
PiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4m
JiBiYWNrZW5kKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihXVEZN
b3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RG
TW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKIH0KIAotUlRDUnRwU2Vu
ZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5k
ZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDogUlRD
UnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKICAgICAsIG1fdHJhY2tLaW5kKFdURk1vdmUodHJhY2tL
aW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92ZShtZWRpYVN0cmVhbUlkcykpCi0g
ICAgLCBtX2JhY2tlbmQoJmJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5k
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKaW5kZXggODk1OGRmNjc5MTMyZDRmOGU2ZjI1ZDg0YmQwZWMxMTc5MzY3NmZj
YS4uNGUxZTRiNWUzYTdmYTVmN2QxN2MwZGY3MzQ5NmY2ZWFkMjBlZjFlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC0zMywy
MSArMzMsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlBlZXJDb25uZWN0
aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1
YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUlRD
UnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0ID0gMDsKLSAg
ICAgICAgdmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAgICB9OwotCi0gICAgc3RhdGlj
IFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwotICAgIHN0YXRpYyBSZWY8UlRD
UnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOworICAgIHN0YXRp
YyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2Vu
ZD4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3Ry
YWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHJhY2tLaW5kOyB9CkBAIC02NSwxMiArNTksMTIgQEAgcHVibGljOgogICAgIFJUQ1J0cFBhcmFt
ZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCiBwcml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihTdHJp
bmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQm
KTsKKyAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7
CiAKICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwotICAgIEJhY2tlbmQqIG1fYmFja2VuZDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4gbV9iYWNrZW5kOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDI1
OGE0YzNlOWNmNDkxNTM4MjY0ODY4MTY2MTcyZmZjNDBhNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKK2NsYXNz
IFJUQ1J0cFNlbmRlcjsKKworY2xhc3MgUlRDUnRwU2VuZGVyQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyQmFja2VuZCgpID0gZGVmYXVsdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBiZjEyMGQwMjli
OTgwYzM1MjhmZWIwNDA5NWFiYTBlOTI0YTc2YWQ1Li5kZTM1OTE3OWZkZTJiNGExOTVlZGU2MjU1
MTVjYWM2OTVlODQ0NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBv
aW50LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKQEAgLTU2LDEx
ICs1OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBTdHJpbmcg
ZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5ndGgoKSk7Ci19Ci0KIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2ViUlRDUHJvdmlkZXImIGNsaWVu
dCkKICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJDb25uZWN0aW9uKQogICAgICwg
bV9wZWVyQ29ubmVjdGlvbkZhY3RvcnkoKmNsaWVudC5mYWN0b3J5KCkpCkBAIC02NDUsMTYgKzY0
Myw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKHdlYnJ0
Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKQogewogfQogCi1jbGFzcyBSVENSdHBSZWNlaXZlckJh
Y2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXI6OkJhY2tlbmQgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlcikgOiBtX3J0Y1JlY2VpdmVy
KFdURk1vdmUocnRjUmVjZWl2ZXIpKSB7IH0KLXByaXZhdGU6Ci0gICAgUlRDUnRwUGFyYW1ldGVy
cyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7Ci0KLSAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKLX07Ci0KLQogdm9pZCBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlciwgY29uc3Qgc3RkOjp2ZWN0
b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiYgcnRj
U3RyZWFtcykKIHsKICAgICBBU1NFUlQocnRjUmVjZWl2ZXIpOwpAQCAtNjg0LDcgKzY3Miw3IEBA
IHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0KIAotICAgIHJlY2VpdmVyLT5z
ZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwog
ICAgIAogICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNrKCk7CiAgICAgQVNTRVJUKHRy
YWNrKTsKQEAgLTk1Miw5NCArOTQwLDYgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpz
ZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qgc3RkOjpzdHJpbmcKICAgICB9
KTsKIH0KIAotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRl
cnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cEVuY29kaW5nUGFyYW1l
dGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpFbmNvZGluZ1Bh
cmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmIChydGNQYXJhbWV0ZXJzLnNzcmMpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNzcmM7Ci0gICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjKQotICAgICAgICBwYXJhbWV0
ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3JjOwotICAgIGlmIChydGNQYXJh
bWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykKLSAgICAgICAgcGFyYW1ldGVy
cy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsKLSAgICBpZiAocnRjUGFyYW1l
dGVycy5kdHgpIHsKLSAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1ldGVycy5kdHgpIHsKLSAgICAg
ICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RGlzYWJsZWQ7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RU5BQkxFRDoKLSAg
ICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1ldGVyczo6RHR4U3RhdHVzOjpF
bmFibGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHBhcmFtZXRlcnMuYWN0aXZlID0gcnRjUGFy
YW1ldGVycy5hY3RpdmU7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzKQot
ICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfYml0cmF0
ZV9icHM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZSkKLSAgICAgICAgcGFy
YW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5tYXhfZnJhbWVyYXRlOwotICAg
IHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnJpZCk7Ci0gICAg
aWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5KQotICAgICAgICBwYXJh
bWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJhbWV0ZXJzLnNjYWxlX3Jlc29s
dXRpb25fZG93bl9ieTsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1zdGF0aWMgaW5s
aW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgZmlsbEhlYWRl
ckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBIZWFkZXJFeHRlbnNpb25QYXJh
bWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4
dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMudXJpID0gZnJv
bVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7Ci0gICAgcGFyYW1ldGVycy5pZCA9IHJ0Y1Bh
cmFtZXRlcnMuaWQ7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIGlubGlu
ZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmlsbENvZGVjUGFyYW1ldGVycyhj
b25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBS
VENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFt
ZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxvYWRfdHlwZTsKLSAgICBwYXJh
bWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLm1pbWVfdHlwZSgp
KTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQotICAgICAgICBwYXJhbWV0ZXJz
LmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7Ci0gICAgaWYgKHJ0Y1BhcmFt
ZXRlcnMubnVtX2NoYW5uZWxzKQotICAgICAgICBwYXJhbWV0ZXJzLmNoYW5uZWxzID0gKnJ0Y1Bh
cmFtZXRlcnMubnVtX2NoYW5uZWxzOwotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0
YXRpYyBSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRw
UGFyYW1ldGVycyBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLQotICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9IGZyb21TdGRTdHJpbmcocnRj
UGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7Ci0gICAgZm9yIChhdXRvJiBydGNFbmNvZGluZyA6
IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQotICAgICAgICBwYXJhbWV0ZXJzLmVuY29kaW5ncy5h
cHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGluZykpOwotICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0ZW5zaW9ucykKLSAgICAgICAg
cGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxsSGVhZGVyRXh0ZW5zaW9uUGFy
YW1ldGVycyhleHRlbnNpb24pKTsKLSAgICBmb3IgKGF1dG8mIGNvZGVjIDogcnRjUGFyYW1ldGVy
cy5jb2RlY3MpCi0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFwcGVuZChmaWxsQ29kZWNQYXJh
bWV0ZXJzKGNvZGVjKSk7Ci0KLSAgICBzd2l0Y2ggKHJ0Y1BhcmFtZXRlcnMuZGVncmFkYXRpb25f
cHJlZmVyZW5jZSkgewotICAgIC8vIEZJWE1FOiBTdXBwb3J0IERlZ3JhZGF0aW9uUHJlZmVyZW5j
ZTo6RElTQUJMRUQuCi0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6RElT
QUJMRUQ6Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5f
RlJBTUVSQVRFOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJU
Q1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5GcmFtZXJhdGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6
Ok1BSU5UQUlOX1JFU09MVVRJT046Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVm
ZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNYWludGFp
blJlc29sdXRpb247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlv
blByZWZlcmVuY2U6OkJBTEFOQ0VEOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QmFsYW5j
ZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0K
LVJUQ1J0cFBhcmFtZXRlcnMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKCkK
LXsKLSAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZlci0+R2V0UGFyYW1l
dGVycygpKTsKLX0KLQogUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpn
ZXRSVENSdHBTZW5kZXJQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogewogICAgIGF1
dG8gcnRjU2VuZGVyID0gbV9zZW5kZXJzLmdldCgmc2VuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIyYmExNTBj
NGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLmUwN2E4NTM4MTJhNmFjMWE3Nzg3MWRi
OGI0OWE5MTI4ZDU2YWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkpT
UlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgpAQCAtMjc1LDcgKzI3Nyw4
IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAg
ICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlSZWYo
KSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoInZpZGVvIiwg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAgICB0
cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0
aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjk3LDcgKzMw
MCw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsK
ICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5l
Y3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAg
IGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRl
cjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlS
ZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoImF1ZGlv
IiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMzQ4LDEw
ICszNTIsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1cm4gbV9lbmRwb2lu
dC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCitFeGNlcHRp
b25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsKLSAgICBBU1NFUlQoc2VuZGVy
LnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5kZXIsICpzZW5k
ZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOworICAgIGlmICghc2VuZGVyKSB7
CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXRO
ZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgp
OworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsK
KworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBuZXdTZW5k
ZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4g
eyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICAgICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRy
YWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNy
ZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKworICAgICAgICAv
LyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAo
bnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0
aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCisgICAgICAgIHRyYW5z
Y2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7CisKKyAgICAgICAgc2Vu
ZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5h
ZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRyYWNrLCBtZWRpYVN0cmVhbUlk
cykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRk
IHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2VuZGVyKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKHRyYWNrS2lu
ZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIHJldHVy
biBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQorCitFeGNlcHRpb25PcjxSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRy
YW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFjay5jb3B5UmVmKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGlmICghbV9lbmRwb2lu
dC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBh
ZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1v
dmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5raW5kKCkpOworfQorCitSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxl
dGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNlbmRlciwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmlu
ZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZl
ck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlz
aW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2VpdmVyLT5zZXREaXJlY3Rpb24o
aW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5z
Y2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHRyYW5zY2VpdmVyOwog
fQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5UmVtb3ZlZFRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEzNzA5NTI1MjYxMmY0YjBlYjYx
MTY0ODRkMTRmYTMzMTAxLi4xYzU1NzI0NzRkYTAyOWM1NjFiOTZjN2NmYTNhMWRmMTc5MjZjYzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKQEAgLTQ1
LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwogY2xhc3MgUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92aWRlciYpOwpAQCAtNTQsNiAr
NTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhhc1ZpZGVvU291cmNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQogCisgICAgdm9pZCByZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMo
UlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkb0NyZWF0ZU9mZmVy
KFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fu
c3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwxMyArNzgsMTEgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBj
b25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJU
Q1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVu
dChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRn
b2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5kIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJp
ZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAgICAgUlRDUGVlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0aW9uOyB9CiAgICAgdm9pZCBh
ZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYmKTsKICAgICB2
b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiYpOwpA
QCAtODgsOSArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFN0YXRzU3VjY2VlZGVkKGNv
bnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9ydD4mJik7CiAgICAgdm9pZCBn
ZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBFeGNlcHRpb24mJik7CiAKLSAg
ICBib29sIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgZmluYWw7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3Ry
ZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5
UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCisgICAgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNv
bnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworCiAgICAgc3RydWN0IFZpZGVvUmVj
ZWl2ZXIgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyOwogICAgICAgICBS
ZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7CkBAIC0xMDUsNiArMTEwLDgg
QEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25TZXQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9jYWxEZXNjcmlwdGlvblNldDsgfQogCisgICAgUmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBTZW5k
ZXI+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYsIGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpOworCiAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRmNGU3Y2NhZmU2MzEzM2I4MzViMDFkYjJkMGY3YmFlYWEwOTQwNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisKKyNpbmNsdWRl
ICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJS
VEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQoreworICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJzKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldF
QlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2FjZTJlNDJkYTYzMWVlOTcxMmQ4YWQ4ZWNiNjlkODRiNmNlYTJiMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgIkxp
YldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIgorCisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2VicnRjL2FwaS9ydHByZWNlaXZl
cmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
PgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBS
ZWNlaXZlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFj
ZT4mJiBydGNSZWNlaXZlcikKKyAgICAgICAgOiBtX3J0Y1JlY2VpdmVyKFdURk1vdmUocnRjUmVj
ZWl2ZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKCkgZmluYWw7CisKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNjg2M2E5NDJjOGVkMzM2OTliMDgxMjQ2Y2Q2N2Q2ODg2Y2ZlYzFmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorI2luY2x1ZGUgIlJU
Q1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyBXZWJSVEMgYmFja2VuZCJfcyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghc2VuZGVyLnRyYWNrKCkgJiYgdHJhY2spIHsKKyAgICAg
ICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmNvbm5lY3Rpb24oKS5lbnF1ZXVlUmVwbGFjZVRy
YWNrVGFzayhzZW5kZXIsIHRyYWNrLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUocHJvbWlzZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQt
PnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUodHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsK
K30KKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQYXJh
bWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAoreworICAgIGlmICghbV9ydGNTZW5k
ZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBnbyB0aHJvdWdo
IHRoZSBiYWNrZW5kIGFuZCBzaG91bGQgZGlyZWN0bHkgaGF2ZSBtX3J0Y1NlbmRlciBoZXJlLgor
ICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5nZXRQYXJhbWV0
ZXJzKHNlbmRlcik7CisgICAgfQorICAgIHJldHVybiBmaWxsUnRwUGFyYW1ldGVycyhtX3J0Y1Nl
bmRlci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliOWNlYWYwYzJk
ZWFjMTcyZjAyNGY0NWQ4MTAwMDQ0MzBmNGU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJSVENSdHBTZW5kZXJCYWNr
ZW5kLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRl
ciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOworCitjbGFzcyBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kIGZpbmFs
IDogcHVibGljIFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0IExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBi
YWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+JiYg
cnRjU2VuZGVyKQorICAgICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKG1ha2VXZWFrUHRy
KCZiYWNrZW5kKSkKKyAgICAgICAgLCBtX3J0Y1NlbmRlcihXVEZNb3ZlKHJ0Y1NlbmRlcikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIpIHsgbV9ydGNTZW5kZXIgPSBX
VEZNb3ZlKHJ0Y1NlbmRlcik7IH0KKyAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYp
IGZpbmFsOworICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXIm
KSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZD4gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiBtX3J0Y1NlbmRlcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzYzZjYzZkMjYyYzAxNGFmMWI1ODQ3
NzkxOTkyMmRmYjBmMzIwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHAKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldl
YlJUQ1V0aWxzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRD
TWFjcm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvcnRwcGFyYW1ldGVycy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBp
bmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1Bh
cmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRl
cnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisKKyAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLnNz
cmMgPSAqcnRjUGFyYW1ldGVycy5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpy
dGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRj
UGFyYW1ldGVycy5mZWMtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAg
ICAgIHN3aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIGNhc2Ugd2VicnRjOjpE
dHhTdGF0dXM6OkRJU0FCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQ
YXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKKyAgICAgICAg
fQorICAgIH0KKyAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOwor
ICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKKyAgICAgICAgcGFyYW1ldGVy
cy5tYXhCaXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOworICAgIGlmIChy
dGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGUpCisgICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVy
YXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOworICAgIGlmIChydGNQYXJhbWV0ZXJz
LnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieSkKKyAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29s
dXRpb25Eb3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7CisK
KyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0
ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0
ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1l
dGVycykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFy
YW1ldGVycy51cmkpOworICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOworCisg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVy
czo6Q29kZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBD
b2RlY1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6
Q29kZWNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBl
ID0gcnRjUGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7CisgICAgcGFyYW1ldGVycy5taW1lVHlwZSA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7CisgICAgaWYgKHJ0Y1Bh
cmFtZXRlcnMuY2xvY2tfcmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRj
UGFyYW1ldGVycy5jbG9ja19yYXRlOworICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVs
cykKKyAgICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFu
bmVsczsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitSVENSdHBQYXJhbWV0ZXJzIGZp
bGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVy
cykKK3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJz
LnRyYW5zYWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25f
aWQpOworICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5n
cykKKyAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFt
ZXRlcnMocnRjRW5jb2RpbmcpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFt
ZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpCisgICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5z
aW9ucy5hcHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7Cisg
ICAgZm9yIChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQorICAgICAgICBwYXJh
bWV0ZXJzLmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOworCisgICAg
c3dpdGNoIChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKKyAgICAvLyBG
SVhNRTogU3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgorICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgorICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKKyAgICAgICAgcGFy
YW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRh
dGlvblByZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRl
cnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoK
KyAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0
ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOworICAgICAgICBicmVhazsKKyAg
ICB9OworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0MjFkYTAxYjY3NGRmN2M0ZjcwZTAxNDI2NjYzZDM0NmM5YTFmZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVj
dCBSdHBQYXJhbWV0ZXJzOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENS
dHBQYXJhbWV0ZXJzOworCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0
IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYpOworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmco
Y29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDYwZjFhNjU0YTc0ZjVkOTU2
YzkyZDU4MmYwN2I5OGVlZWYyZjMuLjczODViYjg0NmRlYzdmYTYyYTNmZGIxY2RiMzRkYWU4Yzg4
NjA1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExMDEsNiArMTEwMSw5IEBACiAJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFB
NCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYy
MjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTg0RjUxNjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRpb25O
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg1NDNFRjIxMzhB
QjQxMDBDNDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMjNGRjcyMTM4QTY4MzAwQzVERjI3IC8qIExpYldl
YlJUQ1V0aWxzLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldl
YlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUMyM0ZGNTIxMzhBNjgxMDBDNURGMjcgLyogTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjIyMTM4QUI4QTAwQzQxQ0MxIC8q
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwICovOyB9OwogCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIg
LyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxOEEwNkQw
MTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBF
dmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87
IH07CkBAIC03MzIyLDYgKzczMjUsMTQgQEAKIAkJNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8q
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI0NTlEQTFGNENBREI5
MDAwMEY2RkQgLyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFC
NDU5RUQxRjU1RUJDNzAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIz
RkYzMjEzOEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY0MjEzOEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY1
MjEzOEE2ODEwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNjIxMzhBNjgyMDBDNURGMjcg
LyogTGliV2ViUlRDVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDVXRpbHMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2Vi
UlRDVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDVXRpbHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjgyMTM4QTY5MjAwQzVERjI3IC8qIFJUQ1J0
cFNlbmRlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRw
U2VuZGVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGOTIx
MzhBNjkzMDBDNURGMjcgLyogUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTExNiw5ICsxNTEyNywxMSBAQAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFJlY2VpdmVyLmggKi8sCiAJCQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFJlY2VpdmVyLmlkbCAqLywKKwkJCQk0MUMyM0ZGOTIxMzhBNjkzMDBDNURGMjcgLyogUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8q
IFJUQ1J0cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFNlbmRlci5oICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBT
ZW5kZXIuaWRsICovLAorCQkJCTQxQzIzRkY4MjEzOEE2OTIwMEM1REYyNyAvKiBSVENSdHBTZW5k
ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNUQxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNl
bmRlclJlY2VpdmVyQmFzZS5oICovLAogCQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBS
VENSdHBUcmFuc2NlaXZlci5jcHAgKi8sCiAJCQkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMwRDg1IC8q
IFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8sCkBAIC0xNjgzMiw2ICsxNjg0NSwxMiBAQAogCQkJCTQx
NzYxMkFDMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8sCiAJ
CQkJNDE3NjEyQUQxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgKi8sCiAJCQkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkY1MjEzOEE2ODEwMEM1REYyNyAv
KiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovLAorCQkJCTQxQzIzRkY0MjEzOEE2
ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKKwkJCQk0MUMy
M0ZGMTIxMzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8s
CisJCQkJNDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuaCAqLywKKwkJCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMu
Y3BwICovLAorCQkJCTQxQzIzRkY2MjEzOEE2ODIwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5o
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMzE2MzksOCArMzE2NTgsMTAgQEAKIAkJCQk1MzhFQzhDQzFGOTkzRjlEMDA0RDIy
QTggLyogVW5pZmllZFNvdXJjZTkxLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOENEMUY5
OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOTIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTM4RUM4Q0UxRjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U5My5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MTg1NDNGMjIxMzhBQjhBMDBDNDFDQzEgLyogTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhDRjFGOTkzRjlEMDA0RDIyQTgg
LyogVW5pZmllZFNvdXJjZTk0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQwMUY5OTNG
OUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOTUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4
NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhEMTFGOTkzRjlEMDA0RDIyQTggLyogVW5pZmllZFNv
dXJjZTk2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQyMUY5OTNGOUQwMDREMjJBOCAv
KiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4RDMxRjk5M0Y5
RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxOTE4
LDYgKzMxOTM5LDcgQEAKIAkJCQlERTVGODQ1QjFGQTE4NkVBMDA2REI2M0EgLyogVW5pZmllZFNv
dXJjZTM3MC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1QzFGQTE4NkVBMDA2REI2M0Eg
LyogVW5pZmllZFNvdXJjZTM3MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODQ1RDFGQTE4
NkVBMDA2REI2M0EgLyogVW5pZmllZFNvdXJjZTM3Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MTg1NDNFRjIxMzhBQjQxMDBDNDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJREU1Rjg0NUUxRkExODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzNzMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NUYxRkExODZFQTAwNkRCNjNBIC8qIFVuaWZpZWRT
b3VyY2UzNzQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0NjAxRkExODZFQTAwNkRCNjNB
IC8qIFVuaWZpZWRTb3VyY2UzNzUuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348569</attachid>
            <date>2018-08-30 16:55:29 -0700</date>
            <delta_ts>2018-08-30 21:11:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830165526.patch</filename>
            <type>text/plain</type>
            <size>65891</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGZlZjk5NzYzMmE2OGM0MTBhZjA5OGYwMWViMmM1OGNkZmNkYWI1OGMuLjQ1NzUwYmE1
MjRlMjY5ZGFjMWNiMzVkYmY0ZWU5NzVkYjUwZjYxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xNTYzLDYgKzE1NjMsOSBAQCBpZiAoVVNFX0xJQldFQlJUQykKICAgICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKICAgICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAogICAg
ICAgKQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI4NzM0YjIwM2Yy
Y2NjNTNmZDE2ZjRhOTY3OGU4NjU3YWJmYmJkZjMuLjMzMzExM2YyMGUzYzY1N2I0MzNiMTU5YTY3
ZTFhZjQyODRmMWM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTUzMCw2ICs1MzAs
MjEgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05lZWRpbmdOZWdvdGlhdGlv
bigpCiAgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uc2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2
ZW50KCk7CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRl
ZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH07Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENS
dHBUcmFuc2NlaXZlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgUlRDUnRw
VHJhbnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogV1RGTG9nQ2hhbm5lbCYgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2dDaGFubmVsKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGY4YTk3NmI3YTU4ZjVjNTEwYjc5ZDA5
NzlmOGFhNTdhOGRkMGU0M2UuLjk1ZTBmOTkzMmNhZTBlNWFmNGY3YjI5NGUzOGRkNDE5NTA2NGZj
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBSVENJY2VD
YW5kaWRhdGU7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ1J0cFJlY2VpdmVy
OwogY2xhc3MgUlRDUnRwU2VuZGVyOworY2xhc3MgUlRDUnRwVHJhbnNjZWl2ZXI7CiBjbGFzcyBS
VENTZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKIApAQCAtNTcsNiAr
NTgsNyBAQCBzdHJ1Y3QgTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUlRDQW5z
d2VyT3B0aW9uczsKIHN0cnVjdCBSVENEYXRhQ2hhbm5lbEluaXQ7CiBzdHJ1Y3QgUlRDT2ZmZXJP
cHRpb25zOworc3RydWN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdDsKIAogbmFtZXNwYWNlIFBlZXJD
b25uZWN0aW9uIHsKIHVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNl
RGVmZXJyZWQ8SURMRGljdGlvbmFyeTxSVENTZXNzaW9uRGVzY3JpcHRpb246OkluaXQ+PjsKQEAg
LTk5LDExICsxMDEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhNZWRp
YVN0cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogCiAgICAgdmlydHVh
bCBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNj
ZWl2ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRk
VHJhY2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXIm
KSB7IH0KIAotICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4m
JiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CiAKICAgICB2b2lkIG1hcmtBc05lZWRp
bmdOZWdvdGlhdGlvbigpOwogICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmVnb3RpYXRpb25OZWVkZWQ7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGEwNGY4
MWUxZmIxMjcyN2NmZmJkNTA4OTE4YjIzYzc2MGEyMmJhZWYuLjMxZTY5ZTIxNmI0OWU0NDQ0M2Qy
MmIyYjRjNDFjYTE4YWVjZWViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjgsNyArMTI4LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRU
cmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4KICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDog
bV90cmFuc2NlaXZlclNldC0+bGlzdCgpKSB7CiAgICAgICAgIGF1dG8mIGV4aXN0aW5nU2VuZGVy
ID0gdHJhbnNjZWl2ZXItPnNlbmRlcigpOwogICAgICAgICBpZiAoZXhpc3RpbmdTZW5kZXIudHJh
Y2tLaW5kKCkgPT0gdHJhY2stPmtpbmQoKSAmJiBleGlzdGluZ1NlbmRlci50cmFja0lkKCkuaXNO
dWxsKCkgJiYgIXRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKLSAgICAgICAg
ICAgIGV4aXN0aW5nU2VuZGVyLnNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKKyAgICAgICAgICAg
IGV4aXN0aW5nU2VuZGVyLnNldFRyYWNrKHRyYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBl
eGlzdGluZ1NlbmRlci5zZXRNZWRpYVN0cmVhbUlkcyhXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSk7
CiAgICAgICAgICAgICB0cmFuc2NlaXZlci0+ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAg
ICAgICAgICAgc2VuZGVyID0gJmV4aXN0aW5nU2VuZGVyOwpAQCAtMTM3LDI3ICsxMzcsNyBAQCBF
eGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNr
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFzZW5k
ZXIpIHsKLSAgICAgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6
OmdldE5leHRNaWQoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+
a2luZCgpOwotICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKTsKLQotICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUodHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgKnRoaXMpOwotICAgICAgICBh
dXRvIHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwg
dHJhY2tLaW5kLCB0cmFja0lkKTsKLSAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7
Ci0KLSAgICAgICAgLy8gVGhpcyB0cmFuc2NlaXZlciBpcyBub3QgeWV0IGFzc29jaWF0ZWQgd2l0
aCBhbiBtLWxpbmUgKG51bGwgbWlkKSwgYnV0IHdlIG5lZWQgYQotICAgICAgICAvLyBwcm92aXNp
b25hbCBtaWQgaWYgdGhlIHRyYW5zY2VpdmVyIGlzIHVzZWQgdG8gY3JlYXRlIGFuIG9mZmVyLgot
ICAgICAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwot
Ci0gICAgICAgIHNlbmRlciA9ICZ0cmFuc2NlaXZlci0+c2VuZGVyKCk7Ci0gICAgICAgIG1fdHJh
bnNjZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7Ci0gICAgfQotCi0gICAg
aWYgKCFtX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2soKnNlbmRlcikpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9z
IH07Ci0KLSAgICByZXR1cm4gUmVmPFJUQ1J0cFNlbmRlcj4geyAqc2VuZGVyIH07CisgICAgcmV0
dXJuIG1fYmFja2VuZC0+YWRkVHJhY2soc2VuZGVyLCB0cmFjay5nZXQoKSwgbWVkaWFTdHJlYW1J
ZHMpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCkBAIC0xOTIsMzEgKzE3MiwxMSBAQCBFeGNlcHRpb25P
cjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2
ZXIoQWRkVHJhbnNjZQogICAgICAgICBpZiAoa2luZCAhPSAiYXVkaW8iICYmIGtpbmQgIT0gInZp
ZGVvIikKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAotICAg
ICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyhraW5kKSwgVmVj
dG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2Nl
aXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwg
a2luZCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmFkZFRyYW5zY2VpdmVyKGtpbmQsIGlu
aXQpOwogICAgIH0KIAotICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IFdURjo6Z2V0
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOwot
ICAgIGNvbnN0IFN0cmluZyYgdHJhY2tJZCA9IHRyYWNrLT5pZCgpOwotICAgIGNvbnN0IFN0cmlu
ZyYgdHJhY2tLaW5kID0gdHJhY2stPmtpbmQoKTsKLQotICAgIGF1dG8gc2VuZGVyID0gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFZlY3RvcjxTdHJpbmc+KCksICp0aGlzKTsK
LSAgICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjayhzZW5kZXIpKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFj
ayJfcyB9OwotCi0gICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5k
ZXIpLCBpbml0LCB0cmFja0lkLCB0cmFja0tpbmQpOwotfQotCi1SZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBT
ZW5kZXI+JiYgc2VuZGVyLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIGNvbnN0
IFN0cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpCi17Ci0gICAgU3RyaW5n
IHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKLSAgICBh
dXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRl
ciksIG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwg
dHJhY2tJZCkpOwotCi0gICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2Vp
dmVyTWlkKTsKLSAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKGluaXQuZGlyZWN0aW9uKTsK
LQotICAgIG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwot
ICAgIHJldHVybiB0cmFuc2NlaXZlcjsKKyAgICBhdXRvIHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJhY2spLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0
dXJuIG1fYmFja2VuZC0+YWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogfQog
CiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZlcihSVENPZmZlck9wdGlv
bnMmJiBvcHRpb25zLCBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlzZSkKQEAgLTU4
NiwyOCArNTQ2LDExIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJh
Y2tUYXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkCiAgICAgICAgIGJvb2wgaGFz
VHJhY2sgPSBwcm90ZWN0ZWRTZW5kZXItPnRyYWNrKCk7CiAgICAgICAgIHByb3RlY3RlZFNlbmRl
ci0+c2V0VHJhY2sod2l0aFRyYWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWhh
c1RyYWNrKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5ub3RpZnlBZGRl
ZFRyYWNrKHByb3RlY3RlZFNlbmRlci5nZXQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2JhY2tlbmQtPmFkZFRyYWNrKHByb3RlY3RlZFNlbmRlci5wdHIoKSwgKnByb3RlY3RlZFNl
bmRlci0+dHJhY2soKSwgeyB9KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXIm
IHNlbmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQotewotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIp
OwotCi0gICAgaWYgKCFzZW5kZXIudHJhY2soKSAmJiB3aXRoVHJhY2spIHsKLSAgICAgICAgZW5x
dWV1ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB3aXRoVHJhY2sucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShwcm9taXNlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2JhY2tl
bmQtPnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9t
aXNlKSk7Ci19Ci0KLVJUQ1J0cFBhcmFtZXRlcnMgUlRDUGVlckNvbm5lY3Rpb246OmdldFBhcmFt
ZXRlcnMoUlRDUnRwU2VuZGVyJiBzZW5kZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja2Vu
ZC0+Z2V0UGFyYW1ldGVycyhzZW5kZXIpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpk
aXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBERUJVR19MT0coTE9HSURFTlRJRklF
UiwgImRpc3BhdGNoaW5nICciLCBldmVudC50eXBlKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXgg
NDI3YmYyMjNlYjhlNDE5YzM5YjJiNWVmMTQ1ZGZhNmQxMDhkMWRlNy4uODRlYjliYzlhNTVhNWE3
MTc0YzdlMGZiMWU3ZTk0ZTdkMzE1ZDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjYsNyArNjYsNiBA
QCBzdHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IHsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rp
b24gZmluYWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPgotICAg
ICwgcHVibGljIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEKICAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKQEAgLTEwOSw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Ns
b3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvblN0YXRlID09IFJUQ1BlZXJDb25uZWN0
aW9uU3RhdGU6OkNsb3NlZDsgfQogICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0b3BwZWQ7IH0KIAorICAgIHZvaWQgYWRkSW50ZXJuYWxUcmFuc2NlaXZlcihSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpIHsgbV90cmFuc2NlaXZlclNldC0+YXBwZW5k
KFdURk1vdmUodHJhbnNjZWl2ZXIpKTsgfQorCiAgICAgLy8gNS4xIFJUQ1BlZXJDb25uZWN0aW9u
IGV4dGVuc2lvbnMKICAgICBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSVENS
dHBTZW5kZXI+PiYgZ2V0U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQt
PnNlbmRlcnMoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJU
Q1J0cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2
ZXJTZXQtPnJlY2VpdmVycygpOyB9CkBAIC0xNDQsNyArMTQ1LDYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIAotICAgIFJUQ1J0cFNlbmRl
cjo6QmFja2VuZCYgc2VuZGVyQmFja2VuZCgpIHsgcmV0dXJuICp0aGlzOyB9CiAgICAgdm9pZCBm
aXJlRXZlbnQoRXZlbnQmKTsKIAogICAgIHZvaWQgZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmlu
ZygpIHsgbV9iYWNrZW5kLT5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KQEAgLTE4
NiwxMSArMTg2LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQgdG8gYmUgdGhlIEJhY2tlbmQKLSAgICAvLyBSVENSdHBTZW5kZXI6OkJh
Y2tlbmQKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwotICAgIFJU
Q1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsK
LQogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7
CiAgICAgdm9pZCBkb1N0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggM2Q2NzMxOWM5MWJjNjNjNTc3YmI4
MjBiMGE4NzBlMjZkNzVlNDBhMC4uOGZiZTlhMjk1OTZmNmFkZDA1OTVkMjE3NWMwNjA3ZmUxYjU3
ZDZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYgdHJhY2ssIEJhY2tlbmQqIGJhY2tlbmQpCitSVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2
ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFz
ZShXVEZNb3ZlKHRyYWNrKSkKLSAgICAsIG1fYmFja2VuZChiYWNrZW5kKQorICAgICwgbV9iYWNr
ZW5kKFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCAxNGFiMDY5MzQ3MDk5ZDRj
OGYyNjFjODk2MjI5MGFiNzE3YTJiMmE5Li5kYjZiNzQ5OGI5ZTA4MzkxOWFiYjU3YWY3MWFjYjRm
YjY0ZGU1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAKICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDMxICs0MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2VuZCB7Ci0gICAgcHVibGljOgotICAgICAgICB2
aXJ0dWFsIH5CYWNrZW5kKCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFt
ZXRlcnMgZ2V0UGFyYW1ldGVycygpIHsgcmV0dXJuIHsgfTsgfQotICAgIH07Ci0KLSAgICBzdGF0
aWMgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJh
Y2ssIEJhY2tlbmQqIGJhY2tlbmQgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVf
cHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kID0gbnVsbHB0cikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVyKFdURk1vdmUodHJhY2sp
LCBiYWNrZW5kKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVy
KFdURk1vdmUodHJhY2spLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBz
dG9wKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgYSBVbmlxdWVSZWYgaGVyZS4K
LSAgICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmQ+JiYgYmFja2VuZCkg
eyBtX2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9Ci0KLSAgICBib29sIGlzRGlzcGF0Y2hl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXNwYXRjaGVkOyB9Ci0gICAgdm9pZCBzZXREaXNwYXRj
aGVkKGJvb2wgaXNEaXNwYXRjaGVkKSB7IG1faXNEaXNwYXRjaGVkID0gaXNEaXNwYXRjaGVkOyB9
CisgICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tl
bmQ+JiYgYmFja2VuZCkgeyBtX2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9CiAgICAgUlRD
UnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNr
ZW5kLT5nZXRQYXJhbWV0ZXJzKCkgOiBSVENSdHBQYXJhbWV0ZXJzKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgQmFj
a2VuZCopOworICAgIFJUQ1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKIAotICAgIGJvb2wgbV9pc0Rp
c3BhdGNoZWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kPiBtX2JhY2tl
bmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gbV9iYWNrZW5k
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjBmZWYzNGFlZjA0OTdjYzdmZjE2Mzk0ZmYyZmFjMDBhMmY1Y2UyYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBF
cmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UlRDUnRwUmVjZWl2ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9OyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNw
cAppbmRleCAxOGRjOWJkNjRkYTNiMWVhODljMmMwNmNmM2M5OWE5OWEwMmUwNzExLi42YTNkMWJj
ZDkwODg2ZTAzM2Q1MTI0ZGM5ZDRlYjRiNmRmZGZiNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC0zNSwyMyArMzUs
MjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBT
ZW5kZXI6OmNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFN0cmlu
Zz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+
IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0
b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVy
QmFja2VuZD4mJiBiYWNrZW5kKQogewotICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBS
VENSdHBTZW5kZXIoU3RyaW5nKHRyYWNrLT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRz
KSwgYmFja2VuZCkpOworICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5k
ZXIoU3RyaW5nKHRyYWNrLT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgV1RGTW92
ZShiYWNrZW5kKSkpOwogICAgIHNlbmRlci0+c2V0VHJhY2soV1RGTW92ZSh0cmFjaykpOwogICAg
IHJldHVybiBzZW5kZXI7CiB9CiAKLVJlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywg
QmFja2VuZCYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3Zl
KG1lZGlhU3RyZWFtSWRzKSwgYmFja2VuZCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJU
Q1J0cFNlbmRlcihXVEZNb3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBX
VEZNb3ZlKGJhY2tlbmQpKSk7CiB9CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmlu
ZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYg
YmFja2VuZCkKK1JUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNl
bmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgp
CiAgICAgLCBtX3RyYWNrS2luZChXVEZNb3ZlKHRyYWNrS2luZCkpCiAgICAgLCBtX21lZGlhU3Ry
ZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKQotICAgICwgbV9iYWNrZW5kKCZiYWNrZW5k
KQorICAgICwgbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDg5NThk
ZjY3OTEzMmQ0ZjhlNmYyNWQ4NGJkMGVjMTE3OTM2NzZmY2EuLjRlMWU0YjVlM2E3ZmE1ZjdkMTdj
MGRmNzM0OTZmNmVhZDIwZWYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRl
ICJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJC
YXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVi
bGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2Vu
ZCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1l
dGVycyhSVENSdHBTZW5kZXImKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQo
KSA9IGRlZmF1bHQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVh
dGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1J
ZHMsIEJhY2tlbmQmKTsKLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFN0cmlu
ZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYp
OworICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxS
VENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3Jl
YXRlKFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywg
c3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiB0cmFja0lkKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lkOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiB0cmFja0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrS2luZDsgfQpAQCAtNjUsMTIg
KzU5LDEyIEBAIHB1YmxpYzoKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsK
IAogcHJpdmF0ZToKLSAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8
U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgUlRDUnRwU2VuZGVyKFN0
cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1
bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgU3RyaW5nIG1fdHJhY2tJ
ZDsKICAgICBTdHJpbmcgbV90cmFja0tpbmQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9tZWRpYVN0
cmVhbUlkczsKLSAgICBCYWNrZW5kKiBtX2JhY2tlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJU
Q1J0cFNlbmRlckJhY2tlbmQ+IG1fYmFja2VuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2VuZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyNThhNGMzZTljZjQ5MTUzODI2NDg2ODE2
NjE3MmZmYzQwYTRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CitjbGFzcyBSVENSdHBTZW5kZXI7CisKK2NsYXNz
IFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCByZXBsYWNl
VHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdl
dFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgflJUQ1J0
cFNlbmRlckJhY2tlbmQoKSA9IGRlZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKaW5kZXggYmYxMjBkMDI5Yjk4MGMzNTI4ZmViMDQwOTVhYmEwZTky
NGE3NmFkNS4uZGUzNTkxNzlmZGUyYjRhMTk1ZWRlNjI1NTE1Y2FjNjk1ZTg0NDQyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTMyLDYgKzMyLDkg
QEAKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92
aWRlci5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIgorI2luY2x1
ZGUgIkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGls
cy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlBlcmZvcm1hbmNlLmgiCkBAIC01NiwxMSArNTksNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRh
dGEoKSwgdmFsdWUubGVuZ3RoKCkpOwotfQotCiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNv
bm5lY3Rpb24sIExpYldlYlJUQ1Byb3ZpZGVyJiBjbGllbnQpCiAgICAgOiBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKICAgICAsIG1fcGVlckNvbm5lY3Rpb25GYWN0b3J5
KCpjbGllbnQuZmFjdG9yeSgpKQpAQCAtNjQ1LDE2ICs2NDMsNiBAQCB2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNl
JikKIHsKIH0KIAotY2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJU
Q1J0cFJlY2VpdmVyOjpCYWNrZW5kIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBSVENSdHBSZWNl
aXZlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZh
Y2U+JiYgcnRjUmVjZWl2ZXIpIDogbV9ydGNSZWNlaXZlcihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkg
eyB9Ci1wcml2YXRlOgotICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIGZpbmFs
OwotCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+
IG1fcnRjUmVjZWl2ZXI7Ci19OwotCi0KIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
UmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZh
Y2U+JiYgcnRjUmVjZWl2ZXIsIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPj4mIHJ0Y1N0cmVhbXMpCiB7CiAgICAgQVNTRVJU
KHJ0Y1JlY2VpdmVyKTsKQEAgLTY4NCw3ICs2NzIsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2Vp
dgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5p
cXVlPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICBy
ZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKICAgICAKICAgICBhdXRvKiB0cmFjayA9
IHJlY2VpdmVyLT50cmFjaygpOwogICAgIEFTU0VSVCh0cmFjayk7CkBAIC05NTIsOTQgKzk0MCw2
IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
UlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1BhcmFtZXRl
cnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCi17
Ci0gICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0K
LSAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQotICAgICAgICBwYXJhbWV0ZXJzLnNzcmMgPSAq
cnRjUGFyYW1ldGVycy5zc3JjOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYykKLSAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYzsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmMpCi0gICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7Ci0gICAgICAgIHN3
aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0
dXM6OkRJU0FCTEVEOgotICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0
ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmR0
eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKLSAgICAgICAgfQotICAg
IH0KLSAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOwotICAgIGlm
IChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKLSAgICAgICAgcGFyYW1ldGVycy5tYXhC
aXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOwotICAgIGlmIChydGNQYXJh
bWV0ZXJzLm1heF9mcmFtZXJhdGUpCi0gICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVyYXRlID0g
KnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKLSAgICBwYXJhbWV0ZXJzLnJpZCA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLnNjYWxl
X3Jlc29sdXRpb25fZG93bl9ieSkKLSAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29sdXRpb25E
b3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7Ci0KLSAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGNv
bnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykK
LXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVy
cy51cmkpOwotICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOwotCi0gICAgcmV0
dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6Q29k
ZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBDb2RlY1Bh
cmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCi17Ci0gICAgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBlID0gcnRj
UGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7Ci0gICAgcGFyYW1ldGVycy5taW1lVHlwZSA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRl
cnMuY2xvY2tfcmF0ZSkKLSAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRjUGFyYW1l
dGVycy5jbG9ja19yYXRlOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVscykKLSAg
ICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVsczsK
LQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1zdGF0aWMgUlRDUnRwUGFyYW1ldGVycyBm
aWxsUnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcnRjUGFyYW1ldGVy
cykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJz
LnRyYW5zYWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25f
aWQpOwotICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5n
cykKLSAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFt
ZXRlcnMocnRjRW5jb2RpbmcpKTsKLSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFt
ZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpCi0gICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5z
aW9ucy5hcHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7Ci0g
ICAgZm9yIChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQotICAgICAgICBwYXJh
bWV0ZXJzLmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOwotCi0gICAg
c3dpdGNoIChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKLSAgICAvLyBG
SVhNRTogU3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgotICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgotICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKLSAgICAgICAgcGFy
YW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRh
dGlvblByZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgot
ICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRl
cnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoK
LSAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0
ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOwotICAgICAgICBicmVhazsKLSAg
ICB9OwotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1SVENSdHBQYXJhbWV0ZXJzIFJUQ1J0
cFJlY2VpdmVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycygpCi17Ci0gICAgcmV0dXJuIGZpbGxSdHBQ
YXJhbWV0ZXJzKG1fcnRjUmVjZWl2ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci19Ci0KIFJUQ1J0cFBh
cmFtZXRlcnMgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0UlRDUnRwU2VuZGVyUGFyYW1ldGVy
cyhSVENSdHBTZW5kZXImIHNlbmRlcikKIHsKICAgICBhdXRvIHJ0Y1NlbmRlciA9IG1fc2VuZGVy
cy5nZXQoJnNlbmRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyMmJhMTUwYzRiNDY0ZGMyOWFiZjYyMmU3OWIxOWY2
ZDhmYzMyMTdjLi5lMDdhODUzODEyYTZhYzFhNzc4NzFkYjhiNDlhOTEyOGQ1NmFmNDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJKU1JUQ1N0YXRzUmVwb3J0LmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRlICJNZWRp
YUVuZHBvaW50Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
VENJY2VDYW5kaWRhdGUuaCIKQEAgLTI3NSw3ICsyNzcsOCBAQCBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojp2aQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0
ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgc291cmNlLmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRw
VHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgidmlkZW8iLCB7IH0sIG1f
cGVlckNvbm5lY3Rpb24pLCByZWNlaXZlci5jb3B5UmVmKCkpOworICAgIGF1dG8gc2VuZGVyQmFj
a2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMs
IG51bGxwdHIpOworICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3Jl
YXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNr
ZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSk7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5k
aW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYW5zY2VpdmVyKSk7CiAKQEAgLTI5Nyw3ICszMDAsOCBAQCBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphdQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpj
cmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNy
ZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgc291cmNlLmNvcHlSZWYoKSk7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRD
UnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgiYXVkaW8iLCB7IH0s
IG1fcGVlckNvbm5lY3Rpb24pLCByZWNlaXZlci5jb3B5UmVmKCkpOworICAgIGF1dG8gc2VuZGVy
QmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOworICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6
Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJC
YWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSk7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVT
ZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihX
VEZNb3ZlKHRyYW5zY2VpdmVyKSk7CiAKQEAgLTM0OCwxMCArMzUyLDU5IEBAIFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVtb3Rl
RGVzY3JpcHRpb24oCiAgICAgcmV0dXJuIG1fZW5kcG9pbnQtPnJlbW90ZURlc2NyaXB0aW9uKCk7
CiB9CiAKLWJvb2wgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpub3RpZnlBZGRlZFRy
YWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQorRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soUlRDUnRwU2VuZGVyKiBz
ZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVk
aWFTdHJlYW1JZHMpCiB7Ci0gICAgQVNTRVJUKHNlbmRlci50cmFjaygpKTsKLSAgICByZXR1cm4g
bV9lbmRwb2ludC0+YWRkVHJhY2soc2VuZGVyLCAqc2VuZGVyLnRyYWNrKCksIHNlbmRlci5tZWRp
YVN0cmVhbUlkcygpKTsKKyAgICBpZiAoIXNlbmRlcikgeworICAgICAgICBTdHJpbmcgdHJhbnNj
ZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOworICAgICAgICBjb25z
dCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKKyAgICAgICAgU3RyaW5nIHRyYWNr
SWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICAgICAgYXV0byBzZW5kZXJC
YWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUobWFrZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwgV1RG
TW92ZShzZW5kZXJCYWNrZW5kKSk7CisgICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNl
aXZlcih0cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKTsKKyAgICAgICAgYXV0byB0
cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIp
LCBXVEZNb3ZlKHJlY2VpdmVyKSk7CisKKyAgICAgICAgLy8gVGhpcyB0cmFuc2NlaXZlciBpcyBu
b3QgeWV0IGFzc29jaWF0ZWQgd2l0aCBhbiBtLWxpbmUgKG51bGwgbWlkKSwgYnV0IHdlIG5lZWQg
YQorICAgICAgICAvLyBwcm92aXNpb25hbCBtaWQgaWYgdGhlIHRyYW5zY2VpdmVyIGlzIHVzZWQg
dG8gY3JlYXRlIGFuIG9mZmVyLgorICAgICAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxN
aWQodHJhbnNjZWl2ZXJNaWQpOworCisgICAgICAgIHNlbmRlciA9ICZ0cmFuc2NlaXZlci0+c2Vu
ZGVyKCk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkSW50ZXJuYWxUcmFuc2NlaXZlcihX
VEZNb3ZlKHRyYW5zY2VpdmVyKSk7CisgICAgfQorCisgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRU
cmFjaygqc2VuZGVyLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJfcyB9OworCisgICAgcmV0
dXJuIG1ha2VSZWYoKnNlbmRlcik7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2Nl
aXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIoY29u
c3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkK
K3sKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIG5ld1NlbmRlciA9IFJU
Q1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCBX
VEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZl
cihXVEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwg
dHJhY2tLaW5kKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0KQorewor
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUodHJhY2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNl
bmRlckJhY2tlbmQpKTsKKyAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKHNlbmRlci5nZXQo
KSwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsgfSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CisKKyAgICBy
ZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNr
LT5pZCgpLCB0cmFjay0+a2luZCgpKTsKK30KKworUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJU
Q1J0cFNlbmRlcj4mJiBzZW5kZXIsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCwg
Y29uc3QgU3RyaW5nJiB0cmFja0lkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCkKK3sKKyAgICBT
dHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwor
ICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUo
c2VuZGVyKSwgY3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJ
ZCkpOworCisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVyTWlk
KTsKKyAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKGluaXQuZGlyZWN0aW9uKTsKKworICAg
IG1fcGVlckNvbm5lY3Rpb24uYWRkSW50ZXJuYWxUcmFuc2NlaXZlcih0cmFuc2NlaXZlci5jb3B5
UmVmKCkpOworICAgIHJldHVybiB0cmFuc2NlaXZlcjsKIH0KIAogdm9pZCBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXImIHNlbmRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKaW5kZXggZmEwZjAxMzcwOTUyNTI2MTJmNGIwZWI2MTE2NDg0ZDE0ZmEzMzEwMS4uMWM1NTcy
NDc0ZGEwMjljNTYxYjk2YzdjZmEzYTFkZjE3OTI2Y2MxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBj
bGFzcyBJY2VDYW5kaWRhdGVJbnRlcmZhY2U7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZTsKIGNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZTsKIGNsYXNzIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTsKIAotY2xhc3MgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZCB7CitjbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJsaWMg
UGVlckNvbm5lY3Rpb25CYWNrZW5kLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9u
JiwgTGliV2ViUlRDUHJvdmlkZXImKTsKQEAgLTU0LDYgKzU1LDkgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzQXVkaW9Tb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1NvdXJjZXMuc2l6ZSgp
OyB9CiAgICAgYm9vbCBoYXNWaWRlb1NvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvU291
cmNlcy5zaXplKCk7IH0KIAorICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7Cisg
ICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMmJikgZmlu
YWw7CiAgICAgdm9pZCBkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpIGZpbmFsOwpA
QCAtNzQsMTMgKzc4LDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbj4gY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3Qg
ZmluYWw7CiAKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwotICAg
IFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5h
bDsKLQogICAgIHZvaWQgZW11bGF0ZVBsYXRmb3JtRXZlbnQoY29uc3QgU3RyaW5nJikgZmluYWwg
eyB9CiAgICAgdm9pZCBhcHBseVJvdGF0aW9uRm9yT3V0Z29pbmdWaWRlb1NvdXJjZXMoKSBmaW5h
bDsKIAotICAgIGZyaWVuZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworICAgIGZyaWVuZCBjbGFz
cyBMaWJXZWJSVENNZWRpYUVuZHBvaW50OworICAgIGZyaWVuZCBjbGFzcyBMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kOwogICAgIFJUQ1BlZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1
cm4gbV9wZWVyQ29ubmVjdGlvbjsgfQogICAgIHZvaWQgYWRkQXVkaW9Tb3VyY2UoUmVmPFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZT4mJik7CiAgICAgdm9pZCBhZGRWaWRlb1NvdXJjZShSZWY8
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlPiYmKTsKQEAgLTg4LDkgKzkwLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRTdGF0c1N1Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBS
ZWY8UlRDU3RhdHNSZXBvcnQ+JiYpOwogICAgIHZvaWQgZ2V0U3RhdHNGYWlsZWQoY29uc3QgRGVm
ZXJyZWRQcm9taXNlJiwgRXhjZXB0aW9uJiYpOwogCi0gICAgYm9vbCBub3RpZnlBZGRlZFRyYWNr
KFJUQ1J0cFNlbmRlciYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+
PiBhZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5k
ZXImKSBmaW5hbDsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFk
ZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5z
Y2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlcklu
aXQmKSBmaW5hbDsKKwogICAgIHN0cnVjdCBWaWRlb1JlY2VpdmVyIHsKICAgICAgICAgUmVmPFJU
Q1J0cFJlY2VpdmVyPiByZWNlaXZlcjsKICAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZT4gc291cmNlOwpAQCAtMTA1LDYgKzExMCw4IEBAIHByaXZhdGU6CiBwcml2YXRlOgog
ICAgIGJvb2wgaXNMb2NhbERlc2NyaXB0aW9uU2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0xvY2FsRGVzY3JpcHRpb25TZXQ7IH0KIAorICAgIFJlZjxSVENSdHBUcmFuc2NlaXZlcj4gY29t
cGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kKTsKKwogICAgIFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBtX2VuZHBvaW50OwogICAg
IGJvb2wgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Jl
bW90ZURlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZjRlN2NjYWZlNjMxMzNi
ODM1YjAxZGIyZDBmN2JhZWFhMDk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oIgorCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKwor
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JUQ1J0cFBhcmFtZXRlcnMgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQ
YXJhbWV0ZXJzKCkKK3sKKyAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZl
ci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhY2UyZTQyZGE2
MzFlZTk3MTJkOGFkOGVjYjY5ZDg0YjZjZWEyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMp
ICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNs
dWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBw
dXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIK
KworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaD4KKyNpbmNsdWRl
IDx3ZWJydGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBwb3AKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIpCisgICAg
ICAgIDogbV9ydGNSZWNlaXZlcihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIGZpbmFsOwor
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IG1f
cnRjUmVjZWl2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4NjNhOTQyYzhlZDMzNjk5
YjA4MTI0NmNkNjdkNjg4NmNmZWMxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlJUQ1J0cFNlbmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVy
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8g
V2ViUlRDIGJhY2tlbmQiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXNlbmRlci50cmFjaygpICYmIHRyYWNrKSB7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLT5jb25uZWN0aW9uKCkuZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB0cmFjay5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5yZXBsYWNlVHJhY2soc2VuZGVyLCBX
VEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK1JUQ1J0cFBhcmFtZXRlcnMg
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNl
bmRlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcnRjU2VuZGVyKSB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgYmFja2VuZCBhbmQgc2hvdWxk
IGRpcmVjdGx5IGhhdmUgbV9ydGNTZW5kZXIgaGVyZS4KKyAgICAgICAgaWYgKCFtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC0+Z2V0UGFyYW1ldGVycyhzZW5kZXIpOworICAgIH0KKyAg
ICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNTZW5kZXItPkdldFBhcmFtZXRlcnMoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YjljZWFmMGMyZGVhYzE3MmYwMjRmNDVkODEwMDA0NDMw
ZjRlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFj
cm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCisKKyNpbmNsdWRlIDx3ZWJydGMv
YXBpL3J0cHNlbmRlcmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKKworY2xh
c3MgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBTZW5kZXJC
YWNrZW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiYmIHJ0Y1NlbmRlcikKKyAgICAgICAgOiBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZChtYWtlV2Vha1B0cigmYmFja2VuZCkpCisgICAgICAgICwg
bV9ydGNTZW5kZXIoV1RGTW92ZShydGNTZW5kZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHNldFJUQ1NlbmRlcihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZh
Y2U+JiYgcnRjU2VuZGVyKSB7IG1fcnRjU2VuZGVyID0gV1RGTW92ZShydGNTZW5kZXIpOyB9Cisg
ICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKKyAgICBSVENSdHBQYXJh
bWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRl
ckludGVyZmFjZT4gbV9ydGNTZW5kZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mM2M2Y2M2ZDI2MmMwMTRhZjFiNTg0Nzc5MTk5MjJkZmIwZjMyMGZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJU
Q1J0cFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6
OkVuY29kaW5nUGFyYW1ldGVycyBmaWxsRW5jb2RpbmdQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6
UnRwRW5jb2RpbmdQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBhcmFt
ZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgaWYgKHJ0Y1BhcmFt
ZXRlcnMuc3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMuc3Ny
YzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5ydHggJiYgcnRjUGFyYW1ldGVycy5ydHgtPnNzcmMp
CisgICAgICAgIHBhcmFtZXRlcnMucnR4LnNzcmMgPSAqcnRjUGFyYW1ldGVycy5ydHgtPnNzcmM7
CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZmVjICYmIHJ0Y1BhcmFtZXRlcnMuZmVjLT5zc3JjKQor
ICAgICAgICBwYXJhbWV0ZXJzLmZlYy5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMuZmVjLT5zc3JjOwor
ICAgIGlmIChydGNQYXJhbWV0ZXJzLmR0eCkgeworICAgICAgICBzd2l0Y2ggKCpydGNQYXJhbWV0
ZXJzLmR0eCkgeworICAgICAgICBjYXNlIHdlYnJ0Yzo6RHR4U3RhdHVzOjpESVNBQkxFRDoKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1ldGVyczo6RHR4U3RhdHVzOjpE
aXNhYmxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHdlYnJ0Yzo6RHR4U3Rh
dHVzOjpFTkFCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0
ZXJzOjpEdHhTdGF0dXM6OkVuYWJsZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcGFyYW1ldGVy
cy5hY3RpdmUgPSBydGNQYXJhbWV0ZXJzLmFjdGl2ZTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5t
YXhfYml0cmF0ZV9icHMpCisgICAgICAgIHBhcmFtZXRlcnMubWF4Qml0cmF0ZSA9ICpydGNQYXJh
bWV0ZXJzLm1heF9iaXRyYXRlX2JwczsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5tYXhfZnJhbWVy
YXRlKQorICAgICAgICBwYXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9ICpydGNQYXJhbWV0ZXJzLm1h
eF9mcmFtZXJhdGU7CisgICAgcGFyYW1ldGVycy5yaWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFt
ZXRlcnMucmlkKTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25f
YnkpCisgICAgICAgIHBhcmFtZXRlcnMuc2NhbGVSZXNvbHV0aW9uRG93bkJ5ID0gKnJ0Y1BhcmFt
ZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5OworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7
Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9uUGFy
YW1ldGVycyBmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cEhl
YWRlckV4dGVuc2lvblBhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFy
YW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFy
YW1ldGVycy51cmkgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudXJpKTsKKyAgICBwYXJh
bWV0ZXJzLmlkID0gcnRjUGFyYW1ldGVycy5pZDsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOwor
fQorCitzdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkNvZGVjUGFyYW1ldGVycyBmaWxs
Q29kZWNQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwQ29kZWNQYXJhbWV0ZXJzJiBydGNQYXJh
bWV0ZXJzKQoreworICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkNvZGVjUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOworCisgICAgcGFyYW1ldGVycy5wYXlsb2FkVHlwZSA9IHJ0Y1BhcmFtZXRlcnMucGF5bG9h
ZF90eXBlOworICAgIHBhcmFtZXRlcnMubWltZVR5cGUgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFt
ZXRlcnMubWltZV90eXBlKCkpOworICAgIGlmIChydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGUpCisg
ICAgICAgIHBhcmFtZXRlcnMuY2xvY2tSYXRlID0gKnJ0Y1BhcmFtZXRlcnMuY2xvY2tfcmF0ZTsK
KyAgICBpZiAocnRjUGFyYW1ldGVycy5udW1fY2hhbm5lbHMpCisgICAgICAgIHBhcmFtZXRlcnMu
Y2hhbm5lbHMgPSAqcnRjUGFyYW1ldGVycy5udW1fY2hhbm5lbHM7CisKKyAgICByZXR1cm4gcGFy
YW1ldGVyczsKK30KKworUlRDUnRwUGFyYW1ldGVycyBmaWxsUnRwUGFyYW1ldGVycyhjb25zdCB3
ZWJydGM6OlJ0cFBhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy50cmFuc2FjdGlvbklkID0gZnJvbVN0
ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnRyYW5zYWN0aW9uX2lkKTsKKyAgICBmb3IgKGF1dG8mIHJ0
Y0VuY29kaW5nIDogcnRjUGFyYW1ldGVycy5lbmNvZGluZ3MpCisgICAgICAgIHBhcmFtZXRlcnMu
ZW5jb2RpbmdzLmFwcGVuZChmaWxsRW5jb2RpbmdQYXJhbWV0ZXJzKHJ0Y0VuY29kaW5nKSk7Cisg
ICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBydGNQYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25z
KQorICAgICAgICBwYXJhbWV0ZXJzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKGZpbGxIZWFkZXJF
eHRlbnNpb25QYXJhbWV0ZXJzKGV4dGVuc2lvbikpOworICAgIGZvciAoYXV0byYgY29kZWMgOiBy
dGNQYXJhbWV0ZXJzLmNvZGVjcykKKyAgICAgICAgcGFyYW1ldGVycy5jb2RlY3MuYXBwZW5kKGZp
bGxDb2RlY1BhcmFtZXRlcnMoY29kZWMpKTsKKworICAgIHN3aXRjaCAocnRjUGFyYW1ldGVycy5k
ZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSB7CisgICAgLy8gRklYTUU6IFN1cHBvcnQgRGVncmFkYXRp
b25QcmVmZXJlbmNlOjpESVNBQkxFRC4KKyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVm
ZXJlbmNlOjpESVNBQkxFRDoKKyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNl
OjpNQUlOVEFJTl9GUkFNRVJBVEU6CisgICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVm
ZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNYWludGFp
bkZyYW1lcmF0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9u
UHJlZmVyZW5jZTo6TUFJTlRBSU5fUkVTT0xVVElPTjoKKyAgICAgICAgcGFyYW1ldGVycy5kZWdy
YWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVu
Y2U6Ok1haW50YWluUmVzb2x1dGlvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3ZWJydGM6
OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QkFMQU5DRUQ6CisgICAgICAgIHBhcmFtZXRlcnMuZGVn
cmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJl
bmNlOjpCYWxhbmNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgfTsKKyAgICByZXR1cm4gcGFyYW1l
dGVyczsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJX
RUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDIxZGEwMWI2NzRk
ZjdjNGY3MGUwMTQyNjY2M2QzNDZjOWExZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApAQCAt
MCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldF
QlJUQykKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitzdHJ1Y3QgUnRwUGFyYW1ldGVyczsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUlRDUnRwUGFyYW1ldGVyczsKKworUlRDUnRw
UGFyYW1ldGVycyBmaWxsUnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMm
KTsKKworaW5saW5lIFN0cmluZyBmcm9tU3RkU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLmxl
bmd0aCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBkYzQ2MGYxYTY1NGE3NGY1ZDk1NmM5MmQ1ODJmMDdiOThlZWVmMmYzLi42
ZDRiY2IwZDU0YTllODFlODczOTZjMzRhM2E0YjJkNGMxZGM0YjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAxLDYgKzEx
MDEsOSBAQAogCQk0MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxNUMx
RDEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYy
MjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4NEY1
MTYxRUFGMDVBODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODRGNTE1MUVBRjA1OTgwMEYxOEJG
MCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4NTQzRUYyMTM4QUI0MTAwQzQxQ0MxIC8qIExpYldlYlJU
Q1V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxQzIzRkY3MjEzOEE2ODMwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi87IH07CisJ
CTQxODU0M0YxMjEzOEFCNjYwMEM0MUNDMSAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDMjNG
RjUyMTM4QTY4MTAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgKi87
IH07CisJCTQxODU0M0YyMjEzOEFCOEEwMEM0MUNDMSAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
QzIzRkYxMjEzOEE2N0UwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAq
LzsgfTsKIAkJNDE4ODVCOTMxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4NUI5MTExQjZG
REE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MThBMDZEMDEzM0MwNEQ1MDBDRDM3OUMgLyogRXZl
bnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MThBMDZDRTEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggKi87IH07
CiAJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThGODgwMzBGRjk1N0FF
MDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oICovOyB9OwpAQCAtNzMyMiw2ICs3MzI1LDE0
IEBACiAJCTQxQjJBNjI1MUVGMUJGNjAwMDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFCNDU5REExRjRDQURCOTAwMDBGNkZEIC8qIFJlYWRhYmxlU3Ry
ZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjQ1OUVEMUY1NUVCQzcwMDAwRjZGRCAv
KiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIz
RkYxMjEzOEE2N0UwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGMzIxMzhBNjgwMDBDNURGMjcgLyog
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMy
M0ZGNDIxMzhBNjgwMDBDNURGMjcgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNTIxMzhBNjgxMDBDNURGMjcgLyogTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJy
dGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFDMjNGRjYyMTM4QTY4MjAwQzVERjI3IC8qIExpYldlYlJUQ1V0aWxzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBs
aWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFDMjNGRjcyMTM4QTY4MzAwQzVERjI3IC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmNwcDsgcGF0aCA9IGxp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxQzIzRkY4MjEzOEE2OTIwMEM1REYyNyAvKiBSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjkyMTM4QTY5MzAwQzVERjI3IC8qIFJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENS
dHBSZWNlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDNzYw
QjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQzdFMTA1MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdF
MTA2MUU2QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxMTYsOSArMTUxMjcsMTEg
QEAKIAkJCQk1RTJDNDM1NjFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwUmVjZWl2ZXIuY3BwICov
LAogCQkJCTVFMkM0MzU3MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5oICovLAog
CQkJCTVFMkM0MzU4MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5pZGwgKi8sCisJ
CQkJNDFDMjNGRjkyMTM4QTY5MzAwQzVERjI3IC8qIFJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oICov
LAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuY3BwICovLAog
CQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaCAqLywKIAkJCQk1
RTJDNDM1QjFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmlkbCAqLywKKwkJCQk0MUMy
M0ZGODIxMzhBNjkyMDBDNURGMjcgLyogUlRDUnRwU2VuZGVyQmFja2VuZC5oICovLAogCQkJCTVF
MkM0MzVEMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCAqLywK
IAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICov
LAogCQkJCTVFNUUyQjExMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oICov
LApAQCAtMTY4MzIsNiArMTY4NDUsMTIgQEAKIAkJCQk0MTc2MTJBQzFFM0E5OTNCMDBDM0Q4MUQg
LyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovLAogCQkJCTQxNzYxMkFEMUUzQTk5M0IwMEMz
RDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwICovLAogCQkJCTQxNzYx
MkFFMUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCAq
LywKKwkJCQk0MUMyM0ZGNTIxMzhBNjgxMDBDNURGMjcgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kLmNwcCAqLywKKwkJCQk0MUMyM0ZGNDIxMzhBNjgwMDBDNURGMjcgLyogTGliV2ViUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8sCisJCQkJNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8q
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwICovLAorCQkJCTQxQzIzRkYzMjEzOEE2ODAw
MEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8sCisJCQkJNDFDMjNGRjcy
MTM4QTY4MzAwQzVERjI3IC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLywKKwkJCQk0MUMyM0ZGNjIx
MzhBNjgyMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0g
bGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNDE1LDYgKzMxNDM0
LDkgQEAKIAkJCQk1Q0REODM2NDFFNDMyNUEwMDA2MjFFOTIgLyogTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNzYxMkFGMUUzQTk5NDAwMEMzRDgx
RCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNzYx
MkIxMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDE4NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTg1NDNGMjIxMzhB
QjhBMDBDNDFDQzEgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0MTg1NDNFRjIxMzhBQjQxMDBDNDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4
dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NTc3NUVBMjA0NzMwM0MwMDhEQ0U1RCAv
KiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFC
RTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348590</attachid>
            <date>2018-08-30 21:11:25 -0700</date>
            <delta_ts>2018-08-30 21:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830211124.patch</filename>
            <type>text/plain</type>
            <size>65908</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGZlZjk5NzYzMmE2OGM0MTBhZjA5OGYwMWViMmM1OGNkZmNkYWI1OGMuLmJmMDY2MTE1
M2FhMjQyYzRkNWY1OGY4ZjFhZDEzNzNmNmZiMjhlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xNTYzLDYgKzE1NjMsOSBAQCBpZiAoVVNFX0xJQldFQlJUQykKICAgICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKICAgICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCiAgICAgICApCiBlbmRpZiAoKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjg3MzRiMjAzZjJjY2M1M2ZkMTZmNGE5Njc4
ZTg2NTdhYmZiYmRmMy4uMzMzMTEzZjIwZTNjNjU3YjQzM2IxNTlhNjdlMWFmNDI4NGYxYzcwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNTMwLDYgKzUzMCwyMSBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbi5zY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
Y2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1w
bGVtZW50ZWQiX3MgfTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4g
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBSVENSdHBUcmFuc2NlaXZlckluaXQmKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2Vp
dmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQm
KQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBs
ZW1lbnRlZCJfcyB9OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFu
bmVsJiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKaW5kZXggZjhhOTc2YjdhNThmNWM1MTBiNzlkMDk3OWY4YWE1N2E4ZGQwZTQz
ZS4uOTVlMGY5OTMyY2FlMGU1YWY0ZjdiMjk0ZTM4ZGQ0MTk1MDY0ZmM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNz
IFJUQ1BlZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBT
ZW5kZXI7CitjbGFzcyBSVENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVwb3J0OwogCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBN
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbjsKIHN0cnVjdCBSVENBbnN3ZXJPcHRpb25zOwogc3Ry
dWN0IFJUQ0RhdGFDaGFubmVsSW5pdDsKIHN0cnVjdCBSVENPZmZlck9wdGlvbnM7CitzdHJ1Y3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0OwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewogdXNp
bmcgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExEaWN0
aW9uYXJ5PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6SW5pdD4+OwpAQCAtOTksMTEgKzEwMSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBSZWNl
aXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhSVENSdHBTZW5k
ZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCi0gICAgdmly
dHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Qg
eyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2Nl
aXZlckluaXQmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IGFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBU
cmFuc2NlaXZlckluaXQmKTsKIAogICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7
CiAgICAgYm9vbCBpc05lZ290aWF0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZWdvdGlh
dGlvbk5lZWRlZDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTA0ZjgxZTFmYjEyNzI3Y2ZmYmQ1
MDg5MThiMjNjNzYwYTIyYmFlZi4uMzFlNjllMjE2YjQ5ZTQ0NDQzZDIyYjJiNGM0MWNhMThhZWNl
ZWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPgogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0
LT5saXN0KCkpIHsKICAgICAgICAgYXV0byYgZXhpc3RpbmdTZW5kZXIgPSB0cmFuc2NlaXZlci0+
c2VuZGVyKCk7CiAgICAgICAgIGlmIChleGlzdGluZ1NlbmRlci50cmFja0tpbmQoKSA9PSB0cmFj
ay0+a2luZCgpICYmIGV4aXN0aW5nU2VuZGVyLnRyYWNrSWQoKS5pc051bGwoKSAmJiAhdHJhbnNj
ZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgZXhpc3RpbmdTZW5k
ZXIuc2V0VHJhY2soV1RGTW92ZSh0cmFjaykpOworICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIu
c2V0VHJhY2sodHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNl
dE1lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKICAgICAgICAgICAgIHRy
YW5zY2VpdmVyLT5lbmFibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBzZW5kZXIg
PSAmZXhpc3RpbmdTZW5kZXI7CkBAIC0xMzcsMjcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFt
VHJhY2s+CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXNlbmRlcikgewotICAgICAgICBT
dHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwot
ICAgICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAg
IFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAgICAg
IGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCAqdGhpcyk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBt
X2JhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNr
SWQpOwotICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0
ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKLQotICAgICAgICAvLyBU
aGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVs
bCBtaWQpLCBidXQgd2UgbmVlZCBhCi0gICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUg
dHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCi0gICAgICAgIHRyYW5zY2Vp
dmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7Ci0KLSAgICAgICAgc2VuZGVy
ID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKLSAgICAgICAgbV90cmFuc2NlaXZlclNldC0+YXBw
ZW5kKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2VuZC0+
bm90aWZ5QWRkZWRUcmFjaygqc2VuZGVyKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKLQotICAgIHJldHVy
biBSZWY8UlRDUnRwU2VuZGVyPiB7ICpzZW5kZXIgfTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5h
ZGRUcmFjayhzZW5kZXIsIHRyYWNrLmdldCgpLCBtZWRpYVN0cmVhbUlkcyk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXIm
IHNlbmRlcikKQEAgLTE5MiwzMSArMTcyLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFu
c2NlaXZlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRUcmFuc2NlCiAg
ICAgICAgIGlmIChraW5kICE9ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gc2VuZGVy
ID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKGtpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCAq
dGhpcyk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2Vu
ZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBraW5kKTsKKyAgICAgICAg
cmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhbnNjZWl2ZXIoa2luZCwgaW5pdCk7CiAgICAgfQogCi0g
ICAgUmVmPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+Pih3aXRoVHJhY2spLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgY29uc3QgU3RyaW5n
JiB0cmFja0lkID0gdHJhY2stPmlkKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0
cmFjay0+a2luZCgpOwotCi0gICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShX
VEZNb3ZlKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgIGlmICghbV9iYWNr
ZW5kLT5ub3RpZnlBZGRlZFRyYWNrKHNlbmRlcikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07Ci0KLSAgICBy
ZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNr
SWQsIHRyYWNrS2luZCk7Ci19Ci0KLVJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5l
Y3Rpb246OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIs
IGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCwgY29uc3QgU3RyaW5nJiB0cmFja0lk
LCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCkKLXsKLSAgICBTdHJpbmcgdHJhbnNjZWl2ZXJNaWQg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgbV9iYWNrZW5kLT5j
cmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7Ci0KLSAg
ICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotICAgIHRy
YW5zY2VpdmVyLT5zZXREaXJlY3Rpb24oaW5pdC5kaXJlY3Rpb24pOwotCi0gICAgbV90cmFuc2Nl
aXZlclNldC0+YXBwZW5kKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHRyYW5z
Y2VpdmVyOworICAgIGF1dG8gdHJhY2sgPSBXVEY6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+KHdpdGhUcmFjaykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5h
ZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKIHZvaWQgUlRDUGVlckNv
bm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMsIFNl
c3Npb25EZXNjcmlwdGlvblByb21pc2UmJiBwcm9taXNlKQpAQCAtNTg2LDI4ICs1NDYsMTEgQEAg
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2Vu
ZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWQKICAgICAgICAgYm9vbCBoYXNUcmFjayA9IHByb3RlY3Rl
ZFNlbmRlci0+dHJhY2soKTsKICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFjayh3aXRo
VHJhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghaGFzVHJhY2spCi0gICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2socHJvdGVjdGVk
U2VuZGVyLmdldCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+YWRk
VHJhY2socHJvdGVjdGVkU2VuZGVyLnB0cigpLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpLCB7
IH0pOwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KIAotdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCi17Ci0gICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIXNl
bmRlci50cmFjaygpICYmIHdpdGhUcmFjaykgewotICAgICAgICBlbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayhzZW5kZXIsIHdpdGhUcmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2Up
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+cmVwbGFjZVRyYWNr
KHNlbmRlciwgV1RGTW92ZSh3aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotUlRD
UnRwUGFyYW1ldGVycyBSVENQZWVyQ29ubmVjdGlvbjo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5k
ZXImIHNlbmRlcikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJz
KHNlbmRlcik7Ci19Ci0KIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZl
bnQmIGV2ZW50KQogewogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcg
JyIsIGV2ZW50LnR5cGUoKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCA0MjdiZjIyM2ViOGU0MTlj
MzliMmI1ZWYxNDVkZmE2ZDEwOGQxZGU3Li44NGViOWJjOWE1NWE1YTcxNzRjN2UwZmIxZTdlOTRl
N2QzMTVkMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC02Niw3ICs2Niw2IEBAIHN0cnVjdCBSVENSdHBU
cmFuc2NlaXZlckluaXQgewogCiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbAogICAgIDog
cHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+Ci0gICAgLCBwdWJsaWMgUlRDUnRw
U2VuZGVyOjpCYWNrZW5kCiAgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQog
ICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApA
QCAtMTA5LDYgKzEwOCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uU3RhdGUgPT0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2Vk
OyB9CiAgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQog
CisgICAgdm9pZCBhZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4m
JiB0cmFuc2NlaXZlcikgeyBtX3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2Nl
aXZlcikpOyB9CisKICAgICAvLyA1LjEgUlRDUGVlckNvbm5lY3Rpb24gZXh0ZW5zaW9ucwogICAg
IGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNlbmRlcj4+JiBnZXRT
ZW5kZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+c2VuZGVycygpOyB9CiAg
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwUmVjZWl2ZXI+PiYg
Z2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+cmVjZWl2ZXJz
KCk7IH0KQEAgLTE0NCw3ICsxNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTmVn
b3RpYXRpb25OZWVkZWRFdmVudCgpOwogCi0gICAgUlRDUnRwU2VuZGVyOjpCYWNrZW5kJiBzZW5k
ZXJCYWNrZW5kKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB2b2lkIGZpcmVFdmVudChFdmVudCYp
OwogCiAgICAgdm9pZCBkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQt
PmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsgfQpAQCAtMTg2LDExICsxODYsNiBAQCBw
cml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKIAotICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0
byBiZSB0aGUgQmFja2VuZAotICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQg
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCB1cGRh
dGVDb25uZWN0aW9uU3RhdGUoKTsKICAgICBib29sIGRvQ2xvc2UoKTsKICAgICB2b2lkIGRvU3Rv
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcAppbmRleCAzZDY3MzE5YzkxYmM2M2M1NzdiYjgyMGIwYTg3MGUyNmQ3NWU0
MGEwLi44ZmJlOWEyOTU5NmY2YWRkMDU5NWQyMTc1YzA2MDdmZTFiNTdkNmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNw
cApAQCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJlY2Vp
dmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2Vu
ZCogYmFja2VuZCkKK1JUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4m
JiBiYWNrZW5kKQogICAgIDogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURk1vdmUodHJhY2sp
KQotICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNr
ZW5kKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5oCmluZGV4IDE0YWIwNjkzNDcwOTlkNGM4ZjI2MWM4OTYyMjkwYWI3
MTdhMmIyYTkuLmRiNmI3NDk4YjllMDgzOTE5YWJiNTdhZjcxYWNiNGZiNjRkZTVmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlJU
Q1J0cFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNp
bmNsdWRlICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDAsMzEgKzQxLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRw
UmVjZWl2ZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAg
ICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQo
KSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0
ZXJzKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFj
a2VuZCA9IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPiYmIGJhY2tlbmQgPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGJhY2tlbmQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayks
IFdURk1vdmUoYmFja2VuZCkpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIFVuaXF1ZVJlZiBoZXJlLgotICAgIHZvaWQgc2V0QmFj
a2VuZChzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdU
Rk1vdmUoYmFja2VuZCk7IH0KLQotICAgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Rpc3BhdGNoZWQ7IH0KLSAgICB2b2lkIHNldERpc3BhdGNoZWQoYm9vbCBpc0Rpc3Bh
dGNoZWQpIHsgbV9pc0Rpc3BhdGNoZWQgPSBpc0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKSB7
IG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7IH0KICAgICBSVENSdHBQYXJhbWV0ZXJzIGdl
dFBhcmFtZXRlcnMoKSB7IHJldHVybiBtX2JhY2tlbmQgPyBtX2JhY2tlbmQtPmdldFBhcmFtZXRl
cnMoKSA6IFJUQ1J0cFBhcmFtZXRlcnMoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJU
Q1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBCYWNrZW5kKik7CisgICAgUlRD
UnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENS
dHBSZWNlaXZlckJhY2tlbmQ+JiYpOwogCi0gICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7IGZhbHNl
IH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlZjM0YWVm
MDQ5N2NjN2ZmMTYzOTRmZjJmYWMwMGEyZjVjZTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENS
dHBSZWNlaXZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJldHVybiB7IH07IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE4ZGM5YmQ2
NGRhM2IxZWE4OWMyYzA2Y2YzYzk5YTk5YTAyZTA3MTEuLjZhM2QxYmNkOTA4ODZlMDMzZDUxMjRk
YzlkNGViNGI2ZGZkZmI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVk
aWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tl
bmQpCiB7Ci0gICAgYXV0byBzZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJp
bmcodHJhY2stPmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7Cisg
ICAgYXV0byBzZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2st
PmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAg
ICAgc2VuZGVyLT5zZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsK
IH0KIAotUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5k
KQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tL
aW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
UnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNlbmRlcihXVEZNb3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBiYWNrZW5kKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1v
dmUodHJhY2tLaW5kKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkp
KTsKIH0KIAotUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUlRDUnRw
U2VuZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBi
YWNrZW5kKQogICAgIDogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKICAgICAsIG1fdHJhY2tL
aW5kKFdURk1vdmUodHJhY2tLaW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92ZSht
ZWRpYVN0cmVhbUlkcykpCi0gICAgLCBtX2JhY2tlbmQoJmJhY2tlbmQpCisgICAgLCBtX2JhY2tl
bmQoV1RGTW92ZShiYWNrZW5kKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggODk1OGRmNjc5MTMyZDRmOGU2ZjI1
ZDg0YmQwZWMxMTc5MzY3NmZjYS4uNGUxZTRiNWUzYTdmYTVmN2QxN2MwZGY3MzQ5NmY2ZWFkMjBl
ZjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5oCkBAIC0zMywyMSArMzMsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2lu
Y2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJh
Y2tlbmQuaCIKICNpbmNsdWRlICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVy
UmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRl
ciYpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwot
ICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgc3RhdGljIFJl
ZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0
cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tl
bmQ+JiYpOworICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBj
b25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tLaW5kOyB9CkBAIC02NSwxMiArNTksMTIgQEAgcHVibGlj
OgogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCiBwcml2YXRlOgotICAg
IFJUQ1J0cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFT
dHJlYW1JZHMsIEJhY2tlbmQmKTsKKyAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5k
LCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
U2VuZGVyQmFja2VuZD4mJik7CiAKICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBt
X3RyYWNrS2luZDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwotICAgIEJh
Y2tlbmQqIG1fYmFja2VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2Vu
ZD4gbV9iYWNrZW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZDI1OGE0YzNlOWNmNDkxNTM4MjY0ODY4MTY2MTcyZmZjNDBhNGQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJS
VENSdHBQYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFT
dHJlYW1UcmFjazsKK2NsYXNzIFJUQ1J0cFNlbmRlcjsKKworY2xhc3MgUlRDUnRwU2VuZGVyQmFj
a2VuZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5k
ZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENS
dHBTZW5kZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyQmFja2VuZCgp
ID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAppbmRleCBiZjEyMGQwMjliOTgwYzM1MjhmZWIwNDA5NWFiYTBlOTI0YTc2YWQ1Li5kZTM1OTE3
OWZkZTJiNGExOTVlZGU2MjU1MTVjYWM2OTVlODQ0NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkxp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9y
bWFuY2UuaCIKQEAgLTU2LDExICs1OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5n
dGgoKSk7Ci19Ci0KIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9p
bnQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2Vi
UlRDUHJvdmlkZXImIGNsaWVudCkKICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJD
b25uZWN0aW9uKQogICAgICwgbV9wZWVyQ29ubmVjdGlvbkZhY3RvcnkoKmNsaWVudC5mYWN0b3J5
KCkpCkBAIC02NDUsMTYgKzY0Myw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
UmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKQogewogfQogCi1jbGFz
cyBSVENSdHBSZWNlaXZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXI6OkJh
Y2tlbmQgewotcHVibGljOgotICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZl
cikgOiBtX3J0Y1JlY2VpdmVyKFdURk1vdmUocnRjUmVjZWl2ZXIpKSB7IH0KLXByaXZhdGU6Ci0g
ICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7Ci0KLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsK
LX07Ci0KLQogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZl
ciwgY29uc3Qgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2U+PiYgcnRjU3RyZWFtcykKIHsKICAgICBBU1NFUlQocnRjUmVjZWl2ZXIpOwpA
QCAtNjg0LDcgKzY3Miw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3Rl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0K
IAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8UlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNr
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1JlY2VpdmVyKSkpOwogICAgIAogICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNr
KCk7CiAgICAgQVNTRVJUKHRyYWNrKTsKQEAgLTk1Miw5NCArOTQwLDYgQEAgdm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qg
c3RkOjpzdHJpbmcKICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJz
OjpFbmNvZGluZ1BhcmFtZXRlcnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6
OlJ0cEVuY29kaW5nUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJh
bWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmIChydGNQYXJh
bWV0ZXJzLnNzcmMpCi0gICAgICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNz
cmM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
KQotICAgICAgICBwYXJhbWV0ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
OwotICAgIGlmIChydGNQYXJhbWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykK
LSAgICAgICAgcGFyYW1ldGVycy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsK
LSAgICBpZiAocnRjUGFyYW1ldGVycy5kdHgpIHsKLSAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1l
dGVycy5kdHgpIHsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6
RGlzYWJsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0
YXR1czo6RU5BQkxFRDoKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1l
dGVyczo6RHR4U3RhdHVzOjpFbmFibGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHBhcmFtZXRl
cnMuYWN0aXZlID0gcnRjUGFyYW1ldGVycy5hY3RpdmU7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMu
bWF4X2JpdHJhdGVfYnBzKQotICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFy
YW1ldGVycy5tYXhfYml0cmF0ZV9icHM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1l
cmF0ZSkKLSAgICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5t
YXhfZnJhbWVyYXRlOwotICAgIHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLnJpZCk7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3du
X2J5KQotICAgICAgICBwYXJhbWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJh
bWV0ZXJzLnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieTsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJz
OwotfQotCi1zdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBh
cmFtZXRlcnMgZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBh
cmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBh
cmFtZXRlcnMudXJpID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7Ci0gICAgcGFy
YW1ldGVycy5pZCA9IHJ0Y1BhcmFtZXRlcnMuaWQ7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsK
LX0KLQotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmls
bENvZGVjUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFy
YW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLQotICAgIHBhcmFtZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxv
YWRfdHlwZTsKLSAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLm1pbWVfdHlwZSgpKTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQot
ICAgICAgICBwYXJhbWV0ZXJzLmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7
Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzKQotICAgICAgICBwYXJhbWV0ZXJz
LmNoYW5uZWxzID0gKnJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzOwotCi0gICAgcmV0dXJuIHBh
cmFtZXRlcnM7Ci19Ci0KLXN0YXRpYyBSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJz
KGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0
cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7Ci0gICAgZm9yIChh
dXRvJiBydGNFbmNvZGluZyA6IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQotICAgICAgICBwYXJh
bWV0ZXJzLmVuY29kaW5ncy5hcHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGlu
ZykpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucykKLSAgICAgICAgcGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxs
SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyhleHRlbnNpb24pKTsKLSAgICBmb3IgKGF1dG8mIGNv
ZGVjIDogcnRjUGFyYW1ldGVycy5jb2RlY3MpCi0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFw
cGVuZChmaWxsQ29kZWNQYXJhbWV0ZXJzKGNvZGVjKSk7Ci0KLSAgICBzd2l0Y2ggKHJ0Y1BhcmFt
ZXRlcnMuZGVncmFkYXRpb25fcHJlZmVyZW5jZSkgewotICAgIC8vIEZJWE1FOiBTdXBwb3J0IERl
Z3JhZGF0aW9uUHJlZmVyZW5jZTo6RElTQUJMRUQuCi0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0
aW9uUHJlZmVyZW5jZTo6RElTQUJMRUQ6Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZTo6TUFJTlRBSU5fRlJBTUVSQVRFOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0
aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6
TWFpbnRhaW5GcmFtZXJhdGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdy
YWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX1JFU09MVVRJT046Ci0gICAgICAgIHBhcmFtZXRl
cnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25Q
cmVmZXJlbmNlOjpNYWludGFpblJlc29sdXRpb247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJBTEFOQ0VEOgotICAgICAgICBwYXJhbWV0
ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9u
UHJlZmVyZW5jZTo6QmFsYW5jZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgcmV0dXJu
IHBhcmFtZXRlcnM7Ci19Ci0KLVJUQ1J0cFBhcmFtZXRlcnMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
OjpnZXRQYXJhbWV0ZXJzKCkKLXsKLSAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNS
ZWNlaXZlci0+R2V0UGFyYW1ldGVycygpKTsKLX0KLQogUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpnZXRSVENSdHBTZW5kZXJQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYg
c2VuZGVyKQogewogICAgIGF1dG8gcnRjU2VuZGVyID0gbV9zZW5kZXJzLmdldCgmc2VuZGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCmluZGV4IDIyYmExNTBjNGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLmUwN2E4
NTM4MTJhNmFjMWE3Nzg3MWRiOGI0OWE5MTI4ZDU2YWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIkpTUlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1
cmF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5o
IgpAQCAtMjc1LDcgKzI3Nyw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Vmlk
ZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBz
b3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZN
b3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3Vy
Y2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29w
eVJlZigpKTsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3Jl
YXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiks
IHJlY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVy
OjpjcmVhdGUoInZpZGVvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIu
Y29weVJlZigpKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsK
ICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIp
KTsKIApAQCAtMjk3LDcgKzMwMCw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0
byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBX
VEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JT
b3VyY2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2Uu
Y29weVJlZigpKTsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6
Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlv
biksIHJlY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUoImF1ZGlvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2
ZXIuY29weVJlZigpKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24o
KTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2
ZXIpKTsKIApAQCAtMzQ4LDEwICszNTIsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAg
ICByZXR1cm4gbV9lbmRwb2ludC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsK
LSAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRU
cmFjayhzZW5kZXIsICpzZW5kZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOwor
ICAgIGlmICghc2VuZGVyKSB7CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0
cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kID0gdHJhY2sua2luZCgpOworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKTsKKworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAg
ICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNr
KSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKTsKKyAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVy
TWlkLCB0cmFja0tpbmQsIHRyYWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRD
UnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2
ZXIpKTsKKworICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRl
ZCB3aXRoIGFuIG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHBy
b3Zpc2lvbmFsIG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2Zm
ZXIuCisgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1p
ZCk7CisKKyAgICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAg
bV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2
ZXIpKTsKKyAgICB9CisKKyAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRy
YWNrLCBtZWRpYVN0cmVhbUlkcykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2Vu
ZGVyKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2Vu
ZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUoU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFj
a2VuZCkpOworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2Vu
ZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQor
CitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJC
YWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFj
ay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwor
ICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9y
PFN0cmluZz4geyB9KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFk
ZFRyYW5zY2VpdmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5r
aW5kKCkpOworfQorCitSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNl
bmRlciwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRy
YWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZl
ck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2Nl
aXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVS
ZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFu
c2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2Vp
dmVyLT5zZXREaXJlY3Rpb24oaW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlv
bi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0
dXJuIHRyYW5zY2VpdmVyOwogfQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEz
NzA5NTI1MjYxMmY0YjBlYjYxMTY0ODRkMTRmYTMzMTAxLi4xYzU1NzI0NzRkYTAyOWM1NjFiOTZj
N2NmYTNhMWRmMTc5MjZjYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0
ZUludGVyZmFjZTsKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92
aWRlciYpOwpAQCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJj
ZXMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhh
c1ZpZGVvU291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQog
CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
dm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRv
Q3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwxMyArNzgsMTEg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVy
cyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBl
bXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFw
cGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5k
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAg
ICAgUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0
aW9uOyB9CiAgICAgdm9pZCBhZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlPiYmKTsKICAgICB2b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U+JiYpOwpAQCAtODgsOSArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFN0YXRzU3VjY2VlZGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9y
dD4mJik7CiAgICAgdm9pZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBF
eGNlcHRpb24mJik7CiAKLSAgICBib29sIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJUQ1J0
cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCisg
ICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworCiAg
ICAgc3RydWN0IFZpZGVvUmVjZWl2ZXIgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJl
Y2VpdmVyOwogICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7
CkBAIC0xMDUsNiArMTEwLDggQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBpc0xvY2Fs
RGVzY3JpcHRpb25TZXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9jYWxEZXNjcmlwdGlv
blNldDsgfQogCisgICAgUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2Vp
dmVyKFJlZjxSVENSdHBTZW5kZXI+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYsIGNv
bnN0IFN0cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpOworCiAgICAgUmVm
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxE
ZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25T
ZXQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmNGU3Y2NhZmU2MzEzM2I4MzViMDFkYjJkMGY3YmFl
YWEwOTQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmgiCisKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9S
VEMpICYmIFVTRShMSUJXRUJSVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwUGFy
YW1ldGVycyBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQorewor
ICAgIHJldHVybiBmaWxsUnRwUGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJz
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FjZTJlNDJkYTYzMWVlOTcxMmQ4YWQ4ZWNi
NjlkODRiNmNlYTJiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2Vi
cnRjL2FwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFz
ZS9zY29wZWRfcmVmX3B0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5h
bCA6IHB1YmxpYyBSVENSdHBSZWNlaXZlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0
IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlcikKKyAgICAgICAgOiBtX3J0Y1JlY2Vp
dmVyKFdURk1vdmUocnRjUmVjZWl2ZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7CisKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAm
JiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjg2M2E5NDJjOGVkMzM2OTliMDgxMjQ2Y2Q2N2Q2ODg2
Y2ZlYzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5o
IgorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGls
cy5oIgorI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwU2Vu
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
eworICAgIGlmICghbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQpIHsKKyAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBXZWJSVEMgYmFja2VuZCJf
cyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2VuZGVyLnRyYWNrKCkg
JiYgdHJhY2spIHsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmNvbm5lY3Rpb24o
KS5lbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIHRyYWNrLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQtPnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUodHJhY2spLCBX
VEZNb3ZlKHByb21pc2UpKTsKK30KKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAorewor
ICAgIGlmICghbV9ydGNTZW5kZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
bmVlZCB0byBnbyB0aHJvdWdoIHRoZSBiYWNrZW5kIGFuZCBzaG91bGQgZGlyZWN0bHkgaGF2ZSBt
X3J0Y1NlbmRlciBoZXJlLgorICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRlcik7CisgICAgfQorICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJS
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjliOWNlYWYwYzJkZWFjMTcyZjAyNGY0NWQ4MTAwMDQ0MzBmNGU3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRl
ICJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW51c2VkLXBhcmFtZXRlciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50
ZXJmYWNlLmg+CisjaW5jbHVkZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOworCitjbGFzcyBMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBT
ZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVyKQorICAgICAgICA6IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kKG1ha2VXZWFrUHRyKCZiYWNrZW5kKSkKKyAgICAgICAgLCBtX3J0Y1NlbmRlcihXVEZN
b3ZlKHJ0Y1NlbmRlcikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIp
IHsgbV9ydGNTZW5kZXIgPSBXVEZNb3ZlKHJ0Y1NlbmRlcik7IH0KKyAgICB2b2lkIHJlcGxhY2VU
cmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOworICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1l
dGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRy
PExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiBtX3J0
Y1NlbmRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlODU0
MTE1ODk1MmE4NjkyMjNkZGM3NTI1MzI2MTQ3MTgxOTc4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGls
cy5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisj
aW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUg
UlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1BhcmFtZXRl
cnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7
CisgICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisK
KyAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLnNzcmMgPSAq
cnRjUGFyYW1ldGVycy5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIHN3
aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0
dXM6OkRJU0FCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0
ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmR0
eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOworICAgIGlm
IChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKKyAgICAgICAgcGFyYW1ldGVycy5tYXhC
aXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOworICAgIGlmIChydGNQYXJh
bWV0ZXJzLm1heF9mcmFtZXJhdGUpCisgICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVyYXRlID0g
KnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnNjYWxl
X3Jlc29sdXRpb25fZG93bl9ieSkKKyAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29sdXRpb25E
b3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7CisKKyAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKK30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGNv
bnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykK
K3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVy
cy51cmkpOworICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOworCisgICAgcmV0
dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6Q29k
ZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBDb2RlY1Bh
cmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBlID0gcnRj
UGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7CisgICAgcGFyYW1ldGVycy5taW1lVHlwZSA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7CisgICAgaWYgKHJ0Y1BhcmFtZXRl
cnMuY2xvY2tfcmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRjUGFyYW1l
dGVycy5jbG9ja19yYXRlOworICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVscykKKyAg
ICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVsczsK
KworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQ
YXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKK3sK
KyAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnRyYW5z
YWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25faWQpOwor
ICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5ncykKKyAg
ICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMo
cnRjRW5jb2RpbmcpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFtZXRlcnMu
aGVhZGVyX2V4dGVuc2lvbnMpCisgICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7CisgICAgZm9y
IChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQorICAgICAgICBwYXJhbWV0ZXJz
LmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOworCisgICAgc3dpdGNo
IChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgorICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgorICAgIGNhc2Ugd2VicnRjOjpEZWdy
YWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKKyAgICAgICAgcGFyYW1ldGVy
cy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblBy
ZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHdl
YnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgorICAgICAg
ICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRl
Z3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoKKyAgICAg
ICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpE
ZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOworICAgICAgICBicmVhazsKKyAgICB9Owor
ICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0MjFkYTAxYjY3NGRmN2M0ZjcwZTAxNDI2NjYzZDM0NmM5YTFmZjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVjdCBSdHBQ
YXJhbWV0ZXJzOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENSdHBQYXJh
bWV0ZXJzOworCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0
Yzo6UnRwUGFyYW1ldGVycyYpOworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qg
c3RkOjpzdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVl
LmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRjNDYwZjFhNjU0YTc0ZjVkOTU2YzkyZDU4
MmYwN2I5OGVlZWYyZjMuLjZkNGJjYjBkNTRhOWU4MWU4NzM5NmMzNGEzYTRiMmQ0YzFkYzRiM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExMDEsNiArMTEwMSw5IEBACiAJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBX
ZWJDb3JlVGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTgy
MDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8q
IFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0MTg0RjUxNjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NEY1
MTUxRUFGMDU5ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg1NDNFRjIxMzhBQjQxMDBD
NDFDQzEgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFDMjNGRjcyMTM4QTY4MzAwQzVERjI3IC8qIExpYldlYlJUQ1V0
aWxzLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjEyMTM4QUI2NjAwQzQxQ0MxIC8qIExpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUMyM0ZGNTIxMzhBNjgxMDBDNURGMjcgLyogTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE4NTQzRjIyMTM4QUI4QTAwQzQxQ0MxIC8qIExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQuY3BwICovOyB9OwogCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIgLyogRm9y
bVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxOEEwNkQwMTMzQzA0
RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERp
c3BhdGNoZXIuaCAqLzsgfTsKIAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87IH07CkBA
IC03MzIyLDYgKzczMjUsMTQgQEAKIAkJNDFCMkE2MjUxRUYxQkY2MDAwMkI5RDdBIC8qIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI0NTlEQTFGNENBREI5MDAwMEY2
RkQgLyogUmVhZGFibGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCNDU5RUQx
RjU1RUJDNzAwMDBGNkZEIC8qIFJlYWRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFDMjNGRjEyMTM4QTY3RTAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkYzMjEz
OEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgcGF0aCA9
IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxQzIzRkY0MjEzOEE2ODAwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY1MjEzOEE2
ODEwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNw
cDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGNjIxMzhBNjgyMDBDNURGMjcgLyogTGli
V2ViUlRDVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
VXRpbHMuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRp
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDVXRp
bHMuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjgyMTM4QTY5MjAwQzVERjI3IC8qIFJUQ1J0cFNlbmRl
ckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2VuZGVy
QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGOTIxMzhBNjkz
MDBDNURGMjcgLyogUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTExNiw5ICsxNTEyNywxMSBAQAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENS
dHBSZWNlaXZlci5jcHAgKi8sCiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0
cFJlY2VpdmVyLmggKi8sCiAJCQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFJl
Y2VpdmVyLmlkbCAqLywKKwkJCQk0MUMyM0ZGOTIxMzhBNjkzMDBDNURGMjcgLyogUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0
cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNl
bmRlci5oICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIu
aWRsICovLAorCQkJCTQxQzIzRkY4MjEzOEE2OTIwMEM1REYyNyAvKiBSVENSdHBTZW5kZXJCYWNr
ZW5kLmggKi8sCiAJCQkJNUUyQzQzNUQxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlclJl
Y2VpdmVyQmFzZS5oICovLAogCQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBU
cmFuc2NlaXZlci5jcHAgKi8sCiAJCQkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0
cFRyYW5zY2VpdmVyLmggKi8sCkBAIC0xNjgzMiw2ICsxNjg0NSwxMiBAQAogCQkJCTQxNzYxMkFD
MUUzQTk5M0IwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggKi8sCiAJCQkJNDE3
NjEyQUQxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgKi8sCiAJCQkJNDE3NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkY1MjEzOEE2ODEwMEM1REYyNyAvKiBMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovLAorCQkJCTQxQzIzRkY0MjEzOEE2ODAwMEM1
REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKKwkJCQk0MUMyM0ZGMTIx
MzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8sCisJCQkJ
NDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCAq
LywKKwkJCQk0MUMyM0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMuY3BwICov
LAorCQkJCTQxQzIzRkY2MjEzOEE2ODIwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5oICovLAog
CQkJKTsKIAkJCW5hbWUgPSBsaWJ3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzE0MTUsNiArMzE0MzQsOSBAQAogCQkJCTVDREQ4MzY0MUU0MzI1QTAwMDYyMUU5MiAvKiBM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3NjEy
QUYxRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDE3NjEyQjExRTNBOTk0MDAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTg1NDNGMTIxMzhBQjY2MDBD
NDFDQzEgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxODU0M0YyMjEzOEFCOEEwMEM0MUNDMSAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODU0M0VGMjEzOEFCNDEwMEM0MUNDMSAvKiBMaWJX
ZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEy
REQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ1Nzc1RUEy
MDQ3MzAzQzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348603</attachid>
            <date>2018-08-30 21:50:44 -0700</date>
            <delta_ts>2018-09-04 09:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189171-20180830215043.patch</filename>
            <type>text/plain</type>
            <size>65943</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0MjdlYzI2N2ViMzdm
MGU5ZjBkZjZkNGQwZDY1Nzk2OGY2ODBhNC4uYWZlY2Y1MGVmZmVhZmExMTI2ZTU2OTVjNzRjM2Yx
MTdlMWQ2ZWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgUlRDUnRwU2VuZGVyOjpCYWNrZW5k
IHRvIFJUQ1J0cFNlbmRlckJhY2tlbmQsIGRpdHRvIGZvciBSVENSdHBSZWNlaXZlcjo6QmFja2Vu
ZC4KKyAgICAgICAgTWFrZSBSVENSdHBTZW5kZXIvUlRDUnRwUmVjZWl2ZXIgb3duIHRoZWlyIGJh
Y2tlbmQuCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgYmFja2VuZHMgdG8gb3duIGEgbGli
d2VicnRjIHNlbmRlci9yZWNlaXZlciByZWYgY291bnRlZCBvYmplY3QKKyAgICAgICAgYW5kIG1p
Z2h0IGFsbG93IHVzIHRvIGNsZWFubHkgc2VwYXJhdGUgY29kZSBmcm9tIHVuaWZpZWQgcGxhbiB2
cyBwbGFuIEIuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgc28gdGhhdCBsaWJ3ZWJydGMgY29kZSBz
cGVjaWZpYyBjb2RlIGlzIG5vdyBjcmVhdGluZyBzZW5kZXJzIGFuZCByZWNlaXZlcnMuCisgICAg
ICAgIFRoaXMgbW92ZXMgY29kZSBmcm9tIFJUQ1BlZXJDb25uZWN0aW9uIGRvd24gdG8gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBpbiBwYXJ0aWN1bGFyIGZvcgorICAgICAgICBhZGRU
cmFjayBhbmQgYWRkVHJhbnNjZWl2ZXIgbWV0aG9kcy4KKworICAgICAgICBNb3ZlZCBzb21lIGNv
ZGUgZnJvbSBMaWJXZWJSVENNZWRpYUVuZHBvaW50IHRvIExpYldlYlJUQ1V0aWxzIHRvIGVhc2Ug
cmVhZGFiaWxpdHkuCisKKyAgICAgICAgQSBmdXR1cmUgcGF0Y2ggd2lsbCBhbGxvdyB0byB0aWUg
dGhlIGxpYndlYnJ0YyBzZW5kZXIvcmVjZWl2ZXIgdG8gV2ViS2l0IERPTSBzZW5kZXIvcmVjZWl2
ZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tUYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZl
cjo6UlRDUnRwUmVjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldEJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OlJUQ1J0cFNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJh
Y2tlbmQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEVuY29kaW5nUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSdHBQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENVdGlscy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZyb21TdGRT
dHJpbmcpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxOC0wOC0zMCAgT2xpdmlhIEJhcm5ldHQgIDxvYmFybmV0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjM1NDg5KTogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNy
YXNoLmh0bWwgY3Jhc2hlcyB1bmRlciBOYXZpZ2F0b3I6OnNoYXJlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGZlZjk5NzYzMmE2OGM0MTBhZjA5OGYwMWViMmM1OGNkZmNkYWI1OGMuLmJmMDY2MTE1
M2FhMjQyYzRkNWY1OGY4ZjFhZDEzNzNmNmZiMjhlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xNTYzLDYgKzE1NjMsOSBAQCBpZiAoVVNFX0xJQldFQlJUQykKICAgICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKICAgICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3Bw
CiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCisgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCiAgICAgICApCiBlbmRpZiAoKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjg3MzRiMjAzZjJjY2M1M2ZkMTZmNGE5Njc4
ZTg2NTdhYmZiYmRmMy4uMzMzMTEzZjIwZTNjNjU3YjQzM2IxNTlhNjdlMWFmNDI4NGYxYzcwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNTMwLDYgKzUzMCwyMSBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCkKICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbi5zY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KIAorRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
Y2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1w
bGVtZW50ZWQiX3MgfTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4g
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBSVENSdHBUcmFuc2NlaXZlckluaXQmKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyB9OworfQorCitFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2Vp
dmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQm
KQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBs
ZW1lbnRlZCJfcyB9OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFu
bmVsJiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKaW5kZXggZjhhOTc2YjdhNThmNWM1MTBiNzlkMDk3OWY4YWE1N2E4ZGQwZTQz
ZS4uOTVlMGY5OTMyY2FlMGU1YWY0ZjdiMjk0ZTM4ZGQ0MTk1MDY0ZmM4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNz
IFJUQ1BlZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBT
ZW5kZXI7CitjbGFzcyBSVENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVwb3J0OwogCkBAIC01Nyw2ICs1OCw3IEBAIHN0cnVjdCBN
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbjsKIHN0cnVjdCBSVENBbnN3ZXJPcHRpb25zOwogc3Ry
dWN0IFJUQ0RhdGFDaGFubmVsSW5pdDsKIHN0cnVjdCBSVENPZmZlck9wdGlvbnM7CitzdHJ1Y3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0OwogCiBuYW1lc3BhY2UgUGVlckNvbm5lY3Rpb24gewogdXNp
bmcgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExEaWN0
aW9uYXJ5PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6SW5pdD4+OwpAQCAtOTksMTEgKzEwMSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxSVENSdHBSZWNl
aXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhSVENSdHBTZW5k
ZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgfQogCi0gICAgdmly
dHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Qg
eyByZXR1cm4geyB9OyB9CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENSdHBUcmFuc2Nl
aXZlckluaXQmKTsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IGFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBU
cmFuc2NlaXZlckluaXQmKTsKIAogICAgIHZvaWQgbWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7
CiAgICAgYm9vbCBpc05lZ290aWF0aW9uTmVlZGVkKCkgY29uc3QgeyByZXR1cm4gbV9uZWdvdGlh
dGlvbk5lZWRlZDsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTA0ZjgxZTFmYjEyNzI3Y2ZmYmQ1
MDg5MThiMjNjNzYwYTIyYmFlZi4uMzFlNjllMjE2YjQ5ZTQ0NDQzZDIyYjJiNGM0MWNhMThhZWNl
ZWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPgogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0
LT5saXN0KCkpIHsKICAgICAgICAgYXV0byYgZXhpc3RpbmdTZW5kZXIgPSB0cmFuc2NlaXZlci0+
c2VuZGVyKCk7CiAgICAgICAgIGlmIChleGlzdGluZ1NlbmRlci50cmFja0tpbmQoKSA9PSB0cmFj
ay0+a2luZCgpICYmIGV4aXN0aW5nU2VuZGVyLnRyYWNrSWQoKS5pc051bGwoKSAmJiAhdHJhbnNj
ZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgZXhpc3RpbmdTZW5k
ZXIuc2V0VHJhY2soV1RGTW92ZSh0cmFjaykpOworICAgICAgICAgICAgZXhpc3RpbmdTZW5kZXIu
c2V0VHJhY2sodHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIGV4aXN0aW5nU2VuZGVyLnNl
dE1lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKTsKICAgICAgICAgICAgIHRy
YW5zY2VpdmVyLT5lbmFibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgICAgICAgICBzZW5kZXIg
PSAmZXhpc3RpbmdTZW5kZXI7CkBAIC0xMzcsMjcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBTZW5kZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFt
VHJhY2s+CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXNlbmRlcikgewotICAgICAgICBT
dHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwot
ICAgICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAg
IFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotCi0gICAgICAg
IGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCAqdGhpcyk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBt
X2JhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNr
SWQpOwotICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0
ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKLQotICAgICAgICAvLyBU
aGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVs
bCBtaWQpLCBidXQgd2UgbmVlZCBhCi0gICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUg
dHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCi0gICAgICAgIHRyYW5zY2Vp
dmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7Ci0KLSAgICAgICAgc2VuZGVy
ID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKLSAgICAgICAgbV90cmFuc2NlaXZlclNldC0+YXBw
ZW5kKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYmFja2VuZC0+
bm90aWZ5QWRkZWRUcmFjaygqc2VuZGVyKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKLQotICAgIHJldHVy
biBSZWY8UlRDUnRwU2VuZGVyPiB7ICpzZW5kZXIgfTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5h
ZGRUcmFjayhzZW5kZXIsIHRyYWNrLmdldCgpLCBtZWRpYVN0cmVhbUlkcyk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpyZW1vdmVUcmFjayhSVENSdHBTZW5kZXIm
IHNlbmRlcikKQEAgLTE5MiwzMSArMTcyLDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFu
c2NlaXZlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRUcmFuc2NlCiAg
ICAgICAgIGlmIChraW5kICE9ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gc2VuZGVy
ID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKGtpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCAq
dGhpcyk7Ci0gICAgICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUoc2Vu
ZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBraW5kKTsKKyAgICAgICAg
cmV0dXJuIG1fYmFja2VuZC0+YWRkVHJhbnNjZWl2ZXIoa2luZCwgaW5pdCk7CiAgICAgfQogCi0g
ICAgUmVmPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+Pih3aXRoVHJhY2spLnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgY29uc3QgU3RyaW5n
JiB0cmFja0lkID0gdHJhY2stPmlkKCk7Ci0gICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0
cmFjay0+a2luZCgpOwotCi0gICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShX
VEZNb3ZlKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4oKSwgKnRoaXMpOwotICAgIGlmICghbV9iYWNr
ZW5kLT5ub3RpZnlBZGRlZFRyYWNrKHNlbmRlcikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07Ci0KLSAgICBy
ZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIGluaXQsIHRyYWNr
SWQsIHRyYWNrS2luZCk7Ci19Ci0KLVJlZjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5l
Y3Rpb246OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoUmVmPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIs
IGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCwgY29uc3QgU3RyaW5nJiB0cmFja0lk
LCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCkKLXsKLSAgICBTdHJpbmcgdHJhbnNjZWl2ZXJNaWQg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgbV9iYWNrZW5kLT5j
cmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7Ci0KLSAg
ICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotICAgIHRy
YW5zY2VpdmVyLT5zZXREaXJlY3Rpb24oaW5pdC5kaXJlY3Rpb24pOwotCi0gICAgbV90cmFuc2Nl
aXZlclNldC0+YXBwZW5kKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7Ci0gICAgcmV0dXJuIHRyYW5z
Y2VpdmVyOworICAgIGF1dG8gdHJhY2sgPSBXVEY6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+KHdpdGhUcmFjaykucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5h
ZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKIHZvaWQgUlRDUGVlckNv
bm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMsIFNl
c3Npb25EZXNjcmlwdGlvblByb21pc2UmJiBwcm9taXNlKQpAQCAtNTg2LDI4ICs1NDYsMTEgQEAg
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soUlRDUnRwU2Vu
ZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWQKICAgICAgICAgYm9vbCBoYXNUcmFjayA9IHByb3RlY3Rl
ZFNlbmRlci0+dHJhY2soKTsKICAgICAgICAgcHJvdGVjdGVkU2VuZGVyLT5zZXRUcmFjayh3aXRo
VHJhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghaGFzVHJhY2spCi0gICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2socHJvdGVjdGVk
U2VuZGVyLmdldCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fYmFja2VuZC0+YWRk
VHJhY2socHJvdGVjdGVkU2VuZGVyLnB0cigpLCAqcHJvdGVjdGVkU2VuZGVyLT50cmFjaygpLCB7
IH0pOwogICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKICAgICB9KTsKIH0KIAotdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pc2UpCi17Ci0gICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBpZiAoIXNl
bmRlci50cmFjaygpICYmIHdpdGhUcmFjaykgewotICAgICAgICBlbnF1ZXVlUmVwbGFjZVRyYWNr
VGFzayhzZW5kZXIsIHdpdGhUcmFjay5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2Up
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fYmFja2VuZC0+cmVwbGFjZVRyYWNr
KHNlbmRlciwgV1RGTW92ZSh3aXRoVHJhY2spLCBXVEZNb3ZlKHByb21pc2UpKTsKLX0KLQotUlRD
UnRwUGFyYW1ldGVycyBSVENQZWVyQ29ubmVjdGlvbjo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5k
ZXImIHNlbmRlcikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5nZXRQYXJhbWV0ZXJz
KHNlbmRlcik7Ci19Ci0KIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoRXZlbnQoRXZl
bnQmIGV2ZW50KQogewogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcg
JyIsIGV2ZW50LnR5cGUoKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCA0MjdiZjIyM2ViOGU0MTlj
MzliMmI1ZWYxNDVkZmE2ZDEwOGQxZGU3Li44NGViOWJjOWE1NWE1YTcxNzRjN2UwZmIxZTdlOTRl
N2QzMTVkMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC02Niw3ICs2Niw2IEBAIHN0cnVjdCBSVENSdHBU
cmFuc2NlaXZlckluaXQgewogCiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbiBmaW5hbAogICAgIDog
cHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+Ci0gICAgLCBwdWJsaWMgUlRDUnRw
U2VuZGVyOjpCYWNrZW5kCiAgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQog
ICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApA
QCAtMTA5LDYgKzEwOCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uU3RhdGUgPT0gUlRDUGVlckNvbm5lY3Rpb25TdGF0ZTo6Q2xvc2Vk
OyB9CiAgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQog
CisgICAgdm9pZCBhZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFJlZjxSVENSdHBUcmFuc2NlaXZlcj4m
JiB0cmFuc2NlaXZlcikgeyBtX3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92ZSh0cmFuc2Nl
aXZlcikpOyB9CisKICAgICAvLyA1LjEgUlRDUGVlckNvbm5lY3Rpb24gZXh0ZW5zaW9ucwogICAg
IGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNlbmRlcj4+JiBnZXRT
ZW5kZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+c2VuZGVycygpOyB9CiAg
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwUmVjZWl2ZXI+PiYg
Z2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZlclNldC0+cmVjZWl2ZXJz
KCk7IH0KQEAgLTE0NCw3ICsxNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTmVn
b3RpYXRpb25OZWVkZWRFdmVudCgpOwogCi0gICAgUlRDUnRwU2VuZGVyOjpCYWNrZW5kJiBzZW5k
ZXJCYWNrZW5kKCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB2b2lkIGZpcmVFdmVudChFdmVudCYp
OwogCiAgICAgdm9pZCBkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkgeyBtX2JhY2tlbmQt
PmRpc2FibGVJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcoKTsgfQpAQCAtMTg2LDExICsxODYsNiBAQCBw
cml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKIAotICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IFBlZXJDb25uZWN0aW9uQmFja2VuZCB0
byBiZSB0aGUgQmFja2VuZAotICAgIC8vIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAotICAgIHZvaWQg
cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBn
ZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCB1cGRh
dGVDb25uZWN0aW9uU3RhdGUoKTsKICAgICBib29sIGRvQ2xvc2UoKTsKICAgICB2b2lkIGRvU3Rv
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcAppbmRleCAzZDY3MzE5YzkxYmM2M2M1NzdiYjgyMGIwYTg3MGUyNmQ3NWU0
MGEwLi44ZmJlOWEyOTU5NmY2YWRkMDU5NWQyMTc1YzA2MDdmZTFiNTdkNmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNw
cApAQCAtMzcsOSArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJlY2Vp
dmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2Vu
ZCogYmFja2VuZCkKK1JUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4m
JiBiYWNrZW5kKQogICAgIDogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURk1vdmUodHJhY2sp
KQotICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCisgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNr
ZW5kKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5oCmluZGV4IDE0YWIwNjkzNDcwOTlkNGM4ZjI2MWM4OTYyMjkwYWI3
MTdhMmIyYTkuLmRiNmI3NDk4YjllMDgzOTE5YWJiNTdhZjcxYWNiNGZiNjRkZTVmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIlJU
Q1J0cFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNp
bmNsdWRlICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDAsMzEgKzQxLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRw
UmVjZWl2ZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAg
ICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQo
KSA9IGRlZmF1bHQ7Ci0gICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0
ZXJzKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgQmFja2VuZCogYmFj
a2VuZCA9IG51bGxwdHIpCisgICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPiYmIGJhY2tlbmQgPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGJhY2tlbmQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjayks
IFdURk1vdmUoYmFja2VuZCkpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKIAotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcGFzcyBhIFVuaXF1ZVJlZiBoZXJlLgotICAgIHZvaWQgc2V0QmFj
a2VuZChzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZD4mJiBiYWNrZW5kKSB7IG1fYmFja2VuZCA9IFdU
Rk1vdmUoYmFja2VuZCk7IH0KLQotICAgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Rpc3BhdGNoZWQ7IH0KLSAgICB2b2lkIHNldERpc3BhdGNoZWQoYm9vbCBpc0Rpc3Bh
dGNoZWQpIHsgbV9pc0Rpc3BhdGNoZWQgPSBpc0Rpc3BhdGNoZWQ7IH0KKyAgICB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKSB7
IG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7IH0KICAgICBSVENSdHBQYXJhbWV0ZXJzIGdl
dFBhcmFtZXRlcnMoKSB7IHJldHVybiBtX2JhY2tlbmQgPyBtX2JhY2tlbmQtPmdldFBhcmFtZXRl
cnMoKSA6IFJUQ1J0cFBhcmFtZXRlcnMoKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJU
Q1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBCYWNrZW5kKik7CisgICAgUlRD
UnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENS
dHBSZWNlaXZlckJhY2tlbmQ+JiYpOwogCi0gICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7IGZhbHNl
IH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGZlZjM0YWVm
MDQ5N2NjN2ZmMTYzOTRmZjJmYWMwMGEyZjVjZTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENS
dHBSZWNlaXZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoKSB7IHJldHVybiB7IH07IH0KK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE4ZGM5YmQ2
NGRhM2IxZWE4OWMyYzA2Y2YzYzk5YTk5YTAyZTA3MTEuLjZhM2QxYmNkOTA4ODZlMDMzZDUxMjRk
YzlkNGViNGI2ZGZkZmI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVk
aWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tl
bmQpCiB7Ci0gICAgYXV0byBzZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJp
bmcodHJhY2stPmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBiYWNrZW5kKSk7Cisg
ICAgYXV0byBzZW5kZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2st
PmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAg
ICAgc2VuZGVyLT5zZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsK
IH0KIAotUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5k
KQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJhY2tL
aW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
UnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNlbmRlcihXVEZNb3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBiYWNrZW5kKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1v
dmUodHJhY2tLaW5kKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkp
KTsKIH0KIAotUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJiBiYWNrZW5kKQorUlRDUnRw
U2VuZGVyOjpSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBi
YWNrZW5kKQogICAgIDogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKICAgICAsIG1fdHJhY2tL
aW5kKFdURk1vdmUodHJhY2tLaW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92ZSht
ZWRpYVN0cmVhbUlkcykpCi0gICAgLCBtX2JhY2tlbmQoJmJhY2tlbmQpCisgICAgLCBtX2JhY2tl
bmQoV1RGTW92ZShiYWNrZW5kKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggODk1OGRmNjc5MTMyZDRmOGU2ZjI1
ZDg0YmQwZWMxMTc5MzY3NmZjYS4uNGUxZTRiNWUzYTdmYTVmN2QxN2MwZGY3MzQ5NmY2ZWFkMjBl
ZjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5oCkBAIC0zMywyMSArMzMsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2lu
Y2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2VuZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNlbmRlckJh
Y2tlbmQuaCIKICNpbmNsdWRlICJSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUlRDUnRwU2VuZGVy
UmVjZWl2ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBCYWNrZW5kIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRl
ciYpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB+QmFja2VuZCgpID0gZGVmYXVsdDsKLSAg
ICB9OwotCi0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwot
ICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJhY2tLaW5kLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgc3RhdGljIFJl
ZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0
cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tl
bmQ+JiYpOworICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBj
b25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tLaW5kOyB9CkBAIC02NSwxMiArNTksMTIgQEAgcHVibGlj
OgogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogCiBwcml2YXRlOgotICAg
IFJUQ1J0cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFT
dHJlYW1JZHMsIEJhY2tlbmQmKTsKKyAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5k
LCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
U2VuZGVyQmFja2VuZD4mJik7CiAKICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBt
X3RyYWNrS2luZDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwotICAgIEJh
Y2tlbmQqIG1fYmFja2VuZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2Vu
ZD4gbV9iYWNrZW5kOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlckJhY2tlbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZDI1OGE0YzNlOWNmNDkxNTM4MjY0ODY4MTY2MTcyZmZjNDBhNGQ1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJS
VENSdHBQYXJhbWV0ZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFT
dHJlYW1UcmFjazsKK2NsYXNzIFJUQ1J0cFNlbmRlcjsKKworY2xhc3MgUlRDUnRwU2VuZGVyQmFj
a2VuZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5k
ZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENS
dHBTZW5kZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyQmFja2VuZCgp
ID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cAppbmRleCBiZjEyMGQwMjliOTgwYzM1MjhmZWIwNDA5NWFiYTBlOTI0YTc2YWQ1Li5kZTM1OTE3
OWZkZTJiNGExOTVlZGU2MjU1MTVjYWM2OTVlODQ0NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkxp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGVyZm9y
bWFuY2UuaCIKQEAgLTU2LDExICs1OSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5n
dGgoKSk7Ci19Ci0KIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkxpYldlYlJUQ01lZGlhRW5kcG9p
bnQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBwZWVyQ29ubmVjdGlvbiwgTGliV2Vi
UlRDUHJvdmlkZXImIGNsaWVudCkKICAgICA6IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKHBlZXJD
b25uZWN0aW9uKQogICAgICwgbV9wZWVyQ29ubmVjdGlvbkZhY3RvcnkoKmNsaWVudC5mYWN0b3J5
KCkpCkBAIC02NDUsMTYgKzY0Myw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
UmVtb3RlU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKQogewogfQogCi1jbGFz
cyBSVENSdHBSZWNlaXZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXI6OkJh
Y2tlbmQgewotcHVibGljOgotICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZl
cikgOiBtX3J0Y1JlY2VpdmVyKFdURk1vdmUocnRjUmVjZWl2ZXIpKSB7IH0KLXByaXZhdGU6Ci0g
ICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7Ci0KLSAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsK
LX07Ci0KLQogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZl
ciwgY29uc3Qgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6TWVkaWFTdHJl
YW1JbnRlcmZhY2U+PiYgcnRjU3RyZWFtcykKIHsKICAgICBBU1NFUlQocnRjUmVjZWl2ZXIpOwpA
QCAtNjg0LDcgKzY3Miw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3Rl
VHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0K
IAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8UlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNr
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1JlY2VpdmVyKSkpOwogICAgIAogICAgIGF1dG8qIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNr
KCk7CiAgICAgQVNTRVJUKHRyYWNrKTsKQEAgLTk1Miw5NCArOTQwLDYgQEAgdm9pZCBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpzZXRSZW1vdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoY29uc3Qg
c3RkOjpzdHJpbmcKICAgICB9KTsKIH0KIAotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJz
OjpFbmNvZGluZ1BhcmFtZXRlcnMgZmlsbEVuY29kaW5nUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6
OlJ0cEVuY29kaW5nUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJh
bWV0ZXJzOjpFbmNvZGluZ1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIGlmIChydGNQYXJh
bWV0ZXJzLnNzcmMpCi0gICAgICAgIHBhcmFtZXRlcnMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnNz
cmM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMucnR4ICYmIHJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
KQotICAgICAgICBwYXJhbWV0ZXJzLnJ0eC5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMucnR4LT5zc3Jj
OwotICAgIGlmIChydGNQYXJhbWV0ZXJzLmZlYyAmJiBydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYykK
LSAgICAgICAgcGFyYW1ldGVycy5mZWMuc3NyYyA9ICpydGNQYXJhbWV0ZXJzLmZlYy0+c3NyYzsK
LSAgICBpZiAocnRjUGFyYW1ldGVycy5kdHgpIHsKLSAgICAgICAgc3dpdGNoICgqcnRjUGFyYW1l
dGVycy5kdHgpIHsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0YXR1czo6RElTQUJMRUQ6Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6
RGlzYWJsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkR0eFN0
YXR1czo6RU5BQkxFRDoKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFyYW1l
dGVyczo6RHR4U3RhdHVzOjpFbmFibGVkOwotICAgICAgICB9Ci0gICAgfQotICAgIHBhcmFtZXRl
cnMuYWN0aXZlID0gcnRjUGFyYW1ldGVycy5hY3RpdmU7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMu
bWF4X2JpdHJhdGVfYnBzKQotICAgICAgICBwYXJhbWV0ZXJzLm1heEJpdHJhdGUgPSAqcnRjUGFy
YW1ldGVycy5tYXhfYml0cmF0ZV9icHM7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1l
cmF0ZSkKLSAgICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSAqcnRjUGFyYW1ldGVycy5t
YXhfZnJhbWVyYXRlOwotICAgIHBhcmFtZXRlcnMucmlkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLnJpZCk7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3du
X2J5KQotICAgICAgICBwYXJhbWV0ZXJzLnNjYWxlUmVzb2x1dGlvbkRvd25CeSA9ICpydGNQYXJh
bWV0ZXJzLnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieTsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJz
OwotfQotCi1zdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBh
cmFtZXRlcnMgZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0cFBh
cmFtZXRlcnM6OkhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBh
cmFtZXRlcnMudXJpID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnVyaSk7Ci0gICAgcGFy
YW1ldGVycy5pZCA9IHJ0Y1BhcmFtZXRlcnMuaWQ7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsK
LX0KLQotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgZmls
bENvZGVjUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cENvZGVjUGFyYW1ldGVycyYgcnRjUGFy
YW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpDb2RlY1BhcmFtZXRlcnMgcGFyYW1l
dGVyczsKLQotICAgIHBhcmFtZXRlcnMucGF5bG9hZFR5cGUgPSBydGNQYXJhbWV0ZXJzLnBheWxv
YWRfdHlwZTsKLSAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlID0gZnJvbVN0ZFN0cmluZyhydGNQYXJh
bWV0ZXJzLm1pbWVfdHlwZSgpKTsKLSAgICBpZiAocnRjUGFyYW1ldGVycy5jbG9ja19yYXRlKQot
ICAgICAgICBwYXJhbWV0ZXJzLmNsb2NrUmF0ZSA9ICpydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGU7
Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzKQotICAgICAgICBwYXJhbWV0ZXJz
LmNoYW5uZWxzID0gKnJ0Y1BhcmFtZXRlcnMubnVtX2NoYW5uZWxzOwotCi0gICAgcmV0dXJuIHBh
cmFtZXRlcnM7Ci19Ci0KLXN0YXRpYyBSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJz
KGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyBydGNQYXJhbWV0ZXJzKQotewotICAgIFJUQ1J0
cFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMudHJhbnNhY3Rpb25JZCA9
IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy50cmFuc2FjdGlvbl9pZCk7Ci0gICAgZm9yIChh
dXRvJiBydGNFbmNvZGluZyA6IHJ0Y1BhcmFtZXRlcnMuZW5jb2RpbmdzKQotICAgICAgICBwYXJh
bWV0ZXJzLmVuY29kaW5ncy5hcHBlbmQoZmlsbEVuY29kaW5nUGFyYW1ldGVycyhydGNFbmNvZGlu
ZykpOwotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogcnRjUGFyYW1ldGVycy5oZWFkZXJfZXh0
ZW5zaW9ucykKLSAgICAgICAgcGFyYW1ldGVycy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZChmaWxs
SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyhleHRlbnNpb24pKTsKLSAgICBmb3IgKGF1dG8mIGNv
ZGVjIDogcnRjUGFyYW1ldGVycy5jb2RlY3MpCi0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNzLmFw
cGVuZChmaWxsQ29kZWNQYXJhbWV0ZXJzKGNvZGVjKSk7Ci0KLSAgICBzd2l0Y2ggKHJ0Y1BhcmFt
ZXRlcnMuZGVncmFkYXRpb25fcHJlZmVyZW5jZSkgewotICAgIC8vIEZJWE1FOiBTdXBwb3J0IERl
Z3JhZGF0aW9uUHJlZmVyZW5jZTo6RElTQUJMRUQuCi0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0
aW9uUHJlZmVyZW5jZTo6RElTQUJMRUQ6Ci0gICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZTo6TUFJTlRBSU5fRlJBTUVSQVRFOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0
aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6
TWFpbnRhaW5GcmFtZXJhdGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugd2VicnRjOjpEZWdy
YWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX1JFU09MVVRJT046Ci0gICAgICAgIHBhcmFtZXRl
cnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25Q
cmVmZXJlbmNlOjpNYWludGFpblJlc29sdXRpb247Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
d2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJBTEFOQ0VEOgotICAgICAgICBwYXJhbWV0
ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9u
UHJlZmVyZW5jZTo6QmFsYW5jZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgcmV0dXJu
IHBhcmFtZXRlcnM7Ci19Ci0KLVJUQ1J0cFBhcmFtZXRlcnMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
OjpnZXRQYXJhbWV0ZXJzKCkKLXsKLSAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNS
ZWNlaXZlci0+R2V0UGFyYW1ldGVycygpKTsKLX0KLQogUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpnZXRSVENSdHBTZW5kZXJQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYg
c2VuZGVyKQogewogICAgIGF1dG8gcnRjU2VuZGVyID0gbV9zZW5kZXJzLmdldCgmc2VuZGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCmluZGV4IDIyYmExNTBjNGI0NjRkYzI5YWJmNjIyZTc5YjE5ZjZkOGZjMzIxN2MuLmUwN2E4
NTM4MTJhNmFjMWE3Nzg3MWRiOGI0OWE5MTI4ZDU2YWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIkpTUlRDU3RhdHNSZXBvcnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50Lmgi
CisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1
cmF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5o
IgpAQCAtMjc1LDcgKzI3Nyw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Vmlk
ZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBz
b3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZN
b3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3Vy
Y2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29w
eVJlZigpKTsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3Jl
YXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiks
IHJlY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVy
OjpjcmVhdGUoInZpZGVvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIu
Y29weVJlZigpKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsK
ICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIp
KTsKIApAQCAtMjk3LDcgKzMwMCw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0
byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBX
VEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JT
b3VyY2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2Uu
Y29weVJlZigpKTsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6
Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlv
biksIHJlY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUoImF1ZGlvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2
ZXIuY29weVJlZigpKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24o
KTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2
ZXIpKTsKIApAQCAtMzQ4LDEwICszNTIsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAg
ICByZXR1cm4gbV9lbmRwb2ludC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIpCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsK
LSAgICBBU1NFUlQoc2VuZGVyLnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRU
cmFjayhzZW5kZXIsICpzZW5kZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOwor
ICAgIGlmICghc2VuZGVyKSB7CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0
cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kID0gdHJhY2sua2luZCgpOworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKTsKKworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAg
ICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNr
KSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKTsKKyAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVy
TWlkLCB0cmFja0tpbmQsIHRyYWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRD
UnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2
ZXIpKTsKKworICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRl
ZCB3aXRoIGFuIG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHBy
b3Zpc2lvbmFsIG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2Zm
ZXIuCisgICAgICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1p
ZCk7CisKKyAgICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAg
bV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2
ZXIpKTsKKyAgICB9CisKKyAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRy
YWNrLCBtZWRpYVN0cmVhbUlkcykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2Vu
ZGVyKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2Vu
ZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUoU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFj
a2VuZCkpOworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2Vu
ZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQor
CitFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJC
YWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFj
ay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwor
ICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9y
PFN0cmluZz4geyB9KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFk
ZFRyYW5zY2VpdmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5r
aW5kKCkpOworfQorCitSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNl
bmRlciwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRy
YWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZl
ck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2Nl
aXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVS
ZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFu
c2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2Vp
dmVyLT5zZXREaXJlY3Rpb24oaW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlv
bi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0
dXJuIHRyYW5zY2VpdmVyOwogfQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6bm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBmYTBmMDEz
NzA5NTI1MjYxMmY0YjBlYjYxMTY0ODRkMTRmYTMzMTAxLi4xYzU1NzI0NzRkYTAyOWM1NjFiOTZj
N2NmYTNhMWRmMTc5MjZjYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0
ZUludGVyZmFjZTsKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92
aWRlciYpOwpAQCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJj
ZXMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhh
c1ZpZGVvU291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQog
CisgICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0
ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
dm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRv
Q3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwxMyArNzgsMTEg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVt
b3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uPiBwZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVy
cyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBl
bXVsYXRlUGxhdGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFw
cGx5Um90YXRpb25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5k
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAg
ICAgUlRDUGVlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0
aW9uOyB9CiAgICAgdm9pZCBhZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlPiYmKTsKICAgICB2b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U+JiYpOwpAQCAtODgsOSArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFN0YXRzU3VjY2VlZGVkKGNvbnN0IERlZmVycmVkUHJvbWlzZSYsIFJlZjxSVENTdGF0c1JlcG9y
dD4mJik7CiAgICAgdm9pZCBnZXRTdGF0c0ZhaWxlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBF
eGNlcHRpb24mJik7CiAKLSAgICBib29sIG5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJikg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IGFkZFRyYWNrKFJUQ1J0
cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIGZpbmFsOwogCisg
ICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikgZmluYWw7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworCiAg
ICAgc3RydWN0IFZpZGVvUmVjZWl2ZXIgewogICAgICAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IHJl
Y2VpdmVyOwogICAgICAgICBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBzb3VyY2U7
CkBAIC0xMDUsNiArMTEwLDggQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgYm9vbCBpc0xvY2Fs
RGVzY3JpcHRpb25TZXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9jYWxEZXNjcmlwdGlv
blNldDsgfQogCisgICAgUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBjb21wbGV0ZUFkZFRyYW5zY2Vp
dmVyKFJlZjxSVENSdHBTZW5kZXI+JiYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYsIGNv
bnN0IFN0cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpOworCiAgICAgUmVm
PExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1fZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxE
ZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25T
ZXQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRmNGU3Y2NhZmU2MzEzM2I4MzViMDFkYjJkMGY3YmFl
YWEwOTQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmgiCisKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQl9S
VEMpICYmIFVTRShMSUJXRUJSVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwUGFy
YW1ldGVycyBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMoKQorewor
ICAgIHJldHVybiBmaWxsUnRwUGFyYW1ldGVycyhtX3J0Y1JlY2VpdmVyLT5HZXRQYXJhbWV0ZXJz
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FjZTJlNDJkYTYzMWVlOTcxMmQ4YWQ4ZWNi
NjlkODRiNmNlYTJiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJU
QykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oIgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtcGFyYW1ldGVyIgorCisjaW5jbHVkZSA8d2Vi
cnRjL2FwaS9ydHByZWNlaXZlcmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFz
ZS9zY29wZWRfcmVmX3B0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCBmaW5h
bCA6IHB1YmxpYyBSVENSdHBSZWNlaXZlckJhY2tlbmQgeworcHVibGljOgorICAgIGV4cGxpY2l0
IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpS
dHBSZWNlaXZlckludGVyZmFjZT4mJiBydGNSZWNlaXZlcikKKyAgICAgICAgOiBtX3J0Y1JlY2Vp
dmVyKFdURk1vdmUocnRjUmVjZWl2ZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgZmluYWw7CisKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZT4gbV9ydGNSZWNlaXZlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAm
JiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjg2M2E5NDJjOGVkMzM2OTliMDgxMjQ2Y2Q2N2Q2ODg2
Y2ZlYzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5o
IgorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGls
cy5oIgorI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUlRDUnRwU2Vu
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
eworICAgIGlmICghbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQpIHsKKyAgICAgICAgcHJvbWlzZS5y
ZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBXZWJSVEMgYmFja2VuZCJf
cyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc2VuZGVyLnRyYWNrKCkg
JiYgdHJhY2spIHsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQtPmNvbm5lY3Rpb24o
KS5lbnF1ZXVlUmVwbGFjZVRyYWNrVGFzayhzZW5kZXIsIHRyYWNrLnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQtPnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUodHJhY2spLCBX
VEZNb3ZlKHByb21pc2UpKTsKK30KKworUlRDUnRwUGFyYW1ldGVycyBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSBjb25zdAorewor
ICAgIGlmICghbV9ydGNTZW5kZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
bmVlZCB0byBnbyB0aHJvdWdoIHRoZSBiYWNrZW5kIGFuZCBzaG91bGQgZGlyZWN0bHkgaGF2ZSBt
X3J0Y1NlbmRlciBoZXJlLgorICAgICAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLT5nZXRQYXJhbWV0ZXJzKHNlbmRlcik7CisgICAgfQorICAgIHJldHVybiBmaWxsUnRw
UGFyYW1ldGVycyhtX3J0Y1NlbmRlci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJS
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjliOWNlYWYwYzJkZWFjMTcyZjAyNGY0NWQ4MTAwMDQ0MzBmNGU3ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRl
ICJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW51c2VkLXBhcmFtZXRlciIKKworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwc2VuZGVyaW50
ZXJmYWNlLmg+CisjaW5jbHVkZSA8d2VicnRjL3J0Y19iYXNlL3Njb3BlZF9yZWZfcHRyLmg+CisK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOworCitjbGFzcyBMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFNlbmRlckJhY2tlbmQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBT
ZW5kZXJJbnRlcmZhY2U+JiYgcnRjU2VuZGVyKQorICAgICAgICA6IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kKG1ha2VXZWFrUHRyKCZiYWNrZW5kKSkKKyAgICAgICAgLCBtX3J0Y1NlbmRlcihXVEZN
b3ZlKHJ0Y1NlbmRlcikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0UlRDU2VuZGVyKHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4mJiBydGNTZW5kZXIp
IHsgbV9ydGNTZW5kZXIgPSBXVEZNb3ZlKHJ0Y1NlbmRlcik7IH0KKyAgICB2b2lkIHJlcGxhY2VU
cmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOworICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1l
dGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRy
PExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQ7
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiBtX3J0
Y1NlbmRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlODU0
MTE1ODk1MmE4NjkyMjNkZGM3NTI1MzI2MTQ3MTgxOTc4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGls
cy5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisj
aW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5o
IgorI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwcGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUg
UlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1BhcmFtZXRl
cnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7
CisgICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisK
KyAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLnNzcmMgPSAq
cnRjUGFyYW1ldGVycy5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpydGNQYXJh
bWV0ZXJzLnJ0eC0+c3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRjUGFyYW1l
dGVycy5mZWMtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIHN3
aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7CisgICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0
dXM6OkRJU0FCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0
ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmR0
eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6RW5hYmxlZDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOworICAgIGlm
IChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykKKyAgICAgICAgcGFyYW1ldGVycy5tYXhC
aXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJhdGVfYnBzOworICAgIGlmIChydGNQYXJh
bWV0ZXJzLm1heF9mcmFtZXJhdGUpCisgICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVyYXRlID0g
KnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOworICAgIGlmIChydGNQYXJhbWV0ZXJzLnNjYWxl
X3Jlc29sdXRpb25fZG93bl9ieSkKKyAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29sdXRpb25E
b3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7CisKKyAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKK30KKworc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGNv
bnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykK
K3sKKyAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVy
cy51cmkpOworICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOworCisgICAgcmV0
dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6Q29k
ZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBDb2RlY1Bh
cmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBlID0gcnRj
UGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7CisgICAgcGFyYW1ldGVycy5taW1lVHlwZSA9IGZyb21T
dGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUoKSk7CisgICAgaWYgKHJ0Y1BhcmFtZXRl
cnMuY2xvY2tfcmF0ZSkKKyAgICAgICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRjUGFyYW1l
dGVycy5jbG9ja19yYXRlOworICAgIGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVscykKKyAg
ICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVsczsK
KworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQ
YXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKK3sK
KyAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisKKyAgICBwYXJhbWV0ZXJzLnRyYW5z
YWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25faWQpOwor
ICAgIGZvciAoYXV0byYgcnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5ncykKKyAg
ICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMo
cnRjRW5jb2RpbmcpKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFtZXRlcnMu
aGVhZGVyX2V4dGVuc2lvbnMpCisgICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7CisgICAgZm9y
IChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQorICAgICAgICBwYXJhbWV0ZXJz
LmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOworCisgICAgc3dpdGNo
IChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgorICAgIGNhc2Ugd2VicnRj
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJU0FCTEVEOgorICAgIGNhc2Ugd2VicnRjOjpEZWdy
YWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKKyAgICAgICAgcGFyYW1ldGVy
cy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblBy
ZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHdl
YnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgorICAgICAg
ICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRl
Z3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoKKyAgICAg
ICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpE
ZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFuY2VkOworICAgICAgICBicmVhazsKKyAgICB9Owor
ICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYyNmMzY2YzNWU5NWRjMzhhMWQ3OGFhOGNjNjI2Y2I0YzkyZWUwMTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENVdGlscy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSB3ZWJydGMgeworc3RydWN0IFJ0cFBhcmFtZXRlcnM7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJUQ1J0cFBhcmFtZXRlcnM7CisKK1JUQ1J0cFBhcmFt
ZXRlcnMgZmlsbFJ0cFBhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBQYXJhbWV0ZXJzJik7CisK
K2lubGluZSBTdHJpbmcgZnJvbVN0ZFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUpCit7
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5sZW5ndGgo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJS
VEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZGM0NjBmMWE2NTRhNzRmNWQ5NTZjOTJkNTgyZjA3Yjk4ZWVlZjJmMy4uNmQ0YmNi
MGQ1NGE5ZTgxZTg3Mzk2YzM0YTNhNGIyZDRjMWRjNGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEwMSw2ICsxMTAxLDkg
QEAKIAkJNDE4MTVDMUYxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MTVDMUQxMzgz
MTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODIwNTQ3MUU1M0U5OEMwMEQ2MjIwNyAv
KiBSVENDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVB
RjA1QTgwMEYxOEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyog
T3JpZW50YXRpb25Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxODU0M0VGMjEzOEFCNDEwMEM0MUNDMSAvKiBMaWJXZWJSVENVdGls
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMy
M0ZGNzIxMzhBNjgzMDBDNURGMjcgLyogTGliV2ViUlRDVXRpbHMuY3BwICovOyB9OworCQk0MTg1
NDNGMTIxMzhBQjY2MDBDNDFDQzEgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzIzRkY1MjEz
OEE2ODEwMEM1REYyNyAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovOyB9Owor
CQk0MTg1NDNGMjIxMzhBQjhBMDBDNDFDQzEgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMyM0ZG
MTIxMzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi87IH07
CiAJCTQxODg1QjkzMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODVCOTExMUI2RkRBNjAw
MzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4QTA2RDAxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlz
cGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4QTA2Q0UxMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5oICovOyB9OwogCQk0
MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBG
MDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKQEAgLTczMjIsNiArNzMyNSwxNCBAQAog
CQk0MUIyQTYyNTFFRjFCRjYwMDAyQjlEN0EgLyogV2ViQXVkaW9Tb3VyY2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxQjQ1OURBMUY0Q0FEQjkwMDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUI0NTlFRDFGNTVFQkM3MDAwMEY2RkQgLyogUmVh
ZGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVh
ZGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMyM0ZGMTIx
MzhBNjdFMDBDNURGMjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjMyMTM4QTY4MDAwQzVERjI3IC8qIExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjQy
MTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFDMjNGRjUyMTM4QTY4MTAwQzVERjI3IC8qIExpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xp
YldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQzIzRkY2MjEzOEE2ODIwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENVdGlscy5oOyBwYXRoID0gbGlid2Vi
cnRjL0xpYldlYlJUQ1V0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQzIz
RkY3MjEzOEE2ODMwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENVdGlscy5jcHA7IHBhdGggPSBsaWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUMy
M0ZGODIxMzhBNjkyMDBDNURGMjcgLyogUlRDUnRwU2VuZGVyQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxQzIzRkY5MjEzOEE2OTMwMEM1REYyNyAvKiBSVENSdHBSZWNl
aXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzc2MEIwMEVE
RTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3
RTEwNTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNjFF
NkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTE2LDkgKzE1MTI3LDExIEBACiAJ
CQkJNUUyQzQzNTYxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmNwcCAqLywKIAkJ
CQk1RTJDNDM1NzFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwUmVjZWl2ZXIuaCAqLywKIAkJCQk1
RTJDNDM1ODFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwUmVjZWl2ZXIuaWRsICovLAorCQkJCTQx
QzIzRkY5MjEzOEE2OTMwMEM1REYyNyAvKiBSVENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKIAkJ
CQk1RTJDNDM1OTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmNwcCAqLywKIAkJCQk1
RTJDNDM1QTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggKi8sCiAJCQkJNUUyQzQz
NUIxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5pZGwgKi8sCisJCQkJNDFDMjNGRjgy
MTM4QTY5MjAwQzVERjI3IC8qIFJUQ1J0cFNlbmRlckJhY2tlbmQuaCAqLywKIAkJCQk1RTJDNDM1
RDFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmggKi8sCiAJCQkJ
NUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLywKIAkJ
CQk1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLywKQEAg
LTE2ODMyLDYgKzE2ODQ1LDEyIEBACiAJCQkJNDE3NjEyQUMxRTNBOTkzQjAwQzNEODFEIC8qIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQuaCAqLywKIAkJCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQg
LyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLywKIAkJCQk0MTc2MTJBRTFF
M0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi8sCisJ
CQkJNDFDMjNGRjUyMTM4QTY4MTAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgKi8sCisJCQkJNDFDMjNGRjQyMTM4QTY4MDAwQzVERjI3IC8qIExpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkYxMjEzOEE2N0UwMEM1REYyNyAvKiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAqLywKKwkJCQk0MUMyM0ZGMzIxMzhBNjgwMDBDNURG
MjcgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oICovLAorCQkJCTQxQzIzRkY3MjEzOEE2
ODMwMEM1REYyNyAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8sCisJCQkJNDFDMjNGRjYyMTM4QTY4
MjAwQzVERjI3IC8qIExpYldlYlJUQ1V0aWxzLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGxpYndl
YnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTQxNSw2ICszMTQzNCw5IEBA
CiAJCQkJNUNERDgzNjQxRTQzMjVBMDAwNjIxRTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyog
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJCMTFF
M0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQxODU0M0YxMjEzOEFCNjYwMEM0MUNDMSAvKiBMaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4NTQzRjIyMTM4QUI4QTAw
QzQxQ0MxIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE4NTQzRUYyMTM4QUI0MTAwQzQxQ0MxIC8qIExpYldlYlJUQ1V0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3NTlFOTNFMTRFRjFDRjgwMDI2QTJERCAvKiBMb2FkYWJsZVRleHRUcmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDU3NzVFQTIwNDczMDNDMDA4RENFNUQgLyogTG9j
YWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZF
MTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348821</attachid>
            <date>2018-09-04 09:48:36 -0700</date>
            <delta_ts>2018-09-04 10:01:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189171-20180904094835.patch</filename>
            <type>text/plain</type>
            <size>68734</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzYmNhMGUzNThmNjc5
ZWNjNzExMDMwNjYxZjU2YTRhYWU1OTk0MC4uNmE5ZGViZTE3M2Y5M2M3YjYxYjY1MTQxODkwY2Rj
ZGFmNTM4MTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA5LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbGVqYW5kcm8gRy4gQ2FzdHJvLgorCisgICAgICAgIFJlbmFtZSBSVENSdHBTZW5kZXI6OkJh
Y2tlbmQgdG8gUlRDUnRwU2VuZGVyQmFja2VuZCwgZGl0dG8gZm9yIFJUQ1J0cFJlY2VpdmVyOjpC
YWNrZW5kLgorICAgICAgICBNYWtlIFJUQ1J0cFNlbmRlci9SVENSdHBSZWNlaXZlciBvd24gdGhl
aXIgYmFja2VuZC4KKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHRoZSBiYWNrZW5kcyB0byBvd24g
YSBsaWJ3ZWJydGMgc2VuZGVyL3JlY2VpdmVyIHJlZiBjb3VudGVkIG9iamVjdAorICAgICAgICBh
bmQgbWlnaHQgYWxsb3cgdXMgdG8gY2xlYW5seSBzZXBhcmF0ZSBjb2RlIGZyb20gdW5pZmllZCBw
bGFuIHZzIHBsYW4gQi4KKworICAgICAgICBVcGRhdGUgY29kZSBzbyB0aGF0IGxpYndlYnJ0YyBj
b2RlIHNwZWNpZmljIGNvZGUgaXMgbm93IGNyZWF0aW5nIHNlbmRlcnMgYW5kIHJlY2VpdmVycy4K
KyAgICAgICAgVGhpcyBtb3ZlcyBjb2RlIGZyb20gUlRDUGVlckNvbm5lY3Rpb24gZG93biB0byBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIGluIHBhcnRpY3VsYXIgZm9yCisgICAgICAg
IGFkZFRyYWNrIGFuZCBhZGRUcmFuc2NlaXZlciBtZXRob2RzLgorCisgICAgICAgIE1vdmVkIHNv
bWUgY29kZSBmcm9tIExpYldlYlJUQ01lZGlhRW5kcG9pbnQgdG8gTGliV2ViUlRDVXRpbHMgdG8g
ZWFzZSByZWFkYWJpbGl0eS4KKworICAgICAgICBBIGZ1dHVyZSBwYXRjaCB3aWxsIGFsbG93IHRv
IHRpZSB0aGUgbGlid2VicnRjIHNlbmRlci9yZWNlaXZlciB0byBXZWJLaXQgRE9NIHNlbmRlci9y
ZWNlaXZlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2spOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJl
Y2VpdmVyOjpSVENSdHBSZWNlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6c2V0QmFja2VuZCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1Jl
Y2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxsRW5jb2RpbmdQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxDb2RlY1BhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsbFJ0cFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZnJv
bVN0ZFN0cmluZyk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA5LTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gYW5k
IE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzdXBwb3J0
IGZvciBwYXNzaW5nIEltYWdlQml0bWFwIHRvIHRleEltYWdlMkQvdGV4U3ViSW1hZ2UyRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBkMTdiYTU3ZGUyMGI0YmVhY2E1NDUzM2RhZDQ3YWM0NmE1ZTBm
YjhiLi4yZmRkMzMxN2U3MjJiZTZjMGEzZmFiNDMyMDY1NDM0YWFkY2ZlODIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTU2OCw2ICsxNTY4LDkgQEAgaWYgKFVTRV9MSUJXRUJSVEMpCiAgICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcAogICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKyAgICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcAogICAgICAg
KQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI4NzM0YjIwM2YyY2Nj
NTNmZDE2ZjRhOTY3OGU4NjU3YWJmYmJkZjMuLjMzMzExM2YyMGUzYzY1N2I0MzNiMTU5YTY3ZTFh
ZjQyODRmMWM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTUzMCw2ICs1MzAsMjEg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05lZWRpbmdOZWdvdGlhdGlvbigp
CiAgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uc2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50
KCk7CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH07Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBU
cmFuc2NlaXZlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogV1RGTG9nQ2hhbm5lbCYgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2dDaGFubmVsKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGY4YTk3NmI3YTU4ZjVjNTEwYjc5ZDA5Nzlm
OGFhNTdhOGRkMGU0M2UuLjk1ZTBmOTkzMmNhZTBlNWFmNGY3YjI5NGUzOGRkNDE5NTA2NGZjODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBSVENJY2VDYW5k
aWRhdGU7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyOwog
Y2xhc3MgUlRDUnRwU2VuZGVyOworY2xhc3MgUlRDUnRwVHJhbnNjZWl2ZXI7CiBjbGFzcyBSVENT
ZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKIApAQCAtNTcsNiArNTgs
NyBAQCBzdHJ1Y3QgTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUlRDQW5zd2Vy
T3B0aW9uczsKIHN0cnVjdCBSVENEYXRhQ2hhbm5lbEluaXQ7CiBzdHJ1Y3QgUlRDT2ZmZXJPcHRp
b25zOworc3RydWN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdDsKIAogbmFtZXNwYWNlIFBlZXJDb25u
ZWN0aW9uIHsKIHVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMRGljdGlvbmFyeTxSVENTZXNzaW9uRGVzY3JpcHRpb246OkluaXQ+PjsKQEAgLTk5
LDExICsxMDEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhNZWRpYVN0
cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBS
ZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNjZWl2
ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJh
Y2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXImKSB7
IH0KIAotICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNl
bmRlciYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwg
Y29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CiAKICAgICB2b2lkIG1hcmtBc05lZWRpbmdO
ZWdvdGlhdGlvbigpOwogICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVnb3RpYXRpb25OZWVkZWQ7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGEwNGY4MWUx
ZmIxMjcyN2NmZmJkNTA4OTE4YjIzYzc2MGEyMmJhZWYuLjMxZTY5ZTIxNmI0OWU0NDQ0M2QyMmIy
YjRjNDFjYTE4YWVjZWViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4KICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogbV90
cmFuc2NlaXZlclNldC0+bGlzdCgpKSB7CiAgICAgICAgIGF1dG8mIGV4aXN0aW5nU2VuZGVyID0g
dHJhbnNjZWl2ZXItPnNlbmRlcigpOwogICAgICAgICBpZiAoZXhpc3RpbmdTZW5kZXIudHJhY2tL
aW5kKCkgPT0gdHJhY2stPmtpbmQoKSAmJiBleGlzdGluZ1NlbmRlci50cmFja0lkKCkuaXNOdWxs
KCkgJiYgIXRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAg
IGV4aXN0aW5nU2VuZGVyLnNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKKyAgICAgICAgICAgIGV4
aXN0aW5nU2VuZGVyLnNldFRyYWNrKHRyYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBleGlz
dGluZ1NlbmRlci5zZXRNZWRpYVN0cmVhbUlkcyhXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSk7CiAg
ICAgICAgICAgICB0cmFuc2NlaXZlci0+ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgICAg
ICAgICAgc2VuZGVyID0gJmV4aXN0aW5nU2VuZGVyOwpAQCAtMTM3LDI3ICsxMzcsNyBAQCBFeGNl
cHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFzZW5kZXIp
IHsKLSAgICAgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6Omdl
dE5leHRNaWQoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+a2lu
ZCgpOwotICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKLQotICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1v
dmUodHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgKnRoaXMpOwotICAgICAgICBhdXRv
IHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJh
Y2tLaW5kLCB0cmFja0lkKTsKLSAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7Ci0K
LSAgICAgICAgLy8gVGhpcyB0cmFuc2NlaXZlciBpcyBub3QgeWV0IGFzc29jaWF0ZWQgd2l0aCBh
biBtLWxpbmUgKG51bGwgbWlkKSwgYnV0IHdlIG5lZWQgYQotICAgICAgICAvLyBwcm92aXNpb25h
bCBtaWQgaWYgdGhlIHRyYW5zY2VpdmVyIGlzIHVzZWQgdG8gY3JlYXRlIGFuIG9mZmVyLgotICAg
ICAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotCi0g
ICAgICAgIHNlbmRlciA9ICZ0cmFuc2NlaXZlci0+c2VuZGVyKCk7Ci0gICAgICAgIG1fdHJhbnNj
ZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2soKnNlbmRlcikpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07
Ci0KLSAgICByZXR1cm4gUmVmPFJUQ1J0cFNlbmRlcj4geyAqc2VuZGVyIH07CisgICAgcmV0dXJu
IG1fYmFja2VuZC0+YWRkVHJhY2soc2VuZGVyLCB0cmFjay5nZXQoKSwgbWVkaWFTdHJlYW1JZHMp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIpCkBAIC0xOTIsMzEgKzE3MiwxMSBAQCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIo
QWRkVHJhbnNjZQogICAgICAgICBpZiAoa2luZCAhPSAiYXVkaW8iICYmIGtpbmQgIT0gInZpZGVv
IikKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAotICAgICAg
ICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyhraW5kKSwgVmVjdG9y
PFN0cmluZz4oKSwgKnRoaXMpOwotICAgICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZl
cihXVEZNb3ZlKHNlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwga2lu
ZCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmFkZFRyYW5zY2VpdmVyKGtpbmQsIGluaXQp
OwogICAgIH0KIAotICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IFdURjo6Z2V0PFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOwotICAg
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCA9IHRyYWNrLT5pZCgpOwotICAgIGNvbnN0IFN0cmluZyYg
dHJhY2tLaW5kID0gdHJhY2stPmtpbmQoKTsKLQotICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFZlY3RvcjxTdHJpbmc+KCksICp0aGlzKTsKLSAg
ICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjayhzZW5kZXIpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJf
cyB9OwotCi0gICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5kZXIp
LCBpbml0LCB0cmFja0lkLCB0cmFja0tpbmQpOwotfQotCi1SZWY8UlRDUnRwVHJhbnNjZWl2ZXI+
IFJUQ1BlZXJDb25uZWN0aW9uOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBTZW5k
ZXI+JiYgc2VuZGVyLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIGNvbnN0IFN0
cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpCi17Ci0gICAgU3RyaW5nIHRy
YW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKLSAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRlciks
IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJh
Y2tJZCkpOwotCi0gICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVy
TWlkKTsKLSAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKGluaXQuZGlyZWN0aW9uKTsKLQot
ICAgIG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwotICAg
IHJldHVybiB0cmFuc2NlaXZlcjsKKyAgICBhdXRvIHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJhY2spLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJu
IG1fYmFja2VuZC0+YWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogfQogCiB2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMm
JiBvcHRpb25zLCBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlzZSkKQEAgLTU4Niwy
OCArNTQ2LDExIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tU
YXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkCiAgICAgICAgIGJvb2wgaGFzVHJh
Y2sgPSBwcm90ZWN0ZWRTZW5kZXItPnRyYWNrKCk7CiAgICAgICAgIHByb3RlY3RlZFNlbmRlci0+
c2V0VHJhY2sod2l0aFRyYWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWhhc1Ry
YWNrKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRy
YWNrKHByb3RlY3RlZFNlbmRlci5nZXQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X2JhY2tlbmQtPmFkZFRyYWNrKHByb3RlY3RlZFNlbmRlci5wdHIoKSwgKnByb3RlY3RlZFNlbmRl
ci0+dHJhY2soKSwgeyB9KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNl
bmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQotewotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwot
Ci0gICAgaWYgKCFzZW5kZXIudHJhY2soKSAmJiB3aXRoVHJhY2spIHsKLSAgICAgICAgZW5xdWV1
ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB3aXRoVHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShwcm9taXNlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2JhY2tlbmQt
PnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9taXNl
KSk7Ci19Ci0KLVJUQ1J0cFBhcmFtZXRlcnMgUlRDUGVlckNvbm5lY3Rpb246OmdldFBhcmFtZXRl
cnMoUlRDUnRwU2VuZGVyJiBzZW5kZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+
Z2V0UGFyYW1ldGVycyhzZW5kZXIpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaXNw
YXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwg
ImRpc3BhdGNoaW5nICciLCBldmVudC50eXBlKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNDI3
YmYyMjNlYjhlNDE5YzM5YjJiNWVmMTQ1ZGZhNmQxMDhkMWRlNy4uODRlYjliYzlhNTVhNWE3MTc0
YzdlMGZiMWU3ZTk0ZTdkMzE1ZDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjYsNyArNjYsNiBAQCBz
dHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IHsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24g
ZmluYWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPgotICAgICwg
cHVibGljIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEKICAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKQEAgLTEwOSw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Nsb3Nl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvblN0YXRlID09IFJUQ1BlZXJDb25uZWN0aW9u
U3RhdGU6OkNsb3NlZDsgfQogICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0b3BwZWQ7IH0KIAorICAgIHZvaWQgYWRkSW50ZXJuYWxUcmFuc2NlaXZlcihSZWY8UlRDUnRw
VHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpIHsgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdU
Rk1vdmUodHJhbnNjZWl2ZXIpKTsgfQorCiAgICAgLy8gNS4xIFJUQ1BlZXJDb25uZWN0aW9uIGV4
dGVuc2lvbnMKICAgICBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSVENSdHBT
ZW5kZXI+PiYgZ2V0U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQtPnNl
bmRlcnMoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0
cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJT
ZXQtPnJlY2VpdmVycygpOyB9CkBAIC0xNDQsNyArMTQ1LDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIAotICAgIFJUQ1J0cFNlbmRlcjo6
QmFja2VuZCYgc2VuZGVyQmFja2VuZCgpIHsgcmV0dXJuICp0aGlzOyB9CiAgICAgdm9pZCBmaXJl
RXZlbnQoRXZlbnQmKTsKIAogICAgIHZvaWQgZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygp
IHsgbV9iYWNrZW5kLT5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KQEAgLTE4Niwx
MSArMTg2LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQgdG8gYmUgdGhlIEJhY2tlbmQKLSAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tl
bmQKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwotICAgIFJUQ1J0
cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsKLQog
ICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7CiAg
ICAgdm9pZCBkb1N0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggM2Q2NzMxOWM5MWJjNjNjNTc3YmI4MjBi
MGE4NzBlMjZkNzVlNDBhMC4uOGZiZTlhMjk1OTZmNmFkZDA1OTVkMjE3NWMwNjA3ZmUxYjU3ZDZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIEJhY2tlbmQqIGJhY2tlbmQpCitSVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIo
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNl
aXZlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShX
VEZNb3ZlKHRyYWNrKSkKLSAgICAsIG1fYmFja2VuZChiYWNrZW5kKQorICAgICwgbV9iYWNrZW5k
KFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCAxNGFiMDY5MzQ3MDk5ZDRjOGYy
NjFjODk2MjI5MGFiNzE3YTJiMmE5Li5kYjZiNzQ5OGI5ZTA4MzkxOWFiYjU3YWY3MWFjYjRmYjY0
ZGU1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAK
ICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQwLDMxICs0MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJUQ1J0cFJlY2VpdmVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2VuZCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5CYWNrZW5kKCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRl
cnMgZ2V0UGFyYW1ldGVycygpIHsgcmV0dXJuIHsgfTsgfQotICAgIH07Ci0KLSAgICBzdGF0aWMg
UmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ss
IEJhY2tlbmQqIGJhY2tlbmQgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2
ZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRy
PFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kID0gbnVsbHB0cikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVyKFdURk1vdmUodHJhY2spLCBi
YWNrZW5kKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9w
KCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgYSBVbmlxdWVSZWYgaGVyZS4KLSAg
ICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmQ+JiYgYmFja2VuZCkgeyBt
X2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9Ci0KLSAgICBib29sIGlzRGlzcGF0Y2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEaXNwYXRjaGVkOyB9Ci0gICAgdm9pZCBzZXREaXNwYXRjaGVk
KGJvb2wgaXNEaXNwYXRjaGVkKSB7IG1faXNEaXNwYXRjaGVkID0gaXNEaXNwYXRjaGVkOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+
JiYgYmFja2VuZCkgeyBtX2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9CiAgICAgUlRDUnRw
UGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5k
LT5nZXRQYXJhbWV0ZXJzKCkgOiBSVENSdHBQYXJhbWV0ZXJzKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgQmFja2Vu
ZCopOworICAgIFJUQ1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKIAotICAgIGJvb2wgbV9pc0Rpc3Bh
dGNoZWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kPiBtX2JhY2tlbmQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gbV9iYWNrZW5kOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjBmZWYzNGFlZjA0OTdjYzdmZjE2Mzk0ZmYyZmFjMDBhMmY1Y2UyYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJfUlRDKQorCisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+UlRDUnRwUmVjZWl2ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwg
UlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9OyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApp
bmRleCAxOGRjOWJkNjRkYTNiMWVhODljMmMwNmNmM2M5OWE5OWEwMmUwNzExLi42YTNkMWJjZDkw
ODg2ZTAzM2Q1MTI0ZGM5ZDRlYjRiNmRmZGZiNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC0zNSwyMyArMzUsMjMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBTZW5k
ZXI6OmNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFN0cmluZz4m
JiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJU
Q1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8
U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFj
a2VuZD4mJiBiYWNrZW5kKQogewotICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBSVENS
dHBTZW5kZXIoU3RyaW5nKHRyYWNrLT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwg
YmFja2VuZCkpOworICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIo
U3RyaW5nKHRyYWNrLT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgV1RGTW92ZShi
YWNrZW5kKSkpOwogICAgIHNlbmRlci0+c2V0VHJhY2soV1RGTW92ZSh0cmFjaykpOwogICAgIHJl
dHVybiBzZW5kZXI7CiB9CiAKLVJlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFj
a2VuZCYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0
cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1
bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1l
ZGlhU3RyZWFtSWRzKSwgYmFja2VuZCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0
cFNlbmRlcihXVEZNb3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZN
b3ZlKGJhY2tlbmQpKSk7CiB9CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmluZyYm
IHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYgYmFj
a2VuZCkKK1JUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRl
ckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgpCiAg
ICAgLCBtX3RyYWNrS2luZChXVEZNb3ZlKHRyYWNrS2luZCkpCiAgICAgLCBtX21lZGlhU3RyZWFt
SWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKQotICAgICwgbV9iYWNrZW5kKCZiYWNrZW5kKQor
ICAgICwgbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDg5NThkZjY3
OTEzMmQ0ZjhlNmYyNWQ4NGJkMGVjMTE3OTM2NzZmY2EuLjRlMWU0YjVlM2E3ZmE1ZjdkMTdjMGRm
NzM0OTZmNmVhZDIwZWYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJS
VENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGlj
IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2VuZCB7
Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNl
bmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVy
cyhSVENSdHBTZW5kZXImKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQoKSA9
IGRlZmF1bHQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUo
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMs
IEJhY2tlbmQmKTsKLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFN0cmluZyYm
IHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOwor
ICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENS
dHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRl
KFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgY29uc3QgU3RyaW5n
JiB0cmFja0lkKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lkOyB9CiAgICAgY29uc3QgU3RyaW5n
JiB0cmFja0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrS2luZDsgfQpAQCAtNjUsMTIgKzU5
LDEyIEBAIHB1YmxpYzoKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKIAog
cHJpdmF0ZToKLSAgICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgUlRDUnRwU2VuZGVyKFN0cmlu
ZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlx
dWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgU3RyaW5nIG1fdHJhY2tJZDsK
ICAgICBTdHJpbmcgbV90cmFja0tpbmQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9tZWRpYVN0cmVh
bUlkczsKLSAgICBCYWNrZW5kKiBtX2JhY2tlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0
cFNlbmRlckJhY2tlbmQ+IG1fYmFja2VuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXJCYWNrZW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQyNThhNGMzZTljZjQ5MTUzODI2NDg2ODE2NjE3
MmZmYzQwYTRkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CitjbGFzcyBSVENSdHBTZW5kZXI7CisKK2NsYXNzIFJU
Q1J0cFNlbmRlckJhY2tlbmQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBh
cmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgflJUQ1J0cFNl
bmRlckJhY2tlbmQoKSA9IGRlZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggNmE1NGZhYWFkMTkzMDc4NmNlN2MyOGZhOGQ2ZGMwZWMxOGYx
ZDY3Ni4uYjVlYmI3ZDM1NmM4Mjk0NWVlODI0MTkxYzE1N2E0Yzk2ZWMxMGRlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTMyLDcgKzMyLDEwIEBA
CiAjaW5jbHVkZSAiTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlk
ZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKyNpbmNsdWRl
ICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDU3RhdHND
b2xsZWN0b3IuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNl
LmgiCkBAIC01NywxMSArNjAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBp
bmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQotewot
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkp
OwotfQotCiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50KExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExpYldlYlJUQ1By
b3ZpZGVyJiBjbGllbnQpCiAgICAgOiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVj
dGlvbikKICAgICAsIG1fcGVlckNvbm5lY3Rpb25GYWN0b3J5KCpjbGllbnQuZmFjdG9yeSgpKQpA
QCAtMzY2LDE2ICszNjQsNiBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90
ZVN0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJikKIHsKIH0KIAotY2xhc3MgUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2VpdmVyOjpCYWNrZW5k
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBSVENSdHBSZWNlaXZlckJhY2tlbmQocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIpIDog
bV9ydGNSZWNlaXZlcihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkgeyB9Ci1wcml2YXRlOgotICAgIFJU
Q1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIGZpbmFsOwotCi0gICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IG1fcnRjUmVjZWl2ZXI7Ci19Owot
Ci0KIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIsIGNv
bnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50
ZXJmYWNlPj4mIHJ0Y1N0cmVhbXMpCiB7CiAgICAgQVNTRVJUKHJ0Y1JlY2VpdmVyKTsKQEAgLTQw
NSw3ICszOTMsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNr
KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAg
ICByZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPFJUQ1J0cFJlY2VpdmVyQmFj
a2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNS
ZWNlaXZlcikpKTsKICAgICAKICAgICBhdXRvKiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwog
ICAgIEFTU0VSVCh0cmFjayk7CkBAIC02MjYsOTQgKzYxNCw2IEBAIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6
c3RyaW5nCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6RW5j
b2RpbmdQYXJhbWV0ZXJzIGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBF
bmNvZGluZ1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCi17Ci0gICAgUlRDUnRwUGFyYW1ldGVy
czo6RW5jb2RpbmdQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAocnRjUGFyYW1ldGVy
cy5zc3JjKQotICAgICAgICBwYXJhbWV0ZXJzLnNzcmMgPSAqcnRjUGFyYW1ldGVycy5zc3JjOwot
ICAgIGlmIChydGNQYXJhbWV0ZXJzLnJ0eCAmJiBydGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYykKLSAg
ICAgICAgcGFyYW1ldGVycy5ydHguc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYzsKLSAg
ICBpZiAocnRjUGFyYW1ldGVycy5mZWMgJiYgcnRjUGFyYW1ldGVycy5mZWMtPnNzcmMpCi0gICAg
ICAgIHBhcmFtZXRlcnMuZmVjLnNzcmMgPSAqcnRjUGFyYW1ldGVycy5mZWMtPnNzcmM7Ci0gICAg
aWYgKHJ0Y1BhcmFtZXRlcnMuZHR4KSB7Ci0gICAgICAgIHN3aXRjaCAoKnJ0Y1BhcmFtZXRlcnMu
ZHR4KSB7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkRJU0FCTEVEOgotICAgICAg
ICAgICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkRpc2Fi
bGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6
OkVOQUJMRUQ6Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6
OkR0eFN0YXR1czo6RW5hYmxlZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBwYXJhbWV0ZXJzLmFj
dGl2ZSA9IHJ0Y1BhcmFtZXRlcnMuYWN0aXZlOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9i
aXRyYXRlX2JwcykKLSAgICAgICAgcGFyYW1ldGVycy5tYXhCaXRyYXRlID0gKnJ0Y1BhcmFtZXRl
cnMubWF4X2JpdHJhdGVfYnBzOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGUp
Ci0gICAgICAgIHBhcmFtZXRlcnMubWF4RnJhbWVyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2Zy
YW1lcmF0ZTsKLSAgICBwYXJhbWV0ZXJzLnJpZCA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVy
cy5yaWQpOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieSkK
LSAgICAgICAgcGFyYW1ldGVycy5zY2FsZVJlc29sdXRpb25Eb3duQnkgPSAqcnRjUGFyYW1ldGVy
cy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnk7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0K
LQotc3RhdGljIGlubGluZSBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0
ZXJzIGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVy
RXh0ZW5zaW9uUGFyYW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0
ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJhbWV0
ZXJzLnVyaSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy51cmkpOwotICAgIHBhcmFtZXRl
cnMuaWQgPSBydGNQYXJhbWV0ZXJzLmlkOwotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQYXJhbWV0ZXJzIGZpbGxDb2Rl
Y1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBDb2RlY1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRl
cnMpCi17Ci0gICAgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
Ci0KLSAgICBwYXJhbWV0ZXJzLnBheWxvYWRUeXBlID0gcnRjUGFyYW1ldGVycy5wYXlsb2FkX3R5
cGU7Ci0gICAgcGFyYW1ldGVycy5taW1lVHlwZSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVy
cy5taW1lX3R5cGUoKSk7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuY2xvY2tfcmF0ZSkKLSAgICAg
ICAgcGFyYW1ldGVycy5jbG9ja1JhdGUgPSAqcnRjUGFyYW1ldGVycy5jbG9ja19yYXRlOwotICAg
IGlmIChydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVscykKLSAgICAgICAgcGFyYW1ldGVycy5jaGFu
bmVscyA9ICpydGNQYXJhbWV0ZXJzLm51bV9jaGFubmVsczsKLQotICAgIHJldHVybiBwYXJhbWV0
ZXJzOwotfQotCi1zdGF0aWMgUlRDUnRwUGFyYW1ldGVycyBmaWxsUnRwUGFyYW1ldGVycyhjb25z
dCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJzLnRyYW5zYWN0aW9uSWQgPSBmcm9t
U3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25faWQpOwotICAgIGZvciAoYXV0byYg
cnRjRW5jb2RpbmcgOiBydGNQYXJhbWV0ZXJzLmVuY29kaW5ncykKLSAgICAgICAgcGFyYW1ldGVy
cy5lbmNvZGluZ3MuYXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMocnRjRW5jb2RpbmcpKTsK
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lv
bnMpCi0gICAgICAgIHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoZmlsbEhlYWRl
ckV4dGVuc2lvblBhcmFtZXRlcnMoZXh0ZW5zaW9uKSk7Ci0gICAgZm9yIChhdXRvJiBjb2RlYyA6
IHJ0Y1BhcmFtZXRlcnMuY29kZWNzKQotICAgICAgICBwYXJhbWV0ZXJzLmNvZGVjcy5hcHBlbmQo
ZmlsbENvZGVjUGFyYW1ldGVycyhjb2RlYykpOwotCi0gICAgc3dpdGNoIChydGNQYXJhbWV0ZXJz
LmRlZ3JhZGF0aW9uX3ByZWZlcmVuY2UpIHsKLSAgICAvLyBGSVhNRTogU3VwcG9ydCBEZWdyYWRh
dGlvblByZWZlcmVuY2U6OkRJU0FCTEVELgotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblBy
ZWZlcmVuY2U6OkRJU0FCTEVEOgotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVu
Y2U6Ok1BSU5UQUlOX0ZSQU1FUkFURToKLSAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblBy
ZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1haW50
YWluRnJhbWVyYXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRp
b25QcmVmZXJlbmNlOjpNQUlOVEFJTl9SRVNPTFVUSU9OOgotICAgICAgICBwYXJhbWV0ZXJzLmRl
Z3JhZGF0aW9uUHJlZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVy
ZW5jZTo6TWFpbnRhaW5SZXNvbHV0aW9uOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdlYnJ0
Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCQUxBTkNFRDoKLSAgICAgICAgcGFyYW1ldGVycy5k
ZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZl
cmVuY2U6OkJhbGFuY2VkOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIHJldHVybiBwYXJh
bWV0ZXJzOwotfQotCi1SVENSdHBQYXJhbWV0ZXJzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6Z2V0
UGFyYW1ldGVycygpCi17Ci0gICAgcmV0dXJuIGZpbGxSdHBQYXJhbWV0ZXJzKG1fcnRjUmVjZWl2
ZXItPkdldFBhcmFtZXRlcnMoKSk7Ci19Ci0KIFJUQ1J0cFBhcmFtZXRlcnMgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Z2V0UlRDUnRwU2VuZGVyUGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRl
cikKIHsKICAgICBhdXRvIHJ0Y1NlbmRlciA9IG1fc2VuZGVycy5nZXQoJnNlbmRlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApp
bmRleCA0NTgwYTQ0NzZiYjQ1NTY1MTA5NTM3Mjc4NjE0Y2RkNTVlYjY1ZWM2Li5jN2MwNjQ0Yjc0
N2M2NTdkNDRjYTMwY2Q4MDc1MmVjNThjN2EwZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMxLDYgKzMxLDggQEAK
ICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgpAQCAtMjU0
LDcgKzI1Niw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZl
ciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNr
SWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVl
ckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsK
IAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0
cFNlbmRlcjo6Y3JlYXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVy
LmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFu
c2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUo
InZpZGVvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigp
KTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAt
Mjc2LDcgKzI3OSw4IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNl
aXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2Ug
PSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRy
YWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1f
cGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigp
KTsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJU
Q1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2Vp
dmVyLmNvcHlSZWYoKSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0
cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVh
dGUoImF1ZGlvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJl
ZigpKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBt
X3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApA
QCAtMzI3LDEwICszMzEsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1cm4g
bV9lbmRwb2ludC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIp
CitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYg
dHJhY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsKLSAgICBBU1NF
UlQoc2VuZGVyLnRyYWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5k
ZXIsICpzZW5kZXIudHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOworICAgIGlmICgh
c2VuZGVyKSB7CisgICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpnZXROZXh0TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJh
Y2sua2luZCgpOworICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKTsKKworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0
byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVjdG9y
PFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAg
ICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFj
a0tpbmQsIHRyYWNrSWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNj
ZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKwor
ICAgICAgICAvLyBUaGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFu
IG0tbGluZSAobnVsbCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHByb3Zpc2lvbmFs
IG1pZCBpZiB0aGUgdHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCisgICAg
ICAgIHRyYW5zY2VpdmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7CisKKyAg
ICAgICAgc2VuZGVyID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKKyAg
ICB9CisKKyAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRyYWNrLCBtZWRp
YVN0cmVhbUlkcykpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFi
bGUgdG8gYWRkIHRyYWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2VuZGVyKTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29u
c3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51
bGxwdHIpOworICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5n
KHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwor
ICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5p
dCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQorCitFeGNlcHRp
b25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBS
VENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0g
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0
cik7CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFjay5jb3B5UmVm
KCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGlmICgh
bV9lbmRwb2ludC0+YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9yPFN0cmluZz4g
eyB9KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVu
YWJsZSB0byBhZGQgdHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2Vp
dmVyKFdURk1vdmUoc2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5raW5kKCkpOwor
fQorCitSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNlbmRlciwgY29u
c3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJU
Q1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJU
Q1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVSZWNlaXZlcih0
cmFuc2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFuc2NlaXZlci0+
c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2VpdmVyLT5zZXRE
aXJlY3Rpb24oaW5pdC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRl
cm5hbFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHRyYW5z
Y2VpdmVyOwogfQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5
UmVtb3ZlZFRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA0MzdiN2U2MGMwMDRmZjQ3
NjU5OGQyOTM2YmE2N2VlYmQwNWM2ZjBjLi5kMTBiYjFhNjU0NTA5MzMzMGJlOWI2ZjcyNGViOWFm
NjE4ZGM2MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFj
ZTsKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwog
Y2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92aWRlciYpOwpA
QCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJjZXMoKSBjb25z
dCB7IHJldHVybiBtX2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhhc1ZpZGVvU291
cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQogCisgICAgdm9p
ZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBh
cmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkb0Ny
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQ3JlYXRlQW5z
d2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwyMiArNzgsMjMgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBw
ZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFj
ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJh
bWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBlbXVsYXRlUGxh
dGZvcm1FdmVudChjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFwcGx5Um90YXRp
b25Gb3JPdXRnb2luZ1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5kIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7
CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0aW9uOyB9CiAg
ICAgdm9pZCBhZGRBdWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYm
KTsKICAgICB2b2lkIGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U+JiYpOwogCiAgICAgdm9pZCBnZXRTdGF0c1N1Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21p
c2UmLCBSZWY8UlRDU3RhdHNSZXBvcnQ+JiYpOwogCi0gICAgYm9vbCBub3RpZnlBZGRlZFRyYWNr
KFJUQ1J0cFNlbmRlciYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+
PiBhZGRUcmFjayhSVENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5k
ZXImKSBmaW5hbDsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFk
ZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5z
Y2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlcklu
aXQmKSBmaW5hbDsKKwogICAgIHN0cnVjdCBWaWRlb1JlY2VpdmVyIHsKICAgICAgICAgUmVmPFJU
Q1J0cFJlY2VpdmVyPiByZWNlaXZlcjsKICAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZT4gc291cmNlOwpAQCAtMTA0LDYgKzEwOSw4IEBAIHByaXZhdGU6CiBwcml2YXRlOgog
ICAgIGJvb2wgaXNMb2NhbERlc2NyaXB0aW9uU2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0xvY2FsRGVzY3JpcHRpb25TZXQ7IH0KIAorICAgIFJlZjxSVENSdHBUcmFuc2NlaXZlcj4gY29t
cGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmLCBjb25zdCBSVENSdHBUcmFu
c2NlaXZlckluaXQmLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kKTsKKwogICAgIFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBtX2VuZHBvaW50OwogICAg
IGJvb2wgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Jl
bW90ZURlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZjRlN2NjYWZlNjMxMzNi
ODM1YjAxZGIyZDBmN2JhZWFhMDk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oIgorCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKwor
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JUQ1J0cFBhcmFtZXRlcnMgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQ
YXJhbWV0ZXJzKCkKK3sKKyAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZl
ci0+R2V0UGFyYW1ldGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhY2UyZTQyZGE2
MzFlZTk3MTJkOGFkOGVjYjY5ZDg0YjZjZWEyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMp
ICYmIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNs
dWRlICJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBw
dXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIK
KworI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaD4KKyNpbmNsdWRl
IDx3ZWJydGMvcnRjX2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25v
c3RpYyBwb3AKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIpCisgICAg
ICAgIDogbV9ydGNSZWNlaXZlcihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIGZpbmFsOwor
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IG1f
cnRjUmVjZWl2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4NjNhOTQyYzhlZDMzNjk5
YjA4MTI0NmNkNjdkNjg4NmNmZWMxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDVXRpbHMuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlJUQ1J0cFNlbmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVy
LCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8g
V2ViUlRDIGJhY2tlbmQiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXNlbmRlci50cmFjaygpICYmIHRyYWNrKSB7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLT5jb25uZWN0aW9uKCkuZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB0cmFjay5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5yZXBsYWNlVHJhY2soc2VuZGVyLCBX
VEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK1JUQ1J0cFBhcmFtZXRlcnMg
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNl
bmRlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcnRjU2VuZGVyKSB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgYmFja2VuZCBhbmQgc2hvdWxk
IGRpcmVjdGx5IGhhdmUgbV9ydGNTZW5kZXIgaGVyZS4KKyAgICAgICAgaWYgKCFtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZC0+Z2V0UGFyYW1ldGVycyhzZW5kZXIpOworICAgIH0KKyAg
ICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNTZW5kZXItPkdldFBhcmFtZXRlcnMoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5YjljZWFmMGMyZGVhYzE3MmYwMjRmNDVkODEwMDA0NDMw
ZjRlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFj
cm9zLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCisKKyNpbmNsdWRlIDx3ZWJydGMv
YXBpL3J0cHNlbmRlcmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29w
ZWRfcmVmX3B0ci5oPgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKKworY2xh
c3MgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBTZW5kZXJC
YWNrZW5kIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
KExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPiYmIHJ0Y1NlbmRlcikKKyAgICAgICAgOiBt
X3BlZXJDb25uZWN0aW9uQmFja2VuZChtYWtlV2Vha1B0cigmYmFja2VuZCkpCisgICAgICAgICwg
bV9ydGNTZW5kZXIoV1RGTW92ZShydGNTZW5kZXIpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHNldFJUQ1NlbmRlcihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZh
Y2U+JiYgcnRjU2VuZGVyKSB7IG1fcnRjU2VuZGVyID0gV1RGTW92ZShydGNTZW5kZXIpOyB9Cisg
ICAgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKSBmaW5hbDsKKyAgICBSVENSdHBQYXJh
bWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRDUnRwU2VuZGVyJikgY29uc3QgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRl
ckludGVyZmFjZT4gbV9ydGNTZW5kZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZTg1NDExNTg5NTJhODY5MjIzZGRjNzUyNTMyNjE0NzE4MTk3OGUzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgVVNF
KExJQldFQlJUQykKKworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJU
Q1J0cFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBmaWxs
RW5jb2RpbmdQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwRW5jb2RpbmdQYXJhbWV0ZXJzJiBy
dGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOworCisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc3NyYykKKyAgICAgICAgcGFy
YW1ldGVycy5zc3JjID0gKnJ0Y1BhcmFtZXRlcnMuc3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVy
cy5ydHggJiYgcnRjUGFyYW1ldGVycy5ydHgtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMucnR4
LnNzcmMgPSAqcnRjUGFyYW1ldGVycy5ydHgtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMu
ZmVjICYmIHJ0Y1BhcmFtZXRlcnMuZmVjLT5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLmZlYy5z
c3JjID0gKnJ0Y1BhcmFtZXRlcnMuZmVjLT5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLmR0
eCkgeworICAgICAgICBzd2l0Y2ggKCpydGNQYXJhbWV0ZXJzLmR0eCkgeworICAgICAgICBjYXNl
IHdlYnJ0Yzo6RHR4U3RhdHVzOjpESVNBQkxFRDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4
ID0gUlRDUnRwUGFyYW1ldGVyczo6RHR4U3RhdHVzOjpEaXNhYmxlZDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIHdlYnJ0Yzo6RHR4U3RhdHVzOjpFTkFCTEVEOgorICAgICAgICAg
ICAgcGFyYW1ldGVycy5kdHggPSBSVENSdHBQYXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkVuYWJsZWQ7
CisgICAgICAgIH0KKyAgICB9CisgICAgcGFyYW1ldGVycy5hY3RpdmUgPSBydGNQYXJhbWV0ZXJz
LmFjdGl2ZTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5tYXhfYml0cmF0ZV9icHMpCisgICAgICAg
IHBhcmFtZXRlcnMubWF4Qml0cmF0ZSA9ICpydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwczsK
KyAgICBpZiAocnRjUGFyYW1ldGVycy5tYXhfZnJhbWVyYXRlKQorICAgICAgICBwYXJhbWV0ZXJz
Lm1heEZyYW1lcmF0ZSA9ICpydGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGU7CisgICAgcGFyYW1l
dGVycy5yaWQgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMucmlkKTsKKyAgICBpZiAocnRj
UGFyYW1ldGVycy5zY2FsZV9yZXNvbHV0aW9uX2Rvd25fYnkpCisgICAgICAgIHBhcmFtZXRlcnMu
c2NhbGVSZXNvbHV0aW9uRG93bkJ5ID0gKnJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9k
b3duX2J5OworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRD
UnRwUGFyYW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBmaWxsSGVhZGVyRXh0ZW5z
aW9uUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMm
IHJ0Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9u
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy51cmkgPSBmcm9tU3RkU3Ry
aW5nKHJ0Y1BhcmFtZXRlcnMudXJpKTsKKyAgICBwYXJhbWV0ZXJzLmlkID0gcnRjUGFyYW1ldGVy
cy5pZDsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCitzdGF0aWMgaW5saW5lIFJUQ1J0
cFBhcmFtZXRlcnM6OkNvZGVjUGFyYW1ldGVycyBmaWxsQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IHdl
YnJ0Yzo6UnRwQ29kZWNQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBh
cmFtZXRlcnM6OkNvZGVjUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy5w
YXlsb2FkVHlwZSA9IHJ0Y1BhcmFtZXRlcnMucGF5bG9hZF90eXBlOworICAgIHBhcmFtZXRlcnMu
bWltZVR5cGUgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMubWltZV90eXBlKCkpOworICAg
IGlmIChydGNQYXJhbWV0ZXJzLmNsb2NrX3JhdGUpCisgICAgICAgIHBhcmFtZXRlcnMuY2xvY2tS
YXRlID0gKnJ0Y1BhcmFtZXRlcnMuY2xvY2tfcmF0ZTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5u
dW1fY2hhbm5lbHMpCisgICAgICAgIHBhcmFtZXRlcnMuY2hhbm5lbHMgPSAqcnRjUGFyYW1ldGVy
cy5udW1fY2hhbm5lbHM7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworUlRDUnRwUGFy
YW1ldGVycyBmaWxsUnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMmIHJ0
Y1BhcmFtZXRlcnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAg
cGFyYW1ldGVycy50cmFuc2FjdGlvbklkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnRy
YW5zYWN0aW9uX2lkKTsKKyAgICBmb3IgKGF1dG8mIHJ0Y0VuY29kaW5nIDogcnRjUGFyYW1ldGVy
cy5lbmNvZGluZ3MpCisgICAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmFwcGVuZChmaWxsRW5j
b2RpbmdQYXJhbWV0ZXJzKHJ0Y0VuY29kaW5nKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBydGNQYXJhbWV0ZXJzLmhlYWRlcl9leHRlbnNpb25zKQorICAgICAgICBwYXJhbWV0ZXJzLmhl
YWRlckV4dGVuc2lvbnMuYXBwZW5kKGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGV4dGVu
c2lvbikpOworICAgIGZvciAoYXV0byYgY29kZWMgOiBydGNQYXJhbWV0ZXJzLmNvZGVjcykKKyAg
ICAgICAgcGFyYW1ldGVycy5jb2RlY3MuYXBwZW5kKGZpbGxDb2RlY1BhcmFtZXRlcnMoY29kZWMp
KTsKKworICAgIHN3aXRjaCAocnRjUGFyYW1ldGVycy5kZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSB7
CisgICAgLy8gRklYTUU6IFN1cHBvcnQgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRC4K
KyAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRDoKKyAgICBj
YXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9GUkFNRVJBVEU6Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVy
czo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNYWludGFpbkZyYW1lcmF0ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fUkVT
T0xVVElPTjoKKyAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENS
dHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1haW50YWluUmVzb2x1dGlvbjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6
QkFMQU5DRUQ6CisgICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRD
UnRwUGFyYW1ldGVyczo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCYWxhbmNlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgfTsKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworfTsgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
VXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMjZjM2NmMzVlOTVkYzM4YTFkNzhhYThjYzYyNmNiNGM5MmVl
MDEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVjdCBSdHBQYXJhbWV0
ZXJzOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENSdHBQYXJhbWV0ZXJz
OworCitSVENSdHBQYXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRw
UGFyYW1ldGVycyYpOworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEo
KSwgdmFsdWUubGVuZ3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmYzc2OTAzNDQzN2IyN2Q3YmQ1NGVlNjMwNjE1Y2Zk
ODAxZDNjM2QuLjEzYmFhYjI2MTMxMmMyMzRlODZlNzIzZWY2YmJkNzcyZWMwODZlMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTExMDEsNiArMTEwMSw5IEBACiAJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3Jl
VGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTgyMDU0NzFF
NTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0Nv
bnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTg0RjUxNjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NEY1MTUxRUFG
MDU5ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg2QkQzRTIxM0VFMzQwMDAwMTgyNkYg
LyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMUEwNDkyMTNFRERGRDAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmNw
cCAqLzsgfTsKKwkJNDE4NkJEM0YyMTNFRTM0MzAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEMUEwNEIyMTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwICovOyB9OworCQk0MTg2QkQ0MDIxM0VFMzQ1MDAwMTgyNkYgLyogTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRDFBMDRBMjEzRURERkUwMDYzRkI2QiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQuY3BwICovOyB9OwogCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1p
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
ODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxOEEwNkQwMTMzQzA0RDUwMENE
Mzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNo
ZXIuaCAqLzsgfTsKIAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3Jr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4
ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87IH07CkBAIC03Mjc2
LDYgKzcyNzksOCBAQAogCQk0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcgLyogUlRDQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODIwNTQ4MUU1M0VBQUQwMEQ2MjIwNyAvKiBS
VENDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJU
Q0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg0RjUxNTFF
QUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBPcmllbnRhdGlvbk5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODZCRDNCMjEzRURFMzgwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
Lmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODZCRDNEMjEzRURFMzkwMDAxODI2RiAvKiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3Jt
U3VibWlzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4NUI5MjExQjZG
REE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybVN1Ym1pc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MThBMDZDRTEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzM0NSw2ICs3MzUwLDEyIEBACiAJCTQxRDEyOUNBMUYz
RDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRDEyOUNDMUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDQxRjNEMEY2NjAw
RDE1RTQ3IC8qIENhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRDFBMDQ2MjEzRURERUIwMDYzRkI2QiAvKiBSVENSdHBTZW5kZXJCYWNrZW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNlbmRlckJhY2tlbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMUEwNDgyMTNFRERFQjAwNjNGQjZCIC8q
IFJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENSdHBSZWNlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFEMUEwNDkyMTNFRERGRDAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENV
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDFBMDRBMjEzRURERkUw
MDYzRkI2QiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MUQxQTA0QjIxM0VEREZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMUEwNEMyMTNFRERGRjAwNjNGQjZCIC8qIExpYldlYlJU
Q1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJy
dGMvTGliV2ViUlRDVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMjhE
MEIyMTM5RTAxRDAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNw
cDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDI4RDBDMjEzOUUwMUUwMEY0MjA2RiAvKiBMaWJXZWJS
VENTdGF0c0NvbGxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENTdGF0c0NvbGxlY3Rvci5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDUxQkIyMUU0RTJFODEw
MDEzMUE1QiAvKiBMaWJXZWJSVENBdWRpb0Zvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMaWJXZWJSVENBdWRpb0Zvcm1hdC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldl
YlJUQ0F1ZGlvRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTA1MSwx
MiArMTUwNjIsMTIgQEAKIAkJMDcyMjFCNDYxN0NFQzMyNzAwODQ4RTUxIC8qIG1lZGlhc3RyZWFt
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MTc2MTJB
QTFFM0E5OTIzMDBDM0Q4MUQgLyogbGlid2VicnRjICovLAogCQkJCTQxQzdFMTA1MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8sCiAJCQkJNDFD
N0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgg
Ki8sCiAJCQkJNDFDN0UxMDgxRTZBQTM3QzAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmlkbCAqLywKIAkJCQk5M0E4MDYxMTFFMDNCNTFDMDA4QTFGMjYgLyogRG91Ymxl
UmFuZ2UuaCAqLywKIAkJCQk5M0E4MDYxMjFFMDNCNTFDMDA4QTFGMjYgLyogRG91YmxlUmFuZ2Uu
aWRsICovLAorCQkJCTQxNzYxMkFBMUUzQTk5MjMwMEMzRDgxRCAvKiBsaWJ3ZWJydGMgKi8sCiAJ
CQkJOTNBODA2MTMxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5oICovLAogCQkJCTkzQTgw
NjE0MUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaWRsICovLAogCQkJCTE1OUFFODJBMUIz
QTQwMkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8uY3BwICovLApAQCAtMTUxNDEsOSArMTUx
NTIsMTEgQEAKIAkJCQk1RTJDNDM1NjFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwUmVjZWl2ZXIu
Y3BwICovLAogCQkJCTVFMkM0MzU3MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5o
ICovLAogCQkJCTVFMkM0MzU4MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5pZGwg
Ki8sCisJCQkJNDFEMUEwNDgyMTNFRERFQjAwNjNGQjZCIC8qIFJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5oICovLAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuY3Bw
ICovLAogCQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaCAqLywK
IAkJCQk1RTJDNDM1QjFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmlkbCAqLywKKwkJ
CQk0MUQxQTA0NjIxM0VEREVCMDA2M0ZCNkIgLyogUlRDUnRwU2VuZGVyQmFja2VuZC5oICovLAog
CQkJCTVFMkM0MzVEMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2Uu
aCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIu
Y3BwICovLAogCQkJCTVFNUUyQjExMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZl
ci5oICovLApAQCAtMTY4NTYsOCArMTY4NjksMTQgQEAKIAkJCQk0MTVBM0I3MzIxMzhFMjY0MDAx
QjRCQUEgLyogTGliV2ViUlRDT2JzZXJ2ZXJzLmggKi8sCiAJCQkJNDE3NjEyQUQxRTNBOTkzQjAw
QzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgKi8sCiAJCQkJNDE3
NjEyQUUxRTNBOTkzQjAwQzNEODFEIC8qIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
ICovLAorCQkJCTQxRDFBMDRBMjEzRURERkUwMDYzRkI2QiAvKiBMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQuY3BwICovLAorCQkJCTQxODZCRDNCMjEzRURFMzgwMDAxODI2RiAvKiBMaWJXZWJS
VENSdHBSZWNlaXZlckJhY2tlbmQuaCAqLywKKwkJCQk0MUQxQTA0QjIxM0VEREZFMDA2M0ZCNkIg
LyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8sCisJCQkJNDE4NkJEM0QyMTNFREUz
OTAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCAqLywKIAkJCQk0MUQyOEQw
QjIxMzlFMDFEMDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwICovLAogCQkJ
CTQxRDI4RDBDMjEzOUUwMUUwMEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5oICov
LAorCQkJCTQxRDFBMDQ5MjEzRURERkQwMDYzRkI2QiAvKiBMaWJXZWJSVENVdGlscy5jcHAgKi8s
CisJCQkJNDFEMUEwNEMyMTNFRERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmggKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IGxpYndlYnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0zMTY5Miw2ICszMTcxMSw3IEBACiAJCQkJNTM4RUM4Q0YxRjk5M0Y5RDAwNEQyMkE4IC8qIFVu
aWZpZWRTb3VyY2U5NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhEMDFGOTkzRjlEMDA0
RDIyQTggLyogVW5pZmllZFNvdXJjZTk1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQx
MUY5OTNGOUQwMDREMjJBOCAvKiBVbmlmaWVkU291cmNlOTYuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDE4NkJENDAyMTNFRTM0NTAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzhFQzhEMjFGOTkzRjlEMDA0RDIyQTggLyogVW5p
ZmllZFNvdXJjZTk3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzOEVDOEQzMUY5OTNGOUQwMDRE
MjJBOCAvKiBVbmlmaWVkU291cmNlOTguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RUM4RDQx
Rjk5M0Y5RDAwNEQyMkE4IC8qIFVuaWZpZWRTb3VyY2U5OS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxNzQxLDYgKzMxNzYxLDcgQEAKIAkJCQlERUNBN0Q5RjFGOUU2N0I1MDBFM0I2NjEgLyogVW5p
ZmllZFNvdXJjZTE0My5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0RBMDFGOUU2N0I1MDBF
M0I2NjEgLyogVW5pZmllZFNvdXJjZTE0NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUNBN0RB
MTFGOUU2N0I1MDBFM0I2NjEgLyogVW5pZmllZFNvdXJjZTE0NS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTg2QkQzRTIxM0VFMzQwMDAwMTgyNkYgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJREVDQTdEQTIxRjlFNjdCNTAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2Ux
NDYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdEQTMxRjlFNjdCNTAwRTNCNjYxIC8qIFVu
aWZpZWRTb3VyY2UxNDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdEQTQxRjlFNjdCNTAw
RTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UxNDguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTgxMyw2
ICszMTgzNCw3IEBACiAJCQkJREVDQTdFNTIxRjlFQkQ4MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3Vy
Y2UyMTUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNTMxRjlFQkQ4MzAwRTNCNjYxIC8q
IFVuaWZpZWRTb3VyY2UyMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNTQxRjlFQkQ4
MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyMTcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4
NkJEM0YyMTNFRTM0MzAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNTUxRjlFQkQ4MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3Vy
Y2UyMTguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNTYxRjlFQkQ4MzAwRTNCNjYxIC8q
IFVuaWZpZWRTb3VyY2UyMTkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVDQTdFNTcxRjlFQkQ4
MzAwRTNCNjYxIC8qIFVuaWZpZWRTb3VyY2UyMjAuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348823</attachid>
            <date>2018-09-04 10:01:13 -0700</date>
            <delta_ts>2018-09-04 11:48:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189171-20180904100113.patch</filename>
            <type>text/plain</type>
            <size>67060</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYzYmNhMGUzNThmNjc5
ZWNjNzExMDMwNjYxZjU2YTRhYWU1OTk0MC4uNmE5ZGViZTE3M2Y5M2M3YjYxYjY1MTQxODkwY2Rj
ZGFmNTM4MTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTA5LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgTGliV2Vi
UlRDIGJhY2tlbmRzIGZvciBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbGVqYW5kcm8gRy4gQ2FzdHJvLgorCisgICAgICAgIFJlbmFtZSBSVENSdHBTZW5kZXI6OkJh
Y2tlbmQgdG8gUlRDUnRwU2VuZGVyQmFja2VuZCwgZGl0dG8gZm9yIFJUQ1J0cFJlY2VpdmVyOjpC
YWNrZW5kLgorICAgICAgICBNYWtlIFJUQ1J0cFNlbmRlci9SVENSdHBSZWNlaXZlciBvd24gdGhl
aXIgYmFja2VuZC4KKyAgICAgICAgVGhpcyB3aWxsIGFsbG93IHRoZSBiYWNrZW5kcyB0byBvd24g
YSBsaWJ3ZWJydGMgc2VuZGVyL3JlY2VpdmVyIHJlZiBjb3VudGVkIG9iamVjdAorICAgICAgICBh
bmQgbWlnaHQgYWxsb3cgdXMgdG8gY2xlYW5seSBzZXBhcmF0ZSBjb2RlIGZyb20gdW5pZmllZCBw
bGFuIHZzIHBsYW4gQi4KKworICAgICAgICBVcGRhdGUgY29kZSBzbyB0aGF0IGxpYndlYnJ0YyBj
b2RlIHNwZWNpZmljIGNvZGUgaXMgbm93IGNyZWF0aW5nIHNlbmRlcnMgYW5kIHJlY2VpdmVycy4K
KyAgICAgICAgVGhpcyBtb3ZlcyBjb2RlIGZyb20gUlRDUGVlckNvbm5lY3Rpb24gZG93biB0byBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIGluIHBhcnRpY3VsYXIgZm9yCisgICAgICAg
IGFkZFRyYWNrIGFuZCBhZGRUcmFuc2NlaXZlciBtZXRob2RzLgorCisgICAgICAgIE1vdmVkIHNv
bWUgY29kZSBmcm9tIExpYldlYlJUQ01lZGlhRW5kcG9pbnQgdG8gTGliV2ViUlRDVXRpbHMgdG8g
ZWFzZSByZWFkYWJpbGl0eS4KKworICAgICAgICBBIGZ1dHVyZSBwYXRjaCB3aWxsIGFsbG93IHRv
IHRpZSB0aGUgbGlid2VicnRjIHNlbmRlci9yZWNlaXZlciB0byBXZWJLaXQgRE9NIHNlbmRlci9y
ZWNlaXZlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6ZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2spOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJl
Y2VpdmVyOjpSVENSdHBSZWNlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6c2V0QmFja2VuZCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmdldFBhcmFtZXRlcnMp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyQmFja2VuZC5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1Jl
Y2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnJlcGxhY2VUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxsRW5jb2RpbmdQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxDb2RlY1BhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsbFJ0cFBhcmFtZXRlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZnJv
bVN0ZFN0cmluZyk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE4LTA5LTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gYW5k
IE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzdXBwb3J0
IGZvciBwYXNzaW5nIEltYWdlQml0bWFwIHRvIHRleEltYWdlMkQvdGV4U3ViSW1hZ2UyRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBkMTdiYTU3ZGUyMGI0YmVhY2E1NDUzM2RhZDQ3YWM0NmE1ZTBm
YjhiLi4yZmRkMzMxN2U3MjJiZTZjMGEzZmFiNDMyMDY1NDM0YWFkY2ZlODIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTU2OCw2ICsxNTY4LDkgQEAgaWYgKFVTRV9MSUJXRUJSVEMpCiAgICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuY3BwCiAgICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRp
YUVuZHBvaW50LmNwcAogICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAorICAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKyAgICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcAogICAgICAg
KQogZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI4NzM0YjIwM2YyY2Nj
NTNmZDE2ZjRhOTY3OGU4NjU3YWJmYmJkZjMuLjMzMzExM2YyMGUzYzY1N2I0MzNiMTU5YTY3ZTFh
ZjQyODRmMWM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTUzMCw2ICs1MzAsMjEg
QEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om1hcmtBc05lZWRpbmdOZWdvdGlhdGlvbigp
CiAgICAgICAgIG1fcGVlckNvbm5lY3Rpb24uc2NoZWR1bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50
KCk7CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmFkZFRyYWNrKFJUQ1J0cFNlbmRlciosIE1lZGlhU3RyZWFtVHJhY2smLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiTm90IGltcGxlbWVudGVkIl9zIH07Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBU
cmFuc2NlaXZlcj4+IFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgfTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogV1RGTG9nQ2hhbm5lbCYgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2dDaGFubmVsKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGY4YTk3NmI3YTU4ZjVjNTEwYjc5ZDA5Nzlm
OGFhNTdhOGRkMGU0M2UuLjk1ZTBmOTkzMmNhZTBlNWFmNGY3YjI5NGUzOGRkNDE5NTA2NGZjODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBSVENJY2VDYW5k
aWRhdGU7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyOwog
Y2xhc3MgUlRDUnRwU2VuZGVyOworY2xhc3MgUlRDUnRwVHJhbnNjZWl2ZXI7CiBjbGFzcyBSVENT
ZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKIApAQCAtNTcsNiArNTgs
NyBAQCBzdHJ1Y3QgTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgUlRDQW5zd2Vy
T3B0aW9uczsKIHN0cnVjdCBSVENEYXRhQ2hhbm5lbEluaXQ7CiBzdHJ1Y3QgUlRDT2ZmZXJPcHRp
b25zOworc3RydWN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdDsKIAogbmFtZXNwYWNlIFBlZXJDb25u
ZWN0aW9uIHsKIHVzaW5nIFNlc3Npb25EZXNjcmlwdGlvblByb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMRGljdGlvbmFyeTxSVENTZXNzaW9uRGVzY3JpcHRpb246OkluaXQ+PjsKQEAgLTk5
LDExICsxMDEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhNZWRpYVN0
cmVhbVRyYWNrKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBS
ZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhbnNjZWl2
ZXJNaWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRlciYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gYWRkVHJh
Y2soUlRDUnRwU2VuZGVyKiwgTWVkaWFTdHJlYW1UcmFjayYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXImKSB7
IH0KIAotICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNl
bmRlciYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
UlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CisgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBhZGRUcmFuc2NlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwg
Y29uc3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0Jik7CiAKICAgICB2b2lkIG1hcmtBc05lZWRpbmdO
ZWdvdGlhdGlvbigpOwogICAgIGJvb2wgaXNOZWdvdGlhdGlvbk5lZWRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVnb3RpYXRpb25OZWVkZWQ7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGEwNGY4MWUx
ZmIxMjcyN2NmZmJkNTA4OTE4YjIzYzc2MGEyMmJhZWYuLjMxZTY5ZTIxNmI0OWU0NDQ0M2QyMmIy
YjRjNDFjYTE4YWVjZWViZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4KICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogbV90
cmFuc2NlaXZlclNldC0+bGlzdCgpKSB7CiAgICAgICAgIGF1dG8mIGV4aXN0aW5nU2VuZGVyID0g
dHJhbnNjZWl2ZXItPnNlbmRlcigpOwogICAgICAgICBpZiAoZXhpc3RpbmdTZW5kZXIudHJhY2tL
aW5kKCkgPT0gdHJhY2stPmtpbmQoKSAmJiBleGlzdGluZ1NlbmRlci50cmFja0lkKCkuaXNOdWxs
KCkgJiYgIXRyYW5zY2VpdmVyLT5oYXNTZW5kaW5nRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgICAg
IGV4aXN0aW5nU2VuZGVyLnNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKKyAgICAgICAgICAgIGV4
aXN0aW5nU2VuZGVyLnNldFRyYWNrKHRyYWNrLmNvcHlSZWYoKSk7CiAgICAgICAgICAgICBleGlz
dGluZ1NlbmRlci5zZXRNZWRpYVN0cmVhbUlkcyhXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSk7CiAg
ICAgICAgICAgICB0cmFuc2NlaXZlci0+ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgICAg
ICAgICAgc2VuZGVyID0gJmV4aXN0aW5nU2VuZGVyOwpAQCAtMTM3LDI3ICsxMzcsNyBAQCBFeGNl
cHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFzZW5kZXIp
IHsKLSAgICAgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6Omdl
dE5leHRNaWQoKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay0+a2lu
ZCgpOwotICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KTsKLQotICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1v
dmUodHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgKnRoaXMpOwotICAgICAgICBhdXRv
IHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwgdHJh
Y2tLaW5kLCB0cmFja0lkKTsKLSAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7Ci0K
LSAgICAgICAgLy8gVGhpcyB0cmFuc2NlaXZlciBpcyBub3QgeWV0IGFzc29jaWF0ZWQgd2l0aCBh
biBtLWxpbmUgKG51bGwgbWlkKSwgYnV0IHdlIG5lZWQgYQotICAgICAgICAvLyBwcm92aXNpb25h
bCBtaWQgaWYgdGhlIHRyYW5zY2VpdmVyIGlzIHVzZWQgdG8gY3JlYXRlIGFuIG9mZmVyLgotICAg
ICAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOwotCi0g
ICAgICAgIHNlbmRlciA9ICZ0cmFuc2NlaXZlci0+c2VuZGVyKCk7Ci0gICAgICAgIG1fdHJhbnNj
ZWl2ZXJTZXQtPmFwcGVuZChXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2JhY2tlbmQtPm5vdGlmeUFkZGVkVHJhY2soKnNlbmRlcikpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07
Ci0KLSAgICByZXR1cm4gUmVmPFJUQ1J0cFNlbmRlcj4geyAqc2VuZGVyIH07CisgICAgcmV0dXJu
IG1fYmFja2VuZC0+YWRkVHJhY2soc2VuZGVyLCB0cmFjay5nZXQoKSwgbWVkaWFTdHJlYW1JZHMp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2so
UlRDUnRwU2VuZGVyJiBzZW5kZXIpCkBAIC0xOTIsMzEgKzE3MiwxMSBAQCBFeGNlcHRpb25PcjxS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIo
QWRkVHJhbnNjZQogICAgICAgICBpZiAoa2luZCAhPSAiYXVkaW8iICYmIGtpbmQgIT0gInZpZGVv
IikKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAotICAgICAg
ICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyhraW5kKSwgVmVjdG9y
PFN0cmluZz4oKSwgKnRoaXMpOwotICAgICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZl
cihXVEZNb3ZlKHNlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwga2lu
ZCk7CisgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmFkZFRyYW5zY2VpdmVyKGtpbmQsIGluaXQp
OwogICAgIH0KIAotICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IFdURjo6Z2V0PFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOwotICAg
IGNvbnN0IFN0cmluZyYgdHJhY2tJZCA9IHRyYWNrLT5pZCgpOwotICAgIGNvbnN0IFN0cmluZyYg
dHJhY2tLaW5kID0gdHJhY2stPmtpbmQoKTsKLQotICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayksIFZlY3RvcjxTdHJpbmc+KCksICp0aGlzKTsKLSAg
ICBpZiAoIW1fYmFja2VuZC0+bm90aWZ5QWRkZWRUcmFjayhzZW5kZXIpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJf
cyB9OwotCi0gICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5kZXIp
LCBpbml0LCB0cmFja0lkLCB0cmFja0tpbmQpOwotfQotCi1SZWY8UlRDUnRwVHJhbnNjZWl2ZXI+
IFJUQ1BlZXJDb25uZWN0aW9uOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFJlZjxSVENSdHBTZW5k
ZXI+JiYgc2VuZGVyLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIGNvbnN0IFN0
cmluZyYgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQpCi17Ci0gICAgU3RyaW5nIHRy
YW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKLSAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRlciks
IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJh
Y2tJZCkpOwotCi0gICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVy
TWlkKTsKLSAgICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKGluaXQuZGlyZWN0aW9uKTsKLQot
ICAgIG1fdHJhbnNjZWl2ZXJTZXQtPmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwotICAg
IHJldHVybiB0cmFuc2NlaXZlcjsKKyAgICBhdXRvIHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJhY2spLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0dXJu
IG1fYmFja2VuZC0+YWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogfQogCiB2
b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZlcihSVENPZmZlck9wdGlvbnMm
JiBvcHRpb25zLCBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlzZSkKQEAgLTU4Niwy
OCArNTQ2LDExIEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmVucXVldWVSZXBsYWNlVHJhY2tU
YXNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVkCiAgICAgICAgIGJvb2wgaGFzVHJh
Y2sgPSBwcm90ZWN0ZWRTZW5kZXItPnRyYWNrKCk7CiAgICAgICAgIHByb3RlY3RlZFNlbmRlci0+
c2V0VHJhY2sod2l0aFRyYWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWhhc1Ry
YWNrKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9iYWNrZW5kLT5ub3RpZnlBZGRlZFRy
YWNrKHByb3RlY3RlZFNlbmRlci5nZXQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X2JhY2tlbmQtPmFkZFRyYWNrKHByb3RlY3RlZFNlbmRlci5wdHIoKSwgKnByb3RlY3RlZFNlbmRl
ci0+dHJhY2soKSwgeyB9KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CiB9
CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImIHNl
bmRlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgd2l0aFRyYWNrLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQotewotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwot
Ci0gICAgaWYgKCFzZW5kZXIudHJhY2soKSAmJiB3aXRoVHJhY2spIHsKLSAgICAgICAgZW5xdWV1
ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB3aXRoVHJhY2sucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShwcm9taXNlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2JhY2tlbmQt
PnJlcGxhY2VUcmFjayhzZW5kZXIsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9taXNl
KSk7Ci19Ci0KLVJUQ1J0cFBhcmFtZXRlcnMgUlRDUGVlckNvbm5lY3Rpb246OmdldFBhcmFtZXRl
cnMoUlRDUnRwU2VuZGVyJiBzZW5kZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+
Z2V0UGFyYW1ldGVycyhzZW5kZXIpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpkaXNw
YXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwg
ImRpc3BhdGNoaW5nICciLCBldmVudC50eXBlKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNDI3
YmYyMjNlYjhlNDE5YzM5YjJiNWVmMTQ1ZGZhNmQxMDhkMWRlNy4uODRlYjliYzlhNTVhNWE3MTc0
YzdlMGZiMWU3ZTk0ZTdkMzE1ZDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNjYsNyArNjYsNiBAQCBz
dHJ1Y3QgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IHsKIAogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb24g
ZmluYWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPgotICAgICwg
cHVibGljIFJUQ1J0cFNlbmRlcjo6QmFja2VuZAogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEKICAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKQEAgLTEwOSw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Nsb3Nl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvblN0YXRlID09IFJUQ1BlZXJDb25uZWN0aW9u
U3RhdGU6OkNsb3NlZDsgfQogICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0b3BwZWQ7IH0KIAorICAgIHZvaWQgYWRkSW50ZXJuYWxUcmFuc2NlaXZlcihSZWY8UlRDUnRw
VHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpIHsgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdU
Rk1vdmUodHJhbnNjZWl2ZXIpKTsgfQorCiAgICAgLy8gNS4xIFJUQ1BlZXJDb25uZWN0aW9uIGV4
dGVuc2lvbnMKICAgICBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSVENSdHBT
ZW5kZXI+PiYgZ2V0U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQtPnNl
bmRlcnMoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0
cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJT
ZXQtPnJlY2VpdmVycygpOyB9CkBAIC0xNDQsNyArMTQ1LDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIAotICAgIFJUQ1J0cFNlbmRlcjo6
QmFja2VuZCYgc2VuZGVyQmFja2VuZCgpIHsgcmV0dXJuICp0aGlzOyB9CiAgICAgdm9pZCBmaXJl
RXZlbnQoRXZlbnQmKTsKIAogICAgIHZvaWQgZGlzYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZygp
IHsgbV9iYWNrZW5kLT5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCk7IH0KQEAgLTE4Niwx
MSArMTg2LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQgdG8gYmUgdGhlIEJhY2tlbmQKLSAgICAvLyBSVENSdHBTZW5kZXI6OkJhY2tl
bmQKLSAgICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4mJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpIGZpbmFsOwotICAgIFJUQ1J0
cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImKSBjb25zdCBmaW5hbDsKLQog
ICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7CiAgICAgYm9vbCBkb0Nsb3NlKCk7CiAg
ICAgdm9pZCBkb1N0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggM2Q2NzMxOWM5MWJjNjNjNTc3YmI4MjBi
MGE4NzBlMjZkNzVlNDBhMC4uOGZiZTlhMjk1OTZmNmFkZDA1OTVkMjE3NWMwNjA3ZmUxYjU3ZDZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5jcHAKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIEJhY2tlbmQqIGJhY2tlbmQpCitSVENSdHBSZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIo
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNl
aXZlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShX
VEZNb3ZlKHRyYWNrKSkKLSAgICAsIG1fYmFja2VuZChiYWNrZW5kKQorICAgICwgbV9iYWNrZW5k
KFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCAxNGFiMDY5MzQ3MDk5ZDRjOGYy
NjFjODk2MjI5MGFiNzE3YTJiMmE5Li5kYjZiNzQ5OGI5ZTA4MzkxOWFiYjU3YWY3MWFjYjRmYjY0
ZGU1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAK
ICNpbmNsdWRlICJSVENSdHBQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQwLDMxICs0MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFJUQ1J0cFJlY2VpdmVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2VuZCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5CYWNrZW5kKCkgPSBkZWZhdWx0OwotICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRl
cnMgZ2V0UGFyYW1ldGVycygpIHsgcmV0dXJuIHsgfTsgfQotICAgIH07Ci0KLSAgICBzdGF0aWMg
UmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ss
IEJhY2tlbmQqIGJhY2tlbmQgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2
ZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRy
PFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kID0gbnVsbHB0cikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVyKFdURk1vdmUodHJhY2spLCBi
YWNrZW5kKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFJlY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9w
KCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgYSBVbmlxdWVSZWYgaGVyZS4KLSAg
ICB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmQ+JiYgYmFja2VuZCkgeyBt
X2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9Ci0KLSAgICBib29sIGlzRGlzcGF0Y2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEaXNwYXRjaGVkOyB9Ci0gICAgdm9pZCBzZXREaXNwYXRjaGVk
KGJvb2wgaXNEaXNwYXRjaGVkKSB7IG1faXNEaXNwYXRjaGVkID0gaXNEaXNwYXRjaGVkOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+
JiYgYmFja2VuZCkgeyBtX2JhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpOyB9CiAgICAgUlRDUnRw
UGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9iYWNrZW5kID8gbV9iYWNrZW5k
LT5nZXRQYXJhbWV0ZXJzKCkgOiBSVENSdHBQYXJhbWV0ZXJzKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgQmFja2Vu
ZCopOworICAgIFJUQ1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKIAotICAgIGJvb2wgbV9pc0Rpc3Bh
dGNoZWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kPiBtX2JhY2tlbmQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gbV9iYWNrZW5kOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTM3ZDY0NmNlMjljODk1YTdjOGY1YWRkMWVkMDNlYWU1MGU4N2JkOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQor
CisjaW5jbHVkZSAiUlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRD
UnRwUmVjZWl2ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgUlRDUnRwUGFyYW1l
dGVycyBnZXRQYXJhbWV0ZXJzKCkgeyByZXR1cm4geyB9OyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAppbmRleCAxOGRjOWJk
NjRkYTNiMWVhODljMmMwNmNmM2M5OWE5OWEwMmUwNzExLi42YTNkMWJjZDkwODg2ZTAzM2Q1MTI0
ZGM5ZDRlYjRiNmRmZGZiNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC0zNSwyMyArMzUsMjMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBTZW5kZXI6OmNyZWF0ZShS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgQmFja2VuZCYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNr
ZW5kKQogewotICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoU3Ry
aW5nKHRyYWNrLT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgYmFja2VuZCkpOwor
ICAgIGF1dG8gc2VuZGVyID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoU3RyaW5nKHRyYWNr
LT5raW5kKCkpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgV1RGTW92ZShiYWNrZW5kKSkpOwog
ICAgIHNlbmRlci0+c2V0VHJhY2soV1RGTW92ZSh0cmFjaykpOwogICAgIHJldHVybiBzZW5kZXI7
CiB9CiAKLVJlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyYmIHRy
YWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYgYmFja2Vu
ZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyYmIHRyYWNr
S2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJU
Q1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSVENSdHBTZW5kZXIoV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRz
KSwgYmFja2VuZCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihXVEZN
b3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQp
KSk7CiB9CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYgYmFja2VuZCkKK1JUQ1J0
cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4m
JiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYg
YmFja2VuZCkKICAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgpCiAgICAgLCBtX3RyYWNr
S2luZChXVEZNb3ZlKHRyYWNrS2luZCkpCiAgICAgLCBtX21lZGlhU3RyZWFtSWRzKFdURk1vdmUo
bWVkaWFTdHJlYW1JZHMpKQotICAgICwgbV9iYWNrZW5kKCZiYWNrZW5kKQorICAgICwgbV9iYWNr
ZW5kKFdURk1vdmUoYmFja2VuZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDg5NThkZjY3OTEzMmQ0ZjhlNmYy
NWQ4NGJkMGVjMTE3OTM2NzZmY2EuLjRlMWU0YjVlM2E3ZmE1ZjdkMTdjMGRmNzM0OTZmNmVhZDIw
ZWYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuaApAQCAtMzMsMjEgKzMzLDE1IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKICNp
bmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKKyNpbmNsdWRlICJSVENSdHBTZW5kZXJC
YWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRl
clJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgQmFja2VuZCB7Ci0gICAgcHVibGlj
OgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwot
ICAgICAgICB2aXJ0dWFsIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycyhSVENSdHBTZW5k
ZXImKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgfkJhY2tlbmQoKSA9IGRlZmF1bHQ7Ci0g
ICAgfTsKLQotICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIEJhY2tlbmQmKTsK
LSAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFN0cmluZyYmIHRyYWNrS2luZCwg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgQmFja2VuZCYpOworICAgIHN0YXRpYyBS
ZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFZlY3RvcjxT
dHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNr
ZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFN0cmluZyYmIHRy
YWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRy
PFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiB0cmFja0lkKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFja0lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNrS2luZDsgfQpAQCAtNjUsMTIgKzU5LDEyIEBAIHB1Ymxp
YzoKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKIAogcHJpdmF0ZToKLSAg
ICBSVENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlh
U3RyZWFtSWRzLCBCYWNrZW5kJik7CisgICAgUlRDUnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2lu
ZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0
cFNlbmRlckJhY2tlbmQ+JiYpOwogCiAgICAgU3RyaW5nIG1fdHJhY2tJZDsKICAgICBTdHJpbmcg
bV90cmFja0tpbmQ7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9tZWRpYVN0cmVhbUlkczsKLSAgICBC
YWNrZW5kKiBtX2JhY2tlbmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tl
bmQ+IG1fYmFja2VuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJCYWNrZW5k
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWQyNThhNGMzZTljZjQ5MTUzODI2NDg2ODE2NjE3MmZmYzQwYTRkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyQmFja2VuZC5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCX1JUQykKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAi
UlRDUnRwUGFyYW1ldGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlh
U3RyZWFtVHJhY2s7CitjbGFzcyBSVENSdHBTZW5kZXI7CisKK2NsYXNzIFJUQ1J0cFNlbmRlckJh
Y2tlbmQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2Vu
ZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKSA9IDA7CisgICAgdmlydHVhbCBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRD
UnRwU2VuZGVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgflJUQ1J0cFNlbmRlckJhY2tlbmQo
KSA9IGRlZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggNmE1NGZhYWFkMTkzMDc4NmNlN2MyOGZhOGQ2ZGMwZWMxOGYxZDY3Ni4uYjVlYmI3
ZDM1NmM4Mjk0NWVlODI0MTkxYzE1N2E0Yzk2ZWMxMGRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTMyLDcgKzMyLDEwIEBACiAjaW5jbHVkZSAi
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuaCIK
KyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlLmgiCkBAIC01Nywx
MSArNjAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5n
IGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlKQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVuZ3RoKCkpOwotfQotCiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50KExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZCYgcGVlckNvbm5lY3Rpb24sIExpYldlYlJUQ1Byb3ZpZGVyJiBjbGll
bnQpCiAgICAgOiBtX3BlZXJDb25uZWN0aW9uQmFja2VuZChwZWVyQ29ubmVjdGlvbikKICAgICAs
IG1fcGVlckNvbm5lY3Rpb25GYWN0b3J5KCpjbGllbnQuZmFjdG9yeSgpKQpAQCAtMzY2LDE2ICsz
NjQsNiBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVN0cmVhbSh3ZWJy
dGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJikKIHsKIH0KIAotY2xhc3MgUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2VpdmVyOjpCYWNrZW5kIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBSVENSdHBSZWNlaXZlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIpIDogbV9ydGNSZWNlaXZl
cihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkgeyB9Ci1wcml2YXRlOgotICAgIFJUQ1J0cFBhcmFtZXRl
cnMgZ2V0UGFyYW1ldGVycygpIGZpbmFsOwotCi0gICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IG1fcnRjUmVjZWl2ZXI7Ci19OwotCi0KIHZvaWQgTGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIsIGNvbnN0IHN0ZDo6dmVj
dG9yPHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlPj4mIHJ0
Y1N0cmVhbXMpCiB7CiAgICAgQVNTRVJUKHJ0Y1JlY2VpdmVyKTsKQEAgLTQwNSw3ICszOTMsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+
c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92
ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
ICAgICAKICAgICBhdXRvKiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIEFTU0VSVCh0
cmFjayk7CkBAIC02MjYsOTQgKzYxNCw2IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
c2V0UmVtb3RlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKGNvbnN0IHN0ZDo6c3RyaW5nCiAgICAg
fSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQYXJhbWV0
ZXJzIGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMoY29uc3Qgd2VicnRjOjpSdHBFbmNvZGluZ1BhcmFt
ZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCi17Ci0gICAgUlRDUnRwUGFyYW1ldGVyczo6RW5jb2RpbmdQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBpZiAocnRjUGFyYW1ldGVycy5zc3JjKQotICAg
ICAgICBwYXJhbWV0ZXJzLnNzcmMgPSAqcnRjUGFyYW1ldGVycy5zc3JjOwotICAgIGlmIChydGNQ
YXJhbWV0ZXJzLnJ0eCAmJiBydGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYykKLSAgICAgICAgcGFyYW1l
dGVycy5ydHguc3NyYyA9ICpydGNQYXJhbWV0ZXJzLnJ0eC0+c3NyYzsKLSAgICBpZiAocnRjUGFy
YW1ldGVycy5mZWMgJiYgcnRjUGFyYW1ldGVycy5mZWMtPnNzcmMpCi0gICAgICAgIHBhcmFtZXRl
cnMuZmVjLnNzcmMgPSAqcnRjUGFyYW1ldGVycy5mZWMtPnNzcmM7Ci0gICAgaWYgKHJ0Y1BhcmFt
ZXRlcnMuZHR4KSB7Ci0gICAgICAgIHN3aXRjaCAoKnJ0Y1BhcmFtZXRlcnMuZHR4KSB7Ci0gICAg
ICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkRJU0FCTEVEOgotICAgICAgICAgICAgcGFyYW1l
dGVycy5kdHggPSBSVENSdHBQYXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkRpc2FibGVkOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpEdHhTdGF0dXM6OkVOQUJMRUQ6Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLmR0eCA9IFJUQ1J0cFBhcmFtZXRlcnM6OkR0eFN0YXR1czo6
RW5hYmxlZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBwYXJhbWV0ZXJzLmFjdGl2ZSA9IHJ0Y1Bh
cmFtZXRlcnMuYWN0aXZlOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwcykK
LSAgICAgICAgcGFyYW1ldGVycy5tYXhCaXRyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2JpdHJh
dGVfYnBzOwotICAgIGlmIChydGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGUpCi0gICAgICAgIHBh
cmFtZXRlcnMubWF4RnJhbWVyYXRlID0gKnJ0Y1BhcmFtZXRlcnMubWF4X2ZyYW1lcmF0ZTsKLSAg
ICBwYXJhbWV0ZXJzLnJpZCA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5yaWQpOwotICAg
IGlmIChydGNQYXJhbWV0ZXJzLnNjYWxlX3Jlc29sdXRpb25fZG93bl9ieSkKLSAgICAgICAgcGFy
YW1ldGVycy5zY2FsZVJlc29sdXRpb25Eb3duQnkgPSAqcnRjUGFyYW1ldGVycy5zY2FsZV9yZXNv
bHV0aW9uX2Rvd25fYnk7Ci0KLSAgICByZXR1cm4gcGFyYW1ldGVyczsKLX0KLQotc3RhdGljIGlu
bGluZSBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzIGZpbGxIZWFk
ZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwSGVhZGVyRXh0ZW5zaW9uUGFy
YW1ldGVycyYgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzOjpIZWFkZXJF
eHRlbnNpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJzLnVyaSA9IGZy
b21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy51cmkpOwotICAgIHBhcmFtZXRlcnMuaWQgPSBydGNQ
YXJhbWV0ZXJzLmlkOwotCi0gICAgcmV0dXJuIHBhcmFtZXRlcnM7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgUlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQYXJhbWV0ZXJzIGZpbGxDb2RlY1BhcmFtZXRlcnMo
Y29uc3Qgd2VicnRjOjpSdHBDb2RlY1BhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMpCi17Ci0gICAg
UlRDUnRwUGFyYW1ldGVyczo6Q29kZWNQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0KLSAgICBwYXJh
bWV0ZXJzLnBheWxvYWRUeXBlID0gcnRjUGFyYW1ldGVycy5wYXlsb2FkX3R5cGU7Ci0gICAgcGFy
YW1ldGVycy5taW1lVHlwZSA9IGZyb21TdGRTdHJpbmcocnRjUGFyYW1ldGVycy5taW1lX3R5cGUo
KSk7Ci0gICAgaWYgKHJ0Y1BhcmFtZXRlcnMuY2xvY2tfcmF0ZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5jbG9ja1JhdGUgPSAqcnRjUGFyYW1ldGVycy5jbG9ja19yYXRlOwotICAgIGlmIChydGNQYXJh
bWV0ZXJzLm51bV9jaGFubmVscykKLSAgICAgICAgcGFyYW1ldGVycy5jaGFubmVscyA9ICpydGNQ
YXJhbWV0ZXJzLm51bV9jaGFubmVsczsKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi1z
dGF0aWMgUlRDUnRwUGFyYW1ldGVycyBmaWxsUnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0
cFBhcmFtZXRlcnMgcnRjUGFyYW1ldGVycykKLXsKLSAgICBSVENSdHBQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7Ci0KLSAgICBwYXJhbWV0ZXJzLnRyYW5zYWN0aW9uSWQgPSBmcm9tU3RkU3RyaW5nKHJ0
Y1BhcmFtZXRlcnMudHJhbnNhY3Rpb25faWQpOwotICAgIGZvciAoYXV0byYgcnRjRW5jb2Rpbmcg
OiBydGNQYXJhbWV0ZXJzLmVuY29kaW5ncykKLSAgICAgICAgcGFyYW1ldGVycy5lbmNvZGluZ3Mu
YXBwZW5kKGZpbGxFbmNvZGluZ1BhcmFtZXRlcnMocnRjRW5jb2RpbmcpKTsKLSAgICBmb3IgKGF1
dG8mIGV4dGVuc2lvbiA6IHJ0Y1BhcmFtZXRlcnMuaGVhZGVyX2V4dGVuc2lvbnMpCi0gICAgICAg
IHBhcmFtZXRlcnMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoZmlsbEhlYWRlckV4dGVuc2lvblBh
cmFtZXRlcnMoZXh0ZW5zaW9uKSk7Ci0gICAgZm9yIChhdXRvJiBjb2RlYyA6IHJ0Y1BhcmFtZXRl
cnMuY29kZWNzKQotICAgICAgICBwYXJhbWV0ZXJzLmNvZGVjcy5hcHBlbmQoZmlsbENvZGVjUGFy
YW1ldGVycyhjb2RlYykpOwotCi0gICAgc3dpdGNoIChydGNQYXJhbWV0ZXJzLmRlZ3JhZGF0aW9u
X3ByZWZlcmVuY2UpIHsKLSAgICAvLyBGSVhNRTogU3VwcG9ydCBEZWdyYWRhdGlvblByZWZlcmVu
Y2U6OkRJU0FCTEVELgotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkRJ
U0FCTEVEOgotICAgIGNhc2Ugd2VicnRjOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1BSU5UQUlO
X0ZSQU1FUkFURToKLSAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBS
VENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1haW50YWluRnJhbWVyYXRl
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNl
OjpNQUlOVEFJTl9SRVNPTFVUSU9OOgotICAgICAgICBwYXJhbWV0ZXJzLmRlZ3JhZGF0aW9uUHJl
ZmVyZW5jZSA9IFJUQ1J0cFBhcmFtZXRlcnM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TWFpbnRh
aW5SZXNvbHV0aW9uOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIHdlYnJ0Yzo6RGVncmFkYXRp
b25QcmVmZXJlbmNlOjpCQUxBTkNFRDoKLSAgICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblBy
ZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJzOjpEZWdyYWRhdGlvblByZWZlcmVuY2U6OkJhbGFu
Y2VkOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQot
Ci1SVENSdHBQYXJhbWV0ZXJzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycygp
Ci17Ci0gICAgcmV0dXJuIGZpbGxSdHBQYXJhbWV0ZXJzKG1fcnRjUmVjZWl2ZXItPkdldFBhcmFt
ZXRlcnMoKSk7Ci19Ci0KIFJUQ1J0cFBhcmFtZXRlcnMgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
Z2V0UlRDUnRwU2VuZGVyUGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRlcikKIHsKICAgICBh
dXRvIHJ0Y1NlbmRlciA9IG1fc2VuZGVycy5nZXQoJnNlbmRlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCA0NTgwYTQ0
NzZiYjQ1NTY1MTA5NTM3Mjc4NjE0Y2RkNTVlYjY1ZWM2Li5jN2MwNjQ0Yjc0N2M2NTdkNDRjYTMw
Y2Q4MDc1MmVjNThjN2EwZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJJ
Y2VDYW5kaWRhdGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
UnRwUmVjZWl2ZXJCYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5oIgogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZS5oIgpAQCAtMjU0LDcgKzI1Niw4IEBA
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBh
dXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rpb24u
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAgIGF1dG8g
dHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKCJ2aWRlbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlSZWYoKSk7
CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJU
Q1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoInZpZGVvIiwgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAgICB0cmFu
c2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9u
LmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjc2LDcgKzI3OSw4
IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAg
ICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzb3VyY2UuY29weVJlZigpKTsKIAotICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKCJhdWRpbyIsIHsgfSwgbV9wZWVyQ29ubmVjdGlvbiksIHJlY2VpdmVyLmNvcHlSZWYo
KSk7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoImF1ZGlvIiwg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpKTsKICAgICB0
cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0
aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMzI3LDEwICsz
MzEsNTkgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1cm4gbV9lbmRwb2ludC0+
cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotYm9vbCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6Om5vdGlmeUFkZGVkVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIpCitFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayhSVENSdHBTZW5kZXIqIHNlbmRlciwgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBtZWRpYVN0cmVhbUlkcykKIHsKLSAgICBBU1NFUlQoc2VuZGVyLnRy
YWNrKCkpOwotICAgIHJldHVybiBtX2VuZHBvaW50LT5hZGRUcmFjayhzZW5kZXIsICpzZW5kZXIu
dHJhY2soKSwgc2VuZGVyLm1lZGlhU3RyZWFtSWRzKCkpOworICAgIGlmICghc2VuZGVyKSB7Cisg
ICAgICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0
TWlkKCk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwor
ICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKwor
ICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBuZXdTZW5kZXIg
PSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4geyBt
ZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICAgICAgYXV0byBy
ZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCB0cmFja0tpbmQsIHRyYWNr
SWQpOworICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0
ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKworICAgICAgICAvLyBU
aGlzIHRyYW5zY2VpdmVyIGlzIG5vdCB5ZXQgYXNzb2NpYXRlZCB3aXRoIGFuIG0tbGluZSAobnVs
bCBtaWQpLCBidXQgd2UgbmVlZCBhCisgICAgICAgIC8vIHByb3Zpc2lvbmFsIG1pZCBpZiB0aGUg
dHJhbnNjZWl2ZXIgaXMgdXNlZCB0byBjcmVhdGUgYW4gb2ZmZXIuCisgICAgICAgIHRyYW5zY2Vp
dmVyLT5zZXRQcm92aXNpb25hbE1pZCh0cmFuc2NlaXZlck1pZCk7CisKKyAgICAgICAgc2VuZGVy
ID0gJnRyYW5zY2VpdmVyLT5zZW5kZXIoKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJ
bnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKKyAgICB9CisKKyAgICBp
ZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXIsIHRyYWNrLCBtZWRpYVN0cmVhbUlkcykp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRkIHRy
YWNrIl9zIH07CisKKyAgICByZXR1cm4gbWFrZVJlZigqc2VuZGVyKTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXZlcihjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0JiBpbml0KQoreworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKHRyYWNrS2luZCks
IFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIHJldHVybiBj
b21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOworfQorCitFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5z
Y2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBSVENSdHBUcmFuc2Nl
aXZlckluaXQmIGluaXQpCit7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0
byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSh0cmFjay5jb3B5UmVmKCksIFZlY3RvcjxT
dHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGlmICghbV9lbmRwb2ludC0+
YWRkVHJhY2soc2VuZGVyLmdldCgpLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlVuYWJsZSB0byBhZGQg
dHJhY2siX3MgfTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
c2VuZGVyKSwgaW5pdCwgdHJhY2stPmlkKCksIHRyYWNrLT5raW5kKCkpOworfQorCitSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y29tcGxldGVB
ZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmIHNlbmRlciwgY29uc3QgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0JiBpbml0LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmluZyYg
dHJhY2tLaW5kKQoreworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpnZXROZXh0TWlkKCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBjcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZlck1p
ZCwgdHJhY2tLaW5kLCB0cmFja0lkKSk7CisKKyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9u
YWxNaWQodHJhbnNjZWl2ZXJNaWQpOworICAgIHRyYW5zY2VpdmVyLT5zZXREaXJlY3Rpb24oaW5p
dC5kaXJlY3Rpb24pOworCisgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2Vp
dmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CisgICAgcmV0dXJuIHRyYW5zY2VpdmVyOwogfQog
CiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bm90aWZ5UmVtb3ZlZFRyYWNr
KFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCA0MzdiN2U2MGMwMDRmZjQ3NjU5OGQyOTM2YmE2
N2VlYmQwNWM2ZjBjLi5kMTBiYjFhNjU0NTA5MzMzMGJlOWI2ZjcyNGViOWFmNjE4ZGM2MmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKQEAgLTQ1LDcg
KzQ2LDcgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOwogY2xhc3MgUmVhbHRp
bWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJsaWMg
UGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKK2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQcm92aWRlciYpOwpAQCAtNTQsNiArNTUs
OSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdWRpb1NvdXJjZXMoKSBjb25zdCB7IHJldHVybiBt
X2F1ZGlvU291cmNlcy5zaXplKCk7IH0KICAgICBib29sIGhhc1ZpZGVvU291cmNlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlkZW9Tb3VyY2VzLnNpemUoKTsgfQogCisgICAgdm9pZCByZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKKyAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoUlRD
UnRwU2VuZGVyJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkb0NyZWF0ZU9mZmVyKFJU
Q09mZmVyT3B0aW9ucyYmKSBmaW5hbDsKICAgICB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dl
ck9wdGlvbnMmJikgZmluYWw7CkBAIC03NCwyMiArNzgsMjMgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBwZW5kaW5nUmVtb3Rl
RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0
cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgZmluYWw7Ci0gICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0
cFNlbmRlciYpIGNvbnN0IGZpbmFsOwotCiAgICAgdm9pZCBlbXVsYXRlUGxhdGZvcm1FdmVudChj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KICAgICB2b2lkIGFwcGx5Um90YXRpb25Gb3JPdXRnb2lu
Z1ZpZGVvU291cmNlcygpIGZpbmFsOwogCi0gICAgZnJpZW5kIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ7CisgICAgZnJpZW5kIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CisgICAgZnJpZW5k
IGNsYXNzIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ7CiAgICAgUlRDUGVlckNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX3BlZXJDb25uZWN0aW9uOyB9CiAgICAgdm9pZCBhZGRB
dWRpb1NvdXJjZShSZWY8UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlPiYmKTsKICAgICB2b2lk
IGFkZFZpZGVvU291cmNlKFJlZjxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U+JiYpOwogCiAg
ICAgdm9pZCBnZXRTdGF0c1N1Y2NlZWRlZChjb25zdCBEZWZlcnJlZFByb21pc2UmLCBSZWY8UlRD
U3RhdHNSZXBvcnQ+JiYpOwogCi0gICAgYm9vbCBub3RpZnlBZGRlZFRyYWNrKFJUQ1J0cFNlbmRl
ciYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBhZGRUcmFjayhS
VENSdHBTZW5kZXIqLCBNZWRpYVN0cmVhbVRyYWNrJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBm
aW5hbDsKICAgICB2b2lkIG5vdGlmeVJlbW92ZWRUcmFjayhSVENSdHBTZW5kZXImKSBmaW5hbDsK
IAorICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ1J0cFRyYW5zY2VpdmVySW5pdCYpIGZpbmFsOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFRyYW5zY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQmKSBmaW5hbDsK
KwogICAgIHN0cnVjdCBWaWRlb1JlY2VpdmVyIHsKICAgICAgICAgUmVmPFJUQ1J0cFJlY2VpdmVy
PiByZWNlaXZlcjsKICAgICAgICAgUmVmPFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZT4gc291
cmNlOwpAQCAtMTA0LDYgKzEwOSw4IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIGJvb2wgaXNM
b2NhbERlc2NyaXB0aW9uU2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvY2FsRGVzY3Jp
cHRpb25TZXQ7IH0KIAorICAgIFJlZjxSVENSdHBUcmFuc2NlaXZlcj4gY29tcGxldGVBZGRUcmFu
c2NlaXZlcihSZWY8UlRDUnRwU2VuZGVyPiYmLCBjb25zdCBSVENSdHBUcmFuc2NlaXZlckluaXQm
LCBjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kKTsKKwogICAg
IFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBtX2VuZHBvaW50OwogICAgIGJvb2wgbV9pc0xv
Y2FsRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1JlbW90ZURlc2NyaXB0
aW9uU2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkZjRlN2NjYWZlNjMxMzNiODM1YjAxZGIyZDBm
N2JhZWFhMDk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5oIgorCisjaW5jbHVkZSAiTGliV2ViUlRDVXRpbHMuaCIKKworI2lmIEVOQUJMRShX
RUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JUQ1J0
cFBhcmFtZXRlcnMgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpnZXRQYXJhbWV0ZXJzKCkK
K3sKKyAgICByZXR1cm4gZmlsbFJ0cFBhcmFtZXRlcnMobV9ydGNSZWNlaXZlci0+R2V0UGFyYW1l
dGVycygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhY2UyZTQyZGE2MzFlZTk3MTJkOGFk
OGVjYjY5ZDg0YjZjZWEyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJX
RUJSVEMpCisKKyNpbmNsdWRlICJMaWJXZWJSVENNYWNyb3MuaCIKKyNpbmNsdWRlICJSVENSdHBS
ZWNlaXZlckJhY2tlbmQuaCIKKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIKKworI2luY2x1ZGUg
PHdlYnJ0Yy9hcGkvcnRwcmVjZWl2ZXJpbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDx3ZWJydGMvcnRj
X2Jhc2Uvc2NvcGVkX3JlZl9wdHIuaD4KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQg
ZmluYWwgOiBwdWJsaWMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+JiYgcnRjUmVjZWl2ZXIpCisgICAgICAgIDogbV9ydGNS
ZWNlaXZlcihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpIGZpbmFsOworCisgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2U+IG1fcnRjUmVjZWl2ZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JU
QykgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY4NjNhOTQyYzhlZDMzNjk5YjA4MTI0NmNkNjdk
Njg4NmNmZWMxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVk
ZSAiTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRD
VXRpbHMuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJUQ1J0
cFNlbmRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZDo6cmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKK3sKKyAgICBpZiAoIW1fcGVlckNvbm5lY3Rpb25CYWNrZW5kKSB7CisgICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gV2ViUlRDIGJhY2tl
bmQiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXNlbmRlci50cmFj
aygpICYmIHRyYWNrKSB7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLT5jb25uZWN0
aW9uKCkuZW5xdWV1ZVJlcGxhY2VUcmFja1Rhc2soc2VuZGVyLCB0cmFjay5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLT5yZXBsYWNlVHJhY2soc2VuZGVyLCBXVEZNb3ZlKHRyYWNr
KSwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK1JUQ1J0cFBhcmFtZXRlcnMgTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZDo6Z2V0UGFyYW1ldGVycyhSVENSdHBTZW5kZXImIHNlbmRlcikgY29uc3QK
K3sKKyAgICBpZiAoIW1fcnRjU2VuZGVyKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
bm90IG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgYmFja2VuZCBhbmQgc2hvdWxkIGRpcmVjdGx5IGhh
dmUgbV9ydGNTZW5kZXIgaGVyZS4KKyAgICAgICAgaWYgKCFtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC0+Z2V0UGFyYW1ldGVycyhzZW5kZXIpOworICAgIH0KKyAgICByZXR1cm4gZmls
bFJ0cFBhcmFtZXRlcnMobV9ydGNTZW5kZXItPkdldFBhcmFtZXRlcnMoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNmZDMzMWE4OWFiZWQyZTEzNWY1NDA5MTBkMWE5N2ZkNjBhZmQ1ODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiTGliV2ViUlRDTWFjcm9zLmgiCisjaW5j
bHVkZSAiUlRDUnRwU2VuZGVyQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
KyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCisKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3J0cHNlbmRl
cmludGVyZmFjZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9ydGNfYmFzZS9zY29wZWRfcmVmX3B0ci5o
PgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKKworY2xhc3MgTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENSdHBTZW5kZXJCYWNrZW5kIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UnRwU2VuZGVySW50ZXJmYWNlPiYmIHJ0Y1NlbmRlcikKKyAgICAgICAgOiBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZChtYWtlV2Vha1B0cigmYmFja2VuZCkpCisgICAgICAgICwgbV9ydGNTZW5kZXIo
V1RGTW92ZShydGNTZW5kZXIpKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBz
ZXRSVENTZW5kZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNl
PiYmIHJ0Y1NlbmRlcikgeyBtX3J0Y1NlbmRlciA9IFdURk1vdmUocnRjU2VuZGVyKTsgfQorICAg
IHZvaWQgcmVwbGFjZVRyYWNrKFJUQ1J0cFNlbmRlciYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgZmluYWw7CisgICAgUlRDUnRwUGFyYW1l
dGVycyBnZXRQYXJhbWV0ZXJzKFJUQ1J0cFNlbmRlciYpIGNvbnN0IGZpbmFsOworCisgICAgV2Vh
a1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kOworICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZT4g
bV9ydGNTZW5kZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1V0aWxzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ZTg1NDExNTg5NTJhODY5MjIzZGRjNzUyNTMyNjE0NzE4MTk3OGUzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
VXRpbHMuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENVdGlscy5oIgorCisjaWYgVVNFKExJQldFQlJUQykK
KworI2luY2x1ZGUgIkxpYldlYlJUQ01hY3Jvcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFBhcmFtZXRl
cnMuaCIKKyNpbmNsdWRlIDx3ZWJydGMvYXBpL3J0cHBhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5s
aW5lIFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBmaWxsRW5jb2RpbmdQYXJh
bWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwRW5jb2RpbmdQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJz
KQoreworICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkVuY29kaW5nUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OworCisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuc3NyYykKKyAgICAgICAgcGFyYW1ldGVycy5zc3Jj
ID0gKnJ0Y1BhcmFtZXRlcnMuc3NyYzsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5ydHggJiYgcnRj
UGFyYW1ldGVycy5ydHgtPnNzcmMpCisgICAgICAgIHBhcmFtZXRlcnMucnR4LnNzcmMgPSAqcnRj
UGFyYW1ldGVycy5ydHgtPnNzcmM7CisgICAgaWYgKHJ0Y1BhcmFtZXRlcnMuZmVjICYmIHJ0Y1Bh
cmFtZXRlcnMuZmVjLT5zc3JjKQorICAgICAgICBwYXJhbWV0ZXJzLmZlYy5zc3JjID0gKnJ0Y1Bh
cmFtZXRlcnMuZmVjLT5zc3JjOworICAgIGlmIChydGNQYXJhbWV0ZXJzLmR0eCkgeworICAgICAg
ICBzd2l0Y2ggKCpydGNQYXJhbWV0ZXJzLmR0eCkgeworICAgICAgICBjYXNlIHdlYnJ0Yzo6RHR4
U3RhdHVzOjpESVNBQkxFRDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuZHR4ID0gUlRDUnRwUGFy
YW1ldGVyczo6RHR4U3RhdHVzOjpEaXNhYmxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIHdlYnJ0Yzo6RHR4U3RhdHVzOjpFTkFCTEVEOgorICAgICAgICAgICAgcGFyYW1ldGVy
cy5kdHggPSBSVENSdHBQYXJhbWV0ZXJzOjpEdHhTdGF0dXM6OkVuYWJsZWQ7CisgICAgICAgIH0K
KyAgICB9CisgICAgcGFyYW1ldGVycy5hY3RpdmUgPSBydGNQYXJhbWV0ZXJzLmFjdGl2ZTsKKyAg
ICBpZiAocnRjUGFyYW1ldGVycy5tYXhfYml0cmF0ZV9icHMpCisgICAgICAgIHBhcmFtZXRlcnMu
bWF4Qml0cmF0ZSA9ICpydGNQYXJhbWV0ZXJzLm1heF9iaXRyYXRlX2JwczsKKyAgICBpZiAocnRj
UGFyYW1ldGVycy5tYXhfZnJhbWVyYXRlKQorICAgICAgICBwYXJhbWV0ZXJzLm1heEZyYW1lcmF0
ZSA9ICpydGNQYXJhbWV0ZXJzLm1heF9mcmFtZXJhdGU7CisgICAgcGFyYW1ldGVycy5yaWQgPSBm
cm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMucmlkKTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5z
Y2FsZV9yZXNvbHV0aW9uX2Rvd25fYnkpCisgICAgICAgIHBhcmFtZXRlcnMuc2NhbGVSZXNvbHV0
aW9uRG93bkJ5ID0gKnJ0Y1BhcmFtZXRlcnMuc2NhbGVfcmVzb2x1dGlvbl9kb3duX2J5OworCisg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgUlRDUnRwUGFyYW1ldGVy
czo6SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBmaWxsSGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVy
cyhjb25zdCB3ZWJydGM6OlJ0cEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRl
cnMpCit7CisgICAgUlRDUnRwUGFyYW1ldGVyczo6SGVhZGVyRXh0ZW5zaW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy51cmkgPSBmcm9tU3RkU3RyaW5nKHJ0Y1BhcmFt
ZXRlcnMudXJpKTsKKyAgICBwYXJhbWV0ZXJzLmlkID0gcnRjUGFyYW1ldGVycy5pZDsKKworICAg
IHJldHVybiBwYXJhbWV0ZXJzOworfQorCitzdGF0aWMgaW5saW5lIFJUQ1J0cFBhcmFtZXRlcnM6
OkNvZGVjUGFyYW1ldGVycyBmaWxsQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwQ29k
ZWNQYXJhbWV0ZXJzJiBydGNQYXJhbWV0ZXJzKQoreworICAgIFJUQ1J0cFBhcmFtZXRlcnM6OkNv
ZGVjUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy5wYXlsb2FkVHlwZSA9
IHJ0Y1BhcmFtZXRlcnMucGF5bG9hZF90eXBlOworICAgIHBhcmFtZXRlcnMubWltZVR5cGUgPSBm
cm9tU3RkU3RyaW5nKHJ0Y1BhcmFtZXRlcnMubWltZV90eXBlKCkpOworICAgIGlmIChydGNQYXJh
bWV0ZXJzLmNsb2NrX3JhdGUpCisgICAgICAgIHBhcmFtZXRlcnMuY2xvY2tSYXRlID0gKnJ0Y1Bh
cmFtZXRlcnMuY2xvY2tfcmF0ZTsKKyAgICBpZiAocnRjUGFyYW1ldGVycy5udW1fY2hhbm5lbHMp
CisgICAgICAgIHBhcmFtZXRlcnMuY2hhbm5lbHMgPSAqcnRjUGFyYW1ldGVycy5udW1fY2hhbm5l
bHM7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworUlRDUnRwUGFyYW1ldGVycyBmaWxs
UnRwUGFyYW1ldGVycyhjb25zdCB3ZWJydGM6OlJ0cFBhcmFtZXRlcnMmIHJ0Y1BhcmFtZXRlcnMp
Cit7CisgICAgUlRDUnRwUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy50
cmFuc2FjdGlvbklkID0gZnJvbVN0ZFN0cmluZyhydGNQYXJhbWV0ZXJzLnRyYW5zYWN0aW9uX2lk
KTsKKyAgICBmb3IgKGF1dG8mIHJ0Y0VuY29kaW5nIDogcnRjUGFyYW1ldGVycy5lbmNvZGluZ3Mp
CisgICAgICAgIHBhcmFtZXRlcnMuZW5jb2RpbmdzLmFwcGVuZChmaWxsRW5jb2RpbmdQYXJhbWV0
ZXJzKHJ0Y0VuY29kaW5nKSk7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBydGNQYXJhbWV0
ZXJzLmhlYWRlcl9leHRlbnNpb25zKQorICAgICAgICBwYXJhbWV0ZXJzLmhlYWRlckV4dGVuc2lv
bnMuYXBwZW5kKGZpbGxIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzKGV4dGVuc2lvbikpOworICAg
IGZvciAoYXV0byYgY29kZWMgOiBydGNQYXJhbWV0ZXJzLmNvZGVjcykKKyAgICAgICAgcGFyYW1l
dGVycy5jb2RlY3MuYXBwZW5kKGZpbGxDb2RlY1BhcmFtZXRlcnMoY29kZWMpKTsKKworICAgIHN3
aXRjaCAocnRjUGFyYW1ldGVycy5kZWdyYWRhdGlvbl9wcmVmZXJlbmNlKSB7CisgICAgLy8gRklY
TUU6IFN1cHBvcnQgRGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRC4KKyAgICBjYXNlIHdl
YnJ0Yzo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpESVNBQkxFRDoKKyAgICBjYXNlIHdlYnJ0Yzo6
RGVncmFkYXRpb25QcmVmZXJlbmNlOjpNQUlOVEFJTl9GUkFNRVJBVEU6CisgICAgICAgIHBhcmFt
ZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVyczo6RGVncmFkYXRp
b25QcmVmZXJlbmNlOjpNYWludGFpbkZyYW1lcmF0ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6TUFJTlRBSU5fUkVTT0xVVElPTjoKKyAg
ICAgICAgcGFyYW1ldGVycy5kZWdyYWRhdGlvblByZWZlcmVuY2UgPSBSVENSdHBQYXJhbWV0ZXJz
OjpEZWdyYWRhdGlvblByZWZlcmVuY2U6Ok1haW50YWluUmVzb2x1dGlvbjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSB3ZWJydGM6OkRlZ3JhZGF0aW9uUHJlZmVyZW5jZTo6QkFMQU5DRUQ6Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVncmFkYXRpb25QcmVmZXJlbmNlID0gUlRDUnRwUGFyYW1ldGVy
czo6RGVncmFkYXRpb25QcmVmZXJlbmNlOjpCYWxhbmNlZDsKKyAgICAgICAgYnJlYWs7CisgICAg
fTsKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjZjM2NmMzVlOTVkYzM4YTFkNzhhYThjYzYyNmNiNGM5MmVlMDEyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDVXRpbHMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2Ugd2VicnRjIHsKK3N0cnVjdCBSdHBQYXJhbWV0ZXJzOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBSVENSdHBQYXJhbWV0ZXJzOworCitSVENSdHBQ
YXJhbWV0ZXJzIGZpbGxSdHBQYXJhbWV0ZXJzKGNvbnN0IHdlYnJ0Yzo6UnRwUGFyYW1ldGVycyYp
OworCitpbmxpbmUgU3RyaW5nIGZyb21TdGRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVl
KQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUubGVu
Z3RoKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDVmYzc2OTAzNDQzN2IyN2Q3YmQ1NGVlNjMwNjE1Y2ZkODAxZDNjM2QuLjkw
ODMwNWUwYjU3ZmI5ODZiYzk4MWQxZTBmZjNjYTcyYmE2YTdmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDEsNiArMTEw
MSw5IEBACiAJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODE1QzFE
MTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTgyMDU0NzFFNTNFOThDMDBENjIy
MDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTg0RjUx
NjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYw
IC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0MTg2QkQzRTIxM0VFMzQwMDAwMTgyNkYgLyogTGliV2ViUlRD
VXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMUEwNDkyMTNFRERGRDAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLzsgfTsKKwkJ
NDE4NkJEM0YyMTNFRTM0MzAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEIy
MTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwICovOyB9Owor
CQk0MTg2QkQ0MDIxM0VFMzQ1MDAwMTgyNkYgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDFB
MDRBMjEzRURERkUwMDYzRkI2QiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICov
OyB9OwogCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZE
QTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxOEEwNkQwMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVu
dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxOEEwNkNFMTMzQzA0RDUwMENEMzc5QyAvKiBFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsK
IAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAzMEZGOTU3QUUw
MDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi87IH07CkBAIC03Mjc2LDYgKzcyNzksOCBA
QAogCQk0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODIwNTQ4MUU1M0VBQUQwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0NvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg0RjUxNTFFQUYwNTk4MDBGMThC
RjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPcmllbnRhdGlvbk5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxODZCRDNCMjEzRURFMzgwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHBhdGggPSBs
aWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODZCRDNEMjEzRURFMzkwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtU3VibWlzc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4NUI5MjExQjZGREE2MDAzMzgzQkIg
LyogRm9ybVN1Ym1pc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9ybVN1Ym1pc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MThB
MDZDRTEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzM0NSw2ICs3MzUwLDEyIEBACiAJCTQxRDEyOUNBMUYzRDBFRTMwMEQxNUU0
NyAvKiBDYWNoZVN0b3JhZ2VSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVTdG9yYWdlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RDEyOUNDMUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDQxRjNEMEY2NjAwRDE1RTQ3IC8qIENh
Y2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDFB
MDQ2MjEzRURERUIwMDYzRkI2QiAvKiBSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNlbmRlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMUEwNDgyMTNFRERFQjAwNjNGQjZCIC8qIFJUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBSZWNl
aXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMUEwNDkyMTNF
RERGRDAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExp
YldlYlJUQ1V0aWxzLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENVdGlscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDFBMDRBMjEzRURERkUwMDYzRkI2QiAvKiBM
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQxQTA0
QjIxM0VEREZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgcGF0aCA9IGxpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFEMUEwNEMyMTNFRERGRjAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1V0aWxzLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRD
VXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMjhEMEIyMTM5RTAxRDAw
RjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcDsgcGF0aCA9IGxp
YndlYnJ0Yy9MaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRDI4RDBDMjEzOUUwMUUwMEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxl
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTdGF0c0Nv
bGxlY3Rvci5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDUxQkIyMUU0RTJFODEwMDEzMUE1QiAvKiBM
aWJXZWJSVENBdWRpb0Zvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
aWJXZWJSVENBdWRpb0Zvcm1hdC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvRm9y
bWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE0MSw5ICsxNTE1MiwxMSBA
QAogCQkJCTVFMkM0MzU2MUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBSZWNlaXZlci5jcHAgKi8s
CiAJCQkJNUUyQzQzNTcxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmggKi8sCiAJ
CQkJNUUyQzQzNTgxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmlkbCAqLywKKwkJ
CQk0MUQxQTA0ODIxM0VEREVCMDA2M0ZCNkIgLyogUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmggKi8s
CiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5jcHAgKi8sCiAJ
CQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5oICovLAogCQkJCTVF
MkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaWRsICovLAorCQkJCTQxRDFB
MDQ2MjEzRURERUIwMDYzRkI2QiAvKiBSVENSdHBTZW5kZXJCYWNrZW5kLmggKi8sCiAJCQkJNUUy
QzQzNUQxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oICovLAog
CQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5jcHAgKi8s
CiAJCQkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8s
CkBAIC0xNjg1Niw4ICsxNjg2OSwxNCBAQAogCQkJCTQxNUEzQjczMjEzOEUyNjQwMDFCNEJBQSAv
KiBMaWJXZWJSVENPYnNlcnZlcnMuaCAqLywKIAkJCQk0MTc2MTJBRDFFM0E5OTNCMDBDM0Q4MUQg
LyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCAqLywKIAkJCQk0MTc2MTJBRTFF
M0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggKi8sCisJ
CQkJNDFEMUEwNEEyMTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAgKi8sCisJCQkJNDE4NkJEM0IyMTNFREUzODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5oICovLAorCQkJCTQxRDFBMDRCMjEzRURERkUwMDYzRkI2QiAvKiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAqLywKKwkJCQk0MTg2QkQzRDIxM0VERTM5MDAwMTgy
NkYgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5oICovLAogCQkJCTQxRDI4RDBCMjEzOUUw
MUQwMEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgKi8sCiAJCQkJNDFEMjhE
MEMyMTM5RTAxRTAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmggKi8sCisJCQkJ
NDFEMUEwNDkyMTNFRERGRDAwNjNGQjZCIC8qIExpYldlYlJUQ1V0aWxzLmNwcCAqLywKKwkJCQk0
MUQxQTA0QzIxM0VEREZGMDA2M0ZCNkIgLyogTGliV2ViUlRDVXRpbHMuaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gbGlid2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNDY0
LDcgKzMxNDgzLDEwIEBACiAJCQkJNUNERDgzNjQxRTQzMjVBMDAwNjIxRTkyIC8qIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTc2MTJBRjFFM0E5
OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MTc2MTJCMTFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODZCRDQwMjEzRUUzNDUwMDAxODI2RiAv
KiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4
NkJEM0YyMTNFRTM0MzAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFEMjhEMEQyMTM5RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0
YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODZCRDNFMjEzRUUzNDAwMDAx
ODI2RiAvKiBMaWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0
RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDQ1Nzc1RUEyMDQ3MzAzQzAwOERDRTVEIC8qIExvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFu
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0
aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>